diff -durpN glibc-2.3.2/abilist/ld.abilist glibc-2.3.3/abilist/ld.abilist --- glibc-2.3.2/abilist/ld.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libanl.abilist glibc-2.3.3/abilist/libanl.abilist --- glibc-2.3.2/abilist/libanl.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libBrokenLocale.abilist glibc-2.3.3/abilist/libBrokenLocale.abilist --- glibc-2.3.2/abilist/libBrokenLocale.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libc.abilist glibc-2.3.3/abilist/libc.abilist --- glibc-2.3.2/abilist/libc.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libcrypt.abilist glibc-2.3.3/abilist/libcrypt.abilist --- glibc-2.3.2/abilist/libcrypt.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libdl.abilist glibc-2.3.3/abilist/libdl.abilist --- glibc-2.3.2/abilist/libdl.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libm.abilist glibc-2.3.3/abilist/libm.abilist --- glibc-2.3.2/abilist/libm.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libnsl.abilist glibc-2.3.3/abilist/libnsl.abilist --- glibc-2.3.2/abilist/libnsl.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libpthread.abilist glibc-2.3.3/abilist/libpthread.abilist --- glibc-2.3.2/abilist/libpthread.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libresolv.abilist glibc-2.3.3/abilist/libresolv.abilist --- glibc-2.3.2/abilist/libresolv.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/librt.abilist glibc-2.3.3/abilist/librt.abilist --- glibc-2.3.2/abilist/librt.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libthread_db.abilist glibc-2.3.3/abilist/libthread_db.abilist --- glibc-2.3.2/abilist/libthread_db.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/abilist/libutil.abilist glibc-2.3.3/abilist/libutil.abilist --- glibc-2.3.2/abilist/libutil.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/argp/argp-fmtstream.c glibc-2.3.3/argp/argp-fmtstream.c --- glibc-2.3.2/argp/argp-fmtstream.c 2003-01-07 22:52:18.000000000 -0500 +++ glibc-2.3.3/argp/argp-fmtstream.c 2003-09-25 01:34:28.000000000 -0400 @@ -385,10 +385,11 @@ __argp_fmtstream_ensure (struct argp_fmt if ((size_t) (fs->end - fs->buf) < amount) /* Gotta grow the buffer. */ { - size_t new_size = fs->end - fs->buf + amount; - char *new_buf = realloc (fs->buf, new_size); + size_t old_size = fs->end - fs->buf; + size_t new_size = old_size + amount; + char *new_buf; - if (! new_buf) + if (new_size < old_size || ! (new_buf = realloc (fs->buf, new_size))) { __set_errno (ENOMEM); return 0; diff -durpN glibc-2.3.2/argp/argp-fmtstream.h glibc-2.3.3/argp/argp-fmtstream.h --- glibc-2.3.2/argp/argp-fmtstream.h 2002-03-11 03:31:55.000000000 -0500 +++ glibc-2.3.3/argp/argp-fmtstream.h 2003-10-02 18:52:50.000000000 -0400 @@ -34,6 +34,19 @@ #include #include +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ +# define __attribute__(Spec) /* empty */ +# endif +/* The __-protected variants of `format' and `printf' attributes + are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || __STRICT_ANSI__ +# define __format__ format +# define __printf__ printf +# endif +#endif + #if (_LIBC - 0 && !defined (USE_IN_LIBIO)) \ || (defined (__GNU_LIBRARY__) && defined (HAVE_LINEWRAP_H)) /* line_wrap_stream is available, so use that. */ diff -durpN glibc-2.3.2/argp/argp.h glibc-2.3.3/argp/argp.h --- glibc-2.3.2/argp/argp.h 2003-02-28 20:09:18.000000000 -0500 +++ glibc-2.3.3/argp/argp.h 2003-11-29 02:19:31.000000000 -0500 @@ -32,6 +32,35 @@ # define __const const #endif +#ifndef __THROW +# define __THROW +#endif + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ +# define __attribute__(Spec) /* empty */ +# endif +/* The __-protected variants of `format' and `printf' attributes + are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || __STRICT_ANSI__ +# define __format__ format +# define __printf__ printf +# endif +#endif + +/* GCC 2.95 and later have "__restrict"; C99 compilers have + "restrict", and "configure" may have defined "restrict". */ +#ifndef __restrict +# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)) +# if defined restrict || 199901L <= __STDC_VERSION__ +# define __restrict restrict +# else +# define __restrict +# endif +# endif +#endif + #ifndef __error_t_defined typedef int error_t; # define __error_t_defined @@ -376,11 +405,11 @@ struct argp_state 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 +473,10 @@ extern error_t argp_err_exit_status; 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 +490,23 @@ extern void __argp_help (__const struct 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 +519,11 @@ extern void __argp_error (__const struct 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. */ diff -durpN glibc-2.3.2/argp/argp-help.c glibc-2.3.3/argp/argp-help.c --- glibc-2.3.2/argp/argp-help.c 2002-04-08 04:19:17.000000000 -0400 +++ glibc-2.3.3/argp/argp-help.c 2003-11-29 02:19:16.000000000 -0500 @@ -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 . @@ -26,20 +26,16 @@ #include #endif -#ifndef alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# define HAVE_ALLOCA 1 +/* AIX requires this to be the first thing in the file. */ +#ifndef __GNUC__ +# if HAVE_ALLOCA_H || defined _LIBC +# include # else -# if defined HAVE_ALLOCA_H || defined _LIBC -# include +# ifdef _AIX +#pragma alloca # else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca +# ifndef alloca /* predefined by HP cc +Olibcalls */ char *alloca (); -# endif # endif # endif # endif @@ -50,7 +46,6 @@ char *alloca (); #include #include #include -#include #include #ifdef USE_IN_LIBIO # include @@ -70,9 +65,25 @@ char *alloca (); # endif #endif +#ifndef _LIBC +# if HAVE_STRERROR_R +# if !HAVE_DECL_STRERROR_R +char *strerror_r (int errnum, char *buf, size_t buflen); +# endif +# else +# if !HAVE_DECL_STRERROR +char *strerror (int errnum); +# endif +# endif +#endif + #include "argp.h" #include "argp-fmtstream.h" #include "argp-namefrob.h" + +#ifndef SIZE_MAX +# define SIZE_MAX ((size_t) -1) +#endif /* User-selectable (using an environment variable) formatting parameters. @@ -441,7 +452,8 @@ make_hol (const struct argp *argp, struc hol->entries = malloc (sizeof (struct hol_entry) * hol->num_entries); hol->short_options = malloc (num_short_options + 1); - assert (hol->entries && hol->short_options); + assert (hol->entries && hol->short_options + && hol->num_entries <= SIZE_MAX / sizeof (struct hol_entry)); /* Fill in the entries. */ so = hol->short_options; @@ -521,7 +533,7 @@ hol_free (struct hol *hol) 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 +559,7 @@ hol_entry_short_iterate (const struct ho } 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, @@ -833,6 +846,9 @@ hol_append (struct hol *hol, struct hol char *short_options = malloc (hol_so_len + strlen (more->short_options) + 1); + assert (entries && short_options + && num_entries <= SIZE_MAX / sizeof (struct hol_entry)); + __mempcpy (__mempcpy (entries, hol->entries, hol->num_entries * sizeof (struct hol_entry)), more->entries, @@ -1529,7 +1545,9 @@ _help (const struct argp *argp, const st if (! stream) return; +#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) __flockfile (stream); +#endif if (! uparams.valid) fill_in_uparams (state); @@ -1537,7 +1555,9 @@ _help (const struct argp *argp, const st fs = __argp_make_fmtstream (stream, 0, uparams.rmargin, 0); if (! fs) { +#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) __funlockfile (stream); +#endif return; } @@ -1645,7 +1665,9 @@ Try `%s --help' or `%s --usage' for more anything = 1; } +#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) __funlockfile (stream); +#endif if (hol) hol_free (hol); @@ -1664,6 +1686,32 @@ void __argp_help (const struct argp *arg weak_alias (__argp_help, argp_help) #endif +#ifndef _LIBC +char *__argp_basename (char *name) +{ + char *short_name = strrchr (name, '/'); + return short_name ? short_name + 1 : name; +} + +char * +__argp_short_program_name (void) +{ +# if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME + return program_invocation_short_name; +# elif HAVE_DECL_PROGRAM_INVOCATION_NAME + return __argp_basename (program_invocation_name); +# else + /* FIXME: What now? Miles suggests that it is better to use NULL, + but currently the value is passed on directly to fputs_unlocked, + so that requires more changes. */ +# if __GNUC__ +# warning No reasonable value to return +# endif /* __GNUC__ */ + return ""; +# endif +} +#endif + /* Output, if appropriate, a usage message for STATE to STREAM. FLAGS are from the set ARGP_HELP_*. */ void @@ -1675,7 +1723,7 @@ __argp_state_help (const struct argp_sta flags |= ARGP_HELP_LONG_ONLY; _help (state ? state->root_argp : 0, state, stream, flags, - state ? state->name : program_invocation_short_name); + state ? state->name : __argp_short_program_name ()); if (!state || ! (state->flags & ARGP_NO_EXIT)) { @@ -1704,7 +1752,9 @@ __argp_error (const struct argp_state *s { va_list ap; +#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) __flockfile (stream); +#endif va_start (ap, fmt); @@ -1716,7 +1766,7 @@ __argp_error (const struct argp_state *s __asprintf (&buf, fmt, ap); __fwprintf (stream, L"%s: %s\n", - state ? state->name : program_invocation_short_name, + state ? state->name : __argp_short_program_name (), buf); free (buf); @@ -1725,7 +1775,7 @@ __argp_error (const struct argp_state *s #endif { fputs_unlocked (state - ? state->name : program_invocation_short_name, + ? state->name : __argp_short_program_name (), stream); putc_unlocked (':', stream); putc_unlocked (' ', stream); @@ -1739,7 +1789,9 @@ __argp_error (const struct argp_state *s va_end (ap); +#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) __funlockfile (stream); +#endif } } } @@ -1765,16 +1817,18 @@ __argp_failure (const struct argp_state if (stream) { +#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) __flockfile (stream); +#endif #ifdef USE_IN_LIBIO if (_IO_fwide (stream, 0) > 0) __fwprintf (stream, L"%s", - state ? state->name : program_invocation_short_name); + state ? state->name : __argp_short_program_name ()); else #endif fputs_unlocked (state - ? state->name : program_invocation_short_name, + ? state->name : __argp_short_program_name (), stream); if (fmt) @@ -1818,7 +1872,11 @@ __argp_failure (const struct argp_state { putc_unlocked (':', stream); putc_unlocked (' ', stream); +#if defined _LIBC || defined HAVE_STRERROR_R fputs (__strerror_r (errnum, buf, sizeof (buf)), stream); +#else + fputs (strerror (errnum), stream); +#endif } } @@ -1829,7 +1887,9 @@ __argp_failure (const struct argp_state #endif putc_unlocked ('\n', stream); +#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) __funlockfile (stream); +#endif if (status && (!state || !(state->flags & ARGP_NO_EXIT))) exit (status); diff -durpN glibc-2.3.2/argp/argp-namefrob.h glibc-2.3.3/argp/argp-namefrob.h --- glibc-2.3.2/argp/argp-namefrob.h 2001-07-07 15:20:51.000000000 -0400 +++ glibc-2.3.3/argp/argp-namefrob.h 2003-11-29 02:18:32.000000000 -0500 @@ -1,5 +1,5 @@ /* Name frobnication for compiling argp outside of glibc - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader . @@ -77,16 +77,81 @@ #undef __argp_fmtstream_wmargin #define __argp_fmtstream_wmargin argp_fmtstream_wmargin +#include "mempcpy.h" +#include "strcase.h" +#include "strchrnul.h" +#include "strndup.h" + /* normal libc functions we call */ +#undef __flockfile +#define __flockfile flockfile +#undef __funlockfile +#define __funlockfile funlockfile +#undef __mempcpy +#define __mempcpy mempcpy #undef __sleep #define __sleep sleep #undef __strcasecmp #define __strcasecmp strcasecmp +#undef __strchrnul +#define __strchrnul strchrnul +#undef __strerror_r +#define __strerror_r strerror_r +#undef __strndup +#define __strndup strndup #undef __vsnprintf #define __vsnprintf vsnprintf +#if defined(HAVE_DECL_CLEARERR_UNLOCKED) && !HAVE_DECL_CLEARERR_UNLOCKED +# define clearerr_unlocked(x) clearerr (x) +#endif +#if defined(HAVE_DECL_FEOF_UNLOCKED) && !HAVE_DECL_FEOF_UNLOCKED +# define feof_unlocked(x) feof (x) +# endif +#if defined(HAVE_DECL_FERROR_UNLOCKED) && !HAVE_DECL_FERROR_UNLOCKED +# define ferror_unlocked(x) ferror (x) +# endif +#if defined(HAVE_DECL_FFLUSH_UNLOCKED) && !HAVE_DECL_FFLUSH_UNLOCKED +# define fflush_unlocked(x) fflush (x) +# endif +#if defined(HAVE_DECL_FGETS_UNLOCKED) && !HAVE_DECL_FGETS_UNLOCKED +# define fgets_unlocked(x,y,z) fgets (x,y,z) +# endif +#if defined(HAVE_DECL_FPUTC_UNLOCKED) && !HAVE_DECL_FPUTC_UNLOCKED +# define fputc_unlocked(x,y) fputc (x,y) +# endif +#if defined(HAVE_DECL_FPUTS_UNLOCKED) && !HAVE_DECL_FPUTS_UNLOCKED +# define fputs_unlocked(x,y) fputs (x,y) +# endif +#if defined(HAVE_DECL_FREAD_UNLOCKED) && !HAVE_DECL_FREAD_UNLOCKED +# define fread_unlocked(w,x,y,z) fread (w,x,y,z) +# endif +#if defined(HAVE_DECL_FWRITE_UNLOCKED) && !HAVE_DECL_FWRITE_UNLOCKED +# define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z) +# endif +#if defined(HAVE_DECL_GETC_UNLOCKED) && !HAVE_DECL_GETC_UNLOCKED +# define getc_unlocked(x) getc (x) +# endif +#if defined(HAVE_DECL_GETCHAR_UNLOCKED) && !HAVE_DECL_GETCHAR_UNLOCKED +# define getchar_unlocked() getchar () +# endif +#if defined(HAVE_DECL_PUTC_UNLOCKED) && !HAVE_DECL_PUTC_UNLOCKED +# define putc_unlocked(x,y) putc (x,y) +# endif +#if defined(HAVE_DECL_PUTCHAR_UNLOCKED) && !HAVE_DECL_PUTCHAR_UNLOCKED +# define putchar_unlocked(x) putchar (x) +# endif + +extern char *__argp_basename (char *name); + #endif /* !_LIBC */ #ifndef __set_errno #define __set_errno(e) (errno = (e)) #endif + +#if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME +# define __argp_short_program_name() (program_invocation_short_name) +#else +extern char *__argp_short_program_name (void); +#endif diff -durpN glibc-2.3.2/argp/argp-parse.c glibc-2.3.3/argp/argp-parse.c --- glibc-2.3.2/argp/argp-parse.c 2002-04-08 04:19:12.000000000 -0400 +++ glibc-2.3.3/argp/argp-parse.c 2003-11-29 02:18:50.000000000 -0500 @@ -1,5 +1,5 @@ /* Hierarchial argument parsing, layered over getopt - 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. Written by Miles Bader . @@ -22,6 +22,21 @@ #include #endif +/* AIX requires this to be the first thing in the file. */ +#ifndef __GNUC__ +# if HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX +#pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +#endif + #include #include #include @@ -119,24 +134,28 @@ argp_default_parser (int key, char *arg, break; case OPT_PROGNAME: /* Set the program name. */ +#if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_NAME program_invocation_name = arg; - +#endif /* [Note that some systems only have PROGRAM_INVOCATION_SHORT_NAME (aka __PROGNAME), in which case, PROGRAM_INVOCATION_NAME is just defined to be that, so we have to be a bit careful here.] */ - arg = strrchr (arg, '/'); - if (arg) - program_invocation_short_name = arg + 1; - else - program_invocation_short_name = program_invocation_name; /* Update what we use for messages. */ - state->name = program_invocation_short_name; + state->name = strrchr (arg, '/'); + if (state->name) + state->name++; + else + state->name = arg; + +#if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME + program_invocation_short_name = state->name; +#endif if ((state->flags & (ARGP_PARSE_ARGV0 | ARGP_NO_ERRS)) == ARGP_PARSE_ARGV0) /* Update what getopt uses too. */ - state->argv[0] = program_invocation_name; + state->argv[0] = arg; break; @@ -599,7 +618,7 @@ parser_init (struct parser *parser, cons parser->state.name = short_name ? short_name + 1 : argv[0]; } else - parser->state.name = program_invocation_short_name; + parser->state.name = __argp_short_program_name (); return 0; } diff -durpN glibc-2.3.2/argp/argp-xinl.c glibc-2.3.3/argp/argp-xinl.c --- glibc-2.3.2/argp/argp-xinl.c 2002-03-11 03:31:59.000000000 -0500 +++ glibc-2.3.3/argp/argp-xinl.c 2003-10-02 18:53:55.000000000 -0400 @@ -22,7 +22,9 @@ #include #endif -#include +#if defined _LIBC || defined HAVE_FEATURES_H +# include +#endif #ifndef __USE_EXTERN_INLINES # define __USE_EXTERN_INLINES 1 diff -durpN glibc-2.3.2/argp/Makefile glibc-2.3.3/argp/Makefile --- glibc-2.3.2/argp/Makefile 2002-12-04 14:45:21.000000000 -0500 +++ glibc-2.3.3/argp/Makefile 2003-09-16 01:46:38.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 @@ routines = $(addprefix argp-, ba fmtstre 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 diff -durpN glibc-2.3.2/argp/tst-argp1.c glibc-2.3.3/argp/tst-argp1.c --- glibc-2.3.2/argp/tst-argp1.c 2002-12-04 17:45:02.000000000 -0500 +++ glibc-2.3.3/argp/tst-argp1.c 2003-03-17 14:21:04.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 , 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 @@ static error_t parse_opt (int key, char /* 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 @@ parse_opt (int key, char *arg, struct ar { return ARGP_ERR_UNKNOWN; } + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff -durpN glibc-2.3.2/assert/assert.h glibc-2.3.3/assert/assert.h --- glibc-2.3.2/assert/assert.h 2001-07-07 15:20:51.000000000 -0400 +++ glibc-2.3.3/assert/assert.h 2003-08-15 13:54:31.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 @@ extern void __assert (const char *__asse __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__' diff -durpN glibc-2.3.2/assert/.cvsignore glibc-2.3.3/assert/.cvsignore --- glibc-2.3.2/assert/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/assert/.cvsignore 1996-05-14 14:13:37.000000000 -0400 @@ -0,0 +1,6 @@ +*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz +=* +TODO COPYING* AUTHORS copyr-* copying.* +glibc-* +distinfo diff -durpN glibc-2.3.2/bare/.cvsignore glibc-2.3.3/bare/.cvsignore --- glibc-2.3.2/bare/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/bare/.cvsignore 1996-05-14 14:13:42.000000000 -0400 @@ -0,0 +1,6 @@ +*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz +=* +TODO COPYING* AUTHORS copyr-* copying.* +glibc-* +distinfo diff -durpN glibc-2.3.2/CANCEL-FILE-WAIVE glibc-2.3.3/CANCEL-FILE-WAIVE --- glibc-2.3.2/CANCEL-FILE-WAIVE 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/catgets/gencat.c glibc-2.3.3/catgets/gencat.c --- glibc-2.3.2/catgets/gencat.c 2003-02-22 18:09:59.000000000 -0500 +++ glibc-2.3.3/catgets/gencat.c 2003-04-05 18:21:00.000000000 -0500 @@ -333,7 +333,7 @@ read_input_file (struct catalog *current /* 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 @@ read_input_file (struct catalog *current 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. */ diff -durpN glibc-2.3.2/catgets/nl_types.h glibc-2.3.3/catgets/nl_types.h --- glibc-2.3.2/catgets/nl_types.h 2001-07-07 15:20:51.000000000 -0400 +++ glibc-2.3.3/catgets/nl_types.h 2003-04-19 12:48:37.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 @@ typedef void *nl_catd; /* 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. */ diff -durpN glibc-2.3.2/catgets/open_catalog.c glibc-2.3.3/catgets/open_catalog.c --- glibc-2.3.2/catgets/open_catalog.c 2002-09-24 01:11:41.000000000 -0400 +++ glibc-2.3.3/catgets/open_catalog.c 2003-07-15 02:37:36.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, . @@ -30,6 +30,7 @@ #include #include "catgetsinfo.h" +#include #define SWAPU32(w) bswap_32 (w) @@ -49,7 +50,7 @@ __open_catalog (const char *cat_name, co 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 @@ __open_catalog (const char *cat_name, co if (bufact != 0) { - fd = __open (buf, O_RDONLY); + fd = open_not_cancel_2 (buf, O_RDONLY); if (fd >= 0) break; } @@ -233,8 +234,8 @@ __open_catalog (const char *cat_name, co /* 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 @@ __open_catalog (const char *cat_name, co /* Release the lock again. */ close_unlock_return: - __close (fd); + close_not_cancel_no_status (fd); return result; } diff -durpN glibc-2.3.2/ChangeLog glibc-2.3.3/ChangeLog --- glibc-2.3.2/ChangeLog 2003-02-28 20:10:14.000000000 -0500 +++ glibc-2.3.3/ChangeLog 2003-12-01 03:28:52.000000000 -0500 @@ -1,3 +1,7352 @@ +2003-12-01 Automatic + + * version.h (VERSION): Bump to 2.3.3. + +2003-11-30 Andreas Jaeger + + * stdio-common/vfprintf.c: Do not inline buffered_vfprintf to + decrease stack usage. + +2003-11-30 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/sysdep.h (PSEUDO_ERRVAL) + (PSEUDO_END_ERRVAL, ret_ERRVAL): Define. + +2003-11-29 Ulrich Drepper + + * misc/mntent_r.c (decode_name): Be compatible with util-linux and + recognize \134 as well. + +2003-10-09 H.J. Lu + + * sysdeps/ia64/fpu/fraiseexcpt.c: Don't include . + +2003-10-08 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Don't include + . + (struct ia64_fpreg): New definition. + + * sysdeps/unix/sysv/linux/ia64/sys/procfs.h: Don't include + . + (ELF_NGREG): New #define. + (ELF_NFPREG): Likewise. + (elf_greg_t): New type. + (elf_gregset_t): Likewise. + (elf_fpreg_t): Likewise. + (elf_fpregset_t): Likewise. + +2003-10-08 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/sys/ptrace.h: Include + . + (__ptrace_request): Add PTRACE_GETREGS and PTRACE_SETREGS. + (pt_all_user_regs): New type. + +2003-10-10 Simon Josefsson + + * argp/argp-namefrob.h [!_LIBC]: Include mempcpy.h, strcase.h, + strchrnul.h, strndup.h (from gnulib). + * argp/argp-parse.c: Add alloca.h include snippet verbatim from + Autoconf manual. + * argp/argp-help.c: Replace alloca.h include snipper with verbatim + Autoconf manual version. + * argp/argp.h: Map __restrict to restrict or empty string when + necessary, copied verbatim from posix/regex.h. + +2003-10-09 Steven Munroe + + * Makefile: Allow for c++-types-$(config-machine)-$(config-os).data in + addition to c++-types-$(base-machine)-$(config-os).data. + * scripts/data/c++-types-powerpc-linux-gnu.data: New file. + * scripts/data/c++-types-powerpc64-linux-gnu.data: New file. + +2003-11-28 Ulrich Drepper + + * misc/mntent_r.c (decode_name): Fix decoding of tab, add decoding + of newline. + * manual/sysinfo.texi (mtab): Adjust description accordingly. + Reported by Andries.Brouwer@cwi.nl. + + * sysdeps/x86_64/fpu/libm-test-ulps: Add some more minor changes + to compensate other setup. + +2003-11-27 Andreas Jaeger + + * sysdeps/x86_64/fpu/libm-test-ulps: Add ulps for new atan2 test. + + * math/libm-test.inc (atan2_test): Add test that run infinitly. + Reported by "Willus" . + +2003-11-27 Michael Matz + + * sysdeps/ieee754/dbl-64/mpsqrt.c (fastiroot): Fix 64-bit problem + with wrong types. + +2003-11-28 Jakub Jelinek + + * posix/regexec.c (acquire_init_state_context): Make inline. + Add always_inline attribute. + (check_matching): Add BE macro. Move if (cur_state->has_backref) + into if (dfa->nbackref). + (sift_states_backward): Fix comment. + (transit_state): Add BE macro. Move if (next_state->has_backref) + into if (dfa->nbackref && next_state). Don't check for next_state + != NULL twice. + * posix/regcomp.c (peek_token): Use opr.ctx_type instead of opr.idx + for ANCHOR. + (parse_expression): Only call init_word_char if word context will be + needed. + + * posix/bug-regex11.c (tests): Add new tests. + + * posix/tst-regex.c: Include getopt.h. + (timing): New variable. + (main): Set timing to 1 if --timing argument is present. + Add 2 new tests. + (run_test, run_test_backwards): Handle timing. + +2003-11-27 Jakub Jelinek + + * posix/regex_internal.h (re_string_t): Remove mbs_case field. + Add offsets, valid_raw_len, raw_len, raw_stop, mbs_allocated and + offsets_needed fields. Change icase, is_utf8 and map_notascii + type from int bitfield to unsigned char. + (MBS_ALLOCATED, MBS_CASE_ALLOCATED): Remove. + (build_wcs_upper_buffer): Change prototype to return int. + (re_string_peek_byte_case, re_string_fetch_byte_case): Remove + defines, add prototypes. + * posix/regex_internal.c (re_string_allocate): Don't initialize + stop here. Don't initialize mbs_case. Set valid_raw_len. + Use mbs_allocated instead of MBS_* macros. + (re_string_construct): Don't initialize stop and valid_len here. + Don't initialize mbs_case. Use mbs_allocated instead of MBS_* + macros. Reallocate buffers if build_wcs_upper_buffer converted + too few bytes. Set valid_len to bufs_len only for single byte + no translation and set in that case valid_raw_len as well. + (re_string_realloc_buffers): Reallocate offsets if not NULL. + Use mbs_allocated instead of MBS_ALLOCATED. Don't reallocate + mbs_case. + (re_string_construct_common): Initialize raw_len, mbs_allocated, + stop and raw_stop. + (build_wcs_buffer): Apply pstr->trans before mbrtowc instead of + after it. Set valid_raw_len. Don't set mbs_case. + (build_wcs_upper_buffer): Return REG_NOERROR or REG_ESPACE. + Only use the fast path if !pstr->offsets_needed. Apply pstr->trans + before mbrtowc instead of after it. If upper case character + uses different number of bytes than lower case, goto to the + slow path. Don't call towupper unnecessarily twice. Set + valid_raw_len as well. Handle in the slow path the case if + lower and upper case use different number of characters. + Don't set mbs_case. + (re_string_skip_chars): Use valid_raw_len instead of valid_len. + (build_upper_buffer): Don't set mbs_case. Add BE macro. Set + valid_raw_len. + (re_string_translate_buffer): Set mbs instead of mbs_case. Set + valid_raw_len. + (re_string_reconstruct): Use raw_len/raw_stop to initialize + len/stop. Clear valid_raw_len and offsets_needed when clearing + valid_len. Use mbs_allocated instead of MBS_* macros. + Check original offset against valid_raw_len instead of valid_len. + Remove mbs_case handling. Adjust valid_raw_len together with + valid_len. If is_utf8 and looking for tip context, apply + pstr->trans first. If buffers start with partial multi-byte + character, initialize mbs array as well if mbs_allocated. + Check return value of build_wcs_upper_buffer. + (re_string_peek_byte_case): New function. + (re_string_fetch_byte_case): New function. + (re_string_destruct): Use mbs_allocated instead of MBS_ALLOCATED. + Don't free mbs_case. Free offsets. + * posix/regcomp.c (init_dfa): Only check if charset name is UTF-8 + if mb_cur_max == 6. + * posix/regexec.c (re_search_internal): Initialize input.raw_stop + as well. Use valid_raw_len instead of valid_len when looking + through fastmap. Adjust registers through input.offsets. + (extend_buffers): Allow build_wcs_upper_buffer to fail. + * posix/bug-regex18.c (tests): Enable #ifdefed out tests. Add new + tests. + +2003-11-26 Jakub Jelinek + + * posix/regexec.c (check_subexp_limits): Only check close + subexpression limitation if one is found. Formatting. + (sift_states_backward, check_arrival, check_arrival_add_next_nodes): + Formatting. + * posix/bug-regex11.c (tests): Enable most #ifdefed out tests. + Add new test. + +2003-11-26 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_PROT_GROWSUPDOWN): Define for 2.6.1 and up. + * sysdeps/unix/sysv/linux/dl-execstack.c: Omit compatibility code + if __ASSUME_PROT_GROWSUPDOWN is defined. + +2003-11-26 Andreas Jaeger + + * sysdeps/unix/sysv/linux/dl-execstack.c + (_dl_make_stack_executable): Set dl_stack_flags always for + success. + +2003-06-22 Petter Reinholdtsen + + * locale/program/ld-monetary.c: Only check the first three + characters in int_curr_symbol against ISO-4217, to make the + separator character used by a locale independent of the content + in iso-4217.def. + * locale/iso-4217.def: Remove the space character from all + currency values to get the new test code in ld-monetary.c working. + +2003-11-21 David Mosberger + + * elf/soinit.c (_fini): Put _fini() in .init_array section if + HAVE_INITFINI_ARRAY is defined. + +2003-11-25 Ulrich Drepper + + * sysdeps/i386/fpu/bits/mathinline.h: Introduce __libc_sqrtl symbol. + Define it appropriately after last change. Use it where __sqrtl + was used. + +2003-11-25 H.J. Lu + + * sysdeps/i386/fpu/bits/mathinline.h (sqrt): Don't inline + sqrt for gcc 3.3 and above. + +2003-11-25 Ulrich Drepper + + * posix/runptests.c (main): Make errors fatal. + * posix/PTESTS: One test in GA135 and GA136 check functionality + which seems not guaranteed. + +2003-11-25 Jakub Jelinek + + * posix/regexec.c (re_search_internal): If prune_impossible_nodes + returned REG_NOMATCH, set match_last to -1. Don't initialize + pmatch[0] needlessly. Fix comment. + (prune_impossible_nodes): Don't segfault on NULL state_log entry. + (set_regs): Fix comment. + * posix/regcomp.c (parse_bracket_exp): Only set has_plural_match + if adding both SIMPLE_BRACKET and COMPLEX_BRACKET. + (build_charclass_op): Set has_plural_match if adding both + SIMPLE_BRACKET and COMPLEX_BRACKET. + * posix/bug-regex11.c (tests): Fix register values for one commented + out test. Add new tests. + + * posix/regex_internal.c (re_string_allocate): Make sure init_len + is at least dfa->mb_cur_max. + (re_string_reconstruct): If is_utf8, don't fall back into + re_string_skip_chars just because idx points into a middle of + valid UTF-8 character. Instead, set the wcs bytes which correspond + to the partial character bytes to WEOF. + * posix/regexec.c (re_search_internal): Allocate input.bufs_len + 1 + instead of dfa->nodes_len + 1 state_log entries initially. + * posix/bug-regex20.c (main): Uncomment backwards case insensitive + tests. + +2003-11-24 Jakub Jelinek + + * posix/regex_internal.h (re_token_t): Add word_char bit. Add + comment. + (re_dfa_t): Add sb_char field. + (bitset_mask): New function. + * posix/regcomp.c (free_dfa_content): Free sb_char. + (init_dfa): Don't initialize word_char unnecessarily. + Initialize sb_char. + (duplicate_node): Don't duplicate !word_char CHARACTERs with + NEXT_WORD_CONSTRAINT constraint or word_char CHARACTERs with + NEXT_NOTWORD_CONSTRAINT. Return -1 in *new_idx instead. + (duplicate_node_closure): Handle clone_dest == -1 from + duplicate_node. + (peek_token): Initialize word_char bit. + (parse_expression, parse_dup_op): Add comments. + (parse_bracket_exp): Don't set bitmask bits for multi-byte char + starting bytes here at the beginning. Mask off the bits right + before creating SIMPLE_BRACKET. + (build_charclass_op): Likewise. + * posix/regexec.c (group_nodes_into_DFAstates) : Only + set accept bits for single-byte characters. + (group_nodes_into_DFAstates): Don't rely on characters 0 .. 127 + being single byte encoded and the rest multi-byte. + * posix/bug-regex19.c (tests): Add new tests. + (do_mb_tests): Initialize t to *test. + (main): Fail even on do_mb_tests errors. + +2003-11-23 Ulrich Drepper + + * posix/regexec.c: Correct several memory allocation problems. + Add more BE. + * posix/regex_internal.c: Likewise. + * posix/regcomp.c: Likewise. + + * posix/regexec.c: Add const in a number of places. + * posix/regex_internal.h: Make EPSILON_BIT a macro to help + debugging. Its value isn't important. + +2003-11-22 Ulrich Drepper + + * posix/PTESTS: Fix first test of GA143. + +2003-11-21 Ulrich Drepper + + * posix/regex_internal.c (re_dfa_add_node): Add BE, reallocation + isn't likely. + + * locale/programs/charmap.c (charmap_read): If encoding is found + not ASCII compatible, set enc_not_ascii_compatible. + * locale/programs/charmap.h: Declare enc_not_ascii_compatible. + * locale/programs/ld-ctype.c (ctype_startup): If + enc_not_ascii_compatible is set, initialize to_nonascii to 1. + +2003-11-22 Jakub Jelinek + + * elf/rtld.c (process_envvars): Only honor LD_USE_LOAD_BIAS + if !__libc_enable_secure. + + * sysdeps/generic/ldsodefs.h (_dl_use_load_bias): New _rtld_global + field. + * elf/rtld.c (_rtld_global): Initialize _dl_use_load_bias field. + (dl_main): Set GL(dl_use_load_bias) default. + (process_envvars): Set GL(dl_use_load_bias) from LD_USE_LOAD_BIAS. + Add EXTRA_LD_ENVVARS_13. + * elf/dl-support.c (_dl_use_load_bias): New variable. + * elf/dl-load.c (_dl_map_object_from_fd): Mask c->mapstart + with GL(dl_use_load_bias). + * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add + LD_USE_LOAD_BIAS. + * sysdeps/unix/sysv/linux/dl-librecon.h (EXTRA_LD_ENVVARS): Remove. + (EXTRA_LD_ENVVARS_LINUX): Renamed to... + (EXTRA_LD_ENVVARS_13): ... this. Remove case at the beginning. + * sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS): + Don't undefine first. Remove EXTRA_LD_ENVVARS_LINUX. + +2003-11-21 Ulrich Drepper + + * posix/regcomp.c (duplicate_node): Remove unnecessary local variable. + + * posix/regcomp.c (re_dfa_add_tree_node): Make fourth parameter a + pointer. Adjust callers. + + * posix/regcomp.c (fetch_token): Change interface to match + peek_token. This avoid some copying and reduces code size. + +2003-11-21 Jakub Jelinek + + * posix/bug-regex19.c (tests): Add more tests. + + * posix/bug-regex11.c: And one more commented out test. + + * posix/tst-rxspencer.c (mb_tests): Don't run identical multi-byte + tests multiple times unnecessarily. + + * posix/bug-regex19.c (BRE, ERE): Define. + (tests): Add many new tests, remove UTF-8 ones. + (do_one_test, do_mb_tests): New functions. + (main): Rewritten using do_one_test and do_mb_tests. + +2003-11-20 Ulrich Drepper + + * posix/PTESTS: Fix first test in GA143. + +2003-11-20 Jakub Jelinek + + * posix/regex_internal.h (re_dfastate_t): Remove trtable_search. + Add word_trtable. + * posix/regex_internal.c (create_newstate_common, free_state): + Don't free trtable_search. + * posix/regexec.c (check_matching): Remove fl_search argument. + (transit_state_sb): Likewise. #ifdef out as unused. + (build_trtable): Remove fl_search argument. Set state->word_trtable + and state->trtable. Build separate word and non-word tables if + multi-byte and they differ for some character. + (transit_state): Remove fl_search argument. Don't update + state->trtable here. Handle state->word_trtable. + #ifdef out unused call to transit_state_sb. + (re_search_internal): Update check_matching caller. + (group_nodes_into_DFAstates): Don't clear non-ascii chars in accepts + bitmask for multi-byte locales. + * posix/bug-regex19.c (tests): Enable some commented out tests, add + 2 new tests. + * posix/tst-rxspencer.c (mb_tests): Don't test [[=b=]] for now as + multi-byte. Don't run identical multi-byte tests multiple times + unnecessarily. + (main): Check setlocale return value. + * posix/Makefile (tst-rxspencer-ARGS): Add --utf8 argument. + (tst-rxspencer-ENV): Remove MALLOC_TRACE, add LOCPATH. + ($(objpfx)tst-rxspencer-mem): Run another tst-rxspencer test + here, without --utf8 argument but with MALLOC_TRACE. + +2003-11-19 Jakub Jelinek + + * posix/regexec.c (extend_buffers): Don't allocate + twice as big state_log as needed. Don't modify pstr->valid_len + for mb_cur_max == 1 !icase !trans. + + * posix/regcomp.c (free_bin_tree): Removed. + (create_tree): Add dfa argument. Don't call re_malloc for + each tree, instead allocate from str_tree_storage. + (re_dfa_add_tree_node): New function. + (free_dfa_content): Handle freeing if dfa->nodes == NULL + or dfa->state_table == NULL. + (re_compile_internal): Call free_dfa_content if init_dfa + fails. Call free_workarea_compile, re_string_destruct + and free_dfa_content for most of the other failure paths. + (init_dfa): Initialize str_tree_storage_idx. + Don't clear any fields on allocation failure. + (free_workarea_compile): Free str_tree_storage chunks + instead of free_bin_tree (dfa->str_tree). + (parse): Call re_dfa_add_tree_node instead of re_dfa_add_node + followed by create_tree. Add dfa argument to remaining + create_tree calls. Remove new_idx variable. Remove calls + to free_bin_tree. + (parse_reg_exp, parse_branch, parse_expression, parse_sub_exp, + parse_dup_op, parse_bracket_exp, build_charclass_op): Likewise. + (duplicate_tree): Remove calls to free_bin_tree, add dfa + argument to create_tree. + * posix/regex_internal.h (BIN_TREE_STORAGE_SIZE): Define. + (bin_tree_storage_t): New type. + (re_dfa_t): Add str_tree_storage and str_tree_storage_idx + fields. + * posix/Makefile (tests): Add bug-regex21. + (generated): Add bug-regex21-mem, bug-regex21.mtrace, + tst-rxspencer-mem and tst-rxspencer.mtrace. + (tests): Depend on $(objpfx)bug-regex21-mem + and $(objpfx)tst-rxspencer-mem. + (bug-regex21-ENV, tst-rxspencer-ENV): Set. + ($(objpfx)bug-regex21-mem, $(objpfx)tst-rxspencer-mem): New. + * posix/tst-rxspencer.c (main): Add call to mtrace. + Free line at the end. + * posix/bug-regex21.c: New test. + +2003-11-19 Ulrich Drepper + + * posix/bug-regex20.c: Correct invalid UTF-8 sequences. + + * posix/regex_internal.c (build_wcs_upper_buffer): If mbrtowc + fails, just use the byte, do no fancy conversions. + + * posix/regex_internal.h (re_string_first_byte): Use ->valid_len + not ->len. + (re_string_is_single_byte_char): Likewise. + +2003-11-18 Ulrich Drepper + + * posix/regexec.c (get_subexp): After calling get_subexp_sub + reload buf and bkref_str. Little optimization by avoiding memcmp. + +2003-11-14 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/sysdep.h + (GAS_ALIGN_BREAKS_UNWIND_INFO): Define this macro to indicate + that all existing GAS versions have a problem with .align inside + a function. + * sysdeps/ia64/memccpy.S: Work around GAS_ALIGN_BREAKS_UNWIND_INFO bug. + * sysdeps/ia64/memcpy.S: Likewise. + * sysdeps/ia64/memset.S: Likewise. + * sysdeps/ia64/memmove.S: Likewise. Also move the jump-table to + out of .text into .rodata, where it belongs. + + * sysdeps/unix/sysv/linux/ia64/pipe.S: There is no need to + save/restore input-arguments, because they're necessarily + preserved by the kernel to support syscall-restart. + +2003-11-18 Jakub Jelinek + + * posix/regex_internal.h (re_token_type_t): Remove unused ALT, + END_OF_RE_TOKEN_T and SUBEXP. Reorder values. Add OP_UTF8_PERIOD + and EPSILON_BIT. + (IS_EPSILON_NODE): Just test if EPSILON_BIT is set. + (ACCEPT_MB_NODE): Return 1 for OP_UTF8_PERIOD as well. + * posix/regex_internal.c (create_ci_newstate, create_cd_newstate): + Handle OP_UTF8_PERIOD. + (re_string_reconstruct): Set valid_len for single byte char searching + with no translation and case sensitivity. + * posix/regcomp.c (re_compile_fastmap_iter, calc_first): Handle + OP_UTF8_PERIOD. + (re_compile_internal): Don't call optimize_utf8 if preg->translate + != NULL. + (optimize_utf8): Remove BACK_SLASH case. + Transform OP_PERIOD into OP_UTF8_PERIOD if the searching can be + optimized. + (parse_bracket_exp): Don't create SIMPLE_BRACKET if it doesn't have + any bits set and COMPLEX_BRACKET is used. + * posix/regexec.c (transit_state_mb): Fix comment typo. + (group_nodes_into_DFAstates, check_node_accept): Handle + OP_UTF8_PERIOD. + (check_node_accept_bytes): Likewise. Reorder slightly so that + re_string_char_size_at and re_string_elem_size_at are called + only when needed. + * posix/bug-regex20.c (BRE, ERE): Define. + (tests): Use them to make lines shorter. Expect . to be + optimized. Add lots of new tests. + (main): Run (ATM just case sensitive) test with backwards searching + as well. + +2003-11-18 Jakub Jelinek + + * io/bug-ftw4.c: Include string.h. + * posix/fnmatch.c (mbsinit): Remove define. + +2003-11-17 Jakub Jelinek + + * posix/regcomp.c (optimize_utf8): Optimize multi-byte chars as + well. + * posix/bug-regex20.c (tests): Add new tests. Multi-byte char + followed by dup operator is expected to be optimized. + + * posix/regexec.c (check_node_accept_bytes): Move nrules and j + variables to the block where they are only used, initialize + nrules only immediately before using it. + +2003-11-15 Andreas Jaeger + + * sysdeps/x86_64/fpu/s_scalbnl.S: New file. + * sysdeps/x86_64/fpu/s_truncl.S: New file. + * sysdeps/x86_64/fpu/s_nearbyintl.S: New file. + * sysdeps/x86_64/fpu/s_floorl.S: New file. + * sysdeps/x86_64/fpu/s_ilogbl.S: New file. + * sysdeps/x86_64/fpu/e_remainderl.S: New file. + + * math/libm-test.inc (floor_test): Test also ±0.25. + (ceil_test): Test -0.25. + +2003-11-17 Ulrich Drepper + + * sysdeps/posix/getaddrinfo.c: Add support for destination address + selection according to RFC 3484. + +2003-11-15 Ulrich Drepper + + * posix/regex_internal.h: Add forward declaration of re_dfa_t. + Replace last two parameters of re_string_allocate and + re_string_construct with pointer to DFA. + (re_dfa_t): Add map_notascii field. + * posix/regcomp.c (re_compile_internal): Add call of + re_string_construct. + (init_dfa): Initialize mpa_notascii. + * posix/regex_internal.c: Adjust definitions of re_string_allocate + and re_string_construct. + Pass DFA to re_string_construct. Adjust definition. Initialize + map_notascii field. + (build_wcs_upper_buffer): If map_notascii is zero use simplfied + method to map ASCII values to upper case. + * posix/regex.c: Include localeinfo.h. + * posix/regexec.c: Adjust call of re_string_allocate. + + * locale/langinfo.h: Add _NL_CTYPE_MAP_TO_NONASCII. + * locale/localeinfo.h (LIMAGIC): Change value. + * locale/categories.def. Add entry for _NL_CTYPE_MAP_TO_NONASCII. + * locale/C-ctype.h: Likewise. + * locale/programs/ld-ctype.c: Compute whether any mapping maps from + ASCII to non-ASCII value. Write out that value. + + * wcsmbs/mbsinit.c: Undef mbsinit and __mbsinit. + * include/wchar.h: Provide inline versions of mbsinit and __mbsinit. + +2003-11-14 Jakub Jelinek + + * posix/tst-rxspencer.c (check_match): @ without any following + characters must match only end of string. + (main): Fix filename in error message. + +2003-11-12 David Mosberger + + * sysdeps/ia64/dl-machine.h: Force inlining of + elf_machine_runtime_setup(). + +2003-11-13 Andreas Jaeger + + * math/Makefile (CFLAGS-test-float.c): Add -fno-builtin. + (CFLAGS-test-double.c): Likewise. + (CFLAGS-test-ldouble.c): Likewise. + (CPPFLAGS-test-ifloat.c): Likewise. + (CPPFLAGS-test-idouble.c): Likewise. + (CPPFLAGS-test-ildoubl.c): Likewise. + + * math/libm-test.inc (ceil_test): Test ceil (0.25). + +2003-11-04 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ifaddrs.c: Make sure it's the kernel who + sends the netlink data. + * sysdeps/unix/sysv/linux/check_pf.c: Likewise. + +2003-11-13 Jakub Jelinek + + * posix/regcomp.c (optimize_utf8): Optimize even if SIMPLE_BRACKET + with no bits set for >= 0x80 chars is seen. + * posix/bug-regex20.c (tests): Add new tests. Expect [ABC] to be + optimized. + (main): Run all tests with RE_ICASE as well. + +2003-11-13 Ulrich Drepper + + * posix/Makefile: Add rules to build and run tst-rxspencer. + (distribute): Add rxspencer/tests and rxspencer/COPYRIGHT. + * posix/tst-rxspencer.c: New file. + * posix/rxspencer/tests: New file. + * posix/rxspencer/COPYRIGHT: New file. + Patch mostly by Jakub Jelinek. + + * posix/regcomp.c (parse_bracket_exp): Don't check for range if + this is no option given the first token. + + * posix/regcomp.c (parse_bracket_exp): Fix test for EOS after + hyphen in range expression. Return EBRACK in this case. + + * posix/regcomp.c (parse_bracket_element): Reject hyphens unless + we expect them or it's the last element in the bracket expression. + Indicated by new parameter. Adjust all callers. + + * posix/runtests.c (run_a_test): If regcomp failed, reset last_pattern. + Prettier error messages. + + * posix/regcomp.c (parse_dup_op): Fail with REG_BADBR is first + number in {,} expression is larger. + +2003-11-13 Andreas Jaeger + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_TGKILL): + Define appropriately for x86_64. + (__ASSUME_UTIMES): Likewise. + (__ASSUME_CLONE_THREAD_FLAGS): Likewise. + + * sysdeps/x86_64/fpu/s_ceill.S: New file. + +2003-11-13 Ulrich Drepper + + * posix/regcomp.c (parse_expression): In BRE consecutive + duplications are not allowed. + +2003-11-12 Ulrich Drepper + + * posix/regcomp.c (parse_bracket_exp): If end of expression is + seen, return EBRACK error, not BADPAT. + + * posix/regcomp.c (parse_expression): If token is OP_OPEN_DUP_NUM + and RE_CONTEXT_INVALID_DUP syntax flag is set, fail. + * posix/regex.h (RE_CONTEXT_INVALUD_OPS): New macro. + (RE_SYNTAX_POSIX_BASIC): Use RE_CONTEXT_INVALUD_OPS. + + * posix/regcomp.c (parse_sub_exp): In case of not-matching ( ) + return REG_EPAREN. + + * posix/PTESTS: Cleanup. Fix typoes. Correct bugs in 2003.2. + * posix/runptests.c (main): Handle comments. + * posix/PTESTS2C.sed: Handle comments. + +2003-11-12 Jakub Jelinek + + * posix/regcomp.c (optimize_utf8): New function. + (re_compile_fastmap_iter): Use dfa->mb_cur_max > 1 instead + of !icase. + (re_compile_internal): Call optimize_utf8 if not case insensitive + and in UTF-8 locale. + * posix/regex_internal.h: Ifdef out some prototypes if + RE_NO_INTERNAL_PROTOTYPES is defined to shut up warnings. + * posix/Makefile (tests): Add bug-regex20. + (bug-regex20-ENV): Add LOCPATH. + * posix/bug-regex20.c: New test. + +2003-11-12 Jakub Jelinek + + * io/ftw.c (NFTW_NEW_NAME, NFTW_OLD_NAME): Add prototypes. + +2003-11-12 Jakub Jelinek + + * posix/tst-regex.c (umemlen): New variable. + (test_expr): Add expectedicase argument. Test case insensitive + searches as well as backwards searches (case sensitive and + insensitive) too. + (run_test): Add icase argument. Use it to compute regcomp flags. + (run_test_backwards): New function. + (main): Cast read to size_t to avoid warning. Set umemlen. + Add expectedicase arguments to test_expr. + * posix/regex_internal.c (re_string_reconstruct): If is_utf8, + find previous character by walking back instead of converting + all chars from beginning. + +2003-11-12 Jakub Jelinek + + * posix/regex_internal.h (struct re_string_t): Add is_utf8 + and mb_cur_max fields. + (struct re_dfa_t): Likewise. Reorder fields to make structure + smaller on 64-bit arches. + (re_string_allocate, re_string_construct): Add mb_cur_max and + is_utf8 arguments. + (re_string_char_size_at, re_string_wchar_at): Use pstr->mb_cur_max + instead of MB_CUR_MAX. + * posix/regcomp.c (re_compile_fastmap_iter): Use dfa->mb_cur_max + instead of MB_CUR_MAX. + (re_compile_internal): Pass new arguments to re_string_construct. + (init_dfa): Initialize mb_cur_max and is_utf8 fields. + (peek_token, peek_token_bracket): Use input->mb_cur_max instead + of MB_CUR_MAX. + (parse_expression, parse_bracket_exp, parse_charclass_op): Use + dfa->mb_cur_max instead of MB_CUR_MAX. + * posix/regex_internal.c (re_string_construct_common): Add + mb_cur_max and is_utf8 arguments. Initialize fields with them. + (re_string_allocate, re_string_construct): Add mb_cur_max and + is_utf8 arguments, pass them to re_string_construct_common. + Use mb_cur_max instead of MB_CUR_MAX. + (re_string_realloc_buffers): Use pstr->mb_cur_max instead of + MB_CUR_MAX. + (re_string_reconstruct): Likewise. + (re_string_context_at): Use input->mb_cur_max instead of + MB_CUR_MAX. + (create_ci_newstate, create_cd_newstate): Use dfa->mb_cur_max + instead of MB_CUR_MAX. + * posix/regexec.c (re_search_internal): Likewise. + Pass new arguments to re_string_allocate. + (check_matching, transit_state_sb): Use dfa->mb_cur_max instead of + MB_CUR_MAX. + (extend_buffers): Use pstr->mb_cur_max instead of MB_CUR_MAX. + +2003-11-12 Jakub Jelinek + + * posix/Makefile (tests): Add bug-regex19. + (bug-regex19-ENV): Add LOCPATH. + * posix/bug-regex19.c: New test. + +2003-11-11 Jakub Jelinek + + * posix/regcomp.c (re_compile_fastmap_iter): Handle RE_ICASE + with MB_CUR_MAX > 1 locales in the fastmap. + +2003-11-11 Jakub Jelinek + + * posix/regex_internal.c (build_wcs_buffer): Fix comment typo. + (build_wcs_upper_buffer): Likewise. Use towupper for wchar_t instead + of toupper. + * posix/Makefile (tests): Add bug-regex17 and bug-regex18. + (bug-regex17-ENV, bug-regex18-ENV): Add LOCPATH. + * posix/bug-regex17.c: New file + * posix/bug-regex18.c: New file. + +2003-10-08 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (pread, pwrite): + Define __NR_pread/__NR_pwrite if not done in kernel headers + +2003-11-11 Roland McGrath + + * manual/xtract-typefun.awk: Swallow [(){}*] from function names. + + * manual/Makefile (info): Don't depend on dir-add.info. + (libc.dvi libc.pdf libc.info): Depend on dir-add.texi. + (dir-add.info): Target removed, replaced with ... + (dir-add.texi): New target. + (distribute): Add it. + (install): Remove variant with --section arguments. + Let the @dircategory directives do their work. + (mostlyclean): Don't remove dir-add.info here. + (realclean): Remove dir-add.texi here. + * manual/libc.texinfo: @include dir-add.texi + * configure.in: Remove check for old Debian install-info. + * configure: Regenerated. + * config.make.in (OLD_DEBIAN_INSTALL_INFO): Variable removed. + +2003-11-08 Andreas Schwab + + * scripts/data/c++-types-ia64-linux-gnu.data: New file. + +2003-11-10 Carlos O'Donell + + * io/ftwtest-sh: Fix nested sed commands. + +2003-11-10 Jakub Jelinek + + * posix/regex_internal.h (re_string_char_size_at): Don't look beyond + valid_len wide chars. + +2003-11-09 Roland McGrath + + * manual/examples/dir2.c (one): Add const to argument type. + Reported by J de Haan . + +2003-11-07 Ulrich Drepper + + * po/pl.po: Update from translation team. + +2003-11-07 Jakub Jelinek + + * io/ftw.c (NFTW_OLD_NAME, NFTW_NEW_NAME): Define. + (ftw_dir, ftw_startup): Add __attribute ((noinline)). + (NFTW_OLD_NAME, NFTW_NEW_NAME): New functions. + (NFTW_NAME): Only define if !_LIBC, add versioned_symbol + and compat_symbol. + * io/ftw64.c (NFTW_OLD_NAME, NFTW_NEW_NAME): Define. + * io/Versions (libc): Export nftw@@GLIBC_2.3.3 + and nftw64@@GLIBC_2.3.3. + + * io/ftw.h (FTW_ACTIONRETVAL): New flag. + (FTW_CONTINUE, FTW_STOP, FTW_SKIP_SUBTREE, FTW_SKIP_SIBLINGS): New. + * io/ftw.c (ftw_dir): Add old_dir argument. + Clear result if it was FTW_SKIP_SIBLINGS after processing all + dir entries. Change cwd back if old_dir != NULL. + (process_entry): Adjust caller. Don't change cwd back here. + Change FTW_SKIP_SUBTREE result to 0. + (ftw_startup): Adjust ftw_dir caller. + Clear result if it was FTW_SKIP_SUBTREE or FTW_SKIP_SIBLINGS. + * io/ftwtest.c (skip_subtree, skip_siblings): New variables. + (options, main): Add --skip-subtree and --skip-siblings options. + (cb): Use return FTW_CONTINUE instead of return 0. + Handle --skip-subtree and --skip-siblings. + * io/ftwtest-sh: Add tests for FTW_ACTIONRETVAL. + * manual/filesys.texi: Document FTW_ACTIONRETVAL. + +2003-11-04 Jakub Jelinek + + * io/ftw.c (ftw_dir): Close dir if callback with FTW_D type returns + non-zero. + * io/Makefile (tests): Add bug-ftw4. + * io/bug-ftw4.c: New test. + +2003-10-27 Daniel Jacobowitz + + * libio/libioP.h [_IO_USE_OLD_IO_FILE] + (struct _IO_FILE_complete_plus): New type. + * libio/oldiofopen.c (_IO_old_fopen): Use _IO_FILE_complete_plus. + * libio/oldiofdopen.c (_IO_old_fdopen): Likewise. + * libio/oldiopopen.c (struct _IO_proc_file, _IO_old_popen): Likewise. + Call _IO_old_init instead of _IO_init. + +2003-11-03 Ulrich Drepper + + * intl/locale.alias: nb_NO is now the correct name, not no_NO. + + * locale/iso-639.def: Add Blin. + Patch by Daniel Yacob . + +2003-10-31 Steven Munroe + + * sysdeps/powerpc/powerpc32/strncmp.S: New File. + * sysdeps/powerpc/powerpc64/strncmp.S: New File. + +2003-11-01 Randolph Chung + + * sysdeps/unix/sysv/linux/hppa/sysdep.h (LOAD_ARGS_0, LOAD_ARGS_1, + LOAD_ARGS_2, LOAD_ARGS_3, LOAD_ARGS_4, LOAD_ARGS_5, LOAD_ARGS_6): + Add missing parentheses. + +2003-11-01 Roland McGrath + + * libio/bug-ftell.c (do_test): Add a cast. + +2003-09-26 Daniel Jacobowitz + + * Makerules (shlib.lds): Make sure that ld doesn't try to link + anything while generating the linker script. + +2003-10-31 Roland McGrath + + * locale/lc-ctype.c (_nl_postload_ctype): Update _nl_global_locale's + special members. + +2003-10-29 Ulrich Drepper + + * po/be.po: Update from translation team. + +2003-10-27 Ulrich Drepper + + * elf/rtld.c (map_doit): Pass __RTLD_OPENEXEC in last parameter to + _dl_map_object. + + * elf/sprof.c (load_shobj): Use l_map_start not l_addr to locate + ELF header. + + * inet/rcmd.c (__validuser2_sa): Remove unnecessary code to skip + rest of line. We use getline which means this cannot happen. + +2003-10-26 Ulrich Drepper + + * sysdeps/unix/sysv/linux/internal_statvfs.c (__internal_statvfs): + Avoid infinite loops in case the mounts file is hosed. + * io/Makefile: Add rules to build and run tst-statvfs. + * io/tst-statvfs.c: New file. + + * include/dlfcn.h (__RTLD_OPENEXEC): Define. + * elf/dl-load.c (_dl_map_object_from_fd): Don't allow loading + executables unless __RTLD_OPENEXEC flag is present. + * elf/rtld.c (dl_main): Pass __RTLD_OPENEXEC flag to + _dl_map_object when loading the executable. + + * sysdeps/generic/glob.c (glob): Handle GLOB_BRACE and escaping + correctly. + * posix/globtest.sh: Add tests for GLOB_BRACE and escaping. + + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Default + reverse lookup format for IPv6 addresses is using bitstring and + .ip6.arpa suffix. + * resolv/ns_name.c: Implement encoding and decoding bitstring in + hex format. + +2003-10-23 Jakub Jelinek + + * locale/programs/locale.c (show_info): Fix printing word values on + 64-bit big-endian architectures. + +2003-10-19 Bruno Haible + + * intl/hash-string.c (hash_string): Zero-extend each char from the + string; the old code did a sign-extend on some platforms. + +2003-10-22 Steven Munroe + + * sysdeps/powerpc/powerpc32/Makefile (+cflags, asm-CPPFLAGS): Don't + append options to these. + * sysdeps/powerpc/powerpc64/Makefile (+cflags, asm-CPPFLAGS): Likewise. + +2003-10-18 Carlos O'Donell + + * sysdeps/unix/sysv/linux/hppa/sysdep.h: Fix merge error. + +2003-10-15 Roland McGrath + + * elf/dl-iteratephdr.c [! SHARED] (dl_iterate_phdr): New function. + Fake an entry for the main executable and then call __dl_iterate_phdr. + * elf/Makefile (routines): Remove dl-iteratephdr-static. + (elide-routines.os): Likewise. + (CFLAGS-dl-iterate-phdr-static.c): Variable removed. + * sysdeps/generic/dl-iteratephdr-static.c: File removed. + * sysdeps/unix/sysv/linux/ia64/dl-iteratephdr-static.c: File removed. + +2003-10-15 Jakub Jelinek + + * elf/rtld.c (print_statistics): Print also number of relative + relocations. + +2003-10-12 Carlos O'Donell + + * sysdeps/hppa/sysdep.h: Undef JUMPTARGET before use. + * sysdeps/unix/sysv/linux/hppa/sysdep.h: Define PSEUDO_ERRVAL, + SYSCALL_ERROR_LABEL under all conditions, INTERNAL_SYSCALL_DECL, + INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO, INTERNAL_SYSCALL, + and undef JUMPTARGET before use. + [PIC]: Save pic register around syscall. + * sysdeps/unix/sysv/linux/hppa/sysdep.c (syscall): + Cleanup asm statment. + +2003-10-13 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/sysdep.h (DO_CALL): Add SYSCALL_INST_PAD + after trapa instruction. + +2003-10-09 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/syscalls.list: Add waitpid. + +2003-10-10 Carlos O'Donell + + * sysdeps/hppa/Makefile (CFLAGS-malloc.c): Variable removed. + +2003-10-09 Roland McGrath + + * elf/rtld.c (dl_main): Don't set l_name for sysinfo DSO, since there + is no file to name. + +2003-10-08 Jakub Jelinek + + * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): Don't generate + two identical copies of strings. + +2003-10-06 Ulrich Drepper + + * posix/bug-regex11.c: Add some more tests which fail so far. + Disable them. Patch by Paolo Bonzini . + +2003-10-05 Paolo Bonzini + + * posix/bug-regex11.c: Add more backreference-related test cases. + (main): Show the failing regex in the error messages. + * posix/regexec.c (check_dst_limits_calc_pos): + Simplify some nested conditionals. Replace if's with a switch + statement. + (check_dst_limits_calc_pos ): Rename parameter NODE to + FROM_NODE, it shadows a local variable; don't recurse if FROM_NODE + does not change in the recursive invocation, fixing an infinite loop + in the ()\1*\1* regex. + (sift_states_backward): Fix function comment. + * posix/regcomp.c (calc_epsdest): Add an assertion. + +2003-10-06 Ulrich Drepper + + * manual/examples/testopt.c: Fix warnings. Better error message + for missing -c argument. + Patch mostly by Gitonga Marete . + + * timezone/asia: Update from tzdata2003d. + * timezone/australasia: Likewise. + * timezone/backward: Likewise. + * timezone/europe: Likewise. + * timezone/iso3166.tab: Likewise. + * timezone/northamerica: Likewise. + * timezone/southamerica: Likewise. + * timezone/zone.tab: Likewise. + +2003-10-05 Jakub Jelinek + + * sysdeps/ia64/backtrace.c: New file. + * sysdeps/x86_64/backtrace.c: New file. + * sysdeps/generic/unwind.h (_Unwind_Trace_Fn): New type. + (_Unwind_Backtrace): New prototype. + +2003-10-03 Ulrich Drepper + + * sysdeps/i386/elf/bsd-setjmp.S: Use linkonce section for PIC stub. + * sysdeps/i386/elf/setjmp.S: Likewise. + +2003-10-02 Roland McGrath + + * argp/argp-help.c (__argp_short_program_name): Move inside [! _LIBC]. + * argp/argp-namefrob.h + [_LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME] + (__argp_short_program_name): Don't declare fn, define it as a macro. + +2003-08-22 Simon Josefsson + + * argp/argp-fmtstream.h [!__attribute__]: Define to nothing. + + * argp/argp-help.c: Don't include malloc.h, some platforms + complain and it doesn't appear to be used. + [!_LIBC && HAVE_STRERROR_R && !HAVE_DECL_STRERROR_R]: Declare + strerror_r. + [!_LIBC && !HAVE_STRERROR_R && !HAVE_DECL_STRERROR]: Declare + strerror. + (hol_entry_long_iterate): Change __attribute to __attribute__. + (_help, __argp_error, __argp_failure) [!_LIBC && (HAVE_FLOCKFILE + && HAVE_FUNLOCKFILE)]: Protect call to flockfile and funlockfile. + (__argp_basename) [!_LIBC]: New. Taken from LSH, by Niels Möller, + modified after comments from Ulrich Drepper. + (__argp_short_program_name): Ditto. + (__argp_state_help, __argp_error, __argp_failure): Use it. + (__argp_failure): Use strerror when necessary. + + * argp/argp-namefrob.h (__flockfile, __funlockfile, __mempcpy) + (__strchrnul, __strerror_r, __strndup) [!_LIBC]: Remove __-prefix. + (clearerr_unlocked, feof_unlocked, ferror_unlocked) + (fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked) + (fread_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked) + (putc_unlocked, putchar_unlocked) [!_LIBC && !HAVE_DECL_*]: Map to + non-unlocked functions. + [!_LIBC]: Add prototypes for __argp_basename and + __argp_short_program_name. + + * argp/argp-parse.c (argp_default_parser): Only use + program_invocation{_short,}_name if declared. + (parser_init): Use __argp_short_program_name. + + * argp/argp-xinl.c [_LIBC || HAVE_FEATURES_H]: Add CPP check for + '#include features.h'. + + * argp/argp.h [!__attribute__]: Define to nothing. + +2003-09-26 Paolo Bonzini + + * posix/regcomp.c (parse_sub_exp): Pass RE_CARET_ANCHORS_HERE + for the first token in a subexpression as well. + +2003-10-02 Jakub Jelinek + + * posix/regcomp.c (peek_token): Add 2003-09-20 changes for anchor + handling again. + (parse_reg_exp): Likewise. + * posix/regex.h (RE_CARET_ANCHORS_HERE): Define. + + * posix/bug-regex11.c (tests): Add new tests. + * posix/bug-regex12.c (tests): Add new test. + +2003-10-01 Thorsten Kukuk + + * elf/dl-reloc.c (_dl_allocate_static_tls): Move definition of + variables only used if TLS_DTV_AT_TP is defined into the #if branch. + +2003-10-02 Jeroen Dekkers + + * sysdeps/mach/hurd/malloc-machine.h: Copy the tsd code from + the old thread-m.h header too. + +2003-10-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h (MINSIGSTKSZ): Go + back to 131027 since this is what the kernel enforces. + + * inet/getnameinfo.c: Move domain out of nrl_domainname scope and + define it with libc_freeres_ptr. + +2003-10-01 Roland McGrath + + * elf/rtld.c (dl_main): Add cast in last change. + +2003-09-10 Chris Demetriou + + * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Remove + "#if 0" surrounding most of contents. + (SYSCALL_ERROR_LABEL): Define. + (__SYSCALL_CLOBBERS): Add $10. + (internal_syscall7): Remove. + * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise. + +2003-09-30 Ulrich Drepper + + * elf/rtld.c (dl_main): Also set l_map_start. + +2003-09-30 Daniel Jacobowitz + + * elf/rtld.c (dl_main): Set l_libname and l_name for the sysinfo DSO + to work around kernel problem. + +2003-09-27 Wolfram Gloger + + * malloc/malloc.c: Include earlier instead of + "thread-m.h", so that default parameters can be overridden in a + system-specific malloc-machine.h. Remove extra ; from extern "C" + closing brace. + * sysdeps/generic/malloc-machine.h: New file. + * sysdeps/mach/hurd/malloc-machine.h: New file. + * malloc/thread-m.h: Removed. + * malloc/Makefile: Remove CFLAGS-malloc.c parameter addition, it + is in sysdeps/generic/malloc-machine.h now. + +2003-09-29 Ulrich Drepper + + * elf/dl-reloc.c (_dl_allocate_static_tls): Move definition of + variables only used if TLS_TCB_AT_TP is defined into the #if + branch. + + * sysdeps/unix/sysv/linux/sys/sysmacros.h: Add __extension__ as + well to cover using long long in C90. + +2003-09-28 Alfred M. Szmidt + + * sysdeps/mach/hurd/bits/libc-lock.h (__libc_cleanup_pop): + Redefine and use __libc_cleanup_region_end instead. + +2003-09-29 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/sys/sysmacros.h: Use __inline and + fix prototypes for picky C++ compilers. + +2003-09-27 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ustat.c (ustat): Set errno to EINVAL if + the device ID is invalid and return -1. + * sysdeps/unix/sysv/linux/xmknod.c (__xmknod): Likewise. + +2003-09-26 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/getcontext.S: Pass fourth argument to + rt_sigprocmask system call. + +2003-09-25 Roland McGrath + + * sysdeps/unix/sysv/linux/dl-execstack.c (_dl_make_stack_executable): + Don't check for zero __libc_stack_end, it should be initialized. + [_STACK_GROWS_DOWN] [PROT_GROWSDOWN]: Try using PROT_GROWSDOWN flag + and fall back if it fails with EINVAL. + [_STACK_GROWS_UP] [PROT_GROWSUP]: Likewise for PROT_GROWSUP. + +2003-09-25 Jakub Jelinek + + * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include + sysdeps/i386/dl-procinfo.c instead of + sysdeps/unix/sysv/linux/i386/dl-procinfo.c. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Avoid using + #include_next. + +2003-09-25 Ulrich Drepper + + * posix/regcomp.c (peek_token): Remove recent changes for anchor + handling again. + (parse_reg_exp): Likewise. + * posix/regex.h: Remove RE_CARET_ANCHORS_HERE. + + * csu/Makefile ($(objpfx)version-info.h): Fix sed script to handle + banners. + + * nis/nis_table.c (nis_list): Always strdup string used with + ibreq->ibr_name. Add several NULL pointer checks. + + * nis/nss_nisplus/nisplus-alias.c: Add check for NULL return value + of nis_list. + * nis/nss_nisplus/nisplus-ethers.c: Likewise. + * nis/nss_nisplus/nisplus-grp.c: Likewise. + * nis/nss_nisplus/nisplus-hosts.c: Likewise. + * nis/nss_nisplus/nisplus-netgrp.c: Likewise. + * nis/nss_nisplus/nisplus-network.c: Likewise. + * nis/nss_nisplus/nisplus-proto.c: Likewise. + * nis/nss_nisplus/nisplus-publickey.c: Likewise. + * nis/nss_nisplus/nisplus-pwd.c: Likewise. + * nis/nss_nisplus/nisplus-rpc.c: Likewise. + * nis/nss_nisplus/nisplus-service.c: Likewise. + * nis/nss_nisplus/nisplus-spwd.c: Likewise. + + * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Define PROT_GROWSDOWN + and PROT_GROWSUP. + * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/cris/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/sh/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Likewise. + +2003-09-25 Jakub Jelinek + + * misc/syslog.c: Include locale.h. + (vsyslog): Add date always in C locale %h %e %T format. + +2003-09-24 Paul Eggert + + * argp/argp-fmtstream.c (__argp_fmtstream_ensure): Check for + size_t overflow when reallocating storage. + * argp/argp-help.c (make_hol, hol_append): Likewise. + (SIZE_MAX): New macro. + +2003-08-07 Alfred M. Szmidt + + * sysdeps/mach/hurd/bits/libc-lock.h + (__libc_cleanup_push, __libc_cleanup_pop): New macros. + +2003-08-01 Alfred M. Szmidt + + * sysdeps/i386/dl-procinfo.h: New file, contents taken from ... + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: ... here. + #include_next dl-procinfo.h to get them. + (_DL_HWCAP_COUNT): Moved to sysdeps/i386/dl-procinfo.h. + (_DL_PLATFORMS_COUNT): Likewise. + (_DL_FIRST_PLATFORM): Likewise. + (_DL_HWCAP_PLATFORM): Likewise. + (HWCAP_I386_FPU, HWCAP_I386_VME, HWCAP_I386_DE, HWCAP_I386_PSE, + HWCAP_I386_TSC, HWCAP_I386_MSR, HWCAP_I386_PAE, HWCAP_I386_MCE, + HWCAP_I386_CX8, HWCAP_I386_APIC, HWCAP_I386_SEP, HWCAP_I386_MTRR, + HWCAP_I386_PGE, HWCAP_I386_MCA, HWCAP_I386_CMOV, + HWCAP_I386_FCMOV, HWCAP_I386_MMX, HWCAP_I386_OSFXSR, + HWCAP_I386_XMM, HWCAP_I386_XMM2, HWCAP_I386_AMD3D, + HWCAP_IMPORTANT): Likewise. + (_DL_PROCINFO_H_): Likewise. + (_dl_hwcap_string, _dl_platform_string, _dl_string_hwcap): Likewise. + (_dl_string_platform): Likewise. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.c: Moved to ... + * sysdeps/i386/dl-procinfo.c: ... here, new file. + +2003-09-24 Ulrich Drepper + + * sysdeps/unix/sysv/linux/dl-execstack.c + (_dl_make_stack_executable): Remember that we changed the permission. + + * sysdeps/ia64/dl-machine.h (RTLD_START): Remove setting of + __libc_stack_end. Patch by David Mosberger. + +2003-09-24 Jakub Jelinek + + * elf/Versions (ld): Export __libc_stack_end@GLIBC_2.1 instead of + __libc_stack_end@GLIBC_PRIVATE. + + * sysdeps/generic/dl-sysdep.c (DL_STACK_END): Define if not defined. + (_dl_sysdep_start): Set __libc_stack_end here. + * sysdeps/alpha/dl-machine.h (RTLD_START): Remove setting of + __libc_stack_end. + * sysdeps/arm/dl-machine.h (RTLD_START): Likewise. + * sysdeps/cris/dl-machine.h (RTLD_START): Likewise. + * sysdeps/i386/dl-machine.h (RTLD_START): Likewise. + * sysdeps/m68k/dl-machine.h (RTLD_START): Likewise. + * sysdeps/s390/s390-32/dl-machine.h (RTLD_START): Likewise. + * sysdeps/s390/s390-64/dl-machine.h (RTLD_START): Likewise. + * sysdeps/sh/dl-machine.h (RTLD_START): Likewise. + * sysdeps/x86_64/dl-machine.h (RTLD_START): Likewise. + * sysdeps/ia64/dl-machine.h (DL_STACK_END): Define. + * sysdeps/sparc/sparc32/dl-machine.h (DL_STACK_END): Define. + (RTLD_START): Remove setting of __libc_stack_end. + * sysdeps/sparc/sparc64/dl-machine.h (DL_STACK_END): Define. + (RTLD_START): Remove setting of __libc_stack_end. + +2003-09-24 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sys/sysmacros.h: Add gnu_dev_ prefix to + function definitions. Adjust macro expansions accordingly. + * sysdeps/unix/sysv/linux/Versions: Add gnu_dev_ prefix to major, + minor, makedev name. + * sysdeps/unix/sysv/linux/makedev.c: Likewise. + +2003-09-24 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sys/sysmacros.h (major, minor, makedev): + Add __THROW. + +2003-09-24 Jakub Jelinek + + * nscd/Makefile (others): Add nscd before including ../Rules. + +2003-09-24 Ulrich Drepper + + * nscd/Makefile: Add rules to build nscd as a PIE. + * configure.in: Check for -fpie and -pie compiler options. + * config.make.in (have-fpie): Define. + +2003-09-23 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sys/sysmacros.h: Adjust for larger + kernel dev_t size. + * sysdeps/unix/sysv/linux/alpha/sys/sysmacros.h: Removed. + * sysdeps/unix/sysv/linux/sparc/sys/sysmacros.h: Removed. + * sysdeps/unix/sysv/linux/makedev.c: New file. + * sysdeps/unix/sysv/linux/Dist: Add makedev.c. + * sysdeps/unix/sysv/linux/Makefile [subdir=misc] + (sysdep_routines): Add makedev. + * sysdeps/unix/sysv/linux/Versions [libc] (GLIBC_2.3.3): Add + major, minor, makedev. + * sysdeps/unix/sysv/linux/ustat.c (ustat): Adjust for 32-bit + kernel dev_t. + * sysdeps/unix/sysv/linux/alpha/ustat.c: Removed. + * sysdeps/unix/sysv/linux/xmknod.c (__xmknod): Likewise. + * sysdeps/unix/sysv/linux/alpha/xmknod.c: Removed. + Code by Alexander Viro . + +2003-09-23 Ulrich Drepper + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions [libc] + (GLIBC_2.3.3): Add setcontext, getcontext, swapcontext, and + makecontext. + * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Correct change + for include Altivec support for PPC32. It was not compatible. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: Adjust + offsets for ucontext_t change. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Adjust + for ucontext_t change. Add compatibility code. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Likewise. + Patch by Paul Mackerras . + +2003-02-25 Randolph Chung + + * sysdeps/hppa/Makefile: Include compat code in build. + * sysdeps/hppa/libgcc-compat.c: New file. + * sysdeps/hppa/Dist: Add libgcc-compat.c. + * sysdeps/hppa/Versions [GLIBC_2.2]: Add __clz_tab. + +2003-09-23 Roland McGrath + + * elf/rtld.c (dl_main): In rtld_is_main case, reinitialize + GL(dl_stack_flags) according to rtld's own PT_GNU_STACK. + Move GL(dl_make_stack_executable_hook) initialization up. + * elf/tst-execstack-prog.c: New file. + * elf/Makefile (tests-execstack-yes): Add it. + (LDFLAGS-tst-execstack-prog): New variable. + +2003-09-23 Jakub Jelinek + + * sysdeps/x86_64/dl-machine.h (RTLD_START): Set __libc_stack_end + before calling _dl_start, using %rip relative access. + Use %rip relative access to _dl_skip_args, _rtld_local._dl_loaded + and _dl_fini. + +2003-09-23 Roland McGrath + + * sysdeps/i386/dl-machine.h (RTLD_START): Set __libc_stack_end before + calling _dl_start, using GOTOFF access. + + * configure.in (libc_cv_z_execstack): New check. + * configure: Regenerated. + * config.make.in (have-z-execstack): New variable set by it. + * elf/tst-execstack.c: New file. + * elf/tst-execstack-mod.c: New file. + * elf/tst-execstack-needed.c: New file. + * elf/Makefile (tests-execstack-yes, modules-execstack-yes): New + variables. + (tests, modules-names): Conditionally include them. + (distribute): Add tst-execstack-mod.c here. + ($(objpfx)tst-execstack, $(objpfx)tst-execstack.out): New targets. + (LDFLAGS-tst-execstack, LDFLAGS-tst-execstack-mod): New variables. + ($(objpfx)tst-execstack-needed): New target. + (LDFLAGS-tst-execstack-needed): New variable. + + * sysdeps/generic/ldsodefs.h (struct rtld_global): Add _dl_stack_flags + and _dl_make_stack_executable_hook. Declare _dl_make_stack_executable. + * elf/rtld.c (_rtld_global): Add initializer for _dl_stack_flags. + (dl_main): Reset _dl_stack_flags according to PT_GNU_STACK phdr. + Initialize _dl_make_stack_executable_hook. + * elf/dl-support.c: Define those new variables. + (_dl_non_dynamic_init): Scan phdrs for PT_GNU_STACK. + (_dl_phdr): Fix type. + * elf/dl-load.c (_dl_map_object_from_fd): Grok PT_GNU_STACK phdr and + enable execute permission for the stack if necessary. + * sysdeps/generic/dl-execstack.c: New file. + * elf/Makefile (dl-routines): Add it. + * elf/Versions (ld: GLIBC_PRIVATE): Add _dl_make_stack_executable. + * sysdeps/unix/sysv/linux/dl-execstack.c: New file. + +2003-09-23 Ulrich Drepper + + * sysdeps/posix/sprofil.c (pc_to_index): Remove inline marker. + +2003-09-20 Alfred M. Szmidt + + * sysdeps/generic/utmp_file.c (setutent_file, LOCK_FILE, + UNLOCK_FILE, setutent_file): Use fcntl_not_cancel instead of + __fcntl_nocancel. + +2003-09-22 Ulrich Drepper + + * malloc/malloc.c: Include . + +2003-09-20 Paolo Bonzini + + * posix/regcomp.c (build_word_op): Rename like... + (build_charclass_op): ...this. Accept two extra parameters, + CLASS_NAME and EXTRA. Add EXTRA to the result, not only _. + (peek_token): Accept \s and \S as OP_SPACE and OP_NOTSPACE. + (parse_expression): Replace build_word_op with + build_charclass_op, add new arguments, accept OP_SPACE + and OP_NOTSPACE. + * posix/regex_internal.h (re_token_type_t): Add OP_SPACE + and OP_NOTSPACE. + + * posix/regcomp.c (peek_token): Don't look back for ( or | + to check whether to treat a caret as special. It fails + for the (extended) regex \(^. + (parse, parse_reg_exp): Pass RE_CARET_ANCHORS_HERE to fetch_token. + * posix/regex.h: Define RE_CARET_ANCHORS_HERE. + + * posix/regexec.c: Check out of bounds value before shifting. + + * posix/regex_internal.h: Define __attribute for non-gcc. + +2003-09-22 Jakub Jelinek + + * include/atomic.h (atomic_compare_and_exchange_val_rel, + atomic_compare_and_exchange_bool_rel): Swap oldval/newval arguments + to avoid confusion. + + * sysdeps/unix/opendir.c: Include string.h. + +2003-09-22 Ulrich Drepper + + * timezone/zdump.c: Update from tzcode2003c. + * timezone/zic.c: Likewise. + * timezone/leapseconds: Update from tzdata2003c. + +2003-09-19 Ulrich Drepper + + * 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 + + * dlfcn/dlopen.c (dlopen): Add static_link_warning. + +2003-09-18 Jakub Jelinek + + * libio/memstream.c (open_memstream): Use _IO_init instead of + _IO_old_init. + +2003-09-17 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * sysdeps/i386/Makefile (stack-align-test-flags): Add + -malign-double -mpreferred-stack-boundary=4. + +2003-09-17 Ulrich Drepper + + * sysdeps/posix/utimes.c (__utimes): Truncate instead of round. + * sysdeps/unix/sysv/linux/utimes.c (__utimes): Likewise. + +2003-09-15 Jakub Jelinek + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/i386/clone.S: Make sure child gets a + stack which is aligned (mod 16). + +2003-09-17 Uwe Reimann + Hans-Peter Nilsson + + * 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 + + * 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 + + * 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 + + * posix/Versions (sched_getaffinity, sched_setaffinity): Change + from GLIBC_2.3.2 to GLIBC_2.3.3 symbol version. + +2003-09-16 Bruno Haible + + * intl/tst-gettext2.sh: Set GCONV_PATH and LOCPATH only after + invoking msgfmt, not before. + +2003-09-15 Jakub Jelinek + + * 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 + + * sysdeps/m68k/setjmp.c: Add hidden_def. + +2003-09-14 Ulrich Drepper + + * libio/memstream.c (open_memstream): Don't allow wide char operations. + + * dirent/dirent.h: Remove __THROW from scandir. + +2003-09-14 Philip Blundell + + * 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 + + * 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 + + * io/Makefile (CFLAGS-ftw.c): Add -fexceptions. + (CFLAGS-ftw64.c): Likewise. + +2003-09-13 Ulrich Drepper + + * 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 + + * 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 + + * Makerules (LDFLAGS-c.so): Remove -u __register_frame. + +2003-09-12 Ulrich Drepper + + * 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 + + * 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 + + * elf/tls-macros.h (TLS_IE): Add a stop bit for ia64. + (TLS_LD): Likewise. + (TLS_GD): Likewise. + +2003-09-11 Jakub Jelinek + + * libio/fileops.c (_IO_new_file_overflow): Add INTUSE to + _IO_free_backup_area call. + +2003-09-10 Chris Demetriou + + * 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 + + * 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 . + +2003-09-10 Jakub Jelinek + + * string/Makefile (strop-tests): Add memccpy. + * string/test-memccpy.c: New test. + +2003-09-09 Jakub Jelinek + + * 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 + + * string/stratcliff.c (main): Check memccpy. + +2003-04-11 Jes Sorensen + + * 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 + + * 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 + + * sysdeps/unix/mips/sysdep.h (PSEUDO_END): Undef before defining. + +2003-09-08 Chris Demetriou + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * malloc/malloc.c (sYSMALLOc): Move foreign sbrk accounting into + contiguous case. Bug report from Prem Gopalan . + (mALLOPt): Avoid requirement of C99. + +2003-09-08 Ulrich Drepper + + * libio/bug-ftell.c: Include . + (main): Mark cp as const. + +2003-09-07 Jakub Jelinek + + * sysdeps/unix/sysv/linux/syscalls.list (fcntl): Remove. + * sysdeps/unix/sysv/linux/x86_64/fcntl.c: Remove. + +2003-09-05 Roland McGrath + + * 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 + + * 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 + + * 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 + + * nss/getXXbyYY.c (FUNCTION_NAME): Remove unused variable. + +2003-09-04 Roland McGrath + + * 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 + + * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h (MINSIGSTKSZ): + Fix a typo. + +2003-09-05 Andreas Jaeger + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/generic/unwind.h (_Unwind_GetBSP): Add prototype. + +2003-09-03 Ulrich Drepper + + * nss/getXXbyYY_r.c (INTERNAL): Explicitly set errno and avoid + returning ERANGE if this wasn't intended. + +2003-09-03 Jakub Jelinek + + * intl/loadmsgcat.c (open, close, read, mmap, munmap): Define as + function-like macros. + +2003-09-03 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Remove __syscall_ + functions. + +2003-08-31 Ulrich Drepper + + * libio/libioP.h (_IO_acquire_lock_fct): Define as inline function. + Code by Richard Henderson. + +2003-08-31 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/Versions: Add posix_fadvise64 and + posix_fallocate64 at GLIBC_2.3.3. + +2003-08-31 Ulrich Drepper + + * sysdeps/x86_64/bsd-_setjmp.S: Use HIDDEN_JUMPTARGET. + * include/setjmp.h: Add libc_hidden_proto for __sigsetjmp. + +2003-08-30 Jakub Jelinek + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/hppa/syscalls.list: Add semtimedop. + +2003-08-29 Jakub Jelinek + + * libio/iofgetpos64.c (_IO_new_fgetpos64): Move lock release to the + end. + +2003-08-29 Ulrich Drepper + + * libio/stdio.h: Remove a few more __THROW. + +2003-08-29 Jakub Jelinek + + * 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 + + * signal/signal.h: sighold, sigrelse, sigignore, sigset were + available in XPG4.2. + +2003-08-27 Phil Knirsch + Jakub Jelinek + + * 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 + + * 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 + . + Add information about Croatian. + Ukrainian is like Russian, reported by Andy Rysin . + Remove remark about continuation lines that is not true for PO files. + Fix formula for Slovenian, reported by Roman Maurer + . + +2003-08-27 Ulrich Drepper + + * 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 + + * inet/inet_mkadr.c (inet_makeaddr): Optimize. + +2003-08-27 Ulrich Drepper + + * include/stdio.h: Add declarations for __builtin_fwrite and + __builtin_fwrite_unlocked. + +2003-08-27 Jakub Jelinek + + * 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 + + * 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 + + * sysdeps/powerpc/powerpc64/elf/Makefile: New file. + +2003-08-26 Jakub Jelinek + + * 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 + + * 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 + + * libio/oldfileops.c (_IO_old_file_init): Initialize _mode field + if the object size is large enough. + +2003-08-25 Jakub Jelinek + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/posix_fadvise64.c: Cast arguments of + __LONG_LONG_PAIR to long. + +2003-08-25 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_ERRVAL): Define. + (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise. + +2003-08-18 Alfred M. Szmidt + + * sysdeps/generic/bits/libc-lock.h (__libc_cleanup_pop): Redefine + and use __libc_cleanup_region_end instead. + +2003-08-25 Ulrich Drepper + + * elf/ldconfig.c (search_dir): Revert patch of 2003-7-21. + +2003-08-22 Ulrich Drepper + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/shm_open.c (shm_open): Fold EISDIR error + into EINVAL. + +2003-08-18 H.J. Lu + + * sysdeps/ia64/dl-machine.h (elf_machine_rela): Use _dl_reloc_bad_type. + (elf_machine_lazy_rel): Likewise. + +2003-08-18 Art Haas + + * malloc/malloc.h: Remove unneeded ';' where closing the C++ + extern block. + +2003-08-18 Ulrich Drepper + + * 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 + Andreas Jaeger + + * sysdeps/x86_64/bits/byteswap.h: New file. + +2003-08-17 Andreas Jaeger + + * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo. + +2003-08-16 Jakub Jelinek + + * 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 + + * 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 + + * sysdeps/powerpc/powerpc64/elf/start.S: Add a nop after + __libc_start_main branch. + +2003-08-16 Jakub Jelinek , + Andreas Jaeger + + * 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 + + * sysdeps/generic/posix_fadvise.c (posix_fadvise): Adjust prototype. + * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise. + +2003-08-15 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 . + +2003-08-13 Ulrich Drepper + + * 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 + + * 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 + + * assert/assert.h: Use __builtin_expect in assert and + assert_perror definitions if possible. + +2003-08-07 Jakub Jelinek + + * 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 + + * elf/ldconfig.c (main): Append SLIBDIR and LIBDIR to + config_file directories instead of prepending. + +2003-08-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_CLONE_STOPPED. + +2003-08-01 Ulrich Drepper + + * sysdeps/generic/bits/libc-lock.h + (__libc_cleanup_push,__libc_cleanup_pop): Define even here. + +2003-08-01 Roland McGrath + + * sysdeps/mach/hurd/getdents.c: Just use sysdeps/generic/getdents.c. + +2003-07-31 Jakub Jelinek + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * elf/dl-support.c (_dl_hwcap): Add nocommon attribute. + +2003-07-29 Roland McGrath + + * elf/Makefile (tests) [$(build-shared) = yes]: + Depend on $(test-modules). + * dlfcn/Makefile: Likewise. + +2003-07-28 Roland McGrath + + * 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 + before . + +2003-07-27 Ulrich Drepper + + * 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 + + * sysdeps/unix/sysv/linux/init-first.c: Mark init as used. + +2003-07-25 Jakub Jelinek + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * elf/dl-support.c (_dl_hwcap): New variable. + (_dl_aux_init): Initialize GL(dl_hwcap) for static binaries. + + * sysdeps/i386/fpu/fclrexcpt.c: Include , + and . + (__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 + + * 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 + + * elf/ldconfig.c (main): Issue a fatal error if relative path + is used to build cache. + +2003-07-22 Ulrich Drepper + + * elf/readlib.c (process_file): Avoid possible overflow in assignment. + +2003-07-21 Art Haas + + * manual/charset.texi (Converting a Character): Fix example code so a + valid pointer is returned. + +2003-07-22 Andreas Jaeger + + * 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 + + * 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 + + * 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 + + * elf/ldconfig.c (search_dir): Treat symlink as regular file + if it won't point to itself. + +2003-07-20 Ulrich Drepper + + * sysdeps/ia64/hp-timing.h (REPEAT_READ): Cast to long int not to int. + +2003-07-20 Andreas Jaeger + + * 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 + + * 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 + Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/bits/shm.h (SHMLBA): Define to + 256K, remove unneeded declaration of __getpagesize. + +2003-07-16 Andreas Schwab + + * sysdeps/unix/sysv/linux/futimes.c: Include . + +2003-07-15 Ulrich Drepper + + * io/test-utime.c (main): Make test yet more robust. + +2003-07-14 Ulrich Drepper + + 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 . + +2003-07-15 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S (__socket): Add + cfi directives. + +2003-07-14 Franz Sirl + + * 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 + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_TGKILL for Alpha appropriately. + +2003-07-12 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/sh/socket.S: Save and restore the PR + register across CENABLE and CDISABLE. + +2003-07-11 Jakub Jelinek + + * 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 + + * 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 + + * sysdeps/powerpc/powerpc64/elf/start.S: Set section flags of + .data.rel.ro.local to "aw". + +2003-07-10 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/alpha/elf/initfini.c: Avoid .ent/.end. + +2003-07-03 Ulrich Drepper + + * configure.in: Also check for .cfi_rel_offset pseudo-op. + +2003-07-03 Jakub Jelinek + + * sysdeps/unix/sysv/linux/prof-freq.c (__profile_frequency): Fix a + typo. + +2003-07-03 Ulrich Drepper + + * 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 + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Protect new_sysinfo + decl and use with #ifdef NEED_DL_SYSINFO. + +2003-07-02 Ulrich Drepper + + * 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 + + * sysdeps/unix/sysv/linux/x86_64/sys/epoll.h: New file. + +2003-05-04 H.J. Lu + + * malloc/arena.c (arena_get2): Add atomic_write_barrier. + * malloc/thread-m.h: Include . + (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 + + * sysdeps/generic/sysdep.h: Define cfi_rel_offset and CFI_REL_OFFSET. + +2003-06-30 Richard Henderson + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/sleep.c (__sleep): Handle parameter + values which cannot be handled in one nanosleep call. + +2003-06-25 Alfred M. Szmidt + + * 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 + + * sysdeps/unix/sysv/linux/net/if_arp.h: Sync with kernel header, + fix typo. + +2003-06-26 Steven Munroe + + * 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 + + * sysdeps/unix/sysv/linux/s390/semtimedop.c (semtimedop): Add real + implementation. + +2003-06-07 Thorsten Kukuk + + * 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 + + * 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 + + * nis/nss_compat/compat-initgroups.c: Don't use our own NIS/NIS+ + functions, dlopen corresponding NSS module instead. + +2003-06-27 Jeroen Dekkers + + * 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 + + * rt/Makefile (CFLAGS-librt-cancellation.c): Define. + +2003-06-26 Roland McGrath + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/kernel-features.h: Update kernel features + for the SH architecture. + +2003-06-25 Thorsten Kukuk + + * csu/Makefile: Use CPPFLAGS to find correct linux/version.h. + +2003-06-25 Andreas Jaeger + + * stdlib/tst-strtod.c (main): Declare constant long double as + suggested by Jakub Jelinek and Andreas Schwab. + + * posix/tst-nanosleep.c: Include for nanosleep + declaration. + + * stdio-common/tst-fphex.c: Fix format string. + + * posix/transbug.c: Include for memset and strlen + declarations. + + * stdio-common/tst-sprintf.c: Include for free declaration. + + * stdlib/tst-strtod.c (main): Pass long double value. + + * test-skeleton.c: Include for nanosleep declaration. + +2003-06-25 Ulrich Drepper + + * include/time.h: Don't define CLOCK_IDFIELD_SIZE if _ISOMAC is + defined. + +2003-06-11 Jakub Jelinek + + * 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 + + * 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 . + +2003-06-19 Jakub Jelinek + + * 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 + + * 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 + + * 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 + + * elf/elf.h (PT_GNU_STACK): New macro. + +2003-06-24 Ulrich Drepper + + * 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 + + * 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 + + * sysdeps/m68k/fpu/libm-test-ulps: Update. + +2003-06-24 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/stat.h (_STAT_VER_LINUX): Avoid + redeclaration with 32-bit code. + +2003-05-19 Ed Connell + + * sysdeps/unix/sysv/linux/i386/getcontext.S (getcontext): Retain + floating point mask. + * sysdeps/i386/fpu/fegetenv.c (fegetenv): Likewise. + +2003-06-23 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela) + : Don't segfault on undefined symbols. + +2003-06-17 Paul Mackerras + + * 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 + + * posix/regcomp.c (build_word_op): Use alnum instead of alpha class. + +2003-06-17 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * locale/iso-639.def: Update from current official ISO 639. + + * math/tgmath.h (__TGMATH_UNARY_IMAG_ONLY): Removed. + +2003-06-15 Andreas Jaeger + + * 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 . + + * 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 + + * elf/rtld.c (dl_main): Use l_map_start not l_addr in Phdr + computation so that prelinking works. + +2003-06-15 Ulrich Drepper + + * 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 + + * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): + Add CFI directives. + +2003-06-15 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/Makefile: Add missing endif and + create $(objpfx). + +2003-06-14 Ulrich Drepper + + * 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 + + * 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 . + +2003-06-12 Ulrich Drepper + + * wcsmbs/wchar.h: Define wint_t in std namespace, too [PR libc/5034]. + +2003-05-29 Jim Meyering + + * time/strftime.c (my_strftime) [!defined _NL_CURRENT + && HAVE_STRFTIME]: Use underlying_strftime for %r. + Suggested by Daniel Yacob . + +2003-06-12 Steven Munroe + + * 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 + + * 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 + + * locale/programs/ld-time.c (time_output): Also copy the era format, + not only the name. + +2003-06-12 H.J. Lu + + * posix/transbug.c (run_test): Return 1 for failure. + (do_test): Compare only if run_test is successful. + +2003-06-12 Simon Josefsson + + * argp/argp.h [!__THROW]: Define if undefined. + +2003-06-12 Ulrich Drepper + + * sysdeps/unix/sysv/linux/cris/sysdep.h: Fix handling of syscalls with + more than four parameters. + Patch by Uwe Reimann . + +2003-06-12 Jakub Jelinek + + * 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 + + * Makerules ($(objpfx)stubs): Rewrite sed magic. + +2003-02-28 Isamu Hasegawa + + * 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 + + * 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 + + * 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 + + * po/zh_CN.po: Update from translation team. + +2003-06-10 Jakub Jelinek + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/i386/fpu/bits/mathinline.h (log1p, asinh, acosh, atanh, + hypot, logb): Protect with #ifdef __FAST_MATH__. + +2003-06-04 Thorsten Kukuk + + * sysdeps/i386/fpu/bits/mathinline.h (ldexpf, ldexpl): Protect with + #ifdef __FAST_MATH__. + +2003-06-03 Ulrich Drepper + + * 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 + + * 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 + + * sysdeps/i386/fpu/bits/mathinline.h (sqrt, __sqrtl, ldexp, + ldexpf, ldexpl): Only define if __FAST_MATH__. + +2003-06-02 Richard C. Bilson + + 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 + + * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_PID): Remove. + +2003-06-01 Jakub Jelinek + + * sysdeps/i386/dl-machine.h: Include . + +2003-06-01 Ulrich Drepper + + * 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 + + * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h (SA_NOCLDWAIT): Define. + +2003-05-31 Jakub Jelinek + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_plt_conflict): + New function. + (elf_machine_rela) : 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 + + * 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 + + * scripts/config.guess: Update from master copy. + * scripts/config.sub: Likewise. + +2003-05-30 Guido Guenther + + * sysdeps/mips/mips64/bsd-_setjmp.S: Include 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 + + * 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 + + * sysdeps/powerpc/powerpc32/elf/start.S: Make code compilable with + SHARED. + +2003-05-11 Andreas Schwab + + * 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 + + * malloc/malloc.h [! __GNUC__] (__const): Define if undefined. + +2003-05-26 Aldy Hernandez + + * soft-fp/soft-fp.h (FP_EX_UNDERFLOW): Define to 0. + +2003-05-28 Roland McGrath + + * 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 . + +2003-05-28 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_FUTEX_REQUEUE for >= 2.5.70. + +2003-05-22 Andreas Jaeger + + * 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 + + * sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Change SI_ASYNCNL + to -60 and define SI_TKILL. + +2003-05-21 H.J. Lu + + * math/test-fenv.c (feexcp_nomask_test): Fix comment. + (feexcp_mask_test): Likewise. + +2003-05-21 Ulrich Drepper + + * 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 + + * locale/programs/locale.c (main): Report an error if setlocale() + fails [PR libc/2254]. + +2003-05-21 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/system.c: New file. + +2003-05-21 Jakub Jelinek + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/x86_64/syscall.S: Revert last patch. + + * rt/tst-clock_nanosleep.c: Include for clock_nanosleep. + +2003-05-16 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * inet/netinet/igmp.h: Sync with Linux Kernel 2.5.69 and *BSD. + +2003-05-14 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/umount.c: New file. + +2003-05-14 Jakub Jelinek + + * elf/rtld.c (dl_main): For LD_TRACE_PRELINKING print search scope + even if no DT_NEEDED is present. + +2003-05-13 David Mosberger + + * 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 + + * 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 + + * 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 + + * io/Makefile ($(objpfx)ftwtest.out): Use absolute file names. + +2003-05-11 Ulrich Drepper + + * time/tst-strftime.c (do_test): Add tests for - flag. + +2003-05-11 Jim Meyering + + * 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 + + * sysdeps/generic/sched_setaffinity.c: Fix parameter name. + +2003-05-10 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * libio/bits/stdio.h: Sync prototypes with libio/stdio.h + (remove __THROW from possible cancellation points). + +2003-05-10 Ulrich Drepper + + * posix/sched.h (CPU_SETSIZE): Define. + +2003-05-09 Ulrich Drepper + + * 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 + + * malloc/thread-m.h: Remove special handling of thread_atfork if + HAVE_register_atfork_malloc is defined. + +2003-05-07 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/syscall.S: Add DWARF2 unwind + information. + +2003-05-06 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (__NR_semtimedop): Define + if not defined. + +2003-04-22 Roland McGrath + + * 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 + + * 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 + + * 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 + + * Makerules (do-stamp): Do $(make-target-directory). + +2003-04-07 H.J. Lu + + * sysdeps/generic/dl-fptr.c: Modify to remove the lock. + +2003-04-03 H.J. Lu + + * 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 . + (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 + + * 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 + + * sysdeps/unix/sysv/linux/semtimedop.c: New file. + + * malloc/malloc.c (mSTATs): Call ptmalloc_init if necessary. + +2003-04-29 Andreas Schwab + + * string/test-strcat.c (do_one_test): Fix attribute name. + +2003-04-30 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/sys/ucontext.h (ucontext): Make + uc_flags long for all ABIs. + +2003-04-30 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h + (DR_CONTROL_RESERVED): Use correct value for 64-bit. + Reported by Andrew Derrick Balsa . + Add bi-arch support. + +2003-04-30 Ulrich Drepper + + * malloc/malloc.c (mEMALIGn): Define alias __memalign_internal. + (__posix_memalign): Use __memalign_internal instead of memalign. + +2003-04-29 Roland McGrath + + * 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 + + * 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 + + * 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 , + 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 + + * 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 + + * 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 + + * nscd/pwdcache.c: Initialize .version element in result. + * nscd/grpcache.c: Likewise. + * nscd/pwdcache.c: Likewise. + +2003-04-27 Andreas Schwab + + * Makeconfig ($(common-objpfx)sysd-sorted): Fix for running in + subdirectory. + +2003-04-27 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/semtimedop.S: New file. + +2003-04-27 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * sysdeps/mach/hurd/tmpfile.c: Remove USE_IN_LIBIO conditionals. + +2003-04-26 Andreas Schwab + + * elf/dl-close.c (remove_slotinfo): Fix missing parens. + +2003-04-25 Ulrich Drepper + + * 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 . + +2003-04-22 Jakub Jelinek + + * 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 + + * 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 + + * elf/dl-reloc.c (_dl_allocate_static_tls): Add internal_function. + +2003-04-24 Jakub Jelinek + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/not-cancel.h (open_not_cancel): Cast + first syscall parameter to const char*. + +2003-04-19 Ulrich Drepper + + * 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 + + * 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 + + * 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 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 . + * 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 + + * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Use + INTERNAL_SYSCALL instead of INLINE_SYSCALL. + +2003-04-17 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * posix/regex.h: Include . + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/powerpc/powerpc64/strcmp.S: Convert to full 64-bit. + * sysdeps/powerpc/powerpc64/strcpy.S: Likewise. + +2003-04-15 Jakub Jelinek + + * 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 + + * 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 + + * include/atomic.h: Pretty printing. + +2003-04-14 Ulrich Drepper + + * stdio-common/vfscanf.c: Add casts to avoid warnings. + +2003-04-14 Jakub Jelinek + + * sysdeps/i386/i486/bits/atomic.h: Rename LOCK to LOCK_PREFIX. + * sysdeps/x86_64/bits/atomic.h: Likewise. + +2003-04-14 Ulrich Drepper + + * 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 + + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (ret_NOERRNO): Define. + +2003-04-14 Roland McGrath + + * 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 + + * string/strxfrm.c (STRXFRM): Terminate rulearr at correct + position. Reported by jreiser@BitWagon.com. + +2003-04-13 Ulrich Drepper + + * 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 + + * 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 + + * 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 + + * 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 + + * csu/tst-empty.c: New file. + * csu/Makefile (tests, tests-static): Add it. + +2003-04-11 Jakub Jelinek + + * 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 + + * sysdeps/alpha/fpu/bits/mathdef.h: Remove FLT_EVAL_METHOD definition. + * sysdeps/powerpc/fpu/bits/mathdef.h: Likewise. + +2003-04-08 Alexandre Oliva + + * 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 + + * elf/ldconfig.c (parse_conf): Ignore leading whitespace. Use + feof_unlocked instead of feof. + (add_dir): Ignore trailing whitespace. + +2003-04-07 Jakub Jelinek + + * posix/bug-regex4.c (main): Cap RANGE and STOP arguments to + sum of SIZE1 and SIZE2 arguments. + +2003-04-06 Ulrich Drepper + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/i386/swapcontext.S: Rewrite register + restoration as done for setcontext yesterday. + +2003-04-06 Jakub Jelinek + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * stdio-common/reg-printf.c (__register_printf_function): Calloc + instead of malloc __printf_arginfo_table and __printf_function_table. + Reported by John Reiser . + +2003-04-04 Steven Munroe + + * 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 + + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (struct flock): Adjust + for n64 abi. + +2003-04-03 Roland McGrath + + * 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 + + * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Reverse test + for atomic_compare_and_exchange_bool_acq failure. + +2003-04-03 Ulrich Drepper + + * 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 + + * 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 + + * configure.in: Check for __register_frame_info in both + -lgcc and -lgcc_eh. + * configure: Regenerated. + +2003-04-01 Roland McGrath + + * scripts/abilist.awk: Allow dots in soname suffix. + + * scripts/abilist.awk (emit): Fix bailout condition. + +2003-04-01 Jakub Jelinek + + * 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 + + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (sigevent_t): Fix a typo. + +2003-04-01 Andreas Jaeger + + * configure.in: Output as/ld as name if version is too old. + +2003-03-31 Daniel Jacobowitz + + * configure.in: Don't require an installed C library in the test + for ".set" assembler support. + +2003-03-31 Roland McGrath + + * signal/tst-sigset.c: New file. + * signal/Makefile (tests): Add it. + +2003-03-31 Ulrich Drepper + + * 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 + + * sysdeps/m68k/m68020/bits/atomic.h (atomic_increment_and_test): + Define. + (atomic_decrement_and_test): Fix test. + +2003-03-31 Jakub Jelinek + + * 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 + + * 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 + + * intl/po2test.sed: Unify the transformations for msgid and msgstr + and remove a useless s/// command. + +2003-03-27 David Mosberger + + * 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 + + * 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 + + * 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 + + * 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 + + * elf/vismain.c (do_test): Comment out tests which fail in the moment. + +2003-03-26 H.J. Lu + + * 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 + + * 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 + + * sysdeps/powerpc/bits/atomic.h [! __powerpc64__] + (__arch_atomic_decrement_if_positive_64): Fix bogus definition. + +2003-03-28 Kaz Kojima + + * 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 + + * sysdeps/unix/mips/sysdep.S: Include sys/asm.h. + +2003-03-27 Ulrich Drepper + + * Makefile: Remove libmd5crypt goal. + +2003-03-25 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Restore + special handling of relocations against local symbols. + +2003-03-27 Steven Munroe + + * 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 + + * sysdeps/ia64/fpu/libm-test-ulps: Update. + +2003-03-27 Roland McGrath + + * scripts/rpm2dynsym.sh: New file. + * Makefile (distribute): Add it. + +2003-03-27 David Mosberger + + * 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 + + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) <_SC_MONOTONIC_CLOCK>: + Return -1 instead of 0 if clock_getres failed. + +2003-03-27 Roland McGrath + + * 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 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/i386/getgroups.c: Fix the error + condition check for the return value of getgroups32. + +2003-03-26 Jakub Jelinek + + * 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 + + * abilist/librt.abilist: Add new timer interfaces for 64-bit archs. + +2003-03-25 Jiro SEKIBA + + * 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 + + * elf/dl-lookup.c (_dl_lookup_symbol): Avoid looking up protected + symbols twice. + (_dl_lookup_versioned_symbol): Likewise. + +2003-03-26 Jakub Jelinek + + * 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 + + * sysdeps/s390/s390-32/backtrace.c (__backtrace): Remove high order + bit from backtrace addresses. + +2003-03-21 Andreas Schwab + + * sysdeps/unix/sysv/linux/i386/chown.c: Don't define any versioned + __chown symbols. + +2003-03-25 Roland McGrath + + * 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 + + * 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 + + * 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 . + +2003-03-25 Alexandre Oliva + + * 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 + + * 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 + + * inet/netinet/in.h: Add IPPROTO_SCTP. + +2003-03-24 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sys/epoll.h (EPOLLET): Define. + +2003-03-24 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL): + Remove a1 from clobber list. + +2003-03-24 Ulrich Drepper + + * 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 + + * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_END_NOERRNO): Fix typo. + +2003-03-23 Ulrich Drepper + + * 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 + + * Makeconfig (+includes): Don't use $(last-includes). + +2003-03-22 Alexandre Oliva + + * sysdeps/unix/sysv/linux/configure.in: Update mips64 patterns. + * sysdeps/unix/sysv/linux/configure: Rebuilt. + +2003-03-23 Jakub Jelinek + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Regenerated. + +2003-03-21 Roland McGrath + + * 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 + + * sysdeps/mips/mips64/memcpy.S: Fix porting bug that broke + unaligned copying of 8-15 bytes. From Chris Demetriou + . 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 + + * sysdeps/arm/sysdep.h (CALL_MCOUNT): Add trailing semicolon. + +2003-03-21 Alexandre Oliva + + * 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 + + * 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 + + * sysdeps/x86_64/bits/atomic.h: Don't use matching memory constraints. + * sysdeps/i386/i486/bits/atomic.h: Likewise. + +2003-03-21 Roland McGrath + + * include/atomic.h (atomic_compare_and_exchange_bool_acq): Typo fix. + +2003-03-20 Ulrich Drepper + + * 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 + + * 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 + + * include/atomic.h (atomic_decrement_if_positive): Adjust for the + correct atomic_compare_and_exchange_acq semantics. + +2003-03-20 Alexandre Oliva + + * sysdeps/mips/ieee754.h: Remove excess #endif. + +2003-03-20 Roland McGrath + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * stdlib/strtod.c (INTERNAL): While eating trailing zeros handle + hexdigits correctly. Reported by Fred Tydeman . + * 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 + + * posix/tst-nice.c: New file. + * posix/Makefile (tests): Add tst-nice. + +2003-03-18 Roland McGrath + + * 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 + + * sysdeps/posix/sysconf.c (__sysconf): Handle _SC_MONOTONIC_CLOCK + correctly. + +2003-03-18 Steven Munroe + + * sysdeps/powerpc/powerpc64/memcpy.S: New file. + +2003-03-18 Ulrich Drepper + + * Versions.def: Add GLIBC_2.3.3 for libpthread. + +2003-03-17 Ulrich Drepper + + * sysdeps/generic/libc-start.c [!SHARED && + !LIBC_START_MAIN_AUXVEC_ARG]: Compute beginning of auxvec correctly. + +2003-03-17 Roland McGrath + + * include/ctype.h: Revert last change. + +2003-03-17 Ulrich Drepper + + * argp/tst-argp1.c: Use test-skeleton.c. + * locale/tst-C-locale.c: Likewise. + +2003-03-17 Alexandre Oliva + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/ia64/system.c: Use the generic Linux + code for most parts. + +2003-03-15 Roland McGrath + + * 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 . + (__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 + + * dlfcn/dlerror.c (dlerror): If objname is "", don't put ": " after it. + +2003-03-14 Jakub Jelinek + + * 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 + + * 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 + + * 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 + + * 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 + + * elf/dl-load.c (_dl_map_object_from_fd): Bail if no PT_LOAD phdrs + found. Reported by Alexandre Oliva . + +2003-03-13 Alexandre Oliva + + * 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 + + * elf/Makefile ($(objpfx)librtld.mk): Tweak regexp so that one-line + entries in the map file match too. + +2003-03-13 Guido Guenther + + * 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 + + * 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 + + * 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 + + * 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 . + + * 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 . + +2003-03-11 Ralf Baechle + + * 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 + + * 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 + + * 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 + + * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): If CNT == 1, + allocate space even for the trailing '/'. + Reported by John Reiser . + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Correct system + call names for pread and pwrite. + +2003-03-10 Roland McGrath + + * 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 . + * 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 + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Take 3 new args + used by NPTL on new kernels. From Paul Mackerras . + +2003-03-09 Ulrich Drepper + + * po/fi.po: Update from translation team. + * po/ca.po: Likewise. + * po/da.po: Likewise. + +2003-03-08 Ulrich Drepper + + * rt/tst-aio7.c (do_test): Change BYTES into a #define. + +2003-03-07 Ulrich Drepper + + * rt/tst-aio7.c (do_test): Give BUFF permanent extent, too. + + * sysdeps/powerpc/fpu/w_sqrt.c: Fix comment. + +2003-03-07 Roland McGrath + + * 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 + + * 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 + + * 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 + + * rt/tst-aio7.c (do_test): Cancel i/o on CB1 before it's out of scope. + +2003-03-05 Ulrich Drepper + + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Fix + reversed __builtin_expect expectation. + +2003-03-05 Roland McGrath + + * stdio-common/sscanf.c: Use prototype defn with ... syntax. + * libio/swscanf.c: Likewise. + * libio/swprintf.c: Likewise. + +2003-03-04 Roland McGrath + + * sysdeps/powerpc/powerpc64/dl-machine.h: Include . + (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 . + + * 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 . + +2003-03-04 Jakub Jelinek + + * sysdeps/ia64/fpu/libm-test-ulps: Regenerated. + +2003-03-04 Ulrich Drepper + + * 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 + Ulrich Drepper + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Fix comments. + +2003-03-03 Ulrich Drepper + + * 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 + + * 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 + + * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone + flags. + * include/sched.h: Update clone2 prototype. + +2003-03-03 Andreas Jaeger + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Add missing brace. + +2003-03-02 Roland McGrath + + * 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 + + * 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 + + * 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 . + * 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 . + + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Revert last change, + which duplicated the O_DIRECT defn. + +2003-03-01 GOTO Masanori + + * stdlib/stdlib.h: Add missing __USE_BSD enclosure for BSD derived + random functions. + +2003-03-01 Andreas Schwab + + * 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 * argp/argp.h: Fix a typo. @@ -5561,6 +12910,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 + + * 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 * sysdeps/generic/dl-tls.c (__tls_get_addr): After freeing block in diff -durpN glibc-2.3.2/config.h.in glibc-2.3.3/config.h.in --- glibc-2.3.2/config.h.in 2003-02-04 03:35:22.000000000 -0500 +++ glibc-2.3.3/config.h.in 2003-05-21 05:25:53.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 + /* */ diff -durpN glibc-2.3.2/config.make.in glibc-2.3.3/config.make.in --- glibc-2.3.2/config.make.in 2002-11-14 17:53:32.000000000 -0500 +++ glibc-2.3.3/config.make.in 2003-11-11 19:37:03.000000000 -0500 @@ -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.98 2003/11/12 00:37:03 roland Exp $. # Don't edit this file. Put configuration parameters in configparms instead. version = @VERSION@ @@ -42,6 +42,7 @@ have-z-nodelete = @libc_cv_z_nodelete@ have-z-nodlopen = @libc_cv_z_nodlopen@ have-z-initfirst = @libc_cv_z_initfirst@ have-z-combreloc = @libc_cv_z_combreloc@ +have-z-execstack = @libc_cv_z_execstack@ have-initfini = @libc_cv_have_initfini@ have-Bgroup = @libc_cv_Bgroup@ need-nopic-initfini = @nopic_initfini@ @@ -50,6 +51,10 @@ with-cvs = @with_cvs@ 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@ +have-fpie = @libc_cv_fpie@ static-libgcc = @libc_cv_gcc_static_libgcc@ @@ -82,8 +87,10 @@ force-install = @force_install@ # Build tools. CC = @CC@ +CXX = @CXX@ BUILD_CC = @BUILD_CC@ CFLAGS = @CFLAGS@ +ASFLAGS-config = @ASFLAGS_config@ AR = @AR@ RANLIB = @RANLIB@ MAKEINFO = @MAKEINFO@ @@ -100,7 +107,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_INFO = @INSTALL_INFO@ -OLD_DEBIAN_INSTALL_INFO = @OLD_DEBIAN_INSTALL_INFO@ LN_S = @LN_S@ MSGFMT = @MSGFMT@ diff -durpN glibc-2.3.2/configure glibc-2.3.3/configure --- glibc-2.3.2/configure 2003-02-26 04:20:48.000000000 -0500 +++ glibc-2.3.3/configure 2003-11-11 19:37:03.000000000 -0500 @@ -312,7 +312,7 @@ ac_includes_default="\ # include #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 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_z_execstack libc_cv_fpie 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 +773,14 @@ 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. @@ -851,6 +859,8 @@ Optional Features: --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 +909,8 @@ Some influential environment variables: CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory 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. @@ -1479,6 +1491,15 @@ 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 @@ -1822,8 +1843,33 @@ m680?0) base_machine=m68k machine=m68k/ 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,442 +2216,6 @@ echo "${ECHO_T}no, using $LN_S" >&6 fi -# We need the physical current working directory. We cannot use the -# "pwd -P" shell builtin since that's not portable. Instead we try to -# find a pwd binary. Note that assigning to the PWD environment -# variable might have some interesting side effects, so we don't do -# that. -# Extract the first word of "pwd", so it can be a program name with args. -set dummy pwd; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_PWD_P+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $PWD_P in - [\\/]* | ?:[\\/]*) - ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no" - ;; -esac -fi -PWD_P=$ac_cv_path_PWD_P - -if test -n "$PWD_P"; then - echo "$as_me:$LINENO: result: $PWD_P" >&5 -echo "${ECHO_T}$PWD_P" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -if test "$PWD_P" = no; then - { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5 -echo "$as_me: error: *** A pwd binary could not be found." >&2;} - { (exit 1); exit 1; }; } -fi - -# These programs are version sensitive. - -for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break -done - -if test -z "$CC"; then - ac_verc_fail=yes -else - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $CC" >&5 -echo $ECHO_N "checking version of $CC... $ECHO_C" >&6 - ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 3.[2-9]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 -fi -if test $ac_verc_fail = yes; then - critic_missing="$critic_missing gcc" -fi - -for ac_prog in gnumake gmake make -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_MAKE+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$MAKE"; then - ac_cv_prog_MAKE="$MAKE" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MAKE="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -MAKE=$ac_cv_prog_MAKE -if test -n "$MAKE"; then - echo "$as_me:$LINENO: result: $MAKE" >&5 -echo "${ECHO_T}$MAKE" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$MAKE" && break -done - -if test -z "$MAKE"; then - ac_verc_fail=yes -else - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $MAKE" >&5 -echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6 - ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 3.79* | 3.[89]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 -fi -if test $ac_verc_fail = yes; then - critic_missing="$critic_missing make" -fi - - - -if test -n "$critic_missing"; then -{ { echo "$as_me:$LINENO: error: -*** These critical programs are missing or too old:$critic_missing -*** Check the INSTALL file for required versions." >&5 -echo "$as_me: error: -*** These critical programs are missing or too old:$critic_missing -*** Check the INSTALL file for required versions." >&2;} - { (exit 1); exit 1; }; } -fi - - -for ac_prog in gnumsgfmt gmsgfmt msgfmt -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_MSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$MSGFMT"; then - ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MSGFMT="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -MSGFMT=$ac_cv_prog_MSGFMT -if test -n "$MSGFMT"; then - echo "$as_me:$LINENO: result: $MSGFMT" >&5 -echo "${ECHO_T}$MSGFMT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$MSGFMT" && break -done - -if test -z "$MSGFMT"; then - ac_verc_fail=yes -else - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $MSGFMT" >&5 -echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6 - ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 -fi -if test $ac_verc_fail = yes; then - MSGFMT=: aux_missing="$aux_missing msgfmt" -fi - -for ac_prog in makeinfo -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_MAKEINFO+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$MAKEINFO"; then - ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MAKEINFO="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -MAKEINFO=$ac_cv_prog_MAKEINFO -if test -n "$MAKEINFO"; then - echo "$as_me:$LINENO: result: $MAKEINFO" >&5 -echo "${ECHO_T}$MAKEINFO" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$MAKEINFO" && break -done - -if test -z "$MAKEINFO"; then - ac_verc_fail=yes -else - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5 -echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6 - ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 4.*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 -fi -if test $ac_verc_fail = yes; then - MAKEINFO=: aux_missing="$aux_missing makeinfo" -fi - -for ac_prog in sed -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$SED"; then - ac_cv_prog_SED="$SED" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_SED="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -SED=$ac_cv_prog_SED -if test -n "$SED"; then - echo "$as_me:$LINENO: result: $SED" >&5 -echo "${ECHO_T}$SED" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$SED" && break -done - -if test -z "$SED"; then - ac_verc_fail=yes -else - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $SED" >&5 -echo $ECHO_N "checking version of $SED... $ECHO_C" >&6 - ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 3.0[2-9]*|3.[1-9]*|[4-9]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 -fi -if test $ac_verc_fail = yes; then - SED=: aux_missing="$aux_missing sed" -fi - - -if test "x$with_cvs" != xyes; then - for ac_prog in autoconf -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AUTOCONF+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AUTOCONF"; then - ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AUTOCONF="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AUTOCONF=$ac_cv_prog_AUTOCONF -if test -n "$AUTOCONF"; then - echo "$as_me:$LINENO: result: $AUTOCONF" >&5 -echo "${ECHO_T}$AUTOCONF" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AUTOCONF" && break -done -test -n "$AUTOCONF" || AUTOCONF="no" - - case "x$AUTOCONF" in - xno|x|x:) AUTOCONF=no ;; - *) - echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5 -echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6 -if test "${libc_cv_autoconf_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then - libc_cv_autoconf_works=yes - else - libc_cv_autoconf_works=no - fi -fi -echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5 -echo "${ECHO_T}$libc_cv_autoconf_works" >&6 - test $libc_cv_autoconf_works = yes || AUTOCONF=no - ;; - esac - test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf" -fi - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3600,6 +3210,327 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS con 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 &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &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 \ + ''\ + '#include ' \ + '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. */ +#include +$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 +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. @@ -3801,7 +3732,7 @@ echo $ECHO_N "checking version of $AS... echo "${ECHO_T}$ac_prog_version" >&6 fi if test $ac_verc_fail = yes; then - AS=: critic_missing=t + AS=: critic_missing="$critic_missing as" fi for ac_prog in $LD @@ -3862,9 +3793,442 @@ echo $ECHO_N "checking version of $LD... echo "${ECHO_T}$ac_prog_version" >&6 fi if test $ac_verc_fail = yes; then - LD=: critic_missing=t + LD=: critic_missing="$critic_missing ld" +fi + + +# We need the physical current working directory. We cannot use the +# "pwd -P" shell builtin since that's not portable. Instead we try to +# find a pwd binary. Note that assigning to the PWD environment +# variable might have some interesting side effects, so we don't do +# that. +# Extract the first word of "pwd", so it can be a program name with args. +set dummy pwd; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_PWD_P+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PWD_P in + [\\/]* | ?:[\\/]*) + ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no" + ;; +esac +fi +PWD_P=$ac_cv_path_PWD_P + +if test -n "$PWD_P"; then + echo "$as_me:$LINENO: result: $PWD_P" >&5 +echo "${ECHO_T}$PWD_P" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$PWD_P" = no; then + { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5 +echo "$as_me: error: *** A pwd binary could not be found." >&2;} + { (exit 1); exit 1; }; } +fi + +# These programs are version sensitive. + +for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break +done + +if test -z "$CC"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $CC" >&5 +echo $ECHO_N "checking version of $CC... $ECHO_C" >&6 + ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 3.[2-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + critic_missing="$critic_missing gcc" +fi + +for ac_prog in gnumake gmake make +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_MAKE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MAKE"; then + ac_cv_prog_MAKE="$MAKE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MAKE="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +MAKE=$ac_cv_prog_MAKE +if test -n "$MAKE"; then + echo "$as_me:$LINENO: result: $MAKE" >&5 +echo "${ECHO_T}$MAKE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi + test -n "$MAKE" && break +done + +if test -z "$MAKE"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $MAKE" >&5 +echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6 + ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 3.79* | 3.[89]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + critic_missing="$critic_missing make" +fi + + +for ac_prog in gnumsgfmt gmsgfmt msgfmt +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MSGFMT"; then + ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MSGFMT="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +MSGFMT=$ac_cv_prog_MSGFMT +if test -n "$MSGFMT"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$MSGFMT" && break +done + +if test -z "$MSGFMT"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $MSGFMT" >&5 +echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6 + ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + MSGFMT=: aux_missing="$aux_missing msgfmt" +fi + +for ac_prog in makeinfo +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_MAKEINFO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MAKEINFO"; then + ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MAKEINFO="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +MAKEINFO=$ac_cv_prog_MAKEINFO +if test -n "$MAKEINFO"; then + echo "$as_me:$LINENO: result: $MAKEINFO" >&5 +echo "${ECHO_T}$MAKEINFO" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$MAKEINFO" && break +done + +if test -z "$MAKEINFO"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5 +echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6 + ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 4.*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + MAKEINFO=: aux_missing="$aux_missing makeinfo" +fi + +for ac_prog in sed +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$SED"; then + ac_cv_prog_SED="$SED" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_SED="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +SED=$ac_cv_prog_SED +if test -n "$SED"; then + echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$SED" && break +done + +if test -z "$SED"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $SED" >&5 +echo $ECHO_N "checking version of $SED... $ECHO_C" >&6 + ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 3.0[2-9]*|3.[1-9]*|[4-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + SED=: aux_missing="$aux_missing sed" +fi + + +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 @@ -3899,7 +4263,7 @@ int a; 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 @@ -4189,41 +4553,6 @@ else 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 @@ -4357,7 +4686,12 @@ else #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 +4714,12 @@ else .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 +4745,12 @@ for ac_globl in .globl .global .EXPORT; ${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 +4785,10 @@ EOF # (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 +4820,12 @@ for ac_try_prefix in '@' '%' '#'; do 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 +4861,7 @@ ${libc_cv_dot_text} _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 +4890,11 @@ VERS_2 { 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 +4947,7 @@ else .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 +4976,7 @@ else .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 +5008,7 @@ foo: .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 +5043,12 @@ else 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 +5080,12 @@ else 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 +5117,12 @@ else 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 +5148,7 @@ if test "${libc_cv_have_sdata_section+se 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 +5176,7 @@ int __start (void) { return 0; } 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 +5212,8 @@ else cat > conftest.c <&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4873,7 +5240,8 @@ else cat > conftest.c <&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4900,7 +5268,8 @@ else cat > conftest.c <&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4927,7 +5296,9 @@ else cat > conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4944,6 +5315,44 @@ echo "$as_me:$LINENO: result: $libc_cv_B 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 <&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 +5363,8 @@ extern int bar (int); 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 @@ -4981,8 +5391,63 @@ echo "${ECHO_T}$libc_cv_z_combreloc" >&6 _ACEOF fi + + + echo "$as_me:$LINENO: checking for -z execstack" >&5 +echo $ECHO_N "checking for -z execstack... $ECHO_C" >&6 +if test "${libc_cv_z_execstack+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_z_execstack=yes + else + libc_cv_z_execstack=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_z_execstack" >&5 +echo "${ECHO_T}$libc_cv_z_execstack" >&6 + + + echo "$as_me:$LINENO: checking for -fpie" >&5 +echo $ECHO_N "checking for -fpie... $ECHO_C" >&6 +if test "${libc_cv_fpie+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_fpie=yes + else + libc_cv_fpie=no + fi + rm -f conftest* fi +echo "$as_me:$LINENO: result: $libc_cv_fpie" >&5 +echo "${ECHO_T}$libc_cv_fpie" >&6 + +fi if test $elf != yes; then echo "$as_me:$LINENO: checking for .init and .fini sections" >&5 @@ -5128,7 +5593,7 @@ if test "${libc_cv_asm_underscores+set}" echo $ECHO_N "(cached) $ECHO_C" >&6 else cat > conftest.$ac_ext </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 +5675,12 @@ foo: ${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 +5721,7 @@ else cat > conftest.s <&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5272,6 +5747,92 @@ _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 <&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 <&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 +5843,7 @@ _start () {} 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 +5873,7 @@ _start () {} 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 @@ -5393,7 +5954,7 @@ if test "${libc_cv_gcc_dwarf2_unwind_inf echo $ECHO_N "(cached) $ECHO_C" >&6 else cat > conftest.c <&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 +6008,8 @@ 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 -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 +6050,14 @@ if test "${libc_cv_gcc_builtin_expect+se echo $ECHO_N "(cached) $ECHO_C" >&6 else cat > conftest.c <&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -5555,13 +6112,47 @@ _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 <&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -5604,7 +6195,7 @@ else 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 +6228,7 @@ else 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=$? @@ -6335,8 +6926,8 @@ for dir in $sysnames; do *) 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 +7052,7 @@ fi + if test $gnu_ld = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GNU_LD 1 @@ -7176,6 +7768,7 @@ 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 @@ -7194,13 +7787,7 @@ s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t 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 +7796,9 @@ 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 @@ -7216,6 +7806,12 @@ 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 @@ -7226,7 +7822,6 @@ s,@libc_cv_have_ksh@,$libc_cv_have_ksh,; 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 @@ -7235,8 +7830,12 @@ s,@libc_cv_z_nodelete@,$libc_cv_z_nodele 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_z_execstack@,$libc_cv_z_execstack,;t t +s,@libc_cv_fpie@,$libc_cv_fpie,;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 +7850,7 @@ s,@libc_cv_slibdir@,$libc_cv_slibdir,;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 diff -durpN glibc-2.3.2/configure.in glibc-2.3.3/configure.in --- glibc-2.3.2/configure.in 2003-02-25 19:46:31.000000000 -0500 +++ glibc-2.3.3/configure.in 2003-11-11 19:37:03.000000000 -0500 @@ -113,6 +113,14 @@ AC_ARG_ENABLE([sanity-checks], [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 @@ m680?0) base_machine=m68k machine=m68k/ 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 @@ if test "$INSTALL" = "${srcdir}/scripts/ 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 @@ AC_CHECK_PROG_VER(MAKE, gnumake gmake ma [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 @@ AC_CHECK_PROG_VER(SED, sed, --version, [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 @@ int a; 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 @@ -818,33 +850,6 @@ if test "$PERL" != no && fi AC_PATH_PROG(INSTALL_INFO, install-info, no, $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin) -if test "$INSTALL_INFO" != "no"; then -AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info, - [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 >&AS_MESSAGE_LOG_FD 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]) -if test -n "$testfailed" -then AC_MSG_WARN([install-info errored out, check config.log]) -fi -OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info -fi -AC_SUBST(OLD_DEBIAN_INSTALL_INFO) - AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin) AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl @@ -889,7 +894,7 @@ cat > conftest.S </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 +911,7 @@ cat > conftest.s </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 +930,7 @@ for ac_globl in .globl .global .EXPORT; ${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 +953,10 @@ EOF # (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 +979,7 @@ for ac_try_prefix in '@' '%' '#'; do 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 +1002,7 @@ ${libc_cv_dot_text} _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 +1024,11 @@ VERS_2 { 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 +1067,7 @@ if test $elf = yes; then .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 +1082,7 @@ EOF .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 +1100,7 @@ foo: .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 +1118,7 @@ EOF 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 +1141,7 @@ EOF 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 +1166,7 @@ changequote([,])dnl 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 +1183,7 @@ EOF 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 +1202,7 @@ int __start (void) { return 0; } 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 +1224,8 @@ EOF cat > conftest.c <&AS_MESSAGE_LOG_FD]) then @@ -1233,7 +1241,8 @@ EOF cat > conftest.c <&AS_MESSAGE_LOG_FD]) then @@ -1249,7 +1258,8 @@ EOF cat > conftest.c <&AS_MESSAGE_LOG_FD]) then @@ -1265,7 +1275,9 @@ EOF cat > conftest.c <&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 +1286,28 @@ EOF 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 <&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 <&AS_MESSAGE_LOG_FD]) then @@ -1302,8 +1337,40 @@ dnl look for a section named .rel.dyn. if test "$libc_cv_z_combreloc" = yes; then AC_DEFINE(HAVE_Z_COMBRELOC) fi + AC_SUBST(libc_cv_z_combreloc) + + AC_CACHE_CHECK(for -z execstack, + libc_cv_z_execstack, [dnl + cat > conftest.c <&AS_MESSAGE_LOG_FD]) + then + libc_cv_z_execstack=yes + else + libc_cv_z_execstack=no + fi + rm -f conftest*]) + AC_SUBST(libc_cv_z_execstack) + + AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl + cat > conftest.c <&AS_MESSAGE_LOG_FD]) + then + libc_cv_fpie=yes + else + libc_cv_fpie=no + fi + rm -f conftest*]) + + AC_SUBST(libc_cv_fpie) fi -AC_SUBST(libc_cv_z_combreloc) if test $elf != yes; then AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini, @@ -1345,8 +1412,8 @@ dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-F AC_DEFUN(AC_CHECK_ASM_UNDERSCORE, [cat > conftest.$ac_ext </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 +1485,7 @@ foo: ${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 +1514,7 @@ case "${host_cpu}-${host_os}" in cat > conftest.s <&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 +1529,58 @@ EOF ;; esac +AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl +cat > conftest.s <&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 <&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 +1588,7 @@ int __eh_pc; __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 +1608,7 @@ int __eh_pc; __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 +1635,7 @@ fi AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info, [cat > conftest.c <&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 +1679,8 @@ else 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 +1701,7 @@ esac dnl Check whether compiler understands __builtin_expect. AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect, [cat > conftest.c <&AS_MESSAGE_LOG_FD]); then libc_cv_gcc_builtin_expect=yes else @@ -1625,11 +1739,31 @@ if test "$libc_cv_gcc_builtin_memset" = 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 <&AS_MESSAGE_LOG_FD]); then libc_cv_gcc_subtract_local_labels=yes else @@ -1660,7 +1794,7 @@ if test "x$use__thread" != xno; then [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 +1813,7 @@ if test "$libc_cv_gcc___thread" = yes; t 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 +1866,7 @@ for dir in $sysnames; do *) 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 +1967,7 @@ AC_SUBST(libc_cv_slibdir) 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) diff -durpN glibc-2.3.2/csu/.cvsignore glibc-2.3.3/csu/.cvsignore --- glibc-2.3.2/csu/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/csu/.cvsignore 1997-03-19 00:27:16.000000000 -0500 @@ -0,0 +1,7 @@ +*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz +=* +TODO COPYING* AUTHORS copyr-* copying.* +glibc-* +distinfo +specs diff -durpN glibc-2.3.2/csu/elf-init.c glibc-2.3.3/csu/elf-init.c --- glibc-2.3.2/csu/elf-init.c 2002-12-31 18:41:32.000000000 -0500 +++ glibc-2.3.3/csu/elf-init.c 2003-05-21 15:37:48.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 diff -durpN glibc-2.3.2/csu/Makefile glibc-2.3.3/csu/Makefile --- glibc-2.3.2/csu/Makefile 2002-12-31 17:24:37.000000000 -0500 +++ glibc-2.3.3/csu/Makefile 2003-09-25 16:29:39.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 @@ elide-routines.os = libc-tls 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 @@ ifeq ($(have-initfini),yes) 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 @@ generated += $(crtstuff:=.S) initfini.s 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 @@ ifeq (yes,$(elf)) $(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 @@ else $(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 @@ $(addprefix $(objpfx),$(sort g$(start-in # 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 @@ $(objpfx)version-info.h: $(common-objpfx $(make-target-directory) (case $(config-os) in \ linux*) version=`(echo -e "#include \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 \ @@ -230,6 +239,6 @@ $(objpfx)version-info.h: $(common-objpfx if test -n "$$files"; then \ echo "\"Available extensions:\\n\""; \ sed -e '/^#/d' -e 's/^[[:space:]]*/ /' \ - -e 's/\(^.*$$\)/\"\1\\n\"/' $$files; \ + -e 's/^\(.*\)$$/\"\1\\n\"/' $$files; \ fi) > $@T mv -f $@T $@ diff -durpN glibc-2.3.2/csu/tst-atomic.c glibc-2.3.3/csu/tst-atomic.c --- glibc-2.3.2/csu/tst-atomic.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/csu/tst-atomic.c 2003-05-10 01:26:12.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 , 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 +#include + +#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" diff -durpN glibc-2.3.2/csu/tst-atomic-long.c glibc-2.3.3/csu/tst-atomic-long.c --- glibc-2.3.2/csu/tst-atomic-long.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 , 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 + +#define atomic_t long +#if __WORDSIZE == 64 +# define TEST_ATOMIC64 1 +#endif + +#include "tst-atomic.c" diff -durpN glibc-2.3.2/csu/tst-empty.c glibc-2.3.3/csu/tst-empty.c --- glibc-2.3.2/csu/tst-empty.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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; +} diff -durpN glibc-2.3.2/ctype/.cvsignore glibc-2.3.3/ctype/.cvsignore --- glibc-2.3.2/ctype/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/ctype/.cvsignore 1996-05-14 14:13:53.000000000 -0400 @@ -0,0 +1,6 @@ +*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz +=* +TODO COPYING* AUTHORS copyr-* copying.* +glibc-* +distinfo diff -durpN glibc-2.3.2/.cvsignore glibc-2.3.3/.cvsignore --- glibc-2.3.2/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/.cvsignore 2002-12-06 06:07:54.000000000 -0500 @@ -0,0 +1,27 @@ +*.d *.o *.so *.po *.go *.bo stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz *.bz2 +=* +TODO AUTHORS copyr-* copying.* +glibc-* + +configparms + +sun[43]* i[345]86* hp300* + +ieeetest hppa-sysdeps regex + +gpl2lgpl.sed +distinfo +distinfo + +test-include +analysis +docs +releases + +libc.prj .libc.prcs_aux +libc.proj .snprj + +TODO.html + +autom4te*.cache diff -durpN glibc-2.3.2/dirent/.cvsignore glibc-2.3.3/dirent/.cvsignore --- glibc-2.3.2/dirent/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/dirent/.cvsignore 1996-05-14 14:14:02.000000000 -0400 @@ -0,0 +1,6 @@ +*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz +=* +TODO COPYING* AUTHORS copyr-* copying.* +glibc-* +distinfo diff -durpN glibc-2.3.2/dirent/dirent.h glibc-2.3.3/dirent/dirent.h --- glibc-2.3.2/dirent/dirent.h 2001-07-07 15:20:52.000000000 -0400 +++ glibc-2.3.3/dirent/dirent.h 2003-09-14 16:21:43.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 @@ enum 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 @@ extern int closedir (DIR *__dirp) __THRO 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 @@ extern int __REDIRECT (readdir_r, # 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 dirfd (DIR *__dirp) __THROW; 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 __REDIRECT (scandir, 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 @@ extern int alphasort (__const void *__e1 # 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 @@ extern int versionsort (__const void *__ # 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 diff -durpN glibc-2.3.2/dirent/Makefile glibc-2.3.3/dirent/Makefile --- glibc-2.3.2/dirent/Makefile 2002-06-22 01:46:07.000000000 -0400 +++ glibc-2.3.3/dirent/Makefile 2003-09-16 01:47: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 @@ distribute := dirstream.h 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 diff -durpN glibc-2.3.2/dirent/scandir.c glibc-2.3.3/dirent/scandir.c --- glibc-2.3.2/dirent/scandir.c 2002-10-14 13:41:01.000000000 -0400 +++ glibc-2.3.3/dirent/scandir.c 2003-09-16 21:19:03.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 #include #include +#include #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 @@ SCANDIR (dir, namelist, select, cmp) { 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 @@ SCANDIR (dir, namelist, select, cmp) 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; + { + int use_it = select == NULL; - /* Ignore errors from select or readdir */ - __set_errno (0); + 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 (__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; - } + if (use_it) + { + DIRENT_TYPE *vnew; + size_t dsize; - dsize = &d->d_name[_D_ALLOC_NAMLEN (d)] - (char *) d; - vnew = (DIRENT_TYPE *) malloc (dsize); - if (vnew == NULL) - break; + /* Ignore errors from select or readdir */ + __set_errno (0); - v[i++] = (DIRENT_TYPE *) memcpy (vnew, d, dsize); - } + 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[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; } diff -durpN glibc-2.3.2/dlfcn/default.c glibc-2.3.3/dlfcn/default.c --- glibc-2.3.2/dlfcn/default.c 2000-11-15 21:12:28.000000000 -0500 +++ glibc-2.3.3/dlfcn/default.c 2003-08-14 23:57:53.000000000 -0400 @@ -36,7 +36,7 @@ main (int argc, char *argv[]) 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 @@ main (int argc, char *argv[]) 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; } diff -durpN glibc-2.3.2/dlfcn/defaultmod1.c glibc-2.3.3/dlfcn/defaultmod1.c --- glibc-2.3.2/dlfcn/defaultmod1.c 2000-11-28 18:56:29.000000000 -0500 +++ glibc-2.3.3/dlfcn/defaultmod1.c 2003-08-14 23:58:07.000000000 -0400 @@ -9,9 +9,9 @@ found_in_mod1 (void) } -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 @@ test_in_mod1 (void *mainp) 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; diff -durpN glibc-2.3.2/dlfcn/defaultmod2.c glibc-2.3.3/dlfcn/defaultmod2.c --- glibc-2.3.2/dlfcn/defaultmod2.c 2000-11-28 18:57:02.000000000 -0500 +++ glibc-2.3.3/dlfcn/defaultmod2.c 2003-08-14 23:58:16.000000000 -0400 @@ -16,9 +16,9 @@ found_in_mod2 (void) } -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 @@ test_in_mod2 (void *mainp) 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; diff -durpN glibc-2.3.2/dlfcn/dladdr1.c glibc-2.3.3/dlfcn/dladdr1.c --- glibc-2.3.2/dlfcn/dladdr1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 + +int +dladdr1 (const void *address, Dl_info *info, void **extra, int flags) +{ + switch (flags) + { + default: /* Make this an error? */ + case 0: + return _dl_addr (address, info, NULL, NULL); + case RTLD_DL_SYMENT: + return _dl_addr (address, info, NULL, (const ElfW(Sym) **) extra); + case RTLD_DL_LINKMAP: + return _dl_addr (address, info, (struct link_map **) extra, NULL); + } +} diff -durpN glibc-2.3.2/dlfcn/dladdr.c glibc-2.3.3/dlfcn/dladdr.c --- glibc-2.3.2/dlfcn/dladdr.c 2001-07-07 15:20:52.000000000 -0400 +++ glibc-2.3.3/dlfcn/dladdr.c 2003-03-10 04:12:11.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); } diff -durpN glibc-2.3.2/dlfcn/dlerror.c glibc-2.3.3/dlfcn/dlerror.c --- glibc-2.3.2/dlfcn/dlerror.c 2002-11-19 01:51:37.000000000 -0500 +++ glibc-2.3.3/dlfcn/dlerror.c 2003-07-31 15:26:03.000000000 -0400 @@ -1,5 +1,5 @@ /* Return error detail for failing 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 @@ static struct dl_action_result *static_b /* 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 @@ dlerror (void) 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 @@ dlerror (void) 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 @@ int 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. */ diff -durpN glibc-2.3.2/dlfcn/dlfcn.h glibc-2.3.3/dlfcn/dlfcn.h --- glibc-2.3.2/dlfcn/dlfcn.h 2001-10-26 19:58:28.000000000 -0400 +++ glibc-2.3.3/dlfcn/dlfcn.h 2003-07-15 02:48:45.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 +#define __need_size_t +#include /* Collect various system dependent definitions and declarations. */ #include @@ -83,7 +85,74 @@ typedef struct /* Fill in *INFO with the following information about ADDRESS. Returns 0 iff no shared object's segments contain that address. */ extern int dladdr (__const void *__address, Dl_info *__info) __THROW; -#endif + +/* Same as `dladdr', but additionally sets *EXTRA_INFO according to FLAGS. */ +extern int dladdr1 (__const void *__address, Dl_info *__info, + void **__extra_info, int __flags) __THROW; + +/* These are the possible values for the FLAGS argument to `dladdr1'. + This indicates what extra information is stored at *EXTRA_INFO. + It may also be zero, in which case the EXTRA_INFO argument is not used. */ +enum + { + /* Matching symbol table entry (const ElfNN_Sym *). */ + RTLD_DL_SYMENT = 1, + + /* The object containing the address (struct link_map *). */ + RTLD_DL_LINKMAP = 2 + }; + + +/* Get information about the shared object HANDLE refers to. + REQUEST is from among the values below, and determines the use of ARG. + + On success, returns zero. On failure, returns -1 and records an error + message to be fetched with `dlerror'. */ +extern int dlinfo (void *__restrict __handle, + int __request, void *__restrict __arg); + +/* These are the possible values for the REQUEST argument to `dlinfo'. */ +enum + { + /* Treat ARG as `struct link_map **'; + store the `struct link_map *' for HANDLE there. */ + RTLD_DI_LINKMAP = 2, + + /* Treat ARG as `Dl_serinfo *' (see below), and fill in to describe the + directories that will be searched for dependencies of this object. + RTLD_DI_SERINFOSIZE fills in just the `dls_cnt' and `dls_size' + entries to indicate the size of the buffer that must be passed to + RTLD_DI_SERINFO to fill in the full information. */ + RTLD_DI_SERINFO = 4, + RTLD_DI_SERINFOSIZE = 5, + + /* Treat ARG as `char *', and store there the directory name used to + expand $ORIGIN in this shared object's dependency file names. */ + RTLD_DI_ORIGIN = 6, + + RTLD_DI_LMID = 1, /* Unsupported, defined by Solaris. */ + RTLD_DI_CONFIGADDR = 3 /* Unsupported, defined by Solaris. */ + }; + + +/* This is the type of elements in `Dl_serinfo', below. + The `dls_name' member points to space in the buffer passed to `dlinfo'. */ +typedef struct +{ + char *dls_name; /* Name of library search path directory. */ + unsigned int dls_flags; /* Indicates where this directory came from. */ +} Dl_serpath; + +/* This is the structure that must be passed (by reference) to `dlinfo' for + the RTLD_DI_SERINFO and RTLD_DI_SERINFOSIZE requests. */ +typedef struct +{ + size_t dls_size; /* Size in bytes of the whole buffer. */ + unsigned int dls_cnt; /* Number of elements in `dls_serpath'. */ + Dl_serpath dls_serpath[1]; /* Actually longer, dls_cnt elements. */ +} Dl_serinfo; +#endif /* __USE_GNU */ + __END_DECLS diff -durpN glibc-2.3.2/dlfcn/dlinfo.c glibc-2.3.3/dlfcn/dlinfo.c --- glibc-2.3.2/dlfcn/dlinfo.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 +#include +#include +#include + +struct dlinfo_args +{ + ElfW(Addr) caller; + void *handle; + int request; + void *arg; +}; + +static void +dlinfo_doit (void *argsblock) +{ + struct dlinfo_args *const args = argsblock; + struct link_map *l = args->handle; + +#if 0 + if (args->handle == RTLD_SELF) + { + + /* Find the highest-addressed object that CALLER is not below. */ + for (l = GL(dl_loaded); l != NULL; l = l->l_next) + if (caller >= l->l_map_start && caller < l->l_map_end) + /* There must be exactly one DSO for the range of the virtual + memory. Otherwise something is really broken. */ + break; + + if (l == NULL) + _dl_signal_error (0, NULL, NULL, N_("\ +RTLD_SELF used in code not dynamically loaded")); + } +#endif + + switch (args->request) + { + case RTLD_DI_LMID: + case RTLD_DI_CONFIGADDR: + default: + _dl_signal_error (0, NULL, NULL, N_("unsupported dlinfo request")); + break; + + case RTLD_DI_LINKMAP: + *(struct link_map **) args->arg = l; + break; + + case RTLD_DI_SERINFO: + _dl_rtld_di_serinfo (l, args->arg, false); + break; + case RTLD_DI_SERINFOSIZE: + _dl_rtld_di_serinfo (l, args->arg, true); + break; + + case RTLD_DI_ORIGIN: + strcpy (args->arg, l->l_origin); + break; + } +} + +int +dlinfo (void *handle, int request, void *arg) +{ + struct dlinfo_args args = { (ElfW(Addr)) RETURN_ADDRESS (0), + handle, request, arg }; + return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0; +} diff -durpN glibc-2.3.2/dlfcn/dlopen.c glibc-2.3.3/dlfcn/dlopen.c --- glibc-2.3.2/dlfcn/dlopen.c 2001-07-07 15:20:52.000000000 -0400 +++ glibc-2.3.3/dlfcn/dlopen.c 2003-09-19 16:40:11.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 @@ __dlopen_check (const char *file, int mo } #include versioned_symbol (libdl, __dlopen_check, dlopen, GLIBC_2_1); +static_link_warning (dlopen) diff -durpN glibc-2.3.2/dlfcn/eval.c glibc-2.3.3/dlfcn/eval.c --- glibc-2.3.2/dlfcn/eval.c 2001-07-07 15:20:52.000000000 -0400 +++ glibc-2.3.3/dlfcn/eval.c 2003-07-31 15:18:14.000000000 -0400 @@ -27,7 +27,7 @@ #include #include -static void *funcall (char **stringp); +static void *funcall (char **stringp) __attribute_noinline__; static void *eval (char **stringp); diff -durpN glibc-2.3.2/dlfcn/Makefile glibc-2.3.3/dlfcn/Makefile --- glibc-2.3.2/dlfcn/Makefile 2003-02-25 19:46:32.000000000 -0500 +++ glibc-2.3.3/dlfcn/Makefile 2003-07-29 04:36:08.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 @@ libdl-shared-only-routines += eval 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 @@ modules-names = glreflib1 glreflib2 fail 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 @@ include ../Rules 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)failtest.out: $(objpfx)failtest $(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 diff -durpN glibc-2.3.2/dlfcn/tst-dlinfo.c glibc-2.3.3/dlfcn/tst-dlinfo.c --- glibc-2.3.2/dlfcn/tst-dlinfo.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 +#include +#include +#include + +#define TEST_FUNCTION do_test () + +static int +do_test (void) +{ + int status = 0; + + void *handle = dlopen ("glreflib1.so", RTLD_NOW); + if (handle == NULL) + error (EXIT_FAILURE, 0, "cannot load: glreflib1.so: %s", dlerror ()); + +#define TRY(req, arg) \ + if (dlinfo (handle, req, arg) != 0) \ + { \ + printf ("dlinfo failed for %s: %s\n", #req, dlerror ()); \ + status = 1; \ + } \ + else + + struct link_map *l; + TRY (RTLD_DI_LINKMAP, &l) + { + if (l != handle) + { + printf ("bogus link_map? %p != %p\n", l, handle); + status = 1; + } + } + + char origin[8192]; /* >= PATH_MAX, in theory */ + TRY (RTLD_DI_ORIGIN, origin) + { + printf ("origin: %s\n", origin); + } + + Dl_serinfo counts; + TRY (RTLD_DI_SERINFOSIZE, &counts) + { + Dl_serinfo *buf = alloca (counts.dls_size); + buf->dls_cnt = counts.dls_cnt; + buf->dls_size = counts.dls_size; + printf ("%u library directories\n", buf->dls_cnt); + TRY (RTLD_DI_SERINFO, buf) + { + if (counts.dls_cnt != buf->dls_cnt) + { + printf ("??? became %u library directories\n", buf->dls_cnt); + status = 1; + } + for (unsigned int i = 0; i < buf->dls_cnt; ++i) + printf ("\t%#02x\t%s\n", + buf->dls_serpath[i].dls_flags, + buf->dls_serpath[i].dls_name); + } + } + + unsigned long int lmid = 0xdeadbeefUL; + if (dlinfo (handle, RTLD_DI_LMID, &lmid) != 0) + printf ("dlinfo refuses RTLD_DI_LMID: %s\n", dlerror ()); + else + { + printf ("dlinfo RTLD_DI_LMID worked? %#lx\n", lmid); + status = lmid == 0xdeadbeefUL; + } + +#undef TRY + dlclose (handle); + + return status; +} + +#include "../test-skeleton.c" diff -durpN glibc-2.3.2/dlfcn/Versions glibc-2.3.3/dlfcn/Versions --- glibc-2.3.2/dlfcn/Versions 1999-07-07 14:25:24.000000000 -0400 +++ glibc-2.3.3/dlfcn/Versions 2003-03-15 18:14:44.000000000 -0500 @@ -5,4 +5,7 @@ libdl { GLIBC_2.1 { dlopen; dlvsym; } + GLIBC_2.3.3 { + dladdr1; dlinfo; + } } diff -durpN glibc-2.3.2/elf/cache.c glibc-2.3.3/elf/cache.c --- glibc-2.3.2/elf/cache.c 2002-12-29 14:14:59.000000000 -0500 +++ glibc-2.3.3/elf/cache.c 2003-08-25 14:37:54.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 , 1999. @@ -86,6 +87,11 @@ print_entry (const char *lib, int flag, 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 @@ save_cache (const char *cache_name) 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 @@ save_cache (const char *cache_name) 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 @@ save_cache (const char *cache_name) ++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 @@ save_cache (const char *cache_name) ++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 @@ add_to_cache (const char *path, const ch { struct cache_entry *new_entry, *ptr, *prev; char *full_path; - int len, i; + size_t len, i; new_entry = (struct cache_entry *) xmalloc (sizeof (struct cache_entry)); diff -durpN glibc-2.3.2/elf/.cvsignore glibc-2.3.3/elf/.cvsignore --- glibc-2.3.2/elf/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/.cvsignore 1996-05-14 14:14:08.000000000 -0400 @@ -0,0 +1,6 @@ +*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz +=* +TODO COPYING* AUTHORS copyr-* copying.* +glibc-* +distinfo diff -durpN glibc-2.3.2/elf/dl-addr.c glibc-2.3.3/elf/dl-addr.c --- glibc-2.3.2/elf/dl-addr.c 2002-09-27 23:35:22.000000000 -0400 +++ glibc-2.3.3/elf/dl-addr.c 2003-03-10 04:12:11.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 @@ _dl_addr (const void *address, Dl_info * || 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. */ diff -durpN glibc-2.3.2/elf/dl-close.c glibc-2.3.3/elf/dl-close.c --- glibc-2.3.2/elf/dl-close.c 2003-01-27 15:44:03.000000000 -0500 +++ glibc-2.3.3/elf/dl-close.c 2003-04-27 02:19:09.000000000 -0400 @@ -80,7 +80,7 @@ remove_slotinfo (size_t idx, struct dtv_ 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_close (void *_map) _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 @@ _dl_close (void *_map) /* 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 @@ _dl_close (void *_map) 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 diff -durpN glibc-2.3.2/elf/dl-conflict.c glibc-2.3.3/elf/dl-conflict.c --- glibc-2.3.2/elf/dl-conflict.c 2002-10-17 13:05:51.000000000 -0400 +++ glibc-2.3.3/elf/dl-conflict.c 2003-04-06 14:55:50.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 , 2001. @@ -28,11 +28,11 @@ #include #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 @@ _dl_resolve_conflicts (struct link_map * for (; conflict < conflictend; ++conflict) elf_machine_rela (l, conflict, NULL, NULL, (void *) conflict->r_offset); } +#endif } diff -durpN glibc-2.3.2/elf/dl-iteratephdr.c glibc-2.3.3/elf/dl-iteratephdr.c --- glibc-2.3.2/elf/dl-iteratephdr.c 2002-12-06 01:42:30.000000000 -0500 +++ glibc-2.3.3/elf/dl-iteratephdr.c 2003-10-22 03:09:41.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 , 2001. @@ -23,6 +23,13 @@ #include #include +static void +cancel_handler (void *arg __attribute__((unused))) +{ + __rtld_lock_unlock_recursive (GL(dl_load_lock)); +} + +hidden_proto (__dl_iterate_phdr) int __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, size_t size, void *data), void *data) @@ -33,12 +40,10 @@ __dl_iterate_phdr (int (*callback) (stru /* 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,11 +54,43 @@ __dl_iterate_phdr (int (*callback) (stru } /* Release the lock. */ + __libc_cleanup_pop (0); __rtld_lock_unlock_recursive (GL(dl_load_lock)); return ret; } +hidden_def (__dl_iterate_phdr) #ifdef SHARED + weak_alias (__dl_iterate_phdr, dl_iterate_phdr); + +#else + +/* dl-support.c defines these and initializes them early on. */ +extern ElfW(Phdr) *_dl_phdr; +extern size_t _dl_phnum; + +int +dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, + size_t size, void *data), void *data) +{ + if (_dl_phnum != 0) + { + /* This entry describes this statically-linked program itself. */ + struct dl_phdr_info info; + int ret; + info.dlpi_addr = 0; + info.dlpi_name = ""; + info.dlpi_phdr = _dl_phdr; + info.dlpi_phnum = _dl_phnum; + ret = (*callback) (&info, sizeof (struct dl_phdr_info), data); + if (ret) + return ret; + } + + return __dl_iterate_phdr (callback, data); +} + + #endif diff -durpN glibc-2.3.2/elf/dl-libc.c glibc-2.3.3/elf/dl-libc.c --- glibc-2.3.2/elf/dl-libc.c 2002-11-19 03:38:32.000000000 -0500 +++ glibc-2.3.3/elf/dl-libc.c 2003-07-22 19:53:54.000000000 -0400 @@ -96,6 +96,50 @@ do_dlclose (void *ptr) _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 @@ __libc_dlopen_mode (const char *name, in 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 @@ __libc_dlsym (void *map, const char *nam 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) diff -durpN glibc-2.3.2/elf/dl-load.c glibc-2.3.3/elf/dl-load.c --- glibc-2.3.2/elf/dl-load.c 2003-01-16 13:14:41.000000000 -0500 +++ glibc-2.3.3/elf/dl-load.c 2003-11-24 17:54:19.000000000 -0500 @@ -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 #include #include +#include #include #include #include @@ -97,19 +98,26 @@ ELF_PREFERRED_ADDRESS_DATA; /* 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 struct r_search_path_struct rtld_ 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 @@ decompose_rpath (struct r_search_path_st 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 @@ -868,6 +904,9 @@ _dl_map_object_from_fd (const char *name } } + /* Presumed absent PT_GNU_STACK. */ + uint_fast16_t stack_flags = PF_R|PF_W|PF_X; + { /* Scan the program header table, collecting its load commands. */ struct loadcmd @@ -877,6 +916,7 @@ _dl_map_object_from_fd (const char *name 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 +962,11 @@ _dl_map_object_from_fd (const char *name 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 +990,10 @@ _dl_map_object_from_fd (const char *name 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. */ @@ -1012,8 +1061,21 @@ cannot allocate TLS data structures for errstring = N_("cannot handle TLS data"); goto call_lose; break; + + case PT_GNU_STACK: + stack_flags = ph->p_flags; + 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; @@ -1034,7 +1096,8 @@ cannot allocate TLS data structures for prefer to map such objects at; but this is only a preference, the OS can do whatever it likes. */ ElfW(Addr) mappref; - mappref = (ELF_PREFERRED_ADDRESS (loader, maplength, c->mapstart) + mappref = (ELF_PREFERRED_ADDRESS (loader, maplength, + c->mapstart & GL(dl_use_load_bias)) - MAP_BASE_ADDR (l)); /* Remember which part of the address space this object uses. */ @@ -1051,14 +1114,15 @@ cannot allocate TLS data structures for 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; } @@ -1066,7 +1130,7 @@ cannot allocate TLS data structures for { /* This object is loaded at a fixed address. This must never happen for objects loaded with dlopen(). */ - if (__builtin_expect (mode & __RTLD_DLOPEN, 0)) + if (__builtin_expect ((mode & __RTLD_OPENEXEC) == 0, 0)) { errstring = N_("cannot dynamically load executable"); goto call_lose; @@ -1118,23 +1182,18 @@ cannot allocate TLS data structures for 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 +1280,7 @@ cannot allocate TLS data structures for (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. */ @@ -1283,6 +1342,19 @@ cannot allocate TLS data structures for l->l_dev = st.st_dev; l->l_ino = st.st_ino; + if (__builtin_expect ((stack_flags &~ GL(dl_stack_flags)) & PF_X, 0)) + { + /* The stack is presently not executable, but this module + requires that it be executable. */ + errval = (*GL(dl_make_stack_executable_hook)) (); + if (errval) + { + errstring = N_("\ +cannot enable executable stack as shared object requires"); + goto call_lose; + } + } + /* When we profile the SONAME might be needed for something else but loading. Add it right away. */ if (__builtin_expect (GL(dl_profile) != NULL, 0) @@ -1728,29 +1800,9 @@ _dl_map_object (struct link_map *loader, /* 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 +1818,12 @@ _dl_map_object (struct link_map *loader, 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 +1947,86 @@ cannot create shared object descriptor") 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; +} diff -durpN glibc-2.3.2/elf/dl-lookup.c glibc-2.3.3/elf/dl-lookup.c --- glibc-2.3.2/elf/dl-lookup.c 2003-01-11 04:51:49.000000000 -0500 +++ glibc-2.3.3/elf/dl-lookup.c 2003-07-31 15:18:48.000000000 -0400 @@ -273,17 +273,30 @@ _dl_lookup_symbol (const char *undef_nam { /* It is very tricky. We need to figure out what value to return for the protected symbol. */ - struct sym_val protected_value = { NULL, NULL }; + if (type_class == ELF_RTYPE_CLASS_PLT) + { + if (current_value.s != NULL && current_value.m != undef_map) + { + current_value.s = *ref; + current_value.m = undef_map; + } + } + else + { + struct sym_val protected_value = { NULL, NULL }; - for (scope = symbol_scope; *scope; ++scope) - if (_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope, - 0, flags, NULL, ELF_RTYPE_CLASS_PLT)) - break; + 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; + if (protected_value.s != NULL + && protected_value.m != undef_map) + { + current_value.s = *ref; + current_value.m = undef_map; + } } } @@ -465,18 +478,31 @@ _dl_lookup_versioned_symbol (const char { /* It is very tricky. We need to figure out what value to return for the protected symbol. */ - struct sym_val protected_value = { NULL, NULL }; + if (type_class == ELF_RTYPE_CLASS_PLT) + { + if (current_value.s != NULL && current_value.m != undef_map) + { + current_value.s = *ref; + current_value.m = undef_map; + } + } + else + { + struct sym_val protected_value = { NULL, NULL }; - for (scope = symbol_scope; *scope; ++scope) - if (_dl_do_lookup_versioned (undef_name, hash, *ref, &protected_value, - *scope, 0, version, NULL, - ELF_RTYPE_CLASS_PLT)) - break; + 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; + if (protected_value.s != NULL + && protected_value.m != undef_map) + { + current_value.s = *ref; + current_value.m = undef_map; + } } } @@ -678,20 +704,21 @@ _dl_debug_bindings (const char *undef_na { _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, - (ElfW(Addr)) (value->s ? value->m->l_map_start : 0), + (size_t) (((ElfW(Addr)) *ref) - undef_map->l_map_start), (int) sizeof (ElfW(Addr)) * 2, - (ElfW(Addr)) (value->s ? value->s->st_value : 0)); + (size_t) (value->s ? value->m->l_map_start : 0), + (int) sizeof (ElfW(Addr)) * 2, + (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); } diff -durpN glibc-2.3.2/elf/dl-object.c glibc-2.3.3/elf/dl-object.c --- glibc-2.3.2/elf/dl-object.c 2003-01-10 03:23:58.000000000 -0500 +++ glibc-2.3.3/elf/dl-object.c 2003-04-25 05:06:56.000000000 -0400 @@ -53,6 +53,10 @@ _dl_new_object (char *realname, const ch 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' diff -durpN glibc-2.3.2/elf/dl-open.c glibc-2.3.3/elf/dl-open.c --- glibc-2.3.2/elf/dl-open.c 2003-01-27 19:47:52.000000000 -0500 +++ glibc-2.3.3/elf/dl-open.c 2003-07-31 03:34:54.000000000 -0400 @@ -303,6 +303,16 @@ dl_open_worker (void *a) } #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; diff -durpN glibc-2.3.2/elf/dl-profile.c glibc-2.3.3/elf/dl-profile.c --- glibc-2.3.2/elf/dl-profile.c 2002-08-02 17:46:57.000000000 -0400 +++ glibc-2.3.3/elf/dl-profile.c 2003-03-20 02:07:22.000000000 -0500 @@ -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 , 1997. Based on the BSD mcount implementation. @@ -34,7 +34,7 @@ #include #include #include -#include +#include /* 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 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr 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 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr data[newarc].self_pc = selfpc; data[newarc].count = 0; fromp->link = 0; - atomic_add (&narcs, 1); + atomic_increment (&narcs); break; } @@ -554,7 +554,7 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr } /* Increment the counter. */ - atomic_add (&fromp->here->count, 1); + atomic_increment (&fromp->here->count); done: ; diff -durpN glibc-2.3.2/elf/dl-reloc.c glibc-2.3.3/elf/dl-reloc.c --- glibc-2.3.2/elf/dl-reloc.c 2003-01-30 12:35:50.000000000 -0500 +++ glibc-2.3.3/elf/dl-reloc.c 2003-10-02 14:57:39.000000000 -0400 @@ -40,27 +40,85 @@ 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; + + /* 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 + size_t freebytes; + size_t n; + size_t blsize; + + 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 + size_t used; + size_t check; + + 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 +258,8 @@ _dl_relocate_object (struct link_map *l, 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" diff -durpN glibc-2.3.2/elf/dl-support.c glibc-2.3.3/elf/dl-support.c --- glibc-2.3.2/elf/dl-support.c 2003-01-30 12:31:18.000000000 -0500 +++ glibc-2.3.3/elf/dl-support.c 2003-11-24 17:54:39.000000000 -0500 @@ -41,6 +41,7 @@ size_t _dl_platformlen; int _dl_debug_mask; int _dl_lazy; +ElfW(Addr) _dl_use_load_bias = -2; int _dl_dynamic_weak; /* If nonzero print warnings about problematic situations. */ @@ -98,6 +99,10 @@ int _dl_starting_up = 1; 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 +126,25 @@ int _dl_debug_fd = STDERR_FILENO; 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)); + +/* Prevailing state of the stack, PF_X indicating it's executable. */ +ElfW(Word) _dl_stack_flags = PF_R|PF_W|PF_X; + +/* If loading a shared object requires that we make the stack executable + when it was not, we do it by calling this function. + It returns an errno code or zero on success. */ +int (*_dl_make_stack_executable_hook) (void) internal_function + = _dl_make_stack_executable; + #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 +164,10 @@ void 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 +183,41 @@ _dl_aux_init (ElfW(auxv_t) *av) 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 @@ -224,6 +275,15 @@ _dl_non_dynamic_init (void) /* Now determine the length of the platform string. */ if (_dl_platform != NULL) _dl_platformlen = strlen (_dl_platform); + + /* Scan for a program header telling us the stack is nonexecutable. */ + if (_dl_phdr != NULL) + for (uint_fast16_t i = 0; i < _dl_phnum; ++i) + if (_dl_phdr[i].p_type == PT_GNU_STACK) + { + _dl_stack_flags = _dl_phdr[i].p_flags; + break; + } } diff -durpN glibc-2.3.2/elf/dl-version.c glibc-2.3.3/elf/dl-version.c --- glibc-2.3.2/elf/dl-version.c 2002-03-11 03:31:59.000000000 -0500 +++ glibc-2.3.3/elf/dl-version.c 2003-06-11 17:25:36.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 , 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; diff -durpN glibc-2.3.2/elf/do-lookup.h glibc-2.3.3/elf/do-lookup.h --- glibc-2.3.2/elf/do-lookup.h 2002-04-13 03:32:17.000000000 -0400 +++ glibc-2.3.3/elf/do-lookup.h 2003-06-11 17:26:06.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) diff -durpN glibc-2.3.2/elf/dynamic-link.h glibc-2.3.3/elf/dynamic-link.h --- glibc-2.3.2/elf/dynamic-link.h 2003-01-30 12:35:50.000000000 -0500 +++ glibc-2.3.3/elf/dynamic-link.h 2003-07-31 02:33:50.000000000 -0400 @@ -21,20 +21,30 @@ #include #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 @@ elf_machine_lazy_rel (struct link_map *m /* 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 @@ elf_get_dynamic_info (struct link_map *l + 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; - 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; +# 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) + + 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) diff -durpN glibc-2.3.2/elf/elf.h glibc-2.3.3/elf/elf.h --- glibc-2.3.2/elf/elf.h 2003-02-25 18:40:08.000000000 -0500 +++ glibc-2.3.3/elf/elf.h 2003-06-26 15:54:29.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 @@ typedef struct #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 @@ typedef struct /* 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 @@ typedef Elf32_Addr Elf32_Conflict; #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 @@ typedef Elf32_Addr Elf32_Conflict; 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. */ diff -durpN glibc-2.3.2/elf/ldconfig.c glibc-2.3.3/elf/ldconfig.c --- glibc-2.3.2/elf/ldconfig.c 2003-01-13 03:50:11.000000000 -0500 +++ glibc-2.3.3/elf/ldconfig.c 2003-08-26 04:07:19.000000000 -0400 @@ -132,6 +132,9 @@ static const struct argp_option options[ { NULL, 0, NULL, 0, NULL, 0 } }; +#define PROCINFO_CLASS static +#include + /* Short description of program. */ static const char doc[] = N_("Configure Dynamic Linker Run Time Bindings."); @@ -342,13 +345,15 @@ add_dir (const char *line) 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 @@ search_dir (const struct dir_entry *entr 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 @@ parse_conf (const char *filename) 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 @@ main (int argc, char **argv) /* 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 @@ main (int argc, char **argv) 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 (); diff -durpN glibc-2.3.2/elf/link.h glibc-2.3.3/elf/link.h --- glibc-2.3.2/elf/link.h 2001-07-25 16:37:46.000000000 -0400 +++ glibc-2.3.3/elf/link.h 2003-09-16 01:48:04.000000000 -0400 @@ -106,7 +106,7 @@ __BEGIN_DECLS extern int dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, size_t size, void *data), - void *data) __THROW; + void *data); __END_DECLS diff -durpN glibc-2.3.2/elf/Makefile glibc-2.3.3/elf/Makefile --- glibc-2.3.2/elf/Makefile 2003-02-21 01:28:09.000000000 -0500 +++ glibc-2.3.3/elf/Makefile 2003-10-22 03:09:41.000000000 -0400 @@ -22,18 +22,18 @@ subdir := elf headers = elf.h bits/elfclass.h link.h routines = $(dl-routines) dl-open dl-close dl-support dl-iteratephdr \ - dl-iteratephdr-static dl-addr enbl-secure dl-profstub \ + dl-addr enbl-secure dl-profstub \ dl-origin dl-libc dl-sym dl-tsd # The core dynamic linking functions are in libc for the static and # profiled libraries. dl-routines = $(addprefix dl-,load cache lookup object reloc deps \ runtime error init fini debug misc \ - version profile conflict tls origin) + version profile conflict tls origin \ + execstack) all-dl-routines = $(dl-routines) $(sysdep-dl-routines) # But they are absent from the shared libc, because that code is in ld.so. -elide-routines.os = $(all-dl-routines) dl-support enbl-secure \ - dl-iteratephdr-static dl-origin +elide-routines.os = $(all-dl-routines) dl-support enbl-secure dl-origin # ld.so uses those routines, plus some special stuff for being the program # interpreter and operating independent of libc. @@ -69,7 +69,9 @@ distribute := rtld-Rules \ 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 \ @@ -78,8 +80,13 @@ distribute := rtld-Rules \ reldep9.c reldep9mod1.c reldep9mod2.c reldep9mod3.c \ tst-array1.exp tst-array2.exp tst-array4.exp \ tst-array2dep.c \ + tst-execstack-mod.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) + include ../Makeconfig ifeq ($(unwind-find-fde),yes) @@ -142,12 +149,15 @@ tests += loadtest restest1 preloadtest l $(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 \ + $(tests-execstack-$(have-z-execstack)) # reldep9 test-srcs = tst-pathopt tests-vis-yes = vismain tests-nodelete-yes = nodelete nodelete2 tests-nodlopen-yes = nodlopen nodlopen2 +tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog endif modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ testobj1_1 failobj constload2 constload3 unloadmod \ @@ -163,11 +173,14 @@ modules-names = testobj1 testobj2 testob 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 $(modules-execstack-$(have-z-execstack)) ifeq (yes,$(have-initfini-array)) modules-names += tst-array2dep endif @@ -175,12 +188,16 @@ modules-vis-yes = vismod1 vismod2 vismod modules-nodelete-yes = nodelmod1 nodelmod2 nodelmod3 nodelmod4 \ nodel2mod1 nodel2mod2 nodel2mod3 modules-nodlopen-yes = nodlopenmod nodlopenmod2 +modules-execstack-yes = tst-execstack-mod extra-objs += $(addsuffix .os,$(strip $(modules-names))) # We need this variable to be sure the test modules get the right CPPFLAGS. test-extras += $(modules-names) 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 +227,15 @@ $(objpfx)librtld.map: $(objpfx)dl-allobj 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 +243,24 @@ $(objpfx)librtld.mk: $(objpfx)librtld.ma *) 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 +327,11 @@ endif 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 +345,8 @@ $(objpfx)sprof: $(libdl) $(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 +395,10 @@ $(objpfx)reldep6mod2.so: $(objpfx)reldep $(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 +410,51 @@ $(objpfx)reldep9mod3.so: $(objpfx)reldep 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,11 +641,40 @@ $(objpfx)tst-tls8.out: $(objpfx)tst-tlsm $(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 endif +ifeq ($(have-z-execstack),yes) +$(objpfx)tst-execstack: $(libdl) +$(objpfx)tst-execstack.out: $(objpfx)tst-execstack-mod.so +LDFLAGS-tst-execstack = -Wl,-z,noexecstack +LDFLAGS-tst-execstack-mod = -Wl,-z,execstack + +$(objpfx)tst-execstack-needed: $(objpfx)tst-execstack-mod.so +LDFLAGS-tst-execstack-needed = -Wl,-z,noexecstack + +LDFLAGS-tst-execstack-prog = -Wl,-z,execstack +endif + $(objpfx)tst-array1.out: $(objpfx)tst-array1 $(elf-objpfx)$(rtld-installed-name) \ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \ diff -durpN glibc-2.3.2/elf/readlib.c glibc-2.3.3/elf/readlib.c --- glibc-2.3.2/elf/readlib.c 2002-09-05 14:56:48.000000000 -0400 +++ glibc-2.3.3/elf/readlib.c 2003-07-22 17:35:06.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 , 1999 and Jakub Jelinek , 1999. @@ -23,17 +23,16 @@ development version. Besides the simplification, it has also been modified to read some other file formats. */ - +#include #include #include -#include #include +#include #include #include #include -#include - #include +#include #include #include @@ -147,22 +146,21 @@ process_file (const char *real_file_name 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: diff -durpN glibc-2.3.2/elf/rtld.c glibc-2.3.3/elf/rtld.c --- glibc-2.3.2/elf/rtld.c 2003-01-07 13:47:35.000000000 -0500 +++ glibc-2.3.3/elf/rtld.c 2003-11-24 17:55:26.000000000 -0500 @@ -95,9 +95,12 @@ struct rtld_global _rtld_global = ._dl_sysinfo = DL_SYSINFO_DEFAULT, #endif ._dl_lazy = 1, + ._dl_use_load_bias = -2, ._dl_fpu_control = _FPU_DEFAULT, ._dl_correct_cache_id = _DL_CACHE_DEFAULT_ID, ._dl_hwcap_mask = HWCAP_IMPORTANT, + /* Default presumption without further information is executable stack. */ + ._dl_stack_flags = PF_R|PF_W|PF_X, #ifdef _LIBC_REENTRANT ._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER #endif @@ -227,12 +230,16 @@ _dl_start_final (void *arg, struct dl_st 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 @@ -245,7 +252,7 @@ _dl_start_final (void *arg, struct dl_st file access. It will call `dl_main' (below) to do all the real work of the dynamic linker, and then unwind our frame and run the user entry point on the same stack we entered on. */ - start_addr = _dl_sysdep_start (arg, &dl_main); + start_addr = _dl_sysdep_start (arg, &dl_main); #ifndef HP_TIMING_NONAVAIL if (HP_TIMING_AVAIL) @@ -314,7 +321,11 @@ _dl_start (void *arg) /* 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 +351,11 @@ _dl_start (void *arg) 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 @@ -505,7 +521,8 @@ static void map_doit (void *a) { struct map_args *args = (struct map_args *) a; - args->main_map = INTUSE(_dl_map_object) (NULL, args->str, 0, lt_library, 0, 0); + args->main_map = INTUSE(_dl_map_object) (NULL, args->str, 0, lt_library, 0, + __RTLD_OPENEXEC); } static void @@ -575,6 +592,20 @@ _dl_initial_error_catch_tsd (void) } #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 +640,20 @@ dl_main (const ElfW(Phdr) *phdr, 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 + + /* The explicit initialization here is cheaper than processing the reloc + in the _rtld_local definition's initializer. */ + GL(dl_make_stack_executable_hook) = &_dl_make_stack_executable; + /* Process the environment variable which control the behaviour. */ process_envvars (&mode); @@ -709,6 +754,25 @@ of this helper program; chances are you objects. */ _dl_init_paths (library_path); + /* The initialization of _dl_stack_flags done below assumes the + executable's PT_GNU_STACK may have been honored by the kernel, and + so a PT_GNU_STACK with PF_X set means the stack started out with + execute permission. However, this is not really true if the + dynamic linker is the executable the kernel loaded. For this + case, we must reinitialize _dl_stack_flags to match the dynamic + linker itself. If the dynamic linker was built with a + PT_GNU_STACK, then the kernel may have loaded us with a + nonexecutable stack that we will have to make executable when we + load the program below unless it has a PT_GNU_STACK indicating + nonexecutable stack is ok. */ + + for (ph = phdr; ph < &phdr[phnum]; ++ph) + if (ph->p_type == PT_GNU_STACK) + { + GL(dl_stack_flags) = ph->p_flags; + break; + } + if (__builtin_expect (mode, normal) == verify) { const char *objname; @@ -725,7 +789,8 @@ of this helper program; chances are you else { HP_TIMING_NOW (start); - INTUSE(_dl_map_object) (NULL, rtld_progname, 0, lt_library, 0, 0); + INTUSE(_dl_map_object) (NULL, rtld_progname, 0, lt_library, 0, + __RTLD_OPENEXEC); HP_TIMING_NOW (stop); HP_TIMING_DIFF (load_time, start, stop); @@ -853,6 +918,11 @@ of this helper program; chances are you 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; @@ -861,6 +931,9 @@ of this helper program; chances are you } break; #endif + case PT_GNU_STACK: + GL(dl_stack_flags) = ph->p_flags; + break; } #ifdef USE_TLS /* Adjust the address of the TLS initialization image in case @@ -885,7 +958,7 @@ of this helper program; chances are you 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 +997,19 @@ of this helper program; chances are you GL(dl_rtld_map).l_prev = GL(dl_loaded); ++GL(dl_nloaded); + /* If LD_USE_LOAD_BIAS env variable has not been seen, default + to not using bias for non-prelinked PIEs and libraries + and using it for executables or prelinked PIEs or libraries. */ + if (GL(dl_use_load_bias) == (ElfW(Addr)) -2) + GL(dl_use_load_bias) = (GL(dl_loaded)->l_addr == 0) ? -1 : 0; + + /* 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 +1148,62 @@ of this helper program; chances are you 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; + l->l_map_start = (ElfW(Addr)) GL(dl_sysinfo_dso); + + /* Now that we have the info handy, use the DSO image's soname + so this object can be looked up by name. Note that we do not + set l_name here. That field gives the file name of the DSO, + and this DSO is not associated with any file. */ + if (l->l_info[DT_SONAME] != NULL) + { + /* Work around a kernel problem. The kernel cannot handle + addresses in the vsyscall DSO pages in writev() calls. */ + const char *dsoname = ((char *) D_PTR (l, l_info[DT_STRTAB]) + + l->l_info[DT_SONAME]->d_un.d_val); + size_t len = strlen (dsoname); + char *copy = malloc (len); + if (copy == NULL) + _dl_fatal_printf ("out of memory\n"); + l->l_libname->name = memcpy (copy, dsoname, len); + } + } + } +#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 +1355,54 @@ cannot allocate TLS data structures for 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 ?: "
", - l->l_name[0] ? l->l_name - : rtld_progname ?: "
", - (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 ?: "
", + l->l_name[0] ? l->l_name + : rtld_progname ?: "
", + (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 +1420,9 @@ cannot allocate TLS data structures for _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 { @@ -1859,6 +1999,17 @@ process_envvars (enum mode *modep) GL(dl_dynamic_weak) = 1; break; + case 13: + /* We might have some extra environment variable with length 13 + to handle. */ +#ifdef EXTRA_LD_ENVVARS_13 + EXTRA_LD_ENVVARS_13 +#endif + if (!INTUSE(__libc_enable_secure) + && memcmp (envline, "USE_LOAD_BIAS", 13) == 0) + GL(dl_use_load_bias) = envline[14] == '1' ? -1 : 0; + break; + case 14: /* Where to place the profiling data file. */ if (!INTUSE(__libc_enable_secure) @@ -1989,10 +2140,30 @@ print_statistics (void) buf, pbuf); } #endif + + unsigned long int num_relative_relocations = 0; + struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist; + unsigned int i; + + for (i = 0; i < scope->r_nlist; i++) + { + struct link_map *l = scope->r_list [i]; + + if (!l->l_addr) + continue; + + if (l->l_info[VERSYMIDX (DT_RELCOUNT)]) + num_relative_relocations += l->l_info[VERSYMIDX (DT_RELCOUNT)]->d_un.d_val; + if (l->l_info[VERSYMIDX (DT_RELACOUNT)]) + num_relative_relocations += l->l_info[VERSYMIDX (DT_RELACOUNT)]->d_un.d_val; + } + INTUSE(_dl_debug_printf) (" number of relocations: %lu\n", GL(dl_num_relocations)); INTUSE(_dl_debug_printf) (" number of relocations from cache: %lu\n", GL(dl_num_cache_relocations)); + INTUSE(_dl_debug_printf) (" number of relative relocations: %lu\n", + num_relative_relocations); #ifndef HP_TIMING_NONAVAIL /* Time spend while loading the object and the dependencies. */ diff -durpN glibc-2.3.2/elf/rtld-Rules glibc-2.3.3/elf/rtld-Rules --- glibc-2.3.2/elf/rtld-Rules 2002-10-14 00:03:13.000000000 -0400 +++ glibc-2.3.3/elf/rtld-Rules 2003-07-24 23:31:13.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 @@ rtld-all: 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 @@ else # 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 @@ rtld-all: $(addprefix $(objpfx),$(rtld-m # 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 diff -durpN glibc-2.3.2/elf/sofini.c glibc-2.3.3/elf/sofini.c --- glibc-2.3.2/elf/sofini.c 1999-02-20 12:14:48.000000000 -0500 +++ glibc-2.3.3/elf/sofini.c 2003-07-22 15:37:27.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 @@ static void (*const __DTOR_END__[1]) (vo typedef unsigned int ui32 __attribute__ ((mode (SI))); static ui32 __FRAME_END__[1] - __attribute__ ((unused, section (".eh_frame"))) + __attribute__ ((used, section (".eh_frame"))) = { 0 }; #endif diff -durpN glibc-2.3.2/elf/soinit.c glibc-2.3.3/elf/soinit.c --- glibc-2.3.2/elf/soinit.c 2001-11-15 18:09:20.000000000 -0500 +++ glibc-2.3.3/elf/soinit.c 2003-11-26 02:14:31.000000000 -0500 @@ -78,9 +78,14 @@ __libc_global_ctors (void) /* This function becomes the DT_FINI termination function for the C library. */ +#ifndef HAVE_INITFINI_ARRAY void _fini (void) __attribute__ ((section (".fini"))); /* Just for kicks. */ void _fini (void) +#else +void +__libc_fini (void) +#endif { /* Call destructor functions. */ run_hooks (__DTOR_LIST__); @@ -96,3 +101,7 @@ _fini (void) # endif #endif } +#ifdef HAVE_INITFINI_ARRAY +void (*_fini_ptr) (void) __attribute__ ((section (".fini_array"))) + = &__libc_fini; +#endif diff -durpN glibc-2.3.2/elf/sprof.c glibc-2.3.3/elf/sprof.c --- glibc-2.3.2/elf/sprof.c 2003-01-02 15:01:54.000000000 -0500 +++ glibc-2.3.3/elf/sprof.c 2003-10-27 04:17:14.000000000 -0500 @@ -513,7 +513,7 @@ load_shobj (const char *name) /* Now we have to load the symbol table. First load the section header table. */ - ehdr = (ElfW(Ehdr) *) map->l_addr; + ehdr = (ElfW(Ehdr) *) map->l_map_start; /* Make sure we are on the right party. */ if (ehdr->e_shentsize != sizeof (ElfW(Shdr))) diff -durpN glibc-2.3.2/elf/tls-macros.h glibc-2.3.3/elf/tls-macros.h --- glibc-2.3.2/elf/tls-macros.h 2003-02-25 18:40:08.000000000 -0500 +++ glibc-2.3.3/elf/tls-macros.h 2003-09-11 19:35:21.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 @@ register void *__gp __asm__("$29"); # 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 @@ register void *__gp __asm__("$29"); # 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 @@ register void *__gp __asm__("$29"); ";;\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 @@ register void *__gp __asm__("$29"); ";;\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 @@ register void *__gp __asm__("$29"); 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 @@ register void *__gp __asm__("$29"); (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. */ diff -durpN glibc-2.3.2/elf/tst-align.c glibc-2.3.3/elf/tst-align.c --- glibc-2.3.2/elf/tst-align.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 , 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 +#include +#include + +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" diff -durpN glibc-2.3.2/elf/tst-alignmod.c glibc-2.3.3/elf/tst-alignmod.c --- glibc-2.3.2/elf/tst-alignmod.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 , 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 +#include + +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; +} diff -durpN glibc-2.3.2/elf/tst-execstack.c glibc-2.3.3/elf/tst-execstack.c --- glibc-2.3.2/elf/tst-execstack.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-execstack.c 2003-09-23 08:07:02.000000000 -0400 @@ -0,0 +1,133 @@ +/* Test program for making nonexecutable stacks executable + on load of a DSO that requires executable stacks. */ + +#include +#include +#include +#include +#include + +static void +print_maps (void) +{ +#if 0 + char *cmd = NULL; + asprintf (&cmd, "cat /proc/%d/maps", getpid ()); + system (cmd); + free (cmd); +#endif +} + +static void deeper (void (*f) (void)); + +#if USE_PTHREADS +# include + +static void * +tryme_thread (void *f) +{ + (*((void (*) (void)) f)) (); + + return 0; +} + +static pthread_barrier_t startup_barrier, go_barrier; +static void * +waiter_thread (void *arg) +{ + void **f = arg; + pthread_barrier_wait (&startup_barrier); + pthread_barrier_wait (&go_barrier); + + (*((void (*) (void)) *f)) (); + + return 0; +} +#endif + +static int +do_test (void) +{ + void *f; + +#if USE_PTHREADS + /* Create some threads while stacks are nonexecutable. */ + #define N 5 + pthread_t thr[N]; + + pthread_barrier_init (&startup_barrier, NULL, N + 1); + pthread_barrier_init (&go_barrier, NULL, N + 1); + + for (int i = 0; i < N; ++i) + { + int rc = pthread_create (&thr[i], NULL, &waiter_thread, &f); + if (rc) + error (1, rc, "pthread_create"); + } + + /* Make sure they are all there using their stacks. */ + pthread_barrier_wait (&startup_barrier); + puts ("threads waiting"); +#endif + + print_maps (); + + /* Loading this module should force stacks to become executable. */ + void *h = dlopen ("tst-execstack-mod.so", RTLD_LAZY); + if (h == NULL) + { + printf ("cannot load: %s\n", dlerror ()); + return 1; + } + + f = dlsym (h, "tryme"); + if (f == NULL) + { + printf ("symbol not found: %s\n", dlerror ()); + return 1; + } + + /* Test if that really made our stack executable. + The `tryme' function should crash if not. */ + + (*((void (*) (void)) f)) (); + + print_maps (); + + /* Test that growing the stack region gets new executable pages too. */ + deeper ((void (*) (void)) f); + + print_maps (); + +#if USE_PTHREADS + /* Test that a fresh thread now gets an executable stack. */ + { + pthread_t th; + int rc = pthread_create (&th, NULL, &tryme_thread, f); + if (rc) + error (1, rc, "pthread_create"); + } + + puts ("threads go"); + /* The existing threads' stacks should have been changed. + Let them run to test it. */ + pthread_barrier_wait (&go_barrier); + + pthread_exit (0); +#endif + + return 0; +} + +static void +deeper (void (*f) (void)) +{ + char stack[1100 * 1024]; + memfrob (stack, sizeof stack); + (*f) (); + memfrob (stack, sizeof stack); +} + + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff -durpN glibc-2.3.2/elf/tst-execstack-mod.c glibc-2.3.3/elf/tst-execstack-mod.c --- glibc-2.3.2/elf/tst-execstack-mod.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-execstack-mod.c 2003-09-23 08:07:02.000000000 -0400 @@ -0,0 +1,30 @@ +/* Test module for making nonexecutable stacks executable + on load of a DSO that requires executable stacks. */ + +#include +#include +#include + +void callme (void (*callback) (void)); + +/* This is a function that makes use of executable stack by + using a local function trampoline. */ +void +tryme (void) +{ + bool ok = false; + void callback (void) { ok = true; } + + callme (&callback); + + if (ok) + printf ("DSO called ok (local %p, trampoline %p)\n", &ok, &callback); + else + abort (); +} + +void +callme (void (*callback) (void)) +{ + (*callback) (); +} diff -durpN glibc-2.3.2/elf/tst-execstack-needed.c glibc-2.3.3/elf/tst-execstack-needed.c --- glibc-2.3.2/elf/tst-execstack-needed.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-execstack-needed.c 2003-09-23 08:07:02.000000000 -0400 @@ -0,0 +1,36 @@ +/* Test program for making nonexecutable stacks executable + on DT_NEEDED load of a DSO that requires executable stacks. */ + +#include +#include +#include +#include +#include + +extern void tryme (void); /* from tst-execstack-mod.so */ + +static void deeper (void (*f) (void)); + +static int +do_test (void) +{ + tryme (); + + /* Test that growing the stack region gets new executable pages too. */ + deeper (&tryme); + + return 0; +} + +static void +deeper (void (*f) (void)) +{ + char stack[1100 * 1024]; + memfrob (stack, sizeof stack); + (*f) (); + memfrob (stack, sizeof stack); +} + + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff -durpN glibc-2.3.2/elf/tst-execstack-prog.c glibc-2.3.3/elf/tst-execstack-prog.c --- glibc-2.3.2/elf/tst-execstack-prog.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-execstack-prog.c 2003-09-23 21:55:51.000000000 -0400 @@ -0,0 +1,35 @@ +/* Test program for executable stacks in an executable itself. */ + +#include +#include +#include +#include +#include + +#include "tst-execstack-mod.c" /* This defines the `tryme' test function. */ + +static void deeper (void (*f) (void)); + +static int +do_test (void) +{ + tryme (); + + /* Test that growing the stack region gets new executable pages too. */ + deeper (&tryme); + + return 0; +} + +static void +deeper (void (*f) (void)) +{ + char stack[1100 * 1024]; + memfrob (stack, sizeof stack); + (*f) (); + memfrob (stack, sizeof stack); +} + + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff -durpN glibc-2.3.2/elf/tst-tls10.c glibc-2.3.3/elf/tst-tls10.c --- glibc-2.3.2/elf/tst-tls10.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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); +} diff -durpN glibc-2.3.2/elf/tst-tls10.h glibc-2.3.3/elf/tst-tls10.h --- glibc-2.3.2/elf/tst-tls10.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-tls10.h 2003-04-17 15:19:01.000000000 -0400 @@ -0,0 +1,38 @@ +#include +#include + +#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 diff -durpN glibc-2.3.2/elf/tst-tls11.c glibc-2.3.3/elf/tst-tls11.c --- glibc-2.3.2/elf/tst-tls11.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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); +} diff -durpN glibc-2.3.2/elf/tst-tls12.c glibc-2.3.3/elf/tst-tls12.c --- glibc-2.3.2/elf/tst-tls12.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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); +} diff -durpN glibc-2.3.2/elf/tst-tls13.c glibc-2.3.3/elf/tst-tls13.c --- glibc-2.3.2/elf/tst-tls13.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 +#include +#include + + +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" diff -durpN glibc-2.3.2/elf/tst-tls14.c glibc-2.3.3/elf/tst-tls14.c --- glibc-2.3.2/elf/tst-tls14.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-tls14.c 2003-07-28 17:50:16.000000000 -0400 @@ -0,0 +1,66 @@ +/* Check alignment of TLS variable. */ +#include +#include +#include +#include + +#include + +#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" diff -durpN glibc-2.3.2/elf/tst-tls6.c glibc-2.3.3/elf/tst-tls6.c --- glibc-2.3.2/elf/tst-tls6.c 2002-12-04 13:22:02.000000000 -0500 +++ glibc-2.3.3/elf/tst-tls6.c 2003-07-31 15:19:03.000000000 -0400 @@ -36,7 +36,7 @@ do_test (void) 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; } diff -durpN glibc-2.3.2/elf/tst-tls8.c glibc-2.3.3/elf/tst-tls8.c --- glibc-2.3.2/elf/tst-tls8.c 2002-12-04 13:22:02.000000000 -0500 +++ glibc-2.3.3/elf/tst-tls8.c 2003-07-31 15:19:17.000000000 -0400 @@ -19,8 +19,8 @@ do_test (void) 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 @@ do_test (void) /* 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 @@ do_test (void) /* 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 @@ do_test (void) 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 @@ do_test (void) 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; } diff -durpN glibc-2.3.2/elf/tst-tlsmod10.c glibc-2.3.3/elf/tst-tlsmod10.c --- glibc-2.3.2/elf/tst-tlsmod10.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-tlsmod10.c 2003-04-17 15:19:01.000000000 -0400 @@ -0,0 +1 @@ +#include "tst-tlsmod8.c" diff -durpN glibc-2.3.2/elf/tst-tlsmod11.c glibc-2.3.3/elf/tst-tlsmod11.c --- glibc-2.3.2/elf/tst-tlsmod11.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/elf/tst-tlsmod12.c glibc-2.3.3/elf/tst-tlsmod12.c --- glibc-2.3.2/elf/tst-tlsmod12.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/elf/tst-tlsmod13a.c glibc-2.3.3/elf/tst-tlsmod13a.c --- glibc-2.3.2/elf/tst-tlsmod13a.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-tlsmod13a.c 2003-04-27 02:15:39.000000000 -0400 @@ -0,0 +1,16 @@ +#include + +#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]; +} diff -durpN glibc-2.3.2/elf/tst-tlsmod13.c glibc-2.3.3/elf/tst-tlsmod13.c --- glibc-2.3.2/elf/tst-tlsmod13.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-tlsmod13.c 2003-04-27 02:15:39.000000000 -0400 @@ -0,0 +1,14 @@ +#include + +#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]; +} diff -durpN glibc-2.3.2/elf/tst-tlsmod14a.c glibc-2.3.3/elf/tst-tlsmod14a.c --- glibc-2.3.2/elf/tst-tlsmod14a.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-tlsmod14a.c 2003-07-28 17:50:16.000000000 -0400 @@ -0,0 +1,41 @@ +#include +#include + +#include + +#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 diff -durpN glibc-2.3.2/elf/tst-tlsmod14b.c glibc-2.3.3/elf/tst-tlsmod14b.c --- glibc-2.3.2/elf/tst-tlsmod14b.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/elf/tst-tlsmod14b.c 2003-07-24 15:58:08.000000000 -0400 @@ -0,0 +1,2 @@ +#define FCT in_dso2 +#include "tst-tlsmod14a.c" diff -durpN glibc-2.3.2/elf/tst-tlsmod7.c glibc-2.3.3/elf/tst-tlsmod7.c --- glibc-2.3.2/elf/tst-tlsmod7.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/elf/tst-tlsmod8.c glibc-2.3.3/elf/tst-tlsmod8.c --- glibc-2.3.2/elf/tst-tlsmod8.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/elf/tst-tlsmod9.c glibc-2.3.3/elf/tst-tlsmod9.c --- glibc-2.3.2/elf/tst-tlsmod9.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 diff -durpN glibc-2.3.2/elf/Versions glibc-2.3.3/elf/Versions --- glibc-2.3.2/elf/Versions 2002-12-04 13:22:02.000000000 -0500 +++ glibc-2.3.3/elf/Versions 2003-09-24 17:05:28.000000000 -0400 @@ -21,6 +21,8 @@ libc { # 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; } } @@ -34,6 +36,8 @@ ld { GLIBC_2.1 { # functions used in other libraries _dl_mcount; + # historically used by Garbage Collectors + __libc_stack_end; } GLIBC_2.3 { # runtime interface to TLS @@ -41,7 +45,7 @@ ld { } GLIBC_PRIVATE { # Those are in the dynamic linker, but used by libc.so. - __libc_enable_secure; __libc_stack_end; + __libc_enable_secure; _dl_argv; _dl_catch_error; _dl_check_map_versions; _dl_debug_printf; _dl_debug_state; _dl_dst_count; _dl_dst_substitute; _dl_init; _dl_lookup_symbol; _dl_lookup_symbol_skip; @@ -51,6 +55,7 @@ ld { _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; + _dl_make_stack_executable; } } diff -durpN glibc-2.3.2/elf/vismain.c glibc-2.3.3/elf/vismain.c --- glibc-2.3.2/elf/vismain.c 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.3/elf/vismain.c 2003-03-29 01:49:46.000000000 -0500 @@ -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 @@ The handling of `.protected' seems to be 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 @@ The handling of `.protected' seems to be 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 @@ pointers to `protitcpt' in mod1 or mod2 /* 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 @@ pointers to `protitcpt' in mod1 or mod2 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 @@ pointers to `protitcpt' in mod1 or mod2 puts ("`protvaritcpt in main has wrong value"); res = 1; } - if (strcmp (getvaritcpt1 (), "vismod1.c") != 0) + if (strcmp (*getvaritcpt1 (), "vismod1.c") != 0) { puts ("`getvaritcpt1' returns wrong value"); res = 1; } - if (strcmp (getvaritcpt2 (), "vismod2.c") != 0) + if (strcmp (*getvaritcpt2 (), "vismod2.c") != 0) { puts ("`getvaritcpt2' returns wrong value"); res = 1; diff -durpN glibc-2.3.2/elf/vismod1.c glibc-2.3.3/elf/vismod1.c --- glibc-2.3.2/elf/vismod1.c 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.3/elf/vismod1.c 2003-03-28 22:46:03.000000000 -0500 @@ -79,26 +79,26 @@ int const char *protvarlocal = __FILE__; asm (".protected protvarlocal"); -const char * +const char ** getvarlocal1 (void) { - return protvarlocal; + return &protvarlocal; } const char *protvarinmod = __FILE__; asm (".protected protvarinmod"); -const char * +const char ** getvarinmod1 (void) { - return protvarinmod; + return &protvarinmod; } const char *protvaritcpt = __FILE__; asm (".protected protvaritcpt"); -const char * +const char ** getvaritcpt1 (void) { - return protvaritcpt; + return &protvaritcpt; } diff -durpN glibc-2.3.2/elf/vismod2.c glibc-2.3.3/elf/vismod2.c --- glibc-2.3.2/elf/vismod2.c 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.3/elf/vismod2.c 2003-03-28 22:46:03.000000000 -0500 @@ -80,28 +80,28 @@ int 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 @@ int abort (); } -const char * +const char ** getvaritcpt3 (void) { abort (); diff -durpN glibc-2.3.2/elf/vismod3.c glibc-2.3.3/elf/vismod3.c --- glibc-2.3.2/elf/vismod3.c 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.3/elf/vismod3.c 2003-03-28 22:46:03.000000000 -0500 @@ -40,8 +40,8 @@ int const char *protvaritcpt = __FILE__; asm (".protected protvaritcpt"); -const char * +const char ** getvaritcpt3 (void) { - return protvaritcpt; + return &protvaritcpt; } diff -durpN glibc-2.3.2/elf/vismod.h glibc-2.3.3/elf/vismod.h --- glibc-2.3.2/elf/vismod.h 2000-12-17 12:07:45.000000000 -0500 +++ glibc-2.3.3/elf/vismod.h 2003-03-28 22:46:03.000000000 -0500 @@ -5,21 +5,21 @@ extern int callinmod1 (void); extern int (*getinmod1 (void)) (void); extern int callitcpt1 (void); extern int (*getitcpt1 (void)) (void); -extern const char *getvarlocal1 (void); -extern const char *getvarinmod1 (void); -extern const char *getvaritcpt1 (void); +extern const char **getvarlocal1 (void); +extern const char **getvarinmod1 (void); +extern const char **getvaritcpt1 (void); extern int calllocal2 (void); extern int (*getlocal2 (void)) (void); extern int callinmod2 (void); extern int (*getinmod2 (void)) (void); extern int callitcpt2 (void); extern int (*getitcpt2 (void)) (void); -extern const char *getvarlocal2 (void); -extern const char *getvarinmod2 (void); -extern const char *getvaritcpt2 (void); +extern const char **getvarlocal2 (void); +extern const char **getvarinmod2 (void); +extern const char **getvaritcpt2 (void); extern int callitcpt3 (void); extern int (*getitcpt3 (void)) (void); -extern const char *getvaritcpt3 (void); +extern const char **getvaritcpt3 (void); extern int protinmod (void); extern int protitcpt (void); diff -durpN glibc-2.3.2/FAQ.in glibc-2.3.3/FAQ.in --- glibc-2.3.2/FAQ.in 2002-12-09 17:55:04.000000000 -0500 +++ glibc-2.3.3/FAQ.in 2003-10-22 15:07:07.000000000 -0400 @@ -146,8 +146,6 @@ them. A full build of the PowerPC library took 1h on a PowerPC 750@400Mhz w/ 64MB of RAM, and about 9h on a 601@60Mhz w/ 72Mb. - If you have some more measurements let me know. - ?? What version of the Linux kernel headers should be used? {AJ,UD} The headers from the most recent Linux kernel should be used. The diff -durpN glibc-2.3.2/gmon/.cvsignore glibc-2.3.3/gmon/.cvsignore --- glibc-2.3.2/gmon/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/gmon/.cvsignore 1996-05-14 14:14:13.000000000 -0400 @@ -0,0 +1,6 @@ +*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz +=* +TODO COPYING* AUTHORS copyr-* copying.* +glibc-* +distinfo diff -durpN glibc-2.3.2/gmon/gmon.c glibc-2.3.3/gmon/gmon.c --- glibc-2.3.2/gmon/gmon.c 2003-01-07 22:49:47.000000000 -0500 +++ glibc-2.3.3/gmon/gmon.c 2003-09-04 10:20:46.000000000 -0400 @@ -42,6 +42,7 @@ #include #include #include +#include #ifdef USE_IN_LIBIO # include @@ -58,7 +59,7 @@ struct gmonparam _gmonparam attribute_hi 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 @@ write_hist (fd) 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 @@ write_call_graph (fd) 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 @@ write_call_graph (fd) 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 @@ write_bb_counts (fd) 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 @@ write_bb_counts (fd) 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 @@ write_gmon (void) 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 @@ write_gmon (void) 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_gmon (void) /* write basic-block execution counts: */ write_bb_counts (fd); - __close (fd); + close_not_cancel_no_status (fd); } diff -durpN glibc-2.3.2/gmon/mcount.c glibc-2.3.3/gmon/mcount.c --- glibc-2.3.2/gmon/mcount.c 2002-08-29 05:25:51.000000000 -0400 +++ glibc-2.3.3/gmon/mcount.c 2003-03-21 02:45:54.000000000 -0500 @@ -39,7 +39,7 @@ static char sccsid[] = "@(#)mcount.c 8.1 and MCOUNT macros. */ #include "machine-gmon.h" -#include +#include /* * mcount is called on entry to each function compiled with the profiling @@ -69,7 +69,8 @@ _MCOUNT_DECL(frompc, selfpc) /* _mcount; * check that we are profiling * and that we aren't recursively invoked. */ - if (! compare_and_swap (&p->state, GMON_PROF_ON, GMON_PROF_BUSY)) + if (atomic_compare_and_exchange_bool_acq (&p->state, GMON_PROF_BUSY, + GMON_PROF_ON)) return; /* diff -durpN glibc-2.3.2/gmon/tst-sprofil.c glibc-2.3.3/gmon/tst-sprofil.c --- glibc-2.3.2/gmon/tst-sprofil.c 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.3/gmon/tst-sprofil.c 2003-07-31 15:19:29.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 . @@ -165,7 +165,7 @@ main (int argc, char **argv) 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; diff -durpN glibc-2.3.2/gnulib/.cvsignore glibc-2.3.3/gnulib/.cvsignore --- glibc-2.3.2/gnulib/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/gnulib/.cvsignore 1996-05-14 14:14:19.000000000 -0400 @@ -0,0 +1,6 @@ +*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz +=* +TODO COPYING* AUTHORS copyr-* copying.* +glibc-* +distinfo diff -durpN glibc-2.3.2/grp/.cvsignore glibc-2.3.3/grp/.cvsignore --- glibc-2.3.2/grp/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/grp/.cvsignore 1996-05-14 14:14:28.000000000 -0400 @@ -0,0 +1,6 @@ +*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz +=* +TODO COPYING* AUTHORS copyr-* copying.* +glibc-* +distinfo diff -durpN glibc-2.3.2/grp/grp.h glibc-2.3.3/grp/grp.h --- glibc-2.3.2/grp/grp.h 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.3/grp/grp.h 2003-04-19 12:48:37.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 @@ struct group #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. -/* 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 *getgrgid (__gid_t __gid); + +/* Search for an entry with a matching group name. + + 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 @@ extern struct group *getgrnam (__const c 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 @@ extern int setgroups (size_t __n, __cons /* 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. */ diff -durpN glibc-2.3.2/grp/initgroups.c glibc-2.3.3/grp/initgroups.c --- glibc-2.3.2/grp/initgroups.c 2002-03-13 12:49:14.000000000 -0500 +++ glibc-2.3.3/grp/initgroups.c 2003-06-16 13:16:06.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 #include #include +#include #include #include @@ -207,6 +208,9 @@ getgrouplist (const char *user, gid_t gr 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 @@ getgrouplist (const char *user, gid_t gr 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 @@ initgroups (const char *user, gid_t grou return result; #endif } + +static_link_warning (initgroups) diff -durpN glibc-2.3.2/grp/Makefile glibc-2.3.3/grp/Makefile --- glibc-2.3.2/grp/Makefile 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.3/grp/Makefile 2003-09-12 18:22:32.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 @@ endif 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 diff -durpN glibc-2.3.2/hurd/.cvsignore glibc-2.3.3/hurd/.cvsignore --- glibc-2.3.2/hurd/.cvsignore 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/hurd/.cvsignore 1996-05-14 14:14:33.000000000 -0400 @@ -0,0 +1,6 @@ +*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps +*.gz *.Z *.tar *.tgz +=* +TODO COPYING* AUTHORS copyr-* copying.* +glibc-* +distinfo diff -durpN glibc-2.3.2/iconv/gconv_cache.c glibc-2.3.3/iconv/gconv_cache.c --- glibc-2.3.2/iconv/gconv_cache.c 2002-12-02 16:26:09.000000000 -0500 +++ glibc-2.3.3/iconv/gconv_cache.c 2003-06-11 17:38:47.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 , 2001. @@ -19,6 +19,7 @@ 02111-1307 USA. */ #include +#include #include #include #include @@ -28,6 +29,7 @@ #include #include +#include #include "../intl/hash-string.h" @@ -58,7 +60,7 @@ __gconv_load_cache (void) 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 @@ __gconv_load_cache (void) || (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 @@ __gconv_load_cache (void) } /* 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 @@ find_module_idx (const char *str, size_t 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); diff -durpN glibc-2.3.2/iconv/gconv_charset.h glibc-2.3.3/iconv/gconv_charset.h --- glibc-2.3.2/iconv/gconv_charset.h 2002-05-14 16:46:02.000000000 -0400 +++ glibc-2.3.3/iconv/gconv_charset.h 2003-06-11 17:29:40.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 , 2001. @@ -22,7 +22,7 @@ #include -static inline void +static void strip (char *wp, const char *s) { int slash_count = 0; @@ -48,7 +48,7 @@ strip (char *wp, const char *s) } -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 @@ upstr (char *dst, const char *str) /* nothing */; return dst; } - - -/* If NAME is an codeset alias expand it. */ -extern int __gconv_compare_alias (const char *name1, const char *name2) - internal_function; diff -durpN glibc-2.3.2/iconv/gconv_conf.c glibc-2.3.3/iconv/gconv_conf.c --- glibc-2.3.2/iconv/gconv_conf.c 2002-12-15 23:26:02.000000000 -0500 +++ glibc-2.3.3/iconv/gconv_conf.c 2003-09-04 04:25:13.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 , 1997. @@ -125,7 +125,7 @@ detect_conflict (const char *alias) /* 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 @@ add_alias (char *rp, void *modules) /* 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 @@ internal_function 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; diff -durpN glibc-2.3.2/iconv/gconv_db.c glibc-2.3.3/iconv/gconv_db.c --- glibc-2.3.2/iconv/gconv_db.c 2002-12-02 16:26:09.000000000 -0500 +++ glibc-2.3.3/iconv/gconv_db.c 2003-06-11 17:31: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 , 1997. @@ -27,7 +27,6 @@ #include #include -#include /* Simple data structure for alias mapping. We have two names, `from' diff -durpN glibc-2.3.2/iconv/gconv_int.h glibc-2.3.3/iconv/gconv_int.h --- glibc-2.3.2/iconv/gconv_int.h 2002-12-02 16:26:09.000000000 -0500 +++ glibc-2.3.3/iconv/gconv_int.h 2003-06-11 17:33:21.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 , 1997. @@ -262,6 +262,11 @@ extern int __gconv_transliterate (struct 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) \ diff -durpN glibc-2.3.2/iconv/gconv_simple.c glibc-2.3.3/iconv/gconv_simple.c --- glibc-2.3.2/iconv/gconv_simple.c 2003-01-16 01:31:35.000000000 -0500 +++ glibc-2.3.3/iconv/gconv_simple.c 2003-06-11 17:36:37.000000000 -0400 @@ -72,6 +72,7 @@ __gconv_btwoc_ascii (struct __gconv_step 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 @@ internal_ucs4_loop (struct __gconv_step #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 @@ internal_ucs4_loop_unaligned (struct __g 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 @@ internal_ucs4_loop_single (struct __gcon 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 @@ ucs4_internal_loop (struct __gconv_step #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 @@ ucs4_internal_loop_unaligned (struct __g 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 @@ ucs4_internal_loop_single (struct __gcon 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 @@ internal_ucs4le_loop (struct __gconv_ste #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 @@ internal_ucs4le_loop_unaligned (struct _ 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 @@ internal_ucs4le_loop_single (struct __gc 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 @@ ucs4le_internal_loop (struct __gconv_ste #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 @@ ucs4le_internal_loop_unaligned (struct _ static inline int +__attribute ((always_inline)) ucs4le_internal_loop_single (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, diff -durpN glibc-2.3.2/iconv/iconvconfig.c glibc-2.3.3/iconv/iconvconfig.c --- glibc-2.3.2/iconv/iconvconfig.c 2003-01-02 14:59:10.000000000 -0500 +++ glibc-2.3.3/iconv/iconvconfig.c 2003-06-11 17:38:47.000000000 -0400 @@ -784,7 +784,7 @@ new_name (const char *str, struct Strent newp->name = str; newp->strent = strent; newp->module_idx = -1; - newp->hashval = hash_string (str); + newp->hashval = __hash_string (str); ++nnames; diff -durpN glibc-2.3.2/iconv/iconv.h glibc-2.3.3/iconv/iconv.h --- glibc-2.3.2/iconv/iconv.h 2001-07-07 15:20:58.000000000 -0400 +++ glibc-2.3.3/iconv/iconv.h 2003-04-19 12:48:37.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 @@ typedef void *iconv_t; /* 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 @@ extern size_t iconv (iconv_t __cd, char 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 diff -durpN glibc-2.3.2/iconv/iconv_prog.c glibc-2.3.3/iconv/iconv_prog.c --- glibc-2.3.2/iconv/iconv_prog.c 2003-02-22 14:20:07.000000000 -0500 +++ glibc-2.3.3/iconv/iconv_prog.c 2003-04-06 16:36:19.000000000 -0400 @@ -160,14 +160,16 @@ main (int argc, char *argv[]) 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 @@ conversion stopped due to problem in wri 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, _("\ diff -durpN glibc-2.3.2/iconv/loop.c glibc-2.3.3/iconv/loop.c --- glibc-2.3.2/iconv/loop.c 2003-01-16 01:30:13.000000000 -0500 +++ glibc-2.3.3/iconv/loop.c 2003-06-11 17:38:13.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 @@ FCTNAME (LOOPFCT) (struct __gconv_step * # 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, diff -durpN glibc-2.3.2/iconv/Makefile glibc-2.3.3/iconv/Makefile --- glibc-2.3.2/iconv/Makefile 2002-11-25 20:50:58.000000000 -0500 +++ glibc-2.3.3/iconv/Makefile 2003-06-11 17:27:05.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_cache.c = -DSTATIC_GCONV 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 diff -durpN glibc-2.3.2/iconv/tst-iconv3.c glibc-2.3.3/iconv/tst-iconv3.c --- glibc-2.3.2/iconv/tst-iconv3.c 2002-03-28 18:41:38.000000000 -0500 +++ glibc-2.3.3/iconv/tst-iconv3.c 2003-07-31 15:19:50.000000000 -0400 @@ -42,7 +42,7 @@ main (int argc, char *argv[]) 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; } diff -durpN glibc-2.3.2/iconvdata/bug-iconv4.c glibc-2.3.3/iconvdata/bug-iconv4.c --- glibc-2.3.2/iconvdata/bug-iconv4.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/iconvdata/bug-iconv4.c 2003-03-26 03:10:58.000000000 -0500 @@ -0,0 +1,78 @@ +/* Contributed by Jiro SEKIBA . */ +#include +#include +#include +#include +#include +#include + +#define UCS_STR "\x4e\x8c" /* EUC-TW 0xa2a2, EUC-JP 0x */ + +static const char *to_code; + +static bool +xiconv (iconv_t cd, int out_size) +{ + unsigned char euc[4]; + char *inp = (char *) UCS_STR; + char *outp = euc; + size_t inbytesleft = strlen (UCS_STR); + size_t outbytesleft = out_size; + size_t ret; + bool fail = false; + + errno = 0; + ret = iconv (cd, &inp, &inbytesleft, &outp, &outbytesleft); + if (errno || ret == (size_t) -1) + { + fail = out_size == 4 || errno != E2BIG; + printf ("expected %d (E2BIG), got %d (%m)\n", E2BIG, errno); + } + else + { + printf ("%s: 0x%02x%02x\n", to_code, euc[0], euc[1]); + if (out_size == 1) + fail = true; + } + + return fail; +} + + +static iconv_t +xiconv_open (const char *code) +{ + iconv_t cd; + to_code = code; + errno = 0; + if (errno || (cd = iconv_open (to_code, "UCS-2BE")) == (iconv_t) -1) + { + puts ("Can't open converter"); + exit (1); + } + return cd; +} + + +int +main (void) +{ + iconv_t cd; + int result = 0; + + cd = xiconv_open ("EUC-TW"); + result |= xiconv (cd, 4) == true; + puts ("---"); + result |= xiconv (cd, 1) == true; + puts ("---"); + iconv_close (cd); + + cd = xiconv_open ("EUC-JP"); + result |= xiconv (cd, 4) == true; + puts ("---"); + result |= xiconv (cd, 1) == true; + puts ("---"); + iconv_close (cd); + + return result; +} diff -durpN glibc-2.3.2/iconvdata/cns11643.h glibc-2.3.3/iconvdata/cns11643.h --- glibc-2.3.2/iconvdata/cns11643.h 2002-04-20 03:31:30.000000000 -0400 +++ glibc-2.3.3/iconvdata/cns11643.h 2003-06-11 17:40:42.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 , 1998. @@ -40,6 +40,7 @@ extern const uint32_t __cns11643l15_to_u 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 @@ extern const char __cns11643_from_ucs4p2 static inline size_t +__attribute ((always_inline)) ucs4_to_cns11643 (uint32_t wch, char *s, size_t avail) { unsigned int ch = (unsigned int) wch; diff -durpN glibc-2.3.2/iconvdata/cns11643l1.h glibc-2.3.3/iconvdata/cns11643l1.h --- glibc-2.3.2/iconvdata/cns11643l1.h 2001-07-07 15:20:59.000000000 -0400 +++ glibc-2.3.3/iconvdata/cns11643l1.h 2003-06-11 17:40:42.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 , 1998. @@ -26,6 +26,7 @@ extern const uint16_t __cns11643l1_to_uc static inline uint32_t +__attribute ((always_inline)) cns11643l1_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) { @@ -71,6 +72,7 @@ extern const char __cns11643l1_from_ucs4 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; diff -durpN glibc-2.3.2/iconvdata/cns11643l2.h glibc-2.3.3/iconvdata/cns11643l2.h --- glibc-2.3.2/iconvdata/cns11643l2.h 2001-07-07 15:20:59.000000000 -0400 +++ glibc-2.3.3/iconvdata/cns11643l2.h 2003-06-13 16:40:36.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 , 1998. @@ -26,6 +26,7 @@ extern const uint16_t __cns11643l2_to_uc static inline uint32_t +__attribute ((always_inline)) cns11643l2_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) { @@ -58,6 +59,7 @@ extern const char __cns11643_from_ucs4p0 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; diff -durpN glibc-2.3.2/iconvdata/cp932.c glibc-2.3.3/iconvdata/cp932.c --- glibc-2.3.2/iconvdata/cp932.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.3/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 , 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 +#include +#include + +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", [3181