diff -durpN glibc-2.2.3/BUGS glibc-2.2.4/BUGS --- glibc-2.2.3/BUGS Wed Nov 8 14:10:15 2000 +++ glibc-2.2.4/BUGS Mon Jul 23 10:53:33 2001 @@ -1,7 +1,7 @@ List of known bugs (certainly very incomplete) ---------------------------------------------- -Time-stamp: <2000-11-08T09:14:07 drepper> +Time-stamp: <2001-06-15T21:21:36 drepper> This following list contains those bugs which I'm aware of. Please make sure that bugs you report are not listed here. If you can fix one @@ -31,6 +31,14 @@ Severity: [ *] to [***] [ **] The RPC code is not 64 bit clean. This is getting slowly fixed but expect incompatible changes on 64 bit platforms like Alpha. + +[ **] If a DSO is using implicitly libpthread and the application itself + does not there is a name lookup problem. E.g., the function fork() + will be found in the libc.so instead of libpthread since the thread + library is behind the libc. To correct this problem it must *not* + be relied on the currently still enabled handling of weak symbols + in the dynamic linker. Instead explicit tests for the availability + of the libpthread version are needed. [PR libc/2325] [ *] The precision of the `sinhl' and/or `asinhl' function do not seem to be the best. diff -durpN glibc-2.2.3/COPYING glibc-2.2.4/COPYING --- glibc-2.2.3/COPYING Wed Mar 25 15:21:36 1998 +++ glibc-2.2.4/COPYING Mon Jul 23 10:53:33 2001 @@ -291,7 +291,7 @@ convey the exclusion of warranty; and ea the "copyright" line and a pointer to where the full notice is found. - Copyright (C) 19yy + Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -313,7 +313,7 @@ Also add information on how to contact y If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. diff -durpN glibc-2.2.3/COPYING.LIB glibc-2.2.4/COPYING.LIB --- glibc-2.2.3/COPYING.LIB Wed Mar 25 15:21:36 1998 +++ glibc-2.2.4/COPYING.LIB Mon Jul 23 10:53:33 2001 @@ -1,112 +1,128 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - Copyright (C) 1991 Free Software Foundation, Inc. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, too. + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations +below. - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. +^L + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. +^L + GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs @@ -123,7 +139,8 @@ included without limitation in the term "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation +interface definition files, plus the scripts used to control +compilation and installation of the library. Activities other than copying, distribution and modification are not @@ -133,7 +150,7 @@ such a program is covered only if its co on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. - + 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an @@ -203,7 +220,7 @@ instead of to this License. (If a newer ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. - +^L Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. @@ -254,8 +271,8 @@ Library will still fall under Section 6. distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or +^L + 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit @@ -282,23 +299,31 @@ of these things: Library will not necessarily be able to recompile the application to use the modified definitions.) - b) Accompany the work with a written offer, valid for at + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. - c) If distribution of the work is made by offering access to copy + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. - d) Verify that the user has already received a copy of these + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. @@ -308,7 +333,7 @@ restrictions of other proprietary librar accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. - +^L 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined @@ -347,9 +372,9 @@ Library), the recipient automatically re original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to +You are not responsible for enforcing compliance by third parties with this License. - +^L 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -363,9 +388,10 @@ all those who receive copies directly or the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply, and the section as a whole is intended to apply in other +circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any @@ -383,14 +409,14 @@ be a consequence of the rest of this Lic 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. +original copyright holder who places the Library under this License +may add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. +versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. @@ -401,7 +427,7 @@ conditions either of that version or of the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. - +^L 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is @@ -411,7 +437,7 @@ decision will be guided by the two goals of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. @@ -434,49 +460,56 @@ FAILURE OF THE LIBRARY TO OPERATE WITH A SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Libraries + END OF TERMS AND CONDITIONS +^L + How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). +redistribution under these terms (or, alternatively, under the terms +of the ordinary General Public License). - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should +have at least the "copyright" line and a pointer to where the full +notice is found. - + + Copyright (C) This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -Also add information on how to contact you by electronic and paper mail. +Also add information on how to contact you by electronic and paper +mail. -You should also get your employer (if you work as a programmer) or your +You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. + library `Frob' (a library for tweaking knobs) written by James +Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! + + diff -durpN glibc-2.2.3/ChangeLog glibc-2.2.4/ChangeLog --- glibc-2.2.3/ChangeLog Thu Apr 26 20:07:01 2001 +++ glibc-2.2.4/ChangeLog Wed Aug 15 18:49:57 2001 @@ -1,3 +1,2884 @@ +2001-08-15 Ulrich Drepper + + * libio/iofwide.c (_IO_fwide): Don't reset file position to + beginning of file, really get current position. + +2001-08-15 Andreas Schwab + + * sysdeps/m68k/m68020/atomicity.h (atomic_add): Don't allow + address register for operand 0. + +2001-08-14 Ulrich Drepper + + * stdio-common/perror.c (perror): Use _IO_fwide instead of fwide. + + * libio/libio.h (_IO_fwide): Handle zero as second parameter more + efficiently in macro. + +2001-08-14 Jakub Jelinek + + * resolv/nss_dns/dns-host.c (RESOLVSORT): Define. + (addrsort): New function. + * resolv/gethnamaddr.c (RESOLVSORT): Define. + +2001-08-14 Jakub Jelinek + + * string/strsignal.c (free_mem): Remove. + +2001-08-14 Andreas Jaeger + + * inet/inet_ntoa.c (free_mem): Remove, it's not used anymore. + Closes PR libc/2477, reported by Dylan Alex Simon + . + +2001-08-14 Ulrich Drepper + + * locale/Makefile (aux): Add xlocale. + * locale/xlocale.c: New file. + * include/locale.c (_nl_C_locobj): Declare. + * iconv/gconv_charset.h: Use __tolower_l, __isdigit_l, __isspace_l + with _nl_C_locobj instead of tolower, isdigit, isspace. + * iconv/gconv_conf.c: Likewise. + * iconv/gconv_int.h: Likewise. + * iconv/gconv_open.c: Likewise. + + * locale/newlocale.c: Minor cleanups. + +2001-08-14 Andreas Jaeger + + * sysdeps/ieee754/ldbl-128/w_expl.c: New file, copy from + ldbl-96/w_expl.c with tweaked constants. Patch by Stephen L + Moshier. + +2001-08-13 Ulrich Drepper + + * malloc/memusage.c (me): Allow creating the output file. + + * sysdeps/unix/sysv/linux/Makefile: Remove -fkeep-inline-functions + flag for init-first. + + * po/fr.po: Update from translation team. + +2001-08-13 Andreas Jaeger + + * sysdeps/mips/machine-gmon.h (MCOUNT): Don't use delay slot for + jal since it's a macro. + Patch by Simon Gee . + +2001-08-12 Ulrich Drepper + + * iconvdata/Makefile: Add rules to build ISO-IR-209 and MAC-SAMI. + * iconvdata/iso-ir-209.c: New file. + * iconvdata/mac-sami.c: New file. + * iconvdata/gconv-modules: Add entries for ISO-IR-209 and MAC-SAMI. + * iconvdata/tst-tables.sh: Likewise. + + * posix/getopt.c: Remove store_args_and_env which is not needed since + USE_NONOPTION_FLAGS is undefined anyhow. Use __libc_argc and + __libc_argv variables. + +2001-08-12 Roland McGrath + + * sysdeps/mach/hurd/clock.c: New file. + * sysdeps/mach/hurd/times.c: New file. + * sysdeps/mach/hurd/getclktck.c (__getclktck): Always return 1000000. + * sysdeps/mach/hurd/init-posix.c: New file. + + * hurd/hurdlookup.c (__hurd_file_name_lookup): Comment fix. + +2001-08-11 Roland McGrath + + * sysdeps/mach/hurd/bits/time.h + (CLOCK_PROCESS_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID): New macros. + * sysdeps/mach/hurd/i386/bits/time.h: File removed. + + * posix/getopt.c (nonoption_flags_max_len, nonoption_flags_len): + Make these defns conditional on [USE_NONOPTION_FLAGS]. + +2001-08-11 Ulrich Drepper + + * config.h.in: Add #undef line for USE_NONOPTION_FLAGS. + * posix/getopt_init.c: Produce code only if USE_NONOPTION_FLAGS is + defined. + * posix/getopt.c: Use __getopt_nonoption_flags only if + USE_NONOPTION_FLAGS is defined. + * sysdeps/mach/hurd/i386/init-first.c: Use __getopt_clean_environment + only if USE_NONOPTION_FLAGS is defined. + * sysdeps/mach/hurd/mips/init-first.c: Likewise. + * sysdeps/unix/sysv/linux/init-first.c: Likewise. + * sysdeps/arm/init-first.c: Likewise. + * sysdeps/generic/init-first.c: Likewise. + * sysdeps/i386/init-first.c: Likewise. + * sysdeps/sh/init-first.c: Likewise. + +2001-08-11 Andreas Jaeger + + * sysdeps/ieee754/ldbl-128/e_j0l.c: New file. + Contributed by Stephen L Moshier . + +2001-08-11 Ulrich Drepper + + * assert/assert.c (set_progname): Removed. + (__assert_fail): Use __progname instead of __assert_program_name. + * assert/assert-perr.c (__assert_perror_fail): Likewise. + + * malloc/malloc.c (ptmalloc_init): Don't call getenv five times. + Instead use new function next_env_entry which iterates over the + environment once. + + * sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Only set + _dl_profile_map for the right object. + + * elf/dl-reloc.c (_dl_relocate_object): Allocate l_reloc_result + only if consider_profiling is != 0, not if _dl_profile != NULL. + + * sysdeps/generic/dl-environ.c (_dl_next_ld_env_entry): Optimize a bit. + Now returns pointer to first character after "LD_". + * elf/rtld.c (process_envvars): Adjust for change above. + * sysdeps/unix/sysv/linux/dl-librecon.h (EXTRA_LD_ENVVARS): Likewise. + * sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS): + Likewise. + +2001-08-10 Wolfram Gloger + + * malloc/malloc.c (grow_heap): Use mmap() rather than mprotect() + to allocate new memory, for better performance with Linux-2.4.x. + +2001-08-10 Ulrich Drepper + + * posix/getopt_init.c (__getopt_clean_environment): Avoid making + the strncmp calls most of the time by testing for '_' as the first + character of the name. + + * elf/dl-open.c (add_to_global): Remove stale comment. + + * elf/dl-load.c (fillin_rpath): In SUID binaries, don't mark + non-system-dirs in LD_LIBRARY_PATH as nonexisting, simply drop them. + + * libio/iovdprintf.c (_IO_vdprintf): Set _IO_USER_LOCK flag for + temporary stream. Don't define lock. + * libio/obprintf.c (_IO_obstack_vprintf): Likewise. + * libio/strops.c (_IO_str_init_static): Likewise. + * libio/vasprintf.c (_IO_vasprintf): Likewise. + * libio/wstrops.c (_IO_wstr_init_static): Likewise. + * libio/iovsprintf.c: Likewise. + * libio/iovsnprintf.c: Likewise. + * libio/iovswprintf.c: Likewise. + * libio/iovsscanf.c: Likewise. + * libio/iovswscanf.c: Likewise. + * stdio-common/vfprintf.c [USE_IN_LIBIO] (buffered_vfprintf): Likewise. + * libio/genops.c (_IO_no_init): Don't call _IO_lock_init if _lock + is NULL. + (_IO_default_finish): Likewise. + * libio/wgenops.c (_IO_wdefault_finish): Likewise. + +2001-08-10 Andreas Jaeger + + * stdio-common/stdio_ext.h: Fix typo. + +2001-08-09 Ulrich Drepper + + * posix/fnmatch_loop.c: Fix computation of alignment. + +2001-08-09 Isamu Hasegawa + + * posix/regex.c (wcs_regex_compile): Use appropriate string + to compare with collating element. + Fix the padding for the alignment. + +2001-08-09 Isamu Hasegawa + + * locale/programs/ld-collate.c (collate_output): Exclude + characters from elem_table. + Reduce if clause to write collating elements correctly. + * posix/Makefile (tests): Add bug-regex5. + * posix/bug-regex5.c: New file. + +2001-08-09 Ulrich Drepper + + * locale/lc-time.c (_nl_parse_alt_digit): New function. + * locale/localeinfo.h: Add prototype for it. + * time/strptime.c (get_alt_number): Use _nl_parse_alt_digit to get + the value. Correct computation of hour for %OI. If no %EC given + but %Ey use numeric formular. + + * dlfcn/Makefile (tststatic-ENV): Also add $(common-objpfx)elf for + ld.so. + + * time/tst-strptime.c: Add tests in different locales. + * time/Makefile (tst-strptime-ENV): Define. + +2001-08-09 Jakub Jelinek + + * catgets/catgets.c (catclose): Be liberal about catalog_desc in + catclose too. + +2001-08-09 Ulrich Drepper + + * time/strptime.c (strptime_internal): Add handling of year + + %U/%W week + week day. + * time/tst-strptime.c: Add test case for %U and %W handling. + + * stdio-common/vfscanf.c: Fix reading of wide chars and strings if + not COMPILE_WSCANF. + + * libio/vswprintf.c (_IO_vswprintf): Fix return value handling + which is different from snprintf. + * libio/tst_swprintf.c: Add tests for too small output buffer. + + * stdio-common/vfscanf.c: Fix handling of %[] for COMPILE_WSCANF. + * libio/Makefile (tests): Add tst-swscanf. + * libio/tst-swscanf.c: New file. + +2001-08-09 Jakub Jelinek + + * posix/globtest.sh: Robustify tilde tests. + +2001-08-09 Andreas Jaeger + + * locale/programs/ld-ctype.c (DEFAULT): Fix expression. + (EMPTY): New. + (wctype_table_finalize): Use it. + (find_idx): Likewise. + (wctype_table_get): Likewise. + + * configure.in: Add check for GCC 3.x. + +2001-08-09 Ulrich Drepper + + * libio/wfileops.c (_IO_wfile_seekoff): Don't even try to handle + seeking with backup buffer present. + Correct determining of internal buffer position. + Reset also wide buffers if we reset the internal buffers. + * libio/iofwide.c (_IO_fwide): Always determine file offset for wide + streams. + * libio/ioseekoff.c: Catch one unimplemented case. + * libio/ftello.c: Don't abort if the wide stream has backup buffer. + * libio/ftello64.c: Likewise. + * libio/iofgetpos.c: Likewise. + * libio/iofgetpos64.c: Likewise. + * libio/ftell.c: Likewise. + * libio/Makefile (tests): Add tst-ungetwc2. + * libio/tst-ungetwc2.c: New file. + +2001-08-08 Ulrich Drepper + + * locale/elem-hash.h (elem_hash): Correct stupid mistake and + create real hash values now. + Patch by Isamu Hasegawa . + + * libio/iofgetpos.c (_IO_new_fgetpos): Correct a few problems in + the handling of wide streams. + + * libio/ioungetwc.c (ungetwc): Orient stream first. + * libio/Makefile (tests): Add tst-ungetwc1. + * libio/tst-ungetwc1.c: New file. + + * libio/wfileops.c (_IO_wfile_underflow): Remove incorrect test + for possible conversion using __codecvt_do_in. + * libio/Makefile (tests): Add tst-fgetws. + * libio/tst-fgetws.c: New file. + + * libio/iofgetws.c: Use _IO_ferror_unlocked macros instead of + coding the test here. + + * catgets/open_catalog.c: Rewrite code to assume that the function + is called at catopen time and not delayed in catgets. + * catgets/catgets.c (catopen): Call __open_catalog and fail if that + function failed. + (catgets): Remove code for delayed opening of catalog. + * catgets/catgetsinfo.h: Remove now unnecessary information from + struct catalog_info. Change __open_catalog prototype. + * catgets/gencat.c: Adjust __open_catalog call. + * catgets/test-gencat.c: Stop program if catopen failed. + + * locale/C-monetary.c (_nl_C_LC_MONETARY): Provide correct value + for CRNCYSTR. + + * locale/programs/ld-messages.c (messages_finish): Provide POSIX + locale compliant default values for fields without definition. + * locale/programs/ld-time.c (time_finish): Likewise. + * locale/programs/ld-monetary.c (monetary_finish): Likewise. + +2001-08-08 Andreas Jaeger + + * sysdeps/ieee754/ldbl-96/s_ilogbl.c (__ilogbl): Fix test for + infinity. + +2001-08-07 Ulrich Drepper + + * sysdeps/ia64/memusage.h (GETTIME): Define using hp-timing.h + functionality. + + * sysdeps/ia64/hp-timing.h (HP_TIMING_NOW): Fix comment. + +2001-08-07 Jakub Jelinek + + * malloc/memusage.c (initialized): New variable. + (init): If not yet initialized, call me(). + (me): Do all dlsym calls here. + (malloc, realloc, calloc, free): If not yet initialized, + call me(). If in the middle of initializing, return NULL or + do nothing. + +2001-08-07 Jakub Jelinek + + * sysdeps/unix/seekdir.c (seekdir): Set dirp->filepos. + + * dirent/tst-seekdir.c (main): Check whether telldir right after + seekdir returns 2nd argument given to seekdir. + +2001-08-07 Franz Sirl + + * dlfcn/Makefile (tststatic-ENV): Add $(common-objpfx) to + LD_LIBRARY_PATH. + +2001-08-07 Andreas Jaeger + Andreas Schwab + Bruno Haible + + * locale/programs/3level.h (EMPTY): New macro. + (*_get, *_add, *_iterate, *_finalize): Use it instead of ~(uint32_t) 0. + +2001-08-08 GOTO Masanori + + * locale/iso-3166.def: Updates from latest official list. + +2001-08-07 Andreas Jaeger + + * stdlib/tst-strtod.c: Disable HUGE_VAL tests for older GCCs. + + * iconv/gconv_charset.h (upstr): Add unused attribute to avoid warning. + + * libio/iopopen.c (_IO_new_proc_open): Fix typos, it's _IO_MTSAFE_IO. + (_IO_new_proc_close): Likewise. + * libio/oldiopopen.c (_IO_old_proc_open): Likewise. + (_IO_old_proc_close): Likewise. + +2001-08-06 Ulrich Drepper + + * manual/locale.texi: Add documentation for rpmatch. + Patch by Jochen Hein . + +2001-08-06 Jakub Jelinek + + * stdlib/strtod.c (STRTOF): Skip whole infinity, not just inf. + * stdio-common/vfscanf.c (__vfscanf): +- can be followed by i in +-Inf. + + * stdlib/tst-strtod.c (tests): Add Inf tests. + * stdio-common/tstscanf.c (main): Add tests for +- before Inf. + +2001-08-06 Ulrich Drepper + + * locale/weightwc.h (findidx): Change type of i to int32_t. + + * wcsmbs/wcsmbs-tst1.c (main): Avoid warning. Pretty printing. + +2001-08-05 Roland McGrath + + * sysdeps/unix/bsd/bsd4.4/bits/dirent.h (struct dirent): Rename member + d_fileno to d_ino. + (struct dirent64): Likewise. + (d_fileno): Define as macro. + +2001-08-04 Roland McGrath + + * sysdeps/mach/hurd/getrusage.c: Use TASK_EVENTS_INFO if implemented + by the microkernel (which it's not). + +2001-08-04 Ulrich Drepper + + * libio/fileops.c (_IO_new_file_underflow): Don't call + _IO_flush_all_linebuffered. This isn't required in any standard. + Instead flush only stdout. + * libio/wfileops.c (_IO_wfile_underflow): Likewise. + +2001-08-04 Franz Sirl + + * dlfcn/Makefile: Add rules for new testcase tststatic. + * dlfcn/tststatic.c: New file. + * dlfcn/modstatic.c: New file. + +2001-08-04 Ulrich Drepper + + * manual/summary.awk: Fix value used for FF. + + * elf/rtld.c: Correct use of __builtin_expect. + + * elf/dl-close.c: Remove commented-out code. + + * libio/genops.c (_IO_unbuffer_write): Force streams in narrow + orientation so that conversion modules aren't used anymore. + * malloc/set-freeres.c: Call _IO_cleanup before running subfreeres + functions to avoid using wide streams afterwards. + + * iconvdata/Makefile: Add rules to build GEORGIAN-PS and + GEORGIAN-ACADEMY. + * iconvdata/georgian-ps.c: New file. + * iconvdata/georgian-academy.c: New file. + * iconvdata/gconv-modules: Add entries for GEORGIAN-PS and + GEORGIAN-ACADEMY. + * iconvdata/tst-tables.sh: Add GEORGIAN-PS and GEORGIAN-ACADEMY. + +2001-08-03 Ulrich Drepper + + * locale/programs/ld-collate (insert_value): If symbol in order + definition does not exist create it as a sequence without + associated multibyte and wide representation. + +2001-07-30 Roland McGrath + + * sysdeps/mach/bits/libc-lock.h (__libc_cleanup_region_start): Diddle + syntax so both function and pointer-to-function arguments work right. + +2001-08-03 Tom Rix + + * config.h.in: Add HAVE_XCOFF for AIX. + * configure.in: Add --with-xcoff option. + * include/libc-symbols.h: Disable the .stabs macros. + +2001-08-03 Ulrich Drepper + + * iconvdata/8bit-gap.c: Correctly use __builtin_expect. + * iconvdata/ansi_x3.110.c: Likewise. + * iconvdata/big5.c: Likewise. + * iconvdata/euc-cn.c: Likewise. + * iconvdata/euc-jp.c: Likewise. + * iconvdata/euc-kr.c: Likewise. + * iconvdata/gb18030.c: Likewise. + * iconvdata/gbbig5.c: Likewise. + * iconvdata/gbgbk.c: Likewise. + * iconvdata/gbk.c: Likewise. + * iconvdata/ibm930.c: Likewise. + * iconvdata/ibm932.c: Likewise. + * iconvdata/ibm933.c: Likewise. + * iconvdata/ibm935.c: Likewise. + * iconvdata/ibm939.c: Likewise. + * iconvdata/ibm943.c: Likewise. + * iconvdata/iso-2022-cn.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * iconvdata/iso646.c: Likewise. + * iconvdata/iso8859-1.c: Likewise. + * iconvdata/iso_6937-2.c: Likewise. + * iconvdata/iso_6937.c: Likewise. + * iconvdata/johab.c: Likewise. + * iconvdata/sjis.c: Likewise. + * iconvdata/t.61.c: Likewise. + * iconvdata/uhc.c: Likewise. + * iconvdata/unicode.c: Likewise. + * iconvdata/utf-16.c: Likewise. + * iconv/gconv_simple.c: Likewise. Convert assert() in real error + handling. + + * iconvdata/Makefile: Add rules to build KOI8-T module. + * iconvdata/koi8-t.c: New file. + * iconvdata/gconv-modules: Add entries for KOI8-T. + * iconvdata/tst-tables.sh: Add KOI8-T. + + * locale/iso-639.def: Correct Javanese 2 letter code. Add Tonga. + Add Tigrinya. + +2001-08-02 Ulrich Drepper + + * locale/programs/ld-collate.c (collate_read): Handle collating-element + and reorder_after following copy statement correctly. + +2001-08-02 Andreas Jaeger + + * libio/bits/stdio.h (printf): Remove printf optimization since + GCC 3.0 can optimize printf. + +2001-08-02 Ulrich Weigand + + * sysdeps/s390/s390-32/memcpy.S: Fixed incorrect use of + mvcle introduced by 2001-07-12 change. + * sysdeps/s390/s390-64/memcpy.S: Likewise. + +2001-07-31 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/getcontext.S: Don't touch the %gs + register so that contexts can be used in different threads. + * sysdeps/unix/sysv/linux/i386/setcontext.S: Likewise. + * sysdeps/unix/sysv/linux/i386/swapcontext.S: Likewise. + + * sysdeps/unix/sysv/linux/cmsg_nxthdr.c (__cmsg_nxthdr): Correct + test for cmsg struct size. + * sysdeps/unix/sysv/linux/bits/socket.h (__cmsg_nxthdr): Likewise. + + * sysdeps/unix/sysv/linux/i386/makecontext.S: Remove unnecessary + initializations. + + * libio/iopopen.c: Add lock for proc_file_chain access. + * libio/oldiopopen.c: Add lock for old_proc_file_chain access. + Reported by Padraig Brady . + +2001-07-31 Andreas Jaeger + + * sysdeps/unix/sysv/linux/sparc/bits/poll.h (NPOLLFILE): Removed. + * sysdeps/unix/sysv/linux/mips/bits/poll.h (NPOLLFILE): Removed. + * sysdeps/unix/sysv/linux/m68k/bits/poll.h (NPOLLFILE): Removed. + * sysdeps/unix/sysv/linux/bits/poll.h (NPOLLFILE): Removed. + * sysdeps/generic/bits/poll.h (NPOLLFILE): Removed. + + * libio/genops.c (flush_cleanup): Guard list_all_lock to allow + compilation without threads. + +2001-07-30 Ulrich Drepper + + * po/fr.po: Update from translation team. + +2001-07-30 Andreas Jaeger + + * sysdeps/ieee754/ldbl-128/e_atanhl.c: New file, contributed by + Stephen L Moshier. + + * posix/regex.c: Declare wcs functions only if compiling with + MBS_SUPPORT. + Don't use #elif for traditional C. + +2001-07-29 Mark Kettenis + + * sysdeps/mach/hurd/recvmsg.c: New file. + * sysdeps/mach/hurd/sendmsg.c: New file. + +2001-07-27 Ulrich Drepper + + * version.h (VERSION): Bump to 2.2.4. + + * sysdeps/mips/Dist: Remove non-existing files. + * sysdeps/mips/mips64/Dist: Likewise. + * sysdeps/mips/mipsel/Dist: Removed. + * iconv/Makefile (distribute): Add strtab.c and iconvconfig.h. + * sysdeps/generic/Dist: Add bits/link.h. + * sysdeps/unix/sysv/linux/m68k/Dist: Add sys/procfs.h. + * sysdeps/unix/sysv/aix/Dist: Add dl-support.c, dl-addr.c, and + dl-error.c. + * sysdeps/ia64/Dist: Add bits/link.h. + + * libio/vasprintf.c (_IO_vasprintf): Don't copy uninitialized byte + from stream buffer to result buffer. + Reported by Michael Meeks . + + * libio/Makefile: Add rules to check output of tst-fopenloc and + for memory leaks. + * libio/tst-fopenloc.c: New file. + + * iconv/gconv_cache.c (__gconv_compare_alias_cache): New function. + * iconv/gconv_int.h: Add prototype for __gconv_compare_alias_cache. + * iconv/gconv_charset.h: Replace __gconv_lookup_alias prototype with + __gconv_compare_alias prototype. + * iconv/gconv_db.c (__gconv_lookup_alias): Removed. + (__gconv_compare_alias): New function. + * locale/findlocale.c (_nl_find_locale): Use __gconv_compare_alias + instead of calling __gconv_lookup_alias twice and compare here. + +2001-07-26 Mark Kettenis + + * hurd/hurdsig.c (_hurd_internal_post_signal): Fix handling of + SA_RESETHAND and SA_NODEFER. + +2001-07-27 Ulrich Drepper + + * libio/fileops.c (_IO_new_file_fopen): Correctly locate ccs= + substring. Don't handle ccs= if no descriptor was allocated. + Normalize codeset name before calling __wcsmbs_named_conv. + Initialize transliteration elements. Free step data structure. + * libio/iofclose.c (_IO_new_fclose): Correct freeing of the step data. + * libio/iofwide.c (__libio_translit): Renamed from libio_translit + and made public. Various little cleanup changes. + * wcsmbs/wcsmbsload.h (struct gconv_fcts): Add towc_nsteps and + tomb_nsteps member. + * wcsmbs/wcsmbsload.c: Add some casts to avoid warnings. + (__wcsmbs_gconv_fcts): Initialize towc_nsteps and tomb_nsteps member. + (getfct): Take additional parameter with pointer to variable where the + number of steps is stored in. Disable code which allows to use more + than one step for now. Adjust all callers. + (free_mem): New function. Frees data associated with currently + selected converters. + + * malloc/mtrace.pl: Extract addresses from DSOs. + +2001-07-26 Ulrich Drepper + + * malloc/mcheck.c (checkhdr): Disable mcheck before reporting an + error. Don't run any tests if mcheck is disabled. + + * elf/dl-support.c (_dl_important_hwcaps): Avoid using malloc + early in the program. + +2001-07-27 Andreas Jaeger + + * sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.h (SC_GPRS): Fix + value following change from 2001-05-30. + + * sysdeps/s390/s390-64/bits/setjmp.h (_JMPBUF_UNWINDS): Follow + rename change from 2001-07-12 for __jmp_buf. + Patches by Ulrich Weigand . + +2001-07-26 Roland McGrath + + * sysdeps/generic/bits/termios.h (EXTA, EXTB): Make these conditional + on __USE_MISC rather than __USE_BSD. + (B57600, B115200, B230400, B460800, B500000, B576000, B921600, + B1000000, B1152000, B1500000, B2000000, B2500000, B3000000, + B3500000, B4000000): New macros. + * sysdeps/generic/tcsetattr.c (bad_speed): Accept those values. + * termios/cfsetspeed.c (speeds): Likewise. + +2001-07-26 kaz Kojima + + * sysdeps/sh/dl-machine.h (elf_machine_load_address): Don't use + multi-line strings. + (FUN_ADDR, FGR_SAVE, ELF_MACHINE_RUNTIME_TRAMPOLINE): Likewise. + (elf_machine_rela): Handle unaligned relocation. + +2001-06-07 David Mosberger + + * sysdeps/ia64/dl-symaddr.c (_dl_symbol_address): Update call to + __ia64_make_fptr() for new interface. + (_dl_function_address): Remove. + + * sysdeps/ia64/dl-machine.h (IA64_BOOT_FPTR_TABLE_LEN): Rename + from IA64_BOOT_FPTR_SIZE and reduce its value from 256 to 200. + (struct ia64_fdesc): Rename from struct ia64_fptr and drop "next" + pointer. Rename member "func" to "ip". + (struct ia64_fdesc_table): New type. + (__ia64_make_fptr): Change prototype. + (__ia64_init_bootstrap_fdesc_table): New function. + (ELF_MACHINE_BEFORE_RTLD_RELOC): New macro. + (__boot_ldso_fptr): Removed. + (__fptr_next): Removed. + (__fptr_root): Removed. + (__fptr_count): Removed. + (TRAMPOLINE_TEMPLATE): Fix typo in comment. Don't use multi-line + strings to avoid warning from gcc3. + (RTLD_START): Don't use multi-line strings. + (ELF_MACHINE_START_ADDRESS): Use DL_STATIC_FUNCTION_ADDRESS. + (elf_machine_fixup_plt): Update the code entry point in the + function descriptor through a "volatile" pointer to ensure proper + write ordering. + (elf_machine_rela): Simplify handling of FPTR relocs: always call + __ia64_make_fptr(). + + * sysdeps/ia64/dl-lookupcfg.h (DL_AUTO_FUNCTION_ADDRESS): New macro. + (DL_STATIC_FUNCTION_ADDRESS): Likewise. + (DL_DT_INIT_ADDRESS): Use DL_AUTO_FUNCTION_ADDRESS. + (DL_DT_FINI_ADDRESS): Likewise. + + * sysdeps/ia64/dl-fptr.c: Rewrite for better scalability and to + avoid deadlocks. + + * include/link.h: Add member machine specific "l_mach" member to + link_map. + + * sysdeps/generic/bits/link.h: New file. + * sysdeps/ia64/bits/link.h: Likewise. + + * elf/rtld.c (_dl_start): Fix typo in comment. + (_dl_start_final): Copy new "l_mach" member from temporary to + final bootstrap map. + +2001-07-25 Ulrich Drepper + + * csu/gmon-start.c: Use ENTRY_POINT_DECL if defined instead of a + declaration using ENTRY_POINT. + * sysdeps/ia64/elf/entry.h (ENTRY_POINT_DECL): New definition. + +2001-07-25 H.J. Lu + + * csu/gmon-start.c: Include + (_start): Replaced with ENTRY_POINT. + +2001-07-25 Mark Kettenis + + * sysdeps/unix/bsd/bsd4.4/bits/socket.h: New file. + +2001-07-25 Ulrich Drepper + + * iconv/iconvconfig.c (main): Don't write an output file if we + have seen an error. + (write_output): Don't overwrite old cache file until we know we + have a new one. + + * iconv/Makefile (install-sbin): Add iconvconfig. + +2001-07-25 Jakub Jelinek + + * elf/Makefile (routines): Add dl-iteratephdr and + dl-iteratephdr-static. + (elide-routines.os): Add dl-iteratephdr-static. + * elf/dl-iteratephdr.c: New file. + * elf/link.h (struct dl_phdr_info): New definition. + (dl_iterate_phdr): New prototype. + * elf/Versions (dl_iterate_phdr): Add at GLIBC_2.2.4. + * include/link.h (struct dl_phdr_info): New definition. + (dl_iterate_phdr, __dl_iterate_phdr): New prototypes. + * sysdeps/generic/dl-iteratephdr-static.c: New file. + * sysdeps/unix/sysv/linux/ia64/dl-iteratephdr-static.c: New file. + +2001-07-24 Igor Khavkine + + * hurd/hurdsig.c (_hurdsig_init): Fix incorrect initialization + of pending signals. + +2001-06-22 Jakub Jelinek + + * sysdeps/powerpc/dl-machine.c (__elf_preferred_address): Prefer + gaps below main executable. + +2001-07-22 Bruno Haible + + * intl/libintl.h (ngettext, dngettext, dcngettext): Use both msgid1 + and msgid2 for printf format argument checking. + +2001-07-24 Ulrich Drepper + + * iconv/gconv_cache.c (find_module): Don't allocate room for the + filename. Use alloca, we don't need it beyond this function. + (__gconv_release_cache): New function. + * iconv/gconv_db.c (__gconv_close_transform): Call + __gconv_release_cache after the steps are handled. + * iconv/gconv_dl.c (__gconv_find_shlib): Allocate file name in the + record as well. + * iconv/gconv_int.h: Add prototype for __gconv_release_cache. + + * iconv/gconv_cache.c (__gconv_lookup_cache): Catch one more + boundary case and reject it. + +2001-07-24 Andreas Jaeger + + * manual/examples/longopt.c (main): Fix which options take arguments. + +2001-07-24 Ulrich Drepper + + * iconvdata/Makefile: Add dependencies for tst-loading test. + +2001-07-24 Andreas Jaeger + + * iconv/iconvconfig.c (name_insert): Make static to avoid warning. + +2001-07-23 Ulrich Drepper + + * locale/programs/locale.c (write_locales): Disable implicit + locking for the stream. Use feof_unlocked instead of feof. + + * sysdeps/unix/sysv/linux/i386/makecontext.S: Initialize %fs, %gs, + and floating-point status as well. + + * libio/iofclose.c (_IO_new_fclose): Unlink descriptor first to + avoid deadlock. + * libio/oldiofclose.c (_IO_old_fclose): Likewise. + * libio/genops.c (_IO_un_link): Get stream lock since it's not + always done in the caller. + (_IO_link_in): Likewise. + + * libio/genops.c (_IO_list_all_stamp): New variable. + (_IO_un_link): Bump _IO_list_all_stamp after removing from list. + (_IO_link): Likewise for insertion. + (flush_cleanup): New function. + (_IO_flush_all): Get list_all_lock and all individual locks for the + streams. Detect and handle changes to the _IO_list_all list. + (_IO_flush_all_linebuffered): Likewise. + * sysdeps/generic/bits/stdio-lock.h: Define + _IO_cleanup_region_start_noarg. + * sysdeps/mach/hurd/bits/stdio-lock.c: Likewise. + + * stdio-common/printf.h: Fix typo in comment. + + * iconv/gconv_cache.c (__gconv_lookup_cache): Handle encoding from + and to INTERNAL. + * iconv/iconvconfig.c: Create a special record for the INTERNAL + encoding name in the output file. + +2001-07-23 Jakub Jelinek + + * sunrpc/svc_tcp.c (svctcp_rendezvous_abort): New function. + (svctcp_rendezvous_op): Use it. + * sunrpc/svc_unix.c (svcunix_rendezvous_abort): New function. + (svcunix_rendezvous_op): Use it. + +2001-07-23 Andreas Schwab + + * math/Makefile (CPPFLAGS-test-ifloat.c, CPPFLAGS-test-idouble.c, + CPPFLAGS-test-ildoubl.c): Renamed from CFLAGS-*. + (math-CPPFLAGS): Set this instead of CPPFLAGS. + +2001-07-23 Ulrich Drepper + + * elf/elf.h: Add more definitions from Sun's latest version. + +2001-07-23 Stephen L Moshier + + * sysdeps/ieee754/ldbl-128/s_log1pl.c (__log1pl): Return proper + sign for 0 input and set divide by zero exception for -1 input. + Return argument if NaN or infinity. + +2001-07-23 Andreas Jaeger + + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Add some deltas. + +2001-07-23 Ulrich Drepper + + * iconv/gconv_cache.c (__gconv_lookup_cache): Select correct + module for conversion direction. + +2001-07-23 Stephen L Moshier + + * sysdeps/ieee754/ldbl-128/s_expm1l.c (__expm1l): Return proper + sign for 0 input. Return NaN with no exception for NaN input. + +2001-07-23 Ulrich Drepper + + * iconv/gconv_builtin.h: ISO-106464/UTF-8/ transformation must + really be an alias. + +2001-07-23 Andreas Jaeger + + * iconv/iconvconfig.c: Include and use + __attribute_malloc__ for older GCC versions. + * iconv/strtab.c: Likewise. + Add prototypes to avoid warnings. + +2001-07-22 Roland McGrath + + * hurd/hurdsig.c (_hurd_internal_post_signal): Support SA_RESETHAND + and SA_NODEFER options. Spurred to action by Igor Khavkine. + + * sysdeps/generic/bits/sigaction.h [__USE_UNIX98 || __USE_MISC] + (SA_NODEFER, SA_RESETHAND): New macros, same bit values as FreeBSD. + [__USE_MISC] (SA_INTERRUPT): New macro, value 0. + [__USE_MISC] (SA_NOMASK, SA_ONESHOT, SA_STACK): New macros, aliases + as in other sysdeps versions of this file. + + * sysdeps/generic/bits/sigaction.h (struct sigaction): Use a union + and provide sa_handler and sa_sigaction member names as macros, as + done in other sysdeps versions of this file. + Suggested by Igor Khavkine . + +2001-07-23 Ulrich Drepper + + * posix/regex.c: Revamp memory allocation for WCHAR functions to + not use too much stack. + +2001-07-22 Ulrich Drepper + + * iconv/iconvconfig.c (write_output): Update comment explaining + output format. + + * elf/dl-load.c (_dl_dst_count): In SUID binaries expand $ORIGIN + if it is alone. + (_dl_dst_substitute): Likewise. + + * iconv/iconvconfig.c: Remove --verbose option. Comment out + mcheck_verbose call. + + * iconv/strtab.c (morememory): Fix little memory handling problem. + +2001-07-22 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/sysdep.h (INLINE_SYSCALL): Don't + mark asm input operand as clobbered. + * sysdeps/unix/sysv/linux/m68k/brk.c (__brk): Likewise. + +2001-07-22 Ulrich Drepper + + * iconv/gconv_builtin.c (struct builtin_map): Remove init and end + elements. + (BUILTIN_TRANSFORMATION): Remove Init and End parameters. + (__gconv_get_builtin_trans): Initialize __init_fct and __end_fct to + NULL. + * iconv/gconv_builtin.h: Remove NULL parameters for Init and End in + all BUILTIN_TRANSFORMATION calls. + * iconv/gconv_conf.c (BUILTIN_TRANSFORMATION): Remove Init and End + parameters. + * iconv/gconv_simple.c: Likewise. + * iconv/gconv_db.c (gen_steps): Internal converters don't have + initializers, move the code accordingly. + + * iconv/gconv_conf.c (__gconv_read_conf): Don't read configuration + file if STATIC_GCONV is defined. + + * iconv/gconv_conf.c (__gconv_path_envvar): New global variable. + (__gconv_get_path): Use it instead of call getenv. + (__gconv_read_conf): First see whether cache can be used. If yes, + don't do any work here. + * iconv/gconv_db.c (__gconv_release_step): Renamed from release_step + and exported. Change callers. + (__gconv_find_transform): First call __gconv_lookup_cache and only + continue if it signals no cache available. Remove some unnecessary + tests. + * iconv/gconv_int.h: Declare __gconv_path_envvar, __gconv_lookup_cache, + __gconv_release_step, and __gconv_loaded_cache. + * iconv/gconv_cache.c: New file. + * iconv/iconvconfig.c: New file. + * iconv/iconvconfig.h: New file. + * iconv/strtab.c: New file. + * iconv/Makefile: Add rules to build new files and programs. + +2001-07-20 Roland McGrath + + * sysdeps/generic/device-nrs.h (DEV_TTY_P): Change argument type + from `dev_t' (st_rdev value) `const struct stat *'. + * sysdeps/unix/sysv/linux/device-nrs.h (DEV_TTY_P): Likewise. + * libio/filedoalloc.c (_IO_file_doallocate): Change caller. + * sysdeps/mach/hurd/device-nrs.h: New file. + + * libio/stdio_ext.h: Moved to ... + * stdio-common/stdio_ext.h: ... here. + * libio/Makefile (headers): Move stdio_ext.h from here ... + * stdio-common/Makefile (headers): ... to here. + * include/stdio_ext.h: New file. + * stdio/Makefile (routines): Add the stdio_ext.h functions here. + * stdio/Versions (GLIBC_2.2.4): Export the stdio_ext.h functions. + * stdio/__flbf.c: New file. + * stdio/__fbufsize.c: New file. + * stdio/__fpending.c: New file. + * stdio/__fpurge.c: New file. + * stdio/__freadable.c: New file. + * stdio/__freading.c: New file. + * stdio/__fsetlocking.c: New file. + * stdio/__fwritable.c: New file. + * stdio/__fwriting.c: New file. + +2001-07-20 Ulrich Drepper + Andreas Jaeger + + * elf/ldconfig.c (search_dir): Avoid use of uninitialized memory. + Add a few __builtin_expect to mark unlikely error cases. + +2001-07-20 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Synch with kernel. + Patch by Daniel Jacobowitz . + +2001-07-19 Ulrich Drepper + + * intl/localealias.c: Remove unnecessary prototype. + + * Makefile: Add html goal. + * manual/Makefile: Likewise. + +2001-07-18 Ulrich Drepper + + * libio/filedoalloc.c (_IO_file_doallocate): A few more minor + cleanups and improvements. + +2001-07-18 Andreas Schwab + + * posix/regex.c (WORDCHAR_P) [WCHAR]: Also return true for the + underscore character. + +2001-07-18 Jakub Jelinek + + * malloc/malloc (new_heap): Don't call munmap for zero length. + +2001-07-18 Ulrich Drepper + + * libio/filedoalloc.c (_IO_file_doallocate): Use DEV_TTY_P if + available to determine whether descriptor is for tty before + calling isatty. + + * sysdeps/unix/sysv/linux/device-nrs.h: Define DEV_TTY_P. + * sysdeps/generic/device-nrs.h: Likewise. + +2001-07-18 Andreas Jaeger + + * time/Makefile (tst-getdate-ENV): Add TZDIR to environment. + + * time/Depend: New, add dependency on timezone. + + * time/tst-getdate.c: Add testcase for bug report by Hendrik + Uhlmann . + * time/datemsk: Likewise. + +2001-07-17 Ulrich Drepper + + * elf/ldconfig.c (parse_conf): Disable implicit locking for the + stream. Remove some unnecessary initializers. + +2001-07-17 Andreas Jaeger + + * elf/ldconfig.c: Add new variable hwcap_mask to honour LD_HWCAP_MASK. + (is_hwcap_platform): Use it. + (set_hwcap): New function to set hwcap_mask. + (main): Call set_hwcap. + +2001-07-17 Jakub Jelinek + + * time/getdate.c (__getdate_r): Initialize tm_isdst, tm_gmtoff and + tm_zone before calling strptime. + +2001-07-17 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/getpagesize.c: Fix last change. + +2001-07-17 Ulrich Drepper + + * inet/rcmd.c (iruserfopen): Disable implicit locking for the stream. + * inet/ruserpass.c (ruserpass): Likewise. + * nss/nsswitch.c (nss_parse_file): Likewise. + * resolv/res_hconf.c (_res_hconf_init): Likewise. + * resolv/res_init.c (__res_vinit): Likewise. + * gmon/bb_exit_func.c (__bb_exit_func): Likewise. + * misc/getpass.c (getpass): Likewise. + * misc/getusershell.c (initshells): Likewise. + * misc/getttyent.c (setttyent): Likewise. + * misc/mntent_r.c (__setmntent): Likewise. + * time/getdate.c (__getdate_r): Likewise. + * time/tzfile.c (__tzfile_read): Likewise. + * iconv/gconv_conf.c (read_conf_file): Likewise. + * intl/localealias.c (read_alias_file): Disable implicit locking + for the stream. Use _unlocked functions for glibc. + * sysdeps/unix/sysv/linux/getsysstats.c (__get_nprocs): Disable + implicit locking for the stream. + (__get_nprocs_conf): Likewise. + (phys_pages_info): Likewise. + +2001-07-16 Ulrich Drepper + + * nscd/connections.c: Print messages caused by user application + only if debug_level > 0. Add little performance improvements. + Use TEMP_FAILURE_RETRY around write calls. + * nscd/grpcache.c: Likewise. + * nscd/hstcache.c: Likewise. + * nscd/pwdcache.c: Likewise. + +2001-07-13 H.J. Lu + + * sysdeps/mips/dl-machine.h (MAP_BASE_ADDR): Removed. + (elf_machine_got_rel): Defined only if RTLD_BOOTSTRAP is not defined. + (RESOLVE_GOTSYM): Rewrite to use RESOLVE. + + * sysdeps/mips/rtld-ldscript.in: Removed. + * sysdeps/mips/rtld-parms: Likewise. + * sysdeps/mips/mips64/rtld-parms: Likewise. + * sysdeps/mips/mipsel/rtld-parms: Likewise. + +2001-07-16 Ulrich Drepper + + * catgets/test-gencat.sh: Use <<"EOF" instead of < + + * sysdeps/posix/spawni.c: Fix typo when iterating over signal numbers. + +2001-07-16 Andreas Schwab + + * math/libm-test.inc (check_float_internal): Fix sign bit test of + infinities. + +2001-07-16 Jakub Jelinek + + * sysdeps/i386/fpu/e_expl.c (__ieee754_expl): Make it PIC friendly. + +2001-07-15 Ulrich Drepper + + * malloc/obstack.c: Define __attribute__ for non-gcc compilers. + Patch by Jim Meyering . + +2001-07-12 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h: Reorder + fields in the sigaction struct to match the definition in the kernel. + +2001-07-12 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S: Correct the + test for ENOSYS. + +2001-07-12 Martin Schwidefsky + + * sysdeps/s390/s390-32/bits/setjmp.h: Add leading underscores + to the entries in the __jmp_buf structure. + * sysdeps/s390/s390-64/bits/setjmp.h: Likewise. + +2001-07-12 Martin Schwidefsky + + * sysdeps/s390/s390-32/bcopy.S: Use mvcle for big blocks + (> 64K) and a mvc loop for small blocks. + * sysdeps/s390/s390-32/memcpy.S: Likewise. + * sysdeps/s390/s390-64/bcopy.S: Likewise. + * sysdeps/s390/s390-64/memcpy.S: Likewise. + +2001-07-15 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/sys/procfs.h: New file. + * sysdeps/unix/sysv/linux/m68k/sys/ucontext.h: New file. + + * sysdeps/unix/sysv/linux/m68k/getpagesize.c: Check _dl_pagesize + first. Default to 4096, not EXEC_PAGESIZE. + + * iconv/loop.c (put16) [!_STRING_ARCH_unaligned && BIG_ENDIAN]: + Fix index. + +2001-07-09 Andreas Jaeger + + * sysdeps/unix/sysv/linux/i386/dl-procinfo.c: Name entry for xmm2. + + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Add HWCAP_I386_XMM, + HWCAP_I386_XMM2 to enum. + +2001-07-13 Andreas Jaeger + + * libio/fileops.c: Include unistd.h for lseek64 prototype. Closes + PR libc/2372. + +2001-07-12 Ulrich Drepper + + * Makeconfig: Add some more changes to handle AIX linker better. + +2001-07-12 H.J. Lu + + * sysdeps/generic/segfault.c: Include . + +2001-07-01 Andreas Jaeger + + * sysdeps/unix/sysv/linux/dl-sysdep.c (frob_brk): Remove duplicate + sbrk. Closes PR libc/2312. + +2001-07-01 Andreas Jaeger + + * sysdeps/generic/segfault.c (install_handler): Handle case that + the output file does not exists. Closes PR libc/2345. + +2001-07-11 Ulrich Drepper + + * intl/locale.alias: Use he language code for hebrew, not il + [PR libc/2382]. + +2001-07-11 Jakub Jelinek + + * iconv/gconv_int.h: Fix comment typo. + +2001-07-11 Igor Khavkine + + * hurd/hurdsig.c (_hurdsig_init): Remove a useless line of code. + +2001-07-07 Roland McGrath + + * hurd/hurdsig.c (_hurd_thread_sigstate): Use MACH_PORT_NULL, not 0. + +2001-07-10 Stephen L Moshier + + * sysdeps/ieee754/ldbl-128/e_acosl.c (__ieee754_acosl): Fix + backwards conditional in test for x == 1.0. + +2001-07-10 Andreas Jaeger + + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Add ulps for tanh + (-0.7). + +2001-07-09 Andreas Jaeger + + * sysdeps/unix/sysv/linux/configure.in: Revert patch from + 2001-07-05 for sysconfdir handling. + * config.make.in (sysconfdir): Likewise. + * configure.in: Likewise. + + * configure.in: Always assign libc_cv_sysconfdir. + +2001-07-08 Ulrich Drepper + + * Makerules [AIX] (build-shlib-helper): Precede linker options + with -Wl. + + * Makeconfig (config-LDFLAGS): Add ld.so only for ELF. + + * sysdeps/unix/make_errlist.c: Adjust sys_errlist declaration to + what we define in . + + * iconv/iconv_prog.c (main): Don't unconditionally define + variables only use if _POSIX_MAPPED_FILES is defined. + + * sysdeps/unix/sysv/aix/sendmsg.c (sendmsg): Fix return type. + * sysdeps/unix/sysv/aix/recvmsg.c (recvmsg): Likewise. + + * sysdeps/unix/sysv/aix/recv.c: New file. + + * sysdeps/unix/sysv/aix/recvfrom.c: Fix various types. + +2001-07-07 Ulrich Drepper + + * sysdeps/generic/recv.c: Fix return type. + + * sysdeps/unix/sysv/aix/dl-libc.c (__libc_dlclose): Fix typo. + + * sysdeps/unix/sysv/aix/gettimeofday.c (__gettimeofday): Add + declarations for asm functions. + + * include/libc-symbols.h: Provide more dummy definitions for the + case if GNU ld isn't used. + + * libio/freopen.c: Include for free declaration. + * libio/freopen64.c: Likewise. + + * sysdeps/alpha/fpu/libm-test-ulps: Add deltas for tanh(-0.7). + +2001-07-06 Jakub Jelinek + + * sysdeps/unix/sysv/linux/i386/sigaction.c (RESTORE2): Put asm + explicitly into .text section. + +2001-04-16 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext): + Add 16 longwords reserved for future use to match changes in the + kernel. + +2001-07-03 Jes Sorensen + + * sysdeps/ia64/strncpy.S: Call strnlen() when determining the + string length rather than strlen(). Solves the performance problem + of doing strlen on a 5MB string when strncpy was called with a + length argument of 5 bytes. + +2001-07-02 Jakub Jelinek + + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Handle + R_SPARC_UA16 and R_SPARC_UA32. + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Likewise. + +2001-07-01 Stephen L Moshier + + * sysdeps/ieee754/ldbl-96/e_acoshl.c (__ieee754_acoshl): + acosh(x) = ln(2x) if x > 2^30. + * sysdeps/ieee754/ldbl-128/e_acoshl.c (__ieee754_acoshl): + acosh(x) = ln(2x) if x > 2^54. + +2001-07-07 Mark Kettenis + + * sysdeps/mach/hurd/i386/exc2signal.c (_hurd_exception2signal): + Generate SIGSEGV instead of SIGBUS for KERN_INVALID_ADDRESS and + KERN_WRITE_PROTECTION_FAILURE. + +2001-07-07 Ulrich Drepper + + * posix/regex.c: Limit string length printed in debug messages to + 100 chars. + + * configure.in: Don't warn about versioning if not on ELF system. + +2001-07-07 Andreas Jaeger + + * sysdeps/*: Put files from GNU MP Library under LGPL v2.1. + +2001-07-06 Ulrich Drepper + + * po/gl.po: Update from translation team. + +2001-07-06 Andreas Jaeger + + * sysdeps/unix/sysv/linux/configure.in: Fix handling of + sysconfdir. + + * manual/libc-texinfo.sh: Add note for the FDL. + + * manual/argp.texi (Argp Example 4): Fix texinfo warning. + + * manual/libc.texinfo: Regenerated. + + * manual/fdl.texi: Fix node. + + * config.make.in (sysconfdir): Replace correctly. + Closes PR libc/2369, reported by Peter Simons . + + * sysdeps/unix/sysv/linux/alpha/configure.in: Removed, it's no + longer needed. + + * sysdeps/unix/sysv/linux/configure.in (libc_cv_linuxVER): Add + case for alpha. + Rework handling of missing linuxthreads add-on. + + * configure.in: Remove unused sysconfdir substitution. + + * manual/Makefile (texis): Add fdl.texi. + * manual/fdl.texi: New. + * manual/socket.texi (Host Names): Improve grammar, fix overflow hbox. + * manual/libc.texinfo: Add fdl, update titlepage. + Patches by Brian Youmans <3diff@gnu.org>. + + * sysdeps/unix/make_errlist.c (main): Print LGPL v2.1 for + generated file. + +2001-07-06 Paul Eggert + + * manual/argp.texi: Remove ignored LGPL copyright notice; it's + not appropriate for documentation anyway. + * manual/libc-texinfo.sh: "Library General Public License" -> + "Lesser General Public License". + * COPYING: Fix Y2k bug in sample copyright notices. + * manual/lesser.texi: Renamed from manual/lgpl.texinfo, + as fsf.org uses the name "lesser.texi". + * manual/Makefile (texis): Follow rename. + +2001-07-06 Andreas Jaeger + + * All files under GPL/LGPL version 2: Place under LGPL version + 2.1. + +2001-07-05 Andreas Jaeger + + Synch with Linux 2.4.6: + * sysdeps/unix/sysv/linux/sparc/bits/socket.h (PF_BLUETOOTH): + New. + (AF_BLUETOOTH): New. + + * sysdeps/unix/sysv/linux/s390/s390-64/bits/socket.h + (PF_BLUETOOTH): New. + (AF_BLUETOOTH): New. + + * sysdeps/unix/sysv/linux/mips/bits/socket.h (AF_BLUETOOTH): New. + (PF_BLUETOOTH): New. + + * sysdeps/unix/sysv/linux/ia64/bits/socket.h (AF_BLUETOOTH): New. + (PF_BLUETOOTH): New. + + * sysdeps/unix/sysv/linux/alpha/bits/socket.h (PF_BLUETOOTH): New. + (AF_BLUETOOTH): New. + + * sysdeps/unix/sysv/linux/bits/socket.h (PF_BLUETOOTH): New. + (AF_BLUETOOTH): New. + + * sysdeps/unix/sysv/linux/net/if_arp.h (ARPHRD_IEEE80211): New. + + * sysdeps/unix/sysv/linux/powerpc/bits/termios.h (N_HCI): New. + + * sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h (N_HCI): New. + + * sysdeps/unix/sysv/linux/bits/ioctl-types.h (N_HCI): New. + +2001-07-04 Roland McGrath + + * hurd/hurdsig.c (_hurd_internal_post_signal): For SS->suspended + wakeup message, use MACH_MSG_TYPE_MAKE_SEND for the receiver port + rather than doing a mach_port_insert_right call first. + +2001-06-26 Roland McGrath + + * hurd/hurdioctl.c: Include for memcpy decl. + +2001-07-03 Andreas Jaeger + + * sysdeps/unix/sysv/sysv4/solaris2/configure.in: Remove check for + crypt add-on. + +2001-07-01 Mark Kettenis + + * sysdeps/mach/hurd/if_index.c: Redone to use new interfaces in + the Hurd pfinet server, using equivalent code from the Linux + version in sysdeps/unix/sysv/linux/if_index.c. In detail: + Include , , , and + . Don't include and + anymore. + (if_nametoindex): New implementation using SIOCGIFINDEX. + (if_freenameindex): Straight copy of the Linux version. + (if_nameindex): New implementation based on pfinet_siocgifconf and + SIOCGIFINDEX. + (if_indextoname): New implementation using SIOCGIFNAME. + (map_interfaces): Function removed. + From Marcus Brinkmann . + +2001-06-30 Jakub Jelinek + + * sysdeps/powerpc/dl-machine.c (__elf_preferred_address): Prefer + gaps below main executable. + +2001-06-19 Andreas Jaeger + + * sysdeps/powerpc/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): + Handle profiling. + +2001-06-29 Andreas Jaeger + + * sysdeps/ieee754/ldbl-128/s_asinhl.c: New file. + Patch by Stephen L Moshier . + +2001-06-28 Ulrich Drepper + + * manual/argp.texi: Tons of cleanups. + Patch by Clifford U. Smith . + +2001-06-28 Mark Kettenis + + * manual/users.texi (Setting Groups): Correct initgroups + documentation. Add documentation for getgrouplist. + +2001-06-28 H.J. Lu + + * locale/findlocale.c (locale_file_list): Renamed to ... + (_nl_locale_file_list): This. Make it extern. + (free_mem): Move to ... + * locale/setlocale.c (free_mem): Here. + +2001-06-28 Mark Kettenis + + * sysdeps/mach/hurd/read.c: Include . + (__libc_read): Don't call __pread. Use _hurd_fd_read directly + instead. + * sysdeps/mach/hurd/write.c: Include . + (__libc_write): Don't call __pwrite. Use _hurd_fd_write directly + instead. + + * sysdeps/mach/hurd/Makefile ($(link-rpcuserlibs)): Add back + -Wl,-soname option lost in 2001-06-16 change. + +2001-06-27 Ulrich Drepper + + * posix/tst-regex.c: Pass REG_NEWLINE to regcomp. Add extra tests. + Restrict printing of string in debug mode to 100 characters to make + the output useful for long input texts. + + * posix/Makefile: Add rules to build and run tst-regex. + +2001-06-20 Isamu Hasegawa + + * posix/regex.c (FREE_WCS_BUFFERS): New macro to free buffers. + (re_search_2): Invoke convert_mbs_to_wcs and FREE_WCS_BUFFERS. + (wcs_re_match_2_internal): Check whether the wcs buffers need + seting up or not, and skip seting up routin if not needed. + +2001-06-26 Isamu Hasegawa + + * posix/regex.c (count_mbs_length): Use binary search for optimization. + +2001-06-27 Ulrich Drepper + + * posix/tst-regex.c: Fix several bugs. Add more tests. + +2001-06-26 Mark Kettenis + + * hurd/Makefile (user-interfaces): Add pfinet. + * hurd/hurdioctl.c: Include , and + . + (siocgifconf): New function. Register it with HURD_HANDLE_IOCTL + as the handler for SIOCGIFCONF. + * sysdeps/mach/hurd/bits/ioctls.h: Modify SIOCSIFFLAGS and + SIOCGIFFLAGS to be of IOC type ifreq_short. Modify SIOCSIFMETRIC + and SIOCGIFMETRIC to be of IOC type ifreq_int. Add new macro + definitions for SIOCGIFMTU, SIOCSIFMTU, SIOCGIFINDEX and + SIOCGIFNAME. + From Marcus Brunkmann . + +2001-06-25 Ulrich Drepper + + * sysdeps/gnu/net/if.h: Correct _IOT_ifreq and add _IOT_ifreq_short + and _IOT_ifreq_int. Patch by Mark Kettenis . + + * elf/dl-deps.c (_dl_map_object_deps): Fix handling of failing + _dl_catch_error calls. + +2001-06-22 Jakub Jelinek + + * posix/regex.c (regex_compile, re_match_2_internal): Fix comment + typos. + +2001-06-01 Wolfram Gloger + + * malloc/malloc.c (malloc_atfork, free_atfork): Use a unique value + ATFORK_ARENA_PTR, not 0, for the thread-specific arena pointer + when malloc_atfork is in use. + +2001-06-22 Andreas Jaeger + + * sysdeps/i386/fpu/s_nextafterl.c (__nextafterl): Add parenthese + to avoid warnings. + + * sysdeps/i386/fpu/e_expl.c (__ieee754_expl): Remove unused + variable. + Add unused attributes to avoid warnings. + + * elf/reldep4mod4.c: Add prototype to avoid warning. + * elf/reldep4mod2.c: Likewise. + + * sysdeps/i386/fpu/e_expl.c: Include for + prototypes. + +2001-06-18 Roland McGrath + + * hurd/hurd/fd.h (_hurd_fd_error_signal): Change return type to int. + +2001-06-20 Alexandre Oliva + + * sysdeps/unix/sysv/settimeofday.c: Include time.h. + +2001-06-19 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h: New file. + +2001-05-09 Michael Keezer + + * Makeconfig: Added AIX-ld support for DSO. + * Makerules: Likewise. + * dlfcn/Makefile (defaultmod1.so): Added libc_nonshared. + (defaultmod2.so): Likewise. + * debug/Makefile: Conditionalize use of elf/ld.so. + * iconvdata/Makefile: Moved LDFLAG rpath/soname info into Makeconfig. + + * sysdeps/unix/sysv/aix/Makefile: Added dl-support.c and dl-error.c. + * sysdeps/unix/sysv/aix/Makefile: Made (f/g)rsave(0/1) & + (f/g)prrest(0/1) static only. + * sysdeps/unix/sysv/aix/gettimeofday.c: Removed #if 0. + * sysdeps/unix/sysv/aix/start.c: Define __dso_handle if not ELF but + shared. + * sysdeps/unix/sysv/aix/setitimer.c: New file. + * sysdeps/unix/sysv/aix/sleep.c: New file. + * sysdeps/unix/sysv/aix/usleep.c: New file. + * sysdeps/unix/sysv/aix/dl-addr.c: New file. + * sysdeps/unix/sysv/aix/dl-error.c: New file. + * sysdeps/unix/sysv/aix/dl-support.c: New file. + * sysdeps/unix/sysv/aix/powerpc/register-dump.h: New file. + +2001-06-19 Ulrich Drepper + + * po/es.po: Update from translation team. + +2001-06-19 Andreas Jaeger + + * sysdeps/ieee754/ldbl-128/s_tanhl.c: New file. + + * math/libm-test.inc (tanh_test): Test for 2^-56. + + * sysdeps/ieee754/ldbl-96/s_tanhl.c (__tanhl): Make sure result + equals argument when x < 2^-55. + Patches by Stephen L. Moshier . + +2001-06-17 Alan Modra + + * sysdeps/hppa/dl-machine.h (elf_machine_rela): Handle relocs + at unaligned address. + +2001-06-18 Ulrich Drepper + + * posix/regex.c: Reorganize code to build code twice, once for single + byte, once for multi-byte charsets. Choose function set adequate for + locale at runtime. + Patch by Isamu Hasegawa . + + * po/nl.po: Update from translation team. + +2001-06-09 Bruno Haible + + * iconvdata/gconv-modules (BIG5HKSCS): New alias BIG5-HKSCS. + (ISO-8859-14): New aliases ISO_8859-14 and ISO-CELTIC. + * iconvdata/tst-tables.sh: For BIG5HKSCS, use BIG5-HKSCS charmap. + +2001-05-26 Bruno Haible + + * iconvdata/tst-tables.sh: For SJIS module, use SHIFT_JIS charmap. + * manual/charset.texi: Write Shift_JIS, not Shift-JIS. + +2001-06-17 Roland McGrath + + * sysdeps/pthread/aio_misc.h (LIO_DSYNC): Define to LIO_NOP + 1, + not LIO_READ + 1 (which is the value of LIO_WRITE!). + + * Makerules (build-module-helper-objlist): New variable, + broken out of build-module. Insert --whole-archive/--no-whole-archive + immediately each *_pic.a file in the link object list. + (whole-archive): New variable, used by that. + (build-module-objlist): New variable using build-module-helper-objlist. + (build-module, build-module-helper): Use it. + (build-shlib-objlist): New variable using build-module-helper-objlist. + (build-shlib): Use that. + * sysdeps/mach/hurd/Makefile ($(link-rpcuserlibs)): Likewise. + + * posix/spawni.c: Moved to ... + * sysdeps/posix/spawni.c: ... here. + * sysdeps/generic/spawni.c: New file. + +2001-06-16 Roland McGrath + + * hurd/Makefile (routines): Add lookup-retry. + * hurd/hurdlookup.c (__hurd_file_name_lookup_retry): Broken out ... + * hurd/lookup-retry.c: ... into here, new file. + * sysdeps/mach/hurd/dl-sysdep.c (open_file): Call that instead + using of duplicate code here. + + * hurd/hurdexec.c (_hurd_exec): Be robust for DTABLESIZE==0. + +2001-06-17 Ulrich Drepper + + * po/ja.po: Update from translation team. + +2001-06-04 Bruno Haible + + * locale/programs/locfile.c (siblings_uncached, siblings, full_read, + compare_files): New functions. + (write_locale_data): Use xmalloc. Compare the file with the locale + data files for the same category in other locales, and reuse it if + possible and safe. + +2001-06-07 Mark Kettenis + + * grp/initgroups.c (initgroups): Factor out re-usable code into... + (internal_getgrouplist): ... new function. + (getgrouplist): New function. + * grp/grp.h (getgrouplist): New prototype. + * grp/Versions [2.2.4]: Add getgrouplist. + +2001-06-16 Ulrich Drepper + + * inet/netinet/ip6.h: Fix comments in ip6_hdr. + Patch by Pekka Savola . + +2001-06-15 Roland McGrath + + * rt/Makefile (aio-routines, clock-routines, timer-routines): New + variables, broken out of librt-routines. + (librt-routines): Set using those. + (extra-libs, extra-libc-others, tests): Set these unconditionally. + (distribute): No need for $(librt-map) or $(librt-routines:=.c) here. + * sysdeps/generic/aio_fsync.c: New file. + * sysdeps/generic/aio_misc.c: New file. + * sysdeps/generic/aio_write.c: New file. + * sysdeps/generic/aio_write64.c: New file. + * sysdeps/generic/aio_read64.c: New file. + * sysdeps/generic/aio_read.c: New file. + * sysdeps/generic/aio_notify.c: New file. + * sysdeps/generic/lio_listio64.c: New file. + * sysdeps/generic/lio_listio.c: New file. + * sysdeps/generic/aio_cancel.c: New file. + * sysdeps/generic/aio_misc.h: New file. + * sysdeps/generic/aio_suspend.c: New file. + * rt/aio_cancel.c: Moved to ... + * sysdeps/pthread/aio_cancel.c: ... here. + * rt/aio_fsync.c: Moved to ... + * sysdeps/pthread/aio_fsync.c: ... here. + * rt/aio_misc.c: Moved to ... + * sysdeps/pthread/aio_misc.c: ... here. + * rt/aio_misc.h: Moved to ... + * sysdeps/pthread/aio_misc.h: ... here. + * rt/aio_notify.c: Moved to ... + * sysdeps/pthread/aio_notify.c: ... here. + * rt/aio_read.c: Moved to ... + * sysdeps/pthread/aio_read.c: ... here. + * rt/aio_read64.c: Moved to ... + * sysdeps/pthread/aio_read64.c: ... here. + * rt/aio_suspend.c: Moved to ... + * sysdeps/pthread/aio_suspend.c: ... here. + * rt/aio_write.c: Moved to ... + * sysdeps/pthread/aio_write.c: ... here. + * rt/aio_write64.c: Moved to ... + * sysdeps/pthread/aio_write64.c: ... here. + * rt/lio_listio.c: Moved to ... + * sysdeps/pthread/lio_listio.c: ... here. + * rt/lio_listio64.c: Moved to ... + * sysdeps/pthread/lio_listio64.c: ... here. + +2001-06-14 Roland McGrath + + * configure.in: Let sysdeps Implies files in add-ons bring in + sysdeps directories from the main source and other add-ons too. + +2001-06-15 Jakub Jelinek + + * math/test-misc.c (main): Add tests for nextafter and nexttoward + with +-Inf as second argument. + + * sysdeps/generic/s_nexttowardf.c (__nexttowardf): Only check for + NaN, not Inf. + * sysdeps/i386/fpu/s_nextafterl.c (__nextafterl): Fix check for NaN. + * sysdeps/i386/fpu/s_nexttoward.c: New. + * sysdeps/i386/fpu/s_nexttowardf.c: New. + * sysdeps/ieee754/ldbl-96/s_nexttoward.c (__nexttoward): Simplify + check for NaN, optimize x==+-0 handling. + * sysdeps/ieee754/ldbl-96/s_nexttowardf.c (__nexttowardf): Likewise. + * sysdeps/ieee754/ldbl-96/s_nextafterl.c (__nextafterl): Simplify + check for NaN, fix sign in x==+-0 case. + * sysdeps/ia64/fpu/s_nexttoward.c: New. + * sysdeps/ia64/fpu/s_nexttowardf.c: New. + +2001-06-15 H.J. Lu + + * rt/tst-aio2.c (do_test): Initialize cb.aio_offset to 0. + * rt/tst-aio3.c (do_test): Likewise. + * rt/tst-aio4.c (do_test): Likewise. + * rt/tst-aio5.c (do_test): Likewise. + * rt/tst-aio6.c (do_test): Likewise. + +2001-06-15 Andreas Schwab + + * sysdeps/m68k/fpu/bits/mathinline.h: Don't define log2 as inline. + * sysdeps/m68k/fpu/mathimpl.h: Define __ieee754_log2 as inline. + +2001-06-15 Andreas Jaeger + + * gmon/tst-sprofil.c (fac): Make static to avoid compiler warning. + +2001-06-14 Andreas Schwab + + * elf/ldconfig.c (search_dir): Fix check for regular file. + + * sysdeps/m68k/fpu/e_log2f.c: Fix typo. + * sysdeps/m68k/fpu/e_log2l.c: Fix typo. + +2001-06-14 Roland McGrath + + * sysdeps/mach/hurd/bits/fcntl.h [ __USE_POSIX199309 || __USE_UNIX98]: + (O_DSYNC, O_RSYNC): New macros, both defined to O_SYNC as Linux does. + +2001-06-13 Roland McGrath + + * rt/aio_notify.c: Include for _POSIX_REALTIME_SIGNALS. + + * sysdeps/mach/hurd/fork.c (LOSE): Put `goto lose' in dead code + so the label is not considered unused. + + * sysdeps/mach/hurd/pwrite64.c: New file. + * sysdeps/mach/hurd/pread64.c: New file. + + * sysdeps/mach/hurd/pread.c + (__libc_pread): Define this name, with __pread as an alias. + * sysdeps/mach/hurd/pwrite.c + (__libc_pwrite): Define this name, with __pwrite as an alias. + + Implement POSIX "shared memory objects" as regular + files residing in the /var/run/shm/ directory. + This works on any system that supports _POSIX_MAPPED_FILES, + to make it also support _POSIX_SHARED_MEMORY_OBJECTS. + * sysdeps/posix/shm_open.c: New file. + * sysdeps/posix/shm_unlink.c: New file. + * sysdeps/mach/hurd/bits/posix_opt.h + (_POSIX_SHARED_MEMORY_OBJECTS): Define it. + + * rt/aio_notify.c (__aio_notify_only) [! _POSIX_REALTIME_SIGNALS]: + Use raise instead of __aio_sigqueue. + + * sysdeps/mach/hurd/pread.c: Fail with EINVAL if OFFSET is negative. + * sysdeps/mach/hurd/pwrite.c: Likewise. + + * shlib-versions [USE_IN_LIBIO] (.*-.*-gnu-gnu.*): libc=0.3 + [USE_IN_LIBIO && !GLIBC_OLDEST_ABI] (.*-.*-gnu-gnu.*): Use GLIBC_2.2.4 + as default version set. + +2001-06-13 Ulrich Drepper + + * libio/iolibio.h (_IO_freopen): Correct last parameter to + _IO_file_open. + (_IO_freopen64): Likewise. + Reported by simanek@quantum.karlov.mff.cuni.cz [PR libc/2326]. + + * elf/elf.h: Add a few more EM_* constants. + +2001-06-12 Bruno Haible + + * intl/dcigettext.c (DCIGETTEXT): Release the lock before returning. + +2001-06-09 Ben Collins + + * sysdeps/unix/sysv/linux/bits/termios.h: Define __MAX_BAUD. + * sysdeps/unix/sysv/linux/alpha/bits/termios.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/termios.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/termios.h: Likewise. + * sysdeps/unix/sysv/linux/speed.c: Use __MAX_BAUD instead of + hardcoded B400000. + +2001-06-13 Ulrich Drepper + + * time/sys/time.h: Don't use enum __itimer_which ever for + __itimer_which_t for C++. + Reported by Martin Buchholz . + + * po/fr.po: Update from translation team. + +2001-06-12 H.J. Lu + + * configure.in: Fix typos in missing program names. + * configure: Regenerated. + +2001-06-12 Andreas Jaeger + + * iconvdata/tst-table-to.c: Include string.h for strcmp prototype. + + * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Add ULPs for tanh (-0.7). + +2001-06-11 Andreas Jaeger + + * sysdeps/ieee754/ldbl-128/e_coshl.c: New file. Contributed by + Stephen L Moshier . + + * aclocal.m4: Quote AC_FD_MSG and AC_FD_CC. + + * sysdeps/powerpc/fpu/libm-test-ulps: Add ULPs for tanh (-0.7). + * sysdeps/s390/fpu/libm-test-ulps: Likewise. + +2001-06-11 Michael Deutschmann + + * rt/tst-aio4.c (do_test): Test whether rt signals are supported. + Use my_signo instead of MY_SIGNO and initialize it so that the + used signal is always available. + +2001-06-11 Andreas Jaeger , + Michael Deutschmann + + * io/test-lfs.c (do_prepare): Clean up error messages. + (test_ftello): Check for EFBIG and ENOSPC, clean up error messages. + (do_test): Likewise. + +2001-06-11 Andreas Jaeger + + * sysdeps/unix/sysv/linux/powerpc/bits/termios.h (IXANY, IUCLC, + IMAXBEL): Make always visible since they're needed by POSIX. + Closes PR libc/2320, reported by Chris Yeoh . + +2001-06-10 Ben Collins + + * sysdeps/arm/elf/start.S: Use #function, not @function, for + .type of _start. + + * sysdeps/ieee754/ldbl-128/s_ilogbl.c: Include limits.h to get + INT_MAX. + +2001-06-07 H.J. Lu + + * sunrpc/rpc/rpc.h: Add __BEGIN_DECLS/__END_DECLS. + +2001-06-10 Roland McGrath + + * elf/reldep4mod2.c: Use fully typed decls to avoid warnings. + * elf/reldep4mod4.c: Likewise. + +2001-06-10 Mark Kettenis + + * hurd/hurd/threadvar.h: Add prototype for __hurd_errno_location. + +2001-06-08 Andreas Schwab + + * posix/regex.c (re_match_2_internal) [case wordbeg, wordend]: + Don't dereference at end of string. + +2001-06-06 Roland McGrath + + * sysdeps/mach/hurd/getsockopt.c: Fix handling of returned buffer size. + From Robert Bihlmeyer . + +2001-06-06 Ulrich Drepper + + * po/ko.po: Update from translation team. + +2001-06-06 Andreas Jaeger + + * manual/llio.texi (Memory-mapped I/O): Clarify that mapping is to + offset+length-1. + Reported by Robert Bernecky . + +2001-06-06 Jakub Jelinek + + * sysdeps/cris/elf/start.S: Fix a typo introduced by last patch. + * sysdeps/ia64/elf/start.S: Likewise. + * sysdeps/sh/elf/start.S: Likewise. + * sysdeps/s390/s390-32/elf/start.S: Likewise. + * sysdeps/s390/s390-64/elf/start.S: Likewise. + +2001-06-05 Matthew Wilcox + + * sysdeps/hppa/bsd-_setjmp.S: New. + * sysdeps/hppa/bsd-setjmp.S: New. + + * sysdeps/hppa/dl-machine.h: Reformat asm statements to remove new + gcc warnings about multi-line strings. + + * sysdeps/unix/sysv/linux/hppa/getrlimit.c: Remove. + * sysdeps/unix/sysv/linux/hppa/setrlimit.c: Remove. + + * sysdeps/unix/sysv/linux/hppa/syscalls.list: Call getrlimit, + setrlimit directly instead of using wrappers. + +2001-05-01 Richard Hirst + + * sysdeps/unix/sysv/linux/hppa/syscall.S: remove dummy syscall. + * sysdeps/unix/sysv/linux/hppa/sysdep.c: implement syscall. + +2001-06-05 Philipp Thomas + + * nis/nis_call.c (__nisbind_connect): Don't mark for translation + what can't be translated. + +2001-06-06 Ulrich Drepper + + * timezone/zic.c: Update from tzcode2001c. + * timezone/private.h: Likewise. + * timezone/africa: Update from tzdata2001c. + * timezone/asia: Likewise. + * timezone/europe: Likewise. + * timezone/northamerica: Likewise. + * timezone/southamerica: Likewise. + * timezone/zone.tab: Likewise. + +2001-06-04 Bruno Haible + + * iconv/loop.c (UNICODE_TAG_HANDLER): New macro. + * iconv/gconv_simple.c (__gconv_transform_internal_ascii): Invoke + UNICODE_TAG_HANDLER. + (__gconv_transform_internal_ucs2): Likewise. + (__gconv_transform_internal_ucs2reverse): Likewise. + * iconvdata/8bit-gap.c (BODY for TO_LOOP): Invoke UNICODE_TAG_HANDLER. + * iconvdata/8bit-generic.c (BODY for TO_LOOP): Likewise. + * iconvdata/ansi_x3.110.c (BODY for TO_LOOP): Likewise. + * iconvdata/big5.c (BODY for TO_LOOP): Likewise. + * iconvdata/big5hkscs.c (BODY for TO_LOOP): Likewise. + * iconvdata/cp1255.c (BODY for TO_LOOP): Likewise. + * iconvdata/cp1258.c (BODY for TO_LOOP): Likewise. + * iconvdata/euc-cn.c (BODY for TO_LOOP): Likewise. + * iconvdata/euc-jp.c (BODY for TO_LOOP): Likewise. + * iconvdata/euc-kr.c (BODY for TO_LOOP): Likewise. + * iconvdata/euc-tw.c (BODY for TO_LOOP): Likewise. + * iconvdata/gbk.c (BODY for TO_LOOP): Likewise. + * iconvdata/ibm930.c (BODY for TO_LOOP): Likewise. + * iconvdata/ibm932.c (BODY for TO_LOOP): Likewise. + * iconvdata/ibm933.c (BODY for TO_LOOP): Likewise. + * iconvdata/ibm935.c (BODY for TO_LOOP): Likewise. + * iconvdata/ibm937.c (BODY for TO_LOOP): Likewise. + * iconvdata/ibm939.c (BODY for TO_LOOP): Likewise. + * iconvdata/ibm943.c (BODY for TO_LOOP): Likewise. + * iconvdata/iso646.c (BODY for TO_LOOP): Likewise. + * iconvdata/iso8859-1.c (BODY for TO_LOOP): Likewise. + * iconvdata/iso_6937.c (BODY for TO_LOOP): Likewise. + * iconvdata/iso_6937-2.c (BODY for TO_LOOP): Likewise. + * iconvdata/iso-2022-cn.c (BODY for TO_LOOP): Likewise. + * iconvdata/iso-2022-cn-ext.c (BODY for TO_LOOP): Likewise. + * iconvdata/iso-2022-kr.c (BODY for TO_LOOP): Likewise. + * iconvdata/johab.c (BODY for TO_LOOP): Likewise. + * iconvdata/sjis.c (BODY for TO_LOOP): Likewise. + * iconvdata/t.61.c (BODY for TO_LOOP): Likewise. + * iconvdata/uhc.c (BODY for TO_LOOP): Likewise. + * iconvdata/unicode.c (BODY for TO_LOOP): Likewise. + * iconvdata/iso-2022-jp.c (TAG_none, TAG_language, TAG_language_j, + TAG_language_ja, TAG_language_k, TAG_language_ko, TAG_language_z, + TAG_language_zh, CURRENT_TAG_MASK): New enum values. + (EMIT_SHIFT_TO_INIT): Don't emit an escape sequence if ASCII_set + is already selected but set2 or tag are set. + (conversion): New enum type. + (cvlist_t): New type. + (CVLIST, CVLIST_FIRST, CVLIST_REST): New macros. + (conversion_lists): New array. + (BODY for TO_LOOP): Keep track of Unicode 3.1 language tag. If "ja", + prefer conversion to Japanese character sets. If "zh", prefer + conversion to GB2312. If "ko", prefer conversion to KSC5601. Small + optimizations. + (INIT_PARAMS): Add tag. + (UPDATE_PARAMS): Add tag. + +2001-06-04 Bruno Haible + + * locale/programs/locfile.c (write_locale_data): Before creat(), + unlink the file, to avoid crashing the processes that mmap it. Change + a double slash to a single slash. Free fname in case of error return. + +2001-06-02 Jakub Jelinek + + * sysdeps/i386/fpu/s_frexpl.S (__frexpl): Mostly revert 2000-12-03 + changes, do the special handling for denormal numbers, not for + normalized numbers (patch by ). + + * math/test-misc.c (main): Test frexpl with denormal arguments. + +2001-06-04 Jakub Jelinek + + * math/libm-test.inc (llround_test): Add two new llround tests. + * sysdeps/ieee754/ldbl-96/s_llroundl.c (__llroundl): Don't allow + overflow when rounding away from zero. + +2001-06-04 Jakub Jelinek + + * math/Makefile (libm-calls): Add e_log2, w_log2, remove s_log2. + * math/math_private.h (__ieee754_log2, __ieee754_log2f, + __ieee754_log2l): New prototypes. + * sysdeps/generic/w_log2.c: New file. + * sysdeps/generic/w_log2f.c: New file. + * sysdeps/generic/w_log2l.c: New file. + * sysdeps/generic/s_log2l.c: Move... + * sysdeps/generic/e_log2l.c: ...to here. Rename to __ieee754_log2l. + * sysdeps/ieee754/k_standard.c (__kernel_standard): Handle log2(0) + and log2(x < 0). + * sysdeps/i386/fpu/s_log2.S: Move... + * sysdeps/i386/fpu/e_log2.S: ...to here. Rename to __ieee754_log2. + * sysdeps/i386/fpu/s_log2f.S: Move... + * sysdeps/i386/fpu/e_log2f.S: ...to here. Rename to __ieee754_log2f. + * sysdeps/i386/fpu/s_log2l.S: Move... + * sysdeps/i386/fpu/e_log2l.S: ...to here. Rename to __ieee754_log2l. + * sysdeps/m68k/fpu/s_log2.c: Move... + * sysdeps/m68k/fpu/e_log2.c: ...to here. Rename to __ieee754_log2. + * sysdeps/m68k/fpu/s_log2f.c: Move... + * sysdeps/m68k/fpu/e_log2f.c: ...to here. Rename to __ieee754_log2f. + * sysdeps/m68k/fpu/s_log2l.c: Move... + * sysdeps/m68k/fpu/e_log2l.c: ...to here. Rename to __ieee754_log2l. + * sysdeps/ieee754/dbl-64/s_log2.c: Move... + * sysdeps/ieee754/dbl-64/e_log2.c: ...to here. Rename to + __ieee754_log2. + * sysdeps/ieee754/flt-32/s_log2f.c: Move... + * sysdeps/ieee754/flt-32/e_log2f.c: ...to here. Rename to + __ieee754_log2f. + +2001-06-04 Jakub Jelinek + + * sysdeps/generic/w_exp2.c (u_threshold): Lower threshold so that + even arguments which result in denormalized exp2 are accepted. + (__exp2): Arguments equal to u_threshold already result into + underflow. + * sysdeps/generic/w_exp2f.c (u_threshold, __exp2f): Likewise. + * sysdeps/generic/w_exp2l.c (u_threshold, __exp2l): Likewise. + * sysdeps/ieee754/dbl-64/e_exp2.c (__ieee754_exp2): Lomark was too + low, with corrected lowmark use greaterequal, not greater. + * sysdeps/ieee754/flt-32/e_exp2f.c (__ieee754_exp2f): Likewise. + +2001-06-04 Jakub Jelinek + + * math/libm-test.inc (ilogb_test): Test that ilogb(+-Inf) == INT_MAX. + * sysdeps/i386/fpu/s_ilogb.S (__ilogb): Return INT_MAX for +-Inf. + * sysdeps/i386/fpu/s_ilogbf.S (__ilogbf): Likewise. + * sysdeps/i386/fpu/s_ilogbl.S (__ilogbl): Likewise. + * sysdeps/ieee754/dbl-64/s_ilogb.c (__ilogb): Likewise. + * sysdeps/ieee754/flt-32/s_ilogbf.c (__ilogbf): Likewise. + * sysdeps/ieee754/ldbl-128/s_ilogbl.c (__ilogbl): Likewise. + * sysdeps/ieee754/ldbl-96/s_ilogbl.c (__ilogbl): Likewise. + +2001-06-04 Jakub Jelinek + + * sysdeps/generic/w_coshl.c (__coshl): Test if finite argument + gave non-finite result instead of using constant in generic + version. + * sysdeps/generic/w_coshf.c (__coshf): Likewise. + * sysdeps/generic/w_cosh.c (__cosh): Likewise. + * sysdeps/generic/w_exp10.c (o_threshold, u_threshold): Remove. + (__exp10): Test if finite argument gave non-finite result. + * sysdeps/generic/w_exp10f.c (o_threshold, u_threshold, __exp10f): + Likewise. + * sysdeps/generic/w_exp10l.c (o_threshold, u_threshold, __exp10l): + Likewise. + +2001-06-04 Jakub Jelinek + + * sysdeps/ieee754/ldbl-96/e_coshl.c (__ieee754_coshl): Fix + overflow threshold constant (log(LDBL_MAX)+M_LN2l). + +2001-05-29 Bruno Haible + + * locale/programs/ld-ctype.c (idx_table): New struct type. + (idx_table_init, idx_table_get, idx_table_add): New functions. + (MAX_CHARNAMES_IDX): Remove macro. + (locale_ctype_t): Change type of charnames_idx field. + (ctype_startup): Change initialization of charnames_idx field. + (find_idx): Use idx_table_get and idx_table_add for speed. + + * locale/programs/charmap.c (charmap_new_char): Fix ucs4 value + computation of characters in a range. + +2001-05-29 Bruno Haible + + * iconvdata/gb18030.c (__fourbyte_to_ucs1): Add mappings for , + . + (__ucs_to_gb18030_tab1): Likewise. + (BODY for FROM_LOOP): Add mapping for ... + (BODY for TO_LOOP): Likewise. + * iconvdata/tst-table-charmap.sh: Update for charmaps containing + syntax. + * iconvdata/tst-table-from.c (bmp_only): New variable. + (utf8_decode): If bmp_only, don't return characters outside Unicode + plane 0. + (main): When testing UTF-8 or GB18030, set bmp_only to 1. Don't print + a conversion line if utf8_decode returns NULL. + * iconvdata/tst-table-to.c (main): When testing encodings other than + UTF-8 and GB18030, loop upto U+30000 instead of U+10000. Use UTF-8 + instead of UCS-2 as input. + * iconvdata/tst-table.sh: For GB18030, use only the part < 0x10000 + of the charmap. + +2001-05-29 Bruno Haible + + * iconvdata/cns11643l1.c: Update to Unicode 3.1. + (__cns11643l1_to_ucs4_tab): Regenerated. + (__cns11643l1_from_ucs4_tab12): Regenerated. + * iconvdata/cns11643.c: Update to Unicode 3.1. + (__cns11643l14_to_ucs4_tab): Remove array. + (__cns11643l3_to_ucs4_tab, __cns11643l4_to_ucs4_tab, + __cns11643l5_to_ucs4_tab, __cns11643l6_to_ucs4_tab, + __cns11643l7_to_ucs4_tab, __cns11643l15_to_ucs4_tab): New arrays. + (__cns11643_from_ucs4p0_tab): Renamed from __cns11643_from_ucs4_tab. + (__cns11643_from_ucs4p2_tab): New array. + * iconvdata/cns11643.h (__cns11643l14_to_ucs4_tab): Remove declaration. + (__cns11643l3_to_ucs4_tab, __cns11643l4_to_ucs4_tab, + __cns11643l5_to_ucs4_tab, __cns11643l6_to_ucs4_tab, + __cns11643l7_to_ucs4_tab, __cns11643l15_to_ucs4_tab): New declarations. + (cns11643_to_ucs4): Treat planes 3, 4, 5, 6, 7, 15 instead of 14. + (__cns11643_from_ucs4_tab): Remove declaration. + (__cns11643_from_ucs4p0_tab, __cns11643_from_ucs4p2_tab): New + declarations. + (ucs4_to_cns11643): Update for new arrays. Treat U+3400..U+4DFF and + U+20000..U+2A6D6. + * iconvdata/cns11643l2.h (__cns11643_from_ucs4_tab): Remove + declaration. + (__cns11643_from_ucs4p0_tab): New declaration. + (ucs4_to_cns11643l2): Update for new arrays. + * iconvdata/iso-2022-cn-ext.c (BODY for FROM_LOOP): Handle planes + 3 to 7. + (BODY for TO_LOOP): Handle planes 3 to 7, instead of plane 14. + * iconvdata/EUC-TW.irreversible: New file. + * iconvdata/tst-table.sh: Use it. + * iconvdata/Makefile (distribute): Add CP1255.irreversible, + CP1258.irreversible, EUC-TW.irreversible. + +2001-05-29 Bruno Haible + + * locale/C-translit.h.in: Add transliterations for new Unicode 3.1 + mathematical symbols. + +2001-06-05 Andreas Jaeger + + * manual/stdio.texi (Portable Positioning): Fix description of + fpos_t and fpos64_t. + +2001-06-06 Ulrich Drepper + + * sysdeps/generic/wordexp.c: Undo last patch. Use strndupa instead. + + * po/sk.po: Update from translation team. + +2001-06-05 Andreas Jaeger + + * sysdeps/unix/sysv/linux/shm_open.c (where_is_shmfs): Recognize + tmpfs, patch by Stanislav Brabec . + Closes PR libc/2315. + +2001-06-05 Ulrich Drepper + + * sysdeps/generic/wordexp.c: Add missing free. + Patch by yeti@physics.muni.cz. + +2001-06-02 Tom Browder + + * misc/tst-tsearch.c (mangle_tree): Ensure array indices are + within bounds when lag > 0. + +2001-06-05 Ulrich Drepper + + * po/tr.po: New file. + +2001-06-05 Andreas Jaeger + + * manual/libm-err-tab.pl (parse_ulps): Fix typo. + +2001-06-04 H.J. Lu + + * sysdeps/alpha/elf/start.S: Add .type for the entry point. + * sysdeps/arm/elf/start.S: Likewise. + * sysdeps/hppa/elf/start.S: Likewise. + * sysdeps/i386/elf/start.S: Likewise. + * sysdeps/m68k/elf/start.S: Likewise. + * sysdeps/mips/elf/start.S: Likewise. + * sysdeps/ia64/elf/start.S: Likewise. + * sysdeps/sh/elf/start.S: Likewise. + * sysdeps/s390/s390-32/elf/start.S: Likewise. + * sysdeps/s390/s390-64/elf/start.S: Likewise. + * sysdeps/cris/elf/start.S: Likewise. + +2001-06-04 Bruce Mitchener + + * manual/resource.texi: Correct setpriority/nice documentation. + + * sysdeps/unix/nice.c: Correct nice() implementation. + +2001-06-04 Andreas Jaeger + + * sysdeps/ieee754/ldbl-128/e_sinhl.c: New file, contributed by + Stephen L Moshier . + +2001-06-03 Roland McGrath + + * Makefile (postclean): Remove obsolete sysd-Makefile. + +2001-06-01 Roland McGrath + + * sysdeps/alpha/fpu/fclrexcpt.c: #include + and use compat_symbol/versioned_symbol instead of plain + symbol_version/default_symbol_version. + * sysdeps/alpha/fpu/fegetenv.c: Likewise. + * sysdeps/alpha/fpu/fesetenv.c: Likewise. + * sysdeps/alpha/fpu/feupdateenv.c: Likewise. + * sysdeps/alpha/fpu/fgetexcptflg.c: Likewise. + * sysdeps/alpha/fpu/fraiseexcpt.c: Likewise. + * sysdeps/alpha/fpu/fsetexcptflg.c: Likewise. + * sysdeps/arm/fpu/fclrexcpt.c: Likewise. + * sysdeps/arm/fpu/fegetenv.c: Likewise. + * sysdeps/arm/fpu/fesetenv.c: Likewise. + * sysdeps/arm/fpu/fraiseexcpt.c: Likewise. + * sysdeps/arm/fpu/fsetexcptflg.c: Likewise. + * sysdeps/i386/fpu/fclrexcpt.c: Likewise. + * sysdeps/i386/fpu/fegetenv.c: Likewise. + * sysdeps/i386/fpu/fesetenv.c: Likewise. + * sysdeps/i386/fpu/feupdateenv.c: Likewise. + * sysdeps/i386/fpu/fgetexcptflg.c: Likewise. + * sysdeps/i386/fpu/fraiseexcpt.c: Likewise. + * sysdeps/i386/fpu/fsetexcptflg.c: Likewise. + * sysdeps/m68k/fpu/fclrexcpt.c: Likewise. + * sysdeps/m68k/fpu/fegetenv.c: Likewise. + * sysdeps/m68k/fpu/fesetenv.c: Likewise. + * sysdeps/m68k/fpu/feupdateenv.c: Likewise. + * sysdeps/m68k/fpu/fgetexcptflg.c: Likewise. + * sysdeps/m68k/fpu/fraiseexcpt.c: Likewise. + * sysdeps/m68k/fpu/fsetexcptflg.c: Likewise. + * sysdeps/powerpc/fclrexcpt.c: Likewise. + * sysdeps/powerpc/fpu/fegetenv.c: Likewise. + * sysdeps/powerpc/fpu/fesetenv.c: Likewise. + * sysdeps/powerpc/fpu/feupdateenv.c: Likewise. + * sysdeps/powerpc/fpu/fgetexcptflg.c: Likewise. + * sysdeps/powerpc/fpu/fraiseexcpt.c: Likewise. + * sysdeps/powerpc/fpu/fsetexcptflg.c: Likewise. + + * iconvdata/cp1258.c: Include for abort decl. + * iconvdata/iso-2022-cn-ext.c: Likewise. + +2001-06-01 Andreas Jaeger + + * Versions.def: Add version 2.2.4. + +2001-06-01 Ulrich Drepper + + * socket/Makefile (routines): Add sockatmark. + * socket/Versions [GLIBC_2.2.4]: Add sockatmark. + * socket/sys/socket.h: Add prototype for sockatmark. + * sysdeps/generic/sockatmark.c: New file. + * sysdeps/unix/sockatmark.c: New file. + +2001-06-01 Andreas Jaeger + + * sysdeps/unix/sysv/linux/speed.c (cfsetispeed): Max speed is + B4000000. + (cfsetospeed): Likewise. + Reported by Lukasz Trabinski . + +2001-05-31 Joseph S. Myers + + * misc/sys/cdefs.h (__restrict_arr): Define to empty for C++. + +2001-05-30 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: greg_t + needs to have the same aligment as the kernel structure. + +2001-05-29 Jakub Jelinek + + * sunrpc/rpc/types.h (u_char, u_short, u_int, u_long, quad_t, + u_quad_t, fsid_t, daddr_t, caddr_t): Make sure the types are defined. + * posix/sys/types.h (u_char, u_short, u_int, u_long, quad_t, + u_quad_t, fsid_t, daddr_t, caddr_t): Protect the __USE_BSD typedefs + against multiple definition. + +2001-05-30 Ulrich Drepper + + * po/da.po: Update from translation team. + +2001-05-29 Andreas Jaeger + + * sysdeps/ieee754/ldbl-128/e_acosl.c: New file, contributed by + Stephen L Moshier . + + * math/libm-test.inc (sinh_test): Add new test case. + + * sysdeps/ieee754/ldbl_96/e_sinhl.c (__ieee754_sinhl): sinhl(x) = + x when x < 2^-32. + Patch by Stephen L Moshier . + +2001-05-23 Andreas Jaeger + + * iconvdata/testdata/WINDOWS-1255..UTF-8: Renamed to... + * iconvdata/testdata/WINDOWS-1255..UTF8: this. + +2001-05-27 Andreas Jaeger + + * manual/stdio.texi (String Streams): Fix fmemopen description. + Reported by Michal Kochanowicz . + +2001-05-26 H.J. Lu + + * sysdeps/unix/sysv/linux/mips/syscalls.list: Change sigsuspend + to s_sigsuspend. Add s_mmap2. + + * sysdeps/mips/atomicity.h: New file. + + * sysdeps/unix/sysv/linux/mips/getsysstats.c: New file. + + * sysdeps/unix/sysv/linux/mips/bits/ipc.h (ipc_perm): Put + back __key. + +2001-05-25 Bruce Mitchener + + * manual/ctype.texi: Minor fix. + * manual/install.texi: Likewise. + * manual/startup.texi: Likewise. + * manual/examples/dir.c: Use perror() rather than puts(). + +2001-05-25 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Put stuff following + #endif directive inside a comment to avoid compiler warnings. + +2001-05-25 Philipp Thomas + + * nis/nis_print.c (nis_nstype2str): Don't mark names of + naming services for translation, only UNKNOWN needs it. + Add comment to prevent it for the future. + +2001-05-25 Joseph S. Myers + + * misc/sys/cdefs.h (__restrict_arr): Define appropriately for GCC + 3.1 and non-GCC C99 compilers. + +2001-05-22 David Mosberger + + * sysdeps/ia64/memmove.S: Increase MEMLAT from 6 to 21 for better + performance. + * sysdeps/ia64/memcpy.S: Likewise. + + * sysdeps/ia64/bcopy.S: New file. + + * sysdeps/ia64/bzero.S: New file (derived from memset.S). + +2001-05-26 Ulrich Drepper + + * sysdeps/ia64/fpu/libm-test-ulps: Add deltas for tanh(-0.7). + +2001-05-24 Ulrich Drepper + + * iconvdata/Makefile: Add rules for CP10007. + * iconvdata/gconv-modules: Add entries for CP10007 ad MacCyrillic. + * iconvdata/cp10007.c: New file. + * iconvdata/tst-tables.sh: Add CP10007. + +2001-05-23 kaz Kojima + + * sysdeps/sh/dl-machine.h (_dl_runtime_resolve): Handle newer PLT. + (_dl_runtime_profile): Likewise.. + +2001-05-23 Thorsten Kukuk + + * sysdeps/posix/getaddrinfo.c: Support for AF_UNIX commented out. + * posix/tst-getaddrinfo.c: Remove AF_UNIX test. + +2001-05-19 H.J. Lu + + * elf/dl-deps.c (_dl_map_object_deps): Pass objname and + errstring of the failed DSO to _dl_signal_error (). + +2001-05-23 Ulrich Drepper + + * iconvdata/gconv-modules: Add more aliases to enable use in + locale names. + +2001-05-23 Andreas Jaeger + + * sysdeps/unix/sysv/linux/ia64/Makefile (CFLAGS-initfini.s): + Remove, it's not used anywhere anymore. + * sysdeps/unix/sysv/linux/s390/s390-64/Makefile + (CFLAGS-initfini.s): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/Makefile + (CFLAGS-initfini.s): Likewise. + * sysdeps/unix/sysv/linux/powerpc/Makefile (CFLAGS-initfini.s): + Likewise. + * sysdeps/unix/sysv/linux/i386/Makefile (CFLAGS-initfini.s): + Likewise. + +2001-05-21 Bruno Haible + + * wcsmbs/mbrtowc.c (mbrtowc): Remove local variable 'flush', always + use 0 instead, and rely on the converter to do the flush. + * wcsmbs/tst-mbrtowc.c (utf8_test_1): New function, taken from + utf8_test. + (utf8_test_2, utf8_test_3): New function. + (utf8_test): Call utf8_test_1, utf8_test_2, utf8_test_3. + +2001-05-22 Jakub Jelinek + + * elf/dl-close.c (_dl_close): Save imap->l_reldeps, not map->l_reldeps. + + * elf/Makefile (distribute): Add reldep4mod[1234].c. + (tests): Add reldep4. + (modules-names): Add reldep4mod[1234]. + (reldep4mod1.so, reldep4mod2.so, reldep4, reldep4.out): New rules. + * elf/reldep4.c: New file. + * elf/reldep4mod1.c: Likewise. + * elf/reldep4mod2.c: Likewise. + * elf/reldep4mod3.c: Likewise. + * elf/reldep4mod4.c: Likewise. + +2001-05-18 Jakub Jelinek + + * elf/dl-lookup.c (PROTECTED): Remove defines. + (add_dependency): Mark it with internal_function. + (_dl_do_lookup, _dl_do_lookup_versioned): New functions. + (_dl_lookup_symbol, _dl_lookup_symbol_skip, + _dl_lookup_versioned_symbol, _dl_lookup_versioned_symbol_skip): Use + it if we don't want do_lookup* inlined. + +2001-05-18 Jakub Jelinek + + * include/link.h (struct r_scope_elem): Remove r_duplist and + r_nduplist fields. + * elf/dl-load.c (_dl_map_object_from_fd): Don't initialize them. + * elf/dl-lookup.c (_dl_lookup_symbol_skip): Look in r_list, not + r_duplist. + (_dl_lookup_versioned_symbol_skip): Likewise. + * elf/dl-deps.c (struct list): Remove dup field, rename unique to next. + (_dl_map_object_deps): Don't compute duplicate list. + + * elf/dl-symbol.c: Removed. + * elf/Makefile (routines): Remove dl-symbol. + +2001-05-22 Ulrich Drepper + + * po/el.po: Update from translation team. + * po/sv.po: Likewise. + +2001-05-20 Bruno Haible + + * iconvdata/cp1255.c: Completely rewritten. + * iconvdata/Makefile (gen-8bit-gap-modules): Remove cp1255. + * iconvdata/testdata/WINDOWS-1255: New file. + * iconvdata/testdata/WINDOWS-1255..UTF8: New file. + * iconvdata/TESTS: Add WINDOWS-1255 test. + * iconvdata/CP1255.irreversible: New file. + +2001-05-20 Bruno Haible + + * iconvdata/cp1258.c: Completely rewritten. + * iconvdata/Makefile (gen-8bit-gap-modules): Remove cp1258. + * iconvdata/testdata/WINDOWS-1258: New file. + * iconvdata/testdata/WINDOWS-1258..UTF8: New file. + * iconvdata/TESTS: Add WINDOWS-1258 test. + * iconvdata/tst-table-from.c (try): Reset the iconv descriptor before + the main call, and flush it afterwards. + (utf8_decode): Return a string, possibly containing several Unicode + characters. + (main): Update all utf8_decode calls. + * iconvdata/CP1258.irreversible: New file. + +2001-05-20 Bruno Haible + + * iconv/gconv.c (__gconv): For flush without output, pass do_flush = 2. + * iconv/skeleton.c: Distinguish do_flush = 1 and do_flush = 2. In the + first case, set outbuf, outstart, outend, and call PREPARE_LOOP before + EMIT_SHIFT_TO_INIT; then pass the output produced by this step down to + the next step. In the second case, clear the state without calling + EMIT_SHIFT_TO_INIT. + * iconvdata/ibm930.c (EMIT_SHIFT_TO_INIT): Use outbuf instead of + data->__outbuf, and outend instead of data->__outbufend. + * iconvdata/ibm933.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/ibm935.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/ibm937.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/ibm939.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/iso-2022-cn.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/iso-2022-cn-ext.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/iso-2022-jp.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/iso-2022-kr.c (EMIT_SHIFT_TO_INIT): Likewise. + * iconvdata/utf-7.c (EMIT_SHIFT_TO_INIT): Likewise. + +2001-05-21 Jakub Jelinek + + * elf/rtld.c (dl_main): Compute l_map_end for the main program. + * elf/dl-sym.c (_dl_sym): Don't check for l_addr == 0. + If match == _dl_loaded, caller can still come from the main program. + (_dl_vsym): Likewise. + * elf/dl-open.c (dl_open_worker): Don't check for l_addr == 0. + * elf/dl-error.c (_dl_signal_error): Change NULL objname into "". + * elf/restest2.c: New test. + * elf/Makefile (tests): Add restest2. + (restest2, LDFLAGS-restest2): Add rules. + +2001-05-22 Ulrich Drepper + + * intl/Makefile: Add a few more dependencies to avoid races in the + test shell scripts. + +2001-05-22 Andreas Jaeger + + * sysdeps/ieee754/ldbl-128/s_log1pl.c: New file, contributed by + Stephen L Moshier . + +2001-05-22 Martin Schwidefsky + + * sysdeps/s390/s390-32/backtrace.c: Make backtrace return the + return addresses instead of the stack pointers. + * sysdeps/s390/s390-64/backtrace.c: Likewise. + +2001-05-21 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Include + bits/sigcontext.h instead of bits/sigstack.h. + * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Add + multiple-inclusion guards. + +2001-05-21 Andreas Jaeger + + * locale/programs/ld-collate.c (handle_ellipsis): Fix message. + Patch by Philipp Thomas . + +2001-05-17 Bruce Mitchener + + * manual/arpg.texi: Spelling, misc fixes. + * manual/arith.texi: Likewise. + * manual/crypt.texi: Likewise. + * manual/debug.texi: Likewise. + * manual/getopt.texi: Likewise. + * manual/intro.texi: Likewise. + * manual/memory.texi: Likewise. + * manual/nss.texi: Likewise. + * manual/pattern.texi: Likewise. + * manual/process.texi: Likewise. + * manual/resource.texi: Likewise. + * manual/search.texi: Likewise. + * manual/setjmp.texi: Likewise. + * manual/signal.texi: Likewise. + * manual/socket.texi: Likewise. + * manual/stdio.texi: Likewise. + * manual/string.texi: Likewise. + * manual/sysinfo.texi: Likewise. + * manual/terminal.texi: Likewise. + * manual/llio.texi: Document madvise(). + +2001-05-20 Roland McGrath + + * Makeconfig (sysdep-makeconfigs): Include any Makeconfig files + found within $(add-ons) directories too. + [linuxthreads add-on]: Move variable settings for linuxthreads + to new file linuxthreads/Makeconfig. + +2001-05-20 Franz Sirl + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_STD_AUXV): + Define for linux >= 2.4.5 on powerpc. + (__ASSUME_MMAP2_SYSCALL): Likewise. + +2001-05-19 Roland McGrath + + * hurd/hurdlookup.c (__hurd_file_name_lookup_retry): Don't leak the + result port when failing with ELOOP. Do the ELOOP check when + following an absolute symlink target as well as relative. + Remove #ifdef SYMLOOP_MAX conditional--it should always be defined. + +2001-05-18 Andreas Jaeger + + * po/fr.po: Free software is "logiciel libre". + Patch by Martin Michlmayr . + + * sysdeps/powerpc/elf/libc-start.c: Use __cxa_atexit. + Patch by ekato@ees.hokudai.ac.jp, closes PR libc/2271. + +2001-05-17 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/sys/ptrace.h: New file. + +2001-05-17 Ulrich Drepper + + * elf/dl-profile.c (_dl_mcount): Check whether state is + GMON_PROF_ON before doing anything. + +2001-05-17 H.J. Lu + + * elf/sprof.c (read_symbols): Move "++symtab" into the while loop. + +2001-05-17 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sigprocmask.c (__sigprocmask): Use + CHECK_SIGSET_NULL_OK and not CHECK_SIGSET for all parameters. + Reported by Mark Burton . + +2001-05-17 Jakub Jelinek + + * elf/ldconfig.c (add_dir): Only warn about stat failure if + opt_verbose. + (search_dir): Likewise. + +2001-05-17 Ulrich Drepper + + * sysdeps/i386/i486/atomicity.h (exchange_and_add): Correct second + parameter of xaddl. Patch by H . J . Lu . + +2001-05-14 Bruno Haible + + * iconvdata/iso-2022-cn-ext.c (BODY for FROM_LOOP): If SO is seen + without previous announcement, reject it regularly, don't abort. + +2001-05-16 Ulrich Drepper + + * math/tgmath.h: Fix handling of int parameters to binary and + ternary functions. Reported by mitr@volny.cz. + + * math/test-tgmath.c: Add tests for calls with integer parameters. + +2001-05-15 Jakub Jelinek + + * sunrpc/rpc_thread.c (rpc_default): Remove. + (__rpc_thread_destroy): Use __libc_tsd_RPC_VARS_mem instead of + rpc_default. + (rpc_thread_multi, __rpc_thread_svc_fdset, __rpc_thread_createerr, + __rpc_thread_svc_pollfd, __rpc_thread_svc_max_pollfd): Likewise. + * sunrpc/auth_none.c (authnone_private): Fix a typo. + +2001-05-16 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Fix stack allocation. + +2001-05-16 Bruce Mitchener + + * manual/llio.texi: Many grammar and typo fixes to the section on AIO. + +2001-05-15 Andreas Jaeger + + * sysdeps/ieee754/ldbl-128/s_expm1l.c: New file, contributed by + Stephen L Moshier . + + * sysdeps/i386/fpu/libm-test-ulps: Adjust for change. + + * math/libm-test.inc: Add comment with ToDo. + + * sysdeps/i386/fpu/e_expl.c: Rewritten to C and using a more + accurate algorithm. Patch by Stephen L Moshier . + + * sysdeps/i386/fpu/e_expl.S: Removed. + +2001-05-14 Roland McGrath + + * csu/Makefile ($(objpfx)g$(start-installed-name)): Turn this into a + static pattern rule also that also covers + $(objpx)g$(static-start-installed-name). + [$(start-installed-name) != $(static-start-installed-name)] + (extra-objs, omit-deps, install-lib): Add + $(static-start-installed-name) and g$(static-start-installed-name). + * sysdeps/mach/hurd/i386/Makefile: Don't add crt0.o to those here; + just setting static-start-installed-name is now sufficient. + (extra-objs): Add static-start.o here. + (CFLAGS-initfini.s): Remove obsolete variable. + * sysdeps/mach/hurd/i386/Makeconfig: New file. + Define static-start-installed-name here. + + * Makeconfig: Include existing $(full_config_sysdirs:=/Makeconfig). + * Make-dist (+sysdep-tsrcs): Look for Makeconfig files. + + * Makerules ($(+sysdir_pfx)sysd-Makefile): Remove this target and + associated hair. Instead, just use $(wildcard ...) in the include. + + * configure.in (critic_missing, aux_missing): Collect in these vars + the names of the missing programs, and include them in the error msgs. + * configure: Regenerated. + +2001-05-14 Andreas Jaeger + + * sysdeps/i386/fpu/libm-test-ulps: Adjust for new tests. + + * math/libm-test.inc (tanh_test): Add testcases for last tanh bug. + +2001-05-14 Stephen L Moshier + + * sysdeps/ieee754/ldbl-96/s_tanhl.c (__tanhl): Fix sign test. + +2001-05-11 Jakub Jelinek + + * posix/regex.c (re_match_2_internal): Swap mbs_offset and csize + as well if swapping strings. + Make sure stop is not past end of second string. + * posix/bug-regex4.c: New test. + * posix/Makefile (tests): Add bug-regex4. + +2001-05-10 Andreas Jaeger + + * manual/install.texi (Linux): Clarify that Linux 2.2 is minimal + requirement. + +2001-05-12 Andreas Jaeger + + * sysdeps/ieee754/dbl-64/s_sin.c: Include "math_private.h" for + internal prototypes. + * sysdeps/ieee754/dbl-64/doasin.c: Likewise. + * sysdeps/ieee754/dbl-64/dosincos.c: Likewise. + * sysdeps/ieee754/dbl-64/halfulp.c: Likewise. + * sysdeps/ieee754/dbl-64/sincos32.c: Likewise. + * sysdeps/ieee754/dbl-64/slowexp.c: Likewise. + * sysdeps/ieee754/dbl-64/slowpow.c: Likewise. + * sysdeps/ieee754/dbl-64/branred.c: Likewise. + + * math/math_private.h: Add prototypes for internal functions of + the IBM Accurate Mathematical Library. + + * sysdeps/ieee754/dbl-64/s_atan.c: Include "math.h" for + prototypes. + * sysdeps/ieee754/dbl-64/s_tan.c: Likewise. + + * sysdeps/ieee754/dbl-64/e_asin.c: Include "math_private.h" for + internal prototypes. + * sysdeps/ieee754/dbl-64/s_atan.c: Likewise. + * sysdeps/ieee754/dbl-64/e_sqrt.c: Likewise. + * sysdeps/ieee754/dbl-64/e_remainder.c: Likewise. + * sysdeps/ieee754/dbl-64/e_pow.c: Likewise. + * sysdeps/ieee754/dbl-64/e_log.c: Likewise. + * sysdeps/ieee754/dbl-64/e_exp.c: Likewise. + * sysdeps/ieee754/dbl-64/e_atan2.c: Likewise. + * sysdeps/generic/e_rem_pio2l.c: Likewise. + (__ieee754_rem_pio2l): Fix prototype. + + * math/math_private.h (__copysign): Add internal prototype. + +2001-05-11 Andreas Jaeger + + * sysdeps/unix/sysv/linux/configure.in: Move binutils check to... + * sysdeps/unix/sysv/linux/mips/configure.in: ...here. New file. + +2001-05-11 Andreas Jaeger + + * sysdeps/unix/sysv/linux/configure.in: Check binutils version on + MIPS. + + * sysdeps/mips/rtld-ldscript.in: Removed unneeded binary output + format directive. Patch by Steven J. Hill . + +2001-05-11 Roland McGrath + + * sysdeps/mach/hurd/Makefile ($(link-rpcuserlibs)): Don't use + $(build-module) here, since we don't need the full magilla. + Just use $(build-module-helper) and append our special options. + +2001-05-09 Andreas Schwab + + * sysdeps/unix/readdir.c: Make sure we don't modify errno when we + reached EOF. + +2001-05-07 H.J. Lu + + * elf/ldconfig.c (dir_entry): Add ino and dev. + (add_single_dir): Compare ino and dev to check if 2 directory + paths are the same or not. Free entry->path for duplicates. + (add_dir): Initialize ino and dev for entry. + (search_dir): Handle symlink to directory. + +2001-05-07 Andreas Jaeger + + * sysdeps/i386/fpu/libm-test-ulps: Add ulps for new exp tests. + + * math/libm-test.inc (exp_test): Add some more tests. + (pow_test): Run double only test also for long double. + + * math/test-ldouble.c (TEST_LDOUBLE): Define. + * math/test-ildoubl.c (TEST_LDOUBLE): Likewise. + + * sysdeps/generic/bits/confname.h: Remove extra comma at end of + enumeration. + Closes PR libc/2240. + + * scripts/config.guess: Imported from gnu.org. + * scripts/config.sub: Likewise. + +2001-05-05 Jakub Jelinek + + * include/features.h (__USE_EXTERN_INLINES): Don't define if + __NO_INLINE__ is defined. + * ctype/ctype.h (tolower, toupper): Change the guard condition to + __USE_EXTERN_INLINES check only. + * stdlib/stdlib.h (strtod, ...): Likewise. + * wcsmbs/wchar.h (mbrlen): Likewise. + * string/string.h: Only include bits/string.h and bits/string2.h + if __NO_INLINE__ is not defined. + +2001-05-07 Andreas Jaeger + + * debug/Makefile ($(objpfx)xtrace): Substitute @SLIBDIR@ instead + of @LIBDIR@. + +2001-05-04 H.J. Lu + + * malloc/Makefile ($(objpfx)memusage): Substitute @SLIBDIR@ + not @LIBDIR@. + +2001-05-06 Andreas Jaeger + + * sysdeps/i386/fpu/e_fmodl.c: New, rewrite of e_fmodl.S. + * sysdeps/i386/fpu/e_fmodl.S: Removed. + * sysdeps/i386/fpu/e_atan2l.c: New, rewrite of e_atan2l.S. + * sysdeps/i386/fpu/e_atan2l.S: Removed. + * sysdeps/i386/fpu/e_acosl.c: New, rewrite of e_acos.S. + * sysdeps/i386/fpu/s_atanl.c: New, rewrite of e_atanl.S. + * sysdeps/i386/fpu/e_sqrtl.c: New, rewrite of e_sqrt.S. + * sysdeps/i386/fpu/e_acosl.S: Removed. + * sysdeps/i386/fpu/s_atanl.S: Removed. + * sysdeps/i386/fpu/e_sqrtl.S: Removed. + +2001-05-05 Mark Kettenis + + * sysdeps/mach/hurd/bits/environments.h: Add comment from + sysdeps/generic/bits/environments.h. Define _POSIX_V6_* values. + +2001-04-30 Jakub Jelinek + + * posix/confstr.c (confstr) [_CS_V6_WIDTH_RESTRICTED_ENVS]: Move so + that _CS_LFS_CFLAGS can fall through to the empty returned string + case. Add FALLTHROUGH comment. + +2001-04-29 Ralf Baechle + + * sysdeps/unix/sysv/linux/mips/bits/sem.h: Make structure + definitions match the kernel definitions. + * sysdeps/unix/sysv/linux/mips/bits/ipc.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/shm.h: Likewise. + +2001-04-29 Ben Collins + + * sysdeps/sparc/sparc64/dl-machine.h: Fix multiline strings + warnings. + * sysdeps/sparc/sparc64/soft-fp/qp_add.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_cmp.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_cmpe.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_div.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_dtoq.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_feq.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_fge.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_fgt.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_fle.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_flt.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_fne.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_mul.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_qtod.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_qtos.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_qtoui.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_qtoux.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_qtox.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_qtox.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_sqrt.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_stoq.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/qp_sub.c: Likewise. + * sysdeps/sparc/sparc64/soft-fp/sfp-machine.h: Likewise. + +2001-04-29 Andreas Schwab + + * sysdeps/unix/sysv/linux/kernel-features.h: Fix missing backslash + in last change. + +2001-04-29 Andreas Jaeger + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FCNTL64): + Define for Arm, PowerPC and SH if kernel is 2.4.4 or newer. + + * sysdeps/unix/sysv/linux/bits/socket.h (PF_WANPIPE): New, from + Linux 2.4.4. + (AF_WANPIPE): Likewise. + (MSG_MORE): New. + + * sysdeps/unix/sysv/linux/alpha/bits/socket.h: Add same changes as + for Linux generic version. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/socket.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/socket.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/socket.h: Likewise. + + * sysdeps/gnu/netinet/tcp.h (TCP_QUICKACK): New. + +2001-04-27 Ulrich Drepper + + * nis/nss-nis.h: Correct test for invalid error number. + * nis/nss-nisplus.h: Likewise. + + * nis/Makefile (libnss_compat-rountines): Add nss-nisplus. + 2001-04-26 Ulrich Drepper * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add getunwind. @@ -67,7 +2948,7 @@ * sysdeps/unix/sysv/linux/sparc/bits/socket.h: ...here. Adjust struct msghdr for __WORDSIZE == 32. * sysdeps/unix/sysv/linux/sparc/sparc64/bits/statvfs.h: Move to... - * sysdeps/unix/sysv/linux/sparc/bits/statvfs.h: ...here. Adjust + * sysdeps/unix/sysv/linux/sparc/bits/statvfs.h: ...here. Adjust for __WORDSIZE == 32. * sysdeps/unix/sysv/linux/sparc/sparc64/bits/siginfo.h: Remove. * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/get_clockfreq.c: New @@ -433,8 +3314,8 @@ * sysdeps/unix/sysv/linux/sparc/sparc64/setcontext.S (__setcontext): Copy first word of uc_sigmask into __uc_sigmask. * sysdeps/unix/sysv/linux/sparc/sparc64/getcontext.S (__getcontext): - Save uc_link around trap. Copy __uc_sigmask into first word of - uc_sigmask, clear the rest. Make sure setcontext to the created + Save uc_link around trap. Copy __uc_sigmask into first word of + uc_sigmask, clear the rest. Make sure setcontext to the created context doesn't do this though. * sysdeps/unix/sysv/linux/sparc/sparc64/ucontext_i.h: New file. * sysdeps/unix/sysv/linux/sparc/sys/ucontext.h (ucontext_t): Add @@ -494,7 +3375,8 @@ 2001-04-16 Stephen L Moshier * sysdeps/ieee754/flt-32/e_asinf.c (pio2_hi, pio2_lo, pio4_hi): - Correct the values. (pSx, qSx): Replace by shorter approximation. + Correct the values. + (pSx, qSx): Replace by shorter approximation. Use f suffix on float constants. 2001-04-16 Ulrich Drepper @@ -565,7 +3447,7 @@ 2001-04-11 Bruno Haible * iconvdata/utf-16.c (PREPARE_LOOP): Initialize 'swap' after possibly - changing it in the state. After incrementing 'inptr', store it back. + changing it in the state. After incrementing 'inptr', store it back. * iconvdata/unicode.c (PREPARE_LOOP): After incrementing 'inptr', store it back. @@ -1307,7 +4189,7 @@ 2001-03-30 Isamu Hasegawa - * posix/regex.c: Avoid an access violation if malloc failes. + * posix/regex.c: Avoid an access violation if malloc fails. 2001-03-30 Andreas Jaeger @@ -1324,7 +4206,7 @@ * include/endian.h: Define BIG_ENDI, LITTLE_ENDI, HIGH_HALF, and LOW_HALF only if _LIBC is defined and _ISOMAC is not defined. * stdlib/isomac.c (fmt): Define _LIBC and _ISOMAC. - . + 2001-03-29 Isamu Hasegawa * posix/regex.c: Fix typo and add a sentinel. @@ -1585,7 +4467,7 @@ 2001-03-17 Bruno Haible * intl/gettextP.h (struct expression): Add operators lnot, less_than, - greater_than, less_or_equal, greater_or_equal. Replace args2/args3 + greater_than, less_or_equal, greater_or_equal. Replace args2/args3 union by a 'nargs' counter and an 'args[]' array. * intl/plural.y: Don't include stdarg.h. (new_exp): Take an array of arguments instead of varargs. @@ -1596,15 +4478,15 @@ (ADDOP2): New token, replaces '+' and '-'. (MULOP2): New token, replaces '*', '/' and '%'. ('!'): New token. - (exp): Add rules for CMPOP2 and '!'. Don't call YYABORT. + (exp): Add rules for CMPOP2 and '!'. Don't call YYABORT. (start): Call YYABORT here. (FREE_EXPRESSION): Update. - (yylex): Don't skip "\\n". Recognize comparison and '!' operators. + (yylex): Don't skip "\\n". Recognize comparison and '!' operators. Update for new token symbols. * intl/loadmsgcat.c (plvar, plone, germanic_plural, init_germanic_plural): Update. * intl/dcigettext.c (_nl_find_msg): Optimize for space. - (plural_eval): Recognize comparison and '!' operators. Optimize for + (plural_eval): Recognize comparison and '!' operators. Optimize for space. 2001-03-10 Bruno Haible @@ -1686,7 +4568,7 @@ 2001-03-17 Bruno Haible - * intl/gettextP.h: Include . Include gettext.h, for + * intl/gettextP.h: Include . Include gettext.h, for nls_uint32. * intl/bindtextdom.c: Don't include gettext.h. * intl/dcgettext.c: Likewise. @@ -2186,7 +5068,7 @@ * sysdeps/s390/sys/ucontext.h: Remove since it is unused. * sysdeps/unix/sysv/linux/s390/sysdep.h: Move to... - * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: ...here. Include + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: ...here. Include sysdeps/s390/s390-32/sysdep.h instead of sysdeps/s390/sysdep.h. 2001-03-13 Martin Schwidefsky @@ -2963,8 +5845,8 @@ * sysdeps/unix/sysv/aix/Dist: Remove restf.S and savef.S. * sysdeps/unix/sysv/aix/Makefile [$(subdir) == misc] (sysdep_routines): Remove restf.S and savef.S. - * sysdeps/unix/sysv/aix/restf.S. Removed. - * sysdeps/unix/sysv/aix/savef.S. Removed. + * sysdeps/unix/sysv/aix/restf.S: Removed. + * sysdeps/unix/sysv/aix/savef.S: Removed. * sysdeps/powerpc/fprrest.S: Use C_TEXT to define label. Also define alternative names used on some platforms. * sysdeps/powerpc/fprsave.S: Likewise. @@ -4768,7 +7650,7 @@ * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h (GET_PC): Likewise. (GET_FRAME): Likewise. (GET_STACK): Likewise. - (SIGCONTEXT): Likewise. Add 2nd arg _code. + (SIGCONTEXT): Likewise. Add 2nd arg _code. (SIGCONTEXT_EXTRA_ARGS): Add 2nd arg _code. 2001-01-13 Ulrich Drepper @@ -4993,7 +7875,7 @@ * elf/dl-support.c (non_dynamic_init): Move the auxiliary vector checking to ... - (_dl_aux_init): Here. New function. Defined only if + (_dl_aux_init): Here. New function. Defined only if HAVE_AUX_VECTOR is defined. * sysdeps/generic/libc-start.c (__libc_start_main): Call @@ -5134,13 +8016,13 @@ Finish implementation of plural form handling. * intl/dcigettext.c (known_translation_t): Rename 'domain' field to - 'domainname'. Remove 'plindex' field. Add 'domain' and + 'domainname'. Remove 'plindex' field. Add 'domain' and 'translation_length' fields. (transcmp): Don't compare 'plindex' fields. (plural_lookup): New function. (DCIGETTEXT): Change cache handing in the plural case. Don't call plural_eval before the translation and its catalog file have been - found. Remove plindex from cache key. Add 'translation_length' and + found. Remove plindex from cache key. Add 'translation_length' and 'domain' to cache result. (_nl_find_msg): Remove index argument, return length of translation to the caller instead. Weaken comparison of string lengths, to account @@ -5156,7 +8038,7 @@ 2000-07-31 Bruno Haible - * intl/plural.y: Include config.h. Needed to define 'inline' away for + * intl/plural.y: Include config.h. Needed to define 'inline' away for C compilers that don't support it. (yylex): Don't use gcc specific case range syntax. * intl/loadmsgcat.c (INIT_GERMANIC_PLURAL): New macro, for old diff -durpN glibc-2.2.3/FAQ glibc-2.2.4/FAQ --- glibc-2.2.3/FAQ Thu Apr 26 21:37:52 2001 +++ glibc-2.2.4/FAQ Fri Jul 27 23:52:36 2001 @@ -560,11 +560,11 @@ newer. 1.20. Which tools should I use for MIPS? -{AJ} You should use the current development version of gcc 2.97 from CVS. -gcc 2.95.x does not work correctly on mips-linux. +{AJ} You should use the current development version of gcc 3.0 or newer from +CVS. gcc 2.95.x does not work correctly on mips-linux. -You need also recent binutils, anything before and including 2.10 will not -work correctly. Either try the Linux binutils 2.10.0.33 from HJ Lu or the +You need also recent binutils, anything before and including 2.11 will not +work correctly. Either try the Linux binutils 2.11.90.0.5 from HJ Lu or the current development version of binutils from CVS. Please note that `make check' might fail for a number of the math tests @@ -1862,29 +1862,29 @@ this should be necessary. supports synchronous context switches only. There are several reasons for this: - o UNIX provides no other (portable) way of effecting a synchronous - context switch (also known as co-routine switch). Some versions - support this via setjmp()/longjmp() but this does not work - universally. +- UNIX provides no other (portable) way of effecting a synchronous + context switch (also known as co-routine switch). Some versions + support this via setjmp()/longjmp() but this does not work + universally. - o As defined by the UNIX '98 standard, the only way setcontext() - could trigger an asychronous context switch is if this function - were invoked on the ucontext_t pointer passed as the third argument - to a signal handler. But according to draft 5, XPG6, XBD 2.4.3, - setcontext() is not among the set of routines that may be called - from a signal handler. +- As defined by the UNIX '98 standard, the only way setcontext() + could trigger an asychronous context switch is if this function + were invoked on the ucontext_t pointer passed as the third argument + to a signal handler. But according to draft 5, XPG6, XBD 2.4.3, + setcontext() is not among the set of routines that may be called + from a signal handler. - o If setcontext() were to be used for asynchronous context switches, - all kinds of synchronization and re-entrancy issues could arise and - these problems have already been solved by real multi-threading - libraries (e.g., POSIX threads or Linux threads). +- If setcontext() were to be used for asynchronous context switches, + all kinds of synchronization and re-entrancy issues could arise and + these problems have already been solved by real multi-threading + libraries (e.g., POSIX threads or Linux threads). - o Synchronous context switching can be implemented entirely in - user-level and less state needs to be saved/restored than for an - asynchronous context switch. It is therefore useful to distinguish - between the two types of context switches. Indeed, some - application vendors are known to use setcontext() to implement - co-routines on top of normal (heavier-weight) pre-emptable threads. +- Synchronous context switching can be implemented entirely in + user-level and less state needs to be saved/restored than for an + asynchronous context switch. It is therefore useful to distinguish + between the two types of context switches. Indeed, some + application vendors are known to use setcontext() to implement + co-routines on top of normal (heavier-weight) pre-emptable threads. It should be noted that if someone was dead-bent on using setcontext() on the third arg of a signal handler, then IA-64 Linux could support diff -durpN glibc-2.2.3/FAQ.in glibc-2.2.4/FAQ.in --- glibc-2.2.3/FAQ.in Wed Apr 25 14:50:52 2001 +++ glibc-2.2.4/FAQ.in Mon Jul 23 10:53:34 2001 @@ -366,11 +366,11 @@ newer. ??mips Which tools should I use for MIPS? -{AJ} You should use the current development version of gcc 2.97 from CVS. -gcc 2.95.x does not work correctly on mips-linux. +{AJ} You should use the current development version of gcc 3.0 or newer from +CVS. gcc 2.95.x does not work correctly on mips-linux. -You need also recent binutils, anything before and including 2.10 will not -work correctly. Either try the Linux binutils 2.10.0.33 from HJ Lu or the +You need also recent binutils, anything before and including 2.11 will not +work correctly. Either try the Linux binutils 2.11.90.0.5 from HJ Lu or the current development version of binutils from CVS. Please note that `make check' might fail for a number of the math tests @@ -1602,29 +1602,29 @@ this should be necessary. supports synchronous context switches only. There are several reasons for this: - o UNIX provides no other (portable) way of effecting a synchronous - context switch (also known as co-routine switch). Some versions - support this via setjmp()/longjmp() but this does not work - universally. +- UNIX provides no other (portable) way of effecting a synchronous + context switch (also known as co-routine switch). Some versions + support this via setjmp()/longjmp() but this does not work + universally. - o As defined by the UNIX '98 standard, the only way setcontext() - could trigger an asychronous context switch is if this function - were invoked on the ucontext_t pointer passed as the third argument - to a signal handler. But according to draft 5, XPG6, XBD 2.4.3, - setcontext() is not among the set of routines that may be called - from a signal handler. +- As defined by the UNIX '98 standard, the only way setcontext() + could trigger an asychronous context switch is if this function + were invoked on the ucontext_t pointer passed as the third argument + to a signal handler. But according to draft 5, XPG6, XBD 2.4.3, + setcontext() is not among the set of routines that may be called + from a signal handler. - o If setcontext() were to be used for asynchronous context switches, - all kinds of synchronization and re-entrancy issues could arise and - these problems have already been solved by real multi-threading - libraries (e.g., POSIX threads or Linux threads). +- If setcontext() were to be used for asynchronous context switches, + all kinds of synchronization and re-entrancy issues could arise and + these problems have already been solved by real multi-threading + libraries (e.g., POSIX threads or Linux threads). - o Synchronous context switching can be implemented entirely in - user-level and less state needs to be saved/restored than for an - asynchronous context switch. It is therefore useful to distinguish - between the two types of context switches. Indeed, some - application vendors are known to use setcontext() to implement - co-routines on top of normal (heavier-weight) pre-emptable threads. +- Synchronous context switching can be implemented entirely in + user-level and less state needs to be saved/restored than for an + asynchronous context switch. It is therefore useful to distinguish + between the two types of context switches. Indeed, some + application vendors are known to use setcontext() to implement + co-routines on top of normal (heavier-weight) pre-emptable threads. It should be noted that if someone was dead-bent on using setcontext() on the third arg of a signal handler, then IA-64 Linux could support diff -durpN glibc-2.2.3/Make-dist glibc-2.2.4/Make-dist --- glibc-2.2.3/Make-dist Wed Aug 2 14:51:55 2000 +++ glibc-2.2.4/Make-dist Mon Jul 23 10:53:34 2001 @@ -1,20 +1,20 @@ -# Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. +# Copyright (C) 1991-1999,2000,01 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. dist: @@ -184,9 +184,9 @@ foo:=$(shell echo +sysdep-distfiles='$(+ $(sysdep-Subdir-files) foo:=$(shell echo '+sysdep-dist=$(+sysdep-dist)' >&2) -+sysdep-tsrcs := $(wildcard $(foreach file,Makefile Implies syscalls.list\ ++sysdep-tsrcs := $(wildcard $(foreach file,Makefile Makeconfig Implies \ configure configure.in Versions\ - libm-test-ulps,\ + syscalls.list libm-test-ulps,\ $(addsuffix /$(file),$(sysdep_dirs)))) \ $(+sysdep-dist) diff -durpN glibc-2.2.3/MakeTAGS glibc-2.2.4/MakeTAGS --- glibc-2.2.3/MakeTAGS Mon May 1 14:56:29 2000 +++ glibc-2.2.4/MakeTAGS Mon Jul 23 10:53:34 2001 @@ -1,22 +1,21 @@ # Make the TAGS files. - # Copyright (C) 1992, 1994, 1995, 1996, 1998 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License -# as published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # Make this the default goal. TAGS: diff -durpN glibc-2.2.3/Makeconfig glibc-2.2.4/Makeconfig --- glibc-2.2.3/Makeconfig Tue Apr 17 08:17:07 2001 +++ glibc-2.2.4/Makeconfig Mon Jul 23 10:53:35 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Makefile configuration options for the GNU C library. @@ -417,12 +417,13 @@ ifndef +link-bounded $(link-extra-libs-bounded) $(link-libc-bounded) $(+postctor) $(+postinit) endif ifndef config-LDFLAGS -ifeq (yes,$(build-shared)) +ifeq (yesyes,$(build-shared)$(elf)) config-LDFLAGS = -Wl,-dynamic-linker=$(slibdir)/$(rtld-installed-name) endif endif ifndef link-libc ifeq (yes,$(build-shared)) +ifeq ($(elf),yes) # We need the versioned name of libc.so in the deps of $(others) et al # so that the symlink to libc.so is created before anything tries to # run the linked programs. @@ -431,6 +432,13 @@ link-libc = -Wl,-rpath-link=$(rpath-link $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) # This is how to find at build-time things that will be installed there. rpath-dirs = math elf dlfcn nss nis rt resolv crypt +else +ifneq (,$(findstring aix,$(config-os))) +link-libc = $(common-objpfx)libc.a \ + $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) +rpath-dirs = math dlfcn nss nis rt resolv crypt +endif +endif rpath-link = \ $(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%))) elfobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)elf) @@ -441,6 +449,21 @@ link-libc = $(common-objpfx)libc.a $(oth endif endif +# Differences in the linkers on the various platforms. +ifeq ($(elf),yes) +LDFLAGS-rpath-ORIGIN = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-soname-fname = -Wl,-soname,$(@F) +LDFLAGS-rdynamic = -rdynamic +LDFLAGS-Bsymbolic = -Bsymbolic +else +ifneq (,$(findstring aix,$(config-os))) +LDFLAGS-rpath-ORIGIN = +LDFLAGS-soname-fname = +LDFLAGS-rdynamic = -Wl,-bdynamic +LDFLAGS-Bsymbolic = -Wl,-bsymbolic +endif +endif + # Choose the default search path for the dynamic linker based on # where we will install libraries. ifneq ($(libdir),$(slibdir)) @@ -493,7 +516,7 @@ elf-objpfx = $(common-objpfx)elf/ # How to run a program we just linked with our library. # The program binary is assumed to be $(word 2,$^). built-program-file = $(dir $(word 2,$^))$(notdir $(word 2,$^)) -ifeq (yes,$(build-shared)) +ifeq (yesyes,$(build-shared)$(elf)) comma = , sysdep-library-path = \ $(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\ @@ -758,6 +781,13 @@ postclean-generated += soversions.mk before-compile += $(common-objpfx)gnu/lib-names.h ifeq ($(soversions.mk-done),t) $(common-objpfx)gnu/lib-names.h: $(common-objpfx)gnu/lib-names.stmp; @: +ifneq (,$(findstring aix,$(config-os))) +$(common-objpfx)gnu/lib-names.stmp: $(..)sysdeps/unix/sysv/aix/gnu/lib-names.h + $(make-target-directory) + @rm -f ${@:stmp=T} $@ + @cp $(..)sysdeps/unix/sysv/aix/gnu/lib-names.h $(common-objpfx)gnu + touch $@ +else $(common-objpfx)gnu/lib-names.stmp: $(common-objpfx)soversions.mk $(make-target-directory) @rm -f ${@:stmp=T} $@ @@ -786,6 +816,7 @@ $(common-objpfx)gnu/lib-names.stmp: $(co $(move-if-change) ${@:stmp=T} ${@:stmp=h} touch $@ endif +endif common-generated += gnu/lib-names.h gnu/lib-names.stmp @@ -806,13 +837,6 @@ endif endif # build-shared -ifneq (,$(findstring linuxthreads,$(add-ons))) -shared-thread-library = $(common-objpfx)linuxthreads/libpthread.so -static-thread-library = $(common-objpfx)linuxthreads/libpthread.a -bounded-thread-library = $(common-objpfx)linuxthreads/libpthread_b.a -have-thread-library = yes -rpath-dirs += linuxthreads -endif ifeq ($(elf),yes) dlfcn = dlfcn @@ -822,10 +846,21 @@ else libdl = $(common-objpfx)dlfcn/libdl.a endif else -# No ELF - no libdl, at least for now. +ifneq (,$(findstring aix,$(config-os))) +ifeq ($(build-shared),yes) +dlfcn = dlfcn +libdl = $(common-objpfx)dlfcn/libdl.so$(libdl.so-version) +else +# No libdl without shared libs on AIX +dlfcn = +libdl = +endif +else +# No ELF, no AIX - no libdl, at least for now. dlfcn = libdl = endif +endif # These are the subdirectories containing the library source. The order # is more or less arbitrary. The sorting step will take care of the @@ -878,5 +913,14 @@ $(common-objpfx)sysd-sorted: $(..)script } > $@-tmp mv -f $@-tmp $@ endif + +# Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here. +sysdep-makeconfigs := $(wildcard $(patsubst %,$(..)%/Makeconfig,\ + $(config-sysdirs) $(add-ons))) + +ifneq (,$(sysdep-makeconfigs)) +include $(sysdep-makeconfigs) +endif + endif # Makeconfig not yet included diff -durpN glibc-2.2.3/Makefile glibc-2.2.4/Makefile --- glibc-2.2.3/Makefile Mon Apr 9 20:03:22 2001 +++ glibc-2.2.4/Makefile Mon Jul 23 10:53:35 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Master Makefile for the GNU C library @@ -167,8 +167,8 @@ $(objpfx)glibcbug: $(common-objpfx)confi cd $( $@T - mv -f $@T $@ -endif - -ifndef sysd-Makefile-done -# Don't do deps until this exists, because it might change the sources list. -no_deps=t +sysdep-makefiles := $(wildcard $(full_config_sysdirs:=/Makefile)) +ifneq (,$(sysdep-makefiles)) +include $(sysdep-makefiles) endif @@ -136,6 +117,11 @@ $(common-objpfx)abi-versions.h: $(..)scr $(common-objpfx)Versions.all LC_ALL=C $(AWK) -v oldest_abi=$(oldest-abi) -f $^ > $@T mv -f $@T $@ + +$(common-objpfx)%.latest: $(common-objpfx)abi-versions.h + sed -n '/ VERSION_$*_/{s/^.*_\([A-Z0-9_]*\).*$$/\1/;h;};$${g;p;}' \ + $(common-objpfx)abi-versions.h > $@T + mv -f $@T $@ endif # avoid-generated endif # $(versioning) = yes @@ -230,10 +216,6 @@ endef close-check-inhibit-asm = ;; esac ; endif -# Don't include sysd-rules until sysd-Makefile is already there and has been -# included. It might define inhibit-sysdep-asm, which would affect the -# contents of sysd-rules. -ifdef sysd-Makefile-done -include $(+sysdir_pfx)sysd-rules ifneq ($(sysd-rules-sysdirs),$(config-sysdirs)) # The value of $(+sysdep_dirs) the sysd-rules was computed for @@ -241,7 +223,6 @@ ifneq ($(sysd-rules-sysdirs),$(config-sy sysd-rules-force = FORCE FORCE: endif -endif $(+sysdir_pfx)sysd-rules: $(+sysdir_pfx)config.make $(..)Makerules \ $(wildcard $(foreach dir,$(sysdirs),\ $(dir)/Makefile))\ @@ -370,7 +351,7 @@ endif # Modify the list of routines we build for different targets -ifeq (yes,$(build-shared)) +ifeq (yesyes,$(build-shared)$(elf)) ifndef libc.so-version # Undefine this because it can't work when we libc.so is unversioned. static-only-routines = @@ -411,8 +392,13 @@ endif # $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies # on other shared objects. lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(+interp) +ifneq (,$(findstring aix,$(config-os))) + (echo '#!'; \ + dump -g $< | sed '1,6d' | cut -f2 | sort | uniq) > $(<:a=exp) +endif $(build-shlib) +ifeq ($(elf),yes) define build-shlib-helper $(LINK.o) -shared -Wl,-O1 $(sysdep-LDFLAGS) $(config-LDFLAGS) \ $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \ @@ -421,6 +407,18 @@ $(LINK.o) -shared -Wl,-O1 $(sysdep-LDFLA $(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \ -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) endef +else +ifneq (,$(findstring aix,$(config-os))) +define build-shlib-helper +$(LINK.o) -Wl,-G,-bM:SRE,-bnoentry,-bE:$(<:a=exp) \ + $(sysdep-LDFLAGS) $(config-LDFLAGS) $(extra-B-$(@F:lib%.so=%).so) \ + $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \ + $(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \ + -L$(subst :, -L,$(rpath-link)) +endef +else +endif +endif ifeq (yes,$(elf)) # binutils only position loadable notes into the first page for binaries, @@ -434,26 +432,40 @@ $(build-shlib-helper) \ > $@.lds rm -f $@.new $(build-shlib-helper) -o $@ -T $@.lds \ - -Wl,--whole-archive $(csu-objpfx)abi-note.o \ - $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \ - $(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so) + $(csu-objpfx)abi-note.o $(build-shlib-objlist) rm -f $@.lds endef else +ifneq (,$(findstring aix,$(config-os))) define build-shlib $(build-shlib-helper) \ - -o $@ -Wl,--whole-archive \ - $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \ - $(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so) + -o $@ \ + $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \ + $(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so) +endef +define build-shlib +$(build-shlib-helper) \ + $(build-shlib-objlist) endef endif +endif +ifneq (,$(findstring aix,$(config-os))) +define build-module-helper +$(LINK.o) -Wl,-G -Wl,-bM:SRE -Wl,-bnoentry -Wl,-bexpall \ + $(sysdep-LDFLAGS) $(config-LDFLAGS) \ + $(load-map-file) \ + $(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \ + -L$(subst :, -L,$(rpath-link)) -Wl,-L=$(rpath-link) +endef +else define build-module-helper $(LINK.o) -shared $(sysdep-LDFLAGS) $(config-LDFLAGS) \ -B$(csu-objpfx) $(load-map-file) \ $(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \ -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) endef +endif # This macro is similar to build-shlib but it does not define a soname # and it does not depend on the destination name to start with `lib'. @@ -469,20 +481,36 @@ $(build-module-helper) \ > $@.lds rm -f $@.new $(build-module-helper) -o $@ -T $@.lds \ - -Wl,--whole-archive $(csu-objpfx)abi-note.o \ - $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \ - $(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so) + $(csu-objpfx)abi-note.o $(build-module-objlist) rm -f $@.lds endef else +ifneq (,$(findstring aix,$(config-os))) define build-module $(build-module-helper) \ - -o $@ -Wl,--whole-archive \ + -o $@ \ $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \ $(no-whole-archive) $(LDLIBS-$(@F:%.so=%).so) endef +else +define build-module +define build-module +$(build-module-helper) \ + -o $@ \ + $(build-module-objlist) +endef +endif endif +build-module-helper-objlist = \ + $(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\ + $(filter-out $(map-file) $(+preinit) $(+postinit),$^)) +whole-archive := -Wl,--whole-archive + +build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so) +build-shlib-objlist = $(build-module-helper-objlist) \ + $(LDLIBS-$(@F:lib%.so=%).so) + # Don't try to use -lc when making libc.so itself. # Also omits crti.o and crtn.o, which we do not want # since we define our own `.init' section specially. @@ -498,6 +526,7 @@ LDFLAGS-c.so += -u __register_frame # contains some of libc_pic.a already, which will prevent the COMMONs # from being allocated in libc.so, which introduces evil dependencies # between libc.so and ld.so, which can make it impossible to upgrade. +ifeq ($(elf),yes) $(common-objpfx)libc_pic.os: $(common-objpfx)libc_pic.a $(LINK.o) -nostdlib -nostartfiles -r -o $@ \ $(LDFLAGS-c_pic.os) -Wl,-d -Wl,--whole-archive $^ @@ -515,6 +544,23 @@ ifdef libc.so-version $(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so $(make-link) common-generated += libc.so$(libc.so-version) +endif +endif +else +ifneq (,$(findstring aix,$(config-os))) +$(common-objpfx)libc.so: $(common-objpfx)libc_pic.a + @rm -f $@ + (echo '#!'; \ + dump -g $^ | sed '1,6d' | cut -f2 | sort | uniq) > $(^:a=exp) + sed '/__mulh/d;/__mull/d;/__divss/d;/__divus/d;/__quoss/d;/__quous/d' \ + /lib/syscalls.exp > $(common-objpfx)syscalls.exp + $(LINK.o) -G -bM:SRE -bnoentry -bE:$(^:a=exp) \ + -bE:$(common-objpfx)syscalls.exp \ + -bI:$(common-objpfx)syscalls.exp \ + -L$(common-objpfx) -o $@ $^ +# AIX runtime ld wants libc.so to be libc.a(shr.o) hardwired + cp $@ $(common-objpfx)shr.o + $(AR) $(ARFLAGS) $(common-objpfx)libc.a $(common-objpfx)shr.o endif endif diff -durpN glibc-2.2.3/NEWS glibc-2.2.4/NEWS --- glibc-2.2.3/NEWS Wed Apr 25 14:50:52 2001 +++ glibc-2.2.4/NEWS Sat Aug 11 18:28:48 2001 @@ -1,10 +1,35 @@ -GNU C Library NEWS -- history of user-visible changes. 2001-4-20 +GNU C Library NEWS -- history of user-visible changes. 2001-7-27 Copyright (C) 1992-2000, 2001 Free Software Foundation, Inc. See the end for copying conditions. Please send GNU C library bug reports using the `glibcbug' script to . Questions and suggestions should be send to . + +Version 2.2.4 + +* Stephen Moshier implemented cosh, expm1, log1p, acos, sinh, tanh, + asinh, atanh, j0 for the 128-bit long double format. + +* Bruno Haible updated all the code handling Unicode in some form to + support Unicode 3.1. + +* Speed of regex for single-byte locales is back to previous levels. + Patch by Isamu Hasegawa. + +* Alpha, SPARC, and IA-64 now also using floating stacks. + +* Startup time of internationalized applications greatly improved through + iconv cache. Use iconvconfig to generate the cache file. + Contributed by Ulrich Drepper. + +* The IA-64 specific part of ld.so was rewritten to eliminate some pretty + severe performance problems. Patch by David Mosberger. + +* The Hurd port got a lot more functionality like AIO, various stdio + extensions, etc. Mainly done by Roland McGrath. + +* mtrace can now lookup symbols in shared libraries. Version 2.2.3 diff -durpN glibc-2.2.3/PROJECTS glibc-2.2.4/PROJECTS --- glibc-2.2.3/PROJECTS Mon Mar 26 20:52:47 2001 +++ glibc-2.2.4/PROJECTS Mon Jul 23 10:53:35 2001 @@ -156,24 +156,7 @@ contact . the currently implemented methods. -[22] It should be possible to have the information gconv-modules in - a simple cache which is faster to access. Using libdb is probably - overkill and loading it would probably be slower than reading the - plain text file. But a file format with a simple hash table and - some data it points to should be fine. Probably it should be - two tables, one for the aliases, one for the mappings. The code - should start similar to this: - - if (stat ("gconv-modules", &stp) == 0 - && stat ("gconv-modules.db", &std) == 0 - && stp.st_mtime < std.st_mtime) - { - ... use the cache ... - { - else - { - ... use the plain file if it exists, otherwise the db ... - } +[22] Done. [23] The `strptime' function needs to be completed. This includes among diff -durpN glibc-2.2.3/README glibc-2.2.4/README --- glibc-2.2.3/README Wed Apr 25 16:16:36 2001 +++ glibc-2.2.4/README Fri Jul 27 23:17:22 2001 @@ -1,4 +1,4 @@ -This directory contains the version 2.2.3 release of the GNU C Library. +This directory contains the version 2.2.4 release of the GNU C Library. Many bugs have been fixed since the last release. Some bugs surely remain. diff -durpN glibc-2.2.3/Rules glibc-2.2.4/Rules --- glibc-2.2.3/Rules Sat Jan 6 20:35:10 2001 +++ glibc-2.2.4/Rules Mon Jul 23 10:53:35 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Rules for making a subdirectory in the GNU C library. diff -durpN glibc-2.2.3/Versions.def glibc-2.2.4/Versions.def --- glibc-2.2.3/Versions.def Mon Mar 26 20:52:47 2001 +++ glibc-2.2.4/Versions.def Mon Jul 23 10:53:35 2001 @@ -12,6 +12,7 @@ libc { GLIBC_2.2.1 GLIBC_2.2.2 GLIBC_2.2.3 + GLIBC_2.2.4 %ifdef USE_IN_LIBIO HURD_CTHREADS_0.3 %endif diff -durpN glibc-2.2.3/aclocal.m4 glibc-2.2.4/aclocal.m4 --- glibc-2.2.3/aclocal.m4 Tue Jun 1 10:41:16 1999 +++ glibc-2.2.4/aclocal.m4 Mon Jul 23 10:53:35 2001 @@ -3,8 +3,8 @@ dnl which appears in configure.in before dnl Each sysdep configure.in does GLIBC_PROVIDES first, to avoid any dnl AC_REQUIREs or AC_BEFOREs duplicating their code. dnl -define(AC_FD_MSG,6)dnl Autoconf lossage. -define(AC_FD_CC,5)dnl Autoconf lossage. +define([AC_FD_MSG],6)dnl Autoconf lossage. +define([AC_FD_CC],5)dnl Autoconf lossage. AC_DEFUN([GLIBC_PROVIDES], [dnl AC_PROVIDE([AC_PROG_INSTALL])dnl AC_PROVIDE([AC_PROG_RANLIB])dnl diff -durpN glibc-2.2.3/aout/Makefile glibc-2.2.4/aout/Makefile --- glibc-2.2.3/aout/Makefile Mon Jul 28 14:34:32 1997 +++ glibc-2.2.4/aout/Makefile Mon Jul 23 10:53:36 2001 @@ -1,22 +1,21 @@ # Makefile for aout subdirectory of GNU C Library. - # Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. subdir := aout diff -durpN glibc-2.2.3/argp/Makefile glibc-2.2.4/argp/Makefile --- glibc-2.2.3/argp/Makefile Fri Mar 7 20:31:34 1997 +++ glibc-2.2.4/argp/Makefile Mon Jul 23 10:53:36 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If -# not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Makefile for argp. diff -durpN glibc-2.2.3/argp/argp-ba.c glibc-2.2.4/argp/argp-ba.c --- glibc-2.2.3/argp/argp-ba.c Thu Apr 29 09:55:46 1999 +++ glibc-2.2.4/argp/argp-ba.c Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* If set by the user program, it should point to string that is the bug-reporting address for the program. It will be printed by argp_help if diff -durpN glibc-2.2.3/argp/argp-eexst.c glibc-2.2.4/argp/argp-eexst.c --- glibc-2.2.3/argp/argp-eexst.c Sat May 10 16:33:42 1997 +++ glibc-2.2.4/argp/argp-eexst.c Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifdef HAVE_CONFIG_H #include diff -durpN glibc-2.2.3/argp/argp-fmtstream.c glibc-2.2.4/argp/argp-fmtstream.c --- glibc-2.2.3/argp/argp-fmtstream.c Wed Nov 10 17:06:15 1999 +++ glibc-2.2.4/argp/argp-fmtstream.c Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This package emulates glibc `line_wrap_stream' semantics for systems that don't have that. */ diff -durpN glibc-2.2.3/argp/argp-fmtstream.h glibc-2.2.4/argp/argp-fmtstream.h --- glibc-2.2.3/argp/argp-fmtstream.h Fri Jun 20 17:51:39 1997 +++ glibc-2.2.4/argp/argp-fmtstream.h Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This package emulates glibc `line_wrap_stream' semantics for systems that don't have that. If the system does have it, it is just a wrapper for diff -durpN glibc-2.2.3/argp/argp-fs-xinl.c glibc-2.2.4/argp/argp-fs-xinl.c --- glibc-2.2.3/argp/argp-fs-xinl.c Thu Oct 8 17:17:30 1998 +++ glibc-2.2.4/argp/argp-fs-xinl.c Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifdef HAVE_CONFIG_H #include diff -durpN glibc-2.2.3/argp/argp-help.c glibc-2.2.4/argp/argp-help.c --- glibc-2.2.3/argp/argp-help.c Tue Oct 31 11:09:38 2000 +++ glibc-2.2.4/argp/argp-help.c Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 diff -durpN glibc-2.2.3/argp/argp-namefrob.h glibc-2.2.4/argp/argp-namefrob.h --- glibc-2.2.3/argp/argp-namefrob.h Tue Feb 18 20:42:05 1997 +++ glibc-2.2.4/argp/argp-namefrob.h Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #if !_LIBC /* This code is written for inclusion in gnu-libc, and uses names in the diff -durpN glibc-2.2.3/argp/argp-parse.c glibc-2.2.4/argp/argp-parse.c --- glibc-2.2.3/argp/argp-parse.c Tue Oct 31 11:09:38 2000 +++ glibc-2.2.4/argp/argp-parse.c Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifdef HAVE_CONFIG_H #include diff -durpN glibc-2.2.3/argp/argp-pv.c glibc-2.2.4/argp/argp-pv.c --- glibc-2.2.3/argp/argp-pv.c Thu Apr 29 09:55:49 1999 +++ glibc-2.2.4/argp/argp-pv.c Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* If set by the user program to a non-zero value, then a default option --version is added (unless the ARGP_NO_HELP flag is used), which will diff -durpN glibc-2.2.3/argp/argp-pvh.c glibc-2.2.4/argp/argp-pvh.c --- glibc-2.2.3/argp/argp-pvh.c Thu Apr 29 09:55:50 1999 +++ glibc-2.2.4/argp/argp-pvh.c Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifdef HAVE_CONFIG_H #include diff -durpN glibc-2.2.3/argp/argp-test.c glibc-2.2.4/argp/argp-test.c --- glibc-2.2.3/argp/argp-test.c Fri Feb 21 17:19:20 1997 +++ glibc-2.2.4/argp/argp-test.c Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifdef HAVE_CONFIG_H #include diff -durpN glibc-2.2.3/argp/argp-xinl.c glibc-2.2.4/argp/argp-xinl.c --- glibc-2.2.3/argp/argp-xinl.c Thu Oct 8 17:16:36 1998 +++ glibc-2.2.4/argp/argp-xinl.c Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifdef HAVE_CONFIG_H #include diff -durpN glibc-2.2.3/argp/argp.h glibc-2.2.4/argp/argp.h --- glibc-2.2.3/argp/argp.h Wed Feb 23 13:19:25 2000 +++ glibc-2.2.4/argp/argp.h Mon Jul 23 10:53:36 2001 @@ -4,19 +4,19 @@ Written by Miles Bader . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _ARGP_H #define _ARGP_H diff -durpN glibc-2.2.3/assert/Makefile glibc-2.2.4/assert/Makefile --- glibc-2.2.3/assert/Makefile Wed Aug 2 14:51:56 2000 +++ glibc-2.2.4/assert/Makefile Mon Jul 23 10:53:36 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Sub-makefile for assert portion of the library. diff -durpN glibc-2.2.3/assert/__assert.c glibc-2.2.4/assert/__assert.c --- glibc-2.2.3/assert/__assert.c Thu Sep 7 11:56:21 2000 +++ glibc-2.2.4/assert/__assert.c Mon Jul 23 10:53:36 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* We have to see the prototype. */ #undef NDEBUG diff -durpN glibc-2.2.3/assert/assert-perr.c glibc-2.2.4/assert/assert-perr.c --- glibc-2.2.3/assert/assert-perr.c Mon May 1 14:56:29 2000 +++ glibc-2.2.4/assert/assert-perr.c Sat Aug 11 18:28:48 2001 @@ -1,20 +1,20 @@ -/* Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1994,1995,1996,1997,1998,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -24,7 +24,7 @@ #include -extern const char *__assert_program_name; /* In assert.c. */ +extern const char *__progname; #ifdef USE_IN_LIBIO # include @@ -52,8 +52,7 @@ __assert_perror_fail (int errnum, /* Print the message. */ (void) fprintf (stderr, _("%s%s%s:%u: %s%sUnexpected error: %s.\n"), - __assert_program_name ? __assert_program_name : "", - __assert_program_name ? ": " : "", + __progname, __progname[0] ? ": " : "", file, line, function ? function : "", function ? ": " : "", __strerror_r (errnum, errbuf, sizeof errbuf)); diff -durpN glibc-2.2.3/assert/assert.c glibc-2.2.4/assert/assert.c --- glibc-2.2.3/assert/assert.c Sat Jun 19 09:40:27 1999 +++ glibc-2.2.4/assert/assert.c Sat Aug 11 18:28:48 2001 @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 1994, 1995, 1996, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991,1994,1995,1996,1998,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -23,7 +23,7 @@ #include -const char *__assert_program_name; +extern const char *__progname; #ifdef USE_IN_LIBIO # include @@ -50,8 +50,7 @@ __assert_fail (const char *assertion, co /* Print the message. */ (void) fprintf (stderr, _("%s%s%s:%u: %s%sAssertion `%s' failed.\n"), - __assert_program_name ? __assert_program_name : "", - __assert_program_name ? ": " : "", + __progname, __progname[0] ? ": " : "", file, line, function ? function : "", function ? ": " : "", assertion); @@ -59,28 +58,3 @@ __assert_fail (const char *assertion, co abort (); } - -#ifdef HAVE_GNU_LD - -#include - -static void -set_progname (int argc, char **argv, char **envp) -{ - char *p; - - if (argv && argv[0]) - { - p = strrchr (argv[0], '/'); - if (p == NULL) - __assert_program_name = argv[0]; - else - __assert_program_name = p + 1; - } - - (void) &set_progname; /* Avoid "defined but not used" warning. */ -} - -text_set_element (__libc_subinit, set_progname); - -#endif diff -durpN glibc-2.2.3/assert/assert.h glibc-2.2.4/assert/assert.h --- glibc-2.2.3/assert/assert.h Sat Jan 13 10:48:47 2001 +++ glibc-2.2.4/assert/assert.h Mon Jul 23 10:53:36 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * ISO C99 Standard: 7.2 Diagnostics diff -durpN glibc-2.2.3/bare/Makefile glibc-2.2.4/bare/Makefile --- glibc-2.2.3/bare/Makefile Sun Jan 19 18:48:17 1997 +++ glibc-2.2.4/bare/Makefile Mon Jul 23 10:53:36 2001 @@ -3,20 +3,21 @@ # Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil), # On-Line Applications Research Corporation. # + # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. subdir := bare diff -durpN glibc-2.2.3/catgets/Makefile glibc-2.2.4/catgets/Makefile --- glibc-2.2.3/catgets/Makefile Mon Mar 26 20:52:47 2001 +++ glibc-2.2.4/catgets/Makefile Mon Jul 23 10:53:36 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If -# not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Makefile for catgets. diff -durpN glibc-2.2.3/catgets/catgets.c glibc-2.2.4/catgets/catgets.c --- glibc-2.2.3/catgets/catgets.c Sun Oct 8 17:04:48 2000 +++ glibc-2.2.4/catgets/catgets.c Fri Aug 10 12:11:47 2001 @@ -1,21 +1,21 @@ -/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1996-2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -36,10 +36,6 @@ catopen (const char *cat_name, int flag) __nl_catd result; const char *env_var = NULL; const char *nlspath = NULL; - size_t cat_name_len = strlen (cat_name) + 1; - size_t env_var_len = 0; - size_t nlspath_len = 0; - char *endp; if (strchr (cat_name, '/') == NULL) { @@ -54,8 +50,6 @@ catopen (const char *cat_name, int flag) || (__libc_enable_secure && strchr (env_var, '/') != NULL)) env_var = "C"; - env_var_len = strlen (env_var) + 1; - nlspath = getenv ("NLSPATH"); if (nlspath != NULL && *nlspath != '\0') { @@ -65,34 +59,19 @@ catopen (const char *cat_name, int flag) __stpcpy (__stpcpy (__stpcpy (tmp, nlspath), ":"), NLSPATH); nlspath = tmp; - - nlspath_len = len; } else - { - nlspath = NLSPATH; - - nlspath_len = sizeof NLSPATH; - } + nlspath = NLSPATH; } - result = (__nl_catd) malloc (sizeof (*result) + cat_name_len - + env_var_len + nlspath_len); + result = (__nl_catd) malloc (sizeof (*result)); if (result == NULL) /* We cannot get enough memory. */ return (nl_catd) -1; - result->status = closed; - result->cat_name = endp = (char *) (result + 1); - endp = __mempcpy (endp, cat_name, cat_name_len); - - result->env_var = cat_name_len != 0 ? endp : NULL; - endp = __mempcpy (endp, env_var, env_var_len); - - result->nlspath = nlspath_len != 0 ? endp : NULL; - memcpy (endp, nlspath, nlspath_len); - - __libc_lock_init (result->lock); + if (__open_catalog (cat_name, nlspath, env_var, result) != 0) + /* Couldn't open the file. */ + return (nl_catd) -1; return (nl_catd) result; } @@ -112,15 +91,6 @@ catgets (nl_catd catalog_desc, int set, catalog = (__nl_catd) catalog_desc; - if (catalog->status == closed) - __open_catalog (catalog); - - if (catalog->status == nonexisting) - { - __set_errno (EBADF); - return (char *) string; - } - idx = ((set * message) % catalog->plane_size) * 3; cnt = 0; do @@ -144,6 +114,13 @@ catclose (nl_catd catalog_desc) { __nl_catd catalog; + /* Be generous if catalog which failed to be open is used. */ + if (catalog_desc == (nl_catd) -1) + { + __set_errno (EBADF); + return -1; + } + catalog = (__nl_catd) catalog_desc; #ifdef _POSIX_MAPPED_FILES @@ -153,7 +130,7 @@ catclose (nl_catd catalog_desc) #endif /* _POSIX_MAPPED_FILES */ if (catalog->status == malloced) free ((void *) catalog->file_ptr); - else if (catalog->status != closed && catalog->status != nonexisting) + else { __set_errno (EBADF); return -1; diff -durpN glibc-2.2.3/catgets/catgetsinfo.h glibc-2.2.4/catgets/catgetsinfo.h --- glibc-2.2.3/catgets/catgetsinfo.h Thu Aug 28 17:41:53 1997 +++ glibc-2.2.4/catgets/catgetsinfo.h Fri Aug 10 12:11:47 2001 @@ -1,24 +1,23 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 struct catalog_obj @@ -35,11 +34,7 @@ struct catalog_obj /* This structure will be filled after loading the catalog. */ typedef struct catalog_info { - enum { closed, nonexisting, mmapped, malloced } status; - - const char *cat_name; - const char *env_var; - const char *nlspath; + enum { mmapped, malloced } status; size_t plane_size; size_t plane_depth; @@ -48,8 +43,6 @@ typedef struct catalog_info struct catalog_obj *file_ptr; size_t file_size; - - __libc_lock_define (,lock); } *__nl_catd; @@ -59,4 +52,5 @@ typedef struct catalog_info /* Prototypes for helper functions. */ -void __open_catalog (__nl_catd __catalog); +extern int __open_catalog (const char *cat_name, const char *nlspath, + const char *env_var, __nl_catd __catalog); diff -durpN glibc-2.2.3/catgets/gencat.c glibc-2.2.4/catgets/gencat.c --- glibc-2.2.3/catgets/gencat.c Mon Mar 26 20:52:47 2001 +++ glibc-2.2.4/catgets/gencat.c Fri Aug 10 12:11:47 2001 @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper , 1996. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifdef HAVE_CONFIG_H # include @@ -1187,21 +1187,15 @@ read_old (struct catalog *catalog, const int last_set = -1; size_t cnt; - old_cat_obj.status = closed; - old_cat_obj.cat_name = file_name; - old_cat_obj.nlspath = NULL; - __libc_lock_init (old_cat_obj.lock); - /* Try to open catalog, but don't look through the NLSPATH. */ - __open_catalog (&old_cat_obj); - - if (old_cat_obj.status != mmapped && old_cat_obj.status != malloced) + if (__open_catalog (file_name, NULL, NULL, &old_cat_obj) != 0) { if (errno == ENOENT) /* No problem, the catalog simply does not exist. */ return; else - error (EXIT_FAILURE, errno, gettext ("while opening old catalog file")); + error (EXIT_FAILURE, errno, + gettext ("while opening old catalog file")); } /* OK, we have the catalog loaded. Now read all messages and merge diff -durpN glibc-2.2.3/catgets/nl_types.h glibc-2.2.4/catgets/nl_types.h --- glibc-2.2.3/catgets/nl_types.h Mon Oct 11 11:45:06 1999 +++ glibc-2.2.4/catgets/nl_types.h Mon Jul 23 10:53:36 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NL_TYPES_H #define _NL_TYPES_H 1 diff -durpN glibc-2.2.3/catgets/open_catalog.c glibc-2.2.4/catgets/open_catalog.c --- glibc-2.2.3/catgets/open_catalog.c Thu Sep 7 11:56:21 2000 +++ glibc-2.2.4/catgets/open_catalog.c Fri Aug 10 12:11:47 2001 @@ -1,21 +1,21 @@ -/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1996-2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -35,8 +35,9 @@ #define SWAPU32(w) bswap_32 (w) -void -__open_catalog (__nl_catd catalog) +int +__open_catalog (const char *cat_name, const char *nlspath, const char *env_var, + __nl_catd catalog) { int fd = -1; struct stat64 st; @@ -45,20 +46,13 @@ __open_catalog (__nl_catd catalog) size_t max_offset; size_t tab_size; const char *lastp; + int result = -1; - /* Make sure we are alone. */ - __libc_lock_lock (catalog->lock); - - /* Check whether there was no other thread faster. */ - if (__builtin_expect (catalog->status != closed, 0)) - /* While we waited some other thread tried to open the catalog. */ - goto unlock_return; - - if (strchr (catalog->cat_name, '/') != NULL || catalog->nlspath == NULL) - fd = __open (catalog->cat_name, O_RDONLY); + if (strchr (cat_name, '/') != NULL || nlspath == NULL) + fd = __open (cat_name, O_RDONLY); else { - const char *run_nlspath = catalog->nlspath; + const char *run_nlspath = nlspath; #define ENOUGH(n) \ if (__builtin_expect (bufact + (n) >= bufmax, 0)) \ { \ @@ -88,9 +82,9 @@ __open_catalog (__nl_catd catalog) if (*run_nlspath == ':') { /* Leading colon or adjacent colons - treat same as %N. */ - len = strlen (catalog->cat_name); + len = strlen (cat_name); ENOUGH (len); - memcpy (&buf[bufact], catalog->cat_name, len); + memcpy (&buf[bufact], cat_name, len); bufact += len; } else @@ -104,21 +98,21 @@ __open_catalog (__nl_catd catalog) { case 'N': /* Use the catalog name. */ - len = strlen (catalog->cat_name); + len = strlen (cat_name); ENOUGH (len); - memcpy (&buf[bufact], catalog->cat_name, len); + memcpy (&buf[bufact], cat_name, len); bufact += len; break; case 'L': /* Use the current locale category value. */ - len = strlen (catalog->env_var); + len = strlen (env_var); ENOUGH (len); - memcpy (&buf[bufact], catalog->env_var, len); + memcpy (&buf[bufact], env_var, len); bufact += len; break; case 'l': /* Use language element of locale category value. */ - tmp = catalog->env_var; + tmp = env_var; do { ENOUGH (1); @@ -128,7 +122,7 @@ __open_catalog (__nl_catd catalog) break; case 't': /* Use territory element of locale category value. */ - tmp = catalog->env_var; + tmp = env_var; do ++tmp; while (*tmp != '\0' && *tmp != '_' && *tmp != '.'); @@ -145,7 +139,7 @@ __open_catalog (__nl_catd catalog) break; case 'c': /* Use code set element of locale category value. */ - tmp = catalog->env_var; + tmp = env_var; do ++tmp; while (*tmp != '\0' && *tmp != '.'); @@ -194,23 +188,17 @@ __open_catalog (__nl_catd catalog) /* Avoid dealing with directories and block devices */ if (__builtin_expect (fd, 0) < 0) - { - catalog->status = nonexisting; - goto unlock_return; - } + return -1; if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0) - { - catalog->status = nonexisting; - goto close_unlock_return; - } + goto close_unlock_return; + if (__builtin_expect (!S_ISREG (st.st_mode), 0) || st.st_size < sizeof (struct catalog_obj)) { /* `errno' is not set correctly but the file is not usable. Use an reasonable error value. */ __set_errno (EINVAL); - catalog->status = nonexisting; goto close_unlock_return; } @@ -243,10 +231,8 @@ __open_catalog (__nl_catd catalog) size_t todo; catalog->file_ptr = malloc (st.st_size); if (catalog->file_ptr == NULL) - { - catalog->status = nonexisting; - goto close_unlock_return; - } + goto close_unlock_return; + todo = st.st_size; /* Save read, handle partial reads. */ do @@ -260,7 +246,6 @@ __open_catalog (__nl_catd catalog) continue; #endif free ((void *) catalog->file_ptr); - catalog->status = nonexisting; goto close_unlock_return; } todo -= now; @@ -288,7 +273,6 @@ __open_catalog (__nl_catd catalog) else #endif /* _POSIX_MAPPED_FILES */ free (catalog->file_ptr); - catalog->status = nonexisting; goto close_unlock_return; } @@ -339,9 +323,12 @@ __open_catalog (__nl_catd catalog) ++lastp; } + /* We succeeded. */ + result = 0; + /* Release the lock again. */ close_unlock_return: __close (fd); - unlock_return: - __libc_lock_unlock (catalog->lock); + + return result; } diff -durpN glibc-2.2.3/catgets/test-gencat.c glibc-2.2.4/catgets/test-gencat.c --- glibc-2.2.3/catgets/test-gencat.c Tue Nov 28 05:55:33 2000 +++ glibc-2.2.4/catgets/test-gencat.c Fri Aug 10 12:11:47 2001 @@ -12,6 +12,12 @@ main (void) printf ("LC_MESSAGES = %s\n", setlocale (LC_MESSAGES, NULL)); catalog = catopen ("sample", NL_CAT_LOCALE); + if (catalog == (nl_catd) -1) + { + printf ("no catalog: %m\n"); + exit (1); + } + printf ("%s\n", catgets(catalog, 1, 1, "sample 1")); printf ("%s\n", catgets(catalog, 1, 2, "sample 2")); printf ("%s\n", catgets(catalog, 1, 3, "sample 3")); diff -durpN glibc-2.2.3/catgets/test-gencat.sh glibc-2.2.4/catgets/test-gencat.sh --- glibc-2.2.3/catgets/test-gencat.sh Mon Mar 26 20:52:47 2001 +++ glibc-2.2.4/catgets/test-gencat.sh Mon Jul 23 10:53:36 2001 @@ -3,20 +3,21 @@ # Copyright (C) 2000, 2001 Free Software Foundation, Inc. # This file is part of the GNU C Library. # + # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If -# not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. common_objpfx=$1 run_program_prefix=$2 @@ -28,7 +29,7 @@ NLSPATH=${common_objpfx}catgets/%N.%c.ca > ${common_objpfx}catgets/test-gencat.out # Compare with the expected result. -cmp - ${common_objpfx}catgets/test-gencat.out <&6 -echo "configure:904: checking host system type" >&5 +echo "configure:914: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -957,6 +967,11 @@ gnu* | linux* | sysv4* | solaris2* | iri # These systems (almost) always use the ELF format. elf=yes ;; +aix*) + # These systems are always xcoff + xcoff=yes + elf=no + ;; esac machine=$config_machine @@ -1046,7 +1061,7 @@ fi # This can take a while to compute. sysdep_dir=$srcdir/sysdeps echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6 -echo "configure:1050: checking sysdep dirs" >&5 +echo "configure:1065: checking sysdep dirs" >&5 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1. os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`" @@ -1200,9 +1215,26 @@ while test $# -gt 0; do implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`" implied= for x in $implied_candidate; do + found=no if test -d $xsrcdir$name_base/$x; then implied="$implied $name_base/$x"; - else + found=yes + fi + for d in $add_ons_pfx ''; do + try="${d}sysdeps/$x" + case $d in + /*) try_srcdir= ;; + *) try_srcdir=$srcdir/ ;; + esac + test -n "$enable_debug_configure" && + echo "DEBUG: $name implied $x try($d) {$try_srcdir}$try" >&2 + if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try; + then + implied="$implied $try" + found=yes + fi + done + if test $found = no; then echo "configure: warning: $name/Implies specifies nonexistent $x" 1>&2 fi done @@ -1252,7 +1284,7 @@ echo "$ac_t""$default_sysnames" 1>&6 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1256: checking for a BSD compatible install" >&5 +echo "configure:1288: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1309,7 +1341,7 @@ if test "$INSTALL" = "${srcdir}/scripts/ INSTALL='\$(..)./scripts/install-sh -c' fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1313: checking whether ln -s works" >&5 +echo "configure:1345: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1338,7 +1370,7 @@ fi # Extract the first word of "pwd", so it can be a program name with args. set dummy pwd; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1342: checking for $ac_word" >&5 +echo "configure:1374: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PWD_P'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1377,7 +1409,7 @@ fi # These programs are version sensitive. echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1381: checking build system type" >&5 +echo "configure:1413: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -1405,7 +1437,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1409: checking for $ac_word" >&5 +echo "configure:1441: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1439,7 +1471,7 @@ if test -z "$CC"; then else # Found it, now check the version. echo $ac_n "checking version of $CC""... $ac_c" 1>&6 -echo "configure:1443: checking version of $CC" >&5 +echo "configure:1475: checking version of $CC" >&5 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;; @@ -1451,7 +1483,7 @@ echo "configure:1443: checking version o echo "$ac_t""$ac_prog_version" 1>&6 fi if test $ac_verc_fail = yes; then - critic_missing=t + critic_missing=gcc fi for ac_prog in gnumake gmake make @@ -1459,7 +1491,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1463: checking for $ac_word" >&5 +echo "configure:1495: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1493,7 +1525,7 @@ if test -z "$MAKE"; then else # Found it, now check the version. echo $ac_n "checking version of $MAKE""... $ac_c" 1>&6 -echo "configure:1497: checking version of $MAKE" >&5 +echo "configure:1529: checking version of $MAKE" >&5 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;; @@ -1505,14 +1537,14 @@ echo "configure:1497: checking version o echo "$ac_t""$ac_prog_version" 1>&6 fi if test $ac_verc_fail = yes; then - critic_missing=t + critic_missing="$critic_missing make" fi if test -n "$critic_missing"; then { echo "configure: error: -*** Some critical program is missing or too old. +*** These critical programs are missing or too old:$critic_missing *** Check the INSTALL file for required versions." 1>&2; exit 1; } fi @@ -1522,7 +1554,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1526: checking for $ac_word" >&5 +echo "configure:1558: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1556,7 +1588,7 @@ if test -z "$MSGFMT"; then else # Found it, now check the version. echo $ac_n "checking version of $MSGFMT""... $ac_c" 1>&6 -echo "configure:1560: checking version of $MSGFMT" >&5 +echo "configure:1592: checking version of $MSGFMT" >&5 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;; @@ -1568,7 +1600,7 @@ echo "configure:1560: checking version o echo "$ac_t""$ac_prog_version" 1>&6 fi if test $ac_verc_fail = yes; then - MSGFMT=: aux_missing=t + MSGFMT=: aux_missing="$aux_missing msgfmt" fi for ac_prog in makeinfo @@ -1576,7 +1608,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1580: checking for $ac_word" >&5 +echo "configure:1612: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1610,7 +1642,7 @@ if test -z "$MAKEINFO"; then else # Found it, now check the version. echo $ac_n "checking version of $MAKEINFO""... $ac_c" 1>&6 -echo "configure:1614: checking version of $MAKEINFO" >&5 +echo "configure:1646: checking version of $MAKEINFO" >&5 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;; @@ -1622,7 +1654,7 @@ echo "configure:1614: checking version o echo "$ac_t""$ac_prog_version" 1>&6 fi if test $ac_verc_fail = yes; then - MAKEINFO=: aux_missing=t + MAKEINFO=: aux_missing="$aux_missing makeinfo" fi for ac_prog in gsed sed @@ -1630,7 +1662,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1634: checking for $ac_word" >&5 +echo "configure:1666: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_SED'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1664,7 +1696,7 @@ if test -z "$SED"; then else # Found it, now check the version. echo $ac_n "checking version of $SED""... $ac_c" 1>&6 -echo "configure:1668: checking version of $SED" >&5 +echo "configure:1700: checking version of $SED" >&5 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;; @@ -1676,13 +1708,13 @@ echo "configure:1668: checking version o echo "$ac_t""$ac_prog_version" 1>&6 fi if test $ac_verc_fail = yes; then - SED=: aux_missing=t + SED=: aux_missing="$aux_missing sed" fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1686: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1718: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1696,12 +1728,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1700 "configure" +#line 1732 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1732,7 +1764,7 @@ else cross_linkable=yes fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1736: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1768: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_cross'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1744,7 +1776,7 @@ echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1748: checking whether we are using GNU C" >&5 +echo "configure:1780: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1753,7 +1785,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1789: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1766,7 +1798,7 @@ if test $ac_cv_prog_gcc != yes; then fi echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1770: checking build system type" >&5 +echo "configure:1802: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -1789,7 +1821,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1793: checking for $ac_word" >&5 +echo "configure:1825: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1821,7 +1853,7 @@ done fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1825: checking how to run the C preprocessor" >&5 +echo "configure:1857: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1836,13 +1868,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1846: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1853,13 +1885,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1870,13 +1902,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1912: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1919,7 +1951,7 @@ if test $RANLIB = ranlib; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1923: checking for $ac_word" >&5 +echo "configure:1955: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1951,7 +1983,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1955: checking for $ac_word" >&5 +echo "configure:1987: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1988,7 +2020,7 @@ fi # Determine whether we are using GNU binutils. echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6 -echo "configure:1992: checking whether $AS is GNU as" >&5 +echo "configure:2024: checking whether $AS is GNU as" >&5 if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2007,7 +2039,7 @@ rm -f a.out gnu_as=$libc_cv_prog_as_gnu echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6 -echo "configure:2011: checking whether $LD is GNU ld" >&5 +echo "configure:2043: checking whether $LD is GNU ld" >&5 if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2027,7 +2059,7 @@ gnu_ld=$libc_cv_prog_ld_gnu # Extract the first word of "${ac_tool_prefix}mig", so it can be a program name with args. set dummy ${ac_tool_prefix}mig; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2031: checking for $ac_word" >&5 +echo "configure:2063: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2065,7 +2097,7 @@ fi # [2.10.[1-9]* | 2.1[1-9]* | 2.9-ia64-*], AS=: critic_missing=t) test -n "$aux_missing" && echo "configure: warning: -*** An auxiliary program is missing or too old; +*** These auxiliary programs are missing or too old:$aux_missing *** some features will be disabled. *** Check the INSTALL file for required versions." 1>&2 @@ -2073,6 +2105,27 @@ test -n "$aux_missing" && echo "configur CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'` +case $CCVERSION in + 3.*) gcc3=yes;; +esac + +if test x"$gcc3" = xyes; then + echo "\ +*** This version of GNU libc cannot be compiled by GCC 3.x. +*** GCC 3.x will generate a library that is binary incompatible to +*** older and future releases of GNU libc. +*** You should compile this GNU libc release by an older GCC version +*** or wait for the next GNU libc release." + if test $enable_sanity = yes; then + echo "\ +*** If you really mean to use GCC 3.x, run configure again +*** using the extra parameter \`--disable-sanity-checks'." + exit 1 + else + echo "\ +*** This configuration is not supported by the GNU libc developers." + fi +fi # if using special system headers, find out the compiler's sekrit # header directory and add that to the list. NOTE: Only does the right # thing on a system that doesn't need fixincludes. (Not presently a problem.) @@ -2084,7 +2137,7 @@ fi # check if ranlib is necessary echo $ac_n "checking whether ranlib is necessary""... $ac_c" 1>&6 -echo "configure:2088: checking whether ranlib is necessary" >&5 +echo "configure:2141: checking whether ranlib is necessary" >&5 if eval "test \"`echo '$''{'libc_cv_ranlib_necessary'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2118,7 +2171,7 @@ fi # - two terminals occur directly after each other # - the path contains an element with a dot in it echo $ac_n "checking LD_LIBRARY_PATH variable""... $ac_c" 1>&6 -echo "configure:2122: checking LD_LIBRARY_PATH variable" >&5 +echo "configure:2175: checking LD_LIBRARY_PATH variable" >&5 case ${LD_LIBRARY_PATH} in [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) ld_library_path_setting="contains current directory" @@ -2138,7 +2191,7 @@ fi # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2142: checking for $ac_word" >&5 +echo "configure:2195: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2184,7 +2237,7 @@ if test "$BASH" = no; then # Extract the first word of "ksh", so it can be a program name with args. set dummy ksh; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2188: checking for $ac_word" >&5 +echo "configure:2241: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2229,12 +2282,12 @@ else fi -for ac_prog in gawk mawk nawk awk +for ac_prog in mawk gawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2238: checking for $ac_word" >&5 +echo "configure:2291: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2266,7 +2319,7 @@ done # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2270: checking for $ac_word" >&5 +echo "configure:2323: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2306,7 +2359,7 @@ fi # Extract the first word of "install-info", so it can be a program name with args. set dummy install-info; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2310: checking for $ac_word" >&5 +echo "configure:2363: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_INSTALL_INFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2341,7 +2394,7 @@ fi if test "$INSTALL_INFO" != "no"; then echo $ac_n "checking for old Debian install-info""... $ac_c" 1>&6 -echo "configure:2345: checking for old Debian install-info" >&5 +echo "configure:2398: checking for old Debian install-info" >&5 if eval "test \"`echo '$''{'libc_cv_old_debian_install_info'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2376,7 +2429,7 @@ fi # Extract the first word of "bison", so it can be a program name with args. set dummy bison; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2380: checking for $ac_word" >&5 +echo "configure:2433: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2411,7 +2464,7 @@ fi echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6 -echo "configure:2415: checking for signed size_t type" >&5 +echo "configure:2468: checking for signed size_t type" >&5 if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2435,12 +2488,12 @@ EOF fi echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6 -echo "configure:2439: checking for libc-friendly stddef.h" >&5 +echo "configure:2492: checking for libc-friendly stddef.h" >&5 if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2512: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_friendly_stddef=yes else @@ -2474,7 +2527,7 @@ override stddef.h = # The installed &6 -echo "configure:2478: checking whether we need to use -P to assemble .S files" >&5 +echo "configure:2531: checking whether we need to use -P to assemble .S files" >&5 if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2497,7 +2550,7 @@ asm-CPPFLAGS = -P # The assembler can't fi echo $ac_n "checking whether .text pseudo-op must be used""... $ac_c" 1>&6 -echo "configure:2501: checking whether .text pseudo-op must be used" >&5 +echo "configure:2554: checking whether .text pseudo-op must be used" >&5 if eval "test \"`echo '$''{'libc_cv_dot_text'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2518,7 +2571,7 @@ else fi echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6 -echo "configure:2522: checking for assembler global-symbol directive" >&5 +echo "configure:2575: checking for assembler global-symbol directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2548,7 +2601,7 @@ EOF fi echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6 -echo "configure:2552: checking for .set assembler directive" >&5 +echo "configure:2605: checking for .set assembler directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2591,7 +2644,7 @@ EOF esac echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6 -echo "configure:2595: checking for .symver assembler directive" >&5 +echo "configure:2648: checking for .symver assembler directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2610,7 +2663,7 @@ fi echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6 echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6 -echo "configure:2614: checking for ld --version-script" >&5 +echo "configure:2667: checking for ld --version-script" >&5 if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2633,7 +2686,7 @@ EOF if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o -nostartfiles -nostdlib -Wl,--version-script,conftest.map - 1>&5'; { (eval echo configure:2637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; + 1>&5'; { (eval echo configure:2690: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_ld_version_script_option=yes else @@ -2663,7 +2716,7 @@ else fi -if test $shared != no && test $VERSIONING = no; then +if test $elf = yes && test $shared != no && test $VERSIONING = no; then echo "\ *** WARNING: You should not compile GNU libc without versioning. Not using *** versioning will introduce incompatibilities so that old binaries @@ -2672,7 +2725,7 @@ if test $shared != no && test $VERSIONIN fi if test $elf = yes; then echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6 -echo "configure:2676: checking for .previous assembler directive" >&5 +echo "configure:2729: checking for .previous assembler directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2680,7 +2733,7 @@ else .section foo_section .previous EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2684: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_previous_directive=yes else libc_cv_asm_previous_directive=no @@ -2696,7 +2749,7 @@ EOF else echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6 -echo "configure:2700: checking for .popsection assembler directive" >&5 +echo "configure:2753: checking for .popsection assembler directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2704,7 +2757,7 @@ else .pushsection foo_section .popsection EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2708: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2761: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_popsection_directive=yes else libc_cv_asm_popsection_directive=no @@ -2721,7 +2774,7 @@ EOF fi fi echo $ac_n "checking for .protected and .hidden assembler directive""... $ac_c" 1>&6 -echo "configure:2725: checking for .protected and .hidden assembler directive" >&5 +echo "configure:2778: checking for .protected and .hidden assembler directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_protected_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2731,7 +2784,7 @@ foo: .hidden bar bar: EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_protected_directive=yes else libc_cv_asm_protected_directive=no @@ -2743,14 +2796,14 @@ echo "$ac_t""$libc_cv_asm_protected_dire echo $ac_n "checking for -z nodelete option""... $ac_c" 1>&6 -echo "configure:2747: checking for -z nodelete option" >&5 +echo "configure:2800: checking for -z nodelete option" >&5 if eval "test \"`echo '$''{'libc_cv_z_nodelete'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } + if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&5'; { (eval echo configure:2807: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } then libc_cv_z_nodelete=yes else @@ -2763,14 +2816,14 @@ echo "$ac_t""$libc_cv_z_nodelete" 1>&6 echo $ac_n "checking for -z nodlopen option""... $ac_c" 1>&6 -echo "configure:2767: checking for -z nodlopen option" >&5 +echo "configure:2820: checking for -z nodlopen option" >&5 if eval "test \"`echo '$''{'libc_cv_z_nodlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } + if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&5'; { (eval echo configure:2827: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } then libc_cv_z_nodlopen=yes else @@ -2783,14 +2836,14 @@ echo "$ac_t""$libc_cv_z_nodlopen" 1>&6 echo $ac_n "checking for -z initfirst option""... $ac_c" 1>&6 -echo "configure:2787: checking for -z initfirst option" >&5 +echo "configure:2840: checking for -z initfirst option" >&5 if eval "test \"`echo '$''{'libc_cv_z_initfirst'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } + if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,initfirst 1>&5'; { (eval echo configure:2847: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } then libc_cv_z_initfirst=yes else @@ -2803,14 +2856,14 @@ echo "$ac_t""$libc_cv_z_initfirst" 1>&6 echo $ac_n "checking for -Bgroup option""... $ac_c" 1>&6 -echo "configure:2807: checking for -Bgroup option" >&5 +echo "configure:2860: checking for -Bgroup option" >&5 if eval "test \"`echo '$''{'libc_cv_Bgroup'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } + if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&5'; { (eval echo configure:2867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } then libc_cv_Bgroup=yes else @@ -2825,12 +2878,12 @@ fi if test $elf != yes; then echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6 -echo "configure:2829: checking for .init and .fini sections" >&5 +echo "configure:2882: checking for .init and .fini sections" >&5 if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2896: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_have_initfini=yes else @@ -2862,7 +2915,7 @@ fi if test $elf = yes -a $gnu_ld = yes; then echo $ac_n "checking whether cc puts quotes around section names""... $ac_c" 1>&6 -echo "configure:2866: checking whether cc puts quotes around section names" >&5 +echo "configure:2919: checking whether cc puts quotes around section names" >&5 if eval "test \"`echo '$''{'libc_cv_have_section_quotes'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2899,19 +2952,19 @@ if test $elf = yes; then else if test $ac_cv_prog_cc_works = yes; then echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 -echo "configure:2903: checking for _ prefix on C symbol names" >&5 +echo "configure:2956: checking for _ prefix on C symbol names" >&5 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* libc_cv_asm_underscores=yes else @@ -2926,17 +2979,17 @@ fi echo "$ac_t""$libc_cv_asm_underscores" 1>&6 else echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 -echo "configure:2930: checking for _ prefix on C symbol names" >&5 +echo "configure:2983: checking for _ prefix on C symbol names" >&5 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if grep _underscore_test conftest* >/dev/null; then rm -f conftest* libc_cv_asm_underscores=yes @@ -2968,7 +3021,7 @@ if test $elf = yes; then fi echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6 -echo "configure:2972: checking for assembler .weak directive" >&5 +echo "configure:3025: checking for assembler .weak directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2991,7 +3044,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive if test $libc_cv_asm_weak_directive = no; then echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6 -echo "configure:2995: checking for assembler .weakext directive" >&5 +echo "configure:3048: checking for assembler .weakext directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3038,14 +3091,14 @@ EOF ;; hppa*linux*) echo $ac_n "checking for assembler line separator""... $ac_c" 1>&6 -echo "configure:3042: checking for assembler line separator" >&5 +echo "configure:3095: checking for assembler line separator" >&5 if eval "test \"`echo '$''{'libc_cv_asm_line_sep'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.s <&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:3102: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_line_sep='!' else if test -z "$enable_hacker_mode"; then @@ -3067,7 +3120,7 @@ EOF esac echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6 -echo "configure:3071: checking for ld --no-whole-archive" >&5 +echo "configure:3124: checking for ld --no-whole-archive" >&5 if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3078,7 +3131,7 @@ __throw () {} EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles -Wl,--no-whole-archive - -o conftest conftest.c 1>&5'; { (eval echo configure:3082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c 1>&5'; { (eval echo configure:3135: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_ld_no_whole_archive=yes else libc_cv_ld_no_whole_archive=no @@ -3092,7 +3145,7 @@ if test $libc_cv_ld_no_whole_archive = y fi echo $ac_n "checking for gcc -fexceptions""... $ac_c" 1>&6 -echo "configure:3096: checking for gcc -fexceptions" >&5 +echo "configure:3149: checking for gcc -fexceptions" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_exceptions'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3103,7 +3156,7 @@ __throw () {} EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles -fexceptions - -o conftest conftest.c 1>&5'; { (eval echo configure:3107: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c 1>&5'; { (eval echo configure:3160: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_exceptions=yes else libc_cv_gcc_exceptions=no @@ -3118,14 +3171,14 @@ fi if test "$base_machine" = alpha ; then echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6 -echo "configure:3122: checking for function ..ng prefix" >&5 +echo "configure:3175: checking for function ..ng prefix" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <<\EOF foo () { } EOF -if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:3129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; +if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:3182: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_alpha_ng_prefix=yes else @@ -3152,19 +3205,19 @@ if test "$host_cpu" = powerpc ; then # Check for a bug present in at least versions 2.8.x of GCC # and versions 1.0.x of EGCS. echo $ac_n "checking whether clobbering cr0 causes problems""... $ac_c" 1>&6 -echo "configure:3156: checking whether clobbering cr0 causes problems" >&5 +echo "configure:3209: checking whether clobbering cr0 causes problems" >&5 if eval "test \"`echo '$''{'libc_cv_c_asmcr0_bug'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_c_asmcr0_bug='no' else @@ -3186,12 +3239,12 @@ fi fi echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6 -echo "configure:3190: checking for DWARF2 unwind info support" >&5 +echo "configure:3243: checking for DWARF2 unwind info support" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3275: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_dwarf2_unwind_info=static else libc_cv_gcc_dwarf2_unwind_info=no @@ -3226,7 +3279,7 @@ fi if test $libc_cv_gcc_dwarf2_unwind_info = no; then if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame -nostdlib -nostartfiles - -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_dwarf2_unwind_info=yes else libc_cv_gcc_dwarf2_unwind_info=no @@ -3256,12 +3309,12 @@ EOF esac echo $ac_n "checking for __builtin_expect""... $ac_c" 1>&6 -echo "configure:3260: checking for __builtin_expect" >&5 +echo "configure:3313: checking for __builtin_expect" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_builtin_expect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3326: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_builtin_expect=yes else libc_cv_gcc_builtin_expect=no @@ -3286,12 +3339,12 @@ EOF fi echo $ac_n "checking for local label subtraction""... $ac_c" 1>&6 -echo "configure:3290: checking for local label subtraction" >&5 +echo "configure:3343: checking for local label subtraction" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_subtract_local_labels'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3361: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_subtract_local_labels=yes else libc_cv_gcc_subtract_local_labels=no @@ -3321,7 +3374,7 @@ EOF fi echo $ac_n "checking for libgd""... $ac_c" 1>&6 -echo "configure:3325: checking for libgd" >&5 +echo "configure:3378: checking for libgd" >&5 if test "$with_gd" != "no"; then old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $libgd_include" @@ -3330,14 +3383,14 @@ if test "$with_gd" != "no"; then old_LIBS="$LIBS" LIBS="$LIBS -lgd -lpng -lz -lm" cat > conftest.$ac_ext < int main() { gdImagePng (0, 0) ; return 0; } EOF -if { (eval echo configure:3341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3394: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBGD=yes else @@ -3357,7 +3410,7 @@ echo "$ac_t""$LIBGD" 1>&6 echo $ac_n "checking size of long double""... $ac_c" 1>&6 -echo "configure:3361: checking size of long double" >&5 +echo "configure:3414: checking size of long double" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3365,7 +3418,7 @@ else ac_cv_sizeof_long_double=0 else cat > conftest.$ac_ext < main() @@ -3376,7 +3429,7 @@ main() exit(0); } EOF -if { (eval echo configure:3380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_double=`cat conftestval` else @@ -3408,6 +3461,7 @@ libc_link_sources= # They also can set these variables. use_ldconfig=no ldd_rewrite_script=no +libc_cv_sysconfdir=$sysconfdir # Iterate over all the sysdep directories we will use, running their # configure fragments, and looking for a uname implementation. @@ -3444,7 +3498,7 @@ if test "$uname" = "sysdeps/generic"; th fi echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 -echo "configure:3448: checking OS release for uname" >&5 +echo "configure:3502: checking OS release for uname" >&5 if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3466,7 +3520,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>& uname_release="$libc_cv_uname_release" echo $ac_n "checking OS version for uname""... $ac_c" 1>&6 -echo "configure:3470: checking OS version for uname" >&5 +echo "configure:3524: checking OS version for uname" >&5 if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3488,7 +3542,7 @@ else fi echo $ac_n "checking stdio selection""... $ac_c" 1>&6 -echo "configure:3492: checking stdio selection" >&5 +echo "configure:3546: checking stdio selection" >&5 case $stdio in libio) cat >> confdefs.h <<\EOF @@ -3502,7 +3556,7 @@ echo "$ac_t""$stdio" 1>&6 # Test for old glibc 2.0.x headers so that they can be removed properly # Search only in includedir. echo $ac_n "checking for old glibc 2.0.x headers""... $ac_c" 1>&6 -echo "configure:3506: checking for old glibc 2.0.x headers" >&5 +echo "configure:3560: checking for old glibc 2.0.x headers" >&5 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h" then old_glibc_headers=yes @@ -3524,7 +3578,7 @@ fi - + if test $gnu_ld = yes; then cat >> confdefs.h <<\EOF #define HAVE_GNU_LD 1 @@ -3543,6 +3597,12 @@ if test $elf = yes; then EOF fi +if test $xcoff = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_XCOFF 1 +EOF + +fi @@ -3557,7 +3617,7 @@ if test $shared = default; then fi echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6 -echo "configure:3561: checking whether -fPIC is default" >&5 +echo "configure:3621: checking whether -fPIC is default" >&5 if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3804,6 +3864,7 @@ s%@ldd_rewrite_script@%$ldd_rewrite_scri s%@gnu_ld@%$gnu_ld%g s%@gnu_as@%$gnu_as%g s%@elf@%$elf%g +s%@xcoff@%$xcoff%g s%@static@%$static%g s%@shared@%$shared%g s%@pic_default@%$pic_default%g diff -durpN glibc-2.2.3/configure.in glibc-2.2.4/configure.in --- glibc-2.2.3/configure.in Wed Apr 25 14:50:58 2001 +++ glibc-2.2.4/configure.in Fri Aug 10 12:11:47 2001 @@ -65,6 +65,9 @@ AC_ARG_WITH(binutils, dnl AC_ARG_WITH(elf, dnl --with-elf if using the ELF object format, elf=$withval, elf=no) +AC_ARG_WITH(xcoff, dnl + --with-xcoff if using the XCOFF object format, + xcoff=$withval, xcoff=no) AC_ARG_WITH(cvs, dnl [ --without-cvs if CVS should not be used], with_cvs=$withval, with_cvs=yes) @@ -249,6 +252,11 @@ gnu* | linux* | sysv4* | solaris2* | iri # These systems (almost) always use the ELF format. elf=yes ;; +aix*) + # These systems are always xcoff + xcoff=yes + elf=no + ;; esac machine=$config_machine @@ -495,9 +503,26 @@ while test $# -gt 0; do implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`" implied= for x in $implied_candidate; do + found=no if test -d $xsrcdir$name_base/$x; then implied="$implied $name_base/$x"; - else + found=yes + fi + for d in $add_ons_pfx ''; do + try="${d}sysdeps/$x" + case $d in + /*) try_srcdir= ;; + *) try_srcdir=$srcdir/ ;; + esac + test -n "$enable_debug_configure" && + echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2 + if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try; + then + implied="$implied $try" + found=yes + fi + done + if test $found = no; then AC_MSG_WARN($name/Implies specifies nonexistent $x) fi done @@ -559,28 +584,31 @@ AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v, [version \([egcygnustpi-]*[0-9.]*\)], [*gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*], - critic_missing=t) + critic_missing=gcc) AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, [GNU Make[^0-9]*\([0-9][0-9.]*\)], - [3.79* | 3.[89]*], critic_missing=t) + [3.79* | 3.[89]*], critic_missing="$critic_missing make") if test -n "$critic_missing"; then AC_MSG_ERROR([ -*** Some critical program is missing or too old. +*** 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].*], MSGFMT=: aux_missing=t) + [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*], + MSGFMT=: aux_missing="$aux_missing msgfmt") AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version, [GNU texinfo.* \([0-9][0-9.]*\)], - [4.*], MAKEINFO=: aux_missing=t) + [4.*], + MAKEINFO=: aux_missing="$aux_missing makeinfo") AC_CHECK_PROG_VER(SED, gsed sed, --version, [GNU sed version \([0-9]*\.[0-9.]*\)], - [3.0[2-9]*|3.[1-9]*|[4-9]*], SED=: aux_missing=t) + [3.0[2-9]*|3.[1-9]*|[4-9]*], + SED=: aux_missing="$aux_missing sed") AC_PROG_CC_LOCAL AC_CANONICAL_BUILD @@ -600,7 +628,7 @@ AC_CHECK_TOOL(MIG, mig) # [2.10.[1-9]* | 2.1[1-9]* | 2.9-ia64-*], AS=: critic_missing=t) test -n "$aux_missing" && AC_MSG_WARN([ -*** An auxiliary program is missing or too old; +*** These auxiliary programs are missing or too old:$aux_missing *** some features will be disabled. *** Check the INSTALL file for required versions.]) @@ -608,6 +636,27 @@ test -n "$aux_missing" && AC_MSG_WARN([ CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'` AC_SUBST(CCVERSION) +case $CCVERSION in + 3.*) gcc3=yes;; +esac + +if test x"$gcc3" = xyes; then + echo "\ +*** This version of GNU libc cannot be compiled by GCC 3.x. +*** GCC 3.x will generate a library that is binary incompatible to +*** older and future releases of GNU libc. +*** You should compile this GNU libc release by an older GCC version +*** or wait for the next GNU libc release." + if test $enable_sanity = yes; then + echo "\ +*** If you really mean to use GCC 3.x, run configure again +*** using the extra parameter \`--disable-sanity-checks'." + exit 1 + else + echo "\ +*** This configuration is not supported by the GNU libc developers." + fi +fi # if using special system headers, find out the compiler's sekrit # header directory and add that to the list. NOTE: Only does the right # thing on a system that doesn't need fixincludes. (Not presently a problem.) @@ -902,7 +951,7 @@ else fi AC_SUBST(VERSIONING) -if test $shared != no && test $VERSIONING = no; then +if test $elf = yes && test $shared != no && test $VERSIONING = no; then echo "\ *** WARNING: You should not compile GNU libc without versioning. Not using *** versioning will introduce incompatibilities so that old binaries @@ -1383,6 +1432,7 @@ libc_link_sources= # They also can set these variables. use_ldconfig=no ldd_rewrite_script=no +libc_cv_sysconfdir=$sysconfdir # Iterate over all the sysdep directories we will use, running their # configure fragments, and looking for a uname implementation. @@ -1500,7 +1550,7 @@ AC_SUBST(libc_cv_rootsbindir) AC_SUBST(use_ldconfig) AC_SUBST(ldd_rewrite_script) -AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) +AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff) if test $gnu_ld = yes; then AC_DEFINE(HAVE_GNU_LD) fi @@ -1509,6 +1559,9 @@ if test $gnu_as = yes; then fi if test $elf = yes; then AC_DEFINE(HAVE_ELF) +fi +if test $xcoff = yes; then + AC_DEFINE(HAVE_XCOFF) fi AC_SUBST(static) diff -durpN glibc-2.2.3/conform/Makefile glibc-2.2.4/conform/Makefile --- glibc-2.2.3/conform/Makefile Tue Aug 15 11:16:17 2000 +++ glibc-2.2.4/conform/Makefile Mon Jul 23 10:53:36 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Sub-makefile for conform portion of the library. diff -durpN glibc-2.2.3/crypt/Makefile glibc-2.2.4/crypt/Makefile --- glibc-2.2.3/crypt/Makefile Mon Mar 26 20:52:47 2001 +++ glibc-2.2.4/crypt/Makefile Mon Jul 23 10:53:37 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Sub-makefile for crypt() portion of the library. diff -durpN glibc-2.2.3/crypt/crypt-entry.c glibc-2.2.4/crypt/crypt-entry.c --- glibc-2.2.3/crypt/crypt-entry.c Fri Mar 3 16:47:30 2000 +++ glibc-2.2.4/crypt/crypt-entry.c Mon Jul 23 10:53:37 2001 @@ -3,20 +3,20 @@ * * Copyright (C) 1991, 1992, 1993, 1996, 1997 Free Software Foundation, Inc. * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public + * The GNU C Library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * - * This library is distributed in the hope that it will be useful, + * The GNU C Library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. + * Lesser General Public License for more details. * - * You should have received a copy of the GNU Library General Public - * License along with this library; see the file COPYING.LIB. If not, - * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU Lesser General Public + * License along with the GNU C Library; if not, write to the Free + * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA. * * crypt entry points * diff -durpN glibc-2.2.3/crypt/crypt-private.h glibc-2.2.4/crypt/crypt-private.h --- glibc-2.2.3/crypt/crypt-private.h Fri Mar 3 16:47:30 2000 +++ glibc-2.2.4/crypt/crypt-private.h Mon Jul 23 10:53:37 2001 @@ -3,20 +3,20 @@ * * Copyright (C) 1991, 92, 93, 96, 97, 98 Free Software Foundation, Inc. * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public + * The GNU C Library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * - * This library is distributed in the hope that it will be useful, + * The GNU C Library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. + * Lesser General Public License for more details. * - * You should have received a copy of the GNU Library General Public - * License along with this library; see the file COPYING.LIB. If not, - * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU Lesser General Public + * License along with the GNU C Library; if not, write to the Free + * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA. * * @(#)crypt-private.h 1.4 12/20/96 */ diff -durpN glibc-2.2.3/crypt/crypt.h glibc-2.2.4/crypt/crypt.h --- glibc-2.2.3/crypt/crypt.h Sun Oct 8 17:04:48 2000 +++ glibc-2.2.4/crypt/crypt.h Mon Jul 23 10:53:37 2001 @@ -3,20 +3,20 @@ * * Copyright (C) 1991, 92, 93, 96, 97, 98, 2000 Free Software Foundation, Inc. * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public + * The GNU C Library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * - * This library is distributed in the hope that it will be useful, + * The GNU C Library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. + * Lesser General Public License for more details. * - * You should have received a copy of the GNU Library General Public - * License along with the GNU C Library; see the file COPYING.LIB. If not, - * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU Lesser General Public + * License along with the GNU C Library; if not, write to the Free + * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA. * * @(#)crypt.h 1.5 12/20/96 * diff -durpN glibc-2.2.3/crypt/md5-crypt.c glibc-2.2.4/crypt/md5-crypt.c --- glibc-2.2.3/crypt/md5-crypt.c Thu Aug 31 14:44:55 2000 +++ glibc-2.2.4/crypt/md5-crypt.c Mon Jul 23 10:53:37 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1996. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/crypt/md5.c glibc-2.2.4/crypt/md5.c --- glibc-2.2.3/crypt/md5.c Fri Jul 7 10:57:25 2000 +++ glibc-2.2.4/crypt/md5.c Mon Jul 23 10:53:37 2001 @@ -4,19 +4,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Written by Ulrich Drepper , 1995. */ diff -durpN glibc-2.2.3/crypt/md5.h glibc-2.2.4/crypt/md5.h --- glibc-2.2.3/crypt/md5.h Fri Jul 7 10:57:25 2000 +++ glibc-2.2.4/crypt/md5.h Mon Jul 23 10:53:37 2001 @@ -4,19 +4,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _MD5_H #define _MD5_H 1 diff -durpN glibc-2.2.3/crypt/ufc-crypt.h glibc-2.2.4/crypt/ufc-crypt.h --- glibc-2.2.3/crypt/ufc-crypt.h Fri Mar 3 16:47:30 2000 +++ glibc-2.2.4/crypt/ufc-crypt.h Mon Jul 23 10:53:37 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/crypt/ufc.c glibc-2.2.4/crypt/ufc.c --- glibc-2.2.3/crypt/ufc.c Mon Feb 28 18:46:06 2000 +++ glibc-2.2.4/crypt/ufc.c Mon Jul 23 10:53:37 2001 @@ -12,10 +12,11 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. - + * * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * License along with the GNU C Library; see the file COPYING.LIB. If not, + * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. * * @(#)ufc.c 2.7 9/10/96 * diff -durpN glibc-2.2.3/csu/Makefile glibc-2.2.4/csu/Makefile --- glibc-2.2.3/csu/Makefile Mon Mar 26 20:52:47 2001 +++ glibc-2.2.4/csu/Makefile Mon Jul 23 10:53:37 2001 @@ -1,22 +1,21 @@ # Makefile for csu code for GNU C library. - -# Copyright (C) 1995,1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. +# Copyright (C) 1995,96,97,98,99,2000,01 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License -# as published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # This directory contains the C startup code (that which calls main). This # consists of the startfile, built from start.c and installed as crt0.o @@ -48,6 +47,13 @@ extra-objs += b$(start-installed-name) install-lib += b$(start-installed-name) endif +ifneq ($(start-installed-name),$(static-start-installed-name)) +extra-objs += $(static-start-installed-name) g$(static-start-installed-name) +omit-deps += $(patsubst %.o,%,$(static-start-installed-name) \ + g$(static-start-installed-name)) +install-lib += $(static-start-installed-name) g$(static-start-installed-name) +endif + ifeq (yes,$(elf)) before-compile += $(objpfx)abi-tag.h generated += abi-tag.h @@ -151,8 +157,9 @@ endif # The profiling startfile is made by linking together the normal # startfile with gmon-start.o, which defines a constructor function # to turn on profiling code at startup. -$(objpfx)g$(start-installed-name): $(objpfx)$(start-installed-name) \ - $(objpfx)gmon-start.o +$(addprefix $(objpfx),$(sort g$(start-installed-name) \ + g$(static-start-installed-name))): \ + $(objpfx)g%: $(objpfx)% $(objpfx)gmon-start.o $(link-relocatable) # These extra files are sometimes expected by system standard linking diff -durpN glibc-2.2.3/csu/abi-note.S glibc-2.2.4/csu/abi-note.S --- glibc-2.2.3/csu/abi-note.S Mon Mar 26 20:52:47 2001 +++ glibc-2.2.4/csu/abi-note.S Mon Jul 23 10:53:37 2001 @@ -2,29 +2,29 @@ Copyright (C) 1997, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. - The GNU C Library is free software; you can redistribute it - and/or modify it under the terms of the GNU Library General Public + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. + version 2.1 of the License, or (at your option) any later version. - In addition to the permissions in the GNU Library General Public + In addition to the permissions in the GNU Lesser General Public License, the Free Software Foundation gives you unlimited permission to link the compiled version of this file with other programs, and to distribute those programs without any restriction - coming from the use of this file. (The Library General Public + coming from the use of this file. (The Lesser General Public License restrictions do apply in other respects; for example, they cover modification of the file, and distribution when not linked into another program.) - The GNU C Library is distributed in the hope that it will be - useful, but WITHOUT ANY WARRANTY; without even the implied warranty - of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Define an ELF note identifying the operating-system ABI that the executable was created for. The ELF note information identifies a diff -durpN glibc-2.2.3/csu/gmon-start.c glibc-2.2.4/csu/gmon-start.c --- glibc-2.2.3/csu/gmon-start.c Fri Dec 1 11:55:01 2000 +++ glibc-2.2.4/csu/gmon-start.c Fri Jul 27 23:13:12 2001 @@ -1,32 +1,39 @@ /* Code to enable profiling at program startup. - Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 __ASSEMBLY__ +#include /* Beginning and end of our code segment. We cannot declare them as the external functions since we want the addresses of those labels. Taking the address of a function may have different meanings on different platforms. */ -extern void _start, etext; +#ifdef ENTRY_POINT_DECL +ENTRY_POINT_DECL(extern) +#else +extern void ENTRY_POINT; +#endif +extern void etext; #ifndef HAVE_INITFINI /* This function gets called at startup by the normal constructor @@ -56,7 +63,7 @@ __gmon_start__ (void) #endif /* Start keeping profiling records. */ - __monstartup ((u_long) &_start, (u_long) &etext); + __monstartup ((u_long) &ENTRY_POINT, (u_long) &etext); /* Call _mcleanup before exiting; it will write out gmon.out from the collected data. */ diff -durpN glibc-2.2.3/csu/init.c glibc-2.2.4/csu/init.c --- glibc-2.2.3/csu/init.c Mon Sep 14 11:56:30 1998 +++ glibc-2.2.4/csu/init.c Mon Jul 23 10:53:37 2001 @@ -2,29 +2,20 @@ Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. - The GNU C Library is free software; you can redistribute it - and/or modify it under the terms of the GNU Library General Public + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - In addition to the permissions in the GNU Library General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The Library General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) + version 2.1 of the License, or (at your option) any later version. - The GNU C Library is distributed in the hope that it will be - useful, but WITHOUT ANY WARRANTY; without even the implied warranty - of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #if defined USE_IN_LIBIO && defined __GNUC__ && __GNUC__ >= 2 diff -durpN glibc-2.2.3/csu/munch-tmpl.c glibc-2.2.4/csu/munch-tmpl.c --- glibc-2.2.3/csu/munch-tmpl.c Fri May 26 12:38:26 2000 +++ glibc-2.2.4/csu/munch-tmpl.c Mon Jul 23 10:53:37 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/csu/set-init.c glibc-2.2.4/csu/set-init.c --- glibc-2.2.3/csu/set-init.c Fri May 8 18:07:27 1998 +++ glibc-2.2.4/csu/set-init.c Mon Jul 23 10:53:37 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/csu/version.c glibc-2.2.4/csu/version.c --- glibc-2.2.3/csu/version.c Mon Mar 26 20:52:47 2001 +++ glibc-2.2.4/csu/version.c Mon Jul 23 10:53:37 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include "version.h" #include diff -durpN glibc-2.2.3/ctype/Makefile glibc-2.2.4/ctype/Makefile --- glibc-2.2.3/ctype/Makefile Mon Nov 3 18:33:53 1997 +++ glibc-2.2.4/ctype/Makefile Mon Jul 23 10:53:37 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Sub-makefile for ctype portion of the library. diff -durpN glibc-2.2.3/ctype/ctype-extn.c glibc-2.2.4/ctype/ctype-extn.c --- glibc-2.2.3/ctype/ctype-extn.c Fri Dec 1 11:55:01 2000 +++ glibc-2.2.4/ctype/ctype-extn.c Mon Jul 23 10:53:37 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #define __NO_CTYPE #include diff -durpN glibc-2.2.3/ctype/ctype-info.c glibc-2.2.4/ctype/ctype-info.c --- glibc-2.2.3/ctype/ctype-info.c Thu Sep 7 11:56:21 2000 +++ glibc-2.2.4/ctype/ctype-info.c Mon Jul 23 10:53:37 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/ctype/ctype.c glibc-2.2.4/ctype/ctype.c --- glibc-2.2.3/ctype/ctype.c Sun Feb 7 15:39:56 1999 +++ glibc-2.2.4/ctype/ctype.c Mon Jul 23 10:53:37 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #define __NO_CTYPE #include diff -durpN glibc-2.2.3/ctype/ctype.h glibc-2.2.4/ctype/ctype.h --- glibc-2.2.3/ctype/ctype.h Thu Sep 14 12:24:07 2000 +++ glibc-2.2.4/ctype/ctype.h Mon Jul 23 10:53:37 2001 @@ -1,20 +1,20 @@ -/* Copyright (C) 1991,92,93,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,93,95,96,97,98,99,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * ISO C99 Standard 7.4: Character handling @@ -163,8 +163,7 @@ __exctype (_tolower); # define isblank(c) __isctype((c), _ISblank) # endif -# if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \ - && defined __USE_EXTERN_INLINES +# ifdef __USE_EXTERN_INLINES extern __inline int tolower (int __c) __THROW { diff -durpN glibc-2.2.3/ctype/ctype_l.c glibc-2.2.4/ctype/ctype_l.c --- glibc-2.2.3/ctype/ctype_l.c Thu Apr 12 14:02:00 2001 +++ glibc-2.2.4/ctype/ctype_l.c Mon Jul 23 10:53:37 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #define __NO_CTYPE #include diff -durpN glibc-2.2.3/ctype/test_ctype.c glibc-2.2.4/ctype/test_ctype.c --- glibc-2.2.3/ctype/test_ctype.c Sat Jan 6 20:35:11 2001 +++ glibc-2.2.4/ctype/test_ctype.c Mon Jul 23 10:53:37 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/debug/Makefile glibc-2.2.4/debug/Makefile --- glibc-2.2.3/debug/Makefile Mon Mar 26 20:52:48 2001 +++ glibc-2.2.4/debug/Makefile Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Sub-makefile for debug portion of the library. @@ -65,7 +65,7 @@ $(objpfx)pcprofiledump: $(objpfx)pcprofi $(objpfx)xtrace: xtrace.sh rm -f $@.new sed -e 's|@BASH@|$(BASH)|' -e 's|@VERSION@|$(version)|' \ - -e 's|@LIBDIR@|$(libdir)|' -e 's|@BINDIR@|$(bindir)|' $^ > $@.new \ + -e 's|@SLIBDIR@|$(slibdir)|' -e 's|@BINDIR@|$(bindir)|' $^ > $@.new \ && rm -f $@ && mv $@.new $@ && chmod +x $@ # Depend on libc.so so a DT_NEEDED is generated in the shared objects. @@ -73,7 +73,7 @@ $(objpfx)xtrace: xtrace.sh # a statically-linked program that hasn't already loaded it. $(objpfx)libSegFault.so: $(common-objpfx)libc.so \ $(common-objpfx)libc_nonshared.a \ - $(common-objpfx)elf/ld.so + $(elf-objpfx)$(rtld-installed-name) $(objpfx)libpcprofile.so: $(common-objpfx)libc.so \ $(common-objpfx)libc_nonshared.a \ - $(common-objpfx)elf/ld.so + $(elf-objpfx)$(rtld-installed-name) diff -durpN glibc-2.2.3/debug/catchsegv.sh glibc-2.2.4/debug/catchsegv.sh --- glibc-2.2.3/debug/catchsegv.sh Sat Jan 6 20:35:11 2001 +++ glibc-2.2.4/debug/catchsegv.sh Mon Jul 23 10:53:38 2001 @@ -1,23 +1,22 @@ #! /bin/sh - # Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributed by Ulrich Drepper , 1998. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. if test $# -eq 0; then echo "$0: missing programm name" >&2 diff -durpN glibc-2.2.3/debug/execinfo.h glibc-2.2.4/debug/execinfo.h --- glibc-2.2.3/debug/execinfo.h Mon Oct 11 11:45:06 1999 +++ glibc-2.2.4/debug/execinfo.h Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _EXECINFO_H #define _EXECINFO_H 1 diff -durpN glibc-2.2.3/debug/noophooks.c glibc-2.2.4/debug/noophooks.c --- glibc-2.2.3/debug/noophooks.c Sat Jan 6 20:35:11 2001 +++ glibc-2.2.4/debug/noophooks.c Mon Jul 23 10:53:38 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1999. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/debug/pcprofile.c glibc-2.2.4/debug/pcprofile.c --- glibc-2.2.3/debug/pcprofile.c Sat Jan 6 20:35:11 2001 +++ glibc-2.2.4/debug/pcprofile.c Mon Jul 23 10:53:38 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1999. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/debug/pcprofiledump.c glibc-2.2.4/debug/pcprofiledump.c --- glibc-2.2.3/debug/pcprofiledump.c Fri Oct 8 09:58:56 1999 +++ glibc-2.2.4/debug/pcprofiledump.c Mon Jul 23 10:53:38 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1999. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This is mainly and example. It shows how programs which want to use the information should read the file. */ diff -durpN glibc-2.2.3/debug/xtrace.sh glibc-2.2.4/debug/xtrace.sh --- glibc-2.2.3/debug/xtrace.sh Sat Apr 7 14:02:33 2001 +++ glibc-2.2.4/debug/xtrace.sh Mon Jul 23 10:53:38 2001 @@ -4,19 +4,19 @@ # Contributed by Ulrich Drepper , 1999. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. pcprofileso=@SLIBDIR@/libpcprofile.so pcprofiledump=@BINDIR@/pcprofiledump diff -durpN glibc-2.2.3/dirent/Makefile glibc-2.2.4/dirent/Makefile --- glibc-2.2.3/dirent/Makefile Wed Aug 2 14:51:58 2000 +++ glibc-2.2.4/dirent/Makefile Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Sub-makefile for dirent portion of the library. diff -durpN glibc-2.2.3/dirent/alphasort.c glibc-2.2.4/dirent/alphasort.c --- glibc-2.2.3/dirent/alphasort.c Fri Mar 20 10:43:07 1998 +++ glibc-2.2.4/dirent/alphasort.c Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dirent/dirent.h glibc-2.2.4/dirent/dirent.h --- glibc-2.2.3/dirent/dirent.h Thu Aug 31 14:44:56 2000 +++ glibc-2.2.4/dirent/dirent.h Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * POSIX Standard: 5.1.2 Directory Operations diff -durpN glibc-2.2.3/dirent/list.c glibc-2.2.4/dirent/list.c --- glibc-2.2.3/dirent/list.c Sat Jan 6 20:35:11 2001 +++ glibc-2.2.4/dirent/list.c Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dirent/opendir-tst1.c glibc-2.2.4/dirent/opendir-tst1.c --- glibc-2.2.3/dirent/opendir-tst1.c Sat Jan 6 20:35:11 2001 +++ glibc-2.2.4/dirent/opendir-tst1.c Mon Jul 23 10:53:38 2001 @@ -1,20 +1,21 @@ /* Copyright (C) 1998, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dirent/scandir.c glibc-2.2.4/dirent/scandir.c --- glibc-2.2.3/dirent/scandir.c Tue Aug 15 11:16:17 2000 +++ glibc-2.2.4/dirent/scandir.c Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dirent/tst-seekdir.c glibc-2.2.4/dirent/tst-seekdir.c --- glibc-2.2.3/dirent/tst-seekdir.c Sat Jan 6 20:35:11 2001 +++ glibc-2.2.4/dirent/tst-seekdir.c Fri Aug 10 12:11:48 2001 @@ -5,20 +5,21 @@ int main (int argc, char *argv[]) { - DIR * dirp; long int save3 = 0; + long int cur; int i = 0; + int result = 0; struct dirent *dp; - dirp = opendir("."); - for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) + dirp = opendir ("."); + for (dp = readdir (dirp); dp != NULL; dp = readdir (dirp)) { /* save position 3 (after fourth entry) */ if (i++ == 3) - save3 = telldir(dirp); + save3 = telldir (dirp); - printf("%s\n", dp->d_name); + printf ("%s\n", dp->d_name); /* stop at 400 (just to make sure dirp->__offset and dirp->__size are scrambled */ @@ -26,17 +27,24 @@ main (int argc, char *argv[]) break; } - printf("going back past 4-th entry...\n"); + printf ("going back past 4-th entry...\n"); /* go back to saved entry */ seekdir (dirp, save3); + /* Check whether telldir equals to save3 now. */ + cur = telldir (dirp); + if (cur != save3) + { + printf ("seekdir (d, %ld); telldir (d) == %ld\n", save3, cur); + result = 1; + } /* print remaining files (3-last) */ - for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) - printf("%s\n", dp->d_name); + for (dp = readdir (dirp); dp != NULL; dp = readdir (dirp)) + printf ("%s\n", dp->d_name); closedir (dirp); - return 0; + return result; } diff -durpN glibc-2.2.3/dirent/versionsort.c glibc-2.2.4/dirent/versionsort.c --- glibc-2.2.3/dirent/versionsort.c Wed Jul 15 10:47:34 1998 +++ glibc-2.2.4/dirent/versionsort.c Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/Makefile glibc-2.2.4/dlfcn/Makefile --- glibc-2.2.3/dlfcn/Makefile Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/dlfcn/Makefile Fri Aug 10 12:11:48 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. subdir := dlfcn headers := bits/dlfcn.h dlfcn.h @@ -22,7 +22,7 @@ extra-libs := libdl libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr eval distribute := dlopenold.c glreflib1.c glreflib2.c failtestmod.c eval.c \ defaultmod1.c defaultmod2.c errmsg1mod.c modatexit.c \ - modcxaatexit.c + modcxaatexit.c modstatic.c extra-libs-others := libdl @@ -42,6 +42,14 @@ endif endif modules-names = glreflib1 glreflib2 failtestmod defaultmod1 defaultmod2 \ errmsg1mod modatexit modcxaatexit + +ifeq (yesyesyes,$(build-static)$(build-shared)$(elf)) +tests += tststatic +tests-static += tststatic +modules-names += modstatic +tststatic-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf +endif + extra-objs += $(modules-names:=.os) eval.os generated := $(modules-names:=.so) @@ -63,11 +71,11 @@ $(objpfx)failtest.out: $(objpfx)failtest $(objpfx)tst-dladdr: $(libdl) $(objpfx)tst-dladdr.out: $(objpfx)glreflib1.so -LDFLAGS-default = -rdynamic +LDFLAGS-default = $(LDFLAGS-rdynamic) $(objpfx)default: $(libdl) $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so -$(objpfx)defaultmod1.so: $(libdl) -LDFLAGS-defaultmod2.so = -Bsymbolic -$(objpfx)defaultmod2.so: $(libdl) +$(objpfx)defaultmod1.so: $(libdl) $(common-objpfx)libc_nonshared.a +LDFLAGS-defaultmod2.so = $(LDFLAGS-Bsymbolic) +$(objpfx)defaultmod2.so: $(libdl) $(common-objpfx)libc_nonshared.a $(objpfx)errmsg1: $(libdl) $(objpfx)errmsg1.out: $(objpfx)errmsg1 $(objpfx)errmsg1mod.so @@ -79,6 +87,11 @@ $(objpfx)tstcxaatexit: $(libdl) $(objpfx)tstcxaatexit.out: $(objpfx)tstcxaatexit $(objpfx)modcxaatexit.so $(objpfx)modatexit.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a + +$(objpfx)tststatic: $(objpfx)libdl.a +$(objpfx)tststatic.out: $(objpfx)tststatic $(objpfx)modstatic.so + +$(objpfx)modstatic.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a # Depend on libc.so so a DT_NEEDED is generated in the shared objects. # This ensures they will load libc.so for needed symbols if loaded by diff -durpN glibc-2.2.3/dlfcn/dladdr.c glibc-2.2.4/dlfcn/dladdr.c --- glibc-2.2.3/dlfcn/dladdr.c Wed Jul 7 18:21:58 1999 +++ glibc-2.2.4/dlfcn/dladdr.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/dlfcn/dlclose.c glibc-2.2.4/dlfcn/dlclose.c --- glibc-2.2.3/dlfcn/dlclose.c Wed Jul 7 18:21:58 1999 +++ glibc-2.2.4/dlfcn/dlclose.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/dlfcn/dlerror.c glibc-2.2.4/dlfcn/dlerror.c --- glibc-2.2.3/dlfcn/dlerror.c Sat Jan 6 20:35:11 2001 +++ glibc-2.2.4/dlfcn/dlerror.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/dlfcn.h glibc-2.2.4/dlfcn/dlfcn.h --- glibc-2.2.3/dlfcn/dlfcn.h Fri Jun 9 12:17:32 2000 +++ glibc-2.2.4/dlfcn/dlfcn.h Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _DLFCN_H #define _DLFCN_H 1 diff -durpN glibc-2.2.3/dlfcn/dlopen.c glibc-2.2.4/dlfcn/dlopen.c --- glibc-2.2.3/dlfcn/dlopen.c Fri Dec 1 11:55:02 2000 +++ glibc-2.2.4/dlfcn/dlopen.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/dlopenold.c glibc-2.2.4/dlfcn/dlopenold.c --- glibc-2.2.3/dlfcn/dlopenold.c Fri Dec 1 11:55:02 2000 +++ glibc-2.2.4/dlfcn/dlopenold.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/dlsym.c glibc-2.2.4/dlfcn/dlsym.c --- glibc-2.2.3/dlfcn/dlsym.c Wed Aug 2 14:51:59 2000 +++ glibc-2.2.4/dlfcn/dlsym.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/dlvsym.c glibc-2.2.4/dlfcn/dlvsym.c --- glibc-2.2.3/dlfcn/dlvsym.c Wed Aug 2 14:51:59 2000 +++ glibc-2.2.4/dlfcn/dlvsym.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/errmsg1.c glibc-2.2.4/dlfcn/errmsg1.c --- glibc-2.2.3/dlfcn/errmsg1.c Tue Jan 2 20:31:03 2001 +++ glibc-2.2.4/dlfcn/errmsg1.c Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/errmsg1mod.c glibc-2.2.4/dlfcn/errmsg1mod.c --- glibc-2.2.3/dlfcn/errmsg1mod.c Wed Dec 27 22:57:34 2000 +++ glibc-2.2.4/dlfcn/errmsg1mod.c Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ extern int bar (void); extern int foo (void); diff -durpN glibc-2.2.3/dlfcn/eval.c glibc-2.2.4/dlfcn/eval.c --- glibc-2.2.3/dlfcn/eval.c Tue Jan 23 14:07:16 2001 +++ glibc-2.2.4/dlfcn/eval.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/glreflib1.c glibc-2.2.4/dlfcn/glreflib1.c --- glibc-2.2.3/dlfcn/glreflib1.c Fri Dec 1 11:55:02 2000 +++ glibc-2.2.4/dlfcn/glreflib1.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ extern int ref1 (void); int diff -durpN glibc-2.2.3/dlfcn/glreflib2.c glibc-2.2.4/dlfcn/glreflib2.c --- glibc-2.2.3/dlfcn/glreflib2.c Fri Dec 1 11:55:02 2000 +++ glibc-2.2.4/dlfcn/glreflib2.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ extern int ref1 (void); diff -durpN glibc-2.2.3/dlfcn/glrefmain.c glibc-2.2.4/dlfcn/glrefmain.c --- glibc-2.2.3/dlfcn/glrefmain.c Sat Jan 6 20:35:11 2001 +++ glibc-2.2.4/dlfcn/glrefmain.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/modatexit.c glibc-2.2.4/dlfcn/modatexit.c --- glibc-2.2.3/dlfcn/modatexit.c Sat Apr 7 14:02:33 2001 +++ glibc-2.2.4/dlfcn/modatexit.c Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/modcxaatexit.c glibc-2.2.4/dlfcn/modcxaatexit.c --- glibc-2.2.3/dlfcn/modcxaatexit.c Sat Apr 7 14:02:33 2001 +++ glibc-2.2.4/dlfcn/modcxaatexit.c Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/modstatic.c glibc-2.2.4/dlfcn/modstatic.c --- glibc-2.2.3/dlfcn/modstatic.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/dlfcn/modstatic.c Sat Aug 4 11:59:22 2001 @@ -0,0 +1,5 @@ +int +test (int a) +{ + return a + a; +} diff -durpN glibc-2.2.3/dlfcn/tst-dladdr.c glibc-2.2.4/dlfcn/tst-dladdr.c --- glibc-2.2.3/dlfcn/tst-dladdr.c Sat Jan 6 20:35:11 2001 +++ glibc-2.2.4/dlfcn/tst-dladdr.c Mon Jul 23 10:53:38 2001 @@ -1,21 +1,22 @@ /* Test for dladdr. Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. Contributed by Volkmar Sieh and Andreas Jaeger . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/tstatexit.c glibc-2.2.4/dlfcn/tstatexit.c --- glibc-2.2.3/dlfcn/tstatexit.c Fri Mar 9 22:32:33 2001 +++ glibc-2.2.4/dlfcn/tstatexit.c Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/tstcxaatexit.c glibc-2.2.4/dlfcn/tstcxaatexit.c --- glibc-2.2.3/dlfcn/tstcxaatexit.c Fri Mar 9 22:31:25 2001 +++ glibc-2.2.4/dlfcn/tstcxaatexit.c Mon Jul 23 10:53:38 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/dlfcn/tststatic.c glibc-2.2.4/dlfcn/tststatic.c --- glibc-2.2.3/dlfcn/tststatic.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/dlfcn/tststatic.c Sat Aug 4 11:58:50 2001 @@ -0,0 +1,35 @@ +#include +#include +#include + +int +main (void) +{ + void *handle; + int (*test) (int); + int res; + + handle = dlopen ("modstatic.so", RTLD_LAZY); + if (handle == NULL) + { + printf ("%s\n", dlerror ()); + exit(1); + } + + test = dlsym (handle, "test"); + if (test == NULL) + { + printf ("%s\n", dlerror ()); + exit(1); + } + + res = test (2); + if (res != 4) + { + printf ("Got %i, expected 4\n", res); + exit (1); + } + + dlclose (handle); + return 0; +} diff -durpN glibc-2.2.3/elf/Makefile glibc-2.2.4/elf/Makefile --- glibc-2.2.3/elf/Makefile Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/Makefile Fri Jul 27 23:13:13 2001 @@ -2,27 +2,28 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # Makefile for elf subdirectory of GNU C Library. subdir := elf headers = elf.h bits/elfclass.h link.h -routines = $(dl-routines) dl-open dl-close dl-symbol dl-support \ - dl-addr enbl-secure dl-profstub dl-origin dl-libc dl-sym +routines = $(dl-routines) dl-open dl-close dl-support dl-iteratephdr \ + dl-iteratephdr-static dl-addr enbl-secure dl-profstub \ + dl-origin dl-libc dl-sym # The core dynamic linking functions are in libc for the static and # profiled libraries. @@ -31,7 +32,8 @@ dl-routines = $(addprefix dl-,load cache version profile) 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 +elide-routines.os = $(all-dl-routines) dl-support enbl-secure \ + dl-iteratephdr-static # ld.so uses those routines, plus some special stuff for being the program # interpreter and operating independent of libc. @@ -53,6 +55,7 @@ distribute := $(rtld-routines:=.c) dynam nodlopenmod.c nodelete.c nodelmod1.c nodelmod2.c \ nodelmod3.c nodelmod4.c nodlopen.c dl-osinfo.h \ reldepmod1.c reldepmod2.c reldepmod3.c reldepmod4.c \ + reldep4mod1.c reldep4mod2.c reldep4mod3.c reldep4mod4.c \ nextmod1.c nextmod2.c pathoptobj.c tst-pathopt.sh \ neededobj1.c neededobj2.c neededobj3.c neededobj4.c \ neededobj5.c neededobj6.c firstobj.c \ @@ -99,9 +102,10 @@ endif ifeq (yes,$(build-shared)) tests = loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ constload1 order $(tests-vis-$(have-protected)) noload filter unload \ - reldep reldep2 reldep3 next $(tests-nodelete-$(have-z-nodelete)) \ + reldep reldep2 reldep3 reldep4 next $(tests-nodelete-$(have-z-nodelete)) \ $(tests-nodlopen-$(have-z-nodlopen)) neededtest neededtest2 \ - neededtest3 neededtest4 unload2 lateglobal initfirst global + neededtest3 neededtest4 unload2 lateglobal initfirst global \ + restest2 test-srcs = tst-pathopt tests-vis-yes = vismain tests-nodelete-yes = nodelete @@ -113,6 +117,7 @@ modules-names = testobj1 testobj2 testob $(modules-nodelete-$(have-z-nodelete)) \ $(modules-nodlopen-$(have-z-nodlopen)) filtmod1 filtmod2 \ reldepmod1 reldepmod2 reldepmod3 reldepmod4 nextmod1 nextmod2 \ + reldep4mod1 reldep4mod2 reldep4mod3 reldep4mod4 \ neededobj1 neededobj2 neededobj3 neededobj4 \ neededobj5 neededobj6 firstobj globalmod1 \ unload2mod unload2dep ltglobmod1 ltglobmod2 pathoptobj @@ -274,6 +279,8 @@ $(objpfx)unload2mod.so: $(objpfx)unload2 $(objpfx)ltglobmod2.so: $(libdl) $(objpfx)firstobj.so: $(shared-thread-library) $(objpfx)globalmod1.so: $(libdl) +$(objpfx)reldep4mod1.so: $(objpfx)reldep4mod3.so +$(objpfx)reldep4mod2.so: $(objpfx)reldep4mod4.so # filtmod1.so has a special rule $(filter-out $(objpfx)filtmod1.so, $(test-modules)): $(objpfx)%.so: $(objpfx)%.os @@ -303,6 +310,9 @@ $(objpfx)neededtest4.out: $(objpfx)neede $(objpfx)restest1: $(objpfx)testobj1.so $(objpfx)testobj1_1.so $(libdl) LDFLAGS-restest1 = -rdynamic +$(objpfx)restest2: $(libdl) +LDFLAGS-restest2 = -rdynamic + $(objpfx)restest1.out: $(test-modules) preloadtest-preloads = testobj1 testobj2 testobj3 testobj4 testobj5 @@ -381,6 +391,9 @@ $(objpfx)reldep2.out: $(objpfx)reldepmod $(objpfx)reldep3: $(libdl) $(objpfx)reldep3.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod4.so + +$(objpfx)reldep4: $(libdl) +$(objpfx)reldep4.out: $(objpfx)reldep4mod1.so $(objpfx)reldep4mod2.so $(objpfx)next: $(objpfx)nextmod1.so $(objpfx)nextmod2.so $(libdl) diff -durpN glibc-2.2.3/elf/Versions glibc-2.2.4/elf/Versions --- glibc-2.2.3/elf/Versions Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/Versions Fri Jul 27 23:13:13 2001 @@ -14,6 +14,9 @@ libc { # functions used in other libraries _dl_sym; _dl_vsym; } + GLIBC_2.2.4 { + dl_iterate_phdr; + } } ld { diff -durpN glibc-2.2.3/elf/cache.c glibc-2.2.4/elf/cache.c --- glibc-2.2.3/elf/cache.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/cache.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ Contributed by Andreas Jaeger , 1999. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/chroot_canon.c glibc-2.2.4/elf/chroot_canon.c --- glibc-2.2.3/elf/chroot_canon.c Thu Nov 16 11:12:01 2000 +++ glibc-2.2.4/elf/chroot_canon.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/dl-addr.c glibc-2.2.4/elf/dl-addr.c --- glibc-2.2.3/elf/dl-addr.c Sun Oct 8 17:04:48 2000 +++ glibc-2.2.4/elf/dl-addr.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/dl-close.c glibc-2.2.4/elf/dl-close.c --- glibc-2.2.3/elf/dl-close.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-close.c Sat Aug 4 12:31:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -67,8 +67,7 @@ _dl_close (void *_map) if (map->l_opencount > 1 || map->l_type != lt_loaded) { /* There are still references to this object. Do nothing more. */ - if (//__builtin_expect (_dl_debug_files, 0)) - __builtin_expect (_dl_debug_mask & DL_DEBUG_FILES, 0)) + if (__builtin_expect (_dl_debug_mask & DL_DEBUG_FILES, 0)) { char buf[20]; @@ -224,8 +223,8 @@ _dl_close (void *_map) struct reldep_list *newrel; newrel = (struct reldep_list *) alloca (sizeof (*reldeps)); - newrel->rellist = map->l_reldeps; - newrel->nrellist = map->l_reldepsact; + newrel->rellist = imap->l_reldeps; + newrel->nrellist = imap->l_reldepsact; newrel->next = reldeps; reldeps = newrel; diff -durpN glibc-2.2.3/elf/dl-debug.c glibc-2.2.4/elf/dl-debug.c --- glibc-2.2.3/elf/dl-debug.c Tue Mar 28 11:05:24 2000 +++ glibc-2.2.4/elf/dl-debug.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/elf/dl-deps.c glibc-2.2.4/elf/dl-deps.c --- glibc-2.2.3/elf/dl-deps.c Thu Apr 12 14:02:01 2001 +++ glibc-2.2.4/elf/dl-deps.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -72,20 +72,15 @@ openaux (void *a) -/* We use a very special kind of list to track the two kinds paths +/* We use a very special kind of list to track the path through the list of loaded shared objects. We have to - - - produce a flat list with unique members of all involved objects - - - produce a flat list of all shared objects. + produce a flat list with unique members of all involved objects. */ struct list { int done; /* Nonzero if this map was processed. */ struct link_map *map; /* The data. */ - - struct list *unique; /* Elements for normal list. */ - struct list *dup; /* Elements in complete list. */ + struct list *next; /* Elements for normal list. */ }; @@ -139,13 +134,14 @@ _dl_map_object_deps (struct link_map *ma int trace_mode) { struct list known[1 + npreloads + 1]; - struct list *runp, *utail, *dtail; - unsigned int nlist, nduplist, i; + struct list *runp, *tail; + unsigned int nlist, i; /* Object name. */ const char *name; int errno_saved; int errno_reason; const char *errstring; + const char *objname; auto inline void preload (struct link_map *map); @@ -153,9 +149,7 @@ _dl_map_object_deps (struct link_map *ma { known[nlist].done = 0; known[nlist].map = map; - - known[nlist].unique = &known[nlist + 1]; - known[nlist].dup = &known[nlist + 1]; + known[nlist].next = &known[nlist + 1]; ++nlist; /* We use `l_reserved' as a mark bit to detect objects we have @@ -175,17 +169,10 @@ _dl_map_object_deps (struct link_map *ma preload (preloads[i]); /* Terminate the lists. */ - known[nlist - 1].unique = NULL; - known[nlist - 1].dup = NULL; + known[nlist - 1].next = NULL; /* Pointer to last unique object. */ - utail = &known[nlist - 1]; - /* Pointer to last loaded object. */ - dtail = &known[nlist - 1]; - - /* Until now we have the same number of libraries in the normal and - the list with duplicates. */ - nduplist = nlist; + tail = &known[nlist - 1]; /* Process each element of the search list, loading each of its auxiliary objects and immediate dependencies. Auxiliary objects @@ -235,19 +222,18 @@ _dl_map_object_deps (struct link_map *ma { /* Map in the needed object. */ struct link_map *dep; - /* Allocate new entry. */ - struct list *newp; - const char *objname; + int err; /* Recognize DSTs. */ name = expand_dst (l, strtab + d->d_un.d_val, 0); /* Store the tag in the argument structure. */ args.name = name; - if (_dl_catch_error (&objname, &errstring, openaux, &args)) + err = _dl_catch_error (&objname, &errstring, openaux, &args); + if (__builtin_expect (errstring != NULL, 0)) { - if (errno) - errno_reason = errno; + if (err) + errno_reason = err; else errno_reason = -1; goto out; @@ -255,21 +241,19 @@ _dl_map_object_deps (struct link_map *ma else dep = args.aux; - /* Add it in any case to the duplicate list. */ - newp = alloca (sizeof (struct list)); - newp->map = dep; - newp->dup = NULL; - dtail->dup = newp; - dtail = newp; - ++nduplist; - if (! dep->l_reserved) { - /* Append DEP to the unique list. */ + /* Allocate new entry. */ + struct list *newp; + + newp = alloca (sizeof (struct list)); + + /* Append DEP to the list. */ + newp->map = dep; newp->done = 0; - newp->unique = NULL; - utail->unique = newp; - utail = newp; + newp->next = NULL; + tail->next = newp; + tail = newp; ++nlist; /* Set the mark bit that says it's already in the list. */ dep->l_reserved = 1; @@ -281,7 +265,6 @@ _dl_map_object_deps (struct link_map *ma } else if (d->d_tag == DT_AUXILIARY || d->d_tag == DT_FILTER) { - const char *objname; struct list *newp; /* Recognize DSTs. */ @@ -292,6 +275,8 @@ _dl_map_object_deps (struct link_map *ma if (d->d_tag == DT_AUXILIARY) { + int err; + /* Say that we are about to load an auxiliary library. */ if (__builtin_expect (_dl_debug_mask & DL_DEBUG_LIBS, 0)) _dl_debug_printf ("load auxiliary object=%s" @@ -301,13 +286,14 @@ _dl_map_object_deps (struct link_map *ma /* We must be prepared that the addressed shared object is not available. */ - if (_dl_catch_error (&objname, &errstring, openaux, &args)) + err = _dl_catch_error (&objname, &errstring, openaux, + &args); + if (__builtin_expect (errstring != NULL, 0)) { /* We are not interested in the error message. */ assert (errstring != NULL); if (errstring != _dl_out_of_memory) free ((char *) errstring); - errstring = NULL; /* Simply ignore this error and continue the work. */ continue; @@ -315,6 +301,8 @@ _dl_map_object_deps (struct link_map *ma } else { + int err; + /* Say that we are about to load an auxiliary library. */ if (__builtin_expect (_dl_debug_mask & DL_DEBUG_LIBS, 0)) _dl_debug_printf ("load filtered object=%s" @@ -323,10 +311,12 @@ _dl_map_object_deps (struct link_map *ma ? l->l_name : _dl_argv[0]); /* For filter objects the dependency must be available. */ - if (_dl_catch_error (&objname, &errstring, openaux, &args)) + err = _dl_catch_error (&objname, &errstring, openaux, + &args); + if (__builtin_expect (errstring != NULL, 0)) { - if (errno) - errno_reason = errno; + if (err) + errno_reason = err; else errno_reason = -1; goto out; @@ -343,7 +333,7 @@ _dl_map_object_deps (struct link_map *ma but we have no back links. So we copy the contents of the current entry over. Note that ORIG and NEWP now have switched their meanings. */ - orig->dup = memcpy (newp, orig, sizeof (*newp)); + memcpy (newp, orig, sizeof (*newp)); /* Initialize new entry. */ orig->done = 0; @@ -372,22 +362,22 @@ _dl_map_object_deps (struct link_map *ma /* This object is already in the search list we are building. Don't add a duplicate pointer. Just added by _dl_map_object. */ - for (late = newp; late->unique; late = late->unique) - if (late->unique->map == args.aux) + for (late = newp; late->next; late = late->next) + if (late->next->map == args.aux) break; - if (late->unique) + if (late->next) { /* The object is somewhere behind the current position in the search path. We have to move it to this earlier position. */ - orig->unique = newp; + orig->next = newp; - /* Now remove the later entry from the unique list + /* Now remove the later entry from the list and adjust the tail pointer. */ - if (utail == late->unique) - utail = late; - late->unique = late->unique->unique; + if (tail == late->next) + tail = late; + late->next = late->next->next; /* We must move the object earlier in the chain. */ if (args.aux->l_prev) @@ -406,25 +396,25 @@ _dl_map_object_deps (struct link_map *ma /* The object must be somewhere earlier in the list. That's good, we only have to insert an entry for the duplicate list. */ - orig->unique = NULL; /* Never used. */ + orig->next = NULL; /* Never used. */ /* Now we have a problem. The element - pointing to ORIG in the unique list must + pointing to ORIG in the list must point to NEWP now. This is the only place where we need this backreference and this situation is really not that frequent. So we don't use a double-linked list but instead search for the preceding element. */ late = known; - while (late->unique != orig) - late = late->unique; - late->unique = newp; + while (late->next != orig) + late = late->next; + late->next = newp; } } else { /* This is easy. We just add the symbol right here. */ - orig->unique = newp; + orig->next = newp; ++nlist; /* Set the mark bit that says it's already in the list. */ args.aux->l_reserved = 1; @@ -444,17 +434,12 @@ _dl_map_object_deps (struct link_map *ma args.aux->l_next = newp->map; } - /* Move the tail pointers if necessary. */ - if (orig == utail) - utail = newp; - if (orig == dtail) - dtail = newp; + /* Move the tail pointer if necessary. */ + if (orig == tail) + tail = newp; /* Move on the insert point. */ orig = newp; - - /* We always add an entry to the duplicate list. */ - ++nduplist; } } @@ -473,7 +458,7 @@ _dl_map_object_deps (struct link_map *ma /* If we have no auxiliary objects just go on to the next map. */ if (runp->done) do - runp = runp->unique; + runp = runp->next; while (runp != NULL && runp->done); } @@ -492,8 +477,7 @@ out: /* Store the search list we built in the object. It will be used for searches in the scope of this object. */ map->l_initfini = - (struct link_map **) malloc ((2 * nlist + 1 - + (nlist == nduplist ? 0 : nduplist)) + (struct link_map **) malloc ((2 * nlist + 1) * sizeof (struct link_map *)); if (map->l_initfini == NULL) _dl_signal_error (ENOMEM, map->l_name, @@ -503,7 +487,7 @@ out: map->l_searchlist.r_list = &map->l_initfini[nlist + 1]; map->l_searchlist.r_nlist = nlist; - for (nlist = 0, runp = known; runp; runp = runp->unique) + for (nlist = 0, runp = known; runp; runp = runp->next) { if (trace_mode && runp->map->l_faked) /* This can happen when we trace the loading. */ @@ -516,23 +500,6 @@ out: runp->map->l_reserved = 0; } - map->l_searchlist.r_nduplist = nduplist; - if (nlist == nduplist) - map->l_searchlist.r_duplist = map->l_searchlist.r_list; - else - { - unsigned int cnt; - - map->l_searchlist.r_duplist = map->l_searchlist.r_list + nlist; - - for (cnt = 0, runp = known; runp; runp = runp->dup) - if (trace_mode && runp->map->l_faked) - /* This can happen when we trace the loading. */ - --map->l_searchlist.r_nduplist; - else - map->l_searchlist.r_duplist[cnt++] = runp->map; - } - /* Now determine the order in which the initialization has to happen. */ memcpy (map->l_initfini, map->l_searchlist.r_list, nlist * sizeof (struct link_map *)); @@ -582,5 +549,5 @@ out: if (errno_reason) _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, - errstring ?: "", N_("cannot load shared object file")); + objname, errstring); } diff -durpN glibc-2.2.3/elf/dl-dst.h glibc-2.2.4/elf/dl-dst.h --- glibc-2.2.3/elf/dl-dst.h Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-dst.h Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Determine the number of DST elements in the name. Only if IS_PATH is nonzero paths are recognized (i.e., multiple, ':' separated filenames). */ diff -durpN glibc-2.2.3/elf/dl-error.c glibc-2.2.4/elf/dl-error.c --- glibc-2.2.3/elf/dl-error.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-error.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -71,6 +71,8 @@ _dl_signal_error (int errcode, const cha errstring = N_("DYNAMIC LINKER BUG!!!"); lcatch = tsd_getspecific (); + if (objname == NULL) + objname = ""; if (lcatch != NULL) { /* We are inside _dl_catch_error. Return to it. We have to @@ -100,7 +102,7 @@ _dl_signal_error (int errcode, const cha _dl_fatal_printf ("\ %s: error while loading shared libraries: %s%s%s%s%s\n", _dl_argv[0] ?: "", - objname ?: "", objname && *objname ? ": " : "", + objname, *objname ? ": " : "", errstring, errcode ? ": " : "", (errcode ? __strerror_r (errcode, buffer, sizeof buffer) diff -durpN glibc-2.2.3/elf/dl-fini.c glibc-2.2.4/elf/dl-fini.c --- glibc-2.2.3/elf/dl-fini.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-fini.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/dl-init.c glibc-2.2.4/elf/dl-init.c --- glibc-2.2.3/elf/dl-init.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-init.c Mon Jul 23 10:53:38 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/dl-iteratephdr.c glibc-2.2.4/elf/dl-iteratephdr.c --- glibc-2.2.3/elf/dl-iteratephdr.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/elf/dl-iteratephdr.c Wed Jul 25 13:42:47 2001 @@ -0,0 +1,61 @@ +/* Get loaded objects program headers. + Copyright (C) 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2001. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include +#include +#include +#include + +__libc_lock_define (extern, _dl_load_lock) + +int +__dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, + size_t size, void *data), void *data) +{ + struct link_map *l; + struct dl_phdr_info info; + int ret = 0; + + /* Make sure we are alone. */ + __libc_lock_lock (_dl_load_lock); + + for (l = _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; + info.dlpi_phnum = l->l_phnum; + ret = callback (&info, sizeof (struct dl_phdr_info), data); + if (ret) + break; + } + + /* Release the lock. */ + __libc_lock_unlock (_dl_load_lock); + + return ret; +} + +#ifdef SHARED +weak_alias (__dl_iterate_phdr, dl_iterate_phdr); +#endif diff -durpN glibc-2.2.3/elf/dl-libc.c glibc-2.2.4/elf/dl-libc.c --- glibc-2.2.3/elf/dl-libc.c Sat Jan 13 10:48:47 2001 +++ glibc-2.2.4/elf/dl-libc.c Mon Jul 23 10:53:38 2001 @@ -4,19 +4,19 @@ Contributed by Zack Weinberg , 1999. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/dl-load.c glibc-2.2.4/elf/dl-load.c --- glibc-2.2.3/elf/dl-load.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-load.c Sat Aug 11 18:28:49 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -180,8 +180,8 @@ _dl_dst_count (const char *name, int is_ { size_t len = 1; - /* $ORIGIN is not expanded for SUID/GUID programs and it must - always appear first in path. + /* $ORIGIN is not expanded for SUID/GUID programs (except if it + is $ORIGIN alone) and it must always appear first in path. Note that it is no bug that the string in the second and fourth `strncmp' call is longer than the sequence which is @@ -192,7 +192,8 @@ _dl_dst_count (const char *name, int is_ || (is_path && name[7] == ':')) && (len = 7) != 0))) { - if (__builtin_expect (!__libc_enable_secure, 1) + if ((__builtin_expect (!__libc_enable_secure, 1) + || name[len] == '\0' || (is_path && name[len] == ':')) && (name == start || (is_path && name[-1] == ':'))) ++cnt; } @@ -241,7 +242,8 @@ _dl_dst_substitute (struct link_map *l, || (is_path && name[7] == ':')) && (len = 7) != 0))) { - if (__builtin_expect (!__libc_enable_secure, 1) + if ((__builtin_expect (!__libc_enable_secure, 1) + || name[len] == '\0' || (is_path && name[len] == ':')) && (name == start || (is_path && name[-1] == ':'))) repl = l->l_origin; } @@ -394,6 +396,35 @@ fillin_rpath (char *rpath, struct r_sear if (len > 0 && cp[len - 1] != '/') cp[len++] = '/'; + /* Make sure we don't use untrusted directories if we run SUID. */ + if (__builtin_expect (check_trusted, 0)) + { + const char *trun = system_dirs; + size_t idx; + int unsecure = 1; + + /* All trusted directories must be complete names. */ + if (cp[0] == '/') + { + for (idx = 0; idx < nsystem_dirs_len; ++idx) + { + if (len == system_dirs_len[idx] + && memcmp (trun, cp, len) == 0) + { + /* Found it. */ + unsecure = 0; + break; + } + + trun += system_dirs_len[idx] + 1; + } + } + + if (unsecure) + /* Simply drop this directory. */ + continue; + } + /* See if this directory is already known. */ for (dirp = _dl_all_dirs; dirp != NULL; dirp = dirp->next) if (dirp->dirnamelen == len && memcmp (cp, dirp->dirname, len) == 0) @@ -432,41 +463,10 @@ fillin_rpath (char *rpath, struct r_sear if (len > max_dirnamelen) max_dirnamelen = len; - /* Make sure we don't use untrusted directories if we run SUID. */ - if (__builtin_expect (check_trusted, 0)) - { - const char *trun = system_dirs; - size_t idx; - - /* By default we don't trust anything. */ - init_val = nonexisting; - - /* All trusted directories must be complete names. */ - if (cp[0] == '/') - { - for (idx = 0; idx < nsystem_dirs_len; ++idx) - { - if (len == system_dirs_len[idx] - && memcmp (trun, cp, len) == 0) - /* Found it. */ - break; - - trun += system_dirs_len[idx] + 1; - } - - if (idx < nsystem_dirs_len) - /* It's a trusted directory so allow checking for it. */ - init_val = unknown; - } - } - else - /* We don't have to check for trusted directories and can - accept everything. We have to make sure all the - relative directories are never ignored. The current - directory might change and all our saved information - would be void. */ - init_val = cp[0] != '/' ? existing : unknown; - + /* We have to make sure all the relative directories are + never ignored. The current directory might change and + all our saved information would be void. */ + init_val = cp[0] != '/' ? existing : unknown; for (cnt = 0; cnt < ncapstr; ++cnt) dirp->status[cnt] = init_val; @@ -945,7 +945,7 @@ _dl_map_object_from_fd (const char *name mapping. */ __mprotect ((caddr_t) (l->l_addr + c->mapend), loadcmds[nloadcmds - 1].allocend - c->mapend, - 0); + PROT_NONE); goto postmap; } @@ -1126,8 +1126,6 @@ _dl_map_object_from_fd (const char *name l->l_symbolic_searchlist.r_list[0] = l; l->l_symbolic_searchlist.r_nlist = 1; - l->l_symbolic_searchlist.r_duplist = l->l_symbolic_searchlist.r_list; - l->l_symbolic_searchlist.r_nduplist = 1; /* Now move the existing entries one back. */ memmove (&l->l_scope[1], &l->l_scope[0], diff -durpN glibc-2.2.3/elf/dl-lookup.c glibc-2.2.4/elf/dl-lookup.c --- glibc-2.2.3/elf/dl-lookup.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-lookup.c Mon Jul 23 10:53:39 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -75,16 +75,15 @@ __libc_lock_define (extern, _dl_load_loc without versioning. gcc is not able to optimize a single function definition serving for both purposes so we define two functions. */ #define VERSIONED 0 -#define PROTECTED 0 #include "do-lookup.h" #define VERSIONED 1 -#define PROTECTED 0 #include "do-lookup.h" /* Add extra dependency on MAP to UNDEF_MAP. */ static int +internal_function add_dependency (struct link_map *undef_map, struct link_map *map) { struct link_map **list; @@ -180,6 +179,19 @@ add_dependency (struct link_map *undef_m return result; } +static int +internal_function +_dl_do_lookup (const char *undef_name, unsigned long int hash, + const ElfW(Sym) *ref, struct sym_val *result, + struct r_scope_elem *scope, size_t i, + struct link_map *skip, int noexec, int noplt); +static int +internal_function +_dl_do_lookup_versioned (const char *undef_name, unsigned long int hash, + const ElfW(Sym) *ref, struct sym_val *result, + struct r_scope_elem *scope, size_t i, + const struct r_found_version *const version, + struct link_map *skip, int noexec, int noplt); /* Search loaded objects' symbol tables for a definition of the symbol UNDEF_NAME. */ @@ -261,8 +273,8 @@ _dl_lookup_symbol (const char *undef_nam struct sym_val protected_value = { NULL, NULL }; for (scope = symbol_scope; *scope; ++scope) - if (do_lookup (undef_name, hash, *ref, &protected_value, *scope, 0, - NULL, 0, 1)) + if (_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope, + 0, NULL, 0, 1)) break; if (protected_value.s == NULL || protected_value.m == undef_map) @@ -299,15 +311,14 @@ _dl_lookup_symbol_skip (const char *unde /* Search the relevant loaded objects for a definition. */ scope = symbol_scope; - for (i = 0; (*scope)->r_duplist[i] != skip_map; ++i) - assert (i < (*scope)->r_nduplist); + for (i = 0; (*scope)->r_list[i] != skip_map; ++i) + assert (i < (*scope)->r_nlist); - if (i >= (*scope)->r_nlist - || ! do_lookup (undef_name, hash, *ref, ¤t_value, *scope, i, - skip_map, 0, 0)) + if (! _dl_do_lookup (undef_name, hash, *ref, ¤t_value, *scope, i, + skip_map, 0, 0)) while (*++scope) - if (do_lookup (undef_name, hash, *ref, ¤t_value, *scope, 0, - skip_map, 0, 0)) + if (_dl_do_lookup (undef_name, hash, *ref, ¤t_value, *scope, 0, + skip_map, 0, 0)) break; if (__builtin_expect (current_value.s == NULL, 0)) @@ -338,11 +349,11 @@ _dl_lookup_symbol_skip (const char *unde struct sym_val protected_value = { NULL, NULL }; if (i >= (*scope)->r_nlist - || !do_lookup (undef_name, hash, *ref, &protected_value, *scope, i, - skip_map, 0, 1)) + || !_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope, + i, skip_map, 0, 1)) while (*++scope) - if (do_lookup (undef_name, hash, *ref, &protected_value, *scope, 0, - skip_map, 0, 1)) + if (_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope, + 0, skip_map, 0, 1)) break; if (protected_value.s == NULL || protected_value.m == undef_map) @@ -465,8 +476,8 @@ _dl_lookup_versioned_symbol (const char struct sym_val protected_value = { NULL, NULL }; for (scope = symbol_scope; *scope; ++scope) - if (do_lookup_versioned (undef_name, hash, *ref, &protected_value, - *scope, 0, version, NULL, 0, 1)) + if (_dl_do_lookup_versioned (undef_name, hash, *ref, &protected_value, + *scope, 0, version, NULL, 0, 1)) break; if (protected_value.s == NULL || protected_value.m == undef_map) @@ -502,15 +513,14 @@ _dl_lookup_versioned_symbol_skip (const /* Search the relevant loaded objects for a definition. */ scope = symbol_scope; - for (i = 0; (*scope)->r_duplist[i] != skip_map; ++i) - assert (i < (*scope)->r_nduplist); + for (i = 0; (*scope)->r_list[i] != skip_map; ++i) + assert (i < (*scope)->r_nlist); - if (i >= (*scope)->r_nlist - || ! do_lookup_versioned (undef_name, hash, *ref, ¤t_value, - *scope, i, version, skip_map, 0, 0)) + if (! _dl_do_lookup_versioned (undef_name, hash, *ref, ¤t_value, + *scope, i, version, skip_map, 0, 0)) while (*++scope) - if (do_lookup_versioned (undef_name, hash, *ref, ¤t_value, *scope, - 0, version, skip_map, 0, 0)) + if (_dl_do_lookup_versioned (undef_name, hash, *ref, ¤t_value, + *scope, 0, version, skip_map, 0, 0)) break; if (__builtin_expect (current_value.s == NULL, 0)) @@ -554,11 +564,13 @@ _dl_lookup_versioned_symbol_skip (const struct sym_val protected_value = { NULL, NULL }; if (i >= (*scope)->r_nlist - || !do_lookup_versioned (undef_name, hash, *ref, &protected_value, - *scope, i, version, skip_map, 0, 1)) + || !_dl_do_lookup_versioned (undef_name, hash, *ref, + &protected_value, *scope, i, version, + skip_map, 0, 1)) while (*++scope) - if (do_lookup_versioned (undef_name, hash, *ref, &protected_value, - *scope, 0, version, skip_map, 0, 1)) + if (_dl_do_lookup_versioned (undef_name, hash, *ref, + &protected_value, *scope, 0, version, + skip_map, 0, 1)) break; if (protected_value.s == NULL || protected_value.m == undef_map) @@ -590,4 +602,29 @@ _dl_setup_hash (struct link_map *map) map->l_buckets = hash; hash += map->l_nbuckets; map->l_chain = hash; +} + +/* These are here so that we only inline do_lookup{,_versioned} in the common + case, not everywhere. */ +static int +internal_function +_dl_do_lookup (const char *undef_name, unsigned long int hash, + const ElfW(Sym) *ref, struct sym_val *result, + struct r_scope_elem *scope, size_t i, + struct link_map *skip, int noexec, int noplt) +{ + return do_lookup (undef_name, hash, ref, result, scope, i, skip, noexec, + noplt); +} + +static int +internal_function +_dl_do_lookup_versioned (const char *undef_name, unsigned long int hash, + const ElfW(Sym) *ref, struct sym_val *result, + struct r_scope_elem *scope, size_t i, + const struct r_found_version *const version, + struct link_map *skip, int noexec, int noplt) +{ + return do_lookup_versioned (undef_name, hash, ref, result, scope, i, + version, skip, noexec, noplt); } diff -durpN glibc-2.2.3/elf/dl-minimal.c glibc-2.2.4/elf/dl-minimal.c --- glibc-2.2.3/elf/dl-minimal.c Thu Apr 12 14:02:01 2001 +++ glibc-2.2.4/elf/dl-minimal.c Mon Jul 23 10:53:39 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/dl-misc.c glibc-2.2.4/elf/dl-misc.c --- glibc-2.2.3/elf/dl-misc.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-misc.c Mon Jul 23 10:53:39 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/dl-object.c glibc-2.2.4/elf/dl-object.c --- glibc-2.2.3/elf/dl-object.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-object.c Mon Jul 23 10:53:39 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/dl-open.c glibc-2.2.4/elf/dl-open.c --- glibc-2.2.3/elf/dl-open.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-open.c Sat Aug 11 18:28:49 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -156,7 +156,6 @@ add_to_global (struct link_map *new) } } - /* XXX Do we have to add something to r_dupsearchlist??? --drepper */ return 0; } @@ -188,13 +187,10 @@ dl_open_worker (void *a) _dl_signal_error (0, "dlopen", N_("DST not allowed in SUID/SGID programs")); - /* We have to find out from which object the caller is calling. - Find the highest-addressed object that ADDRESS is not below. */ + /* We have to find out from which object the caller is calling. */ call_map = NULL; for (l = _dl_loaded; l; l = l->l_next) - if (l->l_addr != 0 /* Make sure we do not currently set this map up - in this moment. */ - && caller >= (const void *) l->l_map_start + if (caller >= (const void *) l->l_map_start && caller < (const void *) l->l_map_end) { /* There must be exactly one DSO for the range of the virtual diff -durpN glibc-2.2.3/elf/dl-profile.c glibc-2.2.4/elf/dl-profile.c --- glibc-2.2.3/elf/dl-profile.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-profile.c Mon Jul 23 10:53:40 2001 @@ -5,19 +5,19 @@ Based on the BSD mcount implementation. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -438,6 +438,9 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr #if 0 /* XXX I think this is now not necessary anymore. */ if (! compare_and_swap (&state, GMON_PROF_ON, GMON_PROF_BUSY)) + return; +#else + if (state != GMON_PROF_ON) return; #endif diff -durpN glibc-2.2.3/elf/dl-profstub.c glibc-2.2.4/elf/dl-profstub.c --- glibc-2.2.3/elf/dl-profstub.c Wed Aug 2 14:51:59 2000 +++ glibc-2.2.4/elf/dl-profstub.c Mon Jul 23 10:53:40 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/dl-reloc.c glibc-2.2.4/elf/dl-reloc.c --- glibc-2.2.3/elf/dl-reloc.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-reloc.c Sat Aug 11 18:28:49 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -91,7 +91,7 @@ cannot make segment writable for relocat #include "dynamic-link.h" ELF_DYNAMIC_RELOCATE (l, lazy, consider_profiling); - if (__builtin_expect (_dl_profile != NULL, 0)) + if (__builtin_expect (consider_profiling, 0)) { /* Allocate the array which will contain the already found relocations. If the shared object lacks a PLT (for example diff -durpN glibc-2.2.3/elf/dl-runtime.c glibc-2.2.4/elf/dl-runtime.c --- glibc-2.2.3/elf/dl-runtime.c Thu Aug 31 14:44:57 2000 +++ glibc-2.2.4/elf/dl-runtime.c Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/dl-support.c glibc-2.2.4/elf/dl-support.c --- glibc-2.2.3/elf/dl-support.c Wed Apr 25 14:50:58 2001 +++ glibc-2.2.4/elf/dl-support.c Fri Jul 27 23:13:13 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This file defines some things that for the dynamic linker are defined in rtld.c and dl-sysdep.c in ways appropriate to bootstrap dynamic linking. */ @@ -187,16 +187,12 @@ internal_function _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz, size_t *max_capstrlen) { - struct r_strlenpair *result; - - /* XXX We don't try to find the capabilities in this case. */ - result = (struct r_strlenpair *) malloc (sizeof (*result)); - if (result == NULL) - _dl_signal_error (ENOMEM, NULL, N_("cannot create capability list")); + static struct r_strlenpair result; + static char buf[1]; - result[0].str = (char *) result; /* Does not really matter. */ - result[0].len = 0; + result.str = buf; /* Does not really matter. */ + result.len = 0; *sz = 1; - return result; + return &result; } diff -durpN glibc-2.2.3/elf/dl-sym.c glibc-2.2.4/elf/dl-sym.c --- glibc-2.2.3/elf/dl-sym.c Thu Oct 26 22:57:22 2000 +++ glibc-2.2.4/elf/dl-sym.c Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -41,7 +41,7 @@ _dl_sym (void *handle, const char *name, /* Find the highest-addressed object that CALLER is not below. */ for (l = _dl_loaded; l != NULL; l = l->l_next) - if (l->l_addr != 0 && caller >= l->l_map_start && caller < l->l_map_end) + 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. */ @@ -65,8 +65,13 @@ _dl_sym (void *handle, const char *name, else { if (__builtin_expect (match == _dl_loaded, 0)) - _dl_signal_error (0, NULL, N_("\ + { + if (! _dl_loaded + || caller < _dl_loaded->l_map_start + || caller >= _dl_loaded->l_map_end) + _dl_signal_error (0, NULL, N_("\ RTLD_NEXT used in code not dynamically loaded")); + } l = match; while (l->l_loader != NULL) @@ -107,7 +112,7 @@ _dl_vsym (void *handle, const char *name /* Find the highest-addressed object that CALLER is not below. */ for (l = _dl_loaded; l != NULL; l = l->l_next) - if (l->l_addr != 0 && caller >= l->l_map_start && caller < l->l_map_end) + 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. */ @@ -121,9 +126,14 @@ _dl_vsym (void *handle, const char *name &vers, 0, 0); else if (handle == RTLD_NEXT) { - if (match == _dl_loaded) - _dl_signal_error (0, NULL, N_("\ + if (__builtin_expect (match == _dl_loaded, 0)) + { + if (! _dl_loaded + || caller < _dl_loaded->l_map_start + || caller >= _dl_loaded->l_map_end) + _dl_signal_error (0, NULL, N_("\ RTLD_NEXT used in code not dynamically loaded")); + } l = match; while (l->l_loader != NULL) diff -durpN glibc-2.2.3/elf/dl-symbol.c glibc-2.2.4/elf/dl-symbol.c --- glibc-2.2.3/elf/dl-symbol.c Thu Aug 31 14:44:57 2000 +++ glibc-2.2.4/elf/dl-symbol.c Wed Dec 31 16:00:00 1969 @@ -1,33 +0,0 @@ -/* Look up a symbol's run-time value in the scope of a loaded object. - Copyright (C) 1995, 96, 98, 99, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include -#include - -/* Look up symbol NAME in MAP's scope and return its run-time address. */ - -ElfW(Addr) -internal_function -_dl_symbol_value (struct link_map *map, const char *name) -{ - const ElfW(Sym) *ref = NULL; - lookup_t result; - result = _dl_lookup_symbol (name, map, &ref, map->l_local_scope, 0, 1); - return (result ? LOOKUP_VALUE_ADDRESS (result) : 0) + ref->st_value; -} diff -durpN glibc-2.2.3/elf/dl-version.c glibc-2.2.4/elf/dl-version.c --- glibc-2.2.3/elf/dl-version.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/dl-version.c Mon Jul 23 10:53:40 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/do-lookup.h glibc-2.2.4/elf/do-lookup.h --- glibc-2.2.3/elf/do-lookup.h Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/do-lookup.h Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #if VERSIONED # define FCT do_lookup_versioned diff -durpN glibc-2.2.3/elf/do-rel.h glibc-2.2.4/elf/do-rel.h --- glibc-2.2.3/elf/do-rel.h Fri Jun 9 12:17:33 2000 +++ glibc-2.2.4/elf/do-rel.h Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This file may be included twice, to define both `elf_dynamic_do_rel' and `elf_dynamic_do_rela'. */ diff -durpN glibc-2.2.3/elf/dynamic-link.h glibc-2.2.4/elf/dynamic-link.h --- glibc-2.2.3/elf/dynamic-link.h Wed Aug 2 14:51:59 2000 +++ glibc-2.2.4/elf/dynamic-link.h Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/elf.h glibc-2.2.4/elf/elf.h --- glibc-2.2.3/elf/elf.h Wed Apr 25 14:50:58 2001 +++ glibc-2.2.4/elf/elf.h Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _ELF_H #define _ELF_H 1 @@ -235,7 +235,10 @@ typedef struct #define EM_MN10300 89 /* Matsushita MN10300 */ #define EM_MN10200 90 /* Matsushita MN10200 */ #define EM_PJ 91 /* picoJava */ -#define EM_NUM 92 +#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */ +#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */ +#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */ +#define EM_NUM 95 /* If it is necessary to assign new unofficial EM_* values, please pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the @@ -663,7 +666,12 @@ typedef struct If any adjustment is made to the ELF object after it has been built these entries will need to be adjusted. */ #define DT_ADDRRNGLO 0x6ffffe00 -#define DT_SYMINFO 0x6ffffeff /* syminfo table */ +#define DT_CONFIG 0x6ffffefa /* Configuration information. */ +#define DT_DEPAUDIT 0x6ffffefb /* Dependency auditing. */ +#define DT_AUDIT 0x6ffffefc /* Object auditing. */ +#define DT_PLTPAD 0x6ffffefd /* PLT padding. */ +#define DT_MOVETAB 0x6ffffefe /* Move table. */ +#define DT_SYMINFO 0x6ffffeff /* Syminfo table. */ #define DT_ADDRRNGHI 0x6ffffeff /* The versioning entry types. The next are defined as part of the @@ -711,9 +719,11 @@ typedef struct #define DF_1_TRANS 0x00000200 #define DF_1_INTERPOSE 0x00000400 /* Object is used to interpose. */ #define DF_1_NODEFLIB 0x00000800 /* Ignore default lib search path. */ -#define DF_1_NODUMP 0x00001000 -#define DF_1_CONFALT 0x00002000 -#define DF_1_ENDFILTEE 0x00004000 +#define DF_1_NODUMP 0x00001000 /* Object can't be dldump'ed. */ +#define DF_1_CONFALT 0x00002000 /* Configuration alternative created.*/ +#define DF_1_ENDFILTEE 0x00004000 /* Filtee terminates filters search. */ +#define DF_1_DISPRELDNE 0x00008000 /* Disp reloc applied at build time. */ +#define DF_1_DISPRELPND 0x00010000 /* Disp reloc applied at run-time. */ /* Flags for the feature selection in DT_FEATURE_1. */ #define DTF_1_PARINIT 0x00000001 @@ -759,6 +769,12 @@ typedef struct /* Legal values for vd_flags (version information flags). */ #define VER_FLG_BASE 0x1 /* Version definition of file itself */ #define VER_FLG_WEAK 0x2 /* Weak version identifier */ + +/* Versym symbol index values. */ +#define VER_NDX_LOCAL 0 /* Symbol is local. */ +#define VER_NDX_GLOBAL 1 /* Symbol is global. */ +#define VER_NDX_LORESERVE 0xff00 /* Beginning of reserved entries. */ +#define VER_NDX_ELIMINATE 0xff01 /* Symbol is to be eliminated. */ /* Auxialiary version information. */ diff -durpN glibc-2.2.3/elf/interp.c glibc-2.2.4/elf/interp.c --- glibc-2.2.3/elf/interp.c Fri May 8 18:07:27 1998 +++ glibc-2.2.4/elf/interp.c Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp"))) = RUNTIME_LINKER; diff -durpN glibc-2.2.3/elf/ldconfig.c glibc-2.2.4/elf/ldconfig.c --- glibc-2.2.3/elf/ldconfig.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/ldconfig.c Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ Contributed by Andreas Jaeger , 1999. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -66,6 +67,8 @@ struct dir_entry { char *path; int flag; + ino64_t ino; + dev_t dev; struct dir_entry *next; }; @@ -75,10 +78,10 @@ static struct dir_entry *dir_entries; /* Flags for different options. */ /* Print Cache. */ -static int opt_print_cache = 0; +static int opt_print_cache; /* Be verbose. */ -int opt_verbose = 0; +int opt_verbose; /* Format to support. */ /* 0: only libc5/glibc2; 1: both; 2: only glibc 2.2. */ @@ -91,13 +94,13 @@ static int opt_build_cache = 1; static int opt_link = 1; /* Only process directories specified on the command line. */ -static int opt_only_cline = 0; +static int opt_only_cline; /* Path to root for chroot. */ static char *opt_chroot; /* Manually link given shared libraries. */ -static int opt_manual_link = 0; +static int opt_manual_link; /* Cache file to use. */ static char *cache_file; @@ -105,6 +108,9 @@ static char *cache_file; /* Configuration file. */ static const char *config_file; +/* Mask to use for important hardware capabilities. */ +static unsigned long int hwcap_mask = HWCAP_IMPORTANT; + /* Name and version of program. */ static void print_version (FILE *stream, struct argp_state *state); void (*argp_program_version_hook) (FILE *, struct argp_state *) @@ -145,7 +151,7 @@ is_hwcap_platform (const char *name) { int hwcap_idx = _dl_string_hwcap (name); - if (hwcap_idx != -1 && ((1 << hwcap_idx) & HWCAP_IMPORTANT)) + if (hwcap_idx != -1 && ((1 << hwcap_idx) & hwcap_mask)) return 1; hwcap_idx = _dl_string_platform (name); @@ -270,12 +276,13 @@ add_single_dir (struct dir_entry *entry, while (ptr != NULL) { /* Check for duplicates. */ - if (strcmp (ptr->path, entry->path) == 0) + if (ptr->ino == entry->ino && ptr->dev == entry->dev) { if (opt_verbose && verbose) error (0, 0, _("Path `%s' given more than once"), entry->path); /* Use the newer information. */ ptr->flag = entry->flag; + free (entry->path); free (entry); break; } @@ -296,6 +303,7 @@ add_dir (const char *line) char *equal_sign; struct dir_entry *entry; unsigned int i; + struct stat64 stat_buf; entry = xmalloc (sizeof (struct dir_entry)); entry->next = NULL; @@ -330,7 +338,19 @@ add_dir (const char *line) --i; } - add_single_dir (entry, 1); + if (stat64 (entry->path, &stat_buf)) + { + if (opt_verbose) + error (0, errno, _("Can't stat %s"), entry->path); + free (entry->path); + free (entry); + return; + } + + entry->ino = stat_buf.st_ino; + entry->dev = stat_buf.st_dev; + + add_single_dir (entry, 1); } @@ -577,8 +597,8 @@ search_dir (const struct dir_entry *entr char *soname; struct dlib_entry *dlibs; struct dlib_entry *dlib_ptr; - struct stat64 stat_buf; - int is_link; + struct stat64 lstat_buf, stat_buf; + int is_link, is_dir; uint64_t hwcap = path_hwcap (entry->path); unsigned int osversion; @@ -634,7 +654,11 @@ search_dir (const struct dir_entry *entr if (((strncmp (direntry->d_name, "lib", 3) != 0 && strncmp (direntry->d_name, "ld-", 3) != 0) || strstr (direntry->d_name, ".so") == NULL) - && !is_hwcap_platform (direntry->d_name)) + && ( +#ifdef _DIRENT_HAVE_D_TYPE + direntry->d_type == DT_REG || +#endif + !is_hwcap_platform (direntry->d_name))) continue; len = strlen (entry->path) + strlen (direntry->d_name); if (len > file_name_len) @@ -657,16 +681,32 @@ search_dir (const struct dir_entry *entr } #ifdef _DIRENT_HAVE_D_TYPE if (direntry->d_type != DT_UNKNOWN) - stat_buf.st_mode = DTTOIF (direntry->d_type); + lstat_buf.st_mode = DTTOIF (direntry->d_type); else #endif - if (lstat64 (real_file_name, &stat_buf)) + if (__builtin_expect (lstat64 (real_file_name, &lstat_buf), 0)) { - error (0, errno, _("Can't lstat %s"), file_name); + error (0, errno, _("Cannot lstat %s"), file_name); continue; } - if (S_ISDIR (stat_buf.st_mode) && is_hwcap_platform (direntry->d_name)) + is_link = S_ISLNK (lstat_buf.st_mode); + if (is_link) + { + /* In case of symlink, we check if the symlink refers to + a directory. */ + if (__builtin_expect (stat64 (real_file_name, &stat_buf), 0)) + { + if (opt_verbose) + error (0, errno, _("Cannot stat %s"), file_name); + continue; + } + is_dir = S_ISDIR (stat_buf.st_mode); + } + else + is_dir = S_ISDIR (lstat_buf.st_mode); + + if (is_dir && is_hwcap_platform (direntry->d_name)) { /* Handle subdirectory later. */ struct dir_entry *new_entry; @@ -675,13 +715,36 @@ search_dir (const struct dir_entry *entr new_entry->path = xstrdup (file_name); new_entry->flag = entry->flag; new_entry->next = NULL; + if (is_link) + { + new_entry->ino = stat_buf.st_ino; + new_entry->dev = stat_buf.st_dev; + } + else + { +#ifdef _DIRENT_HAVE_D_TYPE + /* We have filled in lstat only #ifndef + _DIRENT_HAVE_D_TYPE. Fill it in if needed. */ + if (direntry->d_type != DT_UNKNOWN + && __builtin_expect (lstat64 (real_file_name, &lstat_buf), + 0)) + { + error (0, errno, _("Cannot lstat %s"), file_name); + free (new_entry->path); + free (new_entry); + continue; + } +#endif + + new_entry->ino = lstat_buf.st_ino; + new_entry->dev = lstat_buf.st_dev; + } add_single_dir (new_entry, 0); continue; } - else if (!S_ISREG (stat_buf.st_mode) && !S_ISLNK (stat_buf.st_mode)) + else if (!S_ISREG (lstat_buf.st_mode) && !is_link) continue; - is_link = S_ISLNK (stat_buf.st_mode); if (opt_chroot && is_link) { real_name = chroot_canon (opt_chroot, file_name); @@ -864,6 +927,9 @@ parse_conf (const char *filename) return; } + /* No threads use this stream. */ + __fsetlocking (file, FSETLOCKING_BYCALLER); + if (canon != filename) free ((char *) canon); @@ -893,6 +959,16 @@ parse_conf (const char *filename) fclose (file); } +/* Honour LD_HWCAP_MASK. */ +static void +set_hwcap (void) +{ + char *mask = getenv ("LD_HWCAP_MASK"); + + if (mask) + hwcap_mask = strtoul (mask, NULL, 0); +} + int main (int argc, char **argv) @@ -910,6 +986,8 @@ main (int argc, char **argv) for (i = remaining; i < argc; ++i) add_dir (argv[i]); } + + set_hwcap (); if (opt_chroot) { diff -durpN glibc-2.2.3/elf/ldd.bash.in glibc-2.2.4/elf/ldd.bash.in --- glibc-2.2.3/elf/ldd.bash.in Mon Oct 4 18:17:18 1999 +++ glibc-2.2.4/elf/ldd.bash.in Mon Jul 23 10:53:40 2001 @@ -1,22 +1,21 @@ #! @BASH@ - # Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # This is the `ldd' command, which lists what shared libraries are diff -durpN glibc-2.2.3/elf/link.h glibc-2.2.4/elf/link.h --- glibc-2.2.3/elf/link.h Tue Jun 13 13:17:34 2000 +++ glibc-2.2.4/elf/link.h Fri Jul 27 23:13:13 2001 @@ -1,22 +1,22 @@ /* Data structure for communication from the run-time dynamic linker for loaded ELF shared objects. - Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _LINK_H #define _LINK_H 1 @@ -91,5 +91,25 @@ struct link_map ElfW(Dyn) *l_ld; /* Dynamic section of the shared object. */ struct link_map *l_next, *l_prev; /* Chain of loaded objects. */ }; + +#ifdef __USE_GNU + +struct dl_phdr_info + { + ElfW(Addr) dlpi_addr; + const char *dlpi_name; + const ElfW(Phdr) *dlpi_phdr; + ElfW(Half) dlpi_phnum; + }; + +__BEGIN_DECLS + +extern int dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, + size_t size, void *data), + void *data) __THROW; + +__END_DECLS + +#endif #endif /* link.h */ diff -durpN glibc-2.2.3/elf/readlib.c glibc-2.2.4/elf/readlib.c --- glibc-2.2.3/elf/readlib.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/readlib.c Mon Jul 23 10:53:40 2001 @@ -4,19 +4,19 @@ Jakub Jelinek , 1999. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* The code in this file and in readelflib is a heavily simplified version of the readelf program that's part of the current binutils diff -durpN glibc-2.2.3/elf/reldep4.c glibc-2.2.4/elf/reldep4.c --- glibc-2.2.3/elf/reldep4.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/elf/reldep4.c Tue May 22 16:53:38 2001 @@ -0,0 +1,40 @@ +#include +#include +#include +#include + +int +main() +{ + int i; + void *h1, *h2; + + mtrace (); + + for (i = 0; i < 3; i++) + { + h1 = dlopen ("reldep4mod1.so", RTLD_NOW | RTLD_GLOBAL); + if (h1 == NULL) + { + printf ("cannot open reldep4mod1.so: %s\n", dlerror ()); + exit (1); + } + h2 = dlopen ("reldep4mod2.so", RTLD_NOW | RTLD_GLOBAL); + if (h2 == NULL) + { + printf ("cannot open reldep4mod2.so: %s\n", dlerror ()); + exit (1); + } + if (dlclose (h1) != 0) + { + printf ("closing h1 failed: %s\n", dlerror ()); + exit (1); + } + if (dlclose (h2) != 0) + { + printf ("closing h2 failed: %s\n", dlerror ()); + exit (1); + } + } + return 0; +} diff -durpN glibc-2.2.3/elf/reldep4mod1.c glibc-2.2.4/elf/reldep4mod1.c --- glibc-2.2.3/elf/reldep4mod1.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/elf/reldep4mod1.c Tue May 22 16:53:54 2001 @@ -0,0 +1,7 @@ +int foo (void); + +int foo (void) +{ + return 0; +} + diff -durpN glibc-2.2.3/elf/reldep4mod2.c glibc-2.2.4/elf/reldep4mod2.c --- glibc-2.2.3/elf/reldep4mod2.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/elf/reldep4mod2.c Fri Jun 22 06:50:29 2001 @@ -0,0 +1,8 @@ +extern int foo (void); +extern int bar (void); + +int +bar (void) +{ + return foo (); +} diff -durpN glibc-2.2.3/elf/reldep4mod3.c glibc-2.2.4/elf/reldep4mod3.c --- glibc-2.2.3/elf/reldep4mod3.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/elf/reldep4mod3.c Tue May 22 16:53:54 2001 @@ -0,0 +1,7 @@ +int foo (void); + +int foo (void) +{ + return 0; +} + diff -durpN glibc-2.2.3/elf/reldep4mod4.c glibc-2.2.4/elf/reldep4mod4.c --- glibc-2.2.3/elf/reldep4mod4.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/elf/reldep4mod4.c Fri Jun 22 06:50:29 2001 @@ -0,0 +1,8 @@ +extern int foo (void); +extern int bar (void); + +int +bar (void) +{ + return foo (); +} diff -durpN glibc-2.2.3/elf/restest2.c glibc-2.2.4/elf/restest2.c --- glibc-2.2.3/elf/restest2.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/elf/restest2.c Tue May 22 14:21:31 2001 @@ -0,0 +1,33 @@ +#include +#include +#include +#include +#include +#include + +pid_t pid, pid2; + +pid_t getpid(void) +{ + pid_t (*f)(void); + f = (pid_t (*)(void)) dlsym (RTLD_NEXT, "getpid"); + if (f == NULL) + error (EXIT_FAILURE, 0, "dlsym (RTLD_NEXT, \"getpid\"): %s", dlerror ()); + return (pid2 = f()) + 26; +} + +int +main (void) +{ + pid_t (*f)(void); + + mtrace (); + + f = (pid_t (*)(void)) dlsym (RTLD_DEFAULT, "getpid"); + if (f == NULL) + error (EXIT_FAILURE, 0, "dlsym (RTLD_DEFAULT, \"getpid\"): %s", dlerror ()); + pid = f(); + if (pid != pid2 + 26) + error (EXIT_FAILURE, 0, "main getpid() not called"); + return 0; +} diff -durpN glibc-2.2.3/elf/rtld.c glibc-2.2.4/elf/rtld.c --- glibc-2.2.3/elf/rtld.c Thu Apr 12 14:02:01 2001 +++ glibc-2.2.4/elf/rtld.c Sat Aug 11 18:28:49 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -157,7 +157,7 @@ _dl_start (void *arg) HP_TIMING_NOW (start_time); /* Partly clean the `bootstrap_map' structure up. Don't use `memset' - since it might nor be built in or inlined and we cannot make function + since it might not be built in or inlined and we cannot make function calls at this point. */ for (cnt = 0; cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]); @@ -228,6 +228,7 @@ _dl_start_final (void *arg, struct link_ memcpy (_dl_rtld_map.l_info, bootstrap_map_p->l_info, sizeof _dl_rtld_map.l_info); _dl_setup_hash (&_dl_rtld_map); + _dl_rtld_map.l_mach = bootstrap_map_p->l_mach; /* Don't bother trying to work out how ld.so is mapped in memory. */ _dl_rtld_map.l_map_start = ~0; @@ -542,8 +543,7 @@ of this helper program; chances are you information for the program. */ } - /* It is not safe to load stuff after the main program. */ - _dl_loaded->l_map_end = ~0; + _dl_loaded->l_map_end = 0; /* Perhaps the executable has no PT_LOAD header entries at all. */ _dl_loaded->l_map_start = ~0; @@ -591,15 +591,24 @@ of this helper program; chances are you has_interp = 1; break; case PT_LOAD: - /* Remember where the main program starts in memory. */ { ElfW(Addr) mapstart; + ElfW(Addr) allocend; + + /* Remember where the main program starts in memory. */ mapstart = _dl_loaded->l_addr + (ph->p_vaddr & ~(ph->p_align - 1)); if (_dl_loaded->l_map_start > mapstart) _dl_loaded->l_map_start = mapstart; + + /* Also where it ends. */ + allocend = _dl_loaded->l_addr + ph->p_vaddr + ph->p_memsz; + if (_dl_loaded->l_map_end < allocend) + _dl_loaded->l_map_end = allocend; } break; } + if (! _dl_loaded->l_map_end) + _dl_loaded->l_map_end = ~0; if (! _dl_rtld_map.l_libname && _dl_rtld_map.l_name) { /* We were invoked directly, so the program might not have a @@ -814,7 +823,7 @@ of this helper program; chances are you if (_dl_rtld_map.l_next) _dl_rtld_map.l_next->l_prev = _dl_rtld_map.l_prev; - if (__builtin_expect (_dl_rtld_map.l_opencount, 2) > 1) + if (__builtin_expect (_dl_rtld_map.l_opencount > 1, 1)) { /* Some DT_NEEDED entry referred to the interpreter object itself, so put it back in the list of visible objects. We insert it into the @@ -1273,10 +1282,12 @@ warning: debug option `%s' unknown; try /* Process all environments variables the dynamic linker must recognize. Since all of them start with `LD_' we are a bit smarter while finding all the entries. */ +extern char **_environ; + static void process_envvars (enum mode *modep) { - char **runp = NULL; + char **runp = _environ; char *envline; enum mode mode = normal; char *debug_output = NULL; @@ -1292,98 +1303,98 @@ process_envvars (enum mode *modep) /* This is a "LD_" variable at the end of the string without a '=' character. Ignore it since otherwise we will access invalid memory below. */ - break; + continue; - switch (len - 3) + switch (len) { case 4: /* Warning level, verbose or not. */ - if (memcmp (&envline[3], "WARN", 4) == 0) - _dl_verbose = envline[8] != '\0'; + if (memcmp (envline, "WARN", 4) == 0) + _dl_verbose = envline[5] != '\0'; break; case 5: /* Debugging of the dynamic linker? */ - if (memcmp (&envline[3], "DEBUG", 5) == 0) - process_dl_debug (&envline[9]); + if (memcmp (envline, "DEBUG", 5) == 0) + process_dl_debug (&envline[6]); break; case 7: /* Print information about versions. */ - if (memcmp (&envline[3], "VERBOSE", 7) == 0) + if (memcmp (envline, "VERBOSE", 7) == 0) { - version_info = envline[11] != '\0'; + version_info = envline[8] != '\0'; break; } /* List of objects to be preloaded. */ - if (memcmp (&envline[3], "PRELOAD", 7) == 0) + if (memcmp (envline, "PRELOAD", 7) == 0) { - preloadlist = &envline[11]; + preloadlist = &envline[8]; break; } /* Which shared object shall be profiled. */ - if (memcmp (&envline[3], "PROFILE", 7) == 0) - _dl_profile = &envline[11]; + if (memcmp (envline, "PROFILE", 7) == 0) + _dl_profile = &envline[8]; break; case 8: /* Do we bind early? */ - if (memcmp (&envline[3], "BIND_NOW", 8) == 0) + if (memcmp (envline, "BIND_NOW", 8) == 0) { - _dl_lazy = envline[12] == '\0'; + _dl_lazy = envline[9] == '\0'; break; } - if (memcmp (&envline[3], "BIND_NOT", 8) == 0) - _dl_bind_not = envline[12] != '\0'; + if (memcmp (envline, "BIND_NOT", 8) == 0) + _dl_bind_not = envline[9] != '\0'; break; case 9: /* Test whether we want to see the content of the auxiliary array passed up from the kernel. */ - if (memcmp (&envline[3], "SHOW_AUXV", 9) == 0) + if (memcmp (envline, "SHOW_AUXV", 9) == 0) _dl_show_auxv (); break; case 10: /* Mask for the important hardware capabilities. */ - if (memcmp (&envline[3], "HWCAP_MASK", 10) == 0) - _dl_hwcap_mask = __strtoul_internal (&envline[14], NULL, 0, 0); + if (memcmp (envline, "HWCAP_MASK", 10) == 0) + _dl_hwcap_mask = __strtoul_internal (&envline[11], NULL, 0, 0); break; case 11: /* Path where the binary is found. */ if (!__libc_enable_secure - && memcmp (&envline[3], "ORIGIN_PATH", 11) == 0) - _dl_origin_path = &envline[15]; + && memcmp (envline, "ORIGIN_PATH", 11) == 0) + _dl_origin_path = &envline[12]; break; case 12: /* The library search path. */ - if (memcmp (&envline[3], "LIBRARY_PATH", 12) == 0) + if (memcmp (envline, "LIBRARY_PATH", 12) == 0) { - library_path = &envline[16]; + library_path = &envline[13]; break; } /* Where to place the profiling data file. */ - if (memcmp (&envline[3], "DEBUG_OUTPUT", 12) == 0) + if (memcmp (envline, "DEBUG_OUTPUT", 12) == 0) { - debug_output = &envline[16]; + debug_output = &envline[13]; break; } - if (memcmp (&envline[3], "DYNAMIC_WEAK", 12) == 0) + if (memcmp (envline, "DYNAMIC_WEAK", 12) == 0) _dl_dynamic_weak = 1; break; case 14: /* Where to place the profiling data file. */ if (!__libc_enable_secure - && memcmp (&envline[3], "PROFILE_OUTPUT", 14) == 0) + && memcmp (envline, "PROFILE_OUTPUT", 14) == 0) { - _dl_profile_output = &envline[18]; + _dl_profile_output = &envline[15]; if (*_dl_profile_output == '\0') _dl_profile_output = "/var/tmp"; } @@ -1391,7 +1402,7 @@ process_envvars (enum mode *modep) case 20: /* The mode of the dynamic linker can be set. */ - if (memcmp (&envline[3], "TRACE_LOADED_OBJECTS", 20) == 0) + if (memcmp (envline, "TRACE_LOADED_OBJECTS", 20) == 0) mode = trace; break; diff -durpN glibc-2.2.3/elf/sln.c glibc-2.2.4/elf/sln.c --- glibc-2.2.3/elf/sln.c Mon Mar 26 20:52:49 2001 +++ glibc-2.2.4/elf/sln.c Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/sprof.c glibc-2.2.4/elf/sprof.c --- glibc-2.2.3/elf/sprof.c Sat Jan 6 20:35:12 2001 +++ glibc-2.2.4/elf/sprof.c Mon Jul 23 10:53:40 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -912,7 +912,7 @@ read_symbols (struct shobj *shobj) obstack_init (&ob_list); /* Process the symbols. */ - if (shobj->symtab) + if (shobj->symtab != NULL) { const ElfW(Sym) *sym = shobj->symtab; const ElfW(Sym) *sym_end @@ -965,7 +965,7 @@ read_symbols (struct shobj *shobj) /* We assume that the string table follows the symbol table, because there is no way in ELF to know the size of the - dynamic symbol table!! */ + dynamic symbol table without looking at the section headers. */ while ((void *) symtab < (void *) strtab) { if ((ELFW(ST_TYPE)(symtab->st_info) == STT_FUNC @@ -1006,9 +1006,9 @@ read_symbols (struct shobj *shobj) obstack_free (&shobj->ob_sym, newsym); } } - } - ++symtab; + ++symtab; + } } sortsym = malloc (n * sizeof (struct known_symbol *)); diff -durpN glibc-2.2.3/elf/tst-pathopt.sh glibc-2.2.4/elf/tst-pathopt.sh --- glibc-2.2.3/elf/tst-pathopt.sh Sun Oct 29 16:10:54 2000 +++ glibc-2.2.4/elf/tst-pathopt.sh Mon Jul 23 10:53:40 2001 @@ -3,20 +3,21 @@ # Copyright (C) 2000 Free Software Foundation, Inc. # This file is part of the GNU C Library. # + # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If -# not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. common_objpfx=$1 run_program_prefix=$2 diff -durpN glibc-2.2.3/elf/vismain.c glibc-2.2.4/elf/vismain.c --- glibc-2.2.3/elf/vismain.c Sat Jan 6 20:35:12 2001 +++ glibc-2.2.4/elf/vismain.c Mon Jul 23 10:53:40 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/elf/vismod1.c glibc-2.2.4/elf/vismod1.c --- glibc-2.2.3/elf/vismod1.c Sat Jan 6 20:35:12 2001 +++ glibc-2.2.4/elf/vismod1.c Mon Jul 23 10:53:40 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include "vismod.h" diff -durpN glibc-2.2.3/elf/vismod2.c glibc-2.2.4/elf/vismod2.c --- glibc-2.2.3/elf/vismod2.c Sat Jan 6 20:35:12 2001 +++ glibc-2.2.4/elf/vismod2.c Mon Jul 23 10:53:40 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 "vismod.h" diff -durpN glibc-2.2.3/elf/vismod3.c glibc-2.2.4/elf/vismod3.c --- glibc-2.2.3/elf/vismod3.c Sat Jan 6 20:35:12 2001 +++ glibc-2.2.4/elf/vismod3.c Mon Jul 23 10:53:40 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include "vismod.h" diff -durpN glibc-2.2.3/gmon/Makefile glibc-2.2.4/gmon/Makefile --- glibc-2.2.3/gmon/Makefile Tue Mar 27 22:27:28 2001 +++ glibc-2.2.4/gmon/Makefile Mon Jul 23 10:53:40 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Sub-makefile for gmon portion of the library. diff -durpN glibc-2.2.3/gmon/bb_exit_func.c glibc-2.2.4/gmon/bb_exit_func.c --- glibc-2.2.3/gmon/bb_exit_func.c Sat Jan 6 20:35:12 2001 +++ glibc-2.2.4/gmon/bb_exit_func.c Mon Jul 23 10:53:40 2001 @@ -1,21 +1,21 @@ -/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David Mosberger (davidm@cs.arizona.edu). The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* __bb_exit_func() dumps all the basic-block statistics linked into the __bb_head chain to .d files. */ @@ -25,6 +25,7 @@ #include #include +#include #include #define OUT_NAME "gmon.out" @@ -43,6 +44,9 @@ __bb_exit_func (void) perror (OUT_NAME); return; } + /* No threads use this stream. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); + memcpy (&ghdr.cookie[0], GMON_MAGIC, 4); memcpy (&ghdr.version, &version, sizeof (version)); fwrite_unlocked (&ghdr, sizeof (ghdr), 1, fp); diff -durpN glibc-2.2.3/gmon/sys/gmon_out.h glibc-2.2.4/gmon/sys/gmon_out.h --- glibc-2.2.3/gmon/sys/gmon_out.h Sun Aug 10 10:02:27 1997 +++ glibc-2.2.4/gmon/sys/gmon_out.h Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ Contributed by David Mosberger . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This file specifies the format of gmon.out files. It should have as few external dependencies as possible as it is going to be included diff -durpN glibc-2.2.3/gmon/sys/profil.h glibc-2.2.4/gmon/sys/profil.h --- glibc-2.2.3/gmon/sys/profil.h Tue Mar 27 22:27:28 2001 +++ glibc-2.2.4/gmon/sys/profil.h Mon Jul 23 10:53:40 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _PROFIL_H #define _PROFIL_H 1 diff -durpN glibc-2.2.3/gmon/tst-sprofil.c glibc-2.2.4/gmon/tst-sprofil.c --- glibc-2.2.3/gmon/tst-sprofil.c Wed Mar 21 12:12:28 2001 +++ glibc-2.2.4/gmon/tst-sprofil.c Mon Jul 23 10:53:40 2001 @@ -3,19 +3,19 @@ Contributed by David Mosberger-Tang . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -48,7 +48,7 @@ unsigned int bshort[5][0x100 / sizeof (i unsigned int blong[1][0x1000 / sizeof (int)]; unsigned int vlong[1][0x2000 / sizeof (int)]; -long int +static long int fac (long int n) { if (n == 0) diff -durpN glibc-2.2.3/gnulib/Makefile glibc-2.2.4/gnulib/Makefile --- glibc-2.2.3/gnulib/Makefile Wed Aug 2 14:52:01 2000 +++ glibc-2.2.4/gnulib/Makefile Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. subdir := gnulib diff -durpN glibc-2.2.3/gnulib/tst-gcc.c glibc-2.2.4/gnulib/tst-gcc.c --- glibc-2.2.3/gnulib/tst-gcc.c Tue Aug 1 17:05:41 2000 +++ glibc-2.2.4/gnulib/tst-gcc.c Mon Jul 23 10:53:41 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper . The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/grp/Makefile glibc-2.2.4/grp/Makefile --- glibc-2.2.3/grp/Makefile Wed Aug 2 14:52:01 2000 +++ glibc-2.2.4/grp/Makefile Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Sub-makefile for grp portion of the library. diff -durpN glibc-2.2.3/grp/Versions glibc-2.2.4/grp/Versions --- glibc-2.2.3/grp/Versions Mon Jul 12 16:31:04 1999 +++ glibc-2.2.4/grp/Versions Mon Jul 23 10:53:41 2001 @@ -24,4 +24,8 @@ libc { # g* getgrent_r; getgrgid_r; getgrnam_r; } + GLIBC_2.2.4 { + # g* + getgrouplist; + } } diff -durpN glibc-2.2.3/grp/fgetgrent.c glibc-2.2.4/grp/fgetgrent.c --- glibc-2.2.3/grp/fgetgrent.c Wed Aug 2 14:52:01 2000 +++ glibc-2.2.4/grp/fgetgrent.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/grp/fgetgrent_r.c glibc-2.2.4/grp/fgetgrent_r.c --- glibc-2.2.3/grp/fgetgrent_r.c Fri Apr 21 12:25:18 2000 +++ glibc-2.2.4/grp/fgetgrent_r.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/grp/getgrent.c glibc-2.2.4/grp/getgrent.c --- glibc-2.2.3/grp/getgrent.c Fri Feb 14 20:26:31 1997 +++ glibc-2.2.4/grp/getgrent.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper , 1996. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/grp/getgrent_r.c glibc-2.2.4/grp/getgrent_r.c --- glibc-2.2.3/grp/getgrent_r.c Fri Feb 14 20:26:31 1997 +++ glibc-2.2.4/grp/getgrent_r.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper , 1996. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/grp/getgrgid.c glibc-2.2.4/grp/getgrgid.c --- glibc-2.2.3/grp/getgrgid.c Fri Feb 14 20:26:32 1997 +++ glibc-2.2.4/grp/getgrgid.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper , 1996. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/grp/getgrgid_r.c glibc-2.2.4/grp/getgrgid_r.c --- glibc-2.2.3/grp/getgrgid_r.c Sat Jan 31 07:55:18 1998 +++ glibc-2.2.4/grp/getgrgid_r.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper , 1996. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/grp/getgrnam.c glibc-2.2.4/grp/getgrnam.c --- glibc-2.2.3/grp/getgrnam.c Fri Feb 14 20:26:33 1997 +++ glibc-2.2.4/grp/getgrnam.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper , 1996. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/grp/getgrnam_r.c glibc-2.2.4/grp/getgrnam_r.c --- glibc-2.2.3/grp/getgrnam_r.c Sat Jan 31 07:55:49 1998 +++ glibc-2.2.4/grp/getgrnam_r.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper , 1996. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/grp/grp.h glibc-2.2.4/grp/grp.h --- glibc-2.2.3/grp/grp.h Mon Feb 28 12:34:05 2000 +++ glibc-2.2.4/grp/grp.h Mon Jul 23 10:53:41 2001 @@ -1,20 +1,20 @@ -/* Copyright (C) 1991,92,95,96,97,98,99,2000 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,95,96,97,98,99,2000,01 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * POSIX Standard: 9.2.1 Group Database Access @@ -135,6 +135,12 @@ extern int fgetgrent_r (FILE *__restrict /* Set the group set for the current user to GROUPS (N of them). */ extern int setgroups (size_t __n, __const __gid_t *__groups) __THROW; + +/* 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. */ +extern int getgrouplist (__const char *__user, __gid_t __group, + __gid_t *__groups, int *__ngroups) __THROW; /* Initialize the group set for the current user by reading the group database and using all groups diff -durpN glibc-2.2.3/grp/initgroups.c glibc-2.2.4/grp/initgroups.c --- glibc-2.2.3/grp/initgroups.c Tue Apr 17 08:17:12 2001 +++ glibc-2.2.4/grp/initgroups.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -136,50 +136,18 @@ compat_call (service_user *nip, const ch return NSS_STATUS_SUCCESS; } -/* 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. */ -int -initgroups (user, group) - const char *user; - gid_t group; +static int +internal_getgrouplist (const char *user, gid_t group, long int *size, + gid_t **groupsp, long int limit) { -#if defined NGROUPS_MAX && NGROUPS_MAX == 0 - - /* No extra groups allowed. */ - return 0; - -#else - service_user *nip = NULL; initgroups_dyn_function fct; enum nss_status status = NSS_STATUS_UNAVAIL; int no_more; /* Start is one, because we have the first group as parameter. */ long int start = 1; - long int size; - gid_t *groups; - int result; - - /* We always use sysconf even if NGROUPS_MAX is defined. That way, the - limit can be raised in the kernel configuration without having to - recompile libc. */ - long int limit = __sysconf (_SC_NGROUPS_MAX); - - if (limit > 0) - size = limit; - else - { - /* No fixed limit on groups. Pick a starting buffer size. */ - size = 16; - } - - groups = (gid_t *) malloc (size * sizeof (gid_t)); - if (__builtin_expect (groups == NULL, 0)) - /* No more memory. */ - return -1; - groups[0] = group; + *groupsp[0] = group; if (__nss_group_database != NULL) { @@ -196,14 +164,14 @@ initgroups (user, group) if (fct == NULL) { - status = compat_call (nip, user, group, &start, &size, &groups, + status = compat_call (nip, user, group, &start, size, groupsp, limit, &errno); if (nss_next_action (nip, NSS_STATUS_UNAVAIL) != NSS_ACTION_CONTINUE) break; } else - status = DL_CALL_FCT (fct, (user, group, &start, &size, &groups, + status = DL_CALL_FCT (fct, (user, group, &start, size, groupsp, limit, &errno)); /* This is really only for debugging. */ @@ -220,10 +188,81 @@ initgroups (user, group) nip = nip->next; } + return start; +} + +/* 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. */ +int +getgrouplist (const char *user, gid_t group, gid_t *groups, int *ngroups) +{ + gid_t *newgroups; + long int size = *ngroups; + int result; + + newgroups = (gid_t *) malloc (size * sizeof (gid_t)); + if (__builtin_expect (newgroups == NULL, 0)) + /* No more memory. */ + return -1; + + result = internal_getgrouplist (user, group, &size, &newgroups, -1); + if (result > *ngroups) + { + *ngroups = result; + result = -1; + } + else + *ngroups = result; + + memcpy (groups, newgroups, *ngroups * sizeof (gid_t)); + + free (newgroups); + return result; +} + +/* 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. */ +int +initgroups (const char *user, gid_t group) +{ +#if defined NGROUPS_MAX && NGROUPS_MAX == 0 + + /* No extra groups allowed. */ + return 0; + +#else + + long int size; + gid_t *groups; + int ngroups; + int result; + + /* We always use sysconf even if NGROUPS_MAX is defined. That way, the + limit can be raised in the kernel configuration without having to + recompile libc. */ + long int limit = __sysconf (_SC_NGROUPS_MAX); + + if (limit > 0) + size = limit; + else + { + /* No fixed limit on groups. Pick a starting buffer size. */ + size = 16; + } + + groups = (gid_t *) malloc (size * sizeof (gid_t)); + if (__builtin_expect (groups == NULL, 0)) + /* No more memory. */ + return -1; + + ngroups = internal_getgrouplist (user, group, &size, &groups, limit); + /* Try to set the maximum number of groups the kernel can handle. */ do - result = setgroups (start, groups); - while (result == -1 && errno == EINVAL && --start > 0); + result = setgroups (ngroups, groups); + while (result == -1 && errno == EINVAL && --ngroups > 0); free (groups); diff -durpN glibc-2.2.3/grp/putgrent.c glibc-2.2.4/grp/putgrent.c --- glibc-2.2.3/grp/putgrent.c Fri Apr 21 12:25:18 2000 +++ glibc-2.2.4/grp/putgrent.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/grp/tst_fgetgrent.c glibc-2.2.4/grp/tst_fgetgrent.c --- glibc-2.2.3/grp/tst_fgetgrent.c Wed Jun 9 11:49:58 1999 +++ glibc-2.2.4/grp/tst_fgetgrent.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Andreas Jaeger , 1999. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/grp/tst_fgetgrent.sh glibc-2.2.4/grp/tst_fgetgrent.sh --- glibc-2.2.3/grp/tst_fgetgrent.sh Tue Jun 8 14:42:21 1999 +++ glibc-2.2.4/grp/tst_fgetgrent.sh Mon Jul 23 10:53:41 2001 @@ -3,20 +3,21 @@ # This file is part of the GNU C Library. # Contributed by Andreas Jaeger , 1999. # + # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If -# not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. common_objpfx=$1; shift elf_objpfx=$1; shift diff -durpN glibc-2.2.3/hesiod/Makefile glibc-2.2.4/hesiod/Makefile --- glibc-2.2.3/hesiod/Makefile Mon Mar 26 20:52:50 2001 +++ glibc-2.2.4/hesiod/Makefile Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Sub-makefile for hesiod portion of the library. diff -durpN glibc-2.2.3/hesiod/nss_hesiod/hesiod-grp.c glibc-2.2.4/hesiod/nss_hesiod/hesiod-grp.c --- glibc-2.2.3/hesiod/nss_hesiod/hesiod-grp.c Sat Jan 6 20:35:12 2001 +++ glibc-2.2.4/hesiod/nss_hesiod/hesiod-grp.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Mark Kettenis , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hesiod/nss_hesiod/hesiod-init.c glibc-2.2.4/hesiod/nss_hesiod/hesiod-init.c --- glibc-2.2.3/hesiod/nss_hesiod/hesiod-init.c Thu Jul 20 18:33:14 2000 +++ glibc-2.2.4/hesiod/nss_hesiod/hesiod-init.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Mark Kettenis , 2000. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include /* Needs to come before . */ #include diff -durpN glibc-2.2.3/hesiod/nss_hesiod/hesiod-proto.c glibc-2.2.4/hesiod/nss_hesiod/hesiod-proto.c --- glibc-2.2.3/hesiod/nss_hesiod/hesiod-proto.c Sat Jan 6 20:35:12 2001 +++ glibc-2.2.4/hesiod/nss_hesiod/hesiod-proto.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Mark Kettenis , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hesiod/nss_hesiod/hesiod-pwd.c glibc-2.2.4/hesiod/nss_hesiod/hesiod-pwd.c --- glibc-2.2.3/hesiod/nss_hesiod/hesiod-pwd.c Sat Jan 6 20:35:12 2001 +++ glibc-2.2.4/hesiod/nss_hesiod/hesiod-pwd.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Mark Kettenis , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hesiod/nss_hesiod/hesiod-service.c glibc-2.2.4/hesiod/nss_hesiod/hesiod-service.c --- glibc-2.2.3/hesiod/nss_hesiod/hesiod-service.c Sat Jan 6 20:35:12 2001 +++ glibc-2.2.4/hesiod/nss_hesiod/hesiod-service.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Mark Kettenis , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hesiod/nss_hesiod/nss_hesiod.h glibc-2.2.4/hesiod/nss_hesiod/nss_hesiod.h --- glibc-2.2.3/hesiod/nss_hesiod/nss_hesiod.h Thu Jul 20 18:34:22 2000 +++ glibc-2.2.4/hesiod/nss_hesiod/nss_hesiod.h Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ Contributed by Mark Kettenis , 2000. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Initialize a Hesiod context. */ extern void *_nss_hesiod_init (void); diff -durpN glibc-2.2.3/hurd/Makefile glibc-2.2.4/hurd/Makefile --- glibc-2.2.3/hurd/Makefile Mon Jun 28 11:57:24 1999 +++ glibc-2.2.4/hurd/Makefile Mon Jul 23 10:53:41 2001 @@ -1,20 +1,21 @@ -# Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc. +# Copyright (C) 1991,92,93,94,95,96,97,98,99,2001 +# Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License -# as published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. subdir := hurd @@ -39,12 +40,13 @@ user-interfaces := $(addprefix hurd/,\ msg msg_reply msg_request \ exec exec_startup crash interrupt \ fs fsys io term tioctl socket ifsock \ - login password \ + login password pfinet \ ) server-interfaces := hurd/msg faultexc routines = hurdstartup hurdinit \ - hurdid hurdlookup hurdpid hurdrlimit hurdprio hurdexec hurdselect \ + hurdid hurdpid hurdrlimit hurdprio hurdexec hurdselect \ + hurdlookup lookup-retry \ get-host set-host \ path-lookup \ setauth \ diff -durpN glibc-2.2.3/hurd/alloc-fd.c glibc-2.2.4/hurd/alloc-fd.c --- glibc-2.2.3/hurd/alloc-fd.c Fri Feb 14 20:26:35 1997 +++ glibc-2.2.4/hurd/alloc-fd.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/catch-exc.c glibc-2.2.4/hurd/catch-exc.c --- glibc-2.2.3/hurd/catch-exc.c Fri Feb 14 20:26:36 1997 +++ glibc-2.2.4/hurd/catch-exc.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/catch-signal.c glibc-2.2.4/hurd/catch-signal.c --- glibc-2.2.3/hurd/catch-signal.c Tue Dec 17 19:22:39 1996 +++ glibc-2.2.4/hurd/catch-signal.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/compat-20.c glibc-2.2.4/hurd/compat-20.c --- glibc-2.2.3/hurd/compat-20.c Tue Mar 28 11:05:26 2000 +++ glibc-2.2.4/hurd/compat-20.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/ctty-input.c glibc-2.2.4/hurd/ctty-input.c --- glibc-2.2.3/hurd/ctty-input.c Tue Mar 9 20:50:09 1999 +++ glibc-2.2.4/hurd/ctty-input.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/ctty-output.c glibc-2.2.4/hurd/ctty-output.c --- glibc-2.2.3/hurd/ctty-output.c Tue Mar 9 20:50:10 1999 +++ glibc-2.2.4/hurd/ctty-output.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/dtable.c glibc-2.2.4/hurd/dtable.c --- glibc-2.2.3/hurd/dtable.c Sat Dec 4 12:31:47 1999 +++ glibc-2.2.4/hurd/dtable.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/fchroot.c glibc-2.2.4/hurd/fchroot.c --- glibc-2.2.3/hurd/fchroot.c Tue Jan 23 14:07:16 2001 +++ glibc-2.2.4/hurd/fchroot.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/fd-close.c glibc-2.2.4/hurd/fd-close.c --- glibc-2.2.3/hurd/fd-close.c Fri Feb 14 20:26:39 1997 +++ glibc-2.2.4/hurd/fd-close.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/fd-read.c glibc-2.2.4/hurd/fd-read.c --- glibc-2.2.3/hurd/fd-read.c Mon Jun 28 11:57:27 1999 +++ glibc-2.2.4/hurd/fd-read.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/fd-write.c glibc-2.2.4/hurd/fd-write.c --- glibc-2.2.3/hurd/fd-write.c Mon Jun 28 11:57:28 1999 +++ glibc-2.2.4/hurd/fd-write.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/fopenport.c glibc-2.2.4/hurd/fopenport.c --- glibc-2.2.3/hurd/fopenport.c Sat Apr 7 14:02:34 2001 +++ glibc-2.2.4/hurd/fopenport.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/get-host.c glibc-2.2.4/hurd/get-host.c --- glibc-2.2.3/hurd/get-host.c Sat Apr 7 14:02:34 2001 +++ glibc-2.2.4/hurd/get-host.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/getdport.c glibc-2.2.4/hurd/getdport.c --- glibc-2.2.3/hurd/getdport.c Sun Feb 23 14:08:53 1997 +++ glibc-2.2.4/hurd/getdport.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/geteuids.c glibc-2.2.4/hurd/geteuids.c --- glibc-2.2.3/hurd/geteuids.c Fri Mar 31 12:38:27 2000 +++ glibc-2.2.4/hurd/geteuids.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/getumask.c glibc-2.2.4/hurd/getumask.c --- glibc-2.2.3/hurd/getumask.c Fri Feb 14 20:26:45 1997 +++ glibc-2.2.4/hurd/getumask.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/hurd/fd.h glibc-2.2.4/hurd/hurd/fd.h --- glibc-2.2.3/hurd/hurd/fd.h Wed Aug 2 14:52:02 2000 +++ glibc-2.2.4/hurd/hurd/fd.h Mon Jul 23 10:53:42 2001 @@ -1,21 +1,21 @@ /* File descriptors. - Copyright (C) 1993,94,95,96,97,98,99,2000 Free Software Foundation, Inc. + Copyright (C) 1993,94,95,96,97,98,99,2000,01 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_FD_H @@ -135,7 +135,7 @@ _hurd_fd_get (int fd) /* Check if ERR should generate a signal. Returns the signal to take, or zero if none. */ -_HURD_FD_H_EXTERN_INLINE error_t +_HURD_FD_H_EXTERN_INLINE int _hurd_fd_error_signal (error_t err) { switch (err) diff -durpN glibc-2.2.3/hurd/hurd/id.h glibc-2.2.4/hurd/hurd/id.h --- glibc-2.2.3/hurd/hurd/id.h Fri Feb 14 20:27:14 1997 +++ glibc-2.2.4/hurd/hurd/id.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_ID_H diff -durpN glibc-2.2.3/hurd/hurd/ioctl.h glibc-2.2.4/hurd/hurd/ioctl.h --- glibc-2.2.3/hurd/hurd/ioctl.h Sat Apr 7 14:02:34 2001 +++ glibc-2.2.4/hurd/hurd/ioctl.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_IOCTL_H #define _HURD_IOCTL_H 1 diff -durpN glibc-2.2.3/hurd/hurd/lookup.h glibc-2.2.4/hurd/hurd/lookup.h --- glibc-2.2.3/hurd/hurd/lookup.h Fri Feb 14 20:27:16 1997 +++ glibc-2.2.4/hurd/hurd/lookup.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_LOOKUP_H #define _HURD_LOOKUP_H 1 diff -durpN glibc-2.2.3/hurd/hurd/port.h glibc-2.2.4/hurd/hurd/port.h --- glibc-2.2.3/hurd/hurd/port.h Mon Jun 28 11:57:41 1999 +++ glibc-2.2.4/hurd/hurd/port.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_PORT_H diff -durpN glibc-2.2.3/hurd/hurd/resource.h glibc-2.2.4/hurd/hurd/resource.h --- glibc-2.2.3/hurd/hurd/resource.h Fri Feb 14 20:27:17 1997 +++ glibc-2.2.4/hurd/hurd/resource.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_RESOURCE_H #define _HURD_RESOURCE_H diff -durpN glibc-2.2.3/hurd/hurd/signal.h glibc-2.2.4/hurd/hurd/signal.h --- glibc-2.2.3/hurd/hurd/signal.h Mon Jun 28 11:57:42 1999 +++ glibc-2.2.4/hurd/hurd/signal.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_SIGNAL_H diff -durpN glibc-2.2.3/hurd/hurd/sigpreempt.h glibc-2.2.4/hurd/hurd/sigpreempt.h --- glibc-2.2.3/hurd/hurd/sigpreempt.h Tue Dec 17 19:22:43 1996 +++ glibc-2.2.4/hurd/hurd/sigpreempt.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_SIGPREEMPT_H diff -durpN glibc-2.2.3/hurd/hurd/threadvar.h glibc-2.2.4/hurd/hurd/threadvar.h --- glibc-2.2.3/hurd/hurd/threadvar.h Sat Apr 7 14:02:34 2001 +++ glibc-2.2.4/hurd/hurd/threadvar.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_THREADVAR_H #define _HURD_THREADVAR_H @@ -109,11 +109,12 @@ __hurd_threadvar_location (enum __hurd_t /* Return the current thread's location for `errno'. The syntax of this function allows redeclarations like `int errno'. */ +extern int *__hurd_errno_location (void); + _HURD_THREADVAR_H_EXTERN_INLINE int * __hurd_errno_location (void) { return (int *) __hurd_threadvar_location (_HURD_THREADVAR_ERRNO); } - #endif /* hurd/threadvar.h */ diff -durpN glibc-2.2.3/hurd/hurd/userlink.h glibc-2.2.4/hurd/hurd/userlink.h --- glibc-2.2.3/hurd/hurd/userlink.h Mon Jun 28 11:57:44 1999 +++ glibc-2.2.4/hurd/hurd/userlink.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_USERLINK_H diff -durpN glibc-2.2.3/hurd/hurd-raise.c glibc-2.2.4/hurd/hurd-raise.c --- glibc-2.2.3/hurd/hurd-raise.c Fri Mar 5 14:37:12 1999 +++ glibc-2.2.4/hurd/hurd-raise.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurd.h glibc-2.2.4/hurd/hurd.h --- glibc-2.2.3/hurd/hurd.h Wed Apr 25 14:50:58 2001 +++ glibc-2.2.4/hurd/hurd.h Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_H diff -durpN glibc-2.2.3/hurd/hurdauth.c glibc-2.2.4/hurd/hurdauth.c --- glibc-2.2.3/hurd/hurdauth.c Tue May 20 17:54:24 1997 +++ glibc-2.2.4/hurd/hurdauth.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdchdir.c glibc-2.2.4/hurd/hurdchdir.c --- glibc-2.2.3/hurd/hurdchdir.c Sat Apr 7 14:02:34 2001 +++ glibc-2.2.4/hurd/hurdchdir.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdexec.c glibc-2.2.4/hurd/hurdexec.c --- glibc-2.2.3/hurd/hurdexec.c Mon Jul 26 08:32:39 1999 +++ glibc-2.2.4/hurd/hurdexec.c Mon Jul 23 10:53:41 2001 @@ -1,20 +1,20 @@ -/* Copyright (C) 1991,92,93,94,95,96,97,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,93,94,95,96,97,99,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -187,7 +187,7 @@ _hurd_exec (task_t task, file_t file, } /* Prune trailing null ports from the descriptor table. */ - while (dtable[dtablesize - 1] == MACH_PORT_NULL) + while (dtablesize > 0 && dtable[dtablesize - 1] == MACH_PORT_NULL) --dtablesize; /* The information is all set up now. Try to exec the file. */ diff -durpN glibc-2.2.3/hurd/hurdfault.c glibc-2.2.4/hurd/hurdfault.c --- glibc-2.2.3/hurd/hurdfault.c Sat May 10 16:33:54 1997 +++ glibc-2.2.4/hurd/hurdfault.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdfault.h glibc-2.2.4/hurd/hurdfault.h --- glibc-2.2.3/hurd/hurdfault.h Tue Dec 17 19:22:40 1996 +++ glibc-2.2.4/hurd/hurdfault.h Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURD_FAULT_H #define _HURD_FAULT_H diff -durpN glibc-2.2.3/hurd/hurdfchdir.c glibc-2.2.4/hurd/hurdfchdir.c --- glibc-2.2.3/hurd/hurdfchdir.c Sat Dec 4 12:31:47 1999 +++ glibc-2.2.4/hurd/hurdfchdir.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdhost.h glibc-2.2.4/hurd/hurdhost.h --- glibc-2.2.3/hurd/hurdhost.h Fri Feb 14 20:26:48 1997 +++ glibc-2.2.4/hurd/hurdhost.h Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Fetch and atomically store the contents of the file ITEM. Returns the size read or written, or -1 for errors. diff -durpN glibc-2.2.3/hurd/hurdid.c glibc-2.2.4/hurd/hurdid.c --- glibc-2.2.3/hurd/hurdid.c Fri Feb 14 20:26:49 1997 +++ glibc-2.2.4/hurd/hurdid.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdinit.c glibc-2.2.4/hurd/hurdinit.c --- glibc-2.2.3/hurd/hurdinit.c Tue Mar 28 11:05:26 2000 +++ glibc-2.2.4/hurd/hurdinit.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdioctl.c glibc-2.2.4/hurd/hurdioctl.c --- glibc-2.2.3/hurd/hurdioctl.c Sat Dec 4 12:31:47 1999 +++ glibc-2.2.4/hurd/hurdioctl.c Mon Jul 23 10:53:41 2001 @@ -1,27 +1,27 @@ /* ioctl commands which must be done in the C library. - Copyright (C) 1994, 1995, 1996, 1997, 1999 Free Software Foundation, Inc. + Copyright (C) 1994,95,96,97,99,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 - +#include /* Symbol set of ioctl handler lists. If there are user-registered @@ -300,3 +300,32 @@ tiocnotty (int fd, return 0; } _HURD_HANDLE_IOCTL (tiocnotty, TIOCNOTTY); + +#include +#include +#include + +/* Fill in the buffer IFC->IFC_BUF of length IFC->IFC_LEN with a list + of ifr structures, one for each network interface. */ +static int +siocgifconf (int fd, int request, struct ifconf *ifc) +{ + error_t err; + int data_len = ifc->ifc_len; + char *data = ifc->ifc_buf; + + if (data_len <= 0) + return 0; + + err = HURD_DPORT_USE (fd, __pfinet_siocgifconf (port, ifc->ifc_len, + &data, &data_len)); + if (data_len < ifc->ifc_len) + ifc->ifc_len = data_len; + if (data != ifc->ifc_buf) + { + memcpy (ifc->ifc_buf, data, ifc->ifc_len); + __vm_deallocate (__mach_task_self (), (vm_address_t) data, data_len); + } + return err ? __hurd_dfail (fd, err) : 0; +} +_HURD_HANDLE_IOCTL (siocgifconf, SIOCGIFCONF); diff -durpN glibc-2.2.3/hurd/hurdkill.c glibc-2.2.4/hurd/hurdkill.c --- glibc-2.2.3/hurd/hurdkill.c Fri Feb 14 20:26:51 1997 +++ glibc-2.2.4/hurd/hurdkill.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdlookup.c glibc-2.2.4/hurd/hurdlookup.c --- glibc-2.2.3/hurd/hurdlookup.c Mon Nov 15 16:23:38 1999 +++ glibc-2.2.4/hurd/hurdlookup.c Mon Aug 13 15:00:47 2001 @@ -1,29 +1,25 @@ -/* Copyright (C) 1992, 93, 94, 95, 96, 97, 99 Free Software Foundation, Inc. +/* Copyright (C) 1992,93,94,95,96,97,99,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 #include -#include "stdio-common/_itoa.h" -#include -#include /* Translate the error from dir_lookup into the error the user sees. */ @@ -71,7 +67,7 @@ __hurd_file_name_lookup (error_t (*use_i while (file_name[0] == '/') file_name++; - if (flags & O_NOFOLLOW) /* See comments below about O_NOFOLLOW. */ + if (flags & O_NOFOLLOW) /* See lookup-retry.c about O_NOFOLLOW. */ flags |= O_NOTRANS; if (flags & O_DIRECTORY) @@ -101,284 +97,6 @@ __hurd_file_name_lookup (error_t (*use_i return err; } weak_alias (__hurd_file_name_lookup, hurd_file_name_lookup) - -error_t -__hurd_file_name_lookup_retry (error_t (*use_init_port) - (int which, error_t (*operate) (file_t)), - file_t (*get_dtable_port) (int fd), - error_t (*lookup) - (file_t dir, char *name, - int flags, mode_t mode, - retry_type *do_retry, string_t retry_name, - mach_port_t *result), - enum retry_type doretry, - char retryname[1024], - int flags, mode_t mode, - file_t *result) -{ - error_t err; - char *file_name; - int nloops; - - error_t lookup_op (file_t startdir) - { - while (file_name[0] == '/') - file_name++; - - return lookup_error ((*lookup) (startdir, file_name, flags, mode, - &doretry, retryname, result)); - } - error_t reauthenticate (file_t unauth) - { - error_t err; - mach_port_t ref = __mach_reply_port (); - error_t reauth (auth_t auth) - { - return __auth_user_authenticate (auth, ref, - MACH_MSG_TYPE_MAKE_SEND, - result); - } - err = __io_reauthenticate (unauth, ref, MACH_MSG_TYPE_MAKE_SEND); - if (! err) - err = (*use_init_port) (INIT_PORT_AUTH, &reauth); - __mach_port_destroy (__mach_task_self (), ref); - __mach_port_deallocate (__mach_task_self (), unauth); - return err; - } - - if (! lookup) - lookup = __dir_lookup; - - nloops = 0; - err = 0; - do - { - file_t startdir = MACH_PORT_NULL; - int dirport = INIT_PORT_CWDIR; - - switch (doretry) - { - case FS_RETRY_REAUTH: - if (err = reauthenticate (*result)) - return err; - /* Fall through. */ - - case FS_RETRY_NORMAL: -#ifdef SYMLOOP_MAX - if (nloops++ >= SYMLOOP_MAX) - return ELOOP; -#endif - - /* An empty RETRYNAME indicates we have the final port. */ - if (retryname[0] == '\0' && - /* If reauth'd, we must do one more retry on "" to give the new - translator a chance to make a new port for us. */ - doretry == FS_RETRY_NORMAL) - { - if (flags & O_NOFOLLOW) - { - /* In Linux, O_NOFOLLOW means to reject symlinks. If we - did an O_NOLINK lookup above and io_stat here to check - for S_IFLNK, a translator like firmlink could easily - spoof this check by not showing S_IFLNK, but in fact - redirecting the lookup to some other name - (i.e. opening the very same holes a symlink would). - - Instead we do an O_NOTRANS lookup above, and stat the - underlying node: if it has a translator set, and its - owner is not root (st_uid 0) then we reject it. - Since the motivation for this feature is security, and - that security presumes we trust the containing - directory, this check approximates the security of - refusing symlinks while accepting mount points. - Note that we actually permit something Linux doesn't: - we follow root-owned symlinks; if that is deemed - undesireable, we can add a final check for that - one exception to our general translator-based rule. */ - struct stat st; - err = __io_stat (*result, &st); - if (!err - && (st.st_mode & (S_IPTRANS|S_IATRANS))) - { - if (st.st_uid != 0) - err = ENOENT; - else if (st.st_mode & S_IPTRANS) - { - char buf[1024]; - char *trans = buf; - size_t translen = sizeof buf; - err = __file_get_translator (*result, - &trans, &translen); - if (!err - && translen > sizeof _HURD_SYMLINK - && !memcmp (trans, - _HURD_SYMLINK, sizeof _HURD_SYMLINK)) - err = ENOENT; - } - } - } - - /* We got a successful translation. Now apply any open-time - action flags we were passed. */ - - if (!err && (flags & O_TRUNC)) /* Asked to truncate the file. */ - err = __file_set_size (*result, 0); - - if (err) - __mach_port_deallocate (__mach_task_self (), *result); - return err; - } - - startdir = *result; - file_name = retryname; - break; - - case FS_RETRY_MAGICAL: - switch (retryname[0]) - { - case '/': - dirport = INIT_PORT_CRDIR; - if (*result != MACH_PORT_NULL) - __mach_port_deallocate (__mach_task_self (), *result); - file_name = &retryname[1]; - break; - - case 'f': - if (retryname[1] == 'd' && retryname[2] == '/') - { - int fd; - char *end; - int save = errno; - errno = 0; - fd = (int) strtol (&retryname[3], &end, 10); - if (end == NULL || errno || /* Malformed number. */ - /* Check for excess text after the number. A slash - is valid; it ends the component. Anything else - does not name a numeric file descriptor. */ - (*end != '/' && *end != '\0')) - { - errno = save; - return ENOENT; - } - if (! get_dtable_port) - err = EGRATUITOUS; - else - { - *result = (*get_dtable_port) (fd); - if (*result == MACH_PORT_NULL) - { - /* If the name was a proper number, but the file - descriptor does not exist, we return EBADF instead - of ENOENT. */ - err = errno; - errno = save; - } - } - errno = save; - if (err) - return err; - if (*end == '\0') - return 0; - else - { - /* Do a normal retry on the remaining components. */ - startdir = *result; - file_name = end + 1; /* Skip the slash. */ - break; - } - } - else - goto bad_magic; - break; - - case 'm': - if (retryname[1] == 'a' && retryname[2] == 'c' && - retryname[3] == 'h' && retryname[4] == 't' && - retryname[5] == 'y' && retryname[6] == 'p' && - retryname[7] == 'e') - { - error_t err; - struct host_basic_info hostinfo; - mach_msg_type_number_t hostinfocnt = HOST_BASIC_INFO_COUNT; - char *p; - /* XXX want client's host */ - if (err = __host_info (__mach_host_self (), HOST_BASIC_INFO, - (natural_t *) &hostinfo, - &hostinfocnt)) - return err; - if (hostinfocnt != HOST_BASIC_INFO_COUNT) - return EGRATUITOUS; - p = _itoa (hostinfo.cpu_subtype, &retryname[8], 10, 0); - *--p = '/'; - p = _itoa (hostinfo.cpu_type, &retryname[8], 10, 0); - if (p < retryname) - abort (); /* XXX write this right if this ever happens */ - if (p > retryname) - strcpy (retryname, p); - startdir = *result; - } - else - goto bad_magic; - break; - - case 't': - if (retryname[1] == 't' && retryname[2] == 'y') - switch (retryname[3]) - { - error_t opentty (file_t *result) - { - error_t err; - error_t ctty_open (file_t port) - { - if (port == MACH_PORT_NULL) - return ENXIO; /* No controlling terminal. */ - return __termctty_open_terminal (port, - flags, - result); - } - err = (*use_init_port) (INIT_PORT_CTTYID, &ctty_open); - if (! err) - err = reauthenticate (*result); - return err; - } - - case '\0': - return opentty (result); - case '/': - if (err = opentty (&startdir)) - return err; - strcpy (retryname, &retryname[4]); - break; - default: - goto bad_magic; - } - else - goto bad_magic; - break; - - default: - bad_magic: - return EGRATUITOUS; - } - break; - - default: - return EGRATUITOUS; - } - - if (startdir != MACH_PORT_NULL) - { - err = lookup_op (startdir); - __mach_port_deallocate (__mach_task_self (), startdir); - startdir = MACH_PORT_NULL; - } - else - err = (*use_init_port) (dirport, &lookup_op); - } while (! err); - - return err; -} -weak_alias (__hurd_file_name_lookup_retry, hurd_file_name_lookup_retry) error_t __hurd_file_name_split (error_t (*use_init_port) diff -durpN glibc-2.2.3/hurd/hurdmsg.c glibc-2.2.4/hurd/hurdmsg.c --- glibc-2.2.3/hurd/hurdmsg.c Tue Jul 21 09:23:28 1998 +++ glibc-2.2.4/hurd/hurdmsg.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdpid.c glibc-2.2.4/hurd/hurdpid.c --- glibc-2.2.3/hurd/hurdpid.c Fri Feb 14 20:26:53 1997 +++ glibc-2.2.4/hurd/hurdpid.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include pid_t _hurd_pid, _hurd_ppid, _hurd_pgrp; diff -durpN glibc-2.2.3/hurd/hurdports.c glibc-2.2.4/hurd/hurdports.c --- glibc-2.2.3/hurd/hurdports.c Fri Feb 14 20:26:53 1997 +++ glibc-2.2.4/hurd/hurdports.c Mon Jul 23 10:53:41 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdprio.c glibc-2.2.4/hurd/hurdprio.c --- glibc-2.2.3/hurd/hurdprio.c Mon Sep 20 11:01:52 1999 +++ glibc-2.2.4/hurd/hurdprio.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdrlimit.c glibc-2.2.4/hurd/hurdrlimit.c --- glibc-2.2.3/hurd/hurdrlimit.c Tue Mar 28 11:05:26 2000 +++ glibc-2.2.4/hurd/hurdrlimit.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdselect.c glibc-2.2.4/hurd/hurdselect.c --- glibc-2.2.3/hurd/hurdselect.c Sat Feb 27 17:04:22 1999 +++ glibc-2.2.4/hurd/hurdselect.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdsig.c glibc-2.2.4/hurd/hurdsig.c --- glibc-2.2.3/hurd/hurdsig.c Wed Apr 25 14:50:58 2001 +++ glibc-2.2.4/hurd/hurdsig.c Fri Jul 27 23:13:13 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -91,7 +91,7 @@ _hurd_thread_sigstate (thread_t thread) __sigemptyset (&ss->pending); memset (&ss->sigaltstack, 0, sizeof (ss->sigaltstack)); ss->preemptors = NULL; - ss->suspended = 0; + ss->suspended = MACH_PORT_NULL; ss->intr_port = MACH_PORT_NULL; ss->context = NULL; @@ -926,9 +926,20 @@ _hurd_internal_post_signal (struct hurd_ /* Backdoor extra argument to signal handler. */ scp->sc_error = detail->error; - /* Block SIGNO and requested signals while running the handler. */ + /* Block requested signals while running the handler. */ scp->sc_mask = ss->blocked; - ss->blocked |= __sigmask (signo) | ss->actions[signo].sa_mask; + ss->blocked |= ss->actions[signo].sa_mask; + + /* Also block SIGNO unless we're asked not to. */ + if (! (ss->actions[signo].sa_flags & (SA_RESETHAND | SA_NODEFER))) + ss->blocked |= __sigmask (signo); + + /* Reset to SIG_DFL if requested. SIGILL and SIGTRAP cannot + be automatically reset when delivered; the system silently + enforces this restriction. */ + if (ss->actions[signo].sa_flags & SA_RESETHAND + && signo != SIGILL && signo != SIGTRAP) + ss->actions[signo].sa_handler = SIG_DFL; /* Start the thread running the handler (or possibly waiting for an RPC reply before running the handler). */ @@ -1014,11 +1025,7 @@ _hurd_internal_post_signal (struct hurd_ /* There is a sigsuspend waiting. Tell it to wake up. */ error_t err; mach_msg_header_t msg; - err = __mach_port_insert_right (__mach_task_self (), - ss->suspended, ss->suspended, - MACH_MSG_TYPE_MAKE_SEND); - assert_perror (err); - msg.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_MOVE_SEND, 0); + msg.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_MAKE_SEND, 0); msg.msgh_remote_port = ss->suspended; msg.msgh_local_port = MACH_PORT_NULL; /* These values do not matter. */ @@ -1227,7 +1234,7 @@ _hurdsig_init (const int *intarray, size if (intarraysize > INIT_SIGMASK) ss->blocked = intarray[INIT_SIGMASK]; if (intarraysize > INIT_SIGPENDING) - ss->blocked = intarray[INIT_SIGPENDING]; + ss->pending = intarray[INIT_SIGPENDING]; if (intarraysize > INIT_SIGIGN && intarray[INIT_SIGIGN] != 0) { int signo; @@ -1247,7 +1254,6 @@ _hurdsig_init (const int *intarray, size err = __thread_create (__mach_task_self (), &_hurd_msgport_thread); assert_perror (err); - stacksize = ~__hurd_threadvar_stack_mask + 1; stacksize = __vm_page_size * 8; /* Small stack for signal thread. */ err = __mach_setup_thread (__mach_task_self (), _hurd_msgport_thread, _hurd_msgport_receive, diff -durpN glibc-2.2.3/hurd/hurdsock.c glibc-2.2.4/hurd/hurdsock.c --- glibc-2.2.3/hurd/hurdsock.c Sun Jun 13 15:26:16 1999 +++ glibc-2.2.4/hurd/hurdsock.c Mon Jul 23 10:53:41 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdstartup.c glibc-2.2.4/hurd/hurdstartup.c --- glibc-2.2.3/hurd/hurdstartup.c Tue Dec 1 10:45:25 1998 +++ glibc-2.2.4/hurd/hurdstartup.c Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/hurdstartup.h glibc-2.2.4/hurd/hurdstartup.h --- glibc-2.2.3/hurd/hurdstartup.h Fri Feb 14 20:26:57 1997 +++ glibc-2.2.4/hurd/hurdstartup.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _HURDSTARTUP_H #define _HURDSTARTUP_H 1 diff -durpN glibc-2.2.3/hurd/intern-fd.c glibc-2.2.4/hurd/intern-fd.c --- glibc-2.2.3/hurd/intern-fd.c Fri Feb 14 20:26:57 1997 +++ glibc-2.2.4/hurd/intern-fd.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/intr-msg.c glibc-2.2.4/hurd/intr-msg.c --- glibc-2.2.3/hurd/intr-msg.c Tue Mar 28 11:05:26 2000 +++ glibc-2.2.4/hurd/intr-msg.c Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/intr-rpc.defs glibc-2.2.4/hurd/intr-rpc.defs --- glibc-2.2.3/hurd/intr-rpc.defs Fri Feb 14 20:26:59 1997 +++ glibc-2.2.4/hurd/intr-rpc.defs Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Cause user stubs for interruptible RPCs to import a special header to modify their behavior. */ diff -durpN glibc-2.2.3/hurd/intr-rpc.h glibc-2.2.4/hurd/intr-rpc.h --- glibc-2.2.3/hurd/intr-rpc.h Fri Feb 14 20:26:59 1997 +++ glibc-2.2.4/hurd/intr-rpc.h Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This file is imported by the MiG-generated user stubs for interruptible RPCs. We modify them to use our own function in place of mach_msg. */ diff -durpN glibc-2.2.3/hurd/lookup-retry.c glibc-2.2.4/hurd/lookup-retry.c --- glibc-2.2.3/hurd/lookup-retry.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/hurd/lookup-retry.c Thu Jul 5 21:54:47 2001 @@ -0,0 +1,324 @@ +/* hairy bits of Hurd file name lookup + Copyright (C) 1992,93,94,95,96,97,99,2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include +#include +#include +#include +#include "stdio-common/_itoa.h" + +/* Translate the error from dir_lookup into the error the user sees. */ +static inline error_t +lookup_error (error_t error) +{ + switch (error) + { + case EOPNOTSUPP: + case MIG_BAD_ID: + /* These indicate that the server does not understand dir_lookup + at all. If it were a directory, it would, by definition. */ + return ENOTDIR; + default: + return error; + } +} + +error_t +__hurd_file_name_lookup_retry (error_t (*use_init_port) + (int which, error_t (*operate) (file_t)), + file_t (*get_dtable_port) (int fd), + error_t (*lookup) + (file_t dir, char *name, + int flags, mode_t mode, + retry_type *do_retry, string_t retry_name, + mach_port_t *result), + enum retry_type doretry, + char retryname[1024], + int flags, mode_t mode, + file_t *result) +{ + error_t err; + char *file_name; + int nloops; + + error_t lookup_op (file_t startdir) + { + while (file_name[0] == '/') + file_name++; + + return lookup_error ((*lookup) (startdir, file_name, flags, mode, + &doretry, retryname, result)); + } + error_t reauthenticate (file_t unauth) + { + error_t err; + mach_port_t ref = __mach_reply_port (); + error_t reauth (auth_t auth) + { + return __auth_user_authenticate (auth, ref, + MACH_MSG_TYPE_MAKE_SEND, + result); + } + err = __io_reauthenticate (unauth, ref, MACH_MSG_TYPE_MAKE_SEND); + if (! err) + err = (*use_init_port) (INIT_PORT_AUTH, &reauth); + __mach_port_destroy (__mach_task_self (), ref); + __mach_port_deallocate (__mach_task_self (), unauth); + return err; + } + + if (! lookup) + lookup = __dir_lookup; + + nloops = 0; + err = 0; + do + { + file_t startdir = MACH_PORT_NULL; + int dirport = INIT_PORT_CWDIR; + + switch (doretry) + { + case FS_RETRY_REAUTH: + if (err = reauthenticate (*result)) + return err; + /* Fall through. */ + + case FS_RETRY_NORMAL: + if (nloops++ >= SYMLOOP_MAX) + { + __mach_port_deallocate (__mach_task_self (), *result); + return ELOOP; + } + + /* An empty RETRYNAME indicates we have the final port. */ + if (retryname[0] == '\0' && + /* If reauth'd, we must do one more retry on "" to give the new + translator a chance to make a new port for us. */ + doretry == FS_RETRY_NORMAL) + { + if (flags & O_NOFOLLOW) + { + /* In Linux, O_NOFOLLOW means to reject symlinks. If we + did an O_NOLINK lookup above and io_stat here to check + for S_IFLNK, a translator like firmlink could easily + spoof this check by not showing S_IFLNK, but in fact + redirecting the lookup to some other name + (i.e. opening the very same holes a symlink would). + + Instead we do an O_NOTRANS lookup above, and stat the + underlying node: if it has a translator set, and its + owner is not root (st_uid 0) then we reject it. + Since the motivation for this feature is security, and + that security presumes we trust the containing + directory, this check approximates the security of + refusing symlinks while accepting mount points. + Note that we actually permit something Linux doesn't: + we follow root-owned symlinks; if that is deemed + undesireable, we can add a final check for that + one exception to our general translator-based rule. */ + struct stat st; + err = __io_stat (*result, &st); + if (!err + && (st.st_mode & (S_IPTRANS|S_IATRANS))) + { + if (st.st_uid != 0) + err = ENOENT; + else if (st.st_mode & S_IPTRANS) + { + char buf[1024]; + char *trans = buf; + size_t translen = sizeof buf; + err = __file_get_translator (*result, + &trans, &translen); + if (!err + && translen > sizeof _HURD_SYMLINK + && !memcmp (trans, + _HURD_SYMLINK, sizeof _HURD_SYMLINK)) + err = ENOENT; + } + } + } + + /* We got a successful translation. Now apply any open-time + action flags we were passed. */ + + if (!err && (flags & O_TRUNC)) /* Asked to truncate the file. */ + err = __file_set_size (*result, 0); + + if (err) + __mach_port_deallocate (__mach_task_self (), *result); + return err; + } + + startdir = *result; + file_name = retryname; + break; + + case FS_RETRY_MAGICAL: + switch (retryname[0]) + { + case '/': + dirport = INIT_PORT_CRDIR; + if (*result != MACH_PORT_NULL) + __mach_port_deallocate (__mach_task_self (), *result); + if (nloops++ >= SYMLOOP_MAX) + return ELOOP; + file_name = &retryname[1]; + break; + + case 'f': + if (retryname[1] == 'd' && retryname[2] == '/') + { + int fd; + char *end; + int save = errno; + errno = 0; + fd = (int) strtol (&retryname[3], &end, 10); + if (end == NULL || errno || /* Malformed number. */ + /* Check for excess text after the number. A slash + is valid; it ends the component. Anything else + does not name a numeric file descriptor. */ + (*end != '/' && *end != '\0')) + { + errno = save; + return ENOENT; + } + if (! get_dtable_port) + err = EGRATUITOUS; + else + { + *result = (*get_dtable_port) (fd); + if (*result == MACH_PORT_NULL) + { + /* If the name was a proper number, but the file + descriptor does not exist, we return EBADF instead + of ENOENT. */ + err = errno; + errno = save; + } + } + errno = save; + if (err) + return err; + if (*end == '\0') + return 0; + else + { + /* Do a normal retry on the remaining components. */ + startdir = *result; + file_name = end + 1; /* Skip the slash. */ + break; + } + } + else + goto bad_magic; + break; + + case 'm': + if (retryname[1] == 'a' && retryname[2] == 'c' && + retryname[3] == 'h' && retryname[4] == 't' && + retryname[5] == 'y' && retryname[6] == 'p' && + retryname[7] == 'e') + { + error_t err; + struct host_basic_info hostinfo; + mach_msg_type_number_t hostinfocnt = HOST_BASIC_INFO_COUNT; + char *p; + /* XXX want client's host */ + if (err = __host_info (__mach_host_self (), HOST_BASIC_INFO, + (natural_t *) &hostinfo, + &hostinfocnt)) + return err; + if (hostinfocnt != HOST_BASIC_INFO_COUNT) + return EGRATUITOUS; + p = _itoa (hostinfo.cpu_subtype, &retryname[8], 10, 0); + *--p = '/'; + p = _itoa (hostinfo.cpu_type, &retryname[8], 10, 0); + if (p < retryname) + abort (); /* XXX write this right if this ever happens */ + if (p > retryname) + strcpy (retryname, p); + startdir = *result; + } + else + goto bad_magic; + break; + + case 't': + if (retryname[1] == 't' && retryname[2] == 'y') + switch (retryname[3]) + { + error_t opentty (file_t *result) + { + error_t err; + error_t ctty_open (file_t port) + { + if (port == MACH_PORT_NULL) + return ENXIO; /* No controlling terminal. */ + return __termctty_open_terminal (port, + flags, + result); + } + err = (*use_init_port) (INIT_PORT_CTTYID, &ctty_open); + if (! err) + err = reauthenticate (*result); + return err; + } + + case '\0': + return opentty (result); + case '/': + if (err = opentty (&startdir)) + return err; + strcpy (retryname, &retryname[4]); + break; + default: + goto bad_magic; + } + else + goto bad_magic; + break; + + default: + bad_magic: + return EGRATUITOUS; + } + break; + + default: + return EGRATUITOUS; + } + + if (startdir != MACH_PORT_NULL) + { + err = lookup_op (startdir); + __mach_port_deallocate (__mach_task_self (), startdir); + startdir = MACH_PORT_NULL; + } + else + err = (*use_init_port) (dirport, &lookup_op); + } while (! err); + + return err; +} +weak_alias (__hurd_file_name_lookup_retry, hurd_file_name_lookup_retry) diff -durpN glibc-2.2.3/hurd/msgportdemux.c glibc-2.2.4/hurd/msgportdemux.c --- glibc-2.2.3/hurd/msgportdemux.c Sat Dec 4 12:31:48 1999 +++ glibc-2.2.4/hurd/msgportdemux.c Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/new-fd.c glibc-2.2.4/hurd/new-fd.c --- glibc-2.2.3/hurd/new-fd.c Mon Aug 23 10:25:12 1999 +++ glibc-2.2.4/hurd/new-fd.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/openport.c glibc-2.2.4/hurd/openport.c --- glibc-2.2.3/hurd/openport.c Fri Feb 14 20:27:01 1997 +++ glibc-2.2.4/hurd/openport.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/path-lookup.c glibc-2.2.4/hurd/path-lookup.c --- glibc-2.2.3/hurd/path-lookup.c Mon Jun 23 14:38:41 1997 +++ glibc-2.2.4/hurd/path-lookup.c Mon Jul 23 10:53:42 2001 @@ -4,19 +4,19 @@ Written by Miles Bader The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/pid2task.c glibc-2.2.4/hurd/pid2task.c --- glibc-2.2.3/hurd/pid2task.c Fri Feb 14 20:27:02 1997 +++ glibc-2.2.4/hurd/pid2task.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/port-cleanup.c glibc-2.2.4/hurd/port-cleanup.c --- glibc-2.2.3/hurd/port-cleanup.c Fri Feb 14 20:27:03 1997 +++ glibc-2.2.4/hurd/port-cleanup.c Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/port2fd.c glibc-2.2.4/hurd/port2fd.c --- glibc-2.2.3/hurd/port2fd.c Mon Sep 20 11:01:53 1999 +++ glibc-2.2.4/hurd/port2fd.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/ports-get.c glibc-2.2.4/hurd/ports-get.c --- glibc-2.2.3/hurd/ports-get.c Fri Feb 14 20:27:04 1997 +++ glibc-2.2.4/hurd/ports-get.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/ports-set.c glibc-2.2.4/hurd/ports-set.c --- glibc-2.2.3/hurd/ports-set.c Fri Feb 14 20:27:05 1997 +++ glibc-2.2.4/hurd/ports-set.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/preempt-sig.c glibc-2.2.4/hurd/preempt-sig.c --- glibc-2.2.3/hurd/preempt-sig.c Tue Dec 17 19:22:42 1996 +++ glibc-2.2.4/hurd/preempt-sig.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/privports.c glibc-2.2.4/hurd/privports.c --- glibc-2.2.3/hurd/privports.c Wed Apr 25 14:50:58 2001 +++ glibc-2.2.4/hurd/privports.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/report-wait.c glibc-2.2.4/hurd/report-wait.c --- glibc-2.2.3/hurd/report-wait.c Sat Dec 4 12:31:48 1999 +++ glibc-2.2.4/hurd/report-wait.c Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/set-host.c glibc-2.2.4/hurd/set-host.c --- glibc-2.2.3/hurd/set-host.c Mon May 24 08:58:55 1999 +++ glibc-2.2.4/hurd/set-host.c Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/setauth.c glibc-2.2.4/hurd/setauth.c --- glibc-2.2.3/hurd/setauth.c Fri Feb 14 20:27:07 1997 +++ glibc-2.2.4/hurd/setauth.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/seteuids.c glibc-2.2.4/hurd/seteuids.c --- glibc-2.2.3/hurd/seteuids.c Sun Nov 29 02:10:47 1998 +++ glibc-2.2.4/hurd/seteuids.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/siginfo.c glibc-2.2.4/hurd/siginfo.c --- glibc-2.2.3/hurd/siginfo.c Fri Feb 14 20:27:09 1997 +++ glibc-2.2.4/hurd/siginfo.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/sigunwind.c glibc-2.2.4/hurd/sigunwind.c --- glibc-2.2.3/hurd/sigunwind.c Sat Aug 8 13:52:09 1998 +++ glibc-2.2.4/hurd/sigunwind.c Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 "thread_state.h" diff -durpN glibc-2.2.3/hurd/task2pid.c glibc-2.2.4/hurd/task2pid.c --- glibc-2.2.3/hurd/task2pid.c Fri Feb 14 20:27:10 1997 +++ glibc-2.2.4/hurd/task2pid.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/thread-cancel.c glibc-2.2.4/hurd/thread-cancel.c --- glibc-2.2.3/hurd/thread-cancel.c Wed Aug 2 14:52:02 2000 +++ glibc-2.2.4/hurd/thread-cancel.c Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/hurd/thread-self.c glibc-2.2.4/hurd/thread-self.c --- glibc-2.2.3/hurd/thread-self.c Fri Feb 14 20:27:11 1997 +++ glibc-2.2.4/hurd/thread-self.c Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/hurd/vpprintf.c glibc-2.2.4/hurd/vpprintf.c --- glibc-2.2.3/hurd/vpprintf.c Sat Apr 7 14:02:34 2001 +++ glibc-2.2.4/hurd/vpprintf.c Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/iconv/Makefile glibc-2.2.4/iconv/Makefile --- glibc-2.2.3/iconv/Makefile Sat Apr 7 16:38:06 2001 +++ glibc-2.2.4/iconv/Makefile Fri Jul 27 23:13:13 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If -# not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Makefile for iconv. @@ -26,11 +26,12 @@ include ../Makeconfig headers = iconv.h gconv.h routines = iconv_open iconv iconv_close \ gconv_open gconv gconv_close gconv_db gconv_conf \ - gconv_builtin gconv_simple gconv_trans + gconv_builtin gconv_simple gconv_trans gconv_cache ifeq ($(elf),yes) routines += gconv_dl else CFLAGS-gconv_db.c = -DSTATIC_GCONV +CFLAGS-gconv_cache.c = -DSTATIC_GCONV CFLAGS-gconv_simple.c = -DSTATIC_GCONV endif @@ -38,6 +39,7 @@ vpath %.c ../locale/programs iconv_prog-modules = iconv_charmap charmap charmap-dir linereader \ dummy-repertoire simple-hash xstrdup xmalloc +iconvconfig-modules = strtab xmalloc extra-objs = $(iconv_prog-modules:=.o) CFLAGS-iconv_prog.c = -I../locale/programs CFLAGS-iconv_charmap.c = -I../locale/programs @@ -48,12 +50,16 @@ CFLAGS-charmap.c = -DCHARMAP_PATH='"$(i1 tests = tst-iconv1 tst-iconv2 tst-iconv3 distribute = gconv_builtin.h gconv_int.h loop.c skeleton.c iconv_prog.h \ - iconv_charmap.c dummy-repertoire.c gconv_charset.h + iconv_charmap.c dummy-repertoire.c gconv_charset.h strtab.c \ + iconvconfig.h -others = iconv_prog +others = iconv_prog iconvconfig install-others = $(inst_bindir)/iconv +install-sbin = iconvconfig +CFLAGS-gconv_cache.c = -DGCONV_DIR='"$(gconvdir)"' CFLAGS-gconv_conf.c = -DGCONV_PATH='"$(gconvdir)"' +CFLAGS-iconvconfig.c = -DGCONV_PATH='"$(gconvdir)"' -DGCONV_DIR='"$(gconvdir)"' include ../Rules @@ -61,3 +67,4 @@ $(inst_bindir)/iconv: $(objpfx)iconv_pro $(do-install-program) $(objpfx)iconv_prog: $(iconv_prog-modules:%=$(objpfx)%.o) +$(objpfx)iconvconfig: $(iconvconfig-modules:%=$(objpfx)%.o) diff -durpN glibc-2.2.3/iconv/dummy-repertoire.c glibc-2.2.4/iconv/dummy-repertoire.c --- glibc-2.2.3/iconv/dummy-repertoire.c Sun Feb 4 21:47:21 2001 +++ glibc-2.2.4/iconv/dummy-repertoire.c Mon Jul 23 10:53:42 2001 @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper , 2001. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* For iconv we don't have to handle repertoire maps. Provide dummy definitions to allow the use of linereader.c unchanged. */ diff -durpN glibc-2.2.3/iconv/gconv.c glibc-2.2.4/iconv/gconv.c --- glibc-2.2.3/iconv/gconv.c Sun Apr 8 22:19:10 2001 +++ glibc-2.2.4/iconv/gconv.c Mon Jul 23 10:53:42 2001 @@ -5,19 +5,19 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -49,7 +49,8 @@ __gconv (__gconv_t cd, const unsigned ch /* We just flush. */ result = DL_CALL_FCT (cd->__steps->__fct, (cd->__steps, cd->__data, NULL, NULL, NULL, - irreversible, 1, 0)); + irreversible, + cd->__data[last_step].__outbuf == NULL ? 2 : 1, 0)); else { const unsigned char *last_start; diff -durpN glibc-2.2.3/iconv/gconv.h glibc-2.2.4/iconv/gconv.h --- glibc-2.2.3/iconv/gconv.h Fri Dec 1 11:55:02 2000 +++ glibc-2.2.4/iconv/gconv.h Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This header provides no interface for a user to the internals of the gconv implementation in the libc. Therefore there is no use diff -durpN glibc-2.2.3/iconv/gconv_builtin.c glibc-2.2.4/iconv/gconv_builtin.c --- glibc-2.2.3/iconv/gconv_builtin.c Thu Sep 7 11:56:22 2000 +++ glibc-2.2.4/iconv/gconv_builtin.c Mon Jul 23 10:53:42 2001 @@ -1,22 +1,22 @@ /* Table for builtin transformation mapping. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -31,8 +31,6 @@ static struct builtin_map { const char *name; __gconv_fct fct; - __gconv_init_fct init; - __gconv_end_fct end; int min_needed_from; int max_needed_from; @@ -41,13 +39,11 @@ static struct builtin_map } map[] = { -#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, Init, End, MinF, \ - MaxF, MinT, MaxT) \ +#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, MinF, MaxF, \ + MinT, MaxT) \ { \ .name = Name, \ .fct = Fct, \ - .init = Init, \ - .end = End, \ \ .min_needed_from = MinF, \ .max_needed_from = MaxF, \ @@ -73,8 +69,8 @@ __gconv_get_builtin_trans (const char *n assert (cnt < sizeof (map) / sizeof (map[0])); step->__fct = map[cnt].fct; - step->__init_fct = map[cnt].init; - step->__end_fct = map[cnt].end; + step->__init_fct = NULL; + step->__end_fct = NULL; step->__shlib_handle = NULL; step->__modname = NULL; diff -durpN glibc-2.2.3/iconv/gconv_builtin.h glibc-2.2.4/iconv/gconv_builtin.h --- glibc-2.2.3/iconv/gconv_builtin.h Wed Nov 22 10:59:47 2000 +++ glibc-2.2.4/iconv/gconv_builtin.h Mon Jul 23 10:53:42 2001 @@ -1,22 +1,22 @@ /* Builtin transformations. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ BUILTIN_ALIAS ("UCS4//", "ISO-10646/UCS4/") BUILTIN_ALIAS ("UCS-4//", "ISO-10646/UCS4/") @@ -30,18 +30,14 @@ BUILTIN_ALIAS ("OSF00010105//", "ISO-106 BUILTIN_ALIAS ("OSF00010106//", "ISO-10646/UCS4/") /* level 3 */ BUILTIN_TRANSFORMATION ("INTERNAL", "ISO-10646/UCS4/", 1, "=INTERNAL->ucs4", - __gconv_transform_internal_ucs4, NULL, NULL, - 4, 4, 4, 4) + __gconv_transform_internal_ucs4, 4, 4, 4, 4) BUILTIN_TRANSFORMATION ("ISO-10646/UCS4/", "INTERNAL", 1, "=ucs4->INTERNAL", - __gconv_transform_ucs4_internal, NULL, NULL, - 4, 4, 4, 4) + __gconv_transform_ucs4_internal, 4, 4, 4, 4) BUILTIN_TRANSFORMATION ("INTERNAL", "UCS-4LE//", 1, "=INTERNAL->ucs4le", - __gconv_transform_internal_ucs4le, NULL, NULL, - 4, 4, 4, 4) + __gconv_transform_internal_ucs4le, 4, 4, 4, 4) BUILTIN_TRANSFORMATION ("UCS-4LE//", "INTERNAL", 1, "=ucs4le->INTERNAL", - __gconv_transform_ucs4le_internal, NULL, NULL, - 4, 4, 4, 4) + __gconv_transform_ucs4le_internal, 4, 4, 4, 4) BUILTIN_ALIAS ("WCHAR_T//", "INTERNAL") @@ -49,17 +45,13 @@ BUILTIN_ALIAS ("UTF8//", "ISO-10646/UTF8 BUILTIN_ALIAS ("UTF-8//", "ISO-10646/UTF8/") BUILTIN_ALIAS ("ISO-IR-193//", "ISO-10646/UTF8/") BUILTIN_ALIAS ("OSF05010001//", "ISO-10646/UTF8/") +BUILTIN_ALIAS ("ISO-10646/UTF-8/", "ISO-10646/UTF8/") BUILTIN_TRANSFORMATION ("INTERNAL", "ISO-10646/UTF8/", 1, "=INTERNAL->utf8", - __gconv_transform_internal_utf8, NULL, NULL, - 4, 4, 1, 6) + __gconv_transform_internal_utf8, 4, 4, 1, 6) -BUILTIN_TRANSFORMATION ("ISO-10646/UTF-8/", "INTERNAL", 1, "=utf8->INTERNAL", - __gconv_transform_utf8_internal, NULL, NULL, - 1, 6, 4, 4) BUILTIN_TRANSFORMATION ("ISO-10646/UTF8/", "INTERNAL", 1, "=utf8->INTERNAL", - __gconv_transform_utf8_internal, NULL, NULL, - 1, 6, 4, 4) + __gconv_transform_utf8_internal, 1, 6, 4, 4) BUILTIN_ALIAS ("UCS2//", "ISO-10646/UCS2/") BUILTIN_ALIAS ("UCS-2//", "ISO-10646/UCS2/") @@ -68,12 +60,10 @@ BUILTIN_ALIAS ("OSF00010101//", "ISO-106 BUILTIN_ALIAS ("OSF00010102//", "ISO-10646/UCS2/") /* level 3 */ BUILTIN_TRANSFORMATION ("ISO-10646/UCS2/", "INTERNAL", 1, "=ucs2->INTERNAL", - __gconv_transform_ucs2_internal, NULL, NULL, - 2, 2, 4, 4) + __gconv_transform_ucs2_internal, 2, 2, 4, 4) BUILTIN_TRANSFORMATION ("INTERNAL", "ISO-10646/UCS2/", 1, "=INTERNAL->ucs2", - __gconv_transform_internal_ucs2, NULL, NULL, - 4, 4, 2, 2) + __gconv_transform_internal_ucs2, 4, 4, 2, 2) BUILTIN_ALIAS ("ANSI_X3.4//", "ANSI_X3.4-1968//") @@ -90,12 +80,10 @@ BUILTIN_ALIAS ("CSASCII//", "ANSI_X3.4-1 BUILTIN_ALIAS ("OSF00010020//", "ANSI_X3.4-1968//") BUILTIN_TRANSFORMATION ("ANSI_X3.4-1968//", "INTERNAL", 1, "=ascii->INTERNAL", - __gconv_transform_ascii_internal, NULL, NULL, - 4, 4, 1, 1) + __gconv_transform_ascii_internal, 4, 4, 1, 1) BUILTIN_TRANSFORMATION ("INTERNAL", "ANSI_X3.4-1968//", 1, "=INTERNAL->ascii", - __gconv_transform_internal_ascii, NULL, NULL, - 4, 4, 1, 1) + __gconv_transform_internal_ascii, 4, 4, 1, 1) #if BYTE_ORDER == BIG_ENDIAN @@ -106,13 +94,11 @@ BUILTIN_ALIAS ("UCS-2LE//", "UNICODELITT BUILTIN_TRANSFORMATION ("UNICODELITTLE//", "INTERNAL", 1, "=ucs2reverse->INTERNAL", - __gconv_transform_ucs2reverse_internal, NULL, NULL, - 2, 2, 4, 4) + __gconv_transform_ucs2reverse_internal, 2, 2, 4, 4) BUILTIN_TRANSFORMATION ("INTERNAL", "UNICODELITTLE//", 1, "=INTERNAL->ucs2reverse", - __gconv_transform_internal_ucs2reverse, NULL, NULL, - 4, 4, 2, 2) + __gconv_transform_internal_ucs2reverse, 4, 4, 2, 2) #else BUILTIN_ALIAS ("UNICODELITTLE//", "ISO-10646/UCS2/") BUILTIN_ALIAS ("UCS-2LE//", "ISO-10646/UCS2/") @@ -121,11 +107,9 @@ BUILTIN_ALIAS ("UCS-2BE//", "UNICODEBIG/ BUILTIN_TRANSFORMATION ("UNICODEBIG//", "INTERNAL", 1, "=ucs2reverse->INTERNAL", - __gconv_transform_ucs2reverse_internal, NULL, NULL, - 2, 2, 4, 4) + __gconv_transform_ucs2reverse_internal, 2, 2, 4, 4) BUILTIN_TRANSFORMATION ("INTERNAL", "UNICODEBIG//", 1, "=INTERNAL->ucs2reverse", - __gconv_transform_internal_ucs2reverse, NULL, NULL, - 4, 4, 2, 2) + __gconv_transform_internal_ucs2reverse, 4, 4, 2, 2) #endif diff -durpN glibc-2.2.3/iconv/gconv_cache.c glibc-2.2.4/iconv/gconv_cache.c --- glibc-2.2.3/iconv/gconv_cache.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/iconv/gconv_cache.c Fri Jul 27 23:13:13 2001 @@ -0,0 +1,449 @@ +/* Cache handling for iconv modules. + Copyright (C) 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2001. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with 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 +#include +#include +#include + +#include +#include + +#include "../intl/hash-string.h" + +static void *cache; +static size_t cache_size; +static int cache_malloced; + + +int +internal_function +__gconv_load_cache (void) +{ + int fd; + struct stat64 st; + struct gconvcache_header *header; + + /* We cannot use the cache if the GCONV_PATH environment variable is + set. */ + __gconv_path_envvar = getenv ("GCONV_PATH"); + if (__gconv_path_envvar != NULL) + return -1; + + /* See whether the cache file exists. */ + fd = __open (GCONV_MODULES_CACHE, O_RDONLY); + if (__builtin_expect (fd, 0) == -1) + /* Not available. */ + return -1; + + /* Get information about the file. */ + if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0 + /* We do not have to start looking at the file if it cannot contain + at least the cache header. */ + || st.st_size < sizeof (struct gconvcache_header)) + { + close_and_exit: + close (fd); + return -1; + } + + /* Make the file content available. */ + cache_size = st.st_size; +#ifdef _POSIX_MAPPED_FILES + cache = __mmap (NULL, cache_size, PROT_READ, MAP_SHARED, fd, 0); + if (__builtin_expect (cache == MAP_FAILED, 0)) +#endif + { + size_t already_read; + + cache = malloc (cache_size); + if (cache == NULL) + goto close_and_exit; + + already_read = 0; + do + { + ssize_t n = __read (fd, (char *) cache + already_read, + cache_size - already_read); + if (__builtin_expect (n, 0) == -1) + { + free (cache); + cache = NULL; + goto close_and_exit; + } + + already_read += n; + } + while (already_read < cache_size); + + cache_malloced = 1; + } + + /* We don't need the file descriptor anymore. */ + close (fd); + + /* Check the consistency. */ + header = (struct gconvcache_header *) cache; + if (__builtin_expect (header->magic, GCONVCACHE_MAGIC) != GCONVCACHE_MAGIC + || __builtin_expect (header->string_offset >= cache_size, 0) + || __builtin_expect (header->hash_offset >= cache_size, 0) + || __builtin_expect (header->hash_size == 0, 0) + || __builtin_expect ((header->hash_offset + + header->hash_size * sizeof (struct hash_entry)) + > cache_size, 0) + || __builtin_expect (header->module_offset >= cache_size, 0) + || __builtin_expect (header->otherconv_offset > cache_size, 0)) + { + if (cache_malloced) + { + free (cache); + cache_malloced = 0; + } +#ifdef _POSIX_MAPPED_FILES + else + munmap (cache, cache_size); +#endif + cache = NULL; + + return -1; + } + + /* That worked. */ + return 0; +} + + +static int +internal_function +find_module_idx (const char *str, size_t *idxp) +{ + unsigned int idx; + unsigned int hval; + unsigned int hval2; + const struct gconvcache_header *header; + const char *strtab; + const struct hash_entry *hashtab; + unsigned int limit; + + header = (const struct gconvcache_header *) cache; + strtab = (char *) cache + header->string_offset; + hashtab = (struct hash_entry *) ((char *) cache + header->hash_offset); + + hval = hash_string (str); + idx = hval % header->hash_size; + hval2 = 1 + hval % (header->hash_size - 2); + + limit = cache_size - header->string_offset; + while (hashtab[idx].string_offset != 0) + if (hashtab[idx].string_offset < limit + && strcmp (str, strtab + hashtab[idx].string_offset) == 0) + { + *idxp = hashtab[idx].module_idx; + return 0; + } + else + if ((idx += hval2) >= header->hash_size) + idx -= header->hash_size; + + /* Nothing found. */ + return -1; +} + + +static int +internal_function +find_module (const char *directory, const char *filename, + struct __gconv_step *result) +{ + size_t dirlen = strlen (directory); + size_t fnamelen = strlen (filename) + 1; + char fullname[dirlen + fnamelen]; + int status = __GCONV_NOCONV; + + memcpy (__mempcpy (fullname, directory, dirlen), filename, fnamelen); + + result->__shlib_handle = __gconv_find_shlib (fullname); + if (result->__shlib_handle != NULL) + { + status = __GCONV_OK; + + result->__modname = NULL; + result->__fct = result->__shlib_handle->fct; + result->__init_fct = result->__shlib_handle->init_fct; + result->__end_fct = result->__shlib_handle->end_fct; + + result->__data = NULL; + if (result->__init_fct != NULL) + status = DL_CALL_FCT (result->__init_fct, (result)); + } + + return status; +} + + +int +internal_function +__gconv_compare_alias_cache (const char *name1, const char *name2, int *result) +{ + size_t name1_idx; + size_t name2_idx; + + if (cache == NULL) + return -1; + + if (find_module_idx (name1, &name1_idx) != 0 + || find_module_idx (name2, &name2_idx) != 0) + *result = strcmp (name1, name2); + else + *result = (int) (name1_idx - name2_idx); + + return 0; +} + + +int +internal_function +__gconv_lookup_cache (const char *toset, const char *fromset, + struct __gconv_step **handle, size_t *nsteps, int flags) +{ + const struct gconvcache_header *header; + const char *strtab; + size_t fromidx; + size_t toidx; + const struct module_entry *modtab; + const struct module_entry *from_module; + const struct module_entry *to_module; + struct __gconv_step *result; + + if (cache == NULL) + /* We have no cache available. */ + return __GCONV_NODB; + + header = (const struct gconvcache_header *) cache; + strtab = (char *) cache + header->string_offset; + modtab = (const struct module_entry *) ((char *) cache + + header->module_offset); + + if (find_module_idx (fromset, &fromidx) != 0 + || (header->module_offset + (fromidx + 1) * sizeof (struct module_entry) + > cache_size)) + return __GCONV_NOCONV; + from_module = &modtab[fromidx]; + + if (find_module_idx (toset, &toidx) != 0 + || (header->module_offset + (toidx + 1) * sizeof (struct module_entry) + > cache_size)) + return __GCONV_NOCONV; + to_module = &modtab[toidx]; + + /* Avoid copy-only transformations if the user requests. */ + if (__builtin_expect (flags & GCONV_AVOID_NOCONV, 0) && fromidx == toidx) + return __GCONV_NOCONV; + + /* If there are special conversions available examine them first. */ + if (fromidx != 0 && toidx != 0 + && __builtin_expect (from_module->extra_offset, 0) != 0) + { + /* Search through the list to see whether there is a module + matching the destination character set. */ + const struct extra_entry *extra; + + /* Note the -1. This is due to the offset added in iconvconfig. + See there for more explanations. */ + extra = (const struct extra_entry *) ((char *) cache + + header->otherconv_offset + + from_module->extra_offset - 1); + while (extra->module_cnt != 0 + && extra->module[extra->module_cnt - 1].outname_offset != toidx) + extra = (const struct extra_entry *) ((char *) extra + + sizeof (struct extra_entry) + + (extra->module_cnt + * sizeof (struct extra_entry_module))); + + if (extra->module_cnt != 0) + { + /* Use the extra module. First determine how many steps. */ + char *fromname; + int idx; + + *nsteps = extra->module_cnt; + *handle = result = + (struct __gconv_step *) malloc (extra->module_cnt + * sizeof (struct __gconv_step)); + if (result == NULL) + return __GCONV_NOMEM; + + fromname = (char *) strtab + from_module->canonname_offset; + idx = 0; + do + { + result[idx].__from_name = fromname; + fromname = result[idx].__to_name = + (char *) strtab + modtab[extra->module[idx].outname_offset].canonname_offset; + + result[idx].__counter = 1; + result[idx].__data = NULL; + +#ifndef STATIC_GCONV + if (strtab[extra->module[idx].dir_offset] != '\0') + { + /* Load the module, return handle for it. */ + int res; + + res = find_module (strtab + extra->module[idx].dir_offset, + strtab + extra->module[idx].name_offset, + &result[idx]); + if (__builtin_expect (res, __GCONV_OK) != __GCONV_OK) + { + /* Something went wrong. */ + free (result); + goto try_internal; + } + } + else +#endif + /* It's a builtin transformation. */ + __gconv_get_builtin_trans (strtab + + extra->module[idx].name_offset, + &result[idx]); + + } + while (++idx < extra->module_cnt); + + return __GCONV_OK; + } + } + + try_internal: + /* See whether we can convert via the INTERNAL charset. */ + if ((fromidx != 0 && __builtin_expect (from_module->fromname_offset, 1) == 0) + || (toidx != 0 && __builtin_expect (to_module->toname_offset, 1) == 0) + || (fromidx == 0 && toidx == 0)) + /* Not possible. Nothing we can do. */ + return __GCONV_NOCONV; + + /* We will use up to two modules. Always allocate room for two. */ + result = (struct __gconv_step *) malloc (2 * sizeof (struct __gconv_step)); + if (result == NULL) + return __GCONV_NOMEM; + + *handle = result; + *nsteps = 0; + + /* Generate data structure for conversion to INTERNAL. */ + if (fromidx != 0) + { + result[0].__from_name = (char *) strtab + from_module->canonname_offset; + result[0].__to_name = (char *) "INTERNAL"; + + result[0].__counter = 1; + result[0].__data = NULL; + +#ifndef STATIC_GCONV + if (strtab[from_module->todir_offset] != '\0') + { + /* Load the module, return handle for it. */ + int res = find_module (strtab + from_module->todir_offset, + strtab + from_module->toname_offset, + &result[0]); + if (__builtin_expect (res, __GCONV_OK) != __GCONV_OK) + { + /* Something went wrong. */ + free (result); + return res; + } + } + else +#endif + /* It's a builtin transformation. */ + __gconv_get_builtin_trans (strtab + from_module->toname_offset, + &result[0]); + + ++*nsteps; + } + + /* Generate data structure for conversion from INTERNAL. */ + if (toidx != 0) + { + int idx = *nsteps; + + result[idx].__from_name = (char *) "INTERNAL"; + result[idx].__to_name = (char *) strtab + to_module->canonname_offset; + + result[idx].__counter = 1; + result[idx].__data = NULL; + +#ifndef STATIC_GCONV + if (strtab[to_module->fromdir_offset] != '\0') + { + /* Load the module, return handle for it. */ + int res = find_module (strtab + to_module->fromdir_offset, + strtab + to_module->fromname_offset, + &result[idx]); + if (__builtin_expect (res, __GCONV_OK) != __GCONV_OK) + { + /* Something went wrong. */ + if (idx != 0) + __gconv_release_step (&result[0]); + free (result); + return res; + } + } + else +#endif + /* It's a builtin transformation. */ + __gconv_get_builtin_trans (strtab + to_module->fromname_offset, + &result[idx]); + + ++*nsteps; + } + + return __GCONV_OK; +} + + +/* Free memory allocated for the transformation record. */ +void +internal_function +__gconv_release_cache (struct __gconv_step *steps, size_t nsteps) +{ + if (cache != NULL) + /* The only thing we have to deallocate is the record with the + steps. */ + free (steps); +} + + +/* Free all resources if necessary. */ +static void __attribute__ ((unused)) +free_mem (void) +{ + if (cache_malloced) + free (cache); +#ifdef _POSIX_MAPPED_FILES + else + munmap (cache, cache_size); +#endif +} + +text_set_element (__libc_subfreeres, free_mem); diff -durpN glibc-2.2.3/iconv/gconv_charset.h glibc-2.2.4/iconv/gconv_charset.h --- glibc-2.2.3/iconv/gconv_charset.h Fri Apr 6 10:32:46 2001 +++ glibc-2.2.4/iconv/gconv_charset.h Wed Aug 15 18:50:04 2001 @@ -4,21 +4,22 @@ Contributed by Ulrich Drepper , 2001. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 inline void @@ -28,8 +29,9 @@ strip (char *wp, const char *s) while (*s != '\0') { - if (isalnum (*s) || *s == '_' || *s == '-' || *s == '.') - *wp++ = toupper (*s); + if (__isalnum_l (*s, &_nl_C_locobj) + || *s == '_' || *s == '-' || *s == '.') + *wp++ = __toupper_l (*s, &_nl_C_locobj); else if (*s == '/') { if (++slash_count == 3) @@ -46,15 +48,16 @@ strip (char *wp, const char *s) } -static char * +static char * __attribute__ ((unused)) upstr (char *dst, const char *str) { char *cp = dst; - while ((*cp++ = toupper (*str++)) != '\0') + while ((*cp++ = __toupper_l (*str++, &_nl_C_locobj)) != '\0') /* nothing */; return dst; } /* If NAME is an codeset alias expand it. */ -extern const char *__gconv_lookup_alias (const char *name); +extern int __gconv_compare_alias (const char *name1, const char *name2) + internal_function; diff -durpN glibc-2.2.3/iconv/gconv_close.c glibc-2.2.4/iconv/gconv_close.c --- glibc-2.2.3/iconv/gconv_close.c Wed Jun 21 11:10:55 2000 +++ glibc-2.2.4/iconv/gconv_close.c Mon Jul 23 10:53:42 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/iconv/gconv_conf.c glibc-2.2.4/iconv/gconv_conf.c --- glibc-2.2.3/iconv/gconv_conf.c Sat Apr 7 14:02:34 2001 +++ glibc-2.2.4/iconv/gconv_conf.c Wed Aug 15 18:50:04 2001 @@ -4,27 +4,29 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 +#include #include #include #include +#include #include #include #include @@ -59,8 +61,8 @@ static const char gconv_module_ext[] = M /* We have a few builtin transformations. */ static struct gconv_module builtin_modules[] = { -#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, Init, End, MinF, \ - MaxF, MinT, MaxT) \ +#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, MinF, MaxF, \ + MinT, MaxT) \ { \ from_string: From, \ to_string: To, \ @@ -78,8 +80,8 @@ static struct gconv_module builtin_modul static const char *builtin_aliases[] = { -#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, Init, End, MinF, \ - MaxF, MinT, MaxT) +#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, MinF, MaxF, \ + MinT, MaxT) #define BUILTIN_ALIAS(From, To) From " " To, #include "gconv_builtin.h" @@ -91,6 +93,10 @@ static const char *builtin_aliases[] = #endif +/* Value of the GCONV_PATH environment variable. */ +const char *__gconv_path_envvar; + + /* Test whether there is already a matching module known. */ static int internal_function @@ -124,20 +130,20 @@ add_alias (char *rp, void *modules) struct gconv_alias *new_alias; char *from, *to, *wp; - while (isspace (*rp)) + while (__isspace_l (*rp, &_nl_C_locobj)) ++rp; from = wp = rp; - while (*rp != '\0' && !isspace (*rp)) - *wp++ = toupper (*rp++); + while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) + *wp++ = __toupper_l (*rp++, &_nl_C_locobj); if (*rp == '\0') /* There is no `to' string on the line. Ignore it. */ return; *wp++ = '\0'; to = ++rp; - while (isspace (*rp)) + while (__isspace_l (*rp, &_nl_C_locobj)) ++rp; - while (*rp != '\0' && !isspace (*rp)) - *wp++ = toupper (*rp++); + while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) + *wp++ = __toupper_l (*rp++, &_nl_C_locobj); if (to == wp) /* No `to' string, ignore the line. */ return; @@ -245,30 +251,30 @@ add_module (char *rp, const char *direct int need_ext; int cost_hi; - while (isspace (*rp)) + while (__isspace_l (*rp, &_nl_C_locobj)) ++rp; from = rp; - while (*rp != '\0' && !isspace (*rp)) + while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) { - *rp = toupper (*rp); + *rp = __toupper_l (*rp, &_nl_C_locobj); ++rp; } if (*rp == '\0') return; *rp++ = '\0'; to = wp = rp; - while (isspace (*rp)) + while (__isspace_l (*rp, &_nl_C_locobj)) ++rp; - while (*rp != '\0' && !isspace (*rp)) - *wp++ = toupper (*rp++); + while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) + *wp++ = __toupper_l (*rp++, &_nl_C_locobj); if (*rp == '\0') return; *wp++ = '\0'; do ++rp; - while (isspace (*rp)); + while (__isspace_l (*rp, &_nl_C_locobj)); module = wp; - while (*rp != '\0' && !isspace (*rp)) + while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) *wp++ = *rp++; if (*rp == '\0') { @@ -358,6 +364,9 @@ read_conf_file (const char *filename, co if (fp == NULL) return; + /* No threads reading from this stream. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); + /* Process the known entries of the file. Comments start with `#' and end with the end of the line. Empty lines are ignored. */ while (!feof_unlocked (fp)) @@ -378,7 +387,7 @@ read_conf_file (const char *filename, co if (rp[n - 1] == '\n') rp[n - 1] = '\0'; - while (isspace (*rp)) + while (__isspace_l (*rp, &_nl_C_locobj)) ++rp; /* If this is an empty line go on with the next one. */ @@ -386,7 +395,7 @@ read_conf_file (const char *filename, co continue; word = rp; - while (*rp != '\0' && !isspace (*rp)) + while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) ++rp; if (rp - word == sizeof ("alias") - 1 @@ -419,7 +428,6 @@ __gconv_get_path (void) if (result == NULL) { /* Determine the complete path first. */ - const char *user_path; char *gconv_path; size_t gconv_path_len; char *elem; @@ -429,8 +437,7 @@ __gconv_get_path (void) char *cwd; size_t cwdlen; - user_path = getenv ("GCONV_PATH"); - if (user_path == NULL) + if (__gconv_path_envvar == NULL) { /* No user-defined path. Make a modifiable copy of the default path. */ @@ -442,11 +449,12 @@ __gconv_get_path (void) else { /* Append the default path to the user-defined path. */ - size_t user_len = strlen (user_path); + size_t user_len = strlen (__gconv_path_envvar); gconv_path_len = user_len + 1 + sizeof (default_gconv_path); gconv_path = alloca (gconv_path_len); - __mempcpy (__mempcpy (__mempcpy (gconv_path, user_path, user_len), + __mempcpy (__mempcpy (__mempcpy (gconv_path, __gconv_path_envvar, + user_len), ":", 1), default_gconv_path, sizeof (default_gconv_path)); cwd = __getcwd (NULL, 0); @@ -526,6 +534,15 @@ __gconv_read_conf (void) int save_errno = errno; size_t cnt; + /* First see whether we should use the cache. */ + if (__gconv_load_cache () == 0) + { + /* Yes, we are done. */ + __set_errno (save_errno); + return; + } + +#ifndef STATIC_GCONV /* Find out where we have to look. */ if (__gconv_path_elem == NULL) __gconv_get_path (); @@ -545,6 +562,7 @@ __gconv_read_conf (void) /* Read the next configuration file. */ read_conf_file (filename, elem, elem_len, &modules, &nmodules); } +#endif /* Add the internal modules. */ for (cnt = 0; cnt < sizeof (builtin_modules) / sizeof (builtin_modules[0]); diff -durpN glibc-2.2.3/iconv/gconv_db.c glibc-2.2.4/iconv/gconv_db.c --- glibc-2.2.3/iconv/gconv_db.c Tue Apr 17 08:17:12 2001 +++ glibc-2.2.4/iconv/gconv_db.c Fri Jul 27 23:13:13 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -178,8 +178,9 @@ free_derivation (void *p) /* Decrement the reference count for a single step in a steps array. */ -static inline void -release_step (struct __gconv_step *step) +void +internal_function +__gconv_release_step (struct __gconv_step *step) { if (--step->__counter == 0) { @@ -231,6 +232,9 @@ gen_steps (struct derivation_step *best, ? __strdup (current->result_set) : result[step_cnt + 1].__from_name); + result[step_cnt].__counter = 1; + result[step_cnt].__data = NULL; + #ifndef STATIC_GCONV if (current->code->module_name[0] == '/') { @@ -249,6 +253,22 @@ gen_steps (struct derivation_step *best, result[step_cnt].__fct = shlib_handle->fct; result[step_cnt].__init_fct = shlib_handle->init_fct; result[step_cnt].__end_fct = shlib_handle->end_fct; + + /* Call the init function. */ + if (result[step_cnt].__init_fct != NULL) + { + status = DL_CALL_FCT (result[step_cnt].__init_fct, + (&result[step_cnt])); + + if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK) + { + failed = 1; + /* Make sure we unload this modules. */ + --step_cnt; + result[step_cnt].__end_fct = NULL; + break; + } + } } else #endif @@ -256,25 +276,6 @@ gen_steps (struct derivation_step *best, __gconv_get_builtin_trans (current->code->module_name, &result[step_cnt]); - result[step_cnt].__counter = 1; - - /* Call the init function. */ - result[step_cnt].__data = NULL; - if (result[step_cnt].__init_fct != NULL) - { - status = DL_CALL_FCT (result[step_cnt].__init_fct, - (&result[step_cnt])); - - if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK) - { - failed = 1; - /* Make sure we unload this modules. */ - --step_cnt; - result[step_cnt].__end_fct = NULL; - break; - } - } - current = current->last; } @@ -282,7 +283,7 @@ gen_steps (struct derivation_step *best, { /* Something went wrong while initializing the modules. */ while (++step_cnt < *nsteps) - release_step (&result[step_cnt]); + __gconv_release_step (&result[step_cnt]); free (result); *nsteps = 0; *handle = NULL; @@ -328,7 +329,7 @@ increment_counter (struct __gconv_step * (after unloading) and this time loading failed!? */ --step->__counter; while (++cnt < nsteps) - release_step (&steps[cnt]); + __gconv_release_step (&steps[cnt]); result = __GCONV_NOCONV; break; } @@ -631,13 +632,20 @@ do_lookup_alias (const char *name) } -const char * -__gconv_lookup_alias (const char *name) +int +internal_function +__gconv_compare_alias (const char *name1, const char *name2) { + int result; + /* Ensure that the configuration data is read. */ __libc_once (once, __gconv_read_conf); - return do_lookup_alias (name) ?: name; + if (__gconv_compare_alias_cache (name1, name2, &result) != 0) + result = strcmp (do_lookup_alias (name1) ?: name1, + do_lookup_alias (name2) ?: name2); + + return result; } @@ -647,8 +655,8 @@ __gconv_find_transform (const char *tose struct __gconv_step **handle, size_t *nsteps, int flags) { - const char *fromset_expand = NULL; - const char *toset_expand = NULL; + const char *fromset_expand; + const char *toset_expand; int result; /* Ensure that the configuration data is read. */ @@ -657,6 +665,14 @@ __gconv_find_transform (const char *tose /* Acquire the lock. */ __libc_lock_lock (lock); + result = __gconv_lookup_cache (toset, fromset, handle, nsteps, flags); + if (result != __GCONV_NODB) + { + /* We have a cache and could resolve the request, successful or not. */ + __libc_lock_unlock (lock); + return result; + } + /* If we don't have a module database return with an error. */ if (__gconv_modules_db == NULL) { @@ -665,11 +681,8 @@ __gconv_find_transform (const char *tose } /* See whether the names are aliases. */ - if (__gconv_alias_db != NULL) - { - fromset_expand = do_lookup_alias (fromset); - toset_expand = do_lookup_alias (toset); - } + fromset_expand = do_lookup_alias (fromset); + toset_expand = do_lookup_alias (toset); if (__builtin_expect (flags & GCONV_AVOID_NOCONV, 0) /* We are not supposed to create a pseudo transformation (means @@ -707,17 +720,24 @@ internal_function __gconv_close_transform (struct __gconv_step *steps, size_t nsteps) { int result = __GCONV_OK; + size_t cnt; -#ifndef STATIC_GCONV /* Acquire the lock. */ __libc_lock_lock (lock); - while (nsteps-- > 0) - release_step (&steps[nsteps]); +#ifndef STATIC_GCONV + cnt = nsteps; + while (cnt-- > 0) + __gconv_release_step (&steps[cnt]); +#endif + + /* If we use the cache we free a bit more since we don't keep any + transformation records around, they are cheap enough to + recreate. */ + __gconv_release_cache (steps, nsteps); /* Release the lock. */ __libc_lock_unlock (lock); -#endif return result; } diff -durpN glibc-2.2.3/iconv/gconv_dl.c glibc-2.2.4/iconv/gconv_dl.c --- glibc-2.2.3/iconv/gconv_dl.c Wed Nov 22 10:59:47 2000 +++ glibc-2.2.4/iconv/gconv_dl.c Fri Jul 27 23:13:13 2001 @@ -1,22 +1,22 @@ /* Handle loading/unloading of shared object for transformation. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -83,11 +83,13 @@ __gconv_find_shlib (const char *name) if (keyp == NULL) { /* This name was not known before. */ - found = malloc (sizeof (struct __gconv_loaded_object)); + size_t namelen = strlen (name) + 1; + + found = malloc (sizeof (struct __gconv_loaded_object) + namelen); if (found != NULL) { /* Point the tree node at this new structure. */ - found->name = name; + found->name = (char *) memcpy (found + 1, name, namelen); found->counter = -TRIES_BEFORE_UNLOAD - 1; found->handle = NULL; diff -durpN glibc-2.2.3/iconv/gconv_int.h glibc-2.2.4/iconv/gconv_int.h --- glibc-2.2.3/iconv/gconv_int.h Wed Nov 22 10:59:47 2000 +++ glibc-2.2.4/iconv/gconv_int.h Wed Aug 15 18:50:04 2001 @@ -1,21 +1,21 @@ -/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _GCONV_INT_H #define _GCONV_INT_H 1 @@ -38,7 +38,7 @@ extern struct path_elem *__gconv_path_el extern size_t __gconv_max_path_elem_len; -/* Structure for alias definition. Simply to strings. */ +/* Structure for alias definition. Simply two strings. */ struct gconv_alias { char *fromname; @@ -120,6 +120,9 @@ extern void *__gconv_alias_db; extern size_t __gconv_nmodules; extern struct gconv_module *__gconv_modules_db; +/* Value of the GCONV_PATH environment variable. */ +extern const char *__gconv_path_envvar; + /* The gconv functions expects the name to be in upper case and complete, including the trailing slashes if necessary. */ @@ -138,7 +141,7 @@ extern struct gconv_module *__gconv_modu tmp = result = alloca (cp - (str) + 3 + suffix_len); \ cp = (str); \ while (*cp != '\0') \ - *tmp++ = _toupper (*cp++); \ + *tmp++ = __toupper_l (*cp++, &_nl_C_locobj); \ if (cnt < 2) \ { \ *tmp++ = '/'; \ @@ -179,9 +182,28 @@ extern int __gconv_find_transform (const size_t *nsteps, int flags) internal_function; +/* Search for transformation in cache data. */ +extern int __gconv_lookup_cache (const char *toset, const char *fromset, + struct __gconv_step **handle, size_t *nsteps, + int flags) + internal_function; + +/* Compare the two name for whether they are after alias expansion the + same. This function uses the cache and fails if none is + loaded. */ +extern int __gconv_compare_alias_cache (const char *name1, const char *name2, + int *result) internal_function; + +/* Free data associated with a step's structure. */ +extern void __gconv_release_step (struct __gconv_step *step) + internal_function; + /* Read all the configuration data and cache it. */ extern void __gconv_read_conf (void); +/* Try to read module cache file. */ +extern int __gconv_load_cache (void) internal_function; + /* Determine the directories we are looking in. */ extern void __gconv_get_path (void); @@ -192,6 +214,11 @@ extern int __gconv_alias_compare (const cause the code to be unloaded. */ extern int __gconv_close_transform (struct __gconv_step *steps, size_t nsteps) + internal_function; + +/* Free all resources allocated for the transformation record when + using the cache. */ +extern void __gconv_release_cache (struct __gconv_step *steps, size_t nsteps) internal_function; /* Load shared object named by NAME. If already loaded increment reference diff -durpN glibc-2.2.3/iconv/gconv_open.c glibc-2.2.4/iconv/gconv_open.c --- glibc-2.2.3/iconv/gconv_open.c Fri Feb 9 10:04:05 2001 +++ glibc-2.2.4/iconv/gconv_open.c Wed Aug 15 18:50:05 2001 @@ -4,21 +4,22 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -64,7 +65,7 @@ __gconv_open (const char *toset, const c tok = __strtok_r (tok, ",", &ptr); while (tok != NULL) { - if (__strcasecmp (tok, "TRANSLIT") == 0) + if (__strcasecmp_l (tok, "TRANSLIT", &_nl_C_locobj) == 0) { /* It's the builtin transliteration handling. We only support it for working on the internal encoding. */ @@ -97,7 +98,7 @@ __gconv_open (const char *toset, const c lastp->next = newp; } } - else if (__strcasecmp (tok, "IGNORE") == 0) + else if (__strcasecmp_l (tok, "IGNORE", &_nl_C_locobj) == 0) /* Set the flag to ignore all errors. */ conv_flags |= __GCONV_IGNORE_ERRORS; else @@ -110,7 +111,8 @@ __gconv_open (const char *toset, const c for (runp = trans; runp != NULL; runp = runp->next) if (runp->name != NULL - && __strcasecmp (tok, runp->name) == 0) + && __strcasecmp_l (tok, runp->name, + &_nl_C_locobj) == 0) break; else lastp = runp; @@ -205,8 +207,8 @@ __gconv_open (const char *toset, const c modules for this step. */ for (runp = trans; runp != NULL; runp = runp->next) for (n = 0; n < runp->ncsnames; ++n) - if (__strcasecmp (steps[cnt].__from_name, - runp->csnames[n]) == 0) + if (__strcasecmp_l (steps[cnt].__from_name, + runp->csnames[n], &_nl_C_locobj) == 0) { void *data = NULL; diff -durpN glibc-2.2.3/iconv/gconv_simple.c glibc-2.2.4/iconv/gconv_simple.c --- glibc-2.2.3/iconv/gconv_simple.c Sun Apr 8 22:19:10 2001 +++ glibc-2.2.4/iconv/gconv_simple.c Sat Aug 4 12:31:42 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -30,8 +30,8 @@ #include #define BUILTIN_ALIAS(s1, s2) /* nothing */ -#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, Init, End, MinF, \ - MaxF, MinT, MaxT) \ +#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, MinF, MaxF, \ + MinT, MaxT) \ extern int Fct (struct __gconv_step *, struct __gconv_step_data *, \ __const unsigned char **, __const unsigned char *, \ unsigned char **, size_t *, int, int); @@ -161,7 +161,7 @@ internal_ucs4_loop_single (struct __gcon while (*inptrp < inend && cnt < 4) state->__value.__wchb[cnt++] = *(*inptrp)++; - if (__builtin_expect (cnt, 4) < 4) + if (__builtin_expect (cnt < 4, 0)) { /* Still not enough bytes. Store the ones in the input buffer. */ state->__count &= ~7; @@ -229,7 +229,7 @@ ucs4_internal_loop (struct __gconv_step inval = *(const uint32_t *) inptr; #endif - if (__builtin_expect (inval, 0) > 0x7fffffff) + if (__builtin_expect (inval > 0x7fffffff, 0)) { /* The value is too large. We don't try transliteration here since this is not an error because of the lack of possibilities to @@ -286,7 +286,7 @@ ucs4_internal_loop_unaligned (struct __g for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) { - if (__builtin_expect (inptr[0], 0) > 0x80) + if (__builtin_expect (inptr[0] > 0x80, 0)) { /* The value is too large. We don't try transliteration here since this is not an error because of the lack of possibilities to @@ -353,7 +353,7 @@ ucs4_internal_loop_single (struct __gcon while (*inptrp < inend && cnt < 4) state->__value.__wchb[cnt++] = *(*inptrp)++; - if (__builtin_expect (cnt, 4) < 4) + if (__builtin_expect (cnt < 4, 0)) { /* Still not enough bytes. Store the ones in the input buffer. */ state->__count &= ~7; @@ -362,8 +362,8 @@ ucs4_internal_loop_single (struct __gcon return __GCONV_INCOMPLETE_INPUT; } - if (__builtin_expect (((unsigned char *) state->__value.__wchb)[0], 0) - > 0x80) + if (__builtin_expect (((unsigned char *) state->__value.__wchb)[0] > 0x80, + 0)) { /* The value is too large. We don't try transliteration here since this is not an error because of the lack of possibilities to @@ -515,7 +515,7 @@ internal_ucs4le_loop_single (struct __gc while (*inptrp < inend && cnt < 4) state->__value.__wchb[cnt++] = *(*inptrp)++; - if (__builtin_expect (cnt, 4) < 4) + if (__builtin_expect (cnt < 4, 0)) { /* Still not enough bytes. Store the ones in the input buffer. */ state->__count &= ~7; @@ -580,7 +580,7 @@ ucs4le_internal_loop (struct __gconv_ste inval = *(const uint32_t *) inptr; #endif - if (__builtin_expect (inval, 0) > 0x7fffffff) + if (__builtin_expect (inval > 0x7fffffff, 0)) { /* The value is too large. We don't try transliteration here since this is not an error because of the lack of possibilities to @@ -635,7 +635,7 @@ ucs4le_internal_loop_unaligned (struct _ for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) { - if (__builtin_expect (inptr[3], 0) > 0x80) + if (__builtin_expect (inptr[3] > 0x80, 0)) { /* The value is too large. We don't try transliteration here since this is not an error because of the lack of possibilities to @@ -703,7 +703,7 @@ ucs4le_internal_loop_single (struct __gc while (*inptrp < inend && cnt < 4) state->__value.__wchb[cnt++] = *(*inptrp)++; - if (__builtin_expect (cnt, 4) < 4) + if (__builtin_expect (cnt < 4, 0)) { /* Still not enough bytes. Store the ones in the input buffer. */ state->__count &= ~7; @@ -712,8 +712,8 @@ ucs4le_internal_loop_single (struct __gc return __GCONV_INCOMPLETE_INPUT; } - if (__builtin_expect (((unsigned char *) state->__value.__wchb)[3], 0) - > 0x80) + if (__builtin_expect (((unsigned char *) state->__value.__wchb)[3] > 0x80, + 0)) { /* The value is too large. We don't try transliteration here since this is not an error because of the lack of possibilities to @@ -764,7 +764,7 @@ ucs4le_internal_loop_single (struct __gc #define LOOPFCT FROM_LOOP #define BODY \ { \ - if (__builtin_expect (*inptr, 0) > '\x7f') \ + if (__builtin_expect (*inptr > '\x7f', 0)) \ { \ /* The value is too large. We don't try transliteration here since \ this is not an error because of the lack of possibilities to \ @@ -805,8 +805,9 @@ ucs4le_internal_loop_single (struct __gc #define LOOPFCT FROM_LOOP #define BODY \ { \ - if (__builtin_expect (*((const uint32_t *) inptr), 0) > 0x7f) \ + if (__builtin_expect (*((const uint32_t *) inptr) > 0x7f, 0)) \ { \ + UNICODE_TAG_HANDLER (*((const uint32_t *) inptr), 4); \ STANDARD_ERR_HANDLER (4); \ } \ else \ @@ -838,13 +839,10 @@ ucs4le_internal_loop_single (struct __gc { \ uint32_t wc = *((const uint32_t *) inptr); \ \ - /* Since we control every character we read this cannot happen. */ \ - assert (wc <= 0x7fffffff); \ - \ if (wc < 0x80) \ /* It's an one byte sequence. */ \ *outptr++ = (unsigned char) wc; \ - else \ + else if (__builtin_expect (wc <= 0x7fffffff, 1)) \ { \ size_t step; \ char *start; \ @@ -872,9 +870,14 @@ ucs4le_internal_loop_single (struct __gc while (--step > 0); \ start[0] |= wc; \ } \ + else \ + { \ + STANDARD_ERR_HANDLER (4); \ + } \ \ inptr += 4; \ } +#define LOOP_NEED_FLAGS #include #include @@ -920,25 +923,25 @@ ucs4le_internal_loop_single (struct __gc cnt = 2; \ ch &= 0x1f; \ } \ - else if (__builtin_expect (ch & 0xf0, 0xe0) == 0xe0) \ + else if (__builtin_expect ((ch & 0xf0) == 0xe0, 1)) \ { \ /* We expect three bytes. */ \ cnt = 3; \ ch &= 0x0f; \ } \ - else if (__builtin_expect (ch & 0xf8, 0xf0) == 0xf0) \ + else if (__builtin_expect ((ch & 0xf8) == 0xf0, 1)) \ { \ /* We expect four bytes. */ \ cnt = 4; \ ch &= 0x07; \ } \ - else if (__builtin_expect (ch & 0xfc, 0xf8) == 0xf8) \ + else if (__builtin_expect ((ch & 0xfc) == 0xf8, 1)) \ { \ /* We expect five bytes. */ \ cnt = 5; \ ch &= 0x03; \ } \ - else if (__builtin_expect (ch & 0xfe, 0xfc) == 0xfc) \ + else if (__builtin_expect ((ch & 0xfe) == 0xfc, 1)) \ { \ /* We expect six bytes. */ \ cnt = 6; \ @@ -1051,19 +1054,19 @@ ucs4le_internal_loop_single (struct __gc cnt = 2; \ ch &= 0x1f; \ } \ - else if (__builtin_expect (ch & 0xf0, 0xe0) == 0xe0) \ + else if (__builtin_expect ((ch & 0xf0) == 0xe0, 1)) \ { \ /* We expect three bytes. */ \ cnt = 3; \ ch &= 0x0f; \ } \ - else if (__builtin_expect (ch & 0xf8, 0xf0) == 0xf0) \ + else if (__builtin_expect ((ch & 0xf8) == 0xf0, 1)) \ { \ /* We expect four bytes. */ \ cnt = 4; \ ch &= 0x07; \ } \ - else if (__builtin_expect (ch & 0xfc, 0xf8) == 0xf8) \ + else if (__builtin_expect ((ch & 0xfc) == 0xf8, 1)) \ { \ /* We expect five bytes. */ \ cnt = 5; \ @@ -1103,17 +1106,17 @@ ucs4le_internal_loop_single (struct __gc bytebuf[0] = 0xc0; \ ntotal = 2; \ } \ - else if (__builtin_expect (state->__value.__wch, 0) <= 0xffff) \ + else if (__builtin_expect (state->__value.__wch <= 0xffff, 1)) \ { \ bytebuf[0] = 0xe0; \ ntotal = 3; \ } \ - else if (__builtin_expect (state->__value.__wch, 0) <= 0x1fffff) \ + else if (__builtin_expect (state->__value.__wch < 0x1fffff, 1)) \ { \ bytebuf[0] = 0xf0; \ ntotal = 4; \ } \ - else if (__builtin_expect (state->__value.__wch, 0) <= 0x3ffffff) \ + else if (__builtin_expect (state->__value.__wch < 0x3ffffff, 1)) \ { \ bytebuf[0] = 0xf8; \ ntotal = 5; \ @@ -1197,8 +1200,9 @@ ucs4le_internal_loop_single (struct __gc { \ uint32_t val = *((const uint32_t *) inptr); \ \ - if (__builtin_expect (val, 0) >= 0x10000) \ + if (__builtin_expect (val >= 0x10000, 0)) \ { \ + UNICODE_TAG_HANDLER (val, 4); \ STANDARD_ERR_HANDLER (4); \ } \ else if (__builtin_expect (val >= 0xd800 && val < 0xe000, 0)) \ @@ -1286,8 +1290,9 @@ ucs4le_internal_loop_single (struct __gc #define BODY \ { \ uint32_t val = *((const uint32_t *) inptr); \ - if (__builtin_expect (val, 0) >= 0x10000) \ + if (__builtin_expect (val >= 0x10000, 0)) \ { \ + UNICODE_TAG_HANDLER (val, 4); \ STANDARD_ERR_HANDLER (4); \ } \ else if (__builtin_expect (val >= 0xd800 && val < 0xe000, 0)) \ diff -durpN glibc-2.2.3/iconv/gconv_trans.c glibc-2.2.4/iconv/gconv_trans.c --- glibc-2.2.3/iconv/gconv_trans.c Fri Feb 9 10:04:05 2001 +++ glibc-2.2.4/iconv/gconv_trans.c Mon Jul 23 10:53:42 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 2000. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/iconv/iconv.c glibc-2.2.4/iconv/iconv.c --- glibc-2.2.3/iconv/iconv.c Tue Jun 13 13:17:35 2000 +++ glibc-2.2.4/iconv/iconv.c Mon Jul 23 10:53:42 2001 @@ -5,19 +5,19 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include /* for NULL */ #include diff -durpN glibc-2.2.3/iconv/iconv.h glibc-2.2.4/iconv/iconv.h --- glibc-2.2.3/iconv/iconv.h Fri May 26 12:38:28 2000 +++ glibc-2.2.4/iconv/iconv.h Mon Jul 23 10:53:42 2001 @@ -2,19 +2,19 @@ This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _ICONV_H #define _ICONV_H 1 diff -durpN glibc-2.2.3/iconv/iconv_charmap.c glibc-2.2.4/iconv/iconv_charmap.c --- glibc-2.2.3/iconv/iconv_charmap.c Sun Feb 4 21:47:59 2001 +++ glibc-2.2.4/iconv/iconv_charmap.c Mon Jul 23 10:53:42 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 2001. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/iconv/iconv_close.c glibc-2.2.4/iconv/iconv_close.c --- glibc-2.2.3/iconv/iconv_close.c Fri Apr 21 12:25:18 2000 +++ glibc-2.2.4/iconv/iconv_close.c Mon Jul 23 10:53:42 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/iconv/iconv_open.c glibc-2.2.4/iconv/iconv_open.c --- glibc-2.2.3/iconv/iconv_open.c Sat Apr 7 14:02:34 2001 +++ glibc-2.2.4/iconv/iconv_open.c Mon Jul 23 10:53:42 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/iconv/iconv_prog.c glibc-2.2.4/iconv/iconv_prog.c --- glibc-2.2.3/iconv/iconv_prog.c Wed Apr 25 14:50:58 2001 +++ glibc-2.2.4/iconv/iconv_prog.c Mon Jul 23 10:53:43 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1998. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -246,8 +246,10 @@ main (int argc, char *argv[]) else do { +#ifdef _POSIX_MAPPED_FILES struct stat st; char *addr; +#endif int fd; if (verbose) diff -durpN glibc-2.2.3/iconv/iconv_prog.h glibc-2.2.4/iconv/iconv_prog.h --- glibc-2.2.3/iconv/iconv_prog.h Sun Feb 4 21:48:13 2001 +++ glibc-2.2.4/iconv/iconv_prog.h Mon Jul 23 10:53:43 2001 @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper , 2001. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _ICONV_PROG_H #define _ICONV_PROG_H 1 diff -durpN glibc-2.2.3/iconv/iconvconfig.c glibc-2.2.4/iconv/iconvconfig.c --- glibc-2.2.3/iconv/iconvconfig.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/iconv/iconvconfig.c Fri Jul 27 23:13:13 2001 @@ -0,0 +1,1165 @@ +/* Generate fastloading iconv module configuration files. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2000. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "iconvconfig.h" + +/* Get libc version number. */ +#include "../version.h" + +#define PACKAGE _libc_intl_domainname + + +/* The hashing function we use. */ +#include "../intl/hash-string.h" + + +/* Types used. */ +struct module +{ + char *fromname; + struct Strent *fromname_strent; + char *filename; + struct Strent *filename_strent; + const char *directory; + struct Strent *directory_strent; + struct module *next; + int cost; + struct Strent *toname_strent; + char toname[0]; +}; + +struct alias +{ + char *fromname; + struct Strent *froment; + struct module *module; + struct Strent *toent; + char toname[0]; +}; + +struct name +{ + const char *name; + struct Strent *strent; + int module_idx; + uint32_t hashval; +}; + +struct name_info +{ + const char *canonical_name; + struct Strent *canonical_strent; + + struct module *from_internal; + struct module *to_internal; + + struct other_conv_list + { + int dest_idx; + struct other_conv + { + gidx_t module_idx; + struct module *module; + struct other_conv *next; + } other_conv; + struct other_conv_list *next; + } *other_conv_list; +}; + + +/* Name and version of program. */ +static void print_version (FILE *stream, struct argp_state *state); +void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version; + +/* Short description of program. */ +static const char doc[] = N_("\ +Create fastloading iconv module configuration file."); + +/* Strings for arguments in help texts. */ +static const char args_doc[] = N_("[DIR...]"); + +/* Function to print some extra text in the help message. */ +static char *more_help (int key, const char *text, void *input); + +/* Data structure to communicate with argp functions. */ +static struct argp argp = +{ + NULL, NULL, args_doc, doc, NULL, more_help +}; + + +/* The function doing the actual work. */ +static int handle_dir (const char *dir); + +/* Add all known builtin conversions and aliases. */ +static void add_builtins (void); + +/* Create list of all aliases without circular aliases. */ +static void get_aliases (void); + +/* Create list of all modules. */ +static void get_modules (void); + +/* Get list of all the names and thereby indexing them. */ +static void generate_name_list (void); + +/* Collect information about all the names. */ +static void generate_name_info (void); + +/* Write the output file. */ +static int write_output (void); + + +/* Search tree of the modules we know. */ +static void *modules; + +/* Search tree of the aliases we know. */ +static void *aliases; + +/* Search tree for name to index mapping. */ +static void *names; + +/* Number of names we know about. */ +static int nnames; + +/* List of all aliases. */ +static struct alias **alias_list; +static size_t nalias_list; +static size_t nalias_list_max; + +/* List of all modules. */ +static struct module **module_list; +static size_t nmodule_list; +static size_t nmodule_list_max; + +/* Names and information about them. */ +static struct name_info *name_info; +static size_t nname_info; + +/* Number of translations not from or to INTERNAL. */ +static size_t nextra_modules; + + +/* Names and aliases for the builtin transformations. */ +static struct +{ + const char *from; + const char *to; +} builtin_alias[] = + { +#define BUILTIN_ALIAS(alias, real) \ + { .from = alias, .to = real }, +#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, MinF, MaxF, \ + MinT, MaxT) +#include + }; +#undef BUILTIN_ALIAS +#undef BUILTIN_TRANSFORMATION +#define nbuiltin_alias (sizeof (builtin_alias) / sizeof (builtin_alias[0])) + +static struct +{ + const char *from; + const char *to; + const char *module; + int cost; +} builtin_trans[] = + { +#define BUILTIN_ALIAS(alias, real) +#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, MinF, MaxF, \ + MinT, MaxT) \ + { .from = From, .to = To, .module = Name, .cost = Cost }, +#include + }; +#define nbuiltin_trans (sizeof (builtin_trans) / sizeof (builtin_trans[0])) + + +/* Filename extension for the modules. */ +#ifndef MODULE_EXT +# define MODULE_EXT ".so" +#endif +static const char gconv_module_ext[] = MODULE_EXT; + + +extern void *xmalloc (size_t n) __attribute_malloc__; +extern void *xcalloc (size_t n, size_t m) __attribute_malloc__; +extern void *xrealloc (void *p, size_t n); + + +/* C string table handling. */ +struct Strtab; +struct Strent; + +/* Create new C string table object in memory. */ +extern struct Strtab *strtabinit (void); + +/* Free resources allocated for C string table ST. */ +extern void strtabfree (struct Strtab *st); + +/* Add string STR (length LEN is != 0) to C string table ST. */ +extern struct Strent *strtabadd (struct Strtab *st, const char *str, + size_t len); + +/* Finalize string table ST and store size in *SIZE and return a pointer. */ +extern void *strtabfinalize (struct Strtab *st, size_t *size); + +/* Get offset in string table for string associated with SE. */ +extern size_t strtaboffset (struct Strent *se); + +/* String table we construct. */ +static struct Strtab *strtab; + + + +int +main (int argc, char *argv[]) +{ + int remaining; + int status = 0; + char *path; + char *tp; + + /* Enable memory use testing. */ + /* mcheck_pedantic (NULL); */ + mtrace (); + + /* Set locale via LC_ALL. */ + setlocale (LC_ALL, ""); + + /* Set the text message domain. */ + textdomain (_libc_intl_domainname); + + /* Parse and process arguments. */ + argp_parse (&argp, argc, argv, 0, &remaining, NULL); + + /* Initialize the string table. */ + strtab = strtabinit (); + + /* Handle all directories mentioned. */ + while (remaining < argc) + status |= handle_dir (argv[remaining++]); + + /* In any case also handle the standard directory. */ + path = strdupa (GCONV_PATH); + tp = strtok (path, ":"); + while (tp != NULL) + { + status |= handle_dir (tp); + + tp = strtok (NULL, ":"); + } + + /* Add the builtin transformations and aliases without overwriting + anything. */ + add_builtins (); + + /* Store aliases in an array. */ + get_aliases (); + + /* Get list of all modules. */ + get_modules (); + + /* Generate list of all the names we know to handle in some way. */ + generate_name_list (); + + /* Now we know all the names we will handle, collect information + about them. */ + generate_name_info (); + + /* Write the output file, but only if we haven't seen any error. */ + if (status == 0) + status = write_output (); + else + error (1, 0, _("no output file produced because warning were issued")); + + return status; +} + + +static char * +more_help (int key, const char *text, void *input) +{ + switch (key) + { + case ARGP_KEY_HELP_EXTRA: + /* We print some extra information. */ + return strdup (gettext ("\ +Report bugs using the `glibcbug' script to .\n")); + default: + break; + } + return (char *) text; +} + + +/* Print the version information. */ +static void +print_version (FILE *stream, struct argp_state *state) +{ + fprintf (stream, "iconvconfig (GNU %s) %s\n", PACKAGE, VERSION); + fprintf (stream, gettext ("\ +Copyright (C) %s Free Software Foundation, Inc.\n\ +This is free software; see the source for copying conditions. There is NO\n\ +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ +"), "2001"); + fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); +} + + +static int +alias_compare (const void *p1, const void *p2) +{ + const struct alias *a1 = (const struct alias *) p1; + const struct alias *a2 = (const struct alias *) p2; + + return strcmp (a1->fromname, a2->fromname); +} + + +static void +new_alias (const char *fromname, size_t fromlen, const char *toname, + size_t tolen) +{ + struct alias *newp; + void **inserted; + + newp = (struct alias *) xmalloc (sizeof (struct alias) + fromlen + tolen); + + newp->fromname = mempcpy (newp->toname, toname, tolen); + memcpy (newp->fromname, fromname, fromlen); + newp->module = NULL; + + inserted = (void **) tsearch (newp, &aliases, alias_compare); + if (inserted == NULL) + error (EXIT_FAILURE, errno, gettext ("while inserting in search tree")); + if (*inserted != newp) + /* Something went wrong, free this entry. */ + free (newp); + else + { + newp->froment = strtabadd (strtab, newp->fromname, fromlen); + newp->toent = strtabadd (strtab, newp->toname, tolen); + } +} + + +/* Add new alias. */ +static void +add_alias (char *rp) +{ + /* We now expect two more string. The strings are normalized + (converted to UPPER case) and strored in the alias database. */ + char *from; + char *to; + char *wp; + + while (isspace (*rp)) + ++rp; + from = wp = rp; + while (*rp != '\0' && !isspace (*rp)) + *wp++ = toupper (*rp++); + if (*rp == '\0') + /* There is no `to' string on the line. Ignore it. */ + return; + *wp++ = '\0'; + to = ++rp; + while (isspace (*rp)) + ++rp; + while (*rp != '\0' && !isspace (*rp)) + *wp++ = toupper (*rp++); + if (to == wp) + /* No `to' string, ignore the line. */ + return; + *wp++ = '\0'; + + assert (strlen (from) + 1 == to - from); + assert (strlen (to) + 1 == wp - to); + + new_alias (from, to - from, to, wp - to); +} + + +static void +append_alias (const void *nodep, VISIT value, int level) +{ + if (value != leaf && value != postorder) + return; + + if (nalias_list_max == nalias_list) + { + nalias_list_max += 50; + alias_list = (struct alias **) xrealloc (alias_list, + (nalias_list_max + * sizeof (struct alias *))); + } + + alias_list[nalias_list++] = *(struct alias **) nodep; +} + + +static void +get_aliases (void) +{ + twalk (aliases, append_alias); +} + + +static int +module_compare (const void *p1, const void *p2) +{ + const struct module *m1 = (const struct module *) p1; + const struct module *m2 = (const struct module *) p2; + int result; + + result = strcmp (m1->fromname, m2->fromname); + if (result == 0) + result = strcmp (m1->toname, m2->toname); + + return result; +} + + +/* Create new module record. */ +static void +new_module (const char *fromname, size_t fromlen, const char *toname, + size_t tolen, const char *directory, + const char *filename, size_t filelen, int cost, size_t need_ext) +{ + struct module *new_module; + size_t dirlen = strlen (directory) + 1; + char *tmp; + void **inserted; + + new_module = (struct module *) xmalloc (sizeof (struct module) + + fromlen + tolen + filelen + + need_ext); + + new_module->fromname = mempcpy (new_module->toname, toname, tolen); + + new_module->filename = mempcpy (new_module->fromname, fromname, fromlen); + + new_module->cost = cost; + new_module->next = NULL; + + tmp = mempcpy (new_module->filename, filename, filelen); + if (need_ext) + { + memcpy (tmp - 1, gconv_module_ext, need_ext + 1); + filelen += need_ext; + } + new_module->directory = directory; + + /* Now insert the new module data structure in our search tree. */ + inserted = (void **) tsearch (new_module, &modules, module_compare); + if (inserted == NULL) + error (EXIT_FAILURE, errno, "while inserting in search tree"); + if (*inserted != new_module) + free (new_module); + else + { + new_module->fromname_strent = strtabadd (strtab, new_module->fromname, + fromlen); + new_module->toname_strent = strtabadd (strtab, new_module->toname, + tolen); + new_module->filename_strent = strtabadd (strtab, new_module->filename, + filelen); + new_module->directory_strent = strtabadd (strtab, directory, dirlen); + } +} + + +/* Add new module. */ +static void +internal_function +add_module (char *rp, const char *directory) +{ + /* We expect now + 1. `from' name + 2. `to' name + 3. filename of the module + 4. an optional cost value + */ + char *from; + char *to; + char *module; + char *wp; + int need_ext; + int cost; + + while (isspace (*rp)) + ++rp; + from = rp; + while (*rp != '\0' && !isspace (*rp)) + { + *rp = toupper (*rp); + ++rp; + } + if (*rp == '\0') + return; + *rp++ = '\0'; + to = wp = rp; + while (isspace (*rp)) + ++rp; + while (*rp != '\0' && !isspace (*rp)) + *wp++ = toupper (*rp++); + if (*rp == '\0') + return; + *wp++ = '\0'; + do + ++rp; + while (isspace (*rp)); + module = wp; + while (*rp != '\0' && !isspace (*rp)) + *wp++ = *rp++; + if (*rp == '\0') + { + /* There is no cost, use one by default. */ + *wp++ = '\0'; + cost = 1; + } + else + { + /* There might be a cost value. */ + char *endp; + + *wp++ = '\0'; + cost = strtol (rp, &endp, 10); + if (rp == endp || cost < 1) + /* No useful information. */ + cost = 1; + } + + if (module[0] == '\0') + /* No module name given. */ + return; + + /* See whether we must add the ending. */ + need_ext = 0; + if (wp - module < sizeof (gconv_module_ext) + || memcmp (wp - sizeof (gconv_module_ext), gconv_module_ext, + sizeof (gconv_module_ext)) != 0) + /* We must add the module extension. */ + need_ext = sizeof (gconv_module_ext) - 1; + + assert (strlen (from) + 1 == to - from); + assert (strlen (to) + 1 == module - to); + assert (strlen (module) + 1 == wp - module); + + new_module (from, to - from, to, module - to, directory, module, wp - module, + cost, need_ext); +} + + +/* Read the config file and add the data for this directory to that. */ +static int +handle_dir (const char *dir) +{ + char *infile; + FILE *fp; + char *line = NULL; + size_t linelen = 0; + size_t dirlen = strlen (dir); + + if (dir[dirlen - 1] != '/') + { + char *newp = (char *) xmalloc (dirlen + 2); + dir = memcpy (newp, dir, dirlen); + newp[dirlen++] = '/'; + newp[dirlen] = '\0'; + } + + infile = (char *) alloca (dirlen + sizeof "gconv-modules"); + strcpy (mempcpy (infile, dir, dirlen), "gconv-modules"); + + fp = fopen (infile, "r"); + if (fp == NULL) + { + error (0, errno, "cannot open `%s'", infile); + return 1; + } + + /* No threads present. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); + + while (!feof_unlocked (fp)) + { + char *rp, *endp, *word; + ssize_t n = __getdelim (&line, &linelen, '\n', fp); + + if (n < 0) + /* An error occurred. */ + break; + + rp = line; + /* Terminate the line (excluding comments or newline) with a NUL + byte to simplify the following code. */ + endp = strchr (rp, '#'); + if (endp != NULL) + *endp = '\0'; + else + if (rp[n - 1] == '\n') + rp[n - 1] = '\0'; + + while (isspace (*rp)) + ++rp; + + /* If this is an empty line go on with the next one. */ + if (rp == endp) + continue; + + word = rp; + while (*rp != '\0' && !isspace (*rp)) + ++rp; + + if (rp - word == sizeof ("alias") - 1 + && memcmp (word, "alias", sizeof ("alias") - 1) == 0) + add_alias (rp); + else if (rp - word == sizeof ("module") - 1 + && memcmp (word, "module", sizeof ("module") - 1) == 0) + add_module (rp, dir); + /* else */ + /* Otherwise ignore the line. */ + } + + free (line); + + fclose (fp); + + return 0; +} + + +static void +append_module (const void *nodep, VISIT value, int level) +{ + struct module *mo; + + if (value != leaf && value != postorder) + return; + + mo = *(struct module **) nodep; + + if (nmodule_list > 0 + && strcmp (module_list[nmodule_list - 1]->fromname, mo->fromname) == 0) + { + /* Same name. */ + mo->next = module_list[nmodule_list - 1]; + module_list[nmodule_list - 1] = mo; + + return; + } + + if (nmodule_list_max == nmodule_list) + { + nmodule_list_max += 50; + module_list = (struct module **) xrealloc (module_list, + (nmodule_list_max + * sizeof (struct module *))); + } + + module_list[nmodule_list++] = mo; +} + + +static void +get_modules (void) +{ + twalk (modules, append_module); +} + + +static void +add_builtins (void) +{ + size_t cnt; + + /* Add all aliases. */ + for (cnt = 0; cnt < nbuiltin_alias; ++cnt) + new_alias (builtin_alias[cnt].from, + strlen (builtin_alias[cnt].from) + 1, + builtin_alias[cnt].to, + strlen (builtin_alias[cnt].to) + 1); + + /* add the builtin transformations. */ + for (cnt = 0; cnt < nbuiltin_trans; ++cnt) + new_module (builtin_trans[cnt].from, + strlen (builtin_trans[cnt].from) + 1, + builtin_trans[cnt].to, + strlen (builtin_trans[cnt].to) + 1, + "", builtin_trans[cnt].module, + strlen (builtin_trans[cnt].module) + 1, + builtin_trans[cnt].cost, 0); +} + + +static int +name_compare (const void *p1, const void *p2) +{ + const struct name *n1 = (const struct name *) p1; + const struct name *n2 = (const struct name *) p2; + + return strcmp (n1->name, n2->name); +} + + +static struct name * +new_name (const char *str, struct Strent *strent) +{ + struct name *newp = (struct name *) xmalloc (sizeof (struct name)); + + newp->name = str; + newp->strent = strent; + newp->module_idx = -1; + newp->hashval = hash_string (str); + + ++nnames; + + return newp; +} + + +static void +generate_name_list (void) +{ + size_t i; + + /* A name we always need. */ + tsearch (new_name ("INTERNAL", strtabadd (strtab, "INTERNAL", + sizeof ("INTERNAL"))), + &names, name_compare); + + for (i = 0; i < nmodule_list; ++i) + { + struct module *runp; + + if (strcmp (module_list[i]->fromname, "INTERNAL") != 0) + tsearch (new_name (module_list[i]->fromname, + module_list[i]->fromname_strent), + &names, name_compare); + + for (runp = module_list[i]; runp != NULL; runp = runp->next) + if (strcmp (runp->toname, "INTERNAL") != 0) + tsearch (new_name (runp->toname, runp->toname_strent), + &names, name_compare); + } +} + + +static int +name_to_module_idx (const char *name, int add) +{ + struct name **res; + struct name fake_name = { .name = name }; + int idx; + + res = (struct name **) tfind (&fake_name, &names, name_compare); + if (res == NULL) + abort (); + + idx = (*res)->module_idx; + if (idx == -1 && add) + /* No module index assigned yet. */ + idx = (*res)->module_idx = nname_info++; + + return idx; +} + + +static void +generate_name_info (void) +{ + size_t i; + int idx; + + name_info = (struct name_info *) xcalloc (nmodule_list + 1, + sizeof (struct name_info)); + + /* First add a special entry for the INTERNAL name. This must have + index zero. */ + idx = name_to_module_idx ("INTERNAL", 1); + name_info[0].canonical_name = "INTERNAL"; + name_info[0].canonical_strent = strtabadd (strtab, "INTERNAL", + sizeof ("INTERNAL")); + assert (nname_info == 1); + + for (i = 0; i < nmodule_list; ++i) + { + struct module *runp; + + for (runp = module_list[i]; runp != NULL; runp = runp->next) + if (strcmp (runp->fromname, "INTERNAL") == 0) + { + idx = name_to_module_idx (runp->toname, 1); + name_info[idx].from_internal = runp; + assert (name_info[idx].canonical_name == NULL + || strcmp (name_info[idx].canonical_name, + runp->toname) == 0); + name_info[idx].canonical_name = runp->toname; + name_info[idx].canonical_strent = runp->toname_strent; + } + else if (strcmp (runp->toname, "INTERNAL") == 0) + { + idx = name_to_module_idx (runp->fromname, 1); + name_info[idx].to_internal = runp; + assert (name_info[idx].canonical_name == NULL + || strcmp (name_info[idx].canonical_name, + runp->fromname) == 0); + name_info[idx].canonical_name = runp->fromname; + name_info[idx].canonical_strent = runp->fromname_strent; + } + else + { + /* This is a transformation not to or from the INTERNAL + encoding. */ + int from_idx = name_to_module_idx (runp->fromname, 1); + int to_idx = name_to_module_idx (runp->toname, 1); + struct other_conv_list *newp; + + newp = (struct other_conv_list *) + xmalloc (sizeof (struct other_conv_list)); + newp->other_conv.module_idx = to_idx; + newp->other_conv.module = runp; + newp->other_conv.next = NULL; /* XXX Allow multiple module sequence */ + newp->dest_idx = to_idx; + newp->next = name_info[from_idx].other_conv_list; + name_info[from_idx].other_conv_list = newp; + assert (name_info[from_idx].canonical_name == NULL + || strcmp (name_info[from_idx].canonical_name, + runp->fromname) == 0); + name_info[from_idx].canonical_name = runp->fromname; + name_info[from_idx].canonical_strent = runp->fromname_strent; + + ++nextra_modules; + } + } + + /* Now add the module index information for all the aliases. */ + for (i = 0; i < nalias_list; ++i) + { + struct name fake_name = { .name = alias_list[i]->toname }; + struct name **tonamep; + + tonamep = (struct name **) tfind (&fake_name, &names, name_compare); + if (tonamep != NULL) + { + struct name *newp = new_name (alias_list[i]->fromname, + alias_list[i]->froment); + newp->module_idx = (*tonamep)->module_idx; + tsearch (newp, &names, name_compare); + } + } +} + + +static int +is_prime (unsigned long int candidate) +{ + /* No even number and none less than 10 will be passed here. */ + unsigned long int divn = 3; + unsigned long int sq = divn * divn; + + while (sq < candidate && candidate % divn != 0) + { + ++divn; + sq += 4 * divn; + ++divn; + } + + return candidate % divn != 0; +} + + +static uint32_t +next_prime (uint32_t seed) +{ + /* Make it definitely odd. */ + seed |= 1; + + while (!is_prime (seed)) + seed += 2; + + return seed; +} + + +/* Format of the output file. + + Offset Length Description + 0000 4 Magic header bytes + 0004 4 Offset of string table (stoff) + 0008 4 Offset of name hashing table (hoff) + 000C 4 Hashing table size (hsize) + 0010 4 Offset of module table (moff) + 0014 4 Offset of other conversion module table (ooff) + + stoff ??? String table + + hoff 8*hsize Array of tuples + string table offset + module index + + moff ??? Array of tuples + canonical name offset + from-internal module dir name offset + from-internal module name off + to-internal module dir name offset + to-internal module name offset + offset into other conversion table + + ooff ??? One or more of + number of steps/modules + one or more of tuple + canonical name offset for output + module dir name offset + module name offset + (following last entry with step count 0) +*/ +static int +write_output (void) +{ + int fd; + char *string_table; + size_t string_table_size; + struct gconvcache_header header; + struct hash_entry *hash_table; + size_t hash_size; + struct module_entry *module_table; + char *extra_table; + char *cur_extra_table; + size_t n; + int idx; + struct iovec iov[6]; + static const gidx_t null_word; + size_t total; + char tmpfname[sizeof (GCONV_MODULES_CACHE) + strlen (".XXXXXX")]; + + /* Function to insert the names. */ + static void name_insert (const void *nodep, VISIT value, int level) + { + struct name *name; + unsigned int idx; + unsigned int hval2; + + if (value != leaf && value != postorder) + return; + + name = *(struct name **) nodep; + idx = name->hashval % hash_size; + hval2 = 1 + name->hashval % (hash_size - 2); + + while (hash_table[idx].string_offset != 0) + if ((idx += hval2) >= hash_size) + idx -= hash_size; + + hash_table[idx].string_offset = strtaboffset (name->strent); + + assert (name->module_idx != -1); + hash_table[idx].module_idx = name->module_idx; + } + + /* Open the output file. */ + strcpy (stpcpy (tmpfname, GCONV_MODULES_CACHE), ".XXXXXX"); + fd = mkstemp (tmpfname); + if (fd == -1) + return 1; + + /* Create the string table. */ + string_table = strtabfinalize (strtab, &string_table_size); + + /* Create the hashing table. We know how many strings we have. + Creating a perfect hash table is not reasonable here. Therefore + we use open hashing and a table size which is the next prime 40% + larger than the number of strings. */ + hash_size = next_prime (nnames * 1.4); + hash_table = (struct hash_entry *) xcalloc (hash_size, + sizeof (struct hash_entry)); + /* Fill the hash table. */ + twalk (names, name_insert); + + /* Create the section for the module list. */ + module_table = (struct module_entry *) xcalloc (sizeof (struct module_entry), + nname_info); + + /* Allocate memory for the non-INTERNAL conversions. The allocated + memory can be more than is actually needed. */ + extra_table = (char *) xcalloc (sizeof (struct extra_entry) + + sizeof (gidx_t) + + sizeof (struct extra_entry_module), + nextra_modules); + cur_extra_table = extra_table; + + /* Fill in the module information. */ + for (n = 0; n < nname_info; ++n) + { + module_table[n].canonname_offset = + strtaboffset (name_info[n].canonical_strent); + + if (name_info[n].from_internal == NULL) + { + module_table[n].fromdir_offset = 0; + module_table[n].fromname_offset = 0; + } + else + { + module_table[n].fromdir_offset = + strtaboffset (name_info[n].from_internal->directory_strent); + module_table[n].fromname_offset = + strtaboffset (name_info[n].from_internal->filename_strent); + } + + if (name_info[n].to_internal == NULL) + { + module_table[n].todir_offset = 0; + module_table[n].toname_offset = 0; + } + else + { + module_table[n].todir_offset = + strtaboffset (name_info[n].to_internal->directory_strent); + module_table[n].toname_offset = + strtaboffset (name_info[n].to_internal->filename_strent); + } + + if (name_info[n].other_conv_list != NULL) + { + struct other_conv_list *other = name_info[n].other_conv_list; + + /* Store the reference. We add 1 to distinguish the entry + at offset zero from the case where no extra modules are + available. The file reader has to account for the + offset. */ + module_table[n].extra_offset = 1 + cur_extra_table - extra_table; + + do + { + struct other_conv *runp; + struct extra_entry *extra; + + /* Allocate new entry. */ + extra = (struct extra_entry *) cur_extra_table; + cur_extra_table += sizeof (struct extra_entry); + extra->module_cnt = 0; + + runp = &other->other_conv; + do + { + cur_extra_table += sizeof (struct extra_entry_module); + extra->module[extra->module_cnt].outname_offset = + runp->next == NULL + ? other->dest_idx : runp->next->module_idx; + extra->module[extra->module_cnt].dir_offset = + strtaboffset (runp->module->directory_strent); + extra->module[extra->module_cnt].name_offset = + strtaboffset (runp->module->filename_strent); + ++extra->module_cnt; + + runp = runp->next; + } + while (runp != NULL); + + other = other->next; + } + while (other != NULL); + + /* Final module_cnt is zero. */ + *((gidx_t *) cur_extra_table) = 0; + cur_extra_table += sizeof (gidx_t); + } + } + + header.magic = GCONVCACHE_MAGIC; + + iov[0].iov_base = &header; + iov[0].iov_len = sizeof (struct gconvcache_header); + total = iov[0].iov_len; + + header.string_offset = total; + iov[1].iov_base = string_table; + iov[1].iov_len = string_table_size; + total += iov[1].iov_len; + + idx = 2; + if ((string_table_size & (sizeof (gidx_t) - 1)) != 0) + { + iov[2].iov_base = (void *) &null_word; + iov[2].iov_len = (sizeof (gidx_t) + - (string_table_size & (sizeof (gidx_t) - 1))); + total += iov[2].iov_len; + ++idx; + } + + header.hash_offset = total; + header.hash_size = hash_size; + iov[idx].iov_base = hash_table; + iov[idx].iov_len = hash_size * sizeof (struct hash_entry); + total += iov[idx].iov_len; + ++idx; + + header.module_offset = total; + iov[idx].iov_base = module_table; + iov[idx].iov_len = nname_info * sizeof (struct module_entry); + total += iov[idx].iov_len; + ++idx; + + assert (cur_extra_table - extra_table + <= ((sizeof (struct extra_entry) + sizeof (gidx_t) + + sizeof (struct extra_entry_module)) + * nextra_modules)); + header.otherconv_offset = total; + iov[idx].iov_base = extra_table; + iov[idx].iov_len = cur_extra_table - extra_table; + total += iov[idx].iov_len; + ++idx; + + if (TEMP_FAILURE_RETRY (writev (fd, iov, idx)) != total + /* The file was created with mode 0600. Make it world-readable. */ + || fchmod (fd, 0644) != 0 + /* Rename the file, possibly replacing an old one. */ + || rename (tmpfname, GCONV_MODULES_CACHE) != 0) + { + int save_errno = errno; + close (fd); + unlink (tmpfname); + error (EXIT_FAILURE, save_errno, + gettext ("cannot generate output file")); + } + + close (fd); + + return 0; +} diff -durpN glibc-2.2.3/iconv/iconvconfig.h glibc-2.2.4/iconv/iconvconfig.h --- glibc-2.2.3/iconv/iconvconfig.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/iconv/iconvconfig.h Sun Jul 22 10:44:23 2001 @@ -0,0 +1,67 @@ +/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2000. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include + + +typedef uint16_t gidx_t; + + +struct gconvcache_header +{ + uint32_t magic; + gidx_t string_offset; + gidx_t hash_offset; + gidx_t hash_size; + gidx_t module_offset; + gidx_t otherconv_offset; +}; + +struct hash_entry +{ + gidx_t string_offset; + gidx_t module_idx; +}; + +struct module_entry +{ + gidx_t canonname_offset; + gidx_t fromdir_offset; + gidx_t fromname_offset; + gidx_t todir_offset; + gidx_t toname_offset; + gidx_t extra_offset; +}; + +struct extra_entry +{ + gidx_t module_cnt; + struct extra_entry_module + { + gidx_t outname_offset; + gidx_t dir_offset; + gidx_t name_offset; + } module[0]; +}; + + +#define GCONVCACHE_MAGIC 0x20010324 + + +#define GCONV_MODULES_CACHE GCONV_DIR "/gconv-modules.cache" diff -durpN glibc-2.2.3/iconv/loop.c glibc-2.2.4/iconv/loop.c --- glibc-2.2.3/iconv/loop.c Fri Dec 1 11:55:02 2000 +++ glibc-2.2.4/iconv/loop.c Mon Jul 23 10:53:43 2001 @@ -1,22 +1,22 @@ /* Conversion loop frame work. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This file provides a frame for the reader loop in all conversion modules. The actual code must (of course) be provided in the actual module source @@ -111,7 +111,7 @@ # define put16(addr, val) \ ({ uint16_t __val = (val); \ ((unsigned char *) (addr))[1] = __val; \ - ((unsigned char *) (addr))[2] = __val >> 8; \ + ((unsigned char *) (addr))[0] = __val >> 8; \ (void) 0; }) # define put32(addr, val) \ ({ uint32_t __val = (val); \ @@ -209,6 +209,21 @@ ++*irreversible; \ inptr += Incr; \ continue; \ + } + + +/* Handling of Unicode 3.1 TAG characters. Unicode recommends + "If language codes are not relevant to the particular processing + operation, then they should be ignored." + This macro is usually called right before STANDARD_ERR_HANDLER (Incr). */ +#define UNICODE_TAG_HANDLER(Character, Incr) \ + { \ + /* TAG characters are those in the range U+E0000..U+E007F. */ \ + if (((Character) >> 7) == (0xe0000 >> 7)) \ + { \ + inptr += Incr; \ + continue; \ + } \ } diff -durpN glibc-2.2.3/iconv/skeleton.c glibc-2.2.4/iconv/skeleton.c --- glibc-2.2.3/iconv/skeleton.c Sat Jan 6 20:35:13 2001 +++ glibc-2.2.4/iconv/skeleton.c Mon Jul 23 10:53:43 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1998. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This file can be included to provide definitions of several things many modules have in common. It can be customized using the following @@ -298,28 +298,93 @@ FUNCTION_NAME (struct __gconv_step *step dropped. */ if (__builtin_expect (do_flush, 0)) { - status = __GCONV_OK; - /* This should never happen during error handling. */ assert (outbufstart == NULL); + status = __GCONV_OK; + #ifdef EMIT_SHIFT_TO_INIT - /* Emit the escape sequence to reset the state. */ - EMIT_SHIFT_TO_INIT; -#else - /* Clear the state object. There might be bytes in there from - previous calls with CONSUME_INCOMPLETE == 1. */ - memset (data->__statep, '\0', sizeof (*data->__statep)); + if (do_flush == 1) + { + /* We preserve the initial values of the pointer variables. */ + unsigned char *outbuf = data->__outbuf; + unsigned char *outstart = outbuf; + unsigned char *outend = data->__outbufend; + +# ifdef PREPARE_LOOP + PREPARE_LOOP +# endif + +# ifdef SAVE_RESET_STATE + SAVE_RESET_STATE (1); +# endif + + /* Emit the escape sequence to reset the state. */ + EMIT_SHIFT_TO_INIT; + + /* Call the steps down the chain if there are any but only if we + successfully emitted the escape sequence. This should only + fail if the output buffer is full. If the input is invalid + it should be discarded since the user wants to start from a + clean state. */ + if (status == __GCONV_OK) + { + if (data->__flags & __GCONV_IS_LAST) + /* Store information about how many bytes are available. */ + data->__outbuf = outbuf; + else + { + /* Write out all output which was produced. */ + if (outbuf > outstart) + { + const unsigned char *outerr = outstart; + int result; + + result = DL_CALL_FCT (fct, (next_step, next_data, + &outerr, outbuf, NULL, + irreversible, 0, + consume_incomplete)); + + if (result != __GCONV_EMPTY_INPUT) + { + if (__builtin_expect (outerr != outbuf, 0)) + { + /* We have a problem. Undo the conversion. */ + outbuf = outstart; + + /* Restore the state. */ +# ifdef SAVE_RESET_STATE + SAVE_RESET_STATE (0); +# endif + } + + /* Change the status. */ + status = result; + } + } + + if (status == __GCONV_OK) + /* Now flush the remaining steps. */ + status = DL_CALL_FCT (fct, (next_step, next_data, NULL, + NULL, NULL, irreversible, 1, + consume_incomplete)); + } + } + } + else #endif - /* Call the steps down the chain if there are any but only if we - successfully emitted the escape sequence. This should only - fail if the output buffer is full. If the input is invalid - it should be discarded since the user wants to start from a - clean slate. */ - if (status == __GCONV_OK && ! (data->__flags & __GCONV_IS_LAST)) - status = DL_CALL_FCT (fct, (next_step, next_data, NULL, NULL, - NULL, irreversible, 1, - consume_incomplete)); + { + /* Clear the state object. There might be bytes in there from + previous calls with CONSUME_INCOMPLETE == 1. But don't emit + escape sequences. */ + memset (data->__statep, '\0', sizeof (*data->__statep)); + + if (! (data->__flags & __GCONV_IS_LAST)) + /* Now flush the remaining steps. */ + status = DL_CALL_FCT (fct, (next_step, next_data, NULL, NULL, + NULL, irreversible, do_flush, + consume_incomplete)); + } } else { @@ -499,7 +564,7 @@ FUNCTION_NAME (struct __gconv_step *step *inptrp = inptr; outbuf = outstart; - /* Reset the state. */ + /* Restore the state. */ # ifdef SAVE_RESET_STATE SAVE_RESET_STATE (0); # endif diff -durpN glibc-2.2.3/iconv/strtab.c glibc-2.2.4/iconv/strtab.c --- glibc-2.2.3/iconv/strtab.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/iconv/strtab.c Mon Jul 23 01:39:51 2001 @@ -0,0 +1,314 @@ +/* C string table handling. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + + +struct Strent +{ + const char *string; + size_t len; + struct Strent *next; + struct Strent *left; + struct Strent *right; + size_t offset; + char reverse[0]; +}; + + +struct memoryblock +{ + struct memoryblock *next; + char memory[0]; +}; + + +struct Strtab +{ + struct Strent *root; + struct memoryblock *memory; + char *backp; + size_t left; + size_t total; + + struct Strent null; +}; + + +/* Cache for the pagesize. We correct this value a bit so that `malloc' + is not allocating more than a page. */ +static size_t ps; + + +extern void *xmalloc (size_t n) __attribute_malloc__; + +/* Prototypes for our functions that are used from iconvconfig.c. If + you change these, change also iconvconfig.c. */ +/* Create new C string table object in memory. */ +extern struct Strtab *strtabinit (void); + +/* Free resources allocated for C string table ST. */ +extern void strtabfree (struct Strtab *st); + +/* Add string STR (length LEN is != 0) to C string table ST. */ +extern struct Strent *strtabadd (struct Strtab *st, const char *str, + size_t len); + +/* Finalize string table ST and store size in *SIZE and return a pointer. */ +extern void *strtabfinalize (struct Strtab *st, size_t *size); + +/* Get offset in string table for string associated with SE. */ +extern size_t strtaboffset (struct Strent *se); + + +struct Strtab * +strtabinit (void) +{ + if (ps == 0) + { + ps = sysconf (_SC_PAGESIZE) - 2 * sizeof (void *); + assert (sizeof (struct memoryblock) < ps); + } + + return (struct Strtab *) calloc (1, sizeof (struct Strtab)); +} + + +static void +morememory (struct Strtab *st, size_t len) +{ + struct memoryblock *newmem; + + if (len < ps) + len = ps; + newmem = (struct memoryblock *) malloc (len); + if (newmem == NULL) + abort (); + + newmem->next = st->memory; + st->memory = newmem; + st->backp = newmem->memory; + st->left = len - offsetof (struct memoryblock, memory); +} + + +void +strtabfree (struct Strtab *st) +{ + struct memoryblock *mb = st->memory; + + while (mb != NULL) + { + void *old = mb; + mb = mb->next; + free (old); + } + + free (st); +} + + +static struct Strent * +newstring (struct Strtab *st, const char *str, size_t len) +{ + struct Strent *newstr; + size_t align; + int i; + + /* Compute the string length if the caller doesn't know it. */ + if (len == 0) + len = strlen (str) + 1; + + /* Compute the amount of padding needed to make the structure aligned. */ + align = ((__alignof__ (struct Strent) + - (((uintptr_t) st->backp) + & (__alignof__ (struct Strent) - 1))) + & (__alignof__ (struct Strent) - 1)); + + /* Make sure there is enough room in the memory block. */ + if (st->left < align + sizeof (struct Strent) + len) + { + morememory (st, sizeof (struct Strent) + len); + align = 0; + } + + /* Create the reserved string. */ + newstr = (struct Strent *) (st->backp + align); + newstr->string = str; + newstr->len = len; + newstr->next = NULL; + newstr->left = NULL; + newstr->right = NULL; + newstr->offset = 0; + for (i = len - 2; i >= 0; --i) + newstr->reverse[i] = str[len - 2 - i]; + newstr->reverse[len - 1] = '\0'; + st->backp += align + sizeof (struct Strent) + len; + st->left -= align + sizeof (struct Strent) + len; + + return newstr; +} + + +/* XXX This function should definitely be rewritten to use a balancing + tree algorith (AVL, red-black trees). For now a simple, correct + implementation is enough. */ +static struct Strent ** +searchstring (struct Strent **sep, struct Strent *newstr) +{ + int cmpres; + + /* More strings? */ + if (*sep == NULL) + { + *sep = newstr; + return sep; + } + + /* Compare the strings. */ + cmpres = memcmp ((*sep)->reverse, newstr->reverse, + MIN ((*sep)->len, newstr->len)); + if (cmpres == 0) + /* We found a matching string. */ + return sep; + else if (cmpres > 0) + return searchstring (&(*sep)->left, newstr); + else + return searchstring (&(*sep)->right, newstr); +} + + +/* Add new string. The actual string is assumed to be permanent. */ +struct Strent * +strtabadd (struct Strtab *st, const char *str, size_t len) +{ + struct Strent *newstr; + struct Strent **sep; + + /* Allocate memory for the new string and its associated information. */ + newstr = newstring (st, str, len); + + /* Search in the array for the place to insert the string. If there + is no string with matching prefix and no string with matching + leading substring, create a new entry. */ + sep = searchstring (&st->root, newstr); + if (*sep != newstr) + { + /* This is not the same entry. This means we have a prefix match. */ + if ((*sep)->len > newstr->len) + { + /* We have a new substring. This means we don't need the reverse + string of this entry anymore. */ + st->backp -= newstr->len; + st->left += newstr->len; + + newstr->next = (*sep)->next; + (*sep)->next = newstr; + } + else if ((*sep)->len != newstr->len) + { + /* When we get here it means that the string we are about to + add has a common prefix with a string we already have but + it is longer. In this case we have to put it first. */ + newstr->next = *sep; + *sep = newstr; + + st->total += newstr->len - (*sep)->len; + } + else + { + /* We have an exact match. Free the memory we allocated. */ + st->left += st->backp - (char *) newstr; + st->backp = (char *) newstr; + + newstr = *sep; + } + } + else + st->total += newstr->len; + + return newstr; +} + + +static void +copystrings (struct Strent *nodep, char **freep, size_t *offsetp) +{ + struct Strent *subs; + + if (nodep->left != NULL) + copystrings (nodep->left, freep, offsetp); + + /* Process the current node. */ + nodep->offset = *offsetp; + *freep = (char *) mempcpy (*freep, nodep->string, nodep->len); + *offsetp += nodep->len; + + for (subs = nodep->next; subs != NULL; subs = subs->next) + { + assert (subs->len < nodep->len); + subs->offset = nodep->offset + nodep->len - subs->len; + } + + if (nodep->right != NULL) + copystrings (nodep->right, freep, offsetp); +} + + +void * +strtabfinalize (struct Strtab *st, size_t *size) +{ + size_t copylen; + char *endp; + char *retval; + + /* Fill in the information. */ + endp = retval = (char *) xmalloc (st->total + 1); + + /* Always put an empty string at the beginning so that a zero offset + can mean error. */ + *endp++ = '\0'; + + /* Now run through the tree and add all the string while also updating + the offset members of the elfstrent records. */ + copylen = 1; + copystrings (st->root, &endp, ©len); + assert (copylen == st->total + 1); + assert (endp = retval + st->total + 1); + *size = copylen; + + return retval; +} + + +size_t +strtaboffset (struct Strent *se) +{ + return se->offset; +} diff -durpN glibc-2.2.3/iconv/tst-iconv2.c glibc-2.2.4/iconv/tst-iconv2.c --- glibc-2.2.3/iconv/tst-iconv2.c Fri Jan 5 00:01:53 2001 +++ glibc-2.2.4/iconv/tst-iconv2.c Mon Jul 23 10:53:43 2001 @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper , 2001. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 diff -durpN glibc-2.2.3/iconvdata/8bit-gap.c glibc-2.2.4/iconvdata/8bit-gap.c --- glibc-2.2.3/iconvdata/8bit-gap.c Wed Jun 21 11:10:56 2000 +++ glibc-2.2.4/iconvdata/8bit-gap.c Sat Aug 4 12:31:42 2001 @@ -1,23 +1,23 @@ /* Generic conversion to and from 8bit charsets, converting from UCS using gaps. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -82,8 +82,11 @@ struct gap uint32_t ch = get32 (inptr); \ unsigned char res; \ \ - if (__builtin_expect (ch, 0) >= 0xffff) \ - rp = NULL; \ + if (__builtin_expect (ch >= 0xffff, 0)) \ + { \ + UNICODE_TAG_HANDLER (ch, 4); \ + rp = NULL; \ + } \ else \ while (ch > rp->end) \ ++rp; \ diff -durpN glibc-2.2.3/iconvdata/8bit-generic.c glibc-2.2.4/iconvdata/8bit-generic.c --- glibc-2.2.3/iconvdata/8bit-generic.c Wed Jun 21 11:10:56 2000 +++ glibc-2.2.4/iconvdata/8bit-generic.c Mon Jul 23 10:53:43 2001 @@ -1,22 +1,22 @@ /* Generic conversion to and from 8bit charsets. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include @@ -67,6 +67,8 @@ if (__builtin_expect (ch >= sizeof (from_ucs4) / sizeof (from_ucs4[0]), 0)\ || (__builtin_expect (from_ucs4[ch], '\1') == '\0' && ch != 0)) \ { \ + UNICODE_TAG_HANDLER (ch, 4); \ + \ /* This is an illegal character. */ \ STANDARD_ERR_HANDLER (4); \ } \ diff -durpN glibc-2.2.3/iconvdata/CP1255.irreversible glibc-2.2.4/iconvdata/CP1255.irreversible --- glibc-2.2.3/iconvdata/CP1255.irreversible Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/iconvdata/CP1255.irreversible Tue May 22 15:23:56 2001 @@ -0,0 +1,34 @@ +0xD6C7 0xFB1F +0xE0C7 0xFB2E +0xE0C8 0xFB2F +0xE0CC 0xFB30 +0xE1CC 0xFB31 +0xE1CF 0xFB4C +0xE2CC 0xFB32 +0xE3CC 0xFB33 +0xE4CC 0xFB34 +0xE5C9 0xFB4B +0xE5CC 0xFB35 +0xE6CC 0xFB36 +0xE8CC 0xFB38 +0xE9C4 0xFB1D +0xE9CC 0xFB39 +0xEACC 0xFB3A +0xEBCC 0xFB3B +0xEBCF 0xFB4D +0xECCC 0xFB3C +0xEECC 0xFB3E +0xF0CC 0xFB40 +0xF1CC 0xFB41 +0xF3CC 0xFB43 +0xF4CC 0xFB44 +0xF4CF 0xFB4E +0xF6CC 0xFB46 +0xF7CC 0xFB47 +0xF8CC 0xFB48 +0xF9CC 0xFB49 +0xF9CCD1 0xFB2C +0xF9CCD2 0xFB2D +0xF9D1 0xFB2A +0xF9D2 0xFB2B +0xFACC 0xFB4A diff -durpN glibc-2.2.3/iconvdata/CP1258.irreversible glibc-2.2.4/iconvdata/CP1258.irreversible --- glibc-2.2.3/iconvdata/CP1258.irreversible Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/iconvdata/CP1258.irreversible Tue May 22 14:55:28 2001 @@ -0,0 +1,183 @@ +0x41D2 0x1EA2 +0x41DE 0x00C3 +0x41F2 0x1EA0 +0x42F2 0x1E04 +0x43EC 0x0106 +0x44F2 0x1E0C +0x45D2 0x1EBA +0x45DE 0x1EBC +0x45F2 0x1EB8 +0x47EC 0x01F4 +0x48F2 0x1E24 +0x49CC 0x00CC +0x49D2 0x1EC8 +0x49DE 0x0128 +0x49F2 0x1ECA +0x4BEC 0x1E30 +0x4BF2 0x1E32 +0x4CEC 0x0139 +0x4CF2 0x1E36 +0x4DEC 0x1E3E +0x4DF2 0x1E42 +0x4ECC 0x01F8 +0x4EEC 0x0143 +0x4EF2 0x1E46 +0x4FCC 0x00D2 +0x4FD2 0x1ECE +0x4FDE 0x00D5 +0x4FF2 0x1ECC +0x50EC 0x1E54 +0x52EC 0x0154 +0x52F2 0x1E5A +0x53EC 0x015A +0x53F2 0x1E62 +0x54F2 0x1E6C +0x55D2 0x1EE6 +0x55DE 0x0168 +0x55F2 0x1EE4 +0x56DE 0x1E7C +0x56F2 0x1E7E +0x57CC 0x1E80 +0x57EC 0x1E82 +0x57F2 0x1E88 +0x59CC 0x1EF2 +0x59D2 0x1EF6 +0x59DE 0x1EF8 +0x59EC 0x00DD +0x59F2 0x1EF4 +0x5AEC 0x0179 +0x5AF2 0x1E92 +0x61D2 0x1EA3 +0x61DE 0x00E3 +0x61F2 0x1EA1 +0x62F2 0x1E05 +0x63EC 0x0107 +0x64F2 0x1E0D +0x65D2 0x1EBB +0x65DE 0x1EBD +0x65F2 0x1EB9 +0x67EC 0x01F5 +0x68F2 0x1E25 +0x69CC 0x00EC +0x69D2 0x1EC9 +0x69DE 0x0129 +0x69F2 0x1ECB +0x6BEC 0x1E31 +0x6BF2 0x1E33 +0x6CEC 0x013A +0x6CF2 0x1E37 +0x6DEC 0x1E3F +0x6DF2 0x1E43 +0x6ECC 0x01F9 +0x6EEC 0x0144 +0x6EF2 0x1E47 +0x6FCC 0x00F2 +0x6FD2 0x1ECF +0x6FDE 0x00F5 +0x6FF2 0x1ECD +0x70EC 0x1E55 +0x72EC 0x0155 +0x72F2 0x1E5B +0x73EC 0x015B +0x73F2 0x1E63 +0x74F2 0x1E6D +0x75D2 0x1EE7 +0x75DE 0x0169 +0x75F2 0x1EE5 +0x76DE 0x1E7D +0x76F2 0x1E7F +0x77CC 0x1E81 +0x77EC 0x1E83 +0x77F2 0x1E89 +0x79CC 0x1EF3 +0x79D2 0x1EF7 +0x79DE 0x1EF9 +0x79EC 0x00FD +0x79F2 0x1EF5 +0x7AEC 0x017A +0x7AF2 0x1E93 +0xA5EC 0x0385 +0xA8CC 0x1FED +0xA8EC 0x1FEE +0xC2CC 0x1EA6 +0xC2D2 0x1EA8 +0xC2DE 0x1EAA +0xC2EC 0x1EA4 +0xC2F2 0x1EAC +0xC3CC 0x1EB0 +0xC3D2 0x1EB2 +0xC3DE 0x1EB4 +0xC3EC 0x1EAE +0xC3F2 0x1EB6 +0xC5EC 0x01FA +0xC6EC 0x01FC +0xC7EC 0x1E08 +0xCACC 0x1EC0 +0xCAD2 0x1EC2 +0xCADE 0x1EC4 +0xCAEC 0x1EBE +0xCAF2 0x1EC6 +0xCC 0x0340 +0xCFEC 0x1E2E +0xD3DE 0x1E4C +0xD4CC 0x1ED2 +0xD4D2 0x1ED4 +0xD4DE 0x1ED6 +0xD4EC 0x1ED0 +0xD4F2 0x1ED8 +0xD5CC 0x1EDC +0xD5D2 0x1EDE +0xD5DE 0x1EE0 +0xD5EC 0x1EDA +0xD5F2 0x1EE2 +0xD6DE 0x1E4E +0xD8EC 0x01FE +0xDADE 0x1E78 +0xDCCC 0x01DB +0xDCEC 0x01D7 +0xDDCC 0x1EEA +0xDDD2 0x1EEC +0xDDDE 0x1EEE +0xDDEC 0x1EE8 +0xDDF2 0x1EF0 +0xE2CC 0x1EA7 +0xE2D2 0x1EA9 +0xE2DE 0x1EAB +0xE2EC 0x1EA5 +0xE2F2 0x1EAD +0xE3CC 0x1EB1 +0xE3D2 0x1EB3 +0xE3DE 0x1EB5 +0xE3EC 0x1EAF +0xE3F2 0x1EB7 +0xE5EC 0x01FB +0xE6EC 0x01FD +0xE7EC 0x1E09 +0xEACC 0x1EC1 +0xEAD2 0x1EC3 +0xEADE 0x1EC5 +0xEAEC 0x1EBF +0xEAF2 0x1EC7 +0xEC 0x0341 +0xEFEC 0x1E2F +0xF3DE 0x1E4D +0xF4CC 0x1ED3 +0xF4D2 0x1ED5 +0xF4DE 0x1ED7 +0xF4EC 0x1ED1 +0xF4F2 0x1ED9 +0xF5CC 0x1EDD +0xF5D2 0x1EDF +0xF5DE 0x1EE1 +0xF5EC 0x1EDB +0xF5F2 0x1EE3 +0xF6DE 0x1E4F +0xF8EC 0x01FF +0xFADE 0x1E79 +0xFCCC 0x01DC +0xFCEC 0x01D8 +0xFDCC 0x1EEB +0xFDD2 0x1EED +0xFDDE 0x1EEF +0xFDEC 0x1EE9 +0xFDF2 0x1EF1 diff -durpN glibc-2.2.3/iconvdata/EUC-TW.irreversible glibc-2.2.4/iconvdata/EUC-TW.irreversible --- glibc-2.2.3/iconvdata/EUC-TW.irreversible Wed Dec 31 16:00:00 1969 +++ glibc-2.2.4/iconvdata/EUC-TW.irreversible Wed Jun 6 06:07:10 2001 @@ -0,0 +1,3 @@ +0x8EA3A1B8 0x5344 +0x8EA5A1C8 0x233B3 +0x8EA5EFBA 0x2A0CC diff -durpN glibc-2.2.3/iconvdata/Makefile glibc-2.2.4/iconvdata/Makefile --- glibc-2.2.3/iconvdata/Makefile Thu Apr 12 22:58:39 2001 +++ glibc-2.2.4/iconvdata/Makefile Mon Aug 13 15:00:47 2001 @@ -2,19 +2,19 @@ # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. +# Lesser General Public License for more details. -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If -# not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # # Makefile for iconv data and code. @@ -47,7 +47,8 @@ modules := ISO8859-1 ISO8859-2 ISO8859-3 ISO_5428 ISO_10367-BOX MAC-IS MAC-UK NATS-DANO NATS-SEFI \ SAMI-WS2 ISO-IR-197 TIS-620 KOI8-U GBK ISIRI-3342 GBGBK \ ISO-2022-CN libISOIR165 UTF-16 UNICODE UTF-32 UTF-7 BIG5HKSCS \ - GB18030 ISO-2022-CN-EXT VISCII GBBIG5 + GB18030 ISO-2022-CN-EXT VISCII GBBIG5 CP10007 KOI8-T \ + GEORGIAN-PS GEORGIAN-ACADEMY ISO-IR-209 MAC-SAMI modules.so := $(addsuffix .so, $(modules)) @@ -63,35 +64,35 @@ libGB-routines := gb2312 libCNS-routines := cns11643l1 cns11643 libISOIR165-routines := iso-ir-165 -LDFLAGS-EUC-KR.so = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-EUC-KR.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)EUC-KR.so: $(objpfx)libKSC.so -LDFLAGS-JOHAB.so = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-JOHAB.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)JOHAB.so: $(objpfx)libKSC.so -LDFLAGS-UHC.so = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-UHC.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)UHC.so: $(objpfx)libKSC.so -LDFLAGS-EUC-JP.so = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-EUC-JP.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)EUC-JP.so: $(objpfx)libJIS.so -LDFLAGS-EUC-CN.so = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-EUC-CN.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)EUC-CN.so: $(objpfx)libGB.so -LDFLAGS-EUC-TW.so = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-EUC-TW.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)EUC-TW.so: $(objpfx)libCNS.so -LDFLAGS-ISO-2022-JP.so = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-ISO-2022-JP.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)ISO-2022-JP.so: $(objpfx)libJIS.so $(objpfx)libGB.so \ $(objpfx)libCNS.so $(objpfx)libKSC.so -LDFLAGS-ISO-2022-KR.so = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-ISO-2022-KR.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)ISO-2022-KR.so: $(objpfx)libKSC.so -LDFLAGS-ISO-2022-CN.so = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-ISO-2022-CN.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)ISO-2022-CN.so: $(objpfx)libGB.so $(objpfx)libCNS.so -LDFLAGS-ISO-2022-CN-EXT.so = -Wl,-rpath,'$$ORIGIN' +LDFLAGS-ISO-2022-CN-EXT.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)ISO-2022-CN-EXT.so: $(objpfx)libGB.so $(objpfx)libCNS.so \ $(objpfx)libISOIR165.so -LDFLAGS-libJIS.so = -Wl,-soname,$(@F) -LDFLAGS-libKSC.so = -Wl,-soname,$(@F) -LDFLAGS-libGB.so = -Wl,-soname,$(@F) -LDFLAGS-libCNS.so = -Wl,-soname,$(@F) -LDFLAGS-libISOIR165.so = -Wl,-soname,$(@F) +LDFLAGS-libJIS.so = $(LDFLAGS-soname-fname) +LDFLAGS-libKSC.so = $(LDFLAGS-soname-fname) +LDFLAGS-libGB.so = $(LDFLAGS-soname-fname) +LDFLAGS-libCNS.so = $(LDFLAGS-soname-fname) +LDFLAGS-libISOIR165.so = $(LDFLAGS-soname-fname) distribute := gconv-modules extra-module.mk gap.awk gaptab.awk \ gen-8bit.sh gen-8bit-gap.sh gen-8bit-gap-1.sh \ @@ -100,6 +101,7 @@ distribute := gconv-modules extra-module tst-table-charmap.sh tst-table-from.c tst-table-to.c \ EUC-JP.irreversible ISIRI-3342.irreversible SJIS.irreversible \ EUC-KR.irreversible BIG5HKSCS.irreversible BIG5.irreversible \ + CP1255.irreversible CP1258.irreversible EUC-TW.irreversible \ 8bit-generic.c 8bit-gap.c \ ansi_x3.110.c asmo_449.c big5.c cp737.c cp737.h \ cp775.c cp775.h ibm874.c cns11643.c cns11643.h \ @@ -136,7 +138,9 @@ distribute := gconv-modules extra-module isiri-3342.c isiri-3342.h gbgbk.c iso-2022-cn.c cns11643l2.h \ iso8859-16.c utf-16.c unicode.c utf-32.c utf-7.c big5hkscs.c \ iso-ir-165.c iso-ir-165.h gb18030.c iso-2022-cn-ext.c \ - ibm932.c ibm932.h ibm943.c ibm943.h gbbig5.c + ibm932.c ibm932.h ibm943.c ibm943.h gbbig5.c cp10007.c \ + koi8-t.c georgian-ps.c georgian-academy.c iso-ir-209.c \ + mac-sami.c # We build the transformation modules only when we build shared libs. ifeq (yes,$(build-shared)) @@ -167,7 +171,7 @@ gen-8bit-gap-modules := koi8-r latin-gre ibm297 ibm420 ibm424 ibm437 ibm850 ibm851 ibm852 \ ibm855 ibm857 ibm860 ibm861 ibm862 ibm863 ibm864 \ ibm865 ibm868 ibm869 ibm875 ibm880 ibm918 ibm1004 \ - ibm1026 cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 \ + ibm1026 cp1250 cp1251 cp1252 cp1253 cp1254 \ cp1256 cp1257 ibm866 iso8859-5 iso8859-7 iso8859-8 \ iso8859-10 macintosh iec_p27-1 asmo_449 \ csn_369103 cwi dec-mcs ecma-cyrillic gost_19768-74 \ @@ -175,7 +179,8 @@ gen-8bit-gap-modules := koi8-r latin-gre inis-cyrillic iso_2033 iso_5427 iso_5427-ext \ iso_5428 iso_10367-box mac-is nats-dano nats-sefi \ iso8859-13 iso8859-14 iso8859-15 mac-uk sami-ws2 \ - iso-ir-197 cp1258 tis-620 koi8-u ibm874 + iso-ir-197 tis-620 koi8-u ibm874 cp10007 koi8-t \ + georgian-ps georgian-academy iso-ir-209 mac-sami gen-special-modules := iso8859-7jp @@ -270,8 +275,12 @@ tst-loading-ENV = MALLOC_TRACE=$(objpfx) $(objpfx)mtrace-tst-loading: $(objpfx)tst-loading.out $(common-objpfx)malloc/mtrace $(objpfx)tst-loading.mtrace > $@ -$(objpfx)bug-iconv1.out: $(objpfx)gconv-modules -$(objpfx)bug-iconv2.out: $(objpfx)gconv-modules +$(objpfx)bug-iconv1.out: $(objpfx)gconv-modules \ + $(addprefix $(objpfx),$(modules.so)) +$(objpfx)bug-iconv2.out: $(objpfx)gconv-modules \ + $(addprefix $(objpfx),$(modules.so)) +$(objpfx)tst-loading.out: $(objpfx)gconv-modules \ + $(addprefix $(objpfx),$(modules.so)) $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \ $(addprefix $(objpfx),$(modules.so)) \ diff -durpN glibc-2.2.3/iconvdata/TESTS glibc-2.2.4/iconvdata/TESTS --- glibc-2.2.3/iconvdata/TESTS Tue Jan 23 14:07:16 2001 +++ glibc-2.2.4/iconvdata/TESTS Mon Jul 23 10:53:43 2001 @@ -3,20 +3,21 @@ # This file is part of the GNU C Library. # Contributed by Ulrich Drepper , 1998. # + # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # Each line consists of at least four entries: # 1. input file name. @@ -72,10 +73,16 @@ CP1251 CP1251 Y UTF8 CP1252 CP1252 Y UTF8 CP1253 CP1253 Y UTF8 CP1254 CP1254 Y UTF8 +# CP1255 and WINDOWS-1255 are the same encodings. The first test works with the +# charmap as well. The second one tests character composition/decomposition. CP1255 CP1255 Y UTF8 +WINDOWS-1255 WINDOWS-1255 N UTF8 CP1256 CP1256 Y UTF8 CP1257 CP1257 Y UTF8 +# CP1258 and WINDOWS-1258 are the same encodings. The first test works with the +# charmap as well. The second one tests character composition/decomposition. CP1258 CP1258 Y UTF8 +WINDOWS-1258 WINDOWS-1258 N UTF8 ISO-2022-JP ISO-2022-JP N UTF8 ISO-2022-JP-2 ISO-2022-JP-2 N UTF8 ISO-2022-KR ISO-2022-KR N UTF8 diff -durpN glibc-2.2.3/iconvdata/TESTS2 glibc-2.2.4/iconvdata/TESTS2 --- glibc-2.2.3/iconvdata/TESTS2 Thu Apr 12 13:24:42 2001 +++ glibc-2.2.4/iconvdata/TESTS2 Mon Jul 23 10:53:43 2001 @@ -3,20 +3,21 @@ # This file is part of the GNU C Library. # Contributed by Bruno Haible , 2001. # + # The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with the GNU C Library; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. # Each line consists of three fields: # 1. The endianness independent encoding. diff -durpN glibc-2.2.3/iconvdata/ansi_x3.110.c glibc-2.2.4/iconvdata/ansi_x3.110.c --- glibc-2.2.3/iconvdata/ansi_x3.110.c Fri Dec 1 11:55:02 2000 +++ glibc-2.2.4/iconvdata/ansi_x3.110.c Sat Aug 4 12:31:42 2001 @@ -1,22 +1,22 @@ /* Generic conversion to and from ANSI_X3.110-1983. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -402,7 +402,7 @@ static const char from_ucs4[][2] = uint32_t ch = *inptr; \ int incr; \ \ - if (__builtin_expect (ch, 0x00) >= 0xc1 && ch <= 0xcf) \ + if (__builtin_expect (ch >= 0xc1, 0) && ch <= 0xcf) \ { \ /* Composed character. First test whether the next character \ is also available. */ \ @@ -417,8 +417,8 @@ static const char from_ucs4[][2] = \ ch2 = inptr[1]; \ \ - if (__builtin_expect (ch2, 0x20) < 0x20 \ - || __builtin_expect (ch2, 0x7f) >= 0x80) \ + if (__builtin_expect (ch2 < 0x20, 0) \ + || __builtin_expect (ch2 >= 0x80, 0)) \ { \ /* This is illegal. */ \ if (! ignore_errors_p ()) \ @@ -474,8 +474,8 @@ static const char from_ucs4[][2] = uint32_t ch = get32 (inptr); \ const char *cp; \ \ - if ((size_t) __builtin_expect (ch, 0) \ - >= sizeof (from_ucs4) / sizeof (from_ucs4[0])) \ + if (__builtin_expect (ch >= sizeof (from_ucs4) / sizeof (from_ucs4[0]), \ + 0)) \ { \ if (ch == 0x2c7) \ cp = "\xcf\x20"; \ @@ -549,6 +549,8 @@ static const char from_ucs4[][2] = cp = "\xd5"; \ else \ { \ + UNICODE_TAG_HANDLER (ch, 4); \ + \ /* Illegal characters. */ \ STANDARD_ERR_HANDLER (4); \ } \ diff -durpN glibc-2.2.3/iconvdata/asmo_449.c glibc-2.2.4/iconvdata/asmo_449.c --- glibc-2.2.3/iconvdata/asmo_449.c Mon Apr 12 10:56:17 1999 +++ glibc-2.2.4/iconvdata/asmo_449.c Mon Jul 23 10:53:43 2001 @@ -4,19 +4,19 @@ Contributed by Ulrich Drepper , 1998. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include diff -durpN glibc-2.2.3/iconvdata/big5.c glibc-2.2.4/iconvdata/big5.c --- glibc-2.2.3/iconvdata/big5.c Fri Dec 1 11:55:03 2000 +++ glibc-2.2.4/iconvdata/big5.c Sat Aug 4 12:31:42 2001 @@ -1,22 +1,22 @@ /* Mapping tables for Big5 handling. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -8414,8 +8414,8 @@ static const char from_ucs4_tab15[][2] = /* See whether the second byte is in the correct range. */ \ if (ch2 >= 0x40 && ch2 <= 0x7e) \ idx += ch2 - 0x40; \ - else if (__builtin_expect (ch2, 0xa1) >= 0xa1 \ - && __builtin_expect (ch2, 0xa1) <= 0xfe) \ + else if (__builtin_expect (ch2 >= 0xa1, 1) \ + && __builtin_expect (ch2 <= 0xfe, 1)) \ idx += 0x3f + (ch2 - 0xa1); \ else \ { \ @@ -8484,8 +8484,8 @@ static const char from_ucs4_tab15[][2] = uint32_t ch = get32 (inptr); \ const char *cp; \ \ - if ((size_t) __builtin_expect (ch, 0) \ - >= sizeof (from_ucs4_tab1) / sizeof (from_ucs4_tab1[0])) \ + if (__builtin_expect (ch >= (sizeof (from_ucs4_tab1) \ + / sizeof (from_ucs4_tab1[0])), 0)) \ switch (ch) \ { \ case 0x2c7 ... 0x2d9: \ @@ -8564,6 +8564,7 @@ static const char from_ucs4_tab15[][2] = cp = from_ucs4_tab15[ch - 0xff01]; \ break; \ default: \ + UNICODE_TAG_HANDLER (ch, 4); \ /* Illegal character. */ \ cp = ""; \ break; \ diff -durpN glibc-2.2.3/iconvdata/big5hkscs.c glibc-2.2.4/iconvdata/big5hkscs.c --- glibc-2.2.3/iconvdata/big5hkscs.c Fri Dec 1 11:55:04 2000 +++ glibc-2.2.4/iconvdata/big5hkscs.c Mon Jul 23 10:53:47 2001 @@ -1,23 +1,23 @@ /* Mapping tables for Big5-HKSCS handling. - Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. Modified for Big5-HKSCS by Roger So , 2000. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with 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 @@ -35,7 +35,7 @@ Using the charmap: - sed 's|^ *.x\(..\)/x\(..\).*|0x\2\3 \1|p;d' BIG5HKSCS | + sed 's|^ *.x\(..\)/x\(..\).*|0x\2\3 \1|p;d' BIG5-HKSCS | perl big5.pl where big5.pl is: @@ -4600,7 +4600,7 @@ static const uint16_t big5hkscs_to_ucs[] /* The mapping from Unicode to Big5 is not easy since we have several separate blocks. - sort BIG5HKSCS | sed 's|^ ./x\(..\)/x\(..\).*|\1 \2\3|p;d' | + sort BIG5-HKSCS | sed 's|^ ./x\(..\)/x\(..\).*|\1 \2\3|p;d' | perl big5.pl where big5.pl is: @@ -11772,6 +11772,8 @@ static struct \ if (cp[0] == '\0' && ch != 0) \ { \ + UNICODE_TAG_HANDLER (ch, 4); \ + \ /* Illegal character. */ \ STANDARD_ERR_HANDLER (4); \ } \ diff -durpN glibc-2.2.3/iconvdata/cns11643.c glibc-2.2.4/iconvdata/cns11643.c --- glibc-2.2.3/iconvdata/cns11643.c Mon Apr 20 15:27:25 1998 +++ glibc-2.2.4/iconvdata/cns11643.c Mon Jul 23 10:53:56 2001 @@ -1,31 +1,48 @@ -/* Mapping tables for CNS 11643, plane 2 handling. - Copyright (C) 1998 Free Software Foundation, Inc. +/* Mapping tables for CNS 11643, planes 2 to 7 handling. + Copyright (C) 1998, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #include -/* The following table contains no whole and is therefore compact. Nice +/* To generate a Unicode 3.1 CNS11643.TXT, take from + http://www.unicode.org/Public/Mappings/EASTASIA/OTHER/CNS11643.TXT + the planes 1+2 + + grep -v '^#' CNS11643.TXT | grep '^0x[12]' | sed -e 's/[ ]*#.*$//' + + and merge with the extracted table + + grep '^U.*kIRG_TSource ' UNIHAN.TXT | sed -e 's,^U+\([0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F]*\) kIRG_TSource \(.\)-\(....\)$,0x\2\3 0x\1,' | sort + + using a "cat ... ... | sort | uniq" command. + The following duplicates must be treated by hand: + U+5344 = plane 1, 0x243F = plane 3, 0x2138 + U+6729 = plane 5, 0x2148 U+233B3 = plane 5, 0x2148 + U+9D8D = plane 5, 0x6F3A U+2A0CC = plane 5, 0x6F3A + */ + +/* The following table contains no hole and is therefore compact. Nice work compared with the chaos of other character sets (or plane 1). The table can be generated using - egrep '^0x2' .../mappings/eastasia/other/cns11643.txt | + egrep '^0x2' CNS11643.TXT | awk '{print $1, $2}' | perl tab.pl where tab.pl is: @@ -1961,12 +1978,12 @@ const uint16_t __cns11643l2_to_ucs4_tab[ [0x1de0] = 0x9f49, [0x1de1] = 0x9f98, }; -/* The following table contains lots of small holes. It does not pay off - to use an extra index table. +/* The following table contains no hole and is therefore compact. Nice + work compared with the chaos of other character sets (or plane 1). The table can be generated using - egrep '^0xE' .../mappings/eastasia/other/cns11643.txt | + egrep '^0x3' CNS11643.TXT | awk '{print $1, $2}' | perl tab.pl where tab.pl is: @@ -1976,7 +1993,7 @@ const uint16_t __cns11643l2_to_ucs4_tab[ while (<>) { local($cns, $ucs4, %rest) = split; local($u)=hex($ucs4); - local($c)=hex($cns)-0xE2121; + local($c)=hex($cns)-0x32121; printf ("\n ") if ($n % 4 eq 0); ++$n; printf (" [0x%04x] = 0x%04x,", @@ -1985,1067 +2002,10498 @@ const uint16_t __cns11643l2_to_ucs4_tab[ printf ("\n"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -const uint16_t __cns11643l14_to_ucs4_tab[] = +const uint32_t __cns11643l3_to_ucs4_tab[] = { [0x0000] = 0x4e28, [0x0001] = 0x4e36, [0x0002] = 0x4e3f, [0x0003] = 0x4e85, [0x0004] = 0x4e05, [0x0005] = 0x4e04, [0x0006] = 0x5182, [0x0007] = 0x5196, [0x0008] = 0x5338, [0x0009] = 0x5369, [0x000a] = 0x53b6, [0x000b] = 0x4e2a, [0x000c] = 0x4e87, [0x000d] = 0x4e49, [0x000e] = 0x51e2, [0x000f] = 0x4e46, [0x0010] = 0x4e8f, [0x0011] = 0x4ebc, [0x0012] = 0x4ebe, [0x0013] = 0x5166, - [0x0014] = 0x51e3, [0x0015] = 0x5204, [0x0016] = 0x529c, [0x0018] = 0x5902, - [0x0019] = 0x590a, [0x001a] = 0x5b80, [0x001b] = 0x5ddb, [0x001c] = 0x5e7a, - [0x001d] = 0x5e7f, [0x001e] = 0x5ef4, [0x001f] = 0x5f50, [0x0020] = 0x5f51, - [0x0021] = 0x5f61, [0x0022] = 0x961d, [0x0024] = 0x4e63, [0x0025] = 0x4e62, - [0x0026] = 0x4ea3, [0x0027] = 0x5185, [0x0028] = 0x4ec5, [0x0029] = 0x4ecf, - [0x002a] = 0x4ece, [0x002b] = 0x4ecc, [0x002c] = 0x5184, [0x002d] = 0x5186, - [0x0030] = 0x51e4, [0x0031] = 0x5205, [0x0032] = 0x529e, [0x0033] = 0x529d, - [0x0034] = 0x52fd, [0x0035] = 0x5300, [0x0036] = 0x533a, [0x0038] = 0x5346, - [0x0039] = 0x535d, [0x003a] = 0x5386, [0x003b] = 0x53b7, [0x003d] = 0x53cc, - [0x003f] = 0x53ce, [0x0040] = 0x5721, [0x0042] = 0x5e00, [0x0043] = 0x5f0c, - [0x0044] = 0x6237, [0x0045] = 0x6238, [0x0046] = 0x6534, [0x0047] = 0x6535, - [0x0048] = 0x65e0, [0x004a] = 0x738d, [0x004b] = 0x4e97, [0x004c] = 0x4ee0, - [0x004f] = 0x4ee7, [0x0051] = 0x4ee6, [0x0056] = 0x56d8, [0x0057] = 0x518b, - [0x0058] = 0x518c, [0x0059] = 0x5199, [0x005a] = 0x51e5, [0x005c] = 0x520b, - [0x005f] = 0x5304, [0x0060] = 0x5303, [0x0061] = 0x5307, [0x0063] = 0x531e, - [0x0064] = 0x535f, [0x0065] = 0x536d, [0x0066] = 0x5389, [0x0067] = 0x53ba, - [0x0068] = 0x53d0, [0x006a] = 0x53f6, [0x006b] = 0x53f7, [0x006c] = 0x53f9, - [0x006e] = 0x53f4, [0x0071] = 0x5724, [0x0072] = 0x5904, [0x0073] = 0x5918, - [0x0074] = 0x5932, [0x0075] = 0x5930, [0x0076] = 0x5934, [0x0078] = 0x5975, - [0x007a] = 0x5b82, [0x007b] = 0x5bf9, [0x007c] = 0x5c14, [0x0084] = 0x5e81, - [0x0085] = 0x5e83, [0x0086] = 0x5f0d, [0x0087] = 0x5f52, [0x0089] = 0x5fca, - [0x008a] = 0x5fc7, [0x008b] = 0x6239, [0x008d] = 0x624f, [0x008e] = 0x65e7, - [0x008f] = 0x672f, [0x0090] = 0x6b7a, [0x0091] = 0x6c39, [0x0094] = 0x6c37, - [0x0095] = 0x6c44, [0x0096] = 0x6c45, [0x0097] = 0x738c, [0x0098] = 0x7592, - [0x0099] = 0x7676, [0x009a] = 0x9093, [0x009b] = 0x9092, [0x009e] = 0x4e21, + [0x0014] = 0x51e3, [0x0015] = 0x5204, [0x0016] = 0x529c, [0x0017] = 0x5344, + [0x0018] = 0x5902, [0x0019] = 0x590a, [0x001a] = 0x5b80, [0x001b] = 0x5ddb, + [0x001c] = 0x5e7a, [0x001d] = 0x5e7f, [0x001e] = 0x5ef4, [0x001f] = 0x5f50, + [0x0020] = 0x5f51, [0x0021] = 0x5f61, [0x0022] = 0x961d, [0x0023] = 0x2000b, + [0x0024] = 0x4e63, [0x0025] = 0x4e62, [0x0026] = 0x4ea3, [0x0027] = 0x5185, + [0x0028] = 0x4ec5, [0x0029] = 0x4ecf, [0x002a] = 0x4ece, [0x002b] = 0x4ecc, + [0x002c] = 0x5184, [0x002d] = 0x5186, [0x002f] = 0x34c5, [0x0030] = 0x51e4, + [0x0031] = 0x5205, [0x0032] = 0x529e, [0x0033] = 0x529d, [0x0034] = 0x52fd, + [0x0035] = 0x5300, [0x0036] = 0x533a, [0x0037] = 0x3539, [0x0038] = 0x5346, + [0x0039] = 0x535d, [0x003a] = 0x5386, [0x003b] = 0x53b7, [0x003c] = 0x3555, + [0x003d] = 0x53cc, [0x003e] = 0x355b, [0x003f] = 0x53ce, [0x0040] = 0x5721, + [0x0041] = 0x37a2, [0x0042] = 0x5e00, [0x0043] = 0x5f0c, [0x0044] = 0x6237, + [0x0045] = 0x6238, [0x0046] = 0x6534, [0x0047] = 0x6535, [0x0048] = 0x65e0, + [0x0049] = 0x3e26, [0x004a] = 0x738d, [0x004b] = 0x4e97, [0x004c] = 0x4ee0, + [0x004d] = 0x3432, [0x004e] = 0x201a9, [0x004f] = 0x4ee7, [0x0050] = 0x3433, + [0x0051] = 0x4ee6, [0x0052] = 0x3434, [0x0053] = 0x36a2, [0x0054] = 0x3431, + [0x0055] = 0x34b0, [0x0056] = 0x56d8, [0x0057] = 0x518b, [0x0058] = 0x518c, + [0x0059] = 0x5199, [0x005a] = 0x51e5, [0x005c] = 0x520b, [0x005d] = 0x34dc, + [0x005e] = 0x361e, [0x005f] = 0x5304, [0x0060] = 0x5303, [0x0061] = 0x5307, + [0x0063] = 0x531e, [0x0064] = 0x535f, [0x0065] = 0x536d, [0x0066] = 0x5389, + [0x0067] = 0x53ba, [0x0068] = 0x53d0, [0x0069] = 0x3565, [0x006a] = 0x53f6, + [0x006b] = 0x53f7, [0x006c] = 0x53f9, [0x006d] = 0x3564, [0x006e] = 0x53f4, + [0x006f] = 0x361d, [0x0070] = 0x3626, [0x0071] = 0x5724, [0x0072] = 0x5904, + [0x0073] = 0x5918, [0x0074] = 0x5932, [0x0075] = 0x5930, [0x0076] = 0x5934, + [0x0077] = 0x368e, [0x0078] = 0x5975, [0x0079] = 0x374a, [0x007a] = 0x5b82, + [0x007b] = 0x5bf9, [0x007c] = 0x5c14, [0x007d] = 0x378b, [0x007e] = 0x37a6, + [0x007f] = 0x37a4, [0x0080] = 0x37a5, [0x0081] = 0x37a7, [0x0082] = 0x382f, + [0x0083] = 0x3832, [0x0084] = 0x5e81, [0x0085] = 0x5e83, [0x0086] = 0x5f0d, + [0x0087] = 0x5f52, [0x0088] = 0x38d4, [0x0089] = 0x5fca, [0x008a] = 0x5fc7, + [0x008b] = 0x6239, [0x008c] = 0x39c5, [0x008d] = 0x624f, [0x008e] = 0x65e7, + [0x008f] = 0x672f, [0x0090] = 0x6b7a, [0x0091] = 0x6c39, [0x0092] = 0x3cba, + [0x0093] = 0x3cb9, [0x0094] = 0x6c37, [0x0095] = 0x6c44, [0x0096] = 0x6c45, + [0x0097] = 0x738c, [0x0098] = 0x7592, [0x0099] = 0x7676, [0x009a] = 0x9093, + [0x009b] = 0x9092, [0x009c] = 0x48b3, [0x009d] = 0x49ba, [0x009e] = 0x4e21, [0x009f] = 0x4e20, [0x00a0] = 0x4e22, [0x00a1] = 0x4e68, [0x00a2] = 0x4e89, - [0x00a3] = 0x4e98, [0x00a4] = 0x4ef9, [0x00a5] = 0x4eef, [0x00a8] = 0x4ef8, - [0x00a9] = 0x4f06, [0x00aa] = 0x4f03, [0x00ab] = 0x4efc, [0x00ac] = 0x4eee, - [0x00ad] = 0x4f16, [0x00af] = 0x4f28, [0x00b0] = 0x4f1c, [0x00b1] = 0x4f07, - [0x00b2] = 0x4f1a, [0x00b3] = 0x4efa, [0x00b4] = 0x4f17, [0x00b5] = 0x514a, + [0x00a3] = 0x4e98, [0x00a4] = 0x4ef9, [0x00a5] = 0x4eef, [0x00a6] = 0x343b, + [0x00a7] = 0x343c, [0x00a8] = 0x4ef8, [0x00a9] = 0x4f06, [0x00aa] = 0x4f03, + [0x00ab] = 0x4efc, [0x00ac] = 0x4eee, [0x00ad] = 0x4f16, [0x00ae] = 0x3439, + [0x00af] = 0x4f28, [0x00b0] = 0x4f1c, [0x00b1] = 0x4f07, [0x00b2] = 0x4f1a, + [0x00b3] = 0x4efa, [0x00b4] = 0x4f17, [0x00b5] = 0x514a, [0x00b6] = 0x34b2, [0x00b7] = 0x5172, [0x00b9] = 0x51b4, [0x00ba] = 0x51b3, [0x00bb] = 0x51b2, - [0x00bd] = 0x51e8, [0x00bf] = 0x5214, [0x00c0] = 0x520f, [0x00c1] = 0x5215, - [0x00c2] = 0x5218, [0x00c3] = 0x52a8, [0x00c5] = 0x534b, [0x00c6] = 0x534f, - [0x00c8] = 0x5350, [0x00ca] = 0x538b, [0x00cc] = 0x53be, [0x00ce] = 0x53d2, - [0x00cf] = 0x5416, [0x00d0] = 0x53ff, [0x00d2] = 0x5400, [0x00d4] = 0x5405, - [0x00d5] = 0x5413, [0x00d6] = 0x5415, [0x00d9] = 0x56e3, [0x00da] = 0x5735, - [0x00db] = 0x5736, [0x00dc] = 0x5731, [0x00dd] = 0x5732, [0x00de] = 0x58ee, - [0x00df] = 0x5905, [0x00e0] = 0x4e54, [0x00e2] = 0x5936, [0x00e6] = 0x597a, - [0x00e8] = 0x5986, [0x00eb] = 0x5b86, [0x00ec] = 0x5f53, [0x00ed] = 0x5c18, - [0x00ef] = 0x5c3d, [0x00f0] = 0x5c78, [0x00f5] = 0x5c80, [0x00f7] = 0x5e08, - [0x00fc] = 0x5ef5, [0x00fd] = 0x5f0e, [0x0101] = 0x5fd3, [0x0102] = 0x5fda, - [0x0104] = 0x5fdb, [0x0106] = 0x620f, [0x0107] = 0x625d, [0x0108] = 0x625f, - [0x0109] = 0x6267, [0x010a] = 0x6257, [0x010b] = 0x9f50, [0x010d] = 0x65eb, - [0x010e] = 0x65ea, [0x0110] = 0x6737, [0x0112] = 0x6732, [0x0113] = 0x6736, - [0x0114] = 0x6b22, [0x0115] = 0x6bce, [0x0117] = 0x6c58, [0x0118] = 0x6c51, - [0x0119] = 0x6c77, [0x011a] = 0x6c3c, [0x011c] = 0x6c5a, [0x011e] = 0x6c53, - [0x011f] = 0x706f, [0x0120] = 0x7072, [0x0121] = 0x706e, [0x0124] = 0x7073, - [0x0125] = 0x72b1, [0x0126] = 0x72b2, [0x0128] = 0x738f, [0x012c] = 0x793c, - [0x012e] = 0x808d, [0x012f] = 0x808e, [0x0131] = 0x827b, [0x0133] = 0x8d71, - [0x0134] = 0x8fb9, [0x0135] = 0x9096, [0x0136] = 0x909a, [0x0138] = 0x4e24, - [0x0139] = 0x4e71, [0x013b] = 0x4e9c, [0x013c] = 0x4f45, [0x013d] = 0x4f4a, - [0x013e] = 0x4f39, [0x013f] = 0x4f37, [0x0141] = 0x4f32, [0x0142] = 0x4f42, - [0x0144] = 0x4f44, [0x0145] = 0x4f4b, [0x0147] = 0x4f40, [0x0148] = 0x4f35, - [0x0149] = 0x4f31, [0x014a] = 0x5151, [0x014c] = 0x5150, [0x014d] = 0x514e, - [0x0150] = 0x519d, [0x0152] = 0x51b5, [0x0153] = 0x51b8, [0x0154] = 0x51ec, + [0x00bc] = 0x34c7, [0x00bd] = 0x51e8, [0x00be] = 0x342b, [0x00bf] = 0x5214, + [0x00c0] = 0x520f, [0x00c1] = 0x5215, [0x00c2] = 0x5218, [0x00c3] = 0x52a8, + [0x00c5] = 0x534b, [0x00c6] = 0x534f, [0x00c7] = 0x353b, [0x00c8] = 0x5350, + [0x00c9] = 0x3544, [0x00ca] = 0x538b, [0x00cb] = 0x3542, [0x00cc] = 0x53be, + [0x00cd] = 0x355c, [0x00ce] = 0x53d2, [0x00cf] = 0x5416, [0x00d0] = 0x53ff, + [0x00d1] = 0x3567, [0x00d2] = 0x5400, [0x00d3] = 0x3566, [0x00d4] = 0x5405, + [0x00d5] = 0x5413, [0x00d6] = 0x5415, [0x00d8] = 0x361f, [0x00d9] = 0x56e3, + [0x00da] = 0x5735, [0x00db] = 0x5736, [0x00dc] = 0x5731, [0x00dd] = 0x5732, + [0x00de] = 0x58ee, [0x00df] = 0x5905, [0x00e0] = 0x4e54, [0x00e1] = 0x368f, + [0x00e2] = 0x5936, [0x00e3] = 0x3690, [0x00e4] = 0x36a8, [0x00e5] = 0x36a4, + [0x00e6] = 0x597a, [0x00e7] = 0x36a3, [0x00e8] = 0x5986, [0x00e9] = 0x373d, + [0x00ea] = 0x374c, [0x00eb] = 0x5b86, [0x00ec] = 0x5f53, [0x00ed] = 0x5c18, + [0x00ee] = 0x378c, [0x00ef] = 0x5c3d, [0x00f0] = 0x5c78, [0x00f1] = 0x37a8, + [0x00f2] = 0x37ad, [0x00f3] = 0x37af, [0x00f4] = 0x21d46, [0x00f5] = 0x5c80, + [0x00f6] = 0x3829, [0x00f7] = 0x5e08, [0x00f8] = 0x3836, [0x00f9] = 0x3871, + [0x00fa] = 0x3870, [0x00fb] = 0x386f, [0x00fc] = 0x5ef5, [0x00fd] = 0x5f0e, + [0x00fe] = 0x38a9, [0x00ff] = 0x38aa, [0x0100] = 0x38fb, [0x0101] = 0x5fd3, + [0x0102] = 0x5fda, [0x0103] = 0x38fc, [0x0104] = 0x5fdb, [0x0105] = 0x39ae, + [0x0106] = 0x620f, [0x0107] = 0x625d, [0x0108] = 0x625f, [0x0109] = 0x6267, + [0x010a] = 0x6257, [0x010b] = 0x9f50, [0x010c] = 0x3ac3, [0x010d] = 0x65eb, + [0x010e] = 0x65ea, [0x010f] = 0x3b30, [0x0110] = 0x6737, [0x0111] = 0x3b41, + [0x0112] = 0x6732, [0x0113] = 0x6736, [0x0114] = 0x6b22, [0x0115] = 0x6bce, + [0x0116] = 0x3c8c, [0x0117] = 0x6c58, [0x0118] = 0x6c51, [0x0119] = 0x6c77, + [0x011a] = 0x6c3c, [0x011b] = 0x3cbb, [0x011c] = 0x6c5a, [0x011d] = 0x23c86, + [0x011e] = 0x6c53, [0x011f] = 0x706f, [0x0120] = 0x7072, [0x0121] = 0x706e, + [0x0123] = 0x3da1, [0x0124] = 0x7073, [0x0125] = 0x72b1, [0x0126] = 0x72b2, + [0x0127] = 0x3ea8, [0x0128] = 0x738f, [0x0129] = 0x3eaa, [0x012a] = 0x3eab, + [0x012b] = 0x4096, [0x012c] = 0x793c, [0x012d] = 0x41c2, [0x012e] = 0x808d, + [0x012f] = 0x808e, [0x0130] = 0x4493, [0x0131] = 0x827b, [0x0132] = 0x4494, + [0x0133] = 0x8d71, [0x0134] = 0x8fb9, [0x0135] = 0x9096, [0x0136] = 0x909a, + [0x0137] = 0x49bb, [0x0138] = 0x4e24, [0x0139] = 0x4e71, [0x013b] = 0x4e9c, + [0x013c] = 0x4f45, [0x013d] = 0x4f4a, [0x013e] = 0x4f39, [0x013f] = 0x4f37, + [0x0140] = 0x3443, [0x0141] = 0x4f32, [0x0142] = 0x4f42, [0x0143] = 0x3442, + [0x0144] = 0x4f44, [0x0145] = 0x4f4b, [0x0146] = 0x3444, [0x0147] = 0x4f40, + [0x0148] = 0x4f35, [0x0149] = 0x4f31, [0x014a] = 0x5151, [0x014c] = 0x5150, + [0x014d] = 0x514e, [0x014e] = 0x34b3, [0x014f] = 0x34b7, [0x0150] = 0x519d, + [0x0151] = 0x34c8, [0x0152] = 0x51b5, [0x0153] = 0x51b8, [0x0154] = 0x51ec, [0x0155] = 0x5223, [0x0156] = 0x5227, [0x0157] = 0x5226, [0x0158] = 0x521f, [0x0159] = 0x522b, [0x015a] = 0x5220, [0x015b] = 0x52b4, [0x015c] = 0x52b3, - [0x015e] = 0x5325, [0x015f] = 0x533b, [0x0160] = 0x5374, [0x0166] = 0x544d, - [0x0169] = 0x543a, [0x016c] = 0x5444, [0x016d] = 0x544c, [0x016e] = 0x5423, - [0x016f] = 0x541a, [0x0170] = 0x5432, [0x0171] = 0x544b, [0x0172] = 0x5421, - [0x0174] = 0x5434, [0x0175] = 0x5449, [0x0176] = 0x5450, [0x0177] = 0x5422, - [0x0178] = 0x543f, [0x0179] = 0x5451, [0x017a] = 0x545a, [0x017b] = 0x542f, + [0x015d] = 0x3518, [0x015e] = 0x5325, [0x015f] = 0x533b, [0x0160] = 0x5374, + [0x0161] = 0x3547, [0x0162] = 0x3546, [0x0163] = 0x3545, [0x0164] = 0x356b, + [0x0165] = 0x3569, [0x0166] = 0x544d, [0x0167] = 0x3572, [0x0168] = 0x3571, + [0x0169] = 0x543a, [0x016a] = 0x356c, [0x016b] = 0x356f, [0x016c] = 0x5444, + [0x016d] = 0x544c, [0x016e] = 0x5423, [0x016f] = 0x541a, [0x0170] = 0x5432, + [0x0171] = 0x544b, [0x0172] = 0x5421, [0x0173] = 0x3573, [0x0174] = 0x5434, + [0x0175] = 0x5449, [0x0176] = 0x5450, [0x0177] = 0x5422, [0x0178] = 0x543f, + [0x0179] = 0x5451, [0x017a] = 0x545a, [0x017b] = 0x542f, [0x017c] = 0x3576, [0x017d] = 0x56e9, [0x017e] = 0x56f2, [0x017f] = 0x56f3, [0x0180] = 0x56ef, [0x0181] = 0x56ed, [0x0182] = 0x56ec, [0x0183] = 0x56e6, [0x0184] = 0x5748, - [0x0186] = 0x5744, [0x0187] = 0x573f, [0x0188] = 0x573c, [0x0189] = 0x5753, - [0x018a] = 0x5756, [0x018c] = 0x575f, [0x018d] = 0x5743, [0x018e] = 0x5758, - [0x018f] = 0x5757, [0x0193] = 0x5746, [0x0195] = 0x573d, [0x0197] = 0x5742, - [0x0198] = 0x5754, [0x0199] = 0x5755, [0x019a] = 0x58f1, [0x019b] = 0x58f2, - [0x019c] = 0x58f0, [0x019d] = 0x590b, [0x019e] = 0x9ea6, [0x019f] = 0x56f1, - [0x01a0] = 0x593d, [0x01a2] = 0x5994, [0x01a3] = 0x598c, [0x01a5] = 0x599c, - [0x01a8] = 0x599f, [0x01aa] = 0x599b, [0x01ac] = 0x5989, [0x01ad] = 0x599a, - [0x01af] = 0x6588, [0x01b1] = 0x5b8d, [0x01b3] = 0x5bfe, [0x01b4] = 0x5bff, - [0x01b5] = 0x5bfd, [0x01b6] = 0x5c2b, [0x01b8] = 0x5c84, [0x01b9] = 0x5c8e, - [0x01ba] = 0x5c9c, [0x01bd] = 0x5c85, [0x01be] = 0x5df5, [0x01bf] = 0x5e09, - [0x01c2] = 0x5e0b, [0x01c4] = 0x5e92, [0x01c5] = 0x5e90, [0x01c6] = 0x5f03, - [0x01c8] = 0x5f1e, [0x01c9] = 0x5f63, [0x01cb] = 0x5fe7, [0x01cc] = 0x5ffe, - [0x01cd] = 0x5fe6, [0x01ce] = 0x5fdc, [0x01cf] = 0x5fce, [0x01d1] = 0x5ffc, - [0x01d2] = 0x5fdf, [0x01d3] = 0x5fec, [0x01d4] = 0x5ff6, [0x01d6] = 0x5ff2, - [0x01d7] = 0x5ff0, [0x01d8] = 0x5ff9, [0x01da] = 0x6213, [0x01dd] = 0x623b, - [0x01de] = 0x623c, [0x01df] = 0x6282, [0x01e3] = 0x6278, [0x01e4] = 0x628b, + [0x0185] = 0x3627, [0x0186] = 0x5744, [0x0187] = 0x573f, [0x0188] = 0x573c, + [0x0189] = 0x5753, [0x018a] = 0x5756, [0x018b] = 0x3630, [0x018c] = 0x575f, + [0x018d] = 0x5743, [0x018e] = 0x5758, [0x018f] = 0x5757, [0x0190] = 0x3629, + [0x0191] = 0x362a, [0x0192] = 0x362f, [0x0193] = 0x5746, [0x0194] = 0x362c, + [0x0195] = 0x573d, [0x0196] = 0x362d, [0x0197] = 0x5742, [0x0198] = 0x5754, + [0x0199] = 0x5755, [0x019a] = 0x58f1, [0x019b] = 0x58f2, [0x019c] = 0x58f0, + [0x019d] = 0x590b, [0x019e] = 0x9ea6, [0x019f] = 0x56f1, [0x01a0] = 0x593d, + [0x01a1] = 0x3693, [0x01a2] = 0x5994, [0x01a3] = 0x598c, [0x01a4] = 0x36ad, + [0x01a5] = 0x599c, [0x01a6] = 0x36ac, [0x01a7] = 0x36ab, [0x01a8] = 0x599f, + [0x01a9] = 0x36a9, [0x01aa] = 0x599b, [0x01ab] = 0x36ae, [0x01ac] = 0x5989, + [0x01ad] = 0x599a, [0x01ae] = 0x36aa, [0x01af] = 0x6588, [0x01b0] = 0x374e, + [0x01b1] = 0x5b8d, [0x01b2] = 0x3750, [0x01b3] = 0x5bfe, [0x01b4] = 0x5bff, + [0x01b5] = 0x5bfd, [0x01b6] = 0x5c2b, [0x01b7] = 0x37b2, [0x01b8] = 0x5c84, + [0x01b9] = 0x5c8e, [0x01ba] = 0x5c9c, [0x01bb] = 0x37b5, [0x01bc] = 0x37b6, + [0x01bd] = 0x5c85, [0x01be] = 0x5df5, [0x01bf] = 0x5e09, [0x01c0] = 0x3839, + [0x01c1] = 0x383b, [0x01c2] = 0x5e0b, [0x01c3] = 0x3872, [0x01c4] = 0x5e92, + [0x01c5] = 0x5e90, [0x01c6] = 0x5f03, [0x01c7] = 0x38ac, [0x01c8] = 0x5f1e, + [0x01c9] = 0x5f63, [0x01ca] = 0x3908, [0x01cb] = 0x5fe7, [0x01cc] = 0x5ffe, + [0x01cd] = 0x5fe6, [0x01ce] = 0x5fdc, [0x01cf] = 0x5fce, [0x01d0] = 0x3903, + [0x01d1] = 0x5ffc, [0x01d2] = 0x5fdf, [0x01d3] = 0x5fec, [0x01d4] = 0x5ff6, + [0x01d5] = 0x225d7, [0x01d6] = 0x5ff2, [0x01d7] = 0x5ff0, [0x01d8] = 0x5ff9, + [0x01d9] = 0x390b, [0x01da] = 0x6213, [0x01db] = 0x39af, [0x01dd] = 0x623b, + [0x01de] = 0x623c, [0x01df] = 0x6282, [0x01e0] = 0x39ce, [0x01e1] = 0x39cb, + [0x01e2] = 0x39cc, [0x01e3] = 0x6278, [0x01e4] = 0x628b, [0x01e5] = 0x39cd, [0x01e6] = 0x629e, [0x01e7] = 0x62a5, [0x01e8] = 0x629b, [0x01e9] = 0x629c, [0x01ea] = 0x6299, [0x01eb] = 0x628d, [0x01ec] = 0x6285, [0x01ed] = 0x629d, - [0x01ee] = 0x6275, [0x01f2] = 0x65f6, [0x01f6] = 0x66f5, [0x01f7] = 0x675b, - [0x01f9] = 0x6754, [0x01fa] = 0x6752, [0x01fc] = 0x6758, [0x01fd] = 0x6744, - [0x01fe] = 0x674a, [0x01ff] = 0x6761, [0x0201] = 0x6c7f, [0x0202] = 0x6c91, - [0x0203] = 0x6c9e, [0x0205] = 0x6c6e, [0x0206] = 0x6c7c, [0x0207] = 0x6c9f, - [0x0208] = 0x6c75, [0x020a] = 0x6c56, [0x020b] = 0x6ca2, [0x020c] = 0x6c79, - [0x020e] = 0x6ca1, [0x0210] = 0x6caa, [0x0211] = 0x6ca0, [0x0213] = 0x7079, - [0x0214] = 0x7077, [0x0215] = 0x707e, [0x0217] = 0x7075, [0x0218] = 0x707b, - [0x0219] = 0x7264, [0x021b] = 0x72bb, [0x021c] = 0x72bc, [0x021d] = 0x72c7, - [0x021e] = 0x72b9, [0x021f] = 0x72be, [0x0220] = 0x72b6, [0x0223] = 0x7398, - [0x0228] = 0x7593, [0x0229] = 0x7680, [0x022b] = 0x7683, [0x022c] = 0x76c0, - [0x022d] = 0x76c1, [0x0230] = 0x77f4, [0x0231] = 0x77f5, [0x0233] = 0x7acc, - [0x0234] = 0x7acd, [0x0235] = 0x7cfa, [0x0236] = 0x809f, [0x0237] = 0x8091, - [0x0238] = 0x8097, [0x0239] = 0x8094, [0x023b] = 0x8286, [0x023c] = 0x828c, - [0x023e] = 0x8295, [0x0240] = 0x866c, [0x0242] = 0x8fb5, [0x0243] = 0x8fbe, - [0x0244] = 0x8fc7, [0x0246] = 0x8fc1, [0x0247] = 0x90a9, [0x0248] = 0x90a4, - [0x024c] = 0x90a8, [0x024d] = 0x9627, [0x024e] = 0x9626, [0x024f] = 0x962b, - [0x0250] = 0x9633, [0x0251] = 0x9634, [0x0252] = 0x9629, [0x0253] = 0x4e3d, - [0x0255] = 0x4e9d, [0x0256] = 0x4f93, [0x0257] = 0x4f8a, [0x025a] = 0x4f6d, + [0x01ee] = 0x6275, [0x01ef] = 0x3a80, [0x01f0] = 0x3aaf, [0x01f1] = 0x3ad3, + [0x01f2] = 0x65f6, [0x01f3] = 0x3ad5, [0x01f4] = 0x3ad4, [0x01f5] = 0x3ad7, + [0x01f6] = 0x66f5, [0x01f7] = 0x675b, [0x01f8] = 0x3b42, [0x01f9] = 0x6754, + [0x01fa] = 0x6752, [0x01fb] = 0x3b44, [0x01fc] = 0x6758, [0x01fd] = 0x6744, + [0x01fe] = 0x674a, [0x01ff] = 0x6761, [0x0200] = 0x3cc6, [0x0201] = 0x6c7f, + [0x0202] = 0x6c91, [0x0203] = 0x6c9e, [0x0204] = 0x3cc0, [0x0205] = 0x6c6e, + [0x0206] = 0x6c7c, [0x0207] = 0x6c9f, [0x0208] = 0x6c75, [0x0209] = 0x3cbe, + [0x020a] = 0x6c56, [0x020b] = 0x6ca2, [0x020c] = 0x6c79, [0x020d] = 0x3cca, + [0x020e] = 0x6ca1, [0x020f] = 0x3cc4, [0x0210] = 0x6caa, [0x0211] = 0x6ca0, + [0x0212] = 0x3cc2, [0x0213] = 0x7079, [0x0214] = 0x7077, [0x0215] = 0x707e, + [0x0216] = 0x3da4, [0x0217] = 0x7075, [0x0218] = 0x707b, [0x0219] = 0x7264, + [0x021a] = 0x3e29, [0x021b] = 0x72bb, [0x021c] = 0x72bc, [0x021d] = 0x72c7, + [0x021e] = 0x72b9, [0x021f] = 0x72be, [0x0220] = 0x72b6, [0x0221] = 0x3e60, + [0x0222] = 0x3e5e, [0x0223] = 0x7398, [0x0224] = 0x3ead, [0x0225] = 0x3eae, + [0x0226] = 0x3eac, [0x0227] = 0x3f57, [0x0228] = 0x7593, [0x0229] = 0x7680, + [0x022a] = 0x3fdd, [0x022b] = 0x7683, [0x022c] = 0x76c0, [0x022d] = 0x76c1, + [0x022e] = 0x400e, [0x022f] = 0x4097, [0x0230] = 0x77f4, [0x0231] = 0x77f5, + [0x0232] = 0x4127, [0x0233] = 0x7acc, [0x0234] = 0x7acd, [0x0235] = 0x7cfa, + [0x0236] = 0x809f, [0x0237] = 0x8091, [0x0238] = 0x8097, [0x0239] = 0x8094, + [0x023a] = 0x4495, [0x023b] = 0x8286, [0x023c] = 0x828c, [0x023e] = 0x8295, + [0x023f] = 0x4498, [0x0240] = 0x866c, [0x0241] = 0x459d, [0x0242] = 0x8fb5, + [0x0243] = 0x8fbe, [0x0244] = 0x8fc7, [0x0245] = 0x488a, [0x0246] = 0x8fc1, + [0x0247] = 0x90a9, [0x0248] = 0x90a4, [0x0249] = 0x48b5, [0x024a] = 0x48b6, + [0x024b] = 0x48b7, [0x024c] = 0x90a8, [0x024d] = 0x9627, [0x024e] = 0x9626, + [0x024f] = 0x962b, [0x0250] = 0x9633, [0x0251] = 0x9634, [0x0252] = 0x9629, + [0x0253] = 0x4e3d, [0x0254] = 0x3428, [0x0255] = 0x4e9d, [0x0256] = 0x4f93, + [0x0257] = 0x4f8a, [0x0258] = 0x344d, [0x0259] = 0x3449, [0x025a] = 0x4f6d, [0x025b] = 0x4f8e, [0x025c] = 0x4fa0, [0x025d] = 0x4fa2, [0x025e] = 0x4fa1, - [0x025f] = 0x4f9f, [0x0260] = 0x4fa3, [0x0262] = 0x4f72, [0x0264] = 0x4f8c, - [0x0265] = 0x5156, [0x0268] = 0x5190, [0x026c] = 0x51ed, [0x026d] = 0x51fe, - [0x026e] = 0x522f, [0x0270] = 0x523c, [0x0271] = 0x5234, [0x0272] = 0x5239, - [0x0273] = 0x52b9, [0x0274] = 0x52b5, [0x0275] = 0x52bf, [0x0276] = 0x5355, - [0x0278] = 0x5376, [0x0279] = 0x537a, [0x027a] = 0x5393, [0x027c] = 0x53c1, - [0x027d] = 0x53c2, [0x027e] = 0x53d5, [0x027f] = 0x5485, [0x0281] = 0x545f, - [0x0282] = 0x5493, [0x0283] = 0x5489, [0x0284] = 0x5479, [0x0285] = 0x9efe, - [0x0286] = 0x548f, [0x0287] = 0x5469, [0x0288] = 0x546d, [0x028a] = 0x5494, - [0x028b] = 0x546a, [0x028c] = 0x548a, [0x028e] = 0x56fd, [0x028f] = 0x56fb, - [0x0290] = 0x56f8, [0x0292] = 0x56fc, [0x0293] = 0x56f6, [0x0294] = 0x5765, - [0x0295] = 0x5781, [0x0296] = 0x5763, [0x0297] = 0x5767, [0x0299] = 0x576e, - [0x029a] = 0x5778, [0x029b] = 0x577f, [0x029e] = 0x58f3, [0x029f] = 0x594b, - [0x02a0] = 0x594c, [0x02a4] = 0x59ad, [0x02a6] = 0x59c4, [0x02a8] = 0x59c2, - [0x02a9] = 0x59b0, [0x02ae] = 0x59bf, [0x02b0] = 0x59c9, [0x02b1] = 0x59b8, - [0x02b2] = 0x59ac, [0x02b6] = 0x59b7, [0x02b7] = 0x59d7, [0x02b9] = 0x5b60, - [0x02bb] = 0x5b96, [0x02bc] = 0x5b9e, [0x02bd] = 0x5b94, [0x02be] = 0x5b9f, - [0x02bf] = 0x5b9d, [0x02c1] = 0x5c00, [0x02c2] = 0x5c19, [0x02c5] = 0x5c49, - [0x02c6] = 0x5c4a, [0x02c8] = 0x5cbb, [0x02c9] = 0x5cc1, [0x02cd] = 0x5cb9, - [0x02ce] = 0x5c9e, [0x02cf] = 0x5cb4, [0x02d0] = 0x5cba, [0x02d1] = 0x5df6, - [0x02d2] = 0x5e13, [0x02d3] = 0x5e12, [0x02d4] = 0x5e77, [0x02d6] = 0x5e98, - [0x02d8] = 0x5e99, [0x02d9] = 0x5e9d, [0x02da] = 0x5ef8, [0x02dc] = 0x5ef9, - [0x02de] = 0x5f06, [0x02df] = 0x5f21, [0x02e1] = 0x5f25, [0x02e2] = 0x5f55, - [0x02e6] = 0x5f84, [0x02e7] = 0x5f83, [0x02e8] = 0x6030, [0x02e9] = 0x6007, - [0x02eb] = 0x6036, [0x02ef] = 0x5fe9, [0x02f0] = 0x603d, [0x02f1] = 0x6008, - [0x02f4] = 0x62ba, [0x02f5] = 0x62b2, [0x02f7] = 0x62b7, [0x02f8] = 0x62e4, - [0x02f9] = 0x62a7, [0x02fd] = 0x62d5, [0x02fe] = 0x62e1, [0x02ff] = 0x62dd, - [0x0300] = 0x62a6, [0x0301] = 0x62c1, [0x0302] = 0x62c5, [0x0303] = 0x62c0, - [0x0304] = 0x62df, [0x0305] = 0x62e0, [0x0306] = 0x62de, [0x0308] = 0x6589, - [0x030a] = 0x65a6, [0x030b] = 0x65ba, [0x030d] = 0x65ff, [0x030f] = 0x6617, - [0x0310] = 0x6618, [0x0311] = 0x6601, [0x0312] = 0x65fe, [0x0314] = 0x670c, - [0x0316] = 0x676b, [0x0317] = 0x6796, [0x0318] = 0x6782, [0x0319] = 0x678a, - [0x031b] = 0x67a3, [0x031d] = 0x67a2, [0x031e] = 0x678f, [0x0320] = 0x67f9, + [0x025f] = 0x4f9f, [0x0260] = 0x4fa3, [0x0261] = 0x20209, [0x0262] = 0x4f72, + [0x0263] = 0x3451, [0x0264] = 0x4f8c, [0x0265] = 0x5156, [0x0268] = 0x5190, + [0x0269] = 0x34cb, [0x026a] = 0x34ca, [0x026b] = 0x34cc, [0x026c] = 0x51ed, + [0x026d] = 0x51fe, [0x026e] = 0x522f, [0x026f] = 0x206ec, [0x0270] = 0x523c, + [0x0271] = 0x5234, [0x0272] = 0x5239, [0x0273] = 0x52b9, [0x0274] = 0x52b5, + [0x0275] = 0x52bf, [0x0276] = 0x5355, [0x0277] = 0x353d, [0x0278] = 0x5376, + [0x0279] = 0x537a, [0x027a] = 0x5393, [0x027b] = 0x3548, [0x027c] = 0x53c1, + [0x027d] = 0x53c2, [0x027e] = 0x53d5, [0x027f] = 0x5485, [0x0280] = 0x3578, + [0x0281] = 0x545f, [0x0282] = 0x5493, [0x0283] = 0x5489, [0x0284] = 0x5479, + [0x0285] = 0x9efe, [0x0286] = 0x548f, [0x0287] = 0x5469, [0x0288] = 0x546d, + [0x0289] = 0x357a, [0x028a] = 0x5494, [0x028b] = 0x546a, [0x028c] = 0x548a, + [0x028d] = 0x3577, [0x028e] = 0x56fd, [0x028f] = 0x56fb, [0x0290] = 0x56f8, + [0x0291] = 0x3621, [0x0292] = 0x56fc, [0x0293] = 0x56f6, [0x0294] = 0x5765, + [0x0295] = 0x5781, [0x0296] = 0x5763, [0x0297] = 0x5767, [0x0298] = 0x3631, + [0x0299] = 0x576e, [0x029a] = 0x5778, [0x029b] = 0x577f, [0x029c] = 0x3633, + [0x029d] = 0x3634, [0x029e] = 0x58f3, [0x029f] = 0x594b, [0x02a0] = 0x594c, + [0x02a1] = 0x36c1, [0x02a2] = 0x36b0, [0x02a3] = 0x36b4, [0x02a4] = 0x59ad, + [0x02a5] = 0x36b8, [0x02a6] = 0x59c4, [0x02a7] = 0x36bc, [0x02a8] = 0x59c2, + [0x02a9] = 0x59b0, [0x02aa] = 0x36bf, [0x02ab] = 0x36b5, [0x02ac] = 0x36b1, + [0x02ad] = 0x36bd, [0x02ae] = 0x59bf, [0x02af] = 0x36bb, [0x02b0] = 0x59c9, + [0x02b1] = 0x59b8, [0x02b2] = 0x59ac, [0x02b3] = 0x36b3, [0x02b4] = 0x36b6, + [0x02b5] = 0x36ba, [0x02b6] = 0x59b7, [0x02b7] = 0x59d7, [0x02b8] = 0x36b7, + [0x02b9] = 0x5b60, [0x02ba] = 0x3740, [0x02bb] = 0x5b96, [0x02bc] = 0x5b9e, + [0x02bd] = 0x5b94, [0x02be] = 0x5b9f, [0x02bf] = 0x5b9d, [0x02c0] = 0x3752, + [0x02c1] = 0x5c00, [0x02c2] = 0x5c19, [0x02c3] = 0x3790, [0x02c4] = 0x3791, + [0x02c5] = 0x5c49, [0x02c6] = 0x5c4a, [0x02c7] = 0x37be, [0x02c8] = 0x5cbb, + [0x02c9] = 0x5cc1, [0x02ca] = 0x37c0, [0x02cb] = 0x37c1, [0x02cc] = 0x37b9, + [0x02cd] = 0x5cb9, [0x02ce] = 0x5c9e, [0x02cf] = 0x5cb4, [0x02d0] = 0x5cba, + [0x02d1] = 0x5df6, [0x02d2] = 0x5e13, [0x02d3] = 0x5e12, [0x02d4] = 0x5e77, + [0x02d5] = 0x3879, [0x02d6] = 0x5e98, [0x02d7] = 0x387b, [0x02d8] = 0x5e99, + [0x02d9] = 0x5e9d, [0x02da] = 0x5ef8, [0x02db] = 0x38a0, [0x02dc] = 0x5ef9, + [0x02dd] = 0x3429, [0x02de] = 0x5f06, [0x02df] = 0x5f21, [0x02e0] = 0x38ae, + [0x02e1] = 0x5f25, [0x02e2] = 0x5f55, [0x02e3] = 0x38cd, [0x02e4] = 0x38cb, + [0x02e5] = 0x38d9, [0x02e6] = 0x5f84, [0x02e7] = 0x5f83, [0x02e8] = 0x6030, + [0x02e9] = 0x6007, [0x02ea] = 0x390c, [0x02eb] = 0x6036, [0x02ec] = 0x3901, + [0x02ed] = 0x3905, [0x02ee] = 0x3902, [0x02ef] = 0x5fe9, [0x02f0] = 0x603d, + [0x02f1] = 0x6008, [0x02f2] = 0x3913, [0x02f3] = 0x3911, [0x02f4] = 0x62ba, + [0x02f5] = 0x62b2, [0x02f6] = 0x39e4, [0x02f7] = 0x62b7, [0x02f8] = 0x62e4, + [0x02f9] = 0x62a7, [0x02fa] = 0x39da, [0x02fb] = 0x39d5, [0x02fc] = 0x39d3, + [0x02fd] = 0x62d5, [0x02fe] = 0x62e1, [0x02ff] = 0x62dd, [0x0300] = 0x62a6, + [0x0301] = 0x62c1, [0x0302] = 0x62c5, [0x0303] = 0x62c0, [0x0304] = 0x62df, + [0x0305] = 0x62e0, [0x0306] = 0x62de, [0x0307] = 0x39d6, [0x0308] = 0x6589, + [0x0309] = 0x3ab4, [0x030a] = 0x65a6, [0x030b] = 0x65ba, [0x030c] = 0x3ad9, + [0x030d] = 0x65ff, [0x030e] = 0x3ad8, [0x030f] = 0x6617, [0x0310] = 0x6618, + [0x0311] = 0x6601, [0x0312] = 0x65fe, [0x0313] = 0x3b33, [0x0314] = 0x670c, + [0x0315] = 0x3b48, [0x0316] = 0x676b, [0x0317] = 0x6796, [0x0318] = 0x6782, + [0x0319] = 0x678a, [0x031a] = 0x3b47, [0x031b] = 0x67a3, [0x031c] = 0x3b4b, + [0x031d] = 0x67a2, [0x031e] = 0x678f, [0x031f] = 0x3b4a, [0x0320] = 0x67f9, [0x0321] = 0x6780, [0x0322] = 0x6b26, [0x0323] = 0x6b27, [0x0324] = 0x6b68, - [0x0325] = 0x6b69, [0x0327] = 0x6b81, [0x0328] = 0x6bb4, [0x0329] = 0x6bd1, - [0x032c] = 0x6c1c, [0x0332] = 0x6c97, [0x0333] = 0x6c6c, [0x0334] = 0x6cdf, - [0x0336] = 0x6cea, [0x0338] = 0x6ce4, [0x0339] = 0x6cd8, [0x033a] = 0x6cb2, - [0x033b] = 0x6cce, [0x033c] = 0x6cc8, [0x033e] = 0x708b, [0x033f] = 0x7088, - [0x0340] = 0x7090, [0x0341] = 0x708f, [0x0343] = 0x7087, [0x0344] = 0x7089, - [0x0345] = 0x708d, [0x0346] = 0x7081, [0x0348] = 0x708c, [0x034b] = 0x7240, - [0x034e] = 0x7265, [0x034f] = 0x7266, [0x0350] = 0x7268, [0x0353] = 0x72cd, - [0x0354] = 0x72d3, [0x0355] = 0x72db, [0x0357] = 0x72cf, [0x0358] = 0x73a7, - [0x0359] = 0x73a3, [0x035a] = 0x739e, [0x035c] = 0x73af, [0x035f] = 0x73aa, - [0x0360] = 0x739c, [0x0362] = 0x7542, [0x0363] = 0x7544, [0x0364] = 0x753b, - [0x0365] = 0x7541, [0x0367] = 0x759b, [0x0368] = 0x759e, [0x036a] = 0x79c4, - [0x036b] = 0x79c3, [0x036c] = 0x79c6, [0x036f] = 0x79c7, [0x0371] = 0x79ca, - [0x0374] = 0x7acf, [0x0375] = 0x7c76, [0x0376] = 0x7c74, [0x0377] = 0x7cff, - [0x0378] = 0x7cfc, [0x037b] = 0x7f59, [0x037c] = 0x80a8, [0x037f] = 0x80b0, - [0x0381] = 0x80b3, [0x0383] = 0x80a4, [0x0384] = 0x80b6, [0x0385] = 0x80a7, - [0x0386] = 0x80ac, [0x0388] = 0x80a6, [0x0389] = 0x5367, [0x038a] = 0x820e, - [0x038b] = 0x82c4, [0x038c] = 0x833e, [0x038d] = 0x829c, [0x0393] = 0x82aa, - [0x0395] = 0x82c9, [0x0398] = 0x82a6, [0x0399] = 0x82b2, [0x039d] = 0x8fcc, - [0x039e] = 0x8fd9, [0x039f] = 0x8fca, [0x03a0] = 0x8fd8, [0x03a1] = 0x8fcf, - [0x03a2] = 0x90b7, [0x03a4] = 0x90ad, [0x03a5] = 0x90b9, [0x03a6] = 0x9637, - [0x03a8] = 0x9641, [0x03a9] = 0x963e, [0x03aa] = 0x96b6, [0x03ab] = 0x9751, - [0x03ac] = 0x9763, [0x03ad] = 0x4e57, [0x03ae] = 0x4e79, [0x03af] = 0x4eb2, - [0x03b0] = 0x4eb0, [0x03b1] = 0x4eaf, [0x03b2] = 0x4eb1, [0x03b3] = 0x4fd2, - [0x03b4] = 0x4fd5, [0x03b6] = 0x4fbe, [0x03b7] = 0x4fb8, [0x03b8] = 0x4fb0, - [0x03b9] = 0x4fb1, [0x03ba] = 0x4fc8, [0x03bd] = 0x4fc6, [0x03be] = 0x4fcc, - [0x03bf] = 0x4fe5, [0x03c0] = 0x4fe3, [0x03c1] = 0x4fb4, [0x03c2] = 0x516a, - [0x03c4] = 0x519f, [0x03c6] = 0x51c1, [0x03c8] = 0x51c2, [0x03c9] = 0x51c3, - [0x03ca] = 0x5245, [0x03cb] = 0x5248, [0x03ce] = 0x524f, [0x03d1] = 0x52c5, - [0x03d2] = 0x52ca, [0x03d3] = 0x52c4, [0x03d4] = 0x5327, [0x03d5] = 0x5358, - [0x03d6] = 0x537d, [0x03d8] = 0x53dd, [0x03d9] = 0x53dc, [0x03da] = 0x53da, - [0x03db] = 0x53d9, [0x03dc] = 0x54b9, [0x03de] = 0x54d0, [0x03df] = 0x54b4, - [0x03e0] = 0x54ca, [0x03e2] = 0x54a3, [0x03e3] = 0x54da, [0x03e4] = 0x54a4, - [0x03e6] = 0x54b2, [0x03e7] = 0x549e, [0x03e8] = 0x549f, [0x03e9] = 0x54b5, - [0x03ec] = 0x54cd, [0x03ee] = 0x54cc, [0x03f0] = 0x5700, [0x03f1] = 0x57ac, - [0x03f2] = 0x5791, [0x03f3] = 0x578e, [0x03f4] = 0x578d, [0x03f5] = 0x5792, - [0x03f6] = 0x57a1, [0x03f7] = 0x5790, [0x03f8] = 0x57a6, [0x03f9] = 0x57a8, - [0x03fb] = 0x579c, [0x03fc] = 0x5796, [0x03fd] = 0x57a7, [0x0402] = 0x58f5, - [0x0404] = 0x5909, [0x0405] = 0x5908, [0x0407] = 0x5952, [0x040a] = 0x59df, - [0x040c] = 0x59eb, [0x040d] = 0x59ef, [0x040e] = 0x59f0, [0x040f] = 0x59d5, - [0x0410] = 0x5a0d, [0x0411] = 0x5a04, [0x0412] = 0x59f9, [0x0413] = 0x5a02, - [0x0414] = 0x59f8, [0x0415] = 0x59e2, [0x0416] = 0x59d9, [0x0417] = 0x59e7, - [0x0418] = 0x5b6a, [0x041b] = 0x5bab, [0x041d] = 0x5c1b, [0x041e] = 0x5c2f, - [0x0420] = 0x663c, [0x0424] = 0x5cd1, [0x0425] = 0x5cdc, [0x0426] = 0x5ce6, - [0x0427] = 0x5ce1, [0x0428] = 0x5ccd, [0x042a] = 0x5ce2, [0x042b] = 0x5cdd, - [0x042c] = 0x5ce5, [0x042d] = 0x5dfb, [0x042e] = 0x5dfa, [0x042f] = 0x5e1e, - [0x0431] = 0x5ea1, [0x0434] = 0x5efc, [0x0435] = 0x5efb, [0x0436] = 0x5f2f, - [0x0439] = 0x5f66, [0x043d] = 0x605c, [0x043f] = 0x604e, [0x0440] = 0x6051, + [0x0325] = 0x6b69, [0x0326] = 0x3c5a, [0x0327] = 0x6b81, [0x0328] = 0x6bb4, + [0x0329] = 0x6bd1, [0x032a] = 0x3c8e, [0x032b] = 0x3cb4, [0x032c] = 0x6c1c, + [0x032d] = 0x3ccd, [0x032e] = 0x3ccc, [0x032f] = 0x3ccf, [0x0330] = 0x3ccb, + [0x0331] = 0x3cce, [0x0332] = 0x6c97, [0x0333] = 0x6c6c, [0x0334] = 0x6cdf, + [0x0335] = 0x3cd2, [0x0336] = 0x6cea, [0x0337] = 0x3cd1, [0x0338] = 0x6ce4, + [0x0339] = 0x6cd8, [0x033a] = 0x6cb2, [0x033b] = 0x6cce, [0x033c] = 0x6cc8, + [0x033d] = 0x3da6, [0x033e] = 0x708b, [0x033f] = 0x7088, [0x0340] = 0x7090, + [0x0341] = 0x708f, [0x0342] = 0x3daa, [0x0343] = 0x7087, [0x0344] = 0x7089, + [0x0345] = 0x708d, [0x0346] = 0x7081, [0x0347] = 0x3da8, [0x0348] = 0x708c, + [0x0349] = 0x3e13, [0x034a] = 0x3e1a, [0x034b] = 0x7240, [0x034c] = 0x3e1d, + [0x034d] = 0x3e1e, [0x034e] = 0x7265, [0x034f] = 0x7266, [0x0350] = 0x7268, + [0x0351] = 0x3e65, [0x0352] = 0x3e66, [0x0353] = 0x72cd, [0x0354] = 0x72d3, + [0x0355] = 0x72db, [0x0356] = 0x3e64, [0x0357] = 0x72cf, [0x0358] = 0x73a7, + [0x0359] = 0x73a3, [0x035a] = 0x739e, [0x035b] = 0x3eb0, [0x035c] = 0x73af, + [0x035d] = 0x3eb3, [0x035e] = 0x3eb5, [0x035f] = 0x73aa, [0x0360] = 0x739c, + [0x0361] = 0x3f19, [0x0362] = 0x7542, [0x0363] = 0x7544, [0x0364] = 0x753b, + [0x0365] = 0x7541, [0x0366] = 0x2233f, [0x0367] = 0x759b, [0x0368] = 0x759e, + [0x0369] = 0x3f75, [0x036a] = 0x79c4, [0x036b] = 0x79c3, [0x036c] = 0x79c6, + [0x036d] = 0x412b, [0x036e] = 0x412c, [0x036f] = 0x79c7, [0x0370] = 0x412d, + [0x0371] = 0x79ca, [0x0372] = 0x2592e, [0x0373] = 0x41c3, [0x0374] = 0x7acf, + [0x0375] = 0x7c76, [0x0376] = 0x7c74, [0x0377] = 0x7cff, [0x0378] = 0x7cfc, + [0x0379] = 0x34ba, [0x037a] = 0x4350, [0x037b] = 0x7f59, [0x037c] = 0x80a8, + [0x037d] = 0x43d3, [0x037e] = 0x43d0, [0x037f] = 0x80b0, [0x0380] = 0x43dc, + [0x0381] = 0x80b3, [0x0382] = 0x43d2, [0x0383] = 0x80a4, [0x0384] = 0x80b6, + [0x0385] = 0x80a7, [0x0386] = 0x80ac, [0x0387] = 0x43db, [0x0388] = 0x80a6, + [0x0389] = 0x5367, [0x038a] = 0x820e, [0x038b] = 0x82c4, [0x038c] = 0x833e, + [0x038d] = 0x829c, [0x038e] = 0x44a5, [0x038f] = 0x449f, [0x0390] = 0x449a, + [0x0391] = 0x449c, [0x0392] = 0x44a2, [0x0393] = 0x82aa, [0x0394] = 0x449b, + [0x0395] = 0x82c9, [0x0396] = 0x44a3, [0x0397] = 0x449d, [0x0398] = 0x82a6, + [0x0399] = 0x82b2, [0x039a] = 0x4588, [0x039b] = 0x461a, [0x039c] = 0x488d, + [0x039d] = 0x8fcc, [0x039e] = 0x8fd9, [0x039f] = 0x8fca, [0x03a0] = 0x8fd8, + [0x03a1] = 0x8fcf, [0x03a2] = 0x90b7, [0x03a3] = 0x48b8, [0x03a4] = 0x90ad, + [0x03a5] = 0x90b9, [0x03a6] = 0x9637, [0x03a7] = 0x49c3, [0x03a8] = 0x9641, + [0x03a9] = 0x963e, [0x03aa] = 0x96b6, [0x03ab] = 0x9751, [0x03ac] = 0x9763, + [0x03ad] = 0x4e57, [0x03ae] = 0x4e79, [0x03af] = 0x4eb2, [0x03b0] = 0x4eb0, + [0x03b1] = 0x4eaf, [0x03b2] = 0x4eb1, [0x03b3] = 0x4fd2, [0x03b4] = 0x4fd5, + [0x03b5] = 0x345d, [0x03b6] = 0x4fbe, [0x03b7] = 0x4fb8, [0x03b8] = 0x4fb0, + [0x03b9] = 0x4fb1, [0x03ba] = 0x4fc8, [0x03bb] = 0x345a, [0x03bc] = 0x3457, + [0x03bd] = 0x4fc6, [0x03be] = 0x4fcc, [0x03bf] = 0x4fe5, [0x03c0] = 0x4fe3, + [0x03c1] = 0x4fb4, [0x03c2] = 0x516a, [0x03c3] = 0x34b8, [0x03c4] = 0x519f, + [0x03c5] = 0x34c2, [0x03c6] = 0x51c1, [0x03c7] = 0x34cf, [0x03c8] = 0x51c2, + [0x03c9] = 0x51c3, [0x03ca] = 0x5245, [0x03cb] = 0x5248, [0x03cc] = 0x34e7, + [0x03cd] = 0x34e9, [0x03ce] = 0x524f, [0x03cf] = 0x4452, [0x03d0] = 0x34e8, + [0x03d1] = 0x52c5, [0x03d2] = 0x52ca, [0x03d3] = 0x52c4, [0x03d4] = 0x5327, + [0x03d5] = 0x5358, [0x03d6] = 0x537d, [0x03d7] = 0x354a, [0x03d8] = 0x53dd, + [0x03d9] = 0x53dc, [0x03da] = 0x53da, [0x03db] = 0x53d9, [0x03dc] = 0x54b9, + [0x03dd] = 0x3580, [0x03de] = 0x54d0, [0x03df] = 0x54b4, [0x03e0] = 0x54ca, + [0x03e1] = 0x3587, [0x03e2] = 0x54a3, [0x03e3] = 0x54da, [0x03e4] = 0x54a4, + [0x03e5] = 0x3584, [0x03e6] = 0x54b2, [0x03e7] = 0x549e, [0x03e8] = 0x549f, + [0x03e9] = 0x54b5, [0x03ea] = 0x3582, [0x03eb] = 0x3581, [0x03ec] = 0x54cd, + [0x03ed] = 0x3583, [0x03ee] = 0x54cc, [0x03ef] = 0x3622, [0x03f0] = 0x5700, + [0x03f1] = 0x57ac, [0x03f2] = 0x5791, [0x03f3] = 0x578e, [0x03f4] = 0x578d, + [0x03f5] = 0x5792, [0x03f6] = 0x57a1, [0x03f7] = 0x5790, [0x03f8] = 0x57a6, + [0x03f9] = 0x57a8, [0x03fa] = 0x363b, [0x03fb] = 0x579c, [0x03fc] = 0x5796, + [0x03fd] = 0x57a7, [0x03fe] = 0x363a, [0x03ff] = 0x3638, [0x0400] = 0x3639, + [0x0401] = 0x3636, [0x0402] = 0x58f5, [0x0403] = 0x3685, [0x0404] = 0x5909, + [0x0405] = 0x5908, [0x0406] = 0x3c54, [0x0407] = 0x5952, [0x0408] = 0x369a, + [0x0409] = 0x36c4, [0x040a] = 0x59df, [0x040b] = 0x36c5, [0x040c] = 0x59eb, + [0x040d] = 0x59ef, [0x040e] = 0x59f0, [0x040f] = 0x59d5, [0x0410] = 0x5a0d, + [0x0411] = 0x5a04, [0x0412] = 0x59f9, [0x0413] = 0x5a02, [0x0414] = 0x59f8, + [0x0415] = 0x59e2, [0x0416] = 0x59d9, [0x0417] = 0x59e7, [0x0418] = 0x5b6a, + [0x0419] = 0x3754, [0x041a] = 0x3755, [0x041b] = 0x5bab, [0x041c] = 0x3756, + [0x041d] = 0x5c1b, [0x041e] = 0x5c2f, [0x041f] = 0x3796, [0x0420] = 0x663c, + [0x0421] = 0x3795, [0x0422] = 0x3794, [0x0423] = 0x37c4, [0x0424] = 0x5cd1, + [0x0425] = 0x5cdc, [0x0426] = 0x5ce6, [0x0427] = 0x5ce1, [0x0428] = 0x5ccd, + [0x042a] = 0x5ce2, [0x042b] = 0x5cdd, [0x042c] = 0x5ce5, [0x042d] = 0x5dfb, + [0x042e] = 0x5dfa, [0x042f] = 0x5e1e, [0x0430] = 0x3844, [0x0431] = 0x5ea1, + [0x0432] = 0x387d, [0x0433] = 0x387e, [0x0434] = 0x5efc, [0x0435] = 0x5efb, + [0x0436] = 0x5f2f, [0x0437] = 0x38b2, [0x0438] = 0x38b6, [0x0439] = 0x5f66, + [0x043b] = 0x38dc, [0x043c] = 0x38df, [0x043d] = 0x605c, [0x043e] = 0x3928, + [0x043f] = 0x604e, [0x0440] = 0x6051, [0x0441] = 0x3919, [0x0442] = 0x3910, [0x0443] = 0x6023, [0x0444] = 0x6031, [0x0445] = 0x607c, [0x0446] = 0x6052, - [0x0448] = 0x6060, [0x0449] = 0x604a, [0x044a] = 0x6061, [0x044c] = 0x6218, - [0x0454] = 0x631f, [0x0455] = 0x6317, [0x0456] = 0x62ea, [0x0457] = 0x6321, - [0x0458] = 0x6304, [0x0459] = 0x6305, [0x045b] = 0x6531, [0x045c] = 0x6544, - [0x045d] = 0x6540, [0x045f] = 0x6542, [0x0460] = 0x65be, [0x0462] = 0x6629, - [0x0463] = 0x661b, [0x0465] = 0x6623, [0x0466] = 0x662c, [0x0467] = 0x661a, - [0x0468] = 0x6630, [0x0469] = 0x663b, [0x046a] = 0x661e, [0x046b] = 0x6637, - [0x046c] = 0x6638, [0x046e] = 0x670e, [0x0471] = 0x67e8, [0x0472] = 0x67d6, - [0x0474] = 0x67c7, [0x0475] = 0x67bc, [0x0476] = 0x6852, [0x0477] = 0x67bf, - [0x0478] = 0x67d5, [0x0479] = 0x67fe, [0x047a] = 0x8363, [0x047b] = 0x67fb, - [0x047d] = 0x67b1, [0x047e] = 0x6801, [0x047f] = 0x6805, [0x0480] = 0x6800, - [0x0481] = 0x67d7, [0x0483] = 0x6b2a, [0x0484] = 0x6b6b, [0x0489] = 0x6be1, + [0x0447] = 0x392c, [0x0448] = 0x6060, [0x0449] = 0x604a, [0x044a] = 0x6061, + [0x044b] = 0x391b, [0x044c] = 0x6218, [0x044d] = 0x39c2, [0x044e] = 0x39ef, + [0x044f] = 0x39e3, [0x0450] = 0x39e5, [0x0451] = 0x39ea, [0x0452] = 0x39e6, + [0x0453] = 0x39ee, [0x0454] = 0x631f, [0x0455] = 0x6317, [0x0456] = 0x62ea, + [0x0457] = 0x6321, [0x0458] = 0x6304, [0x0459] = 0x6305, [0x045a] = 0x39e8, + [0x045b] = 0x6531, [0x045c] = 0x6544, [0x045d] = 0x6540, [0x045e] = 0x3a85, + [0x045f] = 0x6542, [0x0460] = 0x65be, [0x0461] = 0x3ae0, [0x0462] = 0x6629, + [0x0463] = 0x661b, [0x0464] = 0x3add, [0x0465] = 0x6623, [0x0466] = 0x662c, + [0x0467] = 0x661a, [0x0468] = 0x6630, [0x0469] = 0x663b, [0x046a] = 0x661e, + [0x046b] = 0x6637, [0x046c] = 0x6638, [0x046d] = 0x3ae1, [0x046e] = 0x670e, + [0x046f] = 0x3b51, [0x0470] = 0x3b55, [0x0471] = 0x67e8, [0x0472] = 0x67d6, + [0x0473] = 0x3b52, [0x0474] = 0x67c7, [0x0475] = 0x67bc, [0x0476] = 0x6852, + [0x0477] = 0x67bf, [0x0478] = 0x67d5, [0x0479] = 0x67fe, [0x047a] = 0x8363, + [0x047b] = 0x67fb, [0x047d] = 0x67b1, [0x047e] = 0x6801, [0x047f] = 0x6805, + [0x0480] = 0x6800, [0x0481] = 0x67d7, [0x0482] = 0x409e, [0x0483] = 0x6b2a, + [0x0484] = 0x6b6b, [0x0485] = 0x3c52, [0x0486] = 0x3c5e, [0x0487] = 0x3c60, + [0x0488] = 0x3c5f, [0x0489] = 0x6be1, [0x048a] = 0x3c92, [0x048b] = 0x3cd6, [0x048c] = 0x6d23, [0x048d] = 0x6cff, [0x048e] = 0x6d14, [0x048f] = 0x6d05, - [0x0490] = 0x6d13, [0x0491] = 0x6d06, [0x0492] = 0x6d21, [0x0494] = 0x6d15, - [0x0495] = 0x6caf, [0x0496] = 0x6cf4, [0x0497] = 0x6d02, [0x0498] = 0x6d45, - [0x049a] = 0x6d26, [0x049c] = 0x6d44, [0x049e] = 0x6d24, [0x049f] = 0x70a5, - [0x04a1] = 0x70a3, [0x04a3] = 0x70a2, [0x04a4] = 0x70bb, [0x04a5] = 0x70a0, - [0x04a6] = 0x70aa, [0x04a9] = 0x70a8, [0x04aa] = 0x70b6, [0x04ab] = 0x70b2, - [0x04ac] = 0x70a7, [0x04af] = 0x70b9, [0x04b0] = 0x722e, [0x04b2] = 0x723c, - [0x04b4] = 0x726d, [0x04b7] = 0x72e7, [0x04b8] = 0x72ed, [0x04ba] = 0x72ec, - [0x04bb] = 0x72e5, [0x04bc] = 0x72e2, [0x04be] = 0x73c4, [0x04bf] = 0x73bd, - [0x04c0] = 0x73cf, [0x04c1] = 0x73c9, [0x04c2] = 0x73c1, [0x04c3] = 0x73d0, - [0x04c5] = 0x73ce, [0x04c6] = 0x74ed, [0x04c7] = 0x74eb, [0x04c9] = 0x74ef, - [0x04ca] = 0x7549, [0x04cb] = 0x7550, [0x04cc] = 0x7546, [0x04cd] = 0x754a, - [0x04cf] = 0x754d, [0x04d0] = 0x75a6, [0x04d4] = 0x75a8, [0x04d7] = 0x76c7, - [0x04d8] = 0x76ff, [0x04da] = 0x76fd, [0x04db] = 0x77e6, [0x04dc] = 0x780a, - [0x04de] = 0x7804, [0x04df] = 0x780b, [0x04e0] = 0x7807, [0x04e2] = 0x7815, - [0x04e3] = 0x7808, [0x04e5] = 0x79d3, [0x04e6] = 0x79d4, [0x04e7] = 0x79d0, - [0x04e8] = 0x79d7, [0x04e9] = 0x7a7c, [0x04ec] = 0x7a7d, [0x04ed] = 0x7a83, - [0x04ee] = 0x7a82, [0x04f0] = 0x7ad4, [0x04f1] = 0x7ad5, [0x04f2] = 0x7ad3, - [0x04f3] = 0x7ad0, [0x04f4] = 0x7ad2, [0x04f5] = 0x7afe, [0x04f6] = 0x7afc, - [0x04f7] = 0x7c77, [0x04f8] = 0x7c7c, [0x04f9] = 0x7c7b, [0x0502] = 0x7f8f, - [0x0503] = 0x80d3, [0x0505] = 0x80cb, [0x0506] = 0x80d2, [0x0508] = 0x8109, - [0x0509] = 0x80e2, [0x050a] = 0x80df, [0x050b] = 0x80c6, [0x050d] = 0x8224, - [0x050e] = 0x82f7, [0x050f] = 0x82d8, [0x0510] = 0x82dd, [0x0513] = 0x82f8, - [0x0514] = 0x82fc, [0x0517] = 0x82e9, [0x0519] = 0x82ee, [0x051b] = 0x82d0, - [0x051c] = 0x830e, [0x051d] = 0x82e2, [0x051e] = 0x830b, [0x051f] = 0x82fd, - [0x0520] = 0x5179, [0x0521] = 0x8676, [0x0523] = 0x8678, [0x0526] = 0x8675, - [0x0527] = 0x867d, [0x0529] = 0x8842, [0x052a] = 0x8866, [0x052c] = 0x898c, - [0x052d] = 0x8a05, [0x052f] = 0x8a06, [0x0531] = 0x8c9f, [0x0533] = 0x8ff1, - [0x0534] = 0x8fe7, [0x0535] = 0x8fe9, [0x0536] = 0x8fef, [0x0537] = 0x90c2, - [0x0538] = 0x90bc, [0x053a] = 0x90c6, [0x053b] = 0x90c0, [0x053e] = 0x90cd, - [0x053f] = 0x90c9, [0x0541] = 0x90c4, [0x0543] = 0x9581, [0x0545] = 0x9cec, + [0x0490] = 0x6d13, [0x0491] = 0x6d06, [0x0492] = 0x6d21, [0x0493] = 0x3cde, + [0x0494] = 0x6d15, [0x0495] = 0x6caf, [0x0496] = 0x6cf4, [0x0497] = 0x6d02, + [0x0498] = 0x6d45, [0x049a] = 0x6d26, [0x049b] = 0x3cd9, [0x049c] = 0x6d44, + [0x049d] = 0x3cdd, [0x049e] = 0x6d24, [0x049f] = 0x70a5, [0x04a0] = 0x3dac, + [0x04a1] = 0x70a3, [0x04a2] = 0x3db0, [0x04a3] = 0x70a2, [0x04a4] = 0x70bb, + [0x04a5] = 0x70a0, [0x04a6] = 0x70aa, [0x04a7] = 0x3daf, [0x04a8] = 0x3dae, + [0x04a9] = 0x70a8, [0x04aa] = 0x70b6, [0x04ab] = 0x70b2, [0x04ac] = 0x70a7, + [0x04ad] = 0x3dad, [0x04ae] = 0x3dab, [0x04af] = 0x70b9, [0x04b0] = 0x722e, + [0x04b1] = 0x3e16, [0x04b2] = 0x723c, [0x04b3] = 0x3e30, [0x04b4] = 0x726d, + [0x04b5] = 0x3e33, [0x04b6] = 0x3e31, [0x04b7] = 0x72e7, [0x04b8] = 0x72ed, + [0x04b9] = 0x3e6e, [0x04ba] = 0x72ec, [0x04bb] = 0x72e5, [0x04bc] = 0x72e2, + [0x04bd] = 0x3eb1, [0x04be] = 0x73c4, [0x04bf] = 0x73bd, [0x04c0] = 0x73cf, + [0x04c1] = 0x73c9, [0x04c2] = 0x73c1, [0x04c3] = 0x73d0, [0x04c4] = 0x3eb7, + [0x04c5] = 0x73ce, [0x04c6] = 0x74ed, [0x04c7] = 0x74eb, [0x04c8] = 0x3f1a, + [0x04c9] = 0x74ef, [0x04ca] = 0x7549, [0x04cb] = 0x7550, [0x04cc] = 0x7546, + [0x04cd] = 0x754a, [0x04ce] = 0x3f59, [0x04cf] = 0x754d, [0x04d0] = 0x75a6, + [0x04d1] = 0x3f7a, [0x04d2] = 0x3f78, [0x04d3] = 0x3f7b, [0x04d4] = 0x75a8, + [0x04d5] = 0x3fde, [0x04d6] = 0x3fec, [0x04d7] = 0x76c7, [0x04d8] = 0x76ff, + [0x04d9] = 0x401e, [0x04da] = 0x76fd, [0x04db] = 0x77e6, [0x04dc] = 0x780a, + [0x04dd] = 0x409b, [0x04de] = 0x7804, [0x04df] = 0x780b, [0x04e0] = 0x7807, + [0x04e1] = 0x409d, [0x04e2] = 0x7815, [0x04e3] = 0x7808, [0x04e4] = 0x40fd, + [0x04e5] = 0x79d3, [0x04e6] = 0x79d4, [0x04e7] = 0x79d0, [0x04e8] = 0x79d7, + [0x04e9] = 0x7a7c, [0x04ea] = 0x4194, [0x04eb] = 0x4193, [0x04ec] = 0x7a7d, + [0x04ed] = 0x7a83, [0x04ee] = 0x7a82, [0x04ef] = 0x41c6, [0x04f0] = 0x7ad4, + [0x04f1] = 0x7ad5, [0x04f2] = 0x7ad3, [0x04f3] = 0x7ad0, [0x04f4] = 0x7ad2, + [0x04f5] = 0x7afe, [0x04f6] = 0x7afc, [0x04f7] = 0x7c77, [0x04f8] = 0x7c7c, + [0x04f9] = 0x7c7b, [0x04fa] = 0x42b8, [0x04fc] = 0x42b7, [0x04fd] = 0x42b9, + [0x04fe] = 0x4353, [0x04ff] = 0x25133, [0x0500] = 0x4352, [0x0501] = 0x4351, + [0x0502] = 0x7f8f, [0x0503] = 0x80d3, [0x0504] = 0x43e3, [0x0505] = 0x80cb, + [0x0506] = 0x80d2, [0x0507] = 0x43e2, [0x0508] = 0x8109, [0x0509] = 0x80e2, + [0x050a] = 0x80df, [0x050b] = 0x80c6, [0x050c] = 0x4463, [0x050d] = 0x8224, + [0x050e] = 0x82f7, [0x050f] = 0x82d8, [0x0510] = 0x82dd, [0x0511] = 0x44aa, + [0x0512] = 0x44a6, [0x0513] = 0x82f8, [0x0514] = 0x82fc, [0x0515] = 0x44a8, + [0x0516] = 0x44a9, [0x0517] = 0x82e9, [0x0518] = 0x44ab, [0x0519] = 0x82ee, + [0x051a] = 0x44ac, [0x051b] = 0x82d0, [0x051c] = 0x830e, [0x051d] = 0x82e2, + [0x051e] = 0x830b, [0x051f] = 0x82fd, [0x0520] = 0x5179, [0x0521] = 0x8676, + [0x0522] = 0x459e, [0x0523] = 0x8678, [0x0524] = 0x459f, [0x0525] = 0x45a0, + [0x0526] = 0x8675, [0x0527] = 0x867d, [0x0528] = 0x460f, [0x0529] = 0x8842, + [0x052a] = 0x8866, [0x052b] = 0x461c, [0x052c] = 0x898c, [0x052d] = 0x8a05, + [0x052e] = 0x46ae, [0x052f] = 0x8a06, [0x0530] = 0x46b0, [0x0531] = 0x8c9f, + [0x0532] = 0x47d4, [0x0533] = 0x8ff1, [0x0534] = 0x8fe7, [0x0535] = 0x8fe9, + [0x0536] = 0x8fef, [0x0537] = 0x90c2, [0x0538] = 0x90bc, [0x0539] = 0x48bb, + [0x053a] = 0x90c6, [0x053b] = 0x90c0, [0x053c] = 0x48c1, [0x053d] = 0x48c2, + [0x053e] = 0x90cd, [0x053f] = 0x90c9, [0x0540] = 0x48be, [0x0541] = 0x90c4, + [0x0542] = 0x48e5, [0x0543] = 0x9581, [0x0544] = 0x49c6, [0x0545] = 0x9cec, [0x0546] = 0x5032, [0x0547] = 0x4ff9, [0x0548] = 0x501d, [0x0549] = 0x4fff, - [0x054a] = 0x5004, [0x054b] = 0x4ff0, [0x054c] = 0x5003, [0x054e] = 0x5002, - [0x054f] = 0x4ffc, [0x0550] = 0x4ff2, [0x0551] = 0x5024, [0x0552] = 0x5008, - [0x0553] = 0x5036, [0x0554] = 0x502e, [0x0556] = 0x5010, [0x0557] = 0x5038, - [0x0558] = 0x5039, [0x0559] = 0x4ffd, [0x055a] = 0x5056, [0x055b] = 0x4ffb, - [0x055c] = 0x51a3, [0x055d] = 0x51a6, [0x055e] = 0x51a1, [0x0561] = 0x51c7, + [0x054a] = 0x5004, [0x054b] = 0x4ff0, [0x054c] = 0x5003, [0x054d] = 0x462e, + [0x054e] = 0x5002, [0x054f] = 0x4ffc, [0x0550] = 0x4ff2, [0x0551] = 0x5024, + [0x0552] = 0x5008, [0x0553] = 0x5036, [0x0554] = 0x502e, [0x0555] = 0x3465, + [0x0556] = 0x5010, [0x0557] = 0x5038, [0x0558] = 0x5039, [0x0559] = 0x4ffd, + [0x055a] = 0x5056, [0x055b] = 0x4ffb, [0x055c] = 0x51a3, [0x055d] = 0x51a6, + [0x055e] = 0x51a1, [0x055f] = 0x34d1, [0x0560] = 0x34d0, [0x0561] = 0x51c7, [0x0562] = 0x51c9, [0x0563] = 0x5260, [0x0564] = 0x5264, [0x0565] = 0x5259, [0x0566] = 0x5265, [0x0567] = 0x5267, [0x0568] = 0x5257, [0x0569] = 0x5263, - [0x056b] = 0x5253, [0x056d] = 0x52cf, [0x056f] = 0x52ce, [0x0570] = 0x52d0, - [0x0571] = 0x52d1, [0x0572] = 0x52cc, [0x0576] = 0x550d, [0x0577] = 0x54f4, - [0x0579] = 0x5513, [0x057a] = 0x54ef, [0x057b] = 0x54f5, [0x057c] = 0x54f9, - [0x057d] = 0x5502, [0x057e] = 0x5500, [0x0581] = 0x5518, [0x0582] = 0x54f0, - [0x0583] = 0x54f6, [0x0586] = 0x5519, [0x0588] = 0x5705, [0x0589] = 0x57c9, - [0x058b] = 0x57b7, [0x058c] = 0x57cd, [0x0590] = 0x57be, [0x0591] = 0x57bb, + [0x056a] = 0x34ee, [0x056b] = 0x5253, [0x056c] = 0x34ef, [0x056d] = 0x52cf, + [0x056e] = 0x351e, [0x056f] = 0x52ce, [0x0570] = 0x52d0, [0x0571] = 0x52d1, + [0x0572] = 0x52cc, [0x0573] = 0x354b, [0x0574] = 0x354d, [0x0575] = 0x3556, + [0x0576] = 0x550d, [0x0577] = 0x54f4, [0x0578] = 0x3592, [0x0579] = 0x5513, + [0x057a] = 0x54ef, [0x057b] = 0x54f5, [0x057c] = 0x54f9, [0x057d] = 0x5502, + [0x057e] = 0x5500, [0x057f] = 0x3593, [0x0580] = 0x3590, [0x0581] = 0x5518, + [0x0582] = 0x54f0, [0x0583] = 0x54f6, [0x0585] = 0x3597, [0x0586] = 0x5519, + [0x0587] = 0x3623, [0x0588] = 0x5705, [0x0589] = 0x57c9, [0x058a] = 0x363f, + [0x058b] = 0x57b7, [0x058c] = 0x57cd, [0x058d] = 0x3643, [0x058e] = 0x3642, + [0x058f] = 0x3644, [0x0590] = 0x57be, [0x0591] = 0x57bb, [0x0592] = 0x3645, [0x0593] = 0x57db, [0x0594] = 0x57c8, [0x0595] = 0x57c4, [0x0596] = 0x57c5, - [0x0597] = 0x57d1, [0x0598] = 0x57ca, [0x0599] = 0x57c0, [0x059c] = 0x5a21, - [0x059d] = 0x5a2a, [0x059f] = 0x5a1d, [0x05a1] = 0x5a0b, [0x05a6] = 0x5a22, - [0x05a9] = 0x5a24, [0x05ab] = 0x5a14, [0x05ac] = 0x5a31, [0x05ae] = 0x5a2f, - [0x05af] = 0x5a1a, [0x05b0] = 0x5a12, [0x05b3] = 0x5a26, [0x05b6] = 0x5bbc, + [0x0597] = 0x57d1, [0x0598] = 0x57ca, [0x0599] = 0x57c0, [0x059a] = 0x36d9, + [0x059b] = 0x36de, [0x059c] = 0x5a21, [0x059d] = 0x5a2a, [0x059e] = 0x36cf, + [0x059f] = 0x5a1d, [0x05a0] = 0x36cd, [0x05a1] = 0x5a0b, [0x05a2] = 0x36dd, + [0x05a3] = 0x36ce, [0x05a4] = 0x36d3, [0x05a5] = 0x36d6, [0x05a6] = 0x5a22, + [0x05a7] = 0x36dc, [0x05a8] = 0x36d1, [0x05a9] = 0x5a24, [0x05aa] = 0x36d0, + [0x05ab] = 0x5a14, [0x05ac] = 0x5a31, [0x05ad] = 0x36d5, [0x05ae] = 0x5a2f, + [0x05af] = 0x5a1a, [0x05b0] = 0x5a12, [0x05b1] = 0x36d4, [0x05b2] = 0x36db, + [0x05b3] = 0x5a26, [0x05b4] = 0x2172e, [0x05b5] = 0x3743, [0x05b6] = 0x5bbc, [0x05b7] = 0x5bbb, [0x05b8] = 0x5bb7, [0x05b9] = 0x5c05, [0x05ba] = 0x5c06, - [0x05bb] = 0x5c52, [0x05bc] = 0x5c53, [0x05bf] = 0x5cfa, [0x05c0] = 0x5ceb, - [0x05c2] = 0x5cf3, [0x05c3] = 0x5cf5, [0x05c4] = 0x5ce9, [0x05c5] = 0x5cef, + [0x05bb] = 0x5c52, [0x05bc] = 0x5c53, [0x05bd] = 0x37cd, [0x05be] = 0x37d1, + [0x05bf] = 0x5cfa, [0x05c0] = 0x5ceb, [0x05c1] = 0x37ca, [0x05c2] = 0x5cf3, + [0x05c3] = 0x5cf5, [0x05c4] = 0x5ce9, [0x05c5] = 0x5cef, [0x05c6] = 0x37d4, [0x05c7] = 0x5e2a, [0x05c8] = 0x5e30, [0x05c9] = 0x5e2e, [0x05ca] = 0x5e2c, - [0x05cb] = 0x5e2f, [0x05cc] = 0x5eaf, [0x05cd] = 0x5ea9, [0x05cf] = 0x5efd, - [0x05d0] = 0x5f32, [0x05d1] = 0x5f8e, [0x05d2] = 0x5f93, [0x05d3] = 0x5f8f, - [0x05d4] = 0x604f, [0x05d5] = 0x6099, [0x05d7] = 0x607e, [0x05d9] = 0x6074, - [0x05da] = 0x604b, [0x05db] = 0x6073, [0x05dc] = 0x6075, [0x05df] = 0x6056, - [0x05e0] = 0x60a9, [0x05e1] = 0x608b, [0x05e2] = 0x60a6, [0x05e4] = 0x6093, - [0x05e5] = 0x60ae, [0x05e6] = 0x609e, [0x05e7] = 0x60a7, [0x05e8] = 0x6245, - [0x05eb] = 0x632e, [0x05ed] = 0x6352, [0x05ee] = 0x6330, [0x05ef] = 0x635b, - [0x05f1] = 0x6319, [0x05f2] = 0x631b, [0x05f4] = 0x6331, [0x05f5] = 0x635d, - [0x05f6] = 0x6337, [0x05f7] = 0x6335, [0x05f8] = 0x6353, [0x05fa] = 0x635c, - [0x05fb] = 0x633f, [0x05fc] = 0x654b, [0x05ff] = 0x658b, [0x0601] = 0x659a, - [0x0602] = 0x6650, [0x0603] = 0x6646, [0x0604] = 0x664e, [0x0605] = 0x6640, - [0x0607] = 0x664b, [0x0608] = 0x6648, [0x060a] = 0x6660, [0x060b] = 0x6644, - [0x060c] = 0x664d, [0x060e] = 0x6837, [0x060f] = 0x6824, [0x0612] = 0x681b, - [0x0613] = 0x6836, [0x0615] = 0x682c, [0x0616] = 0x6819, [0x0617] = 0x6856, - [0x0618] = 0x6847, [0x0619] = 0x683e, [0x061a] = 0x681e, [0x061c] = 0x6815, - [0x061d] = 0x6822, [0x061e] = 0x6827, [0x061f] = 0x6859, [0x0620] = 0x6858, - [0x0621] = 0x6855, [0x0622] = 0x6830, [0x0623] = 0x6823, [0x0624] = 0x6b2e, - [0x0625] = 0x6b2b, [0x0626] = 0x6b30, [0x0627] = 0x6b6c, [0x0629] = 0x6b8b, - [0x062b] = 0x6be9, [0x062c] = 0x6bea, [0x062d] = 0x6be5, [0x062e] = 0x6d6b, - [0x0631] = 0x6d73, [0x0632] = 0x6d57, [0x0635] = 0x6d5d, [0x0636] = 0x6d56, - [0x0637] = 0x6d8f, [0x0638] = 0x6d5b, [0x0639] = 0x6d1c, [0x063a] = 0x6d9a, - [0x063b] = 0x6d9b, [0x063c] = 0x6d99, [0x063e] = 0x6d81, [0x063f] = 0x6d71, - [0x0642] = 0x6d72, [0x0643] = 0x6d5c, [0x0644] = 0x6d96, [0x0645] = 0x70c4, - [0x0646] = 0x70db, [0x0647] = 0x70cc, [0x0648] = 0x70d0, [0x0649] = 0x70e3, - [0x064a] = 0x70df, [0x064c] = 0x70d6, [0x064d] = 0x70ee, [0x064e] = 0x70d5, - [0x0653] = 0x727a, [0x0655] = 0x72f5, [0x0656] = 0x7302, [0x0659] = 0x73e2, - [0x065a] = 0x73ec, [0x065b] = 0x73d5, [0x065c] = 0x73f9, [0x065d] = 0x73df, - [0x065e] = 0x73e6, [0x0663] = 0x73e4, [0x0664] = 0x73e1, [0x0665] = 0x74f3, - [0x066a] = 0x7556, [0x066b] = 0x7555, [0x066c] = 0x7558, [0x066d] = 0x7557, - [0x066e] = 0x755e, [0x066f] = 0x75c3, [0x0672] = 0x75b4, [0x0674] = 0x75b1, - [0x0677] = 0x76cb, [0x0678] = 0x76cc, [0x0679] = 0x772a, [0x067b] = 0x7716, - [0x067c] = 0x770f, [0x067f] = 0x773f, [0x0680] = 0x772b, [0x0681] = 0x770e, - [0x0682] = 0x7724, [0x0684] = 0x7721, [0x0685] = 0x7718, [0x0686] = 0x77dd, - [0x0689] = 0x7824, [0x068a] = 0x7836, [0x068c] = 0x7958, [0x068d] = 0x7959, - [0x068f] = 0x7962, [0x0690] = 0x79da, [0x0691] = 0x79d9, [0x0693] = 0x79e1, - [0x0694] = 0x79e5, [0x0695] = 0x79e8, [0x0696] = 0x79db, [0x0698] = 0x79e2, - [0x0699] = 0x79f0, [0x069e] = 0x7ada, [0x069f] = 0x7add, [0x06a1] = 0x7adb, - [0x06a2] = 0x7adc, [0x06a5] = 0x7b0d, [0x06a6] = 0x7b0b, [0x06a7] = 0x7b14, - [0x06a8] = 0x7c8e, [0x06a9] = 0x7c86, [0x06ab] = 0x7c87, [0x06ac] = 0x7c83, - [0x06ad] = 0x7c8b, [0x06b2] = 0x7d24, [0x06b6] = 0x7d25, [0x06b7] = 0x7f62, - [0x06b8] = 0x7f93, [0x06b9] = 0x7f99, [0x06ba] = 0x7f97, [0x06bd] = 0x7fc4, - [0x06be] = 0x7fc6, [0x06bf] = 0x800a, [0x06c2] = 0x8040, [0x06c3] = 0x803c, + [0x05cb] = 0x5e2f, [0x05cc] = 0x5eaf, [0x05cd] = 0x5ea9, [0x05ce] = 0x3886, + [0x05cf] = 0x5efd, [0x05d0] = 0x5f32, [0x05d1] = 0x5f8e, [0x05d2] = 0x5f93, + [0x05d3] = 0x5f8f, [0x05d4] = 0x604f, [0x05d5] = 0x6099, [0x05d6] = 0x3933, + [0x05d7] = 0x607e, [0x05d8] = 0x3937, [0x05d9] = 0x6074, [0x05da] = 0x604b, + [0x05db] = 0x6073, [0x05dc] = 0x6075, [0x05dd] = 0x392a, [0x05de] = 0x391f, + [0x05df] = 0x6056, [0x05e0] = 0x60a9, [0x05e1] = 0x608b, [0x05e2] = 0x60a6, + [0x05e3] = 0x3939, [0x05e4] = 0x6093, [0x05e5] = 0x60ae, [0x05e6] = 0x609e, + [0x05e7] = 0x60a7, [0x05e8] = 0x6245, [0x05e9] = 0x39f2, [0x05ea] = 0x39f8, + [0x05eb] = 0x632e, [0x05ec] = 0x39f7, [0x05ed] = 0x6352, [0x05ee] = 0x6330, + [0x05ef] = 0x635b, [0x05f0] = 0x39f4, [0x05f1] = 0x6319, [0x05f2] = 0x631b, + [0x05f3] = 0x39f1, [0x05f4] = 0x6331, [0x05f5] = 0x635d, [0x05f6] = 0x6337, + [0x05f7] = 0x6335, [0x05f8] = 0x6353, [0x05f9] = 0x39f5, [0x05fa] = 0x635c, + [0x05fb] = 0x633f, [0x05fc] = 0x654b, [0x05fd] = 0x3a87, [0x05fe] = 0x4369, + [0x05ff] = 0x658b, [0x0600] = 0x3ab6, [0x0601] = 0x659a, [0x0602] = 0x6650, + [0x0603] = 0x6646, [0x0604] = 0x664e, [0x0605] = 0x6640, [0x0606] = 0x3ae9, + [0x0607] = 0x664b, [0x0608] = 0x6648, [0x0609] = 0x3aeb, [0x060a] = 0x6660, + [0x060b] = 0x6644, [0x060c] = 0x664d, [0x060d] = 0x3b34, [0x060e] = 0x6837, + [0x060f] = 0x6824, [0x0610] = 0x3b62, [0x0611] = 0x3b5c, [0x0612] = 0x681b, + [0x0613] = 0x6836, [0x0614] = 0x3b60, [0x0615] = 0x682c, [0x0616] = 0x6819, + [0x0617] = 0x6856, [0x0618] = 0x6847, [0x0619] = 0x683e, [0x061a] = 0x681e, + [0x061c] = 0x6815, [0x061d] = 0x6822, [0x061e] = 0x6827, [0x061f] = 0x6859, + [0x0620] = 0x6858, [0x0621] = 0x6855, [0x0622] = 0x6830, [0x0623] = 0x6823, + [0x0624] = 0x6b2e, [0x0625] = 0x6b2b, [0x0626] = 0x6b30, [0x0627] = 0x6b6c, + [0x0628] = 0x3c61, [0x0629] = 0x6b8b, [0x062a] = 0x3c7f, [0x062b] = 0x6be9, + [0x062c] = 0x6bea, [0x062d] = 0x6be5, [0x062e] = 0x6d6b, [0x062f] = 0x3ce5, + [0x0630] = 0x3ce6, [0x0631] = 0x6d73, [0x0632] = 0x6d57, [0x0633] = 0x3ce9, + [0x0634] = 0x3cf3, [0x0635] = 0x6d5d, [0x0636] = 0x6d56, [0x0637] = 0x6d8f, + [0x0638] = 0x6d5b, [0x0639] = 0x6d1c, [0x063a] = 0x6d9a, [0x063b] = 0x6d9b, + [0x063c] = 0x6d99, [0x063d] = 0x3cee, [0x063e] = 0x6d81, [0x063f] = 0x6d71, + [0x0640] = 0x3ced, [0x0641] = 0x3cec, [0x0642] = 0x6d72, [0x0643] = 0x6d5c, + [0x0644] = 0x6d96, [0x0645] = 0x70c4, [0x0646] = 0x70db, [0x0647] = 0x70cc, + [0x0648] = 0x70d0, [0x0649] = 0x70e3, [0x064a] = 0x70df, [0x064b] = 0x3db3, + [0x064c] = 0x70d6, [0x064d] = 0x70ee, [0x064e] = 0x70d5, [0x064f] = 0x3db5, + [0x0650] = 0x3e27, [0x0651] = 0x3e35, [0x0652] = 0x3e36, [0x0653] = 0x727a, + [0x0654] = 0x3e71, [0x0655] = 0x72f5, [0x0656] = 0x7302, [0x0657] = 0x3eb8, + [0x0658] = 0x3ec2, [0x0659] = 0x73e2, [0x065a] = 0x73ec, [0x065b] = 0x73d5, + [0x065c] = 0x73f9, [0x065d] = 0x73df, [0x065e] = 0x73e6, [0x065f] = 0x3ec8, + [0x0660] = 0x3ec0, [0x0661] = 0x3ec1, [0x0662] = 0x3ec4, [0x0663] = 0x73e4, + [0x0664] = 0x73e1, [0x0665] = 0x74f3, [0x0666] = 0x3f1f, [0x0667] = 0x3f1c, + [0x0668] = 0x3f1d, [0x0669] = 0x3f4d, [0x066a] = 0x7556, [0x066b] = 0x7555, + [0x066c] = 0x7558, [0x066d] = 0x7557, [0x066e] = 0x755e, [0x066f] = 0x75c3, + [0x0670] = 0x3f87, [0x0671] = 0x3f82, [0x0672] = 0x75b4, [0x0673] = 0x3f7d, + [0x0674] = 0x75b1, [0x0675] = 0x3fdf, [0x0676] = 0x4000, [0x0677] = 0x76cb, + [0x0678] = 0x76cc, [0x0679] = 0x772a, [0x067a] = 0x4020, [0x067b] = 0x7716, + [0x067c] = 0x770f, [0x067d] = 0x4022, [0x067e] = 0x4024, [0x067f] = 0x773f, + [0x0680] = 0x772b, [0x0681] = 0x770e, [0x0682] = 0x7724, [0x0683] = 0x4021, + [0x0684] = 0x7721, [0x0685] = 0x7718, [0x0686] = 0x77dd, [0x0687] = 0x40a4, + [0x0688] = 0x40a5, [0x0689] = 0x7824, [0x068a] = 0x7836, [0x068b] = 0x4101, + [0x068c] = 0x7958, [0x068d] = 0x7959, [0x068e] = 0x4103, [0x068f] = 0x7962, + [0x0690] = 0x79da, [0x0691] = 0x79d9, [0x0692] = 0x4137, [0x0693] = 0x79e1, + [0x0694] = 0x79e5, [0x0695] = 0x79e8, [0x0696] = 0x79db, [0x0697] = 0x4138, + [0x0698] = 0x79e2, [0x0699] = 0x79f0, [0x069a] = 0x4199, [0x069b] = 0x4198, + [0x069c] = 0x4197, [0x069d] = 0x41c9, [0x069e] = 0x7ada, [0x069f] = 0x7add, + [0x06a0] = 0x41c7, [0x06a1] = 0x7adb, [0x06a2] = 0x7adc, [0x06a3] = 0x41d9, + [0x06a4] = 0x41db, [0x06a5] = 0x7b0d, [0x06a6] = 0x7b0b, [0x06a7] = 0x7b14, + [0x06a8] = 0x7c8e, [0x06a9] = 0x7c86, [0x06aa] = 0x427b, [0x06ab] = 0x7c87, + [0x06ac] = 0x7c83, [0x06ad] = 0x7c8b, [0x06ae] = 0x427c, [0x06af] = 0x42bd, + [0x06b0] = 0x42bc, [0x06b1] = 0x42c3, [0x06b2] = 0x7d24, [0x06b3] = 0x42c1, + [0x06b4] = 0x42bf, [0x06b5] = 0x42c4, [0x06b6] = 0x7d25, [0x06b7] = 0x7f62, + [0x06b8] = 0x7f93, [0x06b9] = 0x7f99, [0x06ba] = 0x7f97, [0x06bb] = 0x437e, + [0x06bc] = 0x437f, [0x06bd] = 0x7fc4, [0x06be] = 0x7fc6, [0x06bf] = 0x800a, + [0x06c0] = 0x43b4, [0x06c1] = 0x43b3, [0x06c2] = 0x8040, [0x06c3] = 0x803c, [0x06c4] = 0x803b, [0x06c5] = 0x80f6, [0x06c6] = 0x80ff, [0x06c7] = 0x80ee, - [0x06c8] = 0x8104, [0x06c9] = 0x8103, [0x06ca] = 0x8107, [0x06cd] = 0x80f7, - [0x06d0] = 0x822d, [0x06d2] = 0x8227, [0x06d3] = 0x8229, [0x06d4] = 0x831f, - [0x06d5] = 0x8357, [0x06da] = 0x8321, [0x06dd] = 0x8318, [0x06de] = 0x8358, - [0x06e4] = 0x8684, [0x06e5] = 0x869f, [0x06e6] = 0x869b, [0x06e7] = 0x8689, - [0x06e8] = 0x86a6, [0x06e9] = 0x8692, [0x06ea] = 0x868f, [0x06eb] = 0x86a0, - [0x06ec] = 0x884f, [0x06ed] = 0x8878, [0x06ee] = 0x887a, [0x06ef] = 0x886e, - [0x06f0] = 0x887b, [0x06f1] = 0x8884, [0x06f2] = 0x8873, [0x06f5] = 0x8a0d, - [0x06f6] = 0x8a0b, [0x06f7] = 0x8a19, [0x06fe] = 0x8ff9, [0x06ff] = 0x9009, - [0x0700] = 0x9008, [0x0702] = 0x90de, [0x0703] = 0x9151, [0x0706] = 0x91db, - [0x0707] = 0x91df, [0x0708] = 0x91de, [0x0709] = 0x91d6, [0x070a] = 0x91e0, - [0x070b] = 0x9585, [0x070c] = 0x9660, [0x070d] = 0x9659, [0x070f] = 0x9656, - [0x0712] = 0x96bd, [0x0715] = 0x5042, [0x0716] = 0x5059, [0x0718] = 0x5044, + [0x06c8] = 0x8104, [0x06c9] = 0x8103, [0x06ca] = 0x8107, [0x06cc] = 0x43e6, + [0x06cd] = 0x80f7, [0x06ce] = 0x4459, [0x06cf] = 0x445a, [0x06d0] = 0x822d, + [0x06d1] = 0x4464, [0x06d2] = 0x8227, [0x06d3] = 0x8229, [0x06d4] = 0x831f, + [0x06d5] = 0x8357, [0x06d6] = 0x44b4, [0x06d7] = 0x44b9, [0x06d8] = 0x44b7, + [0x06d9] = 0x44b5, [0x06da] = 0x8321, [0x06db] = 0x44c1, [0x06dc] = 0x44b1, + [0x06dd] = 0x8318, [0x06de] = 0x8358, [0x06df] = 0x44b3, [0x06e0] = 0x44ba, + [0x06e1] = 0x458c, [0x06e2] = 0x458b, [0x06e3] = 0x458d, [0x06e4] = 0x8684, + [0x06e5] = 0x869f, [0x06e6] = 0x869b, [0x06e7] = 0x8689, [0x06e8] = 0x86a6, + [0x06e9] = 0x8692, [0x06ea] = 0x868f, [0x06eb] = 0x86a0, [0x06ec] = 0x884f, + [0x06ed] = 0x8878, [0x06ee] = 0x887a, [0x06ef] = 0x886e, [0x06f0] = 0x887b, + [0x06f1] = 0x8884, [0x06f2] = 0x8873, [0x06f3] = 0x4678, [0x06f4] = 0x4677, + [0x06f5] = 0x8a0d, [0x06f6] = 0x8a0b, [0x06f7] = 0x8a19, [0x06f8] = 0x46b2, + [0x06f9] = 0x47d6, [0x06fa] = 0x8ed0, [0x06fb] = 0x4845, [0x06fc] = 0x4892, + [0x06fd] = 0x4895, [0x06fe] = 0x8ff9, [0x06ff] = 0x9009, [0x0700] = 0x9008, + [0x0701] = 0x48c6, [0x0702] = 0x90de, [0x0703] = 0x9151, [0x0704] = 0x48e7, + [0x0705] = 0x48e8, [0x0706] = 0x91db, [0x0707] = 0x91df, [0x0708] = 0x91de, + [0x0709] = 0x91d6, [0x070a] = 0x91e0, [0x070b] = 0x9585, [0x070c] = 0x9660, + [0x070d] = 0x9659, [0x070e] = 0x49cb, [0x070f] = 0x9656, [0x0710] = 0x49cd, + [0x0711] = 0x49f1, [0x0712] = 0x96bd, [0x0713] = 0x4b22, [0x0714] = 0x3421, + [0x0715] = 0x5042, [0x0716] = 0x5059, [0x0717] = 0x346f, [0x0718] = 0x5044, [0x0719] = 0x5066, [0x071a] = 0x5052, [0x071b] = 0x5054, [0x071c] = 0x5071, [0x071d] = 0x5050, [0x071e] = 0x507b, [0x071f] = 0x507c, [0x0720] = 0x5058, - [0x0723] = 0x5079, [0x0724] = 0x506c, [0x0725] = 0x5078, [0x0726] = 0x51a8, - [0x0727] = 0x51d1, [0x0728] = 0x51cf, [0x0729] = 0x5268, [0x072a] = 0x5276, - [0x072b] = 0x52d4, [0x072d] = 0x53a0, [0x072e] = 0x53c4, [0x0730] = 0x5558, - [0x0731] = 0x554c, [0x0732] = 0x5568, [0x0734] = 0x5549, [0x0737] = 0x555d, - [0x0738] = 0x5529, [0x073a] = 0x5554, [0x073b] = 0x5553, [0x073d] = 0x555a, - [0x073f] = 0x553a, [0x0740] = 0x553f, [0x0741] = 0x552b, [0x0742] = 0x57ea, - [0x0744] = 0x57ef, [0x0747] = 0x57dd, [0x0748] = 0x57fe, [0x074a] = 0x57de, - [0x074b] = 0x57e6, [0x074d] = 0x57e8, [0x074e] = 0x57ff, [0x074f] = 0x5803, - [0x0750] = 0x58f7, [0x0751] = 0x68a6, [0x0752] = 0x591f, [0x0754] = 0x595b, - [0x0755] = 0x595d, [0x0756] = 0x595e, [0x0759] = 0x5a2b, [0x075b] = 0x5a3b, + [0x0721] = 0x3470, [0x0722] = 0x3464, [0x0723] = 0x5079, [0x0724] = 0x506c, + [0x0725] = 0x5078, [0x0726] = 0x51a8, [0x0727] = 0x51d1, [0x0728] = 0x51cf, + [0x0729] = 0x5268, [0x072a] = 0x5276, [0x072b] = 0x52d4, [0x072c] = 0x352d, + [0x072d] = 0x53a0, [0x072e] = 0x53c4, [0x072f] = 0x3558, [0x0730] = 0x5558, + [0x0731] = 0x554c, [0x0732] = 0x5568, [0x0733] = 0x35a6, [0x0734] = 0x5549, + [0x0735] = 0x35a4, [0x0736] = 0x359f, [0x0737] = 0x555d, [0x0738] = 0x5529, + [0x0739] = 0x20dae, [0x073a] = 0x5554, [0x073b] = 0x5553, [0x073c] = 0x35a3, + [0x073d] = 0x555a, [0x073e] = 0x35a0, [0x073f] = 0x553a, [0x0740] = 0x553f, + [0x0741] = 0x552b, [0x0742] = 0x57ea, [0x0743] = 0x364a, [0x0744] = 0x57ef, + [0x0745] = 0x3647, [0x0746] = 0x3648, [0x0747] = 0x57dd, [0x0748] = 0x57fe, + [0x074a] = 0x57de, [0x074b] = 0x57e6, [0x074c] = 0x3649, [0x074d] = 0x57e8, + [0x074e] = 0x57ff, [0x074f] = 0x5803, [0x0750] = 0x58f7, [0x0751] = 0x68a6, + [0x0752] = 0x591f, [0x0753] = 0x369e, [0x0754] = 0x595b, [0x0755] = 0x595d, + [0x0756] = 0x595e, [0x0757] = 0x21637, [0x0758] = 0x36e8, [0x0759] = 0x5a2b, + [0x075a] = 0x36ec, [0x075b] = 0x5a3b, [0x075c] = 0x36ed, [0x075d] = 0x36e6, [0x075e] = 0x5a61, [0x075f] = 0x5a3a, [0x0760] = 0x5a6e, [0x0761] = 0x5a4b, - [0x0762] = 0x5a6b, [0x0765] = 0x5a45, [0x0766] = 0x5a4e, [0x0767] = 0x5a68, - [0x0768] = 0x5a3d, [0x0769] = 0x5a71, [0x076a] = 0x5a3f, [0x076b] = 0x5a6f, - [0x076c] = 0x5a75, [0x076e] = 0x5a73, [0x076f] = 0x5a2c, [0x0770] = 0x5a59, - [0x0771] = 0x5a54, [0x0772] = 0x5a4f, [0x0773] = 0x5a63, [0x0776] = 0x5bc8, - [0x0778] = 0x5bc3, [0x077a] = 0x5c5b, [0x077b] = 0x5c61, [0x077d] = 0x5d21, - [0x077e] = 0x5d0a, [0x077f] = 0x5d09, [0x0781] = 0x5d2c, [0x0782] = 0x5d08, - [0x0785] = 0x5d2a, [0x0786] = 0x5d15, [0x0788] = 0x5d10, [0x0789] = 0x5d13, - [0x078b] = 0x5d2f, [0x078c] = 0x5d18, [0x078e] = 0x5de3, [0x078f] = 0x5e39, - [0x0790] = 0x5e35, [0x0791] = 0x5e3a, [0x0792] = 0x5e32, [0x0797] = 0x5ebb, - [0x0798] = 0x5eba, [0x0799] = 0x5f34, [0x079a] = 0x5f39, [0x079f] = 0x6098, - [0x07a1] = 0x60d0, [0x07a5] = 0x60d7, [0x07a6] = 0x60aa, [0x07a8] = 0x60a1, - [0x07a9] = 0x60a4, [0x07ab] = 0x60ee, [0x07ad] = 0x60e7, [0x07b0] = 0x60de, - [0x07b3] = 0x637e, [0x07b4] = 0x638b, [0x07b7] = 0x6379, [0x07b8] = 0x6386, - [0x07b9] = 0x6393, [0x07bb] = 0x6373, [0x07bc] = 0x636a, [0x07be] = 0x636c, - [0x07c0] = 0x637f, [0x07c2] = 0x63b2, [0x07c3] = 0x63ba, [0x07c6] = 0x6366, - [0x07c7] = 0x6374, [0x07c9] = 0x655a, [0x07cb] = 0x654e, [0x07cc] = 0x654d, - [0x07cd] = 0x658d, [0x07ce] = 0x658e, [0x07cf] = 0x65ad, [0x07d1] = 0x65c7, - [0x07d2] = 0x65ca, [0x07d4] = 0x65c9, [0x07d6] = 0x65e3, [0x07d7] = 0x6657, - [0x07d9] = 0x6663, [0x07da] = 0x6667, [0x07db] = 0x671a, [0x07dc] = 0x6719, - [0x07dd] = 0x6716, [0x07e0] = 0x689e, [0x07e1] = 0x68b6, [0x07e2] = 0x6898, - [0x07e3] = 0x6873, [0x07e5] = 0x689a, [0x07e6] = 0x688e, [0x07e7] = 0x68b7, - [0x07e8] = 0x68db, [0x07e9] = 0x68a5, [0x07ea] = 0x686c, [0x07eb] = 0x68c1, - [0x07ec] = 0x6884, [0x07ef] = 0x6895, [0x07f0] = 0x687a, [0x07f1] = 0x6899, - [0x07f3] = 0x68b8, [0x07f4] = 0x68b9, [0x07f5] = 0x6870, [0x07f7] = 0x6b35, - [0x07f9] = 0x6b90, [0x07fa] = 0x6bbb, [0x07fb] = 0x6bed, [0x07ff] = 0x6dc1, - [0x0800] = 0x6dc3, [0x0801] = 0x6dce, [0x0804] = 0x6dad, [0x0805] = 0x6e04, - [0x0807] = 0x6db9, [0x0809] = 0x6de7, [0x080b] = 0x6e08, [0x080c] = 0x6e06, - [0x080e] = 0x6e0a, [0x080f] = 0x6db0, [0x0811] = 0x6df8, [0x0812] = 0x6e0c, - [0x0814] = 0x6db1, [0x0816] = 0x6e02, [0x0817] = 0x6e07, [0x0818] = 0x6e09, - [0x0819] = 0x6e01, [0x081a] = 0x6e17, [0x081b] = 0x6dff, [0x081c] = 0x6e12, + [0x0762] = 0x5a6b, [0x0763] = 0x36eb, [0x0764] = 0x36e7, [0x0765] = 0x5a45, + [0x0766] = 0x5a4e, [0x0767] = 0x5a68, [0x0768] = 0x5a3d, [0x0769] = 0x5a71, + [0x076a] = 0x5a3f, [0x076b] = 0x5a6f, [0x076c] = 0x5a75, [0x076d] = 0x36e9, + [0x076e] = 0x5a73, [0x076f] = 0x5a2c, [0x0770] = 0x5a59, [0x0771] = 0x5a54, + [0x0772] = 0x5a4f, [0x0773] = 0x5a63, [0x0774] = 0x375c, [0x0775] = 0x375d, + [0x0776] = 0x5bc8, [0x0777] = 0x3760, [0x0778] = 0x5bc3, [0x0779] = 0x375b, + [0x077a] = 0x5c5b, [0x077b] = 0x5c61, [0x077c] = 0x3799, [0x077d] = 0x5d21, + [0x077e] = 0x5d0a, [0x077f] = 0x5d09, [0x0780] = 0x37d8, [0x0781] = 0x5d2c, + [0x0782] = 0x5d08, [0x0783] = 0x37da, [0x0784] = 0x37dd, [0x0785] = 0x5d2a, + [0x0786] = 0x5d15, [0x0787] = 0x37e0, [0x0788] = 0x5d10, [0x0789] = 0x5d13, + [0x078a] = 0x37e5, [0x078b] = 0x5d2f, [0x078c] = 0x5d18, [0x078d] = 0x37d7, + [0x078e] = 0x5de3, [0x078f] = 0x5e39, [0x0790] = 0x5e35, [0x0791] = 0x5e3a, + [0x0792] = 0x5e32, [0x0793] = 0x384e, [0x0794] = 0x388c, [0x0795] = 0x3888, + [0x0797] = 0x5ebb, [0x0798] = 0x5eba, [0x0799] = 0x5f34, [0x079a] = 0x5f39, + [0x079b] = 0x38ce, [0x079d] = 0x38e5, [0x079e] = 0x38e6, [0x079f] = 0x6098, + [0x07a0] = 0x3932, [0x07a1] = 0x60d0, [0x07a2] = 0x3940, [0x07a3] = 0x3947, + [0x07a4] = 0x394c, [0x07a5] = 0x60d7, [0x07a6] = 0x60aa, [0x07a7] = 0x3935, + [0x07a8] = 0x60a1, [0x07a9] = 0x60a4, [0x07aa] = 0x3930, [0x07ab] = 0x60ee, + [0x07ac] = 0x3943, [0x07ad] = 0x60e7, [0x07ae] = 0x394d, [0x07af] = 0x60e8, + [0x07b0] = 0x60de, [0x07b1] = 0x39b7, [0x07b2] = 0x39f3, [0x07b3] = 0x637e, + [0x07b4] = 0x638b, [0x07b5] = 0x3a02, [0x07b6] = 0x3a0b, [0x07b7] = 0x6379, + [0x07b8] = 0x6386, [0x07b9] = 0x6393, [0x07ba] = 0x3a04, [0x07bb] = 0x6373, + [0x07bc] = 0x636a, [0x07be] = 0x636c, [0x07bf] = 0x3a08, [0x07c0] = 0x637f, + [0x07c1] = 0x39fc, [0x07c2] = 0x63b2, [0x07c3] = 0x63ba, [0x07c4] = 0x39ff, + [0x07c5] = 0x3a00, [0x07c6] = 0x6366, [0x07c7] = 0x6374, [0x07c8] = 0x3a8b, + [0x07c9] = 0x655a, [0x07ca] = 0x3a8d, [0x07cb] = 0x654e, [0x07cc] = 0x654d, + [0x07cd] = 0x658d, [0x07ce] = 0x658e, [0x07cf] = 0x65ad, [0x07d0] = 0x3aca, + [0x07d1] = 0x65c7, [0x07d2] = 0x65ca, [0x07d3] = 0x3acb, [0x07d4] = 0x65c9, + [0x07d6] = 0x65e3, [0x07d7] = 0x6657, [0x07d8] = 0x3af3, [0x07d9] = 0x6663, + [0x07da] = 0x6667, [0x07db] = 0x671a, [0x07dc] = 0x6719, [0x07dd] = 0x6716, + [0x07de] = 0x3b36, [0x07df] = 0x3b6a, [0x07e0] = 0x689e, [0x07e1] = 0x68b6, + [0x07e2] = 0x6898, [0x07e3] = 0x6873, [0x07e4] = 0x3b6b, [0x07e5] = 0x689a, + [0x07e6] = 0x688e, [0x07e7] = 0x68b7, [0x07e8] = 0x68db, [0x07e9] = 0x68a5, + [0x07ea] = 0x686c, [0x07eb] = 0x68c1, [0x07ec] = 0x6884, [0x07ed] = 0x3b71, + [0x07ee] = 0x3b68, [0x07ef] = 0x6895, [0x07f0] = 0x687a, [0x07f1] = 0x6899, + [0x07f2] = 0x3b72, [0x07f3] = 0x68b8, [0x07f4] = 0x68b9, [0x07f5] = 0x6870, + [0x07f6] = 0x3c2e, [0x07f7] = 0x6b35, [0x07f8] = 0x3c62, [0x07f9] = 0x6b90, + [0x07fa] = 0x6bbb, [0x07fb] = 0x6bed, [0x07fc] = 0x3c98, [0x07fd] = 0x3cb5, + [0x07fe] = 0x3ceb, [0x07ff] = 0x6dc1, [0x0800] = 0x6dc3, [0x0801] = 0x6dce, + [0x0802] = 0x3cfb, [0x0803] = 0x3cf8, [0x0804] = 0x6dad, [0x0805] = 0x6e04, + [0x0806] = 0x3cf5, [0x0807] = 0x6db9, [0x0808] = 0x3d08, [0x0809] = 0x6de7, + [0x080b] = 0x6e08, [0x080c] = 0x6e06, [0x080d] = 0x3d0a, [0x080e] = 0x6e0a, + [0x080f] = 0x6db0, [0x0810] = 0x3d06, [0x0811] = 0x6df8, [0x0812] = 0x6e0c, + [0x0813] = 0x3cfd, [0x0814] = 0x6db1, [0x0815] = 0x3cfa, [0x0816] = 0x6e02, + [0x0817] = 0x6e07, [0x0818] = 0x6e09, [0x0819] = 0x6e01, [0x081a] = 0x6e17, + [0x081b] = 0x6dff, [0x081c] = 0x6e12, [0x081d] = 0x3dba, [0x081e] = 0x3db9, [0x081f] = 0x7103, [0x0820] = 0x7107, [0x0821] = 0x7101, [0x0822] = 0x70f5, [0x0823] = 0x70f1, [0x0824] = 0x7108, [0x0825] = 0x70f2, [0x0826] = 0x710f, - [0x0828] = 0x70fe, [0x082c] = 0x731a, [0x082d] = 0x7310, [0x082e] = 0x730e, - [0x082f] = 0x7402, [0x0830] = 0x73f3, [0x0833] = 0x73fb, [0x0837] = 0x751b, - [0x0838] = 0x7523, [0x0839] = 0x7561, [0x083a] = 0x7568, [0x083c] = 0x7567, - [0x083d] = 0x75d3, [0x0840] = 0x7690, [0x0843] = 0x76d5, [0x0844] = 0x76d7, - [0x0845] = 0x76d6, [0x0846] = 0x7730, [0x0848] = 0x7726, [0x084a] = 0x7740, - [0x084c] = 0x771e, [0x0850] = 0x7847, [0x0852] = 0x784b, [0x0853] = 0x7851, - [0x0854] = 0x784f, [0x0855] = 0x7842, [0x0856] = 0x7846, [0x0858] = 0x796e, - [0x0859] = 0x796c, [0x085a] = 0x79f2, [0x085c] = 0x79f1, [0x085d] = 0x79f5, - [0x085e] = 0x79f3, [0x085f] = 0x79f9, [0x0863] = 0x7a9a, [0x0864] = 0x7a93, - [0x0865] = 0x7a91, [0x0866] = 0x7ae1, [0x0869] = 0x7b21, [0x086a] = 0x7b1c, + [0x0827] = 0x3dbb, [0x0828] = 0x70fe, [0x0829] = 0x3e18, [0x082a] = 0x3e40, + [0x082b] = 0x3e3d, [0x082c] = 0x731a, [0x082d] = 0x7310, [0x082e] = 0x730e, + [0x082f] = 0x7402, [0x0830] = 0x73f3, [0x0831] = 0x3ecd, [0x0832] = 0x3ec9, + [0x0833] = 0x73fb, [0x0834] = 0x3ecb, [0x0835] = 0x3eca, [0x0836] = 0x3ece, + [0x0837] = 0x751b, [0x0838] = 0x7523, [0x0839] = 0x7561, [0x083a] = 0x7568, + [0x083b] = 0x3f5e, [0x083c] = 0x7567, [0x083d] = 0x75d3, [0x083e] = 0x3f91, + [0x083f] = 0x3f8c, [0x0840] = 0x7690, [0x0841] = 0x3fe1, [0x0842] = 0x4002, + [0x0843] = 0x76d5, [0x0844] = 0x76d7, [0x0845] = 0x76d6, [0x0846] = 0x7730, + [0x0847] = 0x402b, [0x0848] = 0x7726, [0x0849] = 0x402a, [0x084a] = 0x7740, + [0x084b] = 0x3e14, [0x084c] = 0x771e, [0x084d] = 0x40ad, [0x084e] = 0x40a3, + [0x084f] = 0x40ab, [0x0850] = 0x7847, [0x0851] = 0x40af, [0x0852] = 0x784b, + [0x0853] = 0x7851, [0x0854] = 0x784f, [0x0855] = 0x7842, [0x0856] = 0x7846, + [0x0857] = 0x4104, [0x0858] = 0x796e, [0x0859] = 0x796c, [0x085a] = 0x79f2, + [0x085b] = 0x4144, [0x085c] = 0x79f1, [0x085d] = 0x79f5, [0x085e] = 0x79f3, + [0x085f] = 0x79f9, [0x0860] = 0x413d, [0x0861] = 0x4147, [0x0862] = 0x419c, + [0x0863] = 0x7a9a, [0x0864] = 0x7a93, [0x0865] = 0x7a91, [0x0866] = 0x7ae1, + [0x0867] = 0x41e0, [0x0868] = 0x41e4, [0x0869] = 0x7b21, [0x086a] = 0x7b1c, [0x086b] = 0x7b16, [0x086c] = 0x7b17, [0x086d] = 0x7b36, [0x086e] = 0x7b1f, - [0x0870] = 0x7c93, [0x0871] = 0x7c99, [0x0872] = 0x7c9a, [0x0873] = 0x7c9c, - [0x0875] = 0x7d49, [0x0877] = 0x7d34, [0x0878] = 0x7d37, [0x087a] = 0x7d2d, - [0x087c] = 0x7d4c, [0x087f] = 0x7d48, [0x0882] = 0x7f3b, [0x0887] = 0x8008, - [0x0888] = 0x801a, [0x088a] = 0x801d, [0x088c] = 0x8049, [0x088d] = 0x8045, - [0x088e] = 0x8044, [0x088f] = 0x7c9b, [0x0892] = 0x812a, [0x0893] = 0x812e, - [0x0896] = 0x8131, [0x0898] = 0x811a, [0x0899] = 0x8134, [0x089a] = 0x8117, - [0x089e] = 0x831d, [0x089f] = 0x8371, [0x08a0] = 0x8384, [0x08a1] = 0x8380, - [0x08a2] = 0x8372, [0x08a3] = 0x83a1, [0x08a5] = 0x8379, [0x08a6] = 0x8391, - [0x08a8] = 0x839f, [0x08a9] = 0x83ad, [0x08ac] = 0x8323, [0x08ae] = 0x8385, + [0x086f] = 0x4280, [0x0870] = 0x7c93, [0x0871] = 0x7c99, [0x0872] = 0x7c9a, + [0x0873] = 0x7c9c, [0x0874] = 0x42ca, [0x0875] = 0x7d49, [0x0876] = 0x42d4, + [0x0877] = 0x7d34, [0x0878] = 0x7d37, [0x0879] = 0x42d2, [0x087a] = 0x7d2d, + [0x087b] = 0x42cb, [0x087c] = 0x7d4c, [0x087d] = 0x42ce, [0x087e] = 0x42d3, + [0x087f] = 0x7d48, [0x0880] = 0x4344, [0x0881] = 0x4348, [0x0882] = 0x7f3b, + [0x0883] = 0x4345, [0x0884] = 0x4381, [0x0885] = 0x4386, [0x0886] = 0x4385, + [0x0887] = 0x8008, [0x0888] = 0x801a, [0x0889] = 0x43a3, [0x088a] = 0x801d, + [0x088b] = 0x43b5, [0x088c] = 0x8049, [0x088d] = 0x8045, [0x088e] = 0x8044, + [0x088f] = 0x7c9b, [0x0890] = 0x43fa, [0x0891] = 0x43f9, [0x0892] = 0x812a, + [0x0893] = 0x812e, [0x0894] = 0x43fb, [0x0895] = 0x43f2, [0x0896] = 0x8131, + [0x0897] = 0x43ef, [0x0898] = 0x811a, [0x0899] = 0x8134, [0x089a] = 0x8117, + [0x089b] = 0x445b, [0x089c] = 0x4466, [0x089d] = 0x44ce, [0x089e] = 0x831d, + [0x089f] = 0x8371, [0x08a0] = 0x8384, [0x08a1] = 0x8380, [0x08a2] = 0x8372, + [0x08a3] = 0x83a1, [0x08a4] = 0x35b4, [0x08a5] = 0x8379, [0x08a6] = 0x8391, + [0x08a7] = 0x44c8, [0x08a8] = 0x839f, [0x08a9] = 0x83ad, [0x08aa] = 0x44d1, + [0x08ab] = 0x44c5, [0x08ac] = 0x8323, [0x08ad] = 0x44d2, [0x08ae] = 0x8385, [0x08af] = 0x839c, [0x08b0] = 0x83b7, [0x08b1] = 0x8658, [0x08b2] = 0x865a, - [0x08b4] = 0x8657, [0x08b5] = 0x86b2, [0x08b7] = 0x86ae, [0x08bb] = 0x8845, - [0x08bc] = 0x889c, [0x08bd] = 0x8894, [0x08be] = 0x88a3, [0x08bf] = 0x888f, - [0x08c0] = 0x88a5, [0x08c1] = 0x88a9, [0x08c2] = 0x88a6, [0x08c3] = 0x888a, - [0x08c4] = 0x88a0, [0x08c5] = 0x8890, [0x08c6] = 0x8992, [0x08c7] = 0x8991, - [0x08c8] = 0x8994, [0x08ca] = 0x8a26, [0x08cb] = 0x8a32, [0x08cc] = 0x8a28, - [0x08cf] = 0x8a1c, [0x08d1] = 0x8a2b, [0x08d2] = 0x8a20, [0x08d4] = 0x8a29, - [0x08d8] = 0x8a21, [0x08d9] = 0x8c3a, [0x08db] = 0x8c5b, [0x08dc] = 0x8c58, - [0x08dd] = 0x8c7c, [0x08df] = 0x8ca6, [0x08e0] = 0x8cae, [0x08e1] = 0x8cad, - [0x08e2] = 0x8d65, [0x08e4] = 0x8d7e, [0x08e6] = 0x8d7c, [0x08e7] = 0x8d7f, - [0x08e8] = 0x8d7a, [0x08e9] = 0x8dbd, [0x08ec] = 0x8dc0, [0x08ed] = 0x8dbb, - [0x08ee] = 0x8ead, [0x08ef] = 0x8eaf, [0x08f0] = 0x8ed6, [0x08f6] = 0x8ed9, - [0x08f9] = 0x9012, [0x08fa] = 0x900e, [0x08fb] = 0x9025, [0x08fd] = 0x9013, - [0x08fe] = 0x90ee, [0x0900] = 0x90ab, [0x0901] = 0x90f7, [0x0903] = 0x9159, - [0x0904] = 0x9154, [0x0905] = 0x91f2, [0x0906] = 0x91f0, [0x0907] = 0x91e5, - [0x0908] = 0x91f6, [0x090b] = 0x9587, [0x090d] = 0x965a, [0x0910] = 0x966e, - [0x0914] = 0x9679, [0x0916] = 0x98e1, [0x0917] = 0x98e6, [0x0919] = 0x9ec4, - [0x091a] = 0x9ed2, [0x091b] = 0x4e80, [0x091d] = 0x4e81, [0x091e] = 0x508f, - [0x091f] = 0x5097, [0x0920] = 0x5088, [0x0921] = 0x5089, [0x0924] = 0x5081, - [0x0925] = 0x5160, [0x0928] = 0x5e42, [0x0929] = 0x51d3, [0x092c] = 0x51d2, - [0x092d] = 0x51d6, [0x092e] = 0x5273, [0x0930] = 0x5270, [0x0934] = 0x53a8, - [0x0935] = 0x53a6, [0x0936] = 0x53c5, [0x0937] = 0x5597, [0x0938] = 0x55de, - [0x093b] = 0x5596, [0x093c] = 0x55b4, [0x093e] = 0x5585, [0x0940] = 0x559b, - [0x0941] = 0x55a0, [0x0943] = 0x5559, [0x0945] = 0x5586, [0x0948] = 0x55af, - [0x0949] = 0x557a, [0x094d] = 0x559e, [0x094f] = 0x55a9, [0x0950] = 0x570f, - [0x0951] = 0x570e, [0x0952] = 0x581a, [0x0954] = 0x581f, [0x0956] = 0x583c, - [0x0957] = 0x5818, [0x0958] = 0x583e, [0x0959] = 0x5826, [0x095b] = 0x583a, - [0x095d] = 0x5822, [0x095f] = 0x58fb, [0x0960] = 0x5963, [0x0961] = 0x5964, - [0x0963] = 0x5aa8, [0x0964] = 0x5aa3, [0x0965] = 0x5a82, [0x0966] = 0x5a88, - [0x0967] = 0x5aa1, [0x0968] = 0x5a85, [0x0969] = 0x5a98, [0x096b] = 0x5a99, - [0x096d] = 0x5a89, [0x096e] = 0x5a81, [0x096f] = 0x5a96, [0x0970] = 0x5a80, - [0x0973] = 0x5a91, [0x0978] = 0x5acf, [0x097f] = 0x5a87, [0x0980] = 0x5aa0, - [0x0982] = 0x5a79, [0x0984] = 0x5a86, [0x0985] = 0x5aab, [0x0986] = 0x5aaa, - [0x0987] = 0x5aa4, [0x0988] = 0x5a8d, [0x0989] = 0x5a7e, [0x098b] = 0x5bd5, - [0x098f] = 0x5c1e, [0x0990] = 0x5c5f, [0x0991] = 0x5c5e, [0x0992] = 0x5d44, - [0x0993] = 0x5d3e, [0x0995] = 0x5d48, [0x0996] = 0x5d1c, [0x0998] = 0x5d5b, - [0x0999] = 0x5d4d, [0x099c] = 0x5d57, [0x099e] = 0x5d53, [0x099f] = 0x5d4f, - [0x09a1] = 0x5d3b, [0x09a2] = 0x5d46, [0x09a5] = 0x5e46, [0x09a6] = 0x5e47, + [0x08b3] = 0x458f, [0x08b4] = 0x8657, [0x08b5] = 0x86b2, [0x08b6] = 0x45a7, + [0x08b7] = 0x86ae, [0x08b8] = 0x45a5, [0x08b9] = 0x45a4, [0x08ba] = 0x4611, + [0x08bb] = 0x8845, [0x08bc] = 0x889c, [0x08bd] = 0x8894, [0x08be] = 0x88a3, + [0x08bf] = 0x888f, [0x08c0] = 0x88a5, [0x08c1] = 0x88a9, [0x08c2] = 0x88a6, + [0x08c3] = 0x888a, [0x08c4] = 0x88a0, [0x08c5] = 0x8890, [0x08c6] = 0x8992, + [0x08c7] = 0x8991, [0x08c8] = 0x8994, [0x08c9] = 0x46b5, [0x08ca] = 0x8a26, + [0x08cb] = 0x8a32, [0x08cc] = 0x8a28, [0x08cd] = 0x46b4, [0x08ce] = 0x46bd, + [0x08cf] = 0x8a1c, [0x08d0] = 0x46bb, [0x08d1] = 0x8a2b, [0x08d2] = 0x8a20, + [0x08d3] = 0x46b9, [0x08d4] = 0x8a29, [0x08d5] = 0x46c2, [0x08d6] = 0x46be, + [0x08d7] = 0x46ba, [0x08d8] = 0x8a21, [0x08d9] = 0x8c3a, [0x08da] = 0x3ab7, + [0x08db] = 0x8c5b, [0x08dc] = 0x8c58, [0x08dd] = 0x8c7c, [0x08de] = 0x4758, + [0x08df] = 0x8ca6, [0x08e0] = 0x8cae, [0x08e1] = 0x8cad, [0x08e2] = 0x8d65, + [0x08e3] = 0x479b, [0x08e4] = 0x8d7e, [0x08e5] = 0x479c, [0x08e6] = 0x8d7c, + [0x08e7] = 0x8d7f, [0x08e8] = 0x8d7a, [0x08e9] = 0x8dbd, [0x08ea] = 0x47da, + [0x08eb] = 0x47de, [0x08ec] = 0x8dc0, [0x08ed] = 0x8dbb, [0x08ee] = 0x8ead, + [0x08ef] = 0x8eaf, [0x08f0] = 0x8ed6, [0x08f1] = 0x484d, [0x08f2] = 0x4846, + [0x08f3] = 0x4847, [0x08f4] = 0x484b, [0x08f5] = 0x484c, [0x08f6] = 0x8ed9, + [0x08f7] = 0x4848, [0x08f8] = 0x4899, [0x08f9] = 0x9012, [0x08fa] = 0x900e, + [0x08fb] = 0x9025, [0x08fc] = 0x489b, [0x08fd] = 0x9013, [0x08fe] = 0x90ee, + [0x08ff] = 0x48ce, [0x0900] = 0x90ab, [0x0901] = 0x90f7, [0x0902] = 0x48eb, + [0x0903] = 0x9159, [0x0904] = 0x9154, [0x0905] = 0x91f2, [0x0906] = 0x91f0, + [0x0907] = 0x91e5, [0x0908] = 0x91f6, [0x0909] = 0x491c, [0x090a] = 0x498c, + [0x090b] = 0x9587, [0x090c] = 0x49d1, [0x090d] = 0x965a, [0x090e] = 0x49d6, + [0x090f] = 0x49d3, [0x0910] = 0x966e, [0x0911] = 0x49d4, [0x0912] = 0x49d0, + [0x0913] = 0x49d5, [0x0914] = 0x9679, [0x0915] = 0x4a0b, [0x0916] = 0x98e1, + [0x0917] = 0x98e6, [0x0918] = 0x4bc6, [0x0919] = 0x9ec4, [0x091a] = 0x9ed2, + [0x091b] = 0x4e80, [0x091c] = 0x3424, [0x091d] = 0x4e81, [0x091e] = 0x508f, + [0x091f] = 0x5097, [0x0920] = 0x5088, [0x0921] = 0x5089, [0x0922] = 0x3474, + [0x0923] = 0x347a, [0x0924] = 0x5081, [0x0925] = 0x5160, [0x0926] = 0x20564, + [0x0927] = 0x34c3, [0x0928] = 0x5e42, [0x0929] = 0x51d3, [0x092a] = 0x34d4, + [0x092b] = 0x34d5, [0x092c] = 0x51d2, [0x092d] = 0x51d6, [0x092e] = 0x5273, + [0x092f] = 0x34fb, [0x0930] = 0x5270, [0x0931] = 0x34f7, [0x0932] = 0x3532, + [0x0934] = 0x53a8, [0x0935] = 0x53a6, [0x0936] = 0x53c5, [0x0937] = 0x5597, + [0x0938] = 0x55de, [0x0939] = 0x35ba, [0x093a] = 0x35bf, [0x093b] = 0x5596, + [0x093c] = 0x55b4, [0x093d] = 0x35c7, [0x093e] = 0x5585, [0x093f] = 0x35b7, + [0x0940] = 0x559b, [0x0941] = 0x55a0, [0x0942] = 0x35b9, [0x0943] = 0x5559, + [0x0944] = 0x35c3, [0x0945] = 0x5586, [0x0946] = 0x35bd, [0x0947] = 0x35d0, + [0x0948] = 0x55af, [0x0949] = 0x557a, [0x094a] = 0x35c1, [0x094b] = 0x35be, + [0x094c] = 0x35cd, [0x094d] = 0x559e, [0x094e] = 0x35cb, [0x094f] = 0x55a9, + [0x0950] = 0x570f, [0x0951] = 0x570e, [0x0952] = 0x581a, [0x0953] = 0x364f, + [0x0954] = 0x581f, [0x0955] = 0x3653, [0x0956] = 0x583c, [0x0957] = 0x5818, + [0x0958] = 0x583e, [0x0959] = 0x5826, [0x095a] = 0x3655, [0x095b] = 0x583a, + [0x095c] = 0x21364, [0x095d] = 0x5822, [0x095e] = 0x3651, [0x095f] = 0x58fb, + [0x0960] = 0x5963, [0x0961] = 0x5964, [0x0962] = 0x369f, [0x0963] = 0x5aa8, + [0x0964] = 0x5aa3, [0x0965] = 0x5a82, [0x0966] = 0x5a88, [0x0967] = 0x5aa1, + [0x0968] = 0x5a85, [0x0969] = 0x5a98, [0x096a] = 0x36fe, [0x096b] = 0x5a99, + [0x096c] = 0x36fb, [0x096d] = 0x5a89, [0x096e] = 0x5a81, [0x096f] = 0x5a96, + [0x0970] = 0x5a80, [0x0971] = 0x36f1, [0x0972] = 0x36f5, [0x0973] = 0x5a91, + [0x0974] = 0x36ef, [0x0975] = 0x3704, [0x0976] = 0x3703, [0x0977] = 0x36f4, + [0x0978] = 0x5acf, [0x0979] = 0x36f3, [0x097a] = 0x3702, [0x097b] = 0x36f7, + [0x097c] = 0x36fa, [0x097d] = 0x36fd, [0x097e] = 0x36ee, [0x097f] = 0x5a87, + [0x0980] = 0x5aa0, [0x0981] = 0x36f0, [0x0982] = 0x5a79, [0x0983] = 0x36f2, + [0x0984] = 0x5a86, [0x0985] = 0x5aab, [0x0986] = 0x5aaa, [0x0987] = 0x5aa4, + [0x0988] = 0x5a8d, [0x0989] = 0x5a7e, [0x098a] = 0x3744, [0x098b] = 0x5bd5, + [0x098c] = 0x3762, [0x098d] = 0x3777, [0x098e] = 0x3dc9, [0x098f] = 0x5c1e, + [0x0990] = 0x5c5f, [0x0991] = 0x5c5e, [0x0992] = 0x5d44, [0x0993] = 0x5d3e, + [0x0994] = 0x37e8, [0x0995] = 0x5d48, [0x0996] = 0x5d1c, [0x0997] = 0x37ef, + [0x0998] = 0x5d5b, [0x0999] = 0x5d4d, [0x099a] = 0x37e6, [0x099b] = 0x37ed, + [0x099c] = 0x5d57, [0x099d] = 0x37e7, [0x099e] = 0x5d53, [0x099f] = 0x5d4f, + [0x09a0] = 0x37eb, [0x09a1] = 0x5d3b, [0x09a2] = 0x5d46, [0x09a3] = 0x382d, + [0x09a4] = 0x3855, [0x09a5] = 0x5e46, [0x09a6] = 0x5e47, [0x09a7] = 0x3853, [0x09a8] = 0x5e48, [0x09a9] = 0x5ec0, [0x09aa] = 0x5ebd, [0x09ab] = 0x5ebf, - [0x09ad] = 0x5f11, [0x09af] = 0x5f3e, [0x09b0] = 0x5f3b, [0x09b2] = 0x5f3a, - [0x09b6] = 0x5fa7, [0x09b8] = 0x60ea, [0x09ba] = 0x6107, [0x09bb] = 0x6122, - [0x09bc] = 0x610c, [0x09bf] = 0x60b3, [0x09c0] = 0x60d6, [0x09c1] = 0x60d2, - [0x09c3] = 0x60e3, [0x09c4] = 0x60e5, [0x09c5] = 0x60e9, [0x09c8] = 0x6111, - [0x09c9] = 0x60fd, [0x09cc] = 0x611e, [0x09cd] = 0x6120, [0x09ce] = 0x6121, - [0x09cf] = 0x621e, [0x09d1] = 0x63e2, [0x09d2] = 0x63de, [0x09d3] = 0x63e6, - [0x09d8] = 0x63f8, [0x09da] = 0x63fe, [0x09db] = 0x63c1, [0x09dc] = 0x63bf, - [0x09dd] = 0x63f7, [0x09de] = 0x63d1, [0x09df] = 0x655f, [0x09e0] = 0x6560, - [0x09e1] = 0x6561, [0x09e4] = 0x65d1, [0x09e7] = 0x667d, [0x09e8] = 0x666b, - [0x09e9] = 0x667f, [0x09ec] = 0x6673, [0x09ed] = 0x6681, [0x09ee] = 0x666d, - [0x09ef] = 0x6669, [0x09f2] = 0x671e, [0x09f3] = 0x68ed, [0x09f8] = 0x6903, - [0x09fa] = 0x68fe, [0x09fb] = 0x68e5, [0x09fc] = 0x691e, [0x09fd] = 0x6902, + [0x09ac] = 0x3890, [0x09ad] = 0x5f11, [0x09ae] = 0x38be, [0x09af] = 0x5f3e, + [0x09b0] = 0x5f3b, [0x09b1] = 0x38bd, [0x09b2] = 0x5f3a, [0x09b3] = 0x38cf, + [0x09b4] = 0x38d0, [0x09b5] = 0x38ec, [0x09b6] = 0x5fa7, [0x09b7] = 0x394b, + [0x09b8] = 0x60ea, [0x09b9] = 0x3948, [0x09ba] = 0x6107, [0x09bb] = 0x6122, + [0x09bc] = 0x610c, [0x09bd] = 0x3955, [0x09be] = 0x3951, [0x09bf] = 0x60b3, + [0x09c0] = 0x60d6, [0x09c1] = 0x60d2, [0x09c2] = 0x394e, [0x09c3] = 0x60e3, + [0x09c4] = 0x60e5, [0x09c5] = 0x60e9, [0x09c6] = 0x396b, [0x09c7] = 0x395e, + [0x09c8] = 0x6111, [0x09c9] = 0x60fd, [0x09ca] = 0x3960, [0x09cb] = 0x3967, + [0x09cc] = 0x611e, [0x09cd] = 0x6120, [0x09ce] = 0x6121, [0x09cf] = 0x621e, + [0x09d0] = 0x39b8, [0x09d1] = 0x63e2, [0x09d2] = 0x63de, [0x09d3] = 0x63e6, + [0x09d4] = 0x3a14, [0x09d5] = 0x3a0f, [0x09d6] = 0x3a07, [0x09d7] = 0x3a13, + [0x09d8] = 0x63f8, [0x09d9] = 0x3a17, [0x09da] = 0x63fe, [0x09db] = 0x63c1, + [0x09dc] = 0x63bf, [0x09dd] = 0x63f7, [0x09de] = 0x63d1, [0x09df] = 0x655f, + [0x09e0] = 0x6560, [0x09e1] = 0x6561, [0x09e2] = 0x3a9a, [0x09e3] = 0x3ab8, + [0x09e4] = 0x65d1, [0x09e5] = 0x3af7, [0x09e6] = 0x3af8, [0x09e7] = 0x667d, + [0x09e8] = 0x666b, [0x09e9] = 0x667f, [0x09ea] = 0x3afd, [0x09eb] = 0x3af5, + [0x09ec] = 0x6673, [0x09ed] = 0x6681, [0x09ee] = 0x666d, [0x09ef] = 0x6669, + [0x09f0] = 0x3afa, [0x09f1] = 0x3b38, [0x09f2] = 0x671e, [0x09f3] = 0x68ed, + [0x09f4] = 0x3b87, [0x09f5] = 0x3b80, [0x09f6] = 0x3b88, [0x09f7] = 0x3b79, + [0x09f8] = 0x6903, [0x09f9] = 0x3b7c, [0x09fa] = 0x68fe, [0x09fb] = 0x68e5, + [0x09fc] = 0x691e, [0x09fd] = 0x6902, [0x09fe] = 0x3b83, [0x09ff] = 0x3b85, [0x0a00] = 0x6909, [0x0a01] = 0x68ca, [0x0a02] = 0x6900, [0x0a04] = 0x6901, - [0x0a05] = 0x6918, [0x0a06] = 0x68e2, [0x0a07] = 0x68cf, [0x0a09] = 0x692e, - [0x0a0a] = 0x68c5, [0x0a0b] = 0x68ff, [0x0a0d] = 0x691c, [0x0a0e] = 0x68c3, - [0x0a10] = 0x6b6f, [0x0a12] = 0x6b6e, [0x0a14] = 0x6bbe, [0x0a16] = 0x6bf4, - [0x0a17] = 0x6c2d, [0x0a19] = 0x6db6, [0x0a1a] = 0x6e75, [0x0a1b] = 0x6e1e, - [0x0a1d] = 0x6e18, [0x0a1f] = 0x6e48, [0x0a21] = 0x6e4f, [0x0a23] = 0x6e42, - [0x0a24] = 0x6e6a, [0x0a25] = 0x6e70, [0x0a26] = 0x6dfe, [0x0a29] = 0x6e6d, - [0x0a2b] = 0x6e7b, [0x0a2c] = 0x6e7e, [0x0a2d] = 0x6e59, [0x0a2f] = 0x6e57, - [0x0a31] = 0x6e80, [0x0a32] = 0x6e50, [0x0a34] = 0x6e29, [0x0a35] = 0x6e76, - [0x0a36] = 0x6e2a, [0x0a37] = 0x6e4c, [0x0a38] = 0x712a, [0x0a3a] = 0x7135, - [0x0a3b] = 0x712c, [0x0a3c] = 0x7137, [0x0a3d] = 0x711d, [0x0a40] = 0x7138, - [0x0a42] = 0x7134, [0x0a43] = 0x712b, [0x0a44] = 0x7133, [0x0a45] = 0x7127, - [0x0a46] = 0x7124, [0x0a48] = 0x712d, [0x0a49] = 0x7232, [0x0a4a] = 0x7283, - [0x0a4b] = 0x7282, [0x0a4c] = 0x7287, [0x0a4d] = 0x7306, [0x0a4e] = 0x7324, - [0x0a4f] = 0x7338, [0x0a50] = 0x732a, [0x0a51] = 0x732c, [0x0a52] = 0x732b, - [0x0a54] = 0x732f, [0x0a55] = 0x7328, [0x0a56] = 0x7417, [0x0a59] = 0x7419, - [0x0a5a] = 0x7438, [0x0a5c] = 0x741f, [0x0a5d] = 0x7414, [0x0a5e] = 0x743c, - [0x0a5f] = 0x73f7, [0x0a60] = 0x741c, [0x0a61] = 0x7415, [0x0a62] = 0x7418, - [0x0a63] = 0x7439, [0x0a64] = 0x74f9, [0x0a65] = 0x7524, [0x0a69] = 0x756e, - [0x0a6a] = 0x756d, [0x0a6b] = 0x7571, [0x0a6c] = 0x758e, [0x0a6e] = 0x75e5, - [0x0a73] = 0x7694, [0x0a74] = 0x76b3, [0x0a76] = 0x76d9, [0x0a78] = 0x7748, - [0x0a79] = 0x7749, [0x0a7a] = 0x7743, [0x0a7d] = 0x7742, [0x0a7e] = 0x77df, - [0x0a80] = 0x7863, [0x0a81] = 0x7876, [0x0a83] = 0x785f, [0x0a84] = 0x7866, - [0x0a85] = 0x7966, [0x0a86] = 0x7971, [0x0a89] = 0x7976, [0x0a8a] = 0x7984, - [0x0a8b] = 0x7975, [0x0a8c] = 0x79ff, [0x0a8d] = 0x7a07, [0x0a8f] = 0x7a0e, - [0x0a90] = 0x7a09, [0x0a97] = 0x7ae7, [0x0a98] = 0x7ae2, [0x0a99] = 0x7b55, - [0x0a9c] = 0x7b43, [0x0a9d] = 0x7b57, [0x0a9e] = 0x7b6c, [0x0a9f] = 0x7b42, - [0x0aa0] = 0x7b53, [0x0aa2] = 0x7b41, [0x0aa5] = 0x7ca7, [0x0aa6] = 0x7ca0, - [0x0aa7] = 0x7ca6, [0x0aa8] = 0x7ca4, [0x0aa9] = 0x7d74, [0x0aab] = 0x7d59, - [0x0aad] = 0x7d60, [0x0aae] = 0x7d57, [0x0aaf] = 0x7d6c, [0x0ab0] = 0x7d7e, - [0x0ab1] = 0x7d64, [0x0ab3] = 0x7d5a, [0x0ab4] = 0x7d5d, [0x0ab8] = 0x7d76, - [0x0ab9] = 0x7d4d, [0x0aba] = 0x7d75, [0x0abc] = 0x7fd3, [0x0abd] = 0x7fd6, - [0x0ac0] = 0x8060, [0x0ac1] = 0x804e, [0x0ac2] = 0x8145, [0x0ac3] = 0x813b, - [0x0ac5] = 0x8148, [0x0ac6] = 0x8142, [0x0ac7] = 0x8149, [0x0ac8] = 0x8140, - [0x0ac9] = 0x8114, [0x0aca] = 0x8141, [0x0acc] = 0x81ef, [0x0acd] = 0x81f6, - [0x0ace] = 0x8203, [0x0ad0] = 0x83ed, [0x0ad2] = 0x83da, [0x0ad3] = 0x8418, - [0x0ad4] = 0x83d2, [0x0ad5] = 0x8408, [0x0ad7] = 0x8400, [0x0adb] = 0x8417, - [0x0adc] = 0x8346, [0x0add] = 0x8414, [0x0ade] = 0x83d3, [0x0adf] = 0x8405, - [0x0ae0] = 0x841f, [0x0ae1] = 0x8402, [0x0ae2] = 0x8416, [0x0ae3] = 0x83cd, - [0x0ae4] = 0x83e6, [0x0ae6] = 0x865d, [0x0ae7] = 0x86d5, [0x0ae8] = 0x86e1, - [0x0aed] = 0x86ee, [0x0aee] = 0x8847, [0x0aef] = 0x8846, [0x0af2] = 0x88bb, - [0x0af4] = 0x88bf, [0x0af5] = 0x88b4, [0x0af7] = 0x88b5, [0x0af9] = 0x899a, - [0x0afa] = 0x8a43, [0x0afd] = 0x8a5a, [0x0b01] = 0x8a35, [0x0b02] = 0x8a38, - [0x0b03] = 0x8a42, [0x0b04] = 0x8a49, [0x0b05] = 0x8a5d, [0x0b06] = 0x8a4b, - [0x0b07] = 0x8a3d, [0x0b0c] = 0x8c60, [0x0b0d] = 0x8c5e, [0x0b0e] = 0x8c7f, - [0x0b0f] = 0x8c7e, [0x0b10] = 0x8c83, [0x0b12] = 0x8cb1, [0x0b13] = 0x8d87, - [0x0b16] = 0x8d88, [0x0b17] = 0x8d83, [0x0b1a] = 0x8d86, [0x0b1b] = 0x8d8b, - [0x0b1c] = 0x8d82, [0x0b1d] = 0x8dca, [0x0b1e] = 0x8dd2, [0x0b21] = 0x8dd4, - [0x0b22] = 0x8dc9, [0x0b23] = 0x8eb0, [0x0b27] = 0x8ef2, [0x0b28] = 0x8ee4, - [0x0b29] = 0x8ef3, [0x0b2a] = 0x8eea, [0x0b2c] = 0x8efd, [0x0b2e] = 0x8f9d, - [0x0b2f] = 0x902b, [0x0b30] = 0x902a, [0x0b32] = 0x9028, [0x0b33] = 0x9029, - [0x0b34] = 0x902c, [0x0b37] = 0x903a, [0x0b38] = 0x9030, [0x0b39] = 0x9037, - [0x0b3a] = 0x903b, [0x0b3c] = 0x910a, [0x0b40] = 0x91fe, [0x0b41] = 0x9220, - [0x0b43] = 0x920b, [0x0b45] = 0x9218, [0x0b46] = 0x9222, [0x0b48] = 0x921b, - [0x0b49] = 0x9208, [0x0b4b] = 0x920e, [0x0b4c] = 0x9213, [0x0b4f] = 0x9595, - [0x0b53] = 0x968c, [0x0b54] = 0x967b, [0x0b55] = 0x967f, [0x0b56] = 0x9681, - [0x0b58] = 0x9682, [0x0b5e] = 0x96ee, [0x0b5f] = 0x96ed, [0x0b61] = 0x96ec, - [0x0b62] = 0x975f, [0x0b63] = 0x976f, [0x0b65] = 0x976d, [0x0b6c] = 0x98f0, - [0x0b70] = 0x9aa9, [0x0b73] = 0x9ae0, [0x0b74] = 0x4eb7, [0x0b77] = 0x50cc, - [0x0b78] = 0x50bc, [0x0b7a] = 0x50aa, [0x0b7b] = 0x50b9, [0x0b7d] = 0x50ab, + [0x0a05] = 0x6918, [0x0a06] = 0x68e2, [0x0a07] = 0x68cf, [0x0a08] = 0x3b7b, + [0x0a09] = 0x692e, [0x0a0a] = 0x68c5, [0x0a0b] = 0x68ff, [0x0a0c] = 0x3b86, + [0x0a0d] = 0x691c, [0x0a0e] = 0x68c3, [0x0a0f] = 0x3c34, [0x0a10] = 0x6b6f, + [0x0a11] = 0x3c55, [0x0a12] = 0x6b6e, [0x0a13] = 0x3c68, [0x0a14] = 0x6bbe, + [0x0a15] = 0x3c9c, [0x0a16] = 0x6bf4, [0x0a17] = 0x6c2d, [0x0a18] = 0x3cfc, + [0x0a19] = 0x6db6, [0x0a1a] = 0x6e75, [0x0a1b] = 0x6e1e, [0x0a1c] = 0x3d1a, + [0x0a1d] = 0x6e18, [0x0a1e] = 0x3d17, [0x0a1f] = 0x6e48, [0x0a20] = 0x3d1b, + [0x0a21] = 0x6e4f, [0x0a22] = 0x3d13, [0x0a23] = 0x6e42, [0x0a24] = 0x6e6a, + [0x0a25] = 0x6e70, [0x0a26] = 0x6dfe, [0x0a27] = 0x3d05, [0x0a28] = 0x3d07, + [0x0a29] = 0x6e6d, [0x0a2a] = 0x3d1c, [0x0a2b] = 0x6e7b, [0x0a2c] = 0x6e7e, + [0x0a2d] = 0x6e59, [0x0a2e] = 0x3d11, [0x0a2f] = 0x6e57, [0x0a30] = 0x3d16, + [0x0a31] = 0x6e80, [0x0a32] = 0x6e50, [0x0a33] = 0x3d15, [0x0a34] = 0x6e29, + [0x0a35] = 0x6e76, [0x0a36] = 0x6e2a, [0x0a37] = 0x6e4c, [0x0a38] = 0x712a, + [0x0a39] = 0x3dcb, [0x0a3a] = 0x7135, [0x0a3b] = 0x712c, [0x0a3c] = 0x7137, + [0x0a3d] = 0x711d, [0x0a3e] = 0x3dc5, [0x0a3f] = 0x3dc2, [0x0a40] = 0x7138, + [0x0a41] = 0x3dcd, [0x0a42] = 0x7134, [0x0a43] = 0x712b, [0x0a44] = 0x7133, + [0x0a45] = 0x7127, [0x0a46] = 0x7124, [0x0a47] = 0x3dca, [0x0a48] = 0x712d, + [0x0a49] = 0x7232, [0x0a4a] = 0x7283, [0x0a4b] = 0x7282, [0x0a4c] = 0x7287, + [0x0a4d] = 0x7306, [0x0a4e] = 0x7324, [0x0a4f] = 0x7338, [0x0a50] = 0x732a, + [0x0a51] = 0x732c, [0x0a52] = 0x732b, [0x0a53] = 0x3e83, [0x0a54] = 0x732f, + [0x0a55] = 0x7328, [0x0a56] = 0x7417, [0x0a57] = 0x3ed6, [0x0a58] = 0x3ed5, + [0x0a59] = 0x7419, [0x0a5a] = 0x7438, [0x0a5b] = 0x3ed1, [0x0a5c] = 0x741f, + [0x0a5d] = 0x7414, [0x0a5e] = 0x743c, [0x0a5f] = 0x73f7, [0x0a60] = 0x741c, + [0x0a61] = 0x7415, [0x0a62] = 0x7418, [0x0a63] = 0x7439, [0x0a64] = 0x74f9, + [0x0a65] = 0x7524, [0x0a67] = 0x3f52, [0x0a68] = 0x3f5f, [0x0a69] = 0x756e, + [0x0a6a] = 0x756d, [0x0a6b] = 0x7571, [0x0a6c] = 0x758e, [0x0a6d] = 0x3f95, + [0x0a6e] = 0x75e5, [0x0a6f] = 0x3f9d, [0x0a70] = 0x3f98, [0x0a71] = 0x3f9e, + [0x0a72] = 0x3f96, [0x0a73] = 0x7694, [0x0a74] = 0x76b3, [0x0a75] = 0x4003, + [0x0a76] = 0x76d9, [0x0a77] = 0x402f, [0x0a78] = 0x7748, [0x0a79] = 0x7749, + [0x0a7a] = 0x7743, [0x0a7b] = 0x4031, [0x0a7c] = 0x4033, [0x0a7d] = 0x7742, + [0x0a7e] = 0x77df, [0x0a7f] = 0x40b4, [0x0a80] = 0x7863, [0x0a81] = 0x7876, + [0x0a82] = 0x40b0, [0x0a83] = 0x785f, [0x0a84] = 0x7866, [0x0a85] = 0x7966, + [0x0a86] = 0x7971, [0x0a87] = 0x4108, [0x0a88] = 0x4107, [0x0a89] = 0x7976, + [0x0a8a] = 0x7984, [0x0a8b] = 0x7975, [0x0a8c] = 0x79ff, [0x0a8d] = 0x7a07, + [0x0a8e] = 0x414e, [0x0a8f] = 0x7a0e, [0x0a90] = 0x7a09, [0x0a91] = 0x4150, + [0x0a92] = 0x4152, [0x0a93] = 0x41a1, [0x0a94] = 0x41a3, [0x0a95] = 0x41a5, + [0x0a96] = 0x41cc, [0x0a97] = 0x7ae7, [0x0a98] = 0x7ae2, [0x0a99] = 0x7b55, + [0x0a9a] = 0x41ef, [0x0a9b] = 0x41ea, [0x0a9c] = 0x7b43, [0x0a9d] = 0x7b57, + [0x0a9e] = 0x7b6c, [0x0a9f] = 0x7b42, [0x0aa0] = 0x7b53, [0x0aa1] = 0x41ed, + [0x0aa2] = 0x7b41, [0x0aa3] = 0x4285, [0x0aa4] = 0x4284, [0x0aa5] = 0x7ca7, + [0x0aa6] = 0x7ca0, [0x0aa7] = 0x7ca6, [0x0aa8] = 0x7ca4, [0x0aa9] = 0x7d74, + [0x0aaa] = 0x42db, [0x0aab] = 0x7d59, [0x0aac] = 0x42d9, [0x0aad] = 0x7d60, + [0x0aae] = 0x7d57, [0x0aaf] = 0x7d6c, [0x0ab0] = 0x7d7e, [0x0ab1] = 0x7d64, + [0x0ab2] = 0x42d7, [0x0ab3] = 0x7d5a, [0x0ab4] = 0x7d5d, [0x0ab5] = 0x42da, + [0x0ab6] = 0x42de, [0x0ab7] = 0x42d8, [0x0ab8] = 0x7d76, [0x0ab9] = 0x7d4d, + [0x0aba] = 0x7d75, [0x0abb] = 0x42d5, [0x0abc] = 0x7fd3, [0x0abd] = 0x7fd6, + [0x0abe] = 0x439c, [0x0abf] = 0x439d, [0x0ac0] = 0x8060, [0x0ac1] = 0x804e, + [0x0ac2] = 0x8145, [0x0ac3] = 0x813b, [0x0ac4] = 0x43fe, [0x0ac5] = 0x8148, + [0x0ac6] = 0x8142, [0x0ac7] = 0x8149, [0x0ac8] = 0x8140, [0x0ac9] = 0x8114, + [0x0aca] = 0x8141, [0x0acb] = 0x4407, [0x0acc] = 0x81ef, [0x0acd] = 0x81f6, + [0x0ace] = 0x8203, [0x0acf] = 0x446a, [0x0ad0] = 0x83ed, [0x0ad1] = 0x44e7, + [0x0ad2] = 0x83da, [0x0ad3] = 0x8418, [0x0ad4] = 0x83d2, [0x0ad5] = 0x8408, + [0x0ad6] = 0x44e2, [0x0ad7] = 0x8400, [0x0ad8] = 0x44df, [0x0ad9] = 0x44e1, + [0x0ada] = 0x44e5, [0x0adb] = 0x8417, [0x0adc] = 0x8346, [0x0add] = 0x8414, + [0x0ade] = 0x83d3, [0x0adf] = 0x8405, [0x0ae0] = 0x841f, [0x0ae1] = 0x8402, + [0x0ae2] = 0x8416, [0x0ae3] = 0x83cd, [0x0ae4] = 0x83e6, [0x0ae5] = 0x4591, + [0x0ae6] = 0x865d, [0x0ae7] = 0x86d5, [0x0ae8] = 0x86e1, [0x0ae9] = 0x45b4, + [0x0aea] = 0x45b0, [0x0aeb] = 0x45b5, [0x0aec] = 0x45ae, [0x0aed] = 0x86ee, + [0x0aee] = 0x8847, [0x0aef] = 0x8846, [0x0af0] = 0x462d, [0x0af1] = 0x462c, + [0x0af2] = 0x88bb, [0x0af3] = 0x462b, [0x0af4] = 0x88bf, [0x0af5] = 0x88b4, + [0x0af6] = 0x4629, [0x0af7] = 0x88b5, [0x0af8] = 0x467f, [0x0af9] = 0x899a, + [0x0afa] = 0x8a43, [0x0afb] = 0x46c9, [0x0afc] = 0x46cb, [0x0afd] = 0x8a5a, + [0x0afe] = 0x46c5, [0x0aff] = 0x46c6, [0x0b00] = 0x46ca, [0x0b01] = 0x8a35, + [0x0b02] = 0x8a38, [0x0b03] = 0x8a42, [0x0b04] = 0x8a49, [0x0b05] = 0x8a5d, + [0x0b06] = 0x8a4b, [0x0b07] = 0x8a3d, [0x0b08] = 0x46d2, [0x0b09] = 0x46d0, + [0x0b0a] = 0x472d, [0x0b0b] = 0x4735, [0x0b0c] = 0x8c60, [0x0b0d] = 0x8c5e, + [0x0b0e] = 0x8c7f, [0x0b0f] = 0x8c7e, [0x0b10] = 0x8c83, [0x0b11] = 0x476c, + [0x0b12] = 0x8cb1, [0x0b13] = 0x8d87, [0x0b14] = 0x479d, [0x0b15] = 0x47a0, + [0x0b16] = 0x8d88, [0x0b17] = 0x8d83, [0x0b18] = 0x47a2, [0x0b19] = 0x479f, + [0x0b1a] = 0x8d86, [0x0b1b] = 0x8d8b, [0x0b1c] = 0x8d82, [0x0b1d] = 0x8dca, + [0x0b1e] = 0x8dd2, [0x0b1f] = 0x47eb, [0x0b20] = 0x47e2, [0x0b21] = 0x8dd4, + [0x0b22] = 0x8dc9, [0x0b23] = 0x8eb0, [0x0b24] = 0x4836, [0x0b25] = 0x4832, + [0x0b26] = 0x4850, [0x0b27] = 0x8ef2, [0x0b28] = 0x8ee4, [0x0b29] = 0x8ef3, + [0x0b2a] = 0x8eea, [0x0b2b] = 0x484f, [0x0b2c] = 0x8efd, [0x0b2d] = 0x4852, + [0x0b2e] = 0x8f9d, [0x0b2f] = 0x902b, [0x0b30] = 0x902a, [0x0b31] = 0x489e, + [0x0b32] = 0x9028, [0x0b33] = 0x9029, [0x0b34] = 0x902c, [0x0b35] = 0x48a0, + [0x0b36] = 0x489c, [0x0b37] = 0x903a, [0x0b38] = 0x9030, [0x0b39] = 0x9037, + [0x0b3a] = 0x903b, [0x0b3b] = 0x48d1, [0x0b3c] = 0x910a, [0x0b3d] = 0x48ef, + [0x0b3e] = 0x48f0, [0x0b3f] = 0x48f1, [0x0b40] = 0x91fe, [0x0b41] = 0x9220, + [0x0b42] = 0x491d, [0x0b43] = 0x920b, [0x0b44] = 0x491f, [0x0b45] = 0x9218, + [0x0b46] = 0x9222, [0x0b47] = 0x491e, [0x0b48] = 0x921b, [0x0b49] = 0x9208, + [0x0b4a] = 0x4920, [0x0b4b] = 0x920e, [0x0b4c] = 0x9213, [0x0b4d] = 0x498e, + [0x0b4e] = 0x4991, [0x0b4f] = 0x9595, [0x0b50] = 0x28cdd, [0x0b51] = 0x4990, + [0x0b52] = 0x49d7, [0x0b53] = 0x968c, [0x0b54] = 0x967b, [0x0b55] = 0x967f, + [0x0b56] = 0x9681, [0x0b57] = 0x49d9, [0x0b58] = 0x9682, [0x0b59] = 0x49f4, + [0x0b5a] = 0x49f6, [0x0b5b] = 0x3560, [0x0b5c] = 0x49f5, [0x0b5d] = 0x49f3, + [0x0b5e] = 0x96ee, [0x0b5f] = 0x96ed, [0x0b60] = 0x4a0c, [0x0b61] = 0x96ec, + [0x0b62] = 0x975f, [0x0b63] = 0x976f, [0x0b64] = 0x4a51, [0x0b65] = 0x976d, + [0x0b66] = 0x4aa6, [0x0b67] = 0x4aa7, [0x0b68] = 0x4aa8, [0x0b69] = 0x4b27, + [0x0b6a] = 0x4b24, [0x0b6b] = 0x4b25, [0x0b6c] = 0x98f0, [0x0b6d] = 0x4b2a, + [0x0b6e] = 0x4b74, [0x0b6f] = 0x4bc7, [0x0b70] = 0x9aa9, [0x0b71] = 0x4be7, + [0x0b72] = 0x4bed, [0x0b73] = 0x9ae0, [0x0b74] = 0x4eb7, [0x0b75] = 0x342e, + [0x0b76] = 0x347b, [0x0b77] = 0x50cc, [0x0b78] = 0x50bc, [0x0b79] = 0x347c, + [0x0b7a] = 0x50aa, [0x0b7b] = 0x50b9, [0x0b7c] = 0x347d, [0x0b7d] = 0x50ab, [0x0b7e] = 0x50c3, [0x0b7f] = 0x50cd, [0x0b80] = 0x517e, [0x0b81] = 0x527e, - [0x0b82] = 0x5279, [0x0b85] = 0x52e1, [0x0b86] = 0x52e0, [0x0b87] = 0x52e7, - [0x0b88] = 0x5380, [0x0b89] = 0x53ab, [0x0b8a] = 0x53aa, [0x0b8b] = 0x53a9, - [0x0b8c] = 0x53e0, [0x0b8d] = 0x55ea, [0x0b8f] = 0x55d7, [0x0b92] = 0x55c1, - [0x0b93] = 0x5715, [0x0b95] = 0x586c, [0x0b97] = 0x585c, [0x0b98] = 0x5850, - [0x0b99] = 0x5861, [0x0b9a] = 0x586a, [0x0b9b] = 0x5869, [0x0b9c] = 0x5856, - [0x0b9d] = 0x5860, [0x0b9e] = 0x5866, [0x0b9f] = 0x585f, [0x0ba0] = 0x5923, - [0x0ba1] = 0x5966, [0x0ba2] = 0x5968, [0x0ba5] = 0x5ace, [0x0ba7] = 0x5ac5, - [0x0ba8] = 0x5ac3, [0x0bab] = 0x5ad0, [0x0bb2] = 0x5b74, [0x0bb3] = 0x5b76, - [0x0bb4] = 0x5bdc, [0x0bb5] = 0x5bd7, [0x0bb6] = 0x5bda, [0x0bb7] = 0x5bdb, - [0x0bb9] = 0x5c20, [0x0bba] = 0x5d6d, [0x0bbb] = 0x5d66, [0x0bbd] = 0x5d64, - [0x0bbe] = 0x5d6e, [0x0bc0] = 0x5d60, [0x0bc1] = 0x5f42, [0x0bc2] = 0x5f5a, - [0x0bc3] = 0x5f6e, [0x0bc6] = 0x6130, [0x0bc7] = 0x613a, [0x0bc8] = 0x612a, - [0x0bc9] = 0x6143, [0x0bca] = 0x6119, [0x0bcb] = 0x6131, [0x0bcd] = 0x613d, - [0x0bd1] = 0x6408, [0x0bd2] = 0x6432, [0x0bd3] = 0x6438, [0x0bd5] = 0x6431, - [0x0bd7] = 0x6419, [0x0bd9] = 0x6411, [0x0bdc] = 0x6429, [0x0bdd] = 0x641d, - [0x0be1] = 0x643c, [0x0be3] = 0x6446, [0x0be4] = 0x6447, [0x0be7] = 0x643a, - [0x0be8] = 0x6407, [0x0bea] = 0x656b, [0x0bec] = 0x6570, [0x0bed] = 0x656d, - [0x0bef] = 0x65e4, [0x0bf0] = 0x6693, [0x0bf5] = 0x668f, [0x0bf8] = 0x6692, - [0x0bfa] = 0x668e, [0x0bfc] = 0x6946, [0x0c04] = 0x6931, [0x0c07] = 0x693e, - [0x0c09] = 0x697c, [0x0c0a] = 0x6943, [0x0c0c] = 0x6973, [0x0c0e] = 0x6955, + [0x0b82] = 0x5279, [0x0b83] = 0x34fd, [0x0b85] = 0x52e1, [0x0b86] = 0x52e0, + [0x0b87] = 0x52e7, [0x0b88] = 0x5380, [0x0b89] = 0x53ab, [0x0b8a] = 0x53aa, + [0x0b8b] = 0x53a9, [0x0b8c] = 0x53e0, [0x0b8d] = 0x55ea, [0x0b8e] = 0x35da, + [0x0b8f] = 0x55d7, [0x0b90] = 0x35d6, [0x0b91] = 0x35db, [0x0b92] = 0x55c1, + [0x0b93] = 0x5715, [0x0b94] = 0x365b, [0x0b95] = 0x586c, [0x0b96] = 0x365c, + [0x0b97] = 0x585c, [0x0b98] = 0x5850, [0x0b99] = 0x5861, [0x0b9a] = 0x586a, + [0x0b9b] = 0x5869, [0x0b9c] = 0x5856, [0x0b9d] = 0x5860, [0x0b9e] = 0x5866, + [0x0b9f] = 0x585f, [0x0ba0] = 0x5923, [0x0ba1] = 0x5966, [0x0ba2] = 0x5968, + [0x0ba3] = 0x3706, [0x0ba4] = 0x370b, [0x0ba5] = 0x5ace, [0x0ba6] = 0x370d, + [0x0ba7] = 0x5ac5, [0x0ba8] = 0x5ac3, [0x0ba9] = 0x370a, [0x0baa] = 0x3713, + [0x0bab] = 0x5ad0, [0x0bac] = 0x3710, [0x0bad] = 0x3712, [0x0bae] = 0x3709, + [0x0baf] = 0x3708, [0x0bb0] = 0x3711, [0x0bb1] = 0x370f, [0x0bb2] = 0x5b74, + [0x0bb3] = 0x5b76, [0x0bb4] = 0x5bdc, [0x0bb5] = 0x5bd7, [0x0bb6] = 0x5bda, + [0x0bb7] = 0x5bdb, [0x0bb8] = 0x3767, [0x0bb9] = 0x5c20, [0x0bba] = 0x5d6d, + [0x0bbb] = 0x5d66, [0x0bbc] = 0x37f6, [0x0bbd] = 0x5d64, [0x0bbe] = 0x5d6e, + [0x0bc0] = 0x5d60, [0x0bc1] = 0x5f42, [0x0bc2] = 0x5f5a, [0x0bc3] = 0x5f6e, + [0x0bc4] = 0x3964, [0x0bc5] = 0x396c, [0x0bc6] = 0x6130, [0x0bc7] = 0x613a, + [0x0bc8] = 0x612a, [0x0bc9] = 0x6143, [0x0bca] = 0x6119, [0x0bcb] = 0x6131, + [0x0bcc] = 0x396d, [0x0bcd] = 0x613d, [0x0bce] = 0x397a, [0x0bcf] = 0x3975, + [0x0bd0] = 0x3a0d, [0x0bd1] = 0x6408, [0x0bd2] = 0x6432, [0x0bd3] = 0x6438, + [0x0bd4] = 0x3a1e, [0x0bd5] = 0x6431, [0x0bd6] = 0x3a1b, [0x0bd7] = 0x6419, + [0x0bd8] = 0x3a2a, [0x0bd9] = 0x6411, [0x0bda] = 0x3a1f, [0x0bdb] = 0x3a22, + [0x0bdc] = 0x6429, [0x0bdd] = 0x641d, [0x0bde] = 0x3a25, [0x0bdf] = 0x3a27, + [0x0be0] = 0x3a29, [0x0be1] = 0x643c, [0x0be2] = 0x3a24, [0x0be3] = 0x6446, + [0x0be4] = 0x6447, [0x0be5] = 0x3a28, [0x0be6] = 0x3a26, [0x0be7] = 0x643a, + [0x0be8] = 0x6407, [0x0be9] = 0x3a23, [0x0bea] = 0x656b, [0x0beb] = 0x3a9f, + [0x0bec] = 0x6570, [0x0bed] = 0x656d, [0x0bee] = 0x3ab1, [0x0bef] = 0x65e4, + [0x0bf0] = 0x6693, [0x0bf1] = 0x3b03, [0x0bf2] = 0x3b07, [0x0bf3] = 0x3b0c, + [0x0bf4] = 0x3b06, [0x0bf5] = 0x668f, [0x0bf6] = 0x3b04, [0x0bf7] = 0x3b09, + [0x0bf8] = 0x6692, [0x0bf9] = 0x3b05, [0x0bfa] = 0x668e, [0x0bfb] = 0x3b08, + [0x0bfc] = 0x6946, [0x0bfd] = 0x3b96, [0x0bfe] = 0x3b9c, [0x0bff] = 0x3b9f, + [0x0c00] = 0x3b9b, [0x0c01] = 0x3b98, [0x0c02] = 0x3b99, [0x0c03] = 0x3b94, + [0x0c04] = 0x6931, [0x0c05] = 0x3b8d, [0x0c06] = 0x3ba3, [0x0c07] = 0x693e, + [0x0c08] = 0x3b93, [0x0c09] = 0x697c, [0x0c0a] = 0x6943, [0x0c0b] = 0x3b92, + [0x0c0c] = 0x6973, [0x0c0e] = 0x6955, [0x0c0f] = 0x3b8e, [0x0c10] = 0x3b8c, [0x0c11] = 0x6985, [0x0c12] = 0x694d, [0x0c13] = 0x6950, [0x0c14] = 0x6947, [0x0c15] = 0x6967, [0x0c16] = 0x6936, [0x0c17] = 0x6964, [0x0c18] = 0x6961, - [0x0c1a] = 0x697d, [0x0c1b] = 0x6b44, [0x0c1c] = 0x6b40, [0x0c1d] = 0x6b71, - [0x0c1e] = 0x6b73, [0x0c1f] = 0x6b9c, [0x0c23] = 0x6bc1, [0x0c25] = 0x6bfa, - [0x0c26] = 0x6c31, [0x0c27] = 0x6c32, [0x0c2a] = 0x6eb8, [0x0c2b] = 0x6ea8, - [0x0c2d] = 0x6e91, [0x0c2e] = 0x6ebb, [0x0c30] = 0x6e9a, [0x0c33] = 0x6ea9, - [0x0c36] = 0x6eb5, [0x0c37] = 0x6e6c, [0x0c38] = 0x6ee8, [0x0c3a] = 0x6edd, - [0x0c3b] = 0x6eda, [0x0c3c] = 0x6ee6, [0x0c3d] = 0x6eac, [0x0c41] = 0x6ed9, - [0x0c42] = 0x6ee3, [0x0c43] = 0x6ee9, [0x0c44] = 0x6edb, [0x0c46] = 0x716f, - [0x0c49] = 0x7148, [0x0c4b] = 0x714a, [0x0c4c] = 0x716b, [0x0c4e] = 0x714f, - [0x0c4f] = 0x7157, [0x0c50] = 0x7174, [0x0c54] = 0x7145, [0x0c55] = 0x7151, - [0x0c56] = 0x716d, [0x0c58] = 0x7251, [0x0c59] = 0x7250, [0x0c5a] = 0x724e, - [0x0c5c] = 0x7341, [0x0c5e] = 0x732e, [0x0c5f] = 0x7346, [0x0c61] = 0x7427, - [0x0c63] = 0x7448, [0x0c64] = 0x7453, [0x0c65] = 0x743d, [0x0c67] = 0x745d, - [0x0c68] = 0x7456, [0x0c6a] = 0x741e, [0x0c6b] = 0x7447, [0x0c6c] = 0x7443, - [0x0c6d] = 0x7458, [0x0c6e] = 0x7449, [0x0c70] = 0x744c, [0x0c71] = 0x7445, - [0x0c72] = 0x743e, [0x0c74] = 0x7501, [0x0c75] = 0x751e, [0x0c78] = 0x757a, + [0x0c19] = 0x3b9a, [0x0c1a] = 0x697d, [0x0c1b] = 0x6b44, [0x0c1c] = 0x6b40, + [0x0c1d] = 0x6b71, [0x0c1e] = 0x6b73, [0x0c1f] = 0x6b9c, [0x0c20] = 0x3c6a, + [0x0c21] = 0x3c6d, [0x0c22] = 0x3c84, [0x0c23] = 0x6bc1, [0x0c24] = 0x3ca0, + [0x0c25] = 0x6bfa, [0x0c26] = 0x6c31, [0x0c27] = 0x6c32, [0x0c28] = 0x3d1d, + [0x0c29] = 0x3d26, [0x0c2a] = 0x6eb8, [0x0c2b] = 0x6ea8, [0x0c2c] = 0x3d33, + [0x0c2d] = 0x6e91, [0x0c2e] = 0x6ebb, [0x0c2f] = 0x3d38, [0x0c30] = 0x6e9a, + [0x0c31] = 0x3d30, [0x0c32] = 0x3d28, [0x0c33] = 0x6ea9, [0x0c34] = 0x3d27, + [0x0c35] = 0x3d2a, [0x0c36] = 0x6eb5, [0x0c37] = 0x6e6c, [0x0c38] = 0x6ee8, + [0x0c39] = 0x3d31, [0x0c3a] = 0x6edd, [0x0c3b] = 0x6eda, [0x0c3c] = 0x6ee6, + [0x0c3d] = 0x6eac, [0x0c3e] = 0x3d34, [0x0c3f] = 0x3d2e, [0x0c40] = 0x3d3b, + [0x0c41] = 0x6ed9, [0x0c42] = 0x6ee3, [0x0c43] = 0x6ee9, [0x0c44] = 0x6edb, + [0x0c45] = 0x3d29, [0x0c46] = 0x716f, [0x0c47] = 0x3dd2, [0x0c48] = 0x3dd8, + [0x0c49] = 0x7148, [0x0c4a] = 0x3dcf, [0x0c4b] = 0x714a, [0x0c4c] = 0x716b, + [0x0c4d] = 0x3dd9, [0x0c4e] = 0x714f, [0x0c4f] = 0x7157, [0x0c50] = 0x7174, + [0x0c51] = 0x3dce, [0x0c52] = 0x3dd3, [0x0c53] = 0x3dd0, [0x0c54] = 0x7145, + [0x0c55] = 0x7151, [0x0c56] = 0x716d, [0x0c57] = 0x3ba1, [0x0c58] = 0x7251, + [0x0c59] = 0x7250, [0x0c5a] = 0x724e, [0x0c5b] = 0x3e47, [0x0c5c] = 0x7341, + [0x0c5d] = 0x3e8b, [0x0c5e] = 0x732e, [0x0c5f] = 0x7346, [0x0c60] = 0x3ed4, + [0x0c61] = 0x7427, [0x0c62] = 0x3ede, [0x0c63] = 0x7448, [0x0c64] = 0x7453, + [0x0c65] = 0x743d, [0x0c66] = 0x3edf, [0x0c67] = 0x745d, [0x0c68] = 0x7456, + [0x0c69] = 0x3ed7, [0x0c6a] = 0x741e, [0x0c6b] = 0x7447, [0x0c6c] = 0x7443, + [0x0c6d] = 0x7458, [0x0c6e] = 0x7449, [0x0c6f] = 0x3ee1, [0x0c70] = 0x744c, + [0x0c71] = 0x7445, [0x0c72] = 0x743e, [0x0c73] = 0x3f2f, [0x0c74] = 0x7501, + [0x0c75] = 0x751e, [0x0c76] = 0x3f62, [0x0c77] = 0x3f63, [0x0c78] = 0x757a, [0x0c79] = 0x75ee, [0x0c7a] = 0x7602, [0x0c7b] = 0x7697, [0x0c7c] = 0x7698, - [0x0c80] = 0x775d, [0x0c81] = 0x7764, [0x0c82] = 0x7753, [0x0c83] = 0x7758, - [0x0c84] = 0x7882, [0x0c85] = 0x7890, [0x0c86] = 0x788a, [0x0c88] = 0x787a, - [0x0c89] = 0x787d, [0x0c8b] = 0x788b, [0x0c8c] = 0x7878, [0x0c8f] = 0x788d, - [0x0c90] = 0x7888, [0x0c91] = 0x7892, [0x0c92] = 0x7881, [0x0c93] = 0x797e, - [0x0c94] = 0x7983, [0x0c98] = 0x7980, [0x0c9c] = 0x7a0f, [0x0c9f] = 0x7a1d, - [0x0ca1] = 0x7aa1, [0x0ca2] = 0x7aa4, [0x0ca4] = 0x7ae9, [0x0ca5] = 0x7aea, - [0x0ca7] = 0x7b62, [0x0ca8] = 0x7b6b, [0x0caa] = 0x7b5e, [0x0cac] = 0x7b79, - [0x0caf] = 0x7b6f, [0x0cb0] = 0x7b68, [0x0cb3] = 0x7cae, [0x0cb7] = 0x7cb0, - [0x0cb9] = 0x7d90, [0x0cbb] = 0x7d8a, [0x0cbd] = 0x7d8b, [0x0cbe] = 0x7d99, - [0x0cbf] = 0x7d95, [0x0cc1] = 0x7d87, [0x0cc2] = 0x7d78, [0x0cc3] = 0x7d97, - [0x0cc4] = 0x7d89, [0x0cc5] = 0x7d98, [0x0cc9] = 0x7fa3, [0x0ccd] = 0x7fdd, - [0x0cce] = 0x8057, [0x0cd0] = 0x8163, [0x0cd1] = 0x816a, [0x0cd2] = 0x816c, - [0x0cd6] = 0x815d, [0x0cd7] = 0x8175, [0x0cd9] = 0x815f, [0x0cdb] = 0x817d, - [0x0cdc] = 0x816d, [0x0cdf] = 0x8241, [0x0ce0] = 0x844f, [0x0ce1] = 0x8484, - [0x0ce3] = 0x847f, [0x0ce5] = 0x8448, [0x0ce6] = 0x842a, [0x0ce7] = 0x847b, - [0x0ce8] = 0x8472, [0x0ce9] = 0x8464, [0x0cea] = 0x842e, [0x0ceb] = 0x845c, - [0x0cec] = 0x8453, [0x0cee] = 0x8441, [0x0cef] = 0x84c8, [0x0cf1] = 0x8462, - [0x0cf2] = 0x8480, [0x0cf3] = 0x843e, [0x0cf4] = 0x8483, [0x0cf5] = 0x8471, - [0x0cf7] = 0x844a, [0x0cf8] = 0x8455, [0x0cf9] = 0x8458, [0x0cfd] = 0x86fc, - [0x0cfe] = 0x86fd, [0x0cff] = 0x8715, [0x0d01] = 0x8716, [0x0d02] = 0x86ff, - [0x0d06] = 0x8858, [0x0d07] = 0x88cf, [0x0d08] = 0x88e0, [0x0d0d] = 0x89e7, - [0x0d0e] = 0x8a6a, [0x0d0f] = 0x8a80, [0x0d11] = 0x8a6f, [0x0d12] = 0x8a65, - [0x0d14] = 0x8a78, [0x0d15] = 0x8a7d, [0x0d16] = 0x8a88, [0x0d19] = 0x8a64, - [0x0d1a] = 0x8a7e, [0x0d1c] = 0x8a67, [0x0d1d] = 0x8c63, [0x0d1e] = 0x8c88, - [0x0d20] = 0x8ccd, [0x0d22] = 0x8cc9, [0x0d24] = 0x8ded, [0x0d2c] = 0x8eb1, - [0x0d2f] = 0x8f04, [0x0d30] = 0x8f9e, [0x0d31] = 0x8fa0, [0x0d32] = 0x9043, - [0x0d33] = 0x9046, [0x0d34] = 0x9048, [0x0d35] = 0x9045, [0x0d36] = 0x9040, - [0x0d37] = 0x904c, [0x0d3a] = 0x910c, [0x0d3b] = 0x9113, [0x0d3c] = 0x9115, - [0x0d3e] = 0x916b, [0x0d3f] = 0x9167, [0x0d40] = 0x925d, [0x0d41] = 0x9255, - [0x0d42] = 0x9235, [0x0d44] = 0x9259, [0x0d45] = 0x922f, [0x0d46] = 0x923c, - [0x0d47] = 0x928f, [0x0d48] = 0x925c, [0x0d49] = 0x926a, [0x0d4a] = 0x9262, - [0x0d4b] = 0x925f, [0x0d4c] = 0x926b, [0x0d4d] = 0x926e, [0x0d4e] = 0x923b, - [0x0d4f] = 0x9244, [0x0d50] = 0x9241, [0x0d51] = 0x959a, [0x0d53] = 0x9599, - [0x0d57] = 0x968f, [0x0d59] = 0x9696, [0x0d5d] = 0x96f4, [0x0d5e] = 0x96fc, - [0x0d60] = 0x9755, [0x0d62] = 0x9779, [0x0d66] = 0x97ee, [0x0d67] = 0x97f5, - [0x0d69] = 0x980b, [0x0d6b] = 0x98f3, [0x0d6e] = 0x98f7, [0x0d6f] = 0x98ff, - [0x0d70] = 0x98f5, [0x0d72] = 0x98ec, [0x0d73] = 0x98f1, [0x0d76] = 0x999a, + [0x0c7d] = 0x3fe2, [0x0c7e] = 0x4004, [0x0c7f] = 0x4043, [0x0c80] = 0x775d, + [0x0c81] = 0x7764, [0x0c82] = 0x7753, [0x0c83] = 0x7758, [0x0c84] = 0x7882, + [0x0c85] = 0x7890, [0x0c86] = 0x788a, [0x0c87] = 0x40be, [0x0c88] = 0x787a, + [0x0c89] = 0x787d, [0x0c8a] = 0x40ba, [0x0c8b] = 0x788b, [0x0c8c] = 0x7878, + [0x0c8d] = 0x40bc, [0x0c8f] = 0x788d, [0x0c90] = 0x7888, [0x0c91] = 0x7892, + [0x0c92] = 0x7881, [0x0c93] = 0x797e, [0x0c94] = 0x7983, [0x0c95] = 0x410d, + [0x0c96] = 0x410e, [0x0c97] = 0x4111, [0x0c98] = 0x7980, [0x0c99] = 0x410f, + [0x0c9a] = 0x4112, [0x0c9b] = 0x4155, [0x0c9c] = 0x7a0f, [0x0c9d] = 0x4159, + [0x0c9e] = 0x415b, [0x0c9f] = 0x7a1d, [0x0ca0] = 0x4157, [0x0ca1] = 0x7aa1, + [0x0ca2] = 0x7aa4, [0x0ca3] = 0x41ce, [0x0ca4] = 0x7ae9, [0x0ca5] = 0x7aea, + [0x0ca6] = 0x41fe, [0x0ca7] = 0x7b62, [0x0ca8] = 0x7b6b, [0x0ca9] = 0x41fc, + [0x0caa] = 0x7b5e, [0x0cab] = 0x41f5, [0x0cac] = 0x7b79, [0x0cad] = 0x41f9, + [0x0cae] = 0x41fa, [0x0caf] = 0x7b6f, [0x0cb0] = 0x7b68, [0x0cb1] = 0x4288, + [0x0cb2] = 0x4289, [0x0cb3] = 0x7cae, [0x0cb4] = 0x428a, [0x0cb5] = 0x4287, + [0x0cb6] = 0x428b, [0x0cb7] = 0x7cb0, [0x0cb8] = 0x42e6, [0x0cb9] = 0x7d90, + [0x0cba] = 0x42ed, [0x0cbb] = 0x7d8a, [0x0cbc] = 0x42e5, [0x0cbd] = 0x7d8b, + [0x0cbe] = 0x7d99, [0x0cbf] = 0x7d95, [0x0cc0] = 0x42e0, [0x0cc1] = 0x7d87, + [0x0cc2] = 0x7d78, [0x0cc3] = 0x7d97, [0x0cc4] = 0x7d89, [0x0cc5] = 0x7d98, + [0x0cc6] = 0x42e1, [0x0cc7] = 0x435b, [0x0cc8] = 0x435c, [0x0cc9] = 0x7fa3, + [0x0cca] = 0x438f, [0x0ccb] = 0x438b, [0x0ccc] = 0x438d, [0x0ccd] = 0x7fdd, + [0x0cce] = 0x8057, [0x0ccf] = 0x43b9, [0x0cd0] = 0x8163, [0x0cd1] = 0x816a, + [0x0cd2] = 0x816c, [0x0cd3] = 0x440f, [0x0cd4] = 0x4419, [0x0cd5] = 0x4413, + [0x0cd6] = 0x815d, [0x0cd7] = 0x8175, [0x0cd8] = 0x4418, [0x0cd9] = 0x815f, + [0x0cda] = 0x4416, [0x0cdb] = 0x817d, [0x0cdc] = 0x816d, [0x0cdd] = 0x4453, + [0x0cdf] = 0x8241, [0x0ce0] = 0x844f, [0x0ce1] = 0x8484, [0x0ce2] = 0x44f6, + [0x0ce3] = 0x847f, [0x0ce4] = 0x44f5, [0x0ce5] = 0x8448, [0x0ce6] = 0x842a, + [0x0ce7] = 0x847b, [0x0ce8] = 0x8472, [0x0ce9] = 0x8464, [0x0cea] = 0x842e, + [0x0ceb] = 0x845c, [0x0cec] = 0x8453, [0x0ced] = 0x44f7, [0x0cee] = 0x8441, + [0x0cef] = 0x84c8, [0x0cf0] = 0x44f0, [0x0cf1] = 0x8462, [0x0cf2] = 0x8480, + [0x0cf3] = 0x843e, [0x0cf4] = 0x8483, [0x0cf5] = 0x8471, [0x0cf6] = 0x44f9, + [0x0cf7] = 0x844a, [0x0cf8] = 0x8455, [0x0cf9] = 0x8458, [0x0cfa] = 0x4592, + [0x0cfb] = 0x4595, [0x0cfc] = 0x4596, [0x0cfd] = 0x86fc, [0x0cfe] = 0x86fd, + [0x0cff] = 0x8715, [0x0d00] = 0x45b9, [0x0d01] = 0x8716, [0x0d02] = 0x86ff, + [0x0d03] = 0x45bd, [0x0d04] = 0x45b8, [0x0d05] = 0x4612, [0x0d06] = 0x8858, + [0x0d07] = 0x88cf, [0x0d08] = 0x88e0, [0x0d09] = 0x4680, [0x0d0a] = 0x4681, + [0x0d0b] = 0x469a, [0x0d0c] = 0x4698, [0x0d0d] = 0x89e7, [0x0d0e] = 0x8a6a, + [0x0d0f] = 0x8a80, [0x0d10] = 0x46d4, [0x0d11] = 0x8a6f, [0x0d12] = 0x8a65, + [0x0d13] = 0x46da, [0x0d14] = 0x8a78, [0x0d15] = 0x8a7d, [0x0d16] = 0x8a88, + [0x0d17] = 0x46d6, [0x0d18] = 0x46db, [0x0d19] = 0x8a64, [0x0d1a] = 0x8a7e, + [0x0d1b] = 0x46dc, [0x0d1c] = 0x8a67, [0x0d1d] = 0x8c63, [0x0d1e] = 0x8c88, + [0x0d1f] = 0x4771, [0x0d20] = 0x8ccd, [0x0d21] = 0x4772, [0x0d22] = 0x8cc9, + [0x0d23] = 0x47a8, [0x0d24] = 0x8ded, [0x0d25] = 0x47f0, [0x0d27] = 0x47f1, + [0x0d28] = 0x47fd, [0x0d29] = 0x4838, [0x0d2a] = 0x4837, [0x0d2b] = 0x4839, + [0x0d2c] = 0x8eb1, [0x0d2d] = 0x4855, [0x0d2e] = 0x4853, [0x0d2f] = 0x8f04, + [0x0d30] = 0x8f9e, [0x0d31] = 0x8fa0, [0x0d32] = 0x9043, [0x0d33] = 0x9046, + [0x0d34] = 0x9048, [0x0d35] = 0x9045, [0x0d36] = 0x9040, [0x0d37] = 0x904c, + [0x0d38] = 0x48d5, [0x0d39] = 0x48bd, [0x0d3a] = 0x910c, [0x0d3b] = 0x9113, + [0x0d3c] = 0x9115, [0x0d3d] = 0x48f5, [0x0d3e] = 0x916b, [0x0d3f] = 0x9167, + [0x0d40] = 0x925d, [0x0d41] = 0x9255, [0x0d42] = 0x9235, [0x0d43] = 0x4921, + [0x0d44] = 0x9259, [0x0d45] = 0x922f, [0x0d46] = 0x923c, [0x0d47] = 0x928f, + [0x0d48] = 0x925c, [0x0d49] = 0x926a, [0x0d4a] = 0x9262, [0x0d4b] = 0x925f, + [0x0d4c] = 0x926b, [0x0d4d] = 0x926e, [0x0d4e] = 0x923b, [0x0d4f] = 0x9244, + [0x0d50] = 0x9241, [0x0d51] = 0x959a, [0x0d52] = 0x4992, [0x0d53] = 0x9599, + [0x0d54] = 0x49de, [0x0d55] = 0x49db, [0x0d56] = 0x49da, [0x0d57] = 0x968f, + [0x0d58] = 0x49df, [0x0d59] = 0x9696, [0x0d5a] = 0x49f9, [0x0d5b] = 0x49f8, + [0x0d5c] = 0x49fa, [0x0d5d] = 0x96f4, [0x0d5e] = 0x96fc, [0x0d5f] = 0x4a0e, + [0x0d60] = 0x9755, [0x0d61] = 0x4a43, [0x0d62] = 0x9779, [0x0d63] = 0x4a56, + [0x0d64] = 0x4a53, [0x0d65] = 0x4a9e, [0x0d66] = 0x97ee, [0x0d67] = 0x97f5, + [0x0d68] = 0x4aa9, [0x0d69] = 0x980b, [0x0d6a] = 0x4afa, [0x0d6b] = 0x98f3, + [0x0d6c] = 0x4b31, [0x0d6d] = 0x4b30, [0x0d6e] = 0x98f7, [0x0d6f] = 0x98ff, + [0x0d70] = 0x98f5, [0x0d71] = 0x4b32, [0x0d72] = 0x98ec, [0x0d73] = 0x98f1, + [0x0d74] = 0x4b29, [0x0d75] = 0x4b2e, [0x0d76] = 0x999a, [0x0d77] = 0x4b76, [0x0d78] = 0x9ae2, [0x0d79] = 0x9b3d, [0x0d7a] = 0x9b5d, [0x0d7b] = 0x9ce8, - [0x0d7d] = 0x9ceb, [0x0d7e] = 0x9cef, [0x0d7f] = 0x9cee, [0x0d80] = 0x9e81, - [0x0d81] = 0x9f14, [0x0d82] = 0x50d0, [0x0d83] = 0x50d9, [0x0d84] = 0x50dc, - [0x0d85] = 0x50d8, [0x0d87] = 0x50e1, [0x0d88] = 0x50eb, [0x0d8b] = 0x50f4, - [0x0d8c] = 0x50e2, [0x0d8d] = 0x50de, [0x0d91] = 0x51f4, [0x0d95] = 0x52ed, - [0x0d96] = 0x52ea, [0x0d98] = 0x5332, [0x0d9a] = 0x53ae, [0x0d9b] = 0x53b0, - [0x0d9d] = 0x55fb, [0x0d9e] = 0x5603, [0x0d9f] = 0x560b, [0x0da1] = 0x5607, - [0x0da3] = 0x55f8, [0x0da5] = 0x5628, [0x0da6] = 0x561e, [0x0da8] = 0x5618, - [0x0da9] = 0x5611, [0x0daa] = 0x5651, [0x0dab] = 0x5605, [0x0dac] = 0x5717, - [0x0dad] = 0x5892, [0x0daf] = 0x588c, [0x0db1] = 0x5878, [0x0db2] = 0x5884, - [0x0db3] = 0x5873, [0x0db4] = 0x58ad, [0x0db5] = 0x5897, [0x0db6] = 0x5895, - [0x0db7] = 0x5877, [0x0db8] = 0x5872, [0x0db9] = 0x5896, [0x0dba] = 0x588d, - [0x0dbb] = 0x5910, [0x0dbd] = 0x596c, [0x0dbf] = 0x5ae7, [0x0dc1] = 0x5ae4, - [0x0dc4] = 0x5aef, [0x0dc5] = 0x5626, [0x0dc8] = 0x5af0, [0x0dc9] = 0x5d7b, - [0x0dcb] = 0x5d83, [0x0dce] = 0x5d8b, [0x0dcf] = 0x5d8c, [0x0dd1] = 0x5d78, - [0x0dd2] = 0x5e52, [0x0dd5] = 0x5ed0, [0x0dd6] = 0x5ecf, [0x0dd8] = 0x5fb3, - [0x0dd9] = 0x5fb4, [0x0ddd] = 0x617b, [0x0ddf] = 0x616f, [0x0de0] = 0x6181, - [0x0de1] = 0x613c, [0x0de2] = 0x6142, [0x0de3] = 0x6138, [0x0de4] = 0x6133, - [0x0de6] = 0x6160, [0x0de7] = 0x6169, [0x0de8] = 0x617d, [0x0de9] = 0x6186, - [0x0dea] = 0x622c, [0x0deb] = 0x6228, [0x0ded] = 0x644c, [0x0def] = 0x6457, - [0x0df0] = 0x647c, [0x0df3] = 0x6455, [0x0df4] = 0x6462, [0x0df5] = 0x6471, - [0x0df6] = 0x646a, [0x0df7] = 0x6456, [0x0df8] = 0x643b, [0x0df9] = 0x6481, - [0x0dfb] = 0x644f, [0x0dfc] = 0x647e, [0x0dfd] = 0x6464, [0x0e03] = 0x6571, - [0x0e06] = 0x66a5, [0x0e07] = 0x669a, [0x0e08] = 0x669c, [0x0e0a] = 0x66a6, - [0x0e0c] = 0x66a4, [0x0e0d] = 0x698f, [0x0e0e] = 0x69c5, [0x0e0f] = 0x69c8, - [0x0e10] = 0x6992, [0x0e11] = 0x69b2, [0x0e15] = 0x69e3, [0x0e16] = 0x69c0, - [0x0e17] = 0x69d6, [0x0e18] = 0x69d1, [0x0e19] = 0x699f, [0x0e1a] = 0x69a2, - [0x0e1b] = 0x69d2, [0x0e1f] = 0x69e1, [0x0e20] = 0x69d5, [0x0e21] = 0x699d, - [0x0e24] = 0x6998, [0x0e26] = 0x6b74, [0x0e27] = 0x6ba1, [0x0e29] = 0x6ef0, - [0x0e2a] = 0x6ef3, [0x0e2d] = 0x6f1b, [0x0e2e] = 0x6f0c, [0x0e2f] = 0x6f1d, - [0x0e30] = 0x6f34, [0x0e31] = 0x6f28, [0x0e32] = 0x6f17, [0x0e34] = 0x6f44, + [0x0d7c] = 0x4ca5, [0x0d7d] = 0x9ceb, [0x0d7e] = 0x9cef, [0x0d7f] = 0x9cee, + [0x0d80] = 0x9e81, [0x0d81] = 0x9f14, [0x0d82] = 0x50d0, [0x0d83] = 0x50d9, + [0x0d84] = 0x50dc, [0x0d85] = 0x50d8, [0x0d86] = 0x348c, [0x0d87] = 0x50e1, + [0x0d88] = 0x50eb, [0x0d89] = 0x348b, [0x0d8a] = 0x3489, [0x0d8b] = 0x50f4, + [0x0d8c] = 0x50e2, [0x0d8d] = 0x50de, [0x0d8e] = 0x348d, [0x0d8f] = 0x3486, + [0x0d90] = 0x34d7, [0x0d91] = 0x51f4, [0x0d92] = 0x3504, [0x0d93] = 0x3507, + [0x0d94] = 0x3503, [0x0d95] = 0x52ed, [0x0d96] = 0x52ea, [0x0d97] = 0x3522, + [0x0d98] = 0x5332, [0x0d99] = 0x3551, [0x0d9a] = 0x53ae, [0x0d9b] = 0x53b0, + [0x0d9c] = 0x3561, [0x0d9d] = 0x55fb, [0x0d9e] = 0x5603, [0x0d9f] = 0x560b, + [0x0da0] = 0x35e9, [0x0da1] = 0x5607, [0x0da2] = 0x35e5, [0x0da3] = 0x55f8, + [0x0da4] = 0x35e4, [0x0da5] = 0x5628, [0x0da6] = 0x561e, [0x0da7] = 0x35e3, + [0x0da8] = 0x5618, [0x0da9] = 0x5611, [0x0daa] = 0x5651, [0x0dab] = 0x5605, + [0x0dac] = 0x5717, [0x0dad] = 0x5892, [0x0dae] = 0x3665, [0x0daf] = 0x588c, + [0x0db0] = 0x3663, [0x0db1] = 0x5878, [0x0db2] = 0x5884, [0x0db3] = 0x5873, + [0x0db4] = 0x58ad, [0x0db5] = 0x5897, [0x0db6] = 0x5895, [0x0db7] = 0x5877, + [0x0db8] = 0x5872, [0x0db9] = 0x5896, [0x0dba] = 0x588d, [0x0dbb] = 0x5910, + [0x0dbc] = 0x368c, [0x0dbd] = 0x596c, [0x0dbe] = 0x371a, [0x0dbf] = 0x5ae7, + [0x0dc0] = 0x3715, [0x0dc1] = 0x5ae4, [0x0dc2] = 0x3720, [0x0dc3] = 0x3721, + [0x0dc4] = 0x5aef, [0x0dc5] = 0x5626, [0x0dc6] = 0x371c, [0x0dc7] = 0x371b, + [0x0dc8] = 0x5af0, [0x0dc9] = 0x5d7b, [0x0dca] = 0x37fe, [0x0dcb] = 0x5d83, + [0x0dcc] = 0x3804, [0x0dcd] = 0x3801, [0x0dce] = 0x5d8b, [0x0dcf] = 0x5d8c, + [0x0dd0] = 0x3800, [0x0dd1] = 0x5d78, [0x0dd2] = 0x5e52, [0x0dd3] = 0x386d, + [0x0dd4] = 0x3893, [0x0dd5] = 0x5ed0, [0x0dd6] = 0x5ecf, [0x0dd7] = 0x38a1, + [0x0dd8] = 0x5fb3, [0x0dd9] = 0x5fb4, [0x0dda] = 0x3976, [0x0ddb] = 0x3979, + [0x0ddc] = 0x3972, [0x0ddd] = 0x617b, [0x0dde] = 0x3983, [0x0ddf] = 0x616f, + [0x0de0] = 0x6181, [0x0de1] = 0x613c, [0x0de2] = 0x6142, [0x0de3] = 0x6138, + [0x0de4] = 0x6133, [0x0de6] = 0x6160, [0x0de7] = 0x6169, [0x0de8] = 0x617d, + [0x0de9] = 0x6186, [0x0dea] = 0x622c, [0x0deb] = 0x6228, [0x0dec] = 0x3a38, + [0x0ded] = 0x644c, [0x0dee] = 0x3a30, [0x0def] = 0x6457, [0x0df0] = 0x647c, + [0x0df1] = 0x3a34, [0x0df2] = 0x3a3a, [0x0df3] = 0x6455, [0x0df4] = 0x6462, + [0x0df5] = 0x6471, [0x0df6] = 0x646a, [0x0df7] = 0x6456, [0x0df8] = 0x643b, + [0x0df9] = 0x6481, [0x0dfa] = 0x3a35, [0x0dfb] = 0x644f, [0x0dfc] = 0x647e, + [0x0dfd] = 0x6464, [0x0dfe] = 0x3a3f, [0x0dff] = 0x3a40, [0x0e00] = 0x3a32, + [0x0e01] = 0x3a31, [0x0e02] = 0x3a36, [0x0e03] = 0x6571, [0x0e04] = 0x230ba, + [0x0e05] = 0x3b0f, [0x0e06] = 0x66a5, [0x0e07] = 0x669a, [0x0e08] = 0x669c, + [0x0e09] = 0x3b10, [0x0e0a] = 0x66a6, [0x0e0b] = 0x3b0d, [0x0e0c] = 0x66a4, + [0x0e0d] = 0x698f, [0x0e0e] = 0x69c5, [0x0e0f] = 0x69c8, [0x0e10] = 0x6992, + [0x0e11] = 0x69b2, [0x0e12] = 0x3ba9, [0x0e13] = 0x3bb4, [0x0e14] = 0x3bac, + [0x0e15] = 0x69e3, [0x0e16] = 0x69c0, [0x0e17] = 0x69d6, [0x0e18] = 0x69d1, + [0x0e19] = 0x699f, [0x0e1a] = 0x69a2, [0x0e1b] = 0x69d2, [0x0e1c] = 0x3bb8, + [0x0e1d] = 0x3bae, [0x0e1e] = 0x235f3, [0x0e1f] = 0x69e1, [0x0e20] = 0x69d5, + [0x0e21] = 0x699d, [0x0e22] = 0x3bb3, [0x0e23] = 0x3bba, [0x0e24] = 0x6998, + [0x0e25] = 0x3c3f, [0x0e26] = 0x6b74, [0x0e27] = 0x6ba1, [0x0e28] = 0x3d3c, + [0x0e29] = 0x6ef0, [0x0e2a] = 0x6ef3, [0x0e2b] = 0x3d42, [0x0e2c] = 0x3d40, + [0x0e2d] = 0x6f1b, [0x0e2e] = 0x6f0c, [0x0e2f] = 0x6f1d, [0x0e30] = 0x6f34, + [0x0e31] = 0x6f28, [0x0e32] = 0x6f17, [0x0e33] = 0x3d3e, [0x0e34] = 0x6f44, [0x0e35] = 0x6f42, [0x0e36] = 0x6f04, [0x0e37] = 0x6f11, [0x0e38] = 0x6efa, - [0x0e39] = 0x6f4a, [0x0e3a] = 0x7191, [0x0e3b] = 0x718e, [0x0e3d] = 0x718b, - [0x0e3e] = 0x718d, [0x0e3f] = 0x717f, [0x0e40] = 0x718c, [0x0e41] = 0x717e, - [0x0e42] = 0x717c, [0x0e43] = 0x7183, [0x0e45] = 0x7188, [0x0e48] = 0x7294, - [0x0e4a] = 0x7355, [0x0e4b] = 0x7353, [0x0e4c] = 0x734f, [0x0e4d] = 0x7354, - [0x0e4e] = 0x746c, [0x0e4f] = 0x7465, [0x0e50] = 0x7466, [0x0e51] = 0x7461, - [0x0e52] = 0x746b, [0x0e53] = 0x7468, [0x0e54] = 0x7476, [0x0e56] = 0x7460, - [0x0e58] = 0x7474, [0x0e59] = 0x7506, [0x0e5a] = 0x760e, [0x0e5c] = 0x7607, - [0x0e5f] = 0x76b9, [0x0e61] = 0x76b7, [0x0e62] = 0x76e2, [0x0e64] = 0x7774, - [0x0e65] = 0x7777, [0x0e66] = 0x7776, [0x0e67] = 0x7775, [0x0e69] = 0x7778, - [0x0e6a] = 0x7771, [0x0e6c] = 0x777a, [0x0e6d] = 0x715b, [0x0e6e] = 0x777b, - [0x0e6f] = 0x78a6, [0x0e70] = 0x78ae, [0x0e71] = 0x78b8, [0x0e75] = 0x78b1, - [0x0e76] = 0x78af, [0x0e78] = 0x7989, [0x0e79] = 0x7987, [0x0e7c] = 0x7a29, - [0x0e7e] = 0x7a2a, [0x0e80] = 0x7a2d, [0x0e81] = 0x7a2c, [0x0e83] = 0x7a32, + [0x0e39] = 0x6f4a, [0x0e3a] = 0x7191, [0x0e3b] = 0x718e, [0x0e3c] = 0x3de1, + [0x0e3d] = 0x718b, [0x0e3e] = 0x718d, [0x0e3f] = 0x717f, [0x0e40] = 0x718c, + [0x0e41] = 0x717e, [0x0e42] = 0x717c, [0x0e43] = 0x7183, [0x0e44] = 0x3de6, + [0x0e45] = 0x7188, [0x0e46] = 0x3de0, [0x0e47] = 0x3e15, [0x0e48] = 0x7294, + [0x0e49] = 0x3e93, [0x0e4a] = 0x7355, [0x0e4b] = 0x7353, [0x0e4c] = 0x734f, + [0x0e4d] = 0x7354, [0x0e4e] = 0x746c, [0x0e4f] = 0x7465, [0x0e50] = 0x7466, + [0x0e51] = 0x7461, [0x0e52] = 0x746b, [0x0e53] = 0x7468, [0x0e54] = 0x7476, + [0x0e55] = 0x3ee7, [0x0e56] = 0x7460, [0x0e57] = 0x24a0f, [0x0e58] = 0x7474, + [0x0e59] = 0x7506, [0x0e5a] = 0x760e, [0x0e5b] = 0x3fad, [0x0e5c] = 0x7607, + [0x0e5d] = 0x3fae, [0x0e5e] = 0x3fe3, [0x0e5f] = 0x76b9, [0x0e60] = 0x3ff5, + [0x0e61] = 0x76b7, [0x0e62] = 0x76e2, [0x0e63] = 0x4006, [0x0e64] = 0x7774, + [0x0e65] = 0x7777, [0x0e66] = 0x7776, [0x0e67] = 0x7775, [0x0e68] = 0x404f, + [0x0e69] = 0x7778, [0x0e6a] = 0x7771, [0x0e6b] = 0x4054, [0x0e6c] = 0x777a, + [0x0e6d] = 0x715b, [0x0e6e] = 0x777b, [0x0e6f] = 0x78a6, [0x0e70] = 0x78ae, + [0x0e71] = 0x78b8, [0x0e72] = 0x40cb, [0x0e73] = 0x40e3, [0x0e74] = 0x40c9, + [0x0e75] = 0x78b1, [0x0e76] = 0x78af, [0x0e77] = 0x4113, [0x0e78] = 0x7989, + [0x0e79] = 0x7987, [0x0e7a] = 0x4115, [0x0e7b] = 0x4161, [0x0e7c] = 0x7a29, + [0x0e7d] = 0x4166, [0x0e7e] = 0x7a2a, [0x0e7f] = 0x4164, [0x0e80] = 0x7a2d, + [0x0e81] = 0x7a2c, [0x0e82] = 0x4160, [0x0e83] = 0x7a32, [0x0e84] = 0x4163, [0x0e85] = 0x7aec, [0x0e86] = 0x7af0, [0x0e87] = 0x7b81, [0x0e88] = 0x7b9e, - [0x0e89] = 0x7b83, [0x0e8b] = 0x7b92, [0x0e8d] = 0x7ba3, [0x0e8e] = 0x7b9f, - [0x0e8f] = 0x7b93, [0x0e91] = 0x7b86, [0x0e92] = 0x7cb8, [0x0e93] = 0x7cb7, - [0x0e99] = 0x7dc8, [0x0e9a] = 0x7db6, [0x0e9c] = 0x7dd1, [0x0e9e] = 0x7da8, - [0x0e9f] = 0x7dab, [0x0ea1] = 0x7db3, [0x0ea2] = 0x7dcd, [0x0ea4] = 0x7dcf, - [0x0ea5] = 0x7da4, [0x0ea8] = 0x7f41, [0x0ea9] = 0x7f6f, [0x0eaa] = 0x7f71, - [0x0eb1] = 0x8023, [0x0eb2] = 0x805b, [0x0eb4] = 0x8061, [0x0eb5] = 0x805f, - [0x0eb6] = 0x8181, [0x0eb9] = 0x8184, [0x0eba] = 0x8213, [0x0ebc] = 0x824a, - [0x0ebd] = 0x824c, [0x0ec1] = 0x84bd, [0x0ec2] = 0x8495, [0x0ec4] = 0x8492, - [0x0ec5] = 0x84c3, [0x0ec7] = 0x8496, [0x0ec8] = 0x84a5, [0x0ec9] = 0x84b5, + [0x0e89] = 0x7b83, [0x0e8a] = 0x420a, [0x0e8b] = 0x7b92, [0x0e8c] = 0x4204, + [0x0e8d] = 0x7ba3, [0x0e8e] = 0x7b9f, [0x0e8f] = 0x7b93, [0x0e90] = 0x4207, + [0x0e91] = 0x7b86, [0x0e92] = 0x7cb8, [0x0e93] = 0x7cb7, [0x0e94] = 0x428d, + [0x0e95] = 0x428f, [0x0e96] = 0x4290, [0x0e97] = 0x4292, [0x0e98] = 0x42ec, + [0x0e99] = 0x7dc8, [0x0e9a] = 0x7db6, [0x0e9c] = 0x7dd1, [0x0e9d] = 0x42e7, + [0x0e9e] = 0x7da8, [0x0e9f] = 0x7dab, [0x0ea0] = 0x42f2, [0x0ea1] = 0x7db3, + [0x0ea2] = 0x7dcd, [0x0ea3] = 0x42ee, [0x0ea4] = 0x7dcf, [0x0ea5] = 0x7da4, + [0x0ea6] = 0x42ef, [0x0ea7] = 0x434c, [0x0ea8] = 0x7f41, [0x0ea9] = 0x7f6f, + [0x0eaa] = 0x7f71, [0x0eab] = 0x435e, [0x0eac] = 0x435f, [0x0ead] = 0x4376, + [0x0eae] = 0x4374, [0x0eaf] = 0x4372, [0x0eb0] = 0x4390, [0x0eb1] = 0x8023, + [0x0eb2] = 0x805b, [0x0eb3] = 0x43be, [0x0eb4] = 0x8061, [0x0eb5] = 0x805f, + [0x0eb6] = 0x8181, [0x0eb7] = 0x4426, [0x0eb8] = 0x4425, [0x0eb9] = 0x8184, + [0x0eba] = 0x8213, [0x0ebb] = 0x4474, [0x0ebc] = 0x824a, [0x0ebd] = 0x824c, + [0x0ebe] = 0x44fd, [0x0ebf] = 0x4505, [0x0ec0] = 0x4501, [0x0ec1] = 0x84bd, + [0x0ec2] = 0x8495, [0x0ec3] = 0x4509, [0x0ec4] = 0x8492, [0x0ec5] = 0x84c3, + [0x0ec6] = 0x450c, [0x0ec7] = 0x8496, [0x0ec8] = 0x84a5, [0x0ec9] = 0x84b5, [0x0eca] = 0x84b3, [0x0ecb] = 0x84a3, [0x0ecc] = 0x84e4, [0x0ecd] = 0x84d8, - [0x0ece] = 0x84d5, [0x0ed0] = 0x84b7, [0x0ed1] = 0x84ad, [0x0ed2] = 0x84da, - [0x0ed3] = 0x8493, [0x0ed4] = 0x8736, [0x0ed8] = 0x873d, [0x0ed9] = 0x872b, - [0x0eda] = 0x8747, [0x0edb] = 0x8739, [0x0edd] = 0x8745, [0x0ede] = 0x871d, - [0x0ee0] = 0x88ff, [0x0ee1] = 0x88ea, [0x0ee3] = 0x88f5, [0x0ee5] = 0x8900, - [0x0ee6] = 0x88ed, [0x0ee7] = 0x8903, [0x0ee8] = 0x88e9, [0x0eeb] = 0x89ea, - [0x0eed] = 0x8a9b, [0x0eee] = 0x8a8e, [0x0eef] = 0x8aa2, [0x0ef1] = 0x8a9c, + [0x0ece] = 0x84d5, [0x0ecf] = 0x450d, [0x0ed0] = 0x84b7, [0x0ed1] = 0x84ad, + [0x0ed2] = 0x84da, [0x0ed3] = 0x8493, [0x0ed4] = 0x8736, [0x0ed5] = 0x45c0, + [0x0ed6] = 0x45c5, [0x0ed7] = 0x45c9, [0x0ed8] = 0x873d, [0x0ed9] = 0x872b, + [0x0eda] = 0x8747, [0x0edb] = 0x8739, [0x0edc] = 0x45d5, [0x0edd] = 0x8745, + [0x0ede] = 0x871d, [0x0edf] = 0x4641, [0x0ee0] = 0x88ff, [0x0ee1] = 0x88ea, + [0x0ee2] = 0x4633, [0x0ee3] = 0x88f5, [0x0ee4] = 0x463a, [0x0ee5] = 0x8900, + [0x0ee6] = 0x88ed, [0x0ee7] = 0x8903, [0x0ee8] = 0x88e9, [0x0ee9] = 0x4640, + [0x0eea] = 0x4642, [0x0eeb] = 0x89ea, [0x0eec] = 0x46e8, [0x0eed] = 0x8a9b, + [0x0eee] = 0x8a8e, [0x0eef] = 0x8aa2, [0x0ef0] = 0x46e4, [0x0ef1] = 0x8a9c, [0x0ef2] = 0x8a94, [0x0ef3] = 0x8a90, [0x0ef4] = 0x8aa9, [0x0ef5] = 0x8aac, - [0x0ef7] = 0x8a9f, [0x0efa] = 0x8a9d, [0x0efc] = 0x8c67, [0x0eff] = 0x8cd0, - [0x0f00] = 0x8cd6, [0x0f01] = 0x8cd4, [0x0f02] = 0x8d98, [0x0f03] = 0x8d9a, - [0x0f04] = 0x8d97, [0x0f08] = 0x8e0b, [0x0f09] = 0x8e08, [0x0f0a] = 0x8e01, - [0x0f0b] = 0x8eb4, [0x0f0c] = 0x8eb3, [0x0f0e] = 0x8fa1, [0x0f0f] = 0x8fa2, - [0x0f11] = 0x905a, [0x0f13] = 0x9061, [0x0f14] = 0x905f, [0x0f17] = 0x9125, - [0x0f18] = 0x917b, [0x0f19] = 0x9176, [0x0f1a] = 0x917c, [0x0f1c] = 0x9289, - [0x0f1d] = 0x92f6, [0x0f1e] = 0x92b1, [0x0f1f] = 0x92ad, [0x0f20] = 0x9292, - [0x0f21] = 0x9281, [0x0f22] = 0x9284, [0x0f24] = 0x92ae, [0x0f25] = 0x9290, - [0x0f26] = 0x929e, [0x0f2a] = 0x95a2, [0x0f2b] = 0x95a7, [0x0f31] = 0x96a0, - [0x0f32] = 0x969d, [0x0f33] = 0x969f, [0x0f34] = 0x96d0, [0x0f36] = 0x96d1, - [0x0f39] = 0x9759, [0x0f3b] = 0x9764, [0x0f3f] = 0x9819, [0x0f41] = 0x9814, - [0x0f42] = 0x9815, [0x0f43] = 0x981a, [0x0f48] = 0x9906, [0x0f4a] = 0x98f8, - [0x0f4b] = 0x9901, [0x0f4d] = 0x99be, [0x0f4e] = 0x99bc, [0x0f4f] = 0x99b7, - [0x0f50] = 0x99b6, [0x0f51] = 0x99c0, [0x0f53] = 0x99b8, [0x0f57] = 0x99c4, - [0x0f59] = 0x99bf, [0x0f5b] = 0x9ada, [0x0f5c] = 0x9ae4, [0x0f5d] = 0x9ae9, - [0x0f5e] = 0x9ae8, [0x0f5f] = 0x9aea, [0x0f60] = 0x9ae5, [0x0f62] = 0x9b26, - [0x0f65] = 0x9b40, [0x0f6d] = 0x9ebd, [0x0f72] = 0x510e, [0x0f74] = 0x50f7, + [0x0ef6] = 0x46e7, [0x0ef7] = 0x8a9f, [0x0ef8] = 0x46e6, [0x0ef9] = 0x46e1, + [0x0efa] = 0x8a9d, [0x0efb] = 0x4739, [0x0efc] = 0x8c67, [0x0efd] = 0x475c, + [0x0efe] = 0x4775, [0x0eff] = 0x8cd0, [0x0f00] = 0x8cd6, [0x0f01] = 0x8cd4, + [0x0f02] = 0x8d98, [0x0f03] = 0x8d9a, [0x0f04] = 0x8d97, [0x0f05] = 0x47ae, + [0x0f06] = 0x47b0, [0x0f07] = 0x47fa, [0x0f08] = 0x8e0b, [0x0f09] = 0x8e08, + [0x0f0a] = 0x8e01, [0x0f0b] = 0x8eb4, [0x0f0c] = 0x8eb3, [0x0f0d] = 0x485b, + [0x0f0e] = 0x8fa1, [0x0f0f] = 0x8fa2, [0x0f10] = 0x48a5, [0x0f11] = 0x905a, + [0x0f12] = 0x48a2, [0x0f13] = 0x9061, [0x0f14] = 0x905f, [0x0f15] = 0x48db, + [0x0f16] = 0x48da, [0x0f17] = 0x9125, [0x0f18] = 0x917b, [0x0f19] = 0x9176, + [0x0f1a] = 0x917c, [0x0f1b] = 0x4924, [0x0f1c] = 0x9289, [0x0f1d] = 0x92f6, + [0x0f1e] = 0x92b1, [0x0f1f] = 0x92ad, [0x0f20] = 0x9292, [0x0f21] = 0x9281, + [0x0f22] = 0x9284, [0x0f23] = 0x4926, [0x0f24] = 0x92ae, [0x0f25] = 0x9290, + [0x0f26] = 0x929e, [0x0f27] = 0x4998, [0x0f28] = 0x4996, [0x0f29] = 0x499a, + [0x0f2a] = 0x95a2, [0x0f2b] = 0x95a7, [0x0f2c] = 0x4997, [0x0f2d] = 0x49e1, + [0x0f2e] = 0x49e0, [0x0f2f] = 0x49e3, [0x0f30] = 0x49e2, [0x0f31] = 0x96a0, + [0x0f32] = 0x969d, [0x0f33] = 0x969f, [0x0f34] = 0x96d0, [0x0f35] = 0x49fb, + [0x0f36] = 0x96d1, [0x0f37] = 0x4a12, [0x0f38] = 0x4a14, [0x0f39] = 0x9759, + [0x0f3a] = 0x4a45, [0x0f3b] = 0x9764, [0x0f3c] = 0x4a5c, [0x0f3d] = 0x4a5d, + [0x0f3e] = 0x4ab8, [0x0f3f] = 0x9819, [0x0f40] = 0x4aba, [0x0f41] = 0x9814, + [0x0f42] = 0x9815, [0x0f43] = 0x981a, [0x0f44] = 0x4b03, [0x0f45] = 0x4b35, + [0x0f46] = 0x4b36, [0x0f47] = 0x4b39, [0x0f48] = 0x9906, [0x0f49] = 0x4b2d, + [0x0f4a] = 0x98f8, [0x0f4b] = 0x9901, [0x0f4c] = 0x4b7a, [0x0f4d] = 0x99be, + [0x0f4e] = 0x99bc, [0x0f4f] = 0x99b7, [0x0f50] = 0x99b6, [0x0f51] = 0x99c0, + [0x0f52] = 0x4b78, [0x0f53] = 0x99b8, [0x0f54] = 0x4b7b, [0x0f55] = 0x4b7c, + [0x0f56] = 0x4b7e, [0x0f57] = 0x99c4, [0x0f58] = 0x4b7d, [0x0f59] = 0x99bf, + [0x0f5a] = 0x4bc9, [0x0f5b] = 0x9ada, [0x0f5c] = 0x9ae4, [0x0f5d] = 0x9ae9, + [0x0f5e] = 0x9ae8, [0x0f5f] = 0x9aea, [0x0f60] = 0x9ae5, [0x0f61] = 0x4bf3, + [0x0f62] = 0x9b26, [0x0f63] = 0x4c1a, [0x0f64] = 0x4c19, [0x0f65] = 0x9b40, + [0x0f66] = 0x4c1f, [0x0f67] = 0x4ca6, [0x0f68] = 0x4ca7, [0x0f69] = 0x4ca8, + [0x0f6a] = 0x4cab, [0x0f6b] = 0x4ca9, [0x0f6c] = 0x4d2e, [0x0f6d] = 0x9ebd, + [0x0f6e] = 0x4d5e, [0x0f6f] = 0x3495, [0x0f70] = 0x3493, [0x0f71] = 0x3492, + [0x0f72] = 0x510e, [0x0f73] = 0x3496, [0x0f74] = 0x50f7, [0x0f75] = 0x3497, [0x0f76] = 0x50fc, [0x0f77] = 0x510d, [0x0f78] = 0x5101, [0x0f79] = 0x51da, [0x0f7a] = 0x51d9, [0x0f7b] = 0x51db, [0x0f7c] = 0x5286, [0x0f7d] = 0x528e, - [0x0f7e] = 0x52ee, [0x0f7f] = 0x5333, [0x0f80] = 0x53b1, [0x0f82] = 0x5647, - [0x0f83] = 0x562d, [0x0f84] = 0x5654, [0x0f86] = 0x564b, [0x0f87] = 0x5652, - [0x0f88] = 0x5631, [0x0f89] = 0x5644, [0x0f8a] = 0x5656, [0x0f8b] = 0x5650, - [0x0f8c] = 0x562b, [0x0f8e] = 0x564d, [0x0f8f] = 0x5637, [0x0f90] = 0x564f, - [0x0f91] = 0x58a2, [0x0f92] = 0x58b7, [0x0f94] = 0x58b2, [0x0f96] = 0x58aa, - [0x0f97] = 0x58b5, [0x0f98] = 0x58b0, [0x0f9a] = 0x58b4, [0x0f9b] = 0x58a4, - [0x0f9c] = 0x58a7, [0x0f9e] = 0x5926, [0x0f9f] = 0x5afe, [0x0fa1] = 0x5b04, - [0x0fa3] = 0x5afc, [0x0fa5] = 0x5b06, [0x0fa6] = 0x5b0a, [0x0fa7] = 0x5afa, - [0x0fa8] = 0x5b0d, [0x0fa9] = 0x5b00, [0x0faa] = 0x5b0e, [0x0fae] = 0x5d91, - [0x0fb0] = 0x5d8f, [0x0fb1] = 0x5d90, [0x0fb2] = 0x5d98, [0x0fb3] = 0x5da4, - [0x0fb4] = 0x5d9b, [0x0fb5] = 0x5da3, [0x0fb6] = 0x5d96, [0x0fb7] = 0x5de4, - [0x0fb8] = 0x5e5a, [0x0fbb] = 0x5e5e, [0x0fbd] = 0x5fb8, [0x0fbe] = 0x6157, - [0x0fbf] = 0x615c, [0x0fc0] = 0x61a6, [0x0fc1] = 0x6195, [0x0fc2] = 0x6188, - [0x0fc4] = 0x61a3, [0x0fc5] = 0x618f, [0x0fc7] = 0x6164, [0x0fc9] = 0x6159, - [0x0fca] = 0x6178, [0x0fcc] = 0x6185, [0x0fcd] = 0x6187, [0x0fce] = 0x619e, - [0x0fd1] = 0x6198, [0x0fd2] = 0x619c, [0x0fd5] = 0x622f, [0x0fd6] = 0x6480, - [0x0fd7] = 0x649b, [0x0fd8] = 0x648e, [0x0fd9] = 0x648d, [0x0fda] = 0x6494, - [0x0fdb] = 0x64c6, [0x0fdd] = 0x64a8, [0x0fde] = 0x6483, [0x0fe0] = 0x64b9, - [0x0fe1] = 0x6486, [0x0fe2] = 0x64b4, [0x0fe3] = 0x64af, [0x0fe4] = 0x6491, + [0x0f7e] = 0x52ee, [0x0f7f] = 0x5333, [0x0f80] = 0x53b1, [0x0f81] = 0x35f5, + [0x0f82] = 0x5647, [0x0f83] = 0x562d, [0x0f84] = 0x5654, [0x0f85] = 0x35ea, + [0x0f86] = 0x564b, [0x0f87] = 0x5652, [0x0f88] = 0x5631, [0x0f89] = 0x5644, + [0x0f8a] = 0x5656, [0x0f8b] = 0x5650, [0x0f8c] = 0x562b, [0x0f8d] = 0x35f3, + [0x0f8e] = 0x564d, [0x0f8f] = 0x5637, [0x0f90] = 0x564f, [0x0f91] = 0x58a2, + [0x0f92] = 0x58b7, [0x0f93] = 0x3669, [0x0f94] = 0x58b2, [0x0f95] = 0x366b, + [0x0f96] = 0x58aa, [0x0f97] = 0x58b5, [0x0f98] = 0x58b0, [0x0f99] = 0x366c, + [0x0f9a] = 0x58b4, [0x0f9b] = 0x58a4, [0x0f9c] = 0x58a7, [0x0f9d] = 0x3668, + [0x0f9e] = 0x5926, [0x0f9f] = 0x5afe, [0x0fa0] = 0x3728, [0x0fa1] = 0x5b04, + [0x0fa2] = 0x3726, [0x0fa3] = 0x5afc, [0x0fa4] = 0x3725, [0x0fa5] = 0x5b06, + [0x0fa6] = 0x5b0a, [0x0fa7] = 0x5afa, [0x0fa8] = 0x5b0d, [0x0fa9] = 0x5b00, + [0x0faa] = 0x5b0e, [0x0fab] = 0x376b, [0x0fac] = 0x380f, [0x0fad] = 0x3808, + [0x0fae] = 0x5d91, [0x0faf] = 0x380c, [0x0fb0] = 0x5d8f, [0x0fb1] = 0x5d90, + [0x0fb2] = 0x5d98, [0x0fb3] = 0x5da4, [0x0fb4] = 0x5d9b, [0x0fb5] = 0x5da3, + [0x0fb6] = 0x5d96, [0x0fb7] = 0x5de4, [0x0fb8] = 0x5e5a, [0x0fb9] = 0x3860, + [0x0fba] = 0x3862, [0x0fbb] = 0x5e5e, [0x0fbc] = 0x3898, [0x0fbd] = 0x5fb8, + [0x0fbe] = 0x6157, [0x0fbf] = 0x615c, [0x0fc0] = 0x61a6, [0x0fc1] = 0x6195, + [0x0fc2] = 0x6188, [0x0fc3] = 0x398a, [0x0fc4] = 0x61a3, [0x0fc5] = 0x618f, + [0x0fc6] = 0x3984, [0x0fc7] = 0x6164, [0x0fc8] = 0x397f, [0x0fc9] = 0x6159, + [0x0fca] = 0x6178, [0x0fcb] = 0x3982, [0x0fcc] = 0x6185, [0x0fcd] = 0x6187, + [0x0fce] = 0x619e, [0x0fcf] = 0x3996, [0x0fd0] = 0x3989, [0x0fd1] = 0x6198, + [0x0fd2] = 0x619c, [0x0fd3] = 0x398d, [0x0fd4] = 0x39bc, [0x0fd5] = 0x622f, + [0x0fd6] = 0x6480, [0x0fd7] = 0x649b, [0x0fd8] = 0x648e, [0x0fd9] = 0x648d, + [0x0fda] = 0x6494, [0x0fdb] = 0x64c6, [0x0fdc] = 0x3a44, [0x0fdd] = 0x64a8, + [0x0fde] = 0x6483, [0x0fdf] = 0x3a3c, [0x0fe0] = 0x64b9, [0x0fe1] = 0x6486, + [0x0fe2] = 0x64b4, [0x0fe3] = 0x64af, [0x0fe4] = 0x6491, [0x0fe5] = 0x3a4e, [0x0fe6] = 0x64aa, [0x0fe7] = 0x64a1, [0x0fe8] = 0x64a7, [0x0fe9] = 0x66b6, - [0x0fea] = 0x66b3, [0x0fec] = 0x66bc, [0x0fed] = 0x66ac, [0x0fef] = 0x66ad, - [0x0ff0] = 0x6a0e, [0x0ff2] = 0x6a1c, [0x0ff3] = 0x6a1a, [0x0ff6] = 0x6a0b, - [0x0ff8] = 0x69ef, [0x0ff9] = 0x6a0c, [0x0ffa] = 0x69f0, [0x0ffb] = 0x6a22, - [0x0ffd] = 0x69d8, [0x0fff] = 0x6a12, [0x1000] = 0x69fa, [0x1002] = 0x6a2a, - [0x1004] = 0x6a10, [0x1007] = 0x6a29, [0x1008] = 0x69f9, [0x1009] = 0x69ea, - [0x100a] = 0x6a2c, [0x100b] = 0x6a24, [0x100d] = 0x69e9, [0x100e] = 0x6b52, - [0x100f] = 0x6b4f, [0x1010] = 0x6b53, [0x1013] = 0x6f10, [0x1014] = 0x6f65, - [0x1015] = 0x6f75, [0x101a] = 0x6fd0, [0x101c] = 0x6f5c, [0x101d] = 0x6f3d, - [0x101e] = 0x6f71, [0x1020] = 0x6f91, [0x1021] = 0x6f0b, [0x1022] = 0x6f79, - [0x1023] = 0x6f81, [0x1024] = 0x6f8f, [0x1026] = 0x6f59, [0x1027] = 0x6f74, - [0x1029] = 0x71ae, [0x102b] = 0x71a3, [0x102c] = 0x71ad, [0x102f] = 0x71ab, - [0x1030] = 0x71a6, [0x1031] = 0x71a2, [0x1033] = 0x52f2, [0x1034] = 0x7257, - [0x1035] = 0x7255, [0x1036] = 0x7299, [0x1037] = 0x734b, [0x1038] = 0x747a, - [0x103c] = 0x748c, [0x103d] = 0x7484, [0x1040] = 0x7482, [0x1041] = 0x7493, - [0x1042] = 0x747b, [0x1044] = 0x7509, [0x104b] = 0x778a, [0x104d] = 0x7790, - [0x104f] = 0x78c6, [0x1050] = 0x78d3, [0x1051] = 0x78c0, [0x1052] = 0x78d2, - [0x1053] = 0x78c7, [0x1054] = 0x78c2, [0x1056] = 0x799f, [0x1057] = 0x799d, - [0x1058] = 0x799e, [0x105a] = 0x7a41, [0x105c] = 0x7a38, [0x105d] = 0x7a3a, - [0x105e] = 0x7a42, [0x1061] = 0x7a3e, [0x1062] = 0x7ab0, [0x1063] = 0x7bae, - [0x1064] = 0x7bb3, [0x1067] = 0x7bbf, [0x106a] = 0x7bcd, [0x106c] = 0x7bb2, - [0x1074] = 0x7cc4, [0x1075] = 0x7ccd, [0x1076] = 0x7cc2, [0x1077] = 0x7cc6, - [0x1078] = 0x7cc3, [0x1079] = 0x7cc9, [0x107a] = 0x7cc7, [0x107c] = 0x7df8, - [0x107e] = 0x7ded, [0x107f] = 0x7de2, [0x1083] = 0x7ddc, [0x1084] = 0x7e02, - [0x1085] = 0x7e01, [0x1087] = 0x7dd6, [0x1089] = 0x7de4, [0x108a] = 0x7dfe, - [0x108c] = 0x7e00, [0x108d] = 0x7dfc, [0x108e] = 0x7dfd, [0x1090] = 0x7df5, - [0x1091] = 0x7dff, [0x1093] = 0x7deb, [0x1094] = 0x7de5, [0x1095] = 0x7f78, - [0x1096] = 0x7fae, [0x1097] = 0x7fe7, [0x1099] = 0x8065, [0x109a] = 0x806a, - [0x109b] = 0x8066, [0x109c] = 0x8068, [0x109d] = 0x806b, [0x109e] = 0x8194, - [0x109f] = 0x81a1, [0x10a0] = 0x8192, [0x10a1] = 0x8196, [0x10a2] = 0x8193, - [0x10a5] = 0x8501, [0x10a7] = 0x84f8, [0x10a9] = 0x84f5, [0x10ab] = 0x8504, - [0x10b0] = 0x851b, [0x10b1] = 0x8503, [0x10b2] = 0x8533, [0x10b3] = 0x8534, - [0x10b4] = 0x84ed, [0x10b7] = 0x8535, [0x10b9] = 0x8505, [0x10be] = 0x877d, - [0x10c2] = 0x8771, [0x10c4] = 0x885c, [0x10c5] = 0x88e6, [0x10c6] = 0x890f, - [0x10c7] = 0x891b, [0x10c9] = 0x89a9, [0x10ca] = 0x89a5, [0x10cb] = 0x89ee, - [0x10cc] = 0x8ab1, [0x10ce] = 0x8acc, [0x10cf] = 0x8ace, [0x10d1] = 0x8ab7, - [0x10d3] = 0x8ab5, [0x10d4] = 0x8ae9, [0x10d5] = 0x8ab4, [0x10d7] = 0x8ab3, - [0x10d8] = 0x8ac1, [0x10d9] = 0x8aaf, [0x10da] = 0x8aca, [0x10db] = 0x8ad0, - [0x10df] = 0x8c8e, [0x10e2] = 0x8ce9, [0x10e3] = 0x8cdb, [0x10e5] = 0x8ceb, - [0x10e6] = 0x8da4, [0x10e8] = 0x8da2, [0x10e9] = 0x8d9d, [0x10ee] = 0x8e2a, - [0x10ef] = 0x8e28, [0x10f2] = 0x8eb8, [0x10f3] = 0x8eb6, [0x10f4] = 0x8eb9, - [0x10f5] = 0x8eb7, [0x10f6] = 0x8f22, [0x10f7] = 0x8f2b, [0x10f8] = 0x8f27, - [0x10f9] = 0x8f19, [0x10fa] = 0x8fa4, [0x10fc] = 0x8fb3, [0x10fe] = 0x9071, - [0x10ff] = 0x906a, [0x1102] = 0x9188, [0x1103] = 0x918c, [0x1104] = 0x92bf, - [0x1105] = 0x92b8, [0x1106] = 0x92be, [0x1107] = 0x92dc, [0x1108] = 0x92e5, - [0x110b] = 0x92d4, [0x110c] = 0x92d6, [0x110e] = 0x92da, [0x110f] = 0x92ed, - [0x1110] = 0x92f3, [0x1111] = 0x92db, [0x1113] = 0x92b9, [0x1114] = 0x92e2, - [0x1115] = 0x92eb, [0x1116] = 0x95af, [0x1118] = 0x95b2, [0x1119] = 0x95b3, - [0x111d] = 0x96a3, [0x111e] = 0x96a5, [0x1123] = 0x970a, [0x1125] = 0x9787, + [0x0fea] = 0x66b3, [0x0feb] = 0x3b14, [0x0fec] = 0x66bc, [0x0fed] = 0x66ac, + [0x0fee] = 0x3b15, [0x0fef] = 0x66ad, [0x0ff0] = 0x6a0e, [0x0ff1] = 0x3bce, + [0x0ff2] = 0x6a1c, [0x0ff3] = 0x6a1a, [0x0ff4] = 0x3be0, [0x0ff5] = 0x3bc2, + [0x0ff6] = 0x6a0b, [0x0ff7] = 0x3bbf, [0x0ff8] = 0x69ef, [0x0ff9] = 0x6a0c, + [0x0ffa] = 0x69f0, [0x0ffb] = 0x6a22, [0x0ffc] = 0x3bc4, [0x0ffd] = 0x69d8, + [0x0ffe] = 0x3bcf, [0x0fff] = 0x6a12, [0x1000] = 0x69fa, [0x1001] = 0x3bc8, + [0x1002] = 0x6a2a, [0x1003] = 0x3bcc, [0x1004] = 0x6a10, [0x1005] = 0x3bcd, + [0x1006] = 0x3bc7, [0x1007] = 0x6a29, [0x1008] = 0x69f9, [0x1009] = 0x69ea, + [0x100a] = 0x6a2c, [0x100b] = 0x6a24, [0x100c] = 0x4cb7, [0x100d] = 0x69e9, + [0x100e] = 0x6b52, [0x100f] = 0x6b4f, [0x1010] = 0x6b53, [0x1011] = 0x3c43, + [0x1012] = 0x3cb6, [0x1013] = 0x6f10, [0x1014] = 0x6f65, [0x1015] = 0x6f75, + [0x1016] = 0x3d51, [0x1017] = 0x3d4a, [0x1018] = 0x3d4d, [0x1019] = 0x3d56, + [0x101a] = 0x6fd0, [0x101b] = 0x3d53, [0x101c] = 0x6f5c, [0x101d] = 0x6f3d, + [0x101e] = 0x6f71, [0x101f] = 0x3d59, [0x1020] = 0x6f91, [0x1021] = 0x6f0b, + [0x1022] = 0x6f79, [0x1023] = 0x6f81, [0x1024] = 0x6f8f, [0x1025] = 0x3d4e, + [0x1026] = 0x6f59, [0x1027] = 0x6f74, [0x1028] = 0x3dee, [0x1029] = 0x71ae, + [0x102a] = 0x3dec, [0x102b] = 0x71a3, [0x102c] = 0x71ad, [0x102d] = 0x3deb, + [0x102e] = 0x3def, [0x102f] = 0x71ab, [0x1030] = 0x71a6, [0x1031] = 0x71a2, + [0x1032] = 0x3ded, [0x1033] = 0x52f2, [0x1034] = 0x7257, [0x1035] = 0x7255, + [0x1036] = 0x7299, [0x1037] = 0x734b, [0x1038] = 0x747a, [0x1039] = 0x3ef2, + [0x103a] = 0x3eef, [0x103b] = 0x3ef1, [0x103c] = 0x748c, [0x103d] = 0x7484, + [0x103e] = 0x3eed, [0x103f] = 0x3ef0, [0x1040] = 0x7482, [0x1041] = 0x7493, + [0x1042] = 0x747b, [0x1043] = 0x3eee, [0x1044] = 0x7509, [0x1045] = 0x4c1b, + [0x1046] = 0x3f50, [0x1047] = 0x3f66, [0x1048] = 0x3684, [0x1049] = 0x3fb8, + [0x104a] = 0x3ff6, [0x104b] = 0x778a, [0x104c] = 0x4057, [0x104d] = 0x7790, + [0x104e] = 0x405e, [0x104f] = 0x78c6, [0x1050] = 0x78d3, [0x1051] = 0x78c0, + [0x1052] = 0x78d2, [0x1053] = 0x78c7, [0x1054] = 0x78c2, [0x1055] = 0x4119, + [0x1056] = 0x799f, [0x1057] = 0x799d, [0x1058] = 0x799e, [0x1059] = 0x4170, + [0x105a] = 0x7a41, [0x105b] = 0x416e, [0x105c] = 0x7a38, [0x105d] = 0x7a3a, + [0x105e] = 0x7a42, [0x105f] = 0x4172, [0x1060] = 0x4176, [0x1061] = 0x7a3e, + [0x1062] = 0x7ab0, [0x1063] = 0x7bae, [0x1064] = 0x7bb3, [0x1065] = 0x4212, + [0x1066] = 0x421f, [0x1067] = 0x7bbf, [0x1068] = 0x4211, [0x1069] = 0x4216, + [0x106a] = 0x7bcd, [0x106b] = 0x4219, [0x106c] = 0x7bb2, [0x106d] = 0x4224, + [0x106e] = 0x4214, [0x106f] = 0x4225, [0x1070] = 0x4295, [0x1071] = 0x4296, + [0x1072] = 0x4293, [0x1073] = 0x4294, [0x1074] = 0x7cc4, [0x1075] = 0x7ccd, + [0x1076] = 0x7cc2, [0x1077] = 0x7cc6, [0x1078] = 0x7cc3, [0x1079] = 0x7cc9, + [0x107a] = 0x7cc7, [0x107b] = 0x42a0, [0x107c] = 0x7df8, [0x107d] = 0x42fb, + [0x107e] = 0x7ded, [0x107f] = 0x7de2, [0x1080] = 0x42fc, [0x1081] = 0x4300, + [0x1082] = 0x42f8, [0x1083] = 0x7ddc, [0x1084] = 0x7e02, [0x1085] = 0x7e01, + [0x1086] = 0x42f9, [0x1087] = 0x7dd6, [0x1088] = 0x4304, [0x1089] = 0x7de4, + [0x108a] = 0x7dfe, [0x108b] = 0x4303, [0x108c] = 0x7e00, [0x108d] = 0x7dfc, + [0x108e] = 0x7dfd, [0x108f] = 0x42f3, [0x1090] = 0x7df5, [0x1091] = 0x7dff, + [0x1092] = 0x42fa, [0x1093] = 0x7deb, [0x1094] = 0x7de5, [0x1095] = 0x7f78, + [0x1096] = 0x7fae, [0x1097] = 0x7fe7, [0x1098] = 0x43bf, [0x1099] = 0x8065, + [0x109a] = 0x806a, [0x109b] = 0x8066, [0x109c] = 0x8068, [0x109d] = 0x806b, + [0x109e] = 0x8194, [0x109f] = 0x81a1, [0x10a0] = 0x8192, [0x10a1] = 0x8196, + [0x10a2] = 0x8193, [0x10a3] = 0x4479, [0x10a4] = 0x4510, [0x10a5] = 0x8501, + [0x10a6] = 0x4514, [0x10a7] = 0x84f8, [0x10a8] = 0x450e, [0x10a9] = 0x84f5, + [0x10aa] = 0x451a, [0x10ab] = 0x8504, [0x10ac] = 0x4519, [0x10ad] = 0x4521, + [0x10ae] = 0x4523, [0x10af] = 0x451f, [0x10b0] = 0x851b, [0x10b1] = 0x8503, + [0x10b2] = 0x8533, [0x10b3] = 0x8534, [0x10b4] = 0x84ed, [0x10b5] = 0x4525, + [0x10b6] = 0x452b, [0x10b7] = 0x8535, [0x10b8] = 0x4516, [0x10b9] = 0x8505, + [0x10ba] = 0x4522, [0x10bb] = 0x451b, [0x10bc] = 0x45ce, [0x10bd] = 0x45cf, + [0x10be] = 0x877d, [0x10bf] = 0x45cb, [0x10c0] = 0x45d1, [0x10c1] = 0x45cc, + [0x10c2] = 0x8771, [0x10c3] = 0x4617, [0x10c4] = 0x885c, [0x10c5] = 0x88e6, + [0x10c6] = 0x890f, [0x10c7] = 0x891b, [0x10c8] = 0x4651, [0x10c9] = 0x89a9, + [0x10ca] = 0x89a5, [0x10cb] = 0x89ee, [0x10cc] = 0x8ab1, [0x10cd] = 0x46ed, + [0x10ce] = 0x8acc, [0x10cf] = 0x8ace, [0x10d0] = 0x46f4, [0x10d1] = 0x8ab7, + [0x10d2] = 0x46f1, [0x10d3] = 0x8ab5, [0x10d4] = 0x8ae9, [0x10d5] = 0x8ab4, + [0x10d6] = 0x46f8, [0x10d7] = 0x8ab3, [0x10d8] = 0x8ac1, [0x10d9] = 0x8aaf, + [0x10da] = 0x8aca, [0x10db] = 0x8ad0, [0x10dc] = 0x472f, [0x10dd] = 0x475e, + [0x10de] = 0x475d, [0x10df] = 0x8c8e, [0x10e0] = 0x4776, [0x10e1] = 0x4777, + [0x10e2] = 0x8ce9, [0x10e3] = 0x8cdb, [0x10e4] = 0x477e, [0x10e5] = 0x8ceb, + [0x10e6] = 0x8da4, [0x10e7] = 0x47b6, [0x10e8] = 0x8da2, [0x10e9] = 0x8d9d, + [0x10ea] = 0x47b3, [0x10eb] = 0x47fc, [0x10ec] = 0x4803, [0x10ed] = 0x4800, + [0x10ee] = 0x8e2a, [0x10ef] = 0x8e28, [0x10f0] = 0x480a, [0x10f1] = 0x4802, + [0x10f2] = 0x8eb8, [0x10f3] = 0x8eb6, [0x10f4] = 0x8eb9, [0x10f5] = 0x8eb7, + [0x10f6] = 0x8f22, [0x10f7] = 0x8f2b, [0x10f8] = 0x8f27, [0x10f9] = 0x8f19, + [0x10fa] = 0x8fa4, [0x10fb] = 0x4887, [0x10fc] = 0x8fb3, [0x10fd] = 0x48a6, + [0x10fe] = 0x9071, [0x10ff] = 0x906a, [0x1100] = 0x48a9, [0x1101] = 0x48de, + [0x1102] = 0x9188, [0x1103] = 0x918c, [0x1104] = 0x92bf, [0x1105] = 0x92b8, + [0x1106] = 0x92be, [0x1107] = 0x92dc, [0x1108] = 0x92e5, [0x1109] = 0x492e, + [0x110a] = 0x492d, [0x110b] = 0x92d4, [0x110c] = 0x92d6, [0x110d] = 0x4930, + [0x110e] = 0x92da, [0x110f] = 0x92ed, [0x1110] = 0x92f3, [0x1111] = 0x92db, + [0x1112] = 0x492b, [0x1113] = 0x92b9, [0x1114] = 0x92e2, [0x1115] = 0x92eb, + [0x1116] = 0x95af, [0x1117] = 0x499e, [0x1118] = 0x95b2, [0x1119] = 0x95b3, + [0x111a] = 0x499f, [0x111b] = 0x49e5, [0x111c] = 0x49e4, [0x111d] = 0x96a3, + [0x111e] = 0x96a5, [0x111f] = 0x49fd, [0x1120] = 0x49fc, [0x1121] = 0x4a17, + [0x1122] = 0x4a19, [0x1123] = 0x970a, [0x1124] = 0x4a18, [0x1125] = 0x9787, [0x1126] = 0x9789, [0x1127] = 0x978c, [0x1128] = 0x97ef, [0x1129] = 0x982a, - [0x112a] = 0x9822, [0x112c] = 0x981f, [0x112e] = 0x9919, [0x1130] = 0x99ca, - [0x1131] = 0x99da, [0x1135] = 0x99de, [0x1136] = 0x99c8, [0x1137] = 0x99e0, - [0x1139] = 0x9ab6, [0x113a] = 0x9ab5, [0x113c] = 0x9af4, [0x113e] = 0x9b6b, - [0x113f] = 0x9b69, [0x1140] = 0x9b72, [0x1141] = 0x9b63, [0x1143] = 0x9d0d, - [0x1145] = 0x9d01, [0x1146] = 0x9d0c, [0x1148] = 0x9cf8, [0x114b] = 0x9cfe, - [0x114c] = 0x9d02, [0x114d] = 0x9e84, [0x114f] = 0x9eab, [0x1150] = 0x9eaa, - [0x1151] = 0x511d, [0x1152] = 0x5116, [0x1154] = 0x512b, [0x1155] = 0x511e, + [0x112a] = 0x9822, [0x112b] = 0x4abf, [0x112c] = 0x981f, [0x112d] = 0x4b3c, + [0x112e] = 0x9919, [0x112f] = 0x4b6b, [0x1130] = 0x99ca, [0x1131] = 0x99da, + [0x1132] = 0x4b83, [0x1133] = 0x4b81, [0x1134] = 0x4b80, [0x1135] = 0x99de, + [0x1136] = 0x99c8, [0x1137] = 0x99e0, [0x1138] = 0x4bca, [0x1139] = 0x9ab6, + [0x113a] = 0x9ab5, [0x113b] = 0x4bce, [0x113c] = 0x9af4, [0x113d] = 0x4bf6, + [0x113e] = 0x9b6b, [0x113f] = 0x9b69, [0x1140] = 0x9b72, [0x1141] = 0x9b63, + [0x1142] = 0x4c39, [0x1143] = 0x9d0d, [0x1144] = 0x4cae, [0x1145] = 0x9d01, + [0x1146] = 0x9d0c, [0x1147] = 0x4cb5, [0x1148] = 0x9cf8, [0x1149] = 0x4cb3, + [0x114a] = 0x4cb4, [0x114b] = 0x9cfe, [0x114c] = 0x9d02, [0x114d] = 0x9e84, + [0x114e] = 0x4d22, [0x114f] = 0x9eab, [0x1150] = 0x9eaa, [0x1151] = 0x511d, + [0x1152] = 0x5116, [0x1153] = 0x3499, [0x1154] = 0x512b, [0x1155] = 0x511e, [0x1156] = 0x511b, [0x1157] = 0x5290, [0x1158] = 0x5294, [0x1159] = 0x5314, - [0x115c] = 0x5667, [0x115e] = 0x567b, [0x1160] = 0x565f, [0x1161] = 0x5661, - [0x1169] = 0x58c3, [0x116a] = 0x58ca, [0x116b] = 0x58bb, [0x116c] = 0x58c0, - [0x116d] = 0x58c4, [0x116e] = 0x5901, [0x116f] = 0x5b1f, [0x1170] = 0x5b18, - [0x1171] = 0x5b11, [0x1172] = 0x5b15, [0x1174] = 0x5b12, [0x1175] = 0x5b1c, - [0x1177] = 0x5b22, [0x1178] = 0x5b79, [0x1179] = 0x5da6, [0x117b] = 0x5db3, - [0x117c] = 0x5dab, [0x117d] = 0x5eea, [0x117f] = 0x5f5b, [0x1182] = 0x61b7, - [0x1183] = 0x61ce, [0x1184] = 0x61b9, [0x1185] = 0x61bd, [0x1186] = 0x61cf, - [0x1187] = 0x61c0, [0x1188] = 0x6199, [0x1189] = 0x6197, [0x118b] = 0x61bb, - [0x118c] = 0x61d0, [0x118d] = 0x61c4, [0x118e] = 0x6231, [0x1190] = 0x64d3, - [0x1191] = 0x64c0, [0x1196] = 0x64dc, [0x1197] = 0x64d1, [0x1198] = 0x64c8, - [0x119a] = 0x64d5, [0x119b] = 0x66c3, [0x119e] = 0x66bf, [0x119f] = 0x66c5, - [0x11a1] = 0x66cd, [0x11a2] = 0x66c1, [0x11a3] = 0x6706, [0x11a5] = 0x6724, - [0x11a6] = 0x6a63, [0x11a7] = 0x6a42, [0x11a8] = 0x6a52, [0x11aa] = 0x6a43, - [0x11ab] = 0x6a33, [0x11ad] = 0x6a6c, [0x11ae] = 0x6a57, [0x11b0] = 0x6a4c, - [0x11b1] = 0x6a6e, [0x11b7] = 0x6a37, [0x11b9] = 0x6a71, [0x11ba] = 0x6a4a, - [0x11bb] = 0x6a36, [0x11bd] = 0x6a53, [0x11bf] = 0x6a45, [0x11c0] = 0x6a70, - [0x11c3] = 0x6a5c, [0x11c4] = 0x6b58, [0x11c5] = 0x6b57, [0x11cc] = 0x6fbb, - [0x11cf] = 0x6fbe, [0x11d3] = 0x6fb5, [0x11d4] = 0x6fd3, [0x11d5] = 0x6f9f, - [0x11d7] = 0x6fb7, [0x11d8] = 0x6ff5, [0x11d9] = 0x71b7, [0x11db] = 0x71bb, - [0x11dd] = 0x71d1, [0x11df] = 0x71ba, [0x11e1] = 0x71b6, [0x11e2] = 0x71cc, - [0x11e5] = 0x71d3, [0x11e6] = 0x749b, [0x11e9] = 0x7496, [0x11ea] = 0x74a2, - [0x11eb] = 0x749d, [0x11ec] = 0x750a, [0x11ed] = 0x750e, [0x11ef] = 0x7581, - [0x11f0] = 0x762c, [0x11f1] = 0x7637, [0x11f2] = 0x7636, [0x11f3] = 0x763b, - [0x11f5] = 0x76a1, [0x11f8] = 0x7798, [0x11fa] = 0x7796, [0x11fe] = 0x78d6, - [0x11ff] = 0x78eb, [0x1201] = 0x78dc, [0x1203] = 0x79a5, [0x1204] = 0x79a9, - [0x1205] = 0x9834, [0x1206] = 0x7a53, [0x1207] = 0x7a45, [0x1209] = 0x7a4f, - [0x120b] = 0x7abd, [0x120c] = 0x7abb, [0x120d] = 0x7af1, [0x1210] = 0x7bec, - [0x1211] = 0x7bed, [0x1214] = 0x7cd3, [0x1216] = 0x7ce1, [0x1218] = 0x7e19, - [0x121c] = 0x7e27, [0x121d] = 0x7e26, [0x1220] = 0x806e, [0x1221] = 0x81af, - [0x1224] = 0x81ad, [0x1226] = 0x81aa, [0x1227] = 0x8218, [0x122c] = 0x856f, - [0x122d] = 0x854c, [0x122f] = 0x8542, [0x1231] = 0x855c, [0x1232] = 0x8570, - [0x1233] = 0x855f, [0x1235] = 0x855a, [0x1236] = 0x854b, [0x1237] = 0x853f, - [0x1238] = 0x878a, [0x123a] = 0x878b, [0x123b] = 0x87a1, [0x123c] = 0x878e, - [0x123f] = 0x8799, [0x1240] = 0x885e, [0x1241] = 0x885f, [0x1242] = 0x8924, - [0x1243] = 0x89a7, [0x1244] = 0x8aea, [0x1245] = 0x8afd, [0x1246] = 0x8af9, - [0x1247] = 0x8ae3, [0x1248] = 0x8ae5, [0x124b] = 0x8aec, [0x1250] = 0x8cf2, - [0x1252] = 0x8cef, [0x1254] = 0x8da6, [0x1258] = 0x8e3b, [0x1259] = 0x8e43, - [0x125b] = 0x8e32, [0x125c] = 0x8f31, [0x125d] = 0x8f30, [0x125f] = 0x8f2d, - [0x1260] = 0x8f3c, [0x1261] = 0x8fa7, [0x1262] = 0x8fa5, [0x1266] = 0x9137, - [0x1267] = 0x9195, [0x1268] = 0x918e, [0x126a] = 0x9196, [0x126c] = 0x9345, - [0x126d] = 0x930a, [0x1270] = 0x92fd, [0x1271] = 0x9317, [0x1272] = 0x931c, - [0x1273] = 0x9307, [0x1274] = 0x9331, [0x1275] = 0x9332, [0x1276] = 0x932c, - [0x1277] = 0x9330, [0x1278] = 0x9303, [0x1279] = 0x9305, [0x127b] = 0x95c2, - [0x127d] = 0x95b8, [0x127f] = 0x95c1, [0x1283] = 0x96ab, [0x1284] = 0x96b7, - [0x1287] = 0x9715, [0x1288] = 0x9714, [0x128b] = 0x970c, [0x128c] = 0x9717, - [0x128e] = 0x9793, [0x1290] = 0x97d2, [0x1293] = 0x9836, [0x1294] = 0x9831, - [0x1295] = 0x9833, [0x1296] = 0x983c, [0x1297] = 0x982e, [0x1298] = 0x983a, - [0x129a] = 0x983d, [0x129c] = 0x98b5, [0x129d] = 0x9922, [0x129e] = 0x9923, - [0x129f] = 0x9920, [0x12a0] = 0x991c, [0x12a1] = 0x991d, [0x12a3] = 0x99a0, - [0x12a5] = 0x99ef, [0x12a6] = 0x99e8, [0x12a7] = 0x99eb, [0x12ab] = 0x99e1, - [0x12ac] = 0x99e6, [0x12af] = 0x9af8, [0x12b0] = 0x9af5, [0x12b3] = 0x9b83, - [0x12b4] = 0x9b94, [0x12b5] = 0x9b84, [0x12b7] = 0x9b8b, [0x12b8] = 0x9b8f, - [0x12ba] = 0x9b8c, [0x12bc] = 0x9b89, [0x12be] = 0x9b8e, [0x12c2] = 0x9d24, - [0x12c3] = 0x9d0f, [0x12c5] = 0x9d13, [0x12c6] = 0x9d0a, [0x12cb] = 0x9d2a, - [0x12cc] = 0x9d1a, [0x12ce] = 0x9d27, [0x12cf] = 0x9d16, [0x12d0] = 0x9d21, + [0x115a] = 0x20b89, [0x115b] = 0x3602, [0x115c] = 0x5667, [0x115d] = 0x3601, + [0x115e] = 0x567b, [0x115f] = 0x36a1, [0x1160] = 0x565f, [0x1161] = 0x5661, + [0x1162] = 0x35fd, [0x1163] = 0x3673, [0x1164] = 0x3674, [0x1165] = 0x3670, + [0x1166] = 0x3676, [0x1167] = 0x3675, [0x1168] = 0x3672, [0x1169] = 0x58c3, + [0x116a] = 0x58ca, [0x116b] = 0x58bb, [0x116c] = 0x58c0, [0x116d] = 0x58c4, + [0x116e] = 0x5901, [0x116f] = 0x5b1f, [0x1170] = 0x5b18, [0x1171] = 0x5b11, + [0x1172] = 0x5b15, [0x1173] = 0x3729, [0x1174] = 0x5b12, [0x1175] = 0x5b1c, + [0x1176] = 0x372a, [0x1177] = 0x5b22, [0x1178] = 0x5b79, [0x1179] = 0x5da6, + [0x117a] = 0x3816, [0x117b] = 0x5db3, [0x117c] = 0x5dab, [0x117d] = 0x5eea, + [0x117e] = 0x3899, [0x117f] = 0x5f5b, [0x1180] = 0x38d3, [0x1181] = 0x38f5, + [0x1182] = 0x61b7, [0x1183] = 0x61ce, [0x1184] = 0x61b9, [0x1185] = 0x61bd, + [0x1186] = 0x61cf, [0x1187] = 0x61c0, [0x1188] = 0x6199, [0x1189] = 0x6197, + [0x118a] = 0x3994, [0x118b] = 0x61bb, [0x118c] = 0x61d0, [0x118d] = 0x61c4, + [0x118e] = 0x6231, [0x118f] = 0x3a56, [0x1190] = 0x64d3, [0x1191] = 0x64c0, + [0x1192] = 0x3a59, [0x1193] = 0x3a58, [0x1194] = 0x3a55, [0x1195] = 0x3a52, + [0x1196] = 0x64dc, [0x1197] = 0x64d1, [0x1198] = 0x64c8, [0x1199] = 0x3a57, + [0x119a] = 0x64d5, [0x119b] = 0x66c3, [0x119c] = 0x3b1b, [0x119d] = 0x3b1c, + [0x119e] = 0x66bf, [0x119f] = 0x66c5, [0x11a0] = 0x3b19, [0x11a1] = 0x66cd, + [0x11a2] = 0x66c1, [0x11a3] = 0x6706, [0x11a4] = 0x3b3f, [0x11a5] = 0x6724, + [0x11a6] = 0x6a63, [0x11a7] = 0x6a42, [0x11a8] = 0x6a52, [0x11a9] = 0x3bdb, + [0x11aa] = 0x6a43, [0x11ab] = 0x6a33, [0x11ac] = 0x3be2, [0x11ad] = 0x6a6c, + [0x11ae] = 0x6a57, [0x11af] = 0x3bd7, [0x11b0] = 0x6a4c, [0x11b1] = 0x6a6e, + [0x11b2] = 0x3bde, [0x11b3] = 0x3be5, [0x11b4] = 0x3be4, [0x11b5] = 0x3be6, + [0x11b6] = 0x3bd6, [0x11b7] = 0x6a37, [0x11b8] = 0x3bdf, [0x11b9] = 0x6a71, + [0x11ba] = 0x6a4a, [0x11bb] = 0x6a36, [0x11bc] = 0x3bdc, [0x11bd] = 0x6a53, + [0x11be] = 0x3bda, [0x11bf] = 0x6a45, [0x11c0] = 0x6a70, [0x11c1] = 0x3bd3, + [0x11c2] = 0x3bd0, [0x11c3] = 0x6a5c, [0x11c4] = 0x6b58, [0x11c5] = 0x6b57, + [0x11c6] = 0x3c86, [0x11c7] = 0x3c87, [0x11c8] = 0x3cad, [0x11c9] = 0x3cb7, + [0x11ca] = 0x3d58, [0x11cb] = 0x3d6a, [0x11cc] = 0x6fbb, [0x11cd] = 0x3d62, + [0x11ce] = 0x3d61, [0x11cf] = 0x6fbe, [0x11d0] = 0x3d69, [0x11d1] = 0x3d6c, + [0x11d2] = 0x3d65, [0x11d3] = 0x6fb5, [0x11d4] = 0x6fd3, [0x11d5] = 0x6f9f, + [0x11d6] = 0x3d66, [0x11d7] = 0x6fb7, [0x11d8] = 0x6ff5, [0x11d9] = 0x71b7, + [0x11da] = 0x3df5, [0x11db] = 0x71bb, [0x11dc] = 0x3df4, [0x11dd] = 0x71d1, + [0x11de] = 0x3df7, [0x11df] = 0x71ba, [0x11e0] = 0x3df8, [0x11e1] = 0x71b6, + [0x11e2] = 0x71cc, [0x11e3] = 0x3dfb, [0x11e4] = 0x3dfc, [0x11e5] = 0x71d3, + [0x11e6] = 0x749b, [0x11e7] = 0x3ef5, [0x11e8] = 0x3ef8, [0x11e9] = 0x7496, + [0x11ea] = 0x74a2, [0x11eb] = 0x749d, [0x11ec] = 0x750a, [0x11ed] = 0x750e, + [0x11ee] = 0x3f3c, [0x11ef] = 0x7581, [0x11f0] = 0x762c, [0x11f1] = 0x7637, + [0x11f2] = 0x7636, [0x11f3] = 0x763b, [0x11f4] = 0x3fc5, [0x11f5] = 0x76a1, + [0x11f6] = 0x4062, [0x11f7] = 0x4063, [0x11f8] = 0x7798, [0x11f9] = 0x4067, + [0x11fa] = 0x7796, [0x11fb] = 0x4066, [0x11fc] = 0x40d9, [0x11fd] = 0x40db, + [0x11fe] = 0x78d6, [0x11ff] = 0x78eb, [0x1200] = 0x40d8, [0x1201] = 0x78dc, + [0x1202] = 0x411b, [0x1203] = 0x79a5, [0x1204] = 0x79a9, [0x1205] = 0x9834, + [0x1206] = 0x7a53, [0x1207] = 0x7a45, [0x1208] = 0x4179, [0x1209] = 0x7a4f, + [0x120a] = 0x417d, [0x120b] = 0x7abd, [0x120c] = 0x7abb, [0x120d] = 0x7af1, + [0x120e] = 0x422c, [0x120f] = 0x4237, [0x1210] = 0x7bec, [0x1211] = 0x7bed, + [0x1212] = 0x4230, [0x1213] = 0x429a, [0x1214] = 0x7cd3, [0x1215] = 0x4a00, + [0x1216] = 0x7ce1, [0x1217] = 0x4305, [0x1218] = 0x7e19, [0x1219] = 0x4307, + [0x121a] = 0x4309, [0x121b] = 0x430a, [0x121c] = 0x7e27, [0x121d] = 0x7e26, + [0x121e] = 0x4379, [0x121f] = 0x43c2, [0x1220] = 0x806e, [0x1221] = 0x81af, + [0x1222] = 0x4438, [0x1223] = 0x4437, [0x1224] = 0x81ad, [0x1225] = 0x4421, + [0x1226] = 0x81aa, [0x1227] = 0x8218, [0x1228] = 0x445e, [0x1229] = 0x453d, + [0x122a] = 0x4537, [0x122b] = 0x4540, [0x122c] = 0x856f, [0x122d] = 0x854c, + [0x122e] = 0x451d, [0x122f] = 0x8542, [0x1230] = 0x4533, [0x1231] = 0x855c, + [0x1232] = 0x8570, [0x1233] = 0x855f, [0x1234] = 0x4535, [0x1235] = 0x855a, + [0x1236] = 0x854b, [0x1237] = 0x853f, [0x1238] = 0x878a, [0x1239] = 0x45d8, + [0x123a] = 0x878b, [0x123b] = 0x87a1, [0x123c] = 0x878e, [0x123d] = 0x45dc, + [0x123e] = 0x45de, [0x123f] = 0x8799, [0x1240] = 0x885e, [0x1241] = 0x885f, + [0x1242] = 0x8924, [0x1243] = 0x89a7, [0x1244] = 0x8aea, [0x1245] = 0x8afd, + [0x1246] = 0x8af9, [0x1247] = 0x8ae3, [0x1248] = 0x8ae5, [0x1249] = 0x46fa, + [0x124a] = 0x46fb, [0x124b] = 0x8aec, [0x124c] = 0x473d, [0x124d] = 0x473b, + [0x124e] = 0x473f, [0x124f] = 0x475f, [0x1250] = 0x8cf2, [0x1251] = 0x477f, + [0x1252] = 0x8cef, [0x1253] = 0x4784, [0x1254] = 0x8da6, [0x1255] = 0x47bc, + [0x1256] = 0x4814, [0x1257] = 0x480f, [0x1258] = 0x8e3b, [0x1259] = 0x8e43, + [0x125a] = 0x480e, [0x125b] = 0x8e32, [0x125c] = 0x8f31, [0x125d] = 0x8f30, + [0x125e] = 0x4860, [0x125f] = 0x8f2d, [0x1260] = 0x8f3c, [0x1261] = 0x8fa7, + [0x1262] = 0x8fa5, [0x1263] = 0x48ab, [0x1264] = 0x48ac, [0x1265] = 0x48aa, + [0x1266] = 0x9137, [0x1267] = 0x9195, [0x1268] = 0x918e, [0x1269] = 0x4904, + [0x126a] = 0x9196, [0x126b] = 0x4908, [0x126c] = 0x9345, [0x126d] = 0x930a, + [0x126e] = 0x4933, [0x126f] = 0x4934, [0x1270] = 0x92fd, [0x1271] = 0x9317, + [0x1272] = 0x931c, [0x1273] = 0x9307, [0x1274] = 0x9331, [0x1275] = 0x9332, + [0x1276] = 0x932c, [0x1277] = 0x9330, [0x1278] = 0x9303, [0x1279] = 0x9305, + [0x127a] = 0x49a2, [0x127b] = 0x95c2, [0x127c] = 0x49a4, [0x127d] = 0x95b8, + [0x127e] = 0x49a5, [0x127f] = 0x95c1, [0x1280] = 0x49a7, [0x1281] = 0x49a6, + [0x1282] = 0x49e7, [0x1283] = 0x96ab, [0x1284] = 0x96b7, [0x1285] = 0x49ff, + [0x1286] = 0x49fe, [0x1287] = 0x9715, [0x1288] = 0x9714, [0x1289] = 0x4a1d, + [0x128a] = 0x4a1c, [0x128b] = 0x970c, [0x128c] = 0x9717, [0x128d] = 0x4a67, + [0x128e] = 0x9793, [0x128f] = 0x4a94, [0x1290] = 0x97d2, [0x1291] = 0x4ac5, + [0x1292] = 0x4ac8, [0x1293] = 0x9836, [0x1294] = 0x9831, [0x1295] = 0x9833, + [0x1296] = 0x983c, [0x1297] = 0x982e, [0x1298] = 0x983a, [0x1299] = 0x4ac9, + [0x129a] = 0x983d, [0x129b] = 0x4ac7, [0x129c] = 0x98b5, [0x129d] = 0x9922, + [0x129e] = 0x9923, [0x129f] = 0x9920, [0x12a0] = 0x991c, [0x12a1] = 0x991d, + [0x12a2] = 0x4b6c, [0x12a3] = 0x99a0, [0x12a4] = 0x4b8a, [0x12a5] = 0x99ef, + [0x12a6] = 0x99e8, [0x12a7] = 0x99eb, [0x12a8] = 0x4b88, [0x12a9] = 0x4b87, + [0x12aa] = 0x4b86, [0x12ab] = 0x99e1, [0x12ac] = 0x99e6, [0x12ad] = 0x4bcf, + [0x12ae] = 0x4bd0, [0x12af] = 0x9af8, [0x12b0] = 0x9af5, [0x12b1] = 0x4c1c, + [0x12b2] = 0x4c23, [0x12b3] = 0x9b83, [0x12b4] = 0x9b94, [0x12b5] = 0x9b84, + [0x12b6] = 0x4c49, [0x12b7] = 0x9b8b, [0x12b8] = 0x9b8f, [0x12b9] = 0x4c43, + [0x12ba] = 0x9b8c, [0x12bb] = 0x4c48, [0x12bc] = 0x9b89, [0x12bd] = 0x4c47, + [0x12be] = 0x9b8e, [0x12bf] = 0x4c46, [0x12c0] = 0x4c3f, [0x12c1] = 0x4c44, + [0x12c2] = 0x9d24, [0x12c3] = 0x9d0f, [0x12c4] = 0x4cbe, [0x12c5] = 0x9d13, + [0x12c6] = 0x9d0a, [0x12c7] = 0x4cc2, [0x12c8] = 0x4cba, [0x12c9] = 0x4cbc, + [0x12ca] = 0x4cc6, [0x12cb] = 0x9d2a, [0x12cc] = 0x9d1a, [0x12cd] = 0x4cc8, + [0x12ce] = 0x9d27, [0x12cf] = 0x9d16, [0x12d0] = 0x9d21, [0x12d1] = 0x4d23, [0x12d2] = 0x9e85, [0x12d3] = 0x9eac, [0x12d4] = 0x9ec6, [0x12d5] = 0x9ec5, - [0x12d6] = 0x9ed7, [0x12d7] = 0x9f53, [0x12d9] = 0x5128, [0x12da] = 0x5127, - [0x12db] = 0x51df, [0x12dd] = 0x5335, [0x12de] = 0x53b3, [0x12e0] = 0x568a, - [0x12e1] = 0x567d, [0x12e2] = 0x5689, [0x12e4] = 0x58cd, [0x12e5] = 0x58d0, - [0x12e7] = 0x5b2b, [0x12e8] = 0x5b33, [0x12e9] = 0x5b29, [0x12ea] = 0x5b35, - [0x12eb] = 0x5b31, [0x12ec] = 0x5b37, [0x12ed] = 0x5c36, [0x12ee] = 0x5dbe, - [0x12f0] = 0x5db9, [0x12f2] = 0x5dbb, [0x12f4] = 0x61e2, [0x12f5] = 0x61db, + [0x12d6] = 0x9ed7, [0x12d7] = 0x9f53, [0x12d8] = 0x349d, [0x12d9] = 0x5128, + [0x12da] = 0x5127, [0x12db] = 0x51df, [0x12dc] = 0x3524, [0x12dd] = 0x5335, + [0x12de] = 0x53b3, [0x12df] = 0x3607, [0x12e0] = 0x568a, [0x12e1] = 0x567d, + [0x12e2] = 0x5689, [0x12e3] = 0x3679, [0x12e4] = 0x58cd, [0x12e5] = 0x58d0, + [0x12e6] = 0x3678, [0x12e7] = 0x5b2b, [0x12e8] = 0x5b33, [0x12e9] = 0x5b29, + [0x12ea] = 0x5b35, [0x12eb] = 0x5b31, [0x12ec] = 0x5b37, [0x12ed] = 0x5c36, + [0x12ee] = 0x5dbe, [0x12ef] = 0x3819, [0x12f0] = 0x5db9, [0x12f1] = 0x381c, + [0x12f2] = 0x5dbb, [0x12f3] = 0x3818, [0x12f4] = 0x61e2, [0x12f5] = 0x61db, [0x12f6] = 0x61dd, [0x12f7] = 0x61dc, [0x12f8] = 0x61da, [0x12fa] = 0x61d9, - [0x12fd] = 0x64df, [0x1300] = 0x64e1, [0x1302] = 0x64ee, [0x1304] = 0x65b5, - [0x1305] = 0x66d4, [0x1306] = 0x66d5, [0x1308] = 0x66d0, [0x1309] = 0x66d1, - [0x130a] = 0x66ce, [0x130b] = 0x66d7, [0x130e] = 0x6a7d, [0x130f] = 0x6a8a, - [0x1311] = 0x6aa7, [0x1313] = 0x6a99, [0x1314] = 0x6a82, [0x1315] = 0x6a88, - [0x1318] = 0x6a86, [0x131a] = 0x6a98, [0x131b] = 0x6a9d, [0x131e] = 0x6a8f, - [0x1320] = 0x6aaa, [0x1322] = 0x6b5d, [0x1324] = 0x6c0a, [0x1326] = 0x6fd7, - [0x1327] = 0x6fd6, [0x1328] = 0x6fe5, [0x132c] = 0x6fd9, [0x132d] = 0x6fda, - [0x132e] = 0x6fea, [0x1330] = 0x6ff6, [0x1333] = 0x71e3, [0x1335] = 0x71e9, + [0x12fb] = 0x39bd, [0x12fc] = 0x3a5d, [0x12fd] = 0x64df, [0x12fe] = 0x3a5a, + [0x12ff] = 0x3a5e, [0x1300] = 0x64e1, [0x1301] = 0x3a5c, [0x1302] = 0x64ee, + [0x1303] = 0x3a5b, [0x1304] = 0x65b5, [0x1305] = 0x66d4, [0x1306] = 0x66d5, + [0x1307] = 0x3b21, [0x1308] = 0x66d0, [0x1309] = 0x66d1, [0x130a] = 0x66ce, + [0x130b] = 0x66d7, [0x130c] = 0x3b20, [0x130d] = 0x3b32, [0x130e] = 0x6a7d, + [0x130f] = 0x6a8a, [0x1310] = 0x3bf2, [0x1311] = 0x6aa7, [0x1312] = 0x3bf5, + [0x1313] = 0x6a99, [0x1314] = 0x6a82, [0x1315] = 0x6a88, [0x1316] = 0x3bee, + [0x1317] = 0x3bec, [0x1318] = 0x6a86, [0x1319] = 0x3bea, [0x131a] = 0x6a98, + [0x131b] = 0x6a9d, [0x131c] = 0x3bed, [0x131d] = 0x3bf3, [0x131e] = 0x6a8f, + [0x131f] = 0x3bf6, [0x1320] = 0x6aaa, [0x1321] = 0x3c48, [0x1322] = 0x6b5d, + [0x1323] = 0x3c49, [0x1324] = 0x6c0a, [0x1325] = 0x3d75, [0x1326] = 0x6fd7, + [0x1327] = 0x6fd6, [0x1328] = 0x6fe5, [0x1329] = 0x3d6f, [0x132a] = 0x3d7b, + [0x132b] = 0x3d73, [0x132c] = 0x6fd9, [0x132d] = 0x6fda, [0x132e] = 0x6fea, + [0x132f] = 0x3d70, [0x1330] = 0x6ff6, [0x1331] = 0x24039, [0x1332] = 0x3d78, + [0x1333] = 0x71e3, [0x1334] = 0x3dfe, [0x1335] = 0x71e9, [0x1336] = 0x3e00, [0x1337] = 0x71eb, [0x1338] = 0x71ef, [0x1339] = 0x71f3, [0x133a] = 0x71ea, - [0x1340] = 0x7371, [0x1342] = 0x74ae, [0x1344] = 0x74b3, [0x1346] = 0x74ac, - [0x1349] = 0x7583, [0x134a] = 0x7645, [0x134b] = 0x764e, [0x134c] = 0x7644, - [0x134d] = 0x76a3, [0x134e] = 0x76a5, [0x134f] = 0x77a6, [0x1350] = 0x77a4, - [0x1352] = 0x77a9, [0x1353] = 0x77af, [0x1357] = 0x78f0, [0x1358] = 0x78f8, - [0x1359] = 0x78f1, [0x135b] = 0x7a49, [0x135f] = 0x7ac2, [0x1360] = 0x7af2, - [0x1361] = 0x7af3, [0x1362] = 0x7bfa, [0x1364] = 0x7bf6, [0x1365] = 0x7bfc, - [0x1366] = 0x7c18, [0x1367] = 0x7c08, [0x1368] = 0x7c12, [0x136b] = 0x7cdb, - [0x136c] = 0x7cda, [0x1370] = 0x7e2c, [0x1371] = 0x7e4d, [0x1374] = 0x7f46, - [0x1375] = 0x7ff6, [0x1376] = 0x802b, [0x1377] = 0x8074, [0x1378] = 0x81b8, - [0x1379] = 0x81c8, [0x137d] = 0x8592, [0x137e] = 0x8593, [0x1380] = 0x857f, - [0x1381] = 0x85ab, [0x1382] = 0x8597, [0x1385] = 0x85ac, [0x1389] = 0x87ce, - [0x138b] = 0x87cd, [0x138e] = 0x87c1, [0x138f] = 0x87b1, [0x1390] = 0x87c7, - [0x1392] = 0x8940, [0x1394] = 0x893f, [0x1395] = 0x8939, [0x1397] = 0x8943, - [0x139b] = 0x89ab, [0x139d] = 0x8b1f, [0x139e] = 0x8b09, [0x139f] = 0x8b0c, - [0x13a2] = 0x8c40, [0x13a4] = 0x8c96, [0x13a6] = 0x8cf6, [0x13a7] = 0x8cf7, - [0x13a9] = 0x8e46, [0x13aa] = 0x8e4f, [0x13ae] = 0x8f3d, [0x13af] = 0x8f41, + [0x133b] = 0x3e01, [0x133d] = 0x3e55, [0x133e] = 0x3e56, [0x133f] = 0x3e9d, + [0x1340] = 0x7371, [0x1341] = 0x3ef9, [0x1342] = 0x74ae, [0x1343] = 0x3eff, + [0x1344] = 0x74b3, [0x1345] = 0x3efd, [0x1346] = 0x74ac, [0x1347] = 0x3f43, + [0x1348] = 0x3f41, [0x1349] = 0x7583, [0x134a] = 0x7645, [0x134b] = 0x764e, + [0x134c] = 0x7644, [0x134d] = 0x76a3, [0x134e] = 0x76a5, [0x134f] = 0x77a6, + [0x1350] = 0x77a4, [0x1351] = 0x406f, [0x1352] = 0x77a9, [0x1353] = 0x77af, + [0x1354] = 0x408a, [0x1355] = 0x40e5, [0x1356] = 0x40e6, [0x1357] = 0x78f0, + [0x1358] = 0x78f8, [0x1359] = 0x78f1, [0x135a] = 0x417f, [0x135b] = 0x7a49, + [0x135c] = 0x41b5, [0x135d] = 0x41b6, [0x135e] = 0x41bb, [0x135f] = 0x7ac2, + [0x1360] = 0x7af2, [0x1361] = 0x7af3, [0x1362] = 0x7bfa, [0x1363] = 0x4240, + [0x1364] = 0x7bf6, [0x1365] = 0x7bfc, [0x1366] = 0x7c18, [0x1367] = 0x7c08, + [0x1368] = 0x7c12, [0x1369] = 0x429d, [0x136a] = 0x429c, [0x136b] = 0x7cdb, + [0x136c] = 0x7cda, [0x136d] = 0x430f, [0x136e] = 0x4311, [0x136f] = 0x430d, + [0x1370] = 0x7e2c, [0x1371] = 0x7e4d, [0x1372] = 0x4314, [0x1373] = 0x4313, + [0x1374] = 0x7f46, [0x1375] = 0x7ff6, [0x1376] = 0x802b, [0x1377] = 0x8074, + [0x1378] = 0x81b8, [0x1379] = 0x81c8, [0x137a] = 0x4482, [0x137b] = 0x4483, + [0x137c] = 0x454d, [0x137d] = 0x8592, [0x137e] = 0x8593, [0x137f] = 0x454f, + [0x1380] = 0x857f, [0x1381] = 0x85ab, [0x1382] = 0x8597, [0x1383] = 0x454c, + [0x1384] = 0x4551, [0x1385] = 0x85ac, [0x1386] = 0x45ee, [0x1387] = 0x45e8, + [0x1388] = 0x4ccb, [0x1389] = 0x87ce, [0x138a] = 0x45eb, [0x138b] = 0x87cd, + [0x138c] = 0x45e2, [0x138d] = 0x45e6, [0x138e] = 0x87c1, [0x138f] = 0x87b1, + [0x1390] = 0x87c7, [0x1391] = 0x45ec, [0x1392] = 0x8940, [0x1393] = 0x4659, + [0x1394] = 0x893f, [0x1395] = 0x8939, [0x1396] = 0x465d, [0x1397] = 0x8943, + [0x1398] = 0x4657, [0x1399] = 0x465b, [0x139a] = 0x4656, [0x139b] = 0x89ab, + [0x139c] = 0x46fe, [0x139d] = 0x8b1f, [0x139e] = 0x8b09, [0x139f] = 0x8b0c, + [0x13a0] = 0x4700, [0x13a1] = 0x4701, [0x13a2] = 0x8c40, [0x13a3] = 0x4742, + [0x13a4] = 0x8c96, [0x13a5] = 0x4760, [0x13a6] = 0x8cf6, [0x13a7] = 0x8cf7, + [0x13a8] = 0x481d, [0x13a9] = 0x8e46, [0x13aa] = 0x8e4f, [0x13ab] = 0x483e, + [0x13ac] = 0x4869, [0x13ad] = 0x4865, [0x13ae] = 0x8f3d, [0x13af] = 0x8f41, [0x13b0] = 0x9366, [0x13b1] = 0x9378, [0x13b2] = 0x935d, [0x13b3] = 0x9369, [0x13b4] = 0x9374, [0x13b5] = 0x937d, [0x13b6] = 0x936e, [0x13b7] = 0x9372, [0x13b8] = 0x9373, [0x13b9] = 0x9362, [0x13ba] = 0x9348, [0x13bb] = 0x9353, - [0x13bc] = 0x935f, [0x13bd] = 0x9368, [0x13bf] = 0x937f, [0x13c0] = 0x936b, - [0x13c2] = 0x95c4, [0x13c4] = 0x96af, [0x13c5] = 0x96ad, [0x13c6] = 0x96b2, - [0x13c9] = 0x971a, [0x13ca] = 0x971b, [0x13cf] = 0x979b, [0x13d0] = 0x979f, - [0x13d9] = 0x9840, [0x13db] = 0x9847, [0x13dd] = 0x98b7, [0x13e3] = 0x99a2, - [0x13e6] = 0x9a00, [0x13e7] = 0x99f3, [0x13ea] = 0x99f5, [0x13ed] = 0x9abd, - [0x13ee] = 0x9b00, [0x13ef] = 0x9b02, [0x13f1] = 0x9b34, [0x13f2] = 0x9b49, - [0x13f3] = 0x9b9f, [0x13f5] = 0x9ba3, [0x13f6] = 0x9bcd, [0x13f7] = 0x9b99, - [0x13f8] = 0x9b9d, [0x13fb] = 0x9d39, [0x13fd] = 0x9d44, [0x1400] = 0x9d35, - [0x1403] = 0x9eaf, [0x1405] = 0x512f, [0x1408] = 0x9f8e, [0x140a] = 0x569f, - [0x140b] = 0x569b, [0x140c] = 0x569e, [0x140d] = 0x5696, [0x140e] = 0x5694, - [0x140f] = 0x56a0, [0x1411] = 0x5b3b, [0x1414] = 0x5b3a, [0x1415] = 0x5dc1, - [0x1416] = 0x5f4d, [0x1417] = 0x5f5d, [0x1418] = 0x61f3, [0x141d] = 0x64f6, - [0x141e] = 0x64e5, [0x141f] = 0x64ea, [0x1420] = 0x64e7, [0x1421] = 0x6505, - [0x1423] = 0x64f9, [0x1427] = 0x6aab, [0x1428] = 0x6aed, [0x1429] = 0x6ab2, - [0x142a] = 0x6ab0, [0x142b] = 0x6ab5, [0x142c] = 0x6abe, [0x142d] = 0x6ac1, - [0x142e] = 0x6ac8, [0x1430] = 0x6ac0, [0x1431] = 0x6abc, [0x1432] = 0x6ab1, - [0x1433] = 0x6ac4, [0x1434] = 0x6abf, [0x1437] = 0x7008, [0x1438] = 0x7003, + [0x13bc] = 0x935f, [0x13bd] = 0x9368, [0x13be] = 0x4938, [0x13bf] = 0x937f, + [0x13c0] = 0x936b, [0x13c1] = 0x49ae, [0x13c2] = 0x95c4, [0x13c3] = 0x49ad, + [0x13c4] = 0x96af, [0x13c5] = 0x96ad, [0x13c6] = 0x96b2, [0x13c7] = 0x4a02, + [0x13c8] = 0x4a1f, [0x13c9] = 0x971a, [0x13ca] = 0x971b, [0x13cb] = 0x4a22, + [0x13cc] = 0x4a20, [0x13ce] = 0x4a6c, [0x13cf] = 0x979b, [0x13d0] = 0x979f, + [0x13d1] = 0x4a68, [0x13d2] = 0x4a6d, [0x13d3] = 0x4a6e, [0x13d4] = 0x4aa0, + [0x13d5] = 0x4ace, [0x13d6] = 0x4ad0, [0x13d7] = 0x4ad1, [0x13d8] = 0x4acb, + [0x13d9] = 0x9840, [0x13da] = 0x4ad2, [0x13db] = 0x9847, [0x13dc] = 0x4ad3, + [0x13dd] = 0x98b7, [0x13de] = 0x4b20, [0x13df] = 0x4b4e, [0x13e0] = 0x4b4b, + [0x13e1] = 0x4b72, [0x13e2] = 0x4b70, [0x13e3] = 0x99a2, [0x13e4] = 0x4b92, + [0x13e5] = 0x4b8f, [0x13e6] = 0x9a00, [0x13e7] = 0x99f3, [0x13e8] = 0x4b90, + [0x13e9] = 0x29937, [0x13ea] = 0x99f5, [0x13eb] = 0x4bd9, [0x13ec] = 0x4bd5, + [0x13ed] = 0x9abd, [0x13ee] = 0x9b00, [0x13ef] = 0x9b02, [0x13f0] = 0x4bfa, + [0x13f1] = 0x9b34, [0x13f2] = 0x9b49, [0x13f3] = 0x9b9f, [0x13f4] = 0x4c4b, + [0x13f5] = 0x9ba3, [0x13f6] = 0x9bcd, [0x13f7] = 0x9b99, [0x13f8] = 0x9b9d, + [0x13f9] = 0x4cd0, [0x13fa] = 0x4cce, [0x13fb] = 0x9d39, [0x13fc] = 0x4ccf, + [0x13fd] = 0x9d44, [0x13fe] = 0x4cc4, [0x13ff] = 0x4ccc, [0x1400] = 0x9d35, + [0x1401] = 0x4cd2, [0x1402] = 0x4d35, [0x1403] = 0x9eaf, [0x1404] = 0x3e03, + [0x1405] = 0x512f, [0x1406] = 0x349e, [0x1407] = 0x34af, [0x1408] = 0x9f8e, + [0x1409] = 0x360c, [0x140a] = 0x569f, [0x140b] = 0x569b, [0x140c] = 0x569e, + [0x140d] = 0x5696, [0x140e] = 0x5694, [0x140f] = 0x56a0, [0x1410] = 0x367c, + [0x1411] = 0x5b3b, [0x1412] = 0x3730, [0x1413] = 0x3731, [0x1414] = 0x5b3a, + [0x1415] = 0x5dc1, [0x1416] = 0x5f4d, [0x1417] = 0x5f5d, [0x1418] = 0x61f3, + [0x1419] = 0x39a1, [0x141a] = 0x399e, [0x141b] = 0x3a68, [0x141c] = 0x3a61, + [0x141d] = 0x64f6, [0x141e] = 0x64e5, [0x141f] = 0x64ea, [0x1420] = 0x64e7, + [0x1421] = 0x6505, [0x1422] = 0x3a65, [0x1423] = 0x64f9, [0x1424] = 0x3a66, + [0x1425] = 0x3a6a, [0x1426] = 0x3aab, [0x1427] = 0x6aab, [0x1428] = 0x6aed, + [0x1429] = 0x6ab2, [0x142a] = 0x6ab0, [0x142b] = 0x6ab5, [0x142c] = 0x6abe, + [0x142d] = 0x6ac1, [0x142e] = 0x6ac8, [0x142f] = 0x3bf9, [0x1430] = 0x6ac0, + [0x1431] = 0x6abc, [0x1432] = 0x6ab1, [0x1433] = 0x6ac4, [0x1434] = 0x6abf, + [0x1435] = 0x3c58, [0x1436] = 0x3c8a, [0x1437] = 0x7008, [0x1438] = 0x7003, [0x1439] = 0x6ffd, [0x143a] = 0x7010, [0x143b] = 0x7002, [0x143c] = 0x7013, - [0x143e] = 0x71fa, [0x143f] = 0x7200, [0x1440] = 0x74b9, [0x1441] = 0x74bc, - [0x1443] = 0x765b, [0x1444] = 0x7651, [0x1445] = 0x764f, [0x1446] = 0x76eb, - [0x1447] = 0x77b8, [0x1449] = 0x77b9, [0x144a] = 0x77c1, [0x144b] = 0x77c0, - [0x144c] = 0x77be, [0x144d] = 0x790b, [0x144f] = 0x7907, [0x1450] = 0x790a, - [0x1451] = 0x7908, [0x1453] = 0x790d, [0x1454] = 0x7906, [0x1455] = 0x7915, - [0x1456] = 0x79af, [0x145a] = 0x7af5, [0x145d] = 0x7c2e, [0x145f] = 0x7c1b, - [0x1461] = 0x7c1a, [0x1462] = 0x7c24, [0x1465] = 0x7ce6, [0x1466] = 0x7ce3, + [0x143d] = 0x3e04, [0x143e] = 0x71fa, [0x143f] = 0x7200, [0x1440] = 0x74b9, + [0x1441] = 0x74bc, [0x1442] = 0x3f02, [0x1443] = 0x765b, [0x1444] = 0x7651, + [0x1445] = 0x764f, [0x1446] = 0x76eb, [0x1447] = 0x77b8, [0x1448] = 0x4079, + [0x1449] = 0x77b9, [0x144a] = 0x77c1, [0x144b] = 0x77c0, [0x144c] = 0x77be, + [0x144d] = 0x790b, [0x144e] = 0x40eb, [0x144f] = 0x7907, [0x1450] = 0x790a, + [0x1451] = 0x7908, [0x1452] = 0x40e9, [0x1453] = 0x790d, [0x1454] = 0x7906, + [0x1455] = 0x7915, [0x1456] = 0x79af, [0x1457] = 0x4120, [0x1458] = 0x4121, + [0x1459] = 0x4181, [0x145a] = 0x7af5, [0x145b] = 0x424d, [0x145c] = 0x4259, + [0x145d] = 0x7c2e, [0x145e] = 0x4258, [0x145f] = 0x7c1b, [0x1460] = 0x25cd1, + [0x1461] = 0x7c1a, [0x1462] = 0x7c24, [0x1463] = 0x42a5, [0x1464] = 0x42a9, + [0x1465] = 0x7ce6, [0x1466] = 0x7ce3, [0x1467] = 0x431a, [0x1468] = 0x4319, [0x1469] = 0x7e5d, [0x146a] = 0x7e4f, [0x146b] = 0x7e66, [0x146c] = 0x7e5b, - [0x146d] = 0x7f47, [0x146e] = 0x7fb4, [0x1472] = 0x7ffa, [0x1473] = 0x802e, - [0x1476] = 0x81ce, [0x1479] = 0x8219, [0x147c] = 0x85cc, [0x147d] = 0x85b2, - [0x147f] = 0x85bb, [0x1480] = 0x85c1, [0x1484] = 0x87e9, [0x1485] = 0x87ee, - [0x1486] = 0x87f0, [0x1487] = 0x87d6, [0x1488] = 0x880e, [0x1489] = 0x87da, - [0x148a] = 0x8948, [0x148b] = 0x894a, [0x148c] = 0x894e, [0x148d] = 0x894d, - [0x148e] = 0x89b1, [0x148f] = 0x89b0, [0x1490] = 0x89b3, [0x1492] = 0x8b38, - [0x1493] = 0x8b32, [0x1495] = 0x8b2d, [0x1497] = 0x8b34, [0x1499] = 0x8b29, - [0x149a] = 0x8c74, [0x149d] = 0x8d03, [0x14a0] = 0x8da9, [0x14a1] = 0x8e58, - [0x14a4] = 0x8ebf, [0x14a5] = 0x8ec1, [0x14a6] = 0x8f4a, [0x14a7] = 0x8fac, + [0x146d] = 0x7f47, [0x146e] = 0x7fb4, [0x146f] = 0x4396, [0x1470] = 0x4398, + [0x1471] = 0x4397, [0x1472] = 0x7ffa, [0x1473] = 0x802e, [0x1474] = 0x265df, + [0x1475] = 0x43c8, [0x1476] = 0x81ce, [0x1477] = 0x4443, [0x1478] = 0x4445, + [0x1479] = 0x8219, [0x147a] = 0x4552, [0x147b] = 0x4557, [0x147c] = 0x85cc, + [0x147d] = 0x85b2, [0x147e] = 0x4555, [0x147f] = 0x85bb, [0x1480] = 0x85c1, + [0x1481] = 0x4556, [0x1482] = 0x4558, [0x1483] = 0x45f2, [0x1484] = 0x87e9, + [0x1485] = 0x87ee, [0x1486] = 0x87f0, [0x1487] = 0x87d6, [0x1488] = 0x880e, + [0x1489] = 0x87da, [0x148a] = 0x8948, [0x148b] = 0x894a, [0x148c] = 0x894e, + [0x148d] = 0x894d, [0x148e] = 0x89b1, [0x148f] = 0x89b0, [0x1490] = 0x89b3, + [0x1491] = 0x4707, [0x1492] = 0x8b38, [0x1493] = 0x8b32, [0x1494] = 0x4708, + [0x1495] = 0x8b2d, [0x1496] = 0x470a, [0x1497] = 0x8b34, [0x1498] = 0x431b, + [0x1499] = 0x8b29, [0x149a] = 0x8c74, [0x149b] = 0x4761, [0x149c] = 0x4762, + [0x149d] = 0x8d03, [0x149e] = 0x47c2, [0x149f] = 0x47c6, [0x14a0] = 0x8da9, + [0x14a1] = 0x8e58, [0x14a2] = 0x481e, [0x14a3] = 0x4825, [0x14a4] = 0x8ebf, + [0x14a5] = 0x8ec1, [0x14a6] = 0x8f4a, [0x14a7] = 0x8fac, [0x14a8] = 0x48b0, [0x14a9] = 0x9089, [0x14aa] = 0x913d, [0x14ab] = 0x913c, [0x14ac] = 0x91a9, - [0x14ad] = 0x93a0, [0x14af] = 0x9390, [0x14b1] = 0x9393, [0x14b2] = 0x938b, - [0x14b3] = 0x93ad, [0x14b4] = 0x93bb, [0x14b5] = 0x93b8, [0x14b8] = 0x939c, - [0x14b9] = 0x95d8, [0x14ba] = 0x95d7, [0x14be] = 0x975d, [0x14bf] = 0x97a9, - [0x14c0] = 0x97da, [0x14c5] = 0x9854, [0x14c7] = 0x9855, [0x14c8] = 0x984b, - [0x14ca] = 0x983f, [0x14cb] = 0x98b9, [0x14d0] = 0x9938, [0x14d1] = 0x9936, - [0x14d2] = 0x9940, [0x14d4] = 0x993b, [0x14d5] = 0x9939, [0x14d6] = 0x99a4, - [0x14d9] = 0x9a08, [0x14da] = 0x9a0c, [0x14dc] = 0x9a10, [0x14de] = 0x9b07, - [0x14e0] = 0x9bd2, [0x14e2] = 0x9bc2, [0x14e3] = 0x9bbb, [0x14e4] = 0x9bcc, - [0x14e5] = 0x9bcb, [0x14e8] = 0x9d4d, [0x14e9] = 0x9d63, [0x14ea] = 0x9d4e, - [0x14ec] = 0x9d50, [0x14ed] = 0x9d55, [0x14ef] = 0x9d5e, [0x14f1] = 0x9e90, - [0x14f2] = 0x9eb2, [0x14f3] = 0x9eb1, [0x14f5] = 0x9eca, [0x14f6] = 0x9f02, - [0x14f7] = 0x9f27, [0x14f8] = 0x9f26, [0x14fa] = 0x56af, [0x14fb] = 0x58e0, - [0x14fc] = 0x58dc, [0x14fe] = 0x5b39, [0x1501] = 0x5b7c, [0x1502] = 0x5bf3, - [0x1505] = 0x5c6b, [0x1506] = 0x5dc4, [0x1507] = 0x650b, [0x1508] = 0x6508, - [0x1509] = 0x650a, [0x150c] = 0x65dc, [0x150f] = 0x66e1, [0x1510] = 0x66df, - [0x1511] = 0x6ace, [0x1512] = 0x6ad4, [0x1513] = 0x6ae3, [0x1514] = 0x6ad7, - [0x1515] = 0x6ae2, [0x151a] = 0x6ad8, [0x151b] = 0x6ad5, [0x151c] = 0x6ad2, + [0x14ad] = 0x93a0, [0x14ae] = 0x493d, [0x14af] = 0x9390, [0x14b0] = 0x493e, + [0x14b1] = 0x9393, [0x14b2] = 0x938b, [0x14b3] = 0x93ad, [0x14b4] = 0x93bb, + [0x14b5] = 0x93b8, [0x14b6] = 0x4946, [0x14b7] = 0x4945, [0x14b8] = 0x939c, + [0x14b9] = 0x95d8, [0x14ba] = 0x95d7, [0x14bb] = 0x4a03, [0x14bc] = 0x4a26, + [0x14bd] = 0x4a27, [0x14be] = 0x975d, [0x14bf] = 0x97a9, [0x14c0] = 0x97da, + [0x14c1] = 0x4a98, [0x14c2] = 0x4aad, [0x14c3] = 0x4ad5, [0x14c4] = 0x4ada, + [0x14c5] = 0x9854, [0x14c6] = 0x4ad9, [0x14c7] = 0x9855, [0x14c8] = 0x984b, + [0x14c9] = 0x4add, [0x14ca] = 0x983f, [0x14cb] = 0x98b9, [0x14cc] = 0x4b15, + [0x14cd] = 0x4b16, [0x14ce] = 0x4b17, [0x14cf] = 0x4b21, [0x14d0] = 0x9938, + [0x14d1] = 0x9936, [0x14d2] = 0x9940, [0x14d3] = 0x4b4c, [0x14d4] = 0x993b, + [0x14d5] = 0x9939, [0x14d6] = 0x99a4, [0x14d7] = 0x4b96, [0x14d8] = 0x4b98, + [0x14d9] = 0x9a08, [0x14da] = 0x9a0c, [0x14db] = 0x4b9b, [0x14dc] = 0x9a10, + [0x14dd] = 0x4bff, [0x14de] = 0x9b07, [0x14df] = 0x4c25, [0x14e0] = 0x9bd2, + [0x14e1] = 0x4c4f, [0x14e2] = 0x9bc2, [0x14e3] = 0x9bbb, [0x14e4] = 0x9bcc, + [0x14e5] = 0x9bcb, [0x14e6] = 0x4c56, [0x14e7] = 0x4c54, [0x14e8] = 0x9d4d, + [0x14e9] = 0x9d63, [0x14ea] = 0x9d4e, [0x14eb] = 0x4cd8, [0x14ec] = 0x9d50, + [0x14ed] = 0x9d55, [0x14ee] = 0x4cd7, [0x14ef] = 0x9d5e, [0x14f0] = 0x4d26, + [0x14f1] = 0x9e90, [0x14f2] = 0x9eb2, [0x14f3] = 0x9eb1, [0x14f4] = 0x4d38, + [0x14f5] = 0x9eca, [0x14f6] = 0x9f02, [0x14f7] = 0x9f27, [0x14f8] = 0x9f26, + [0x14f9] = 0x4d8a, [0x14fa] = 0x56af, [0x14fb] = 0x58e0, [0x14fc] = 0x58dc, + [0x14fd] = 0x3734, [0x14fe] = 0x5b39, [0x14ff] = 0x3735, [0x1501] = 0x5b7c, + [0x1502] = 0x5bf3, [0x1504] = 0x37a1, [0x1505] = 0x5c6b, [0x1506] = 0x5dc4, + [0x1507] = 0x650b, [0x1508] = 0x6508, [0x1509] = 0x650a, [0x150a] = 0x3a6c, + [0x150b] = 0x3a6d, [0x150c] = 0x65dc, [0x150d] = 0x3b29, [0x150e] = 0x3b2a, + [0x150f] = 0x66e1, [0x1510] = 0x66df, [0x1511] = 0x6ace, [0x1512] = 0x6ad4, + [0x1513] = 0x6ae3, [0x1514] = 0x6ad7, [0x1515] = 0x6ae2, [0x1516] = 0x3c00, + [0x1517] = 0x3c08, [0x1518] = 0x3c06, [0x1519] = 0x3c05, [0x151a] = 0x6ad8, + [0x151b] = 0x6ad5, [0x151c] = 0x6ad2, [0x151d] = 0x3cb1, [0x151e] = 0x3d88, [0x151f] = 0x701e, [0x1520] = 0x702c, [0x1521] = 0x7025, [0x1522] = 0x6ff3, - [0x1523] = 0x7204, [0x1524] = 0x7208, [0x1525] = 0x7215, [0x1527] = 0x74c4, - [0x1528] = 0x74c9, [0x1529] = 0x74c7, [0x152a] = 0x74c8, [0x152b] = 0x76a9, - [0x152c] = 0x77c6, [0x152d] = 0x77c5, [0x152e] = 0x7918, [0x152f] = 0x791a, - [0x1530] = 0x7920, [0x1532] = 0x7a66, [0x1533] = 0x7a64, [0x1534] = 0x7a6a, - [0x153b] = 0x7c35, [0x153c] = 0x7c34, [0x153f] = 0x7e6c, [0x1541] = 0x7e6e, - [0x1542] = 0x7e71, [0x1544] = 0x81d4, [0x1545] = 0x81d6, [0x1546] = 0x821a, + [0x1523] = 0x7204, [0x1524] = 0x7208, [0x1525] = 0x7215, [0x1526] = 0x3e09, + [0x1527] = 0x74c4, [0x1528] = 0x74c9, [0x1529] = 0x74c7, [0x152a] = 0x74c8, + [0x152b] = 0x76a9, [0x152c] = 0x77c6, [0x152d] = 0x77c5, [0x152e] = 0x7918, + [0x152f] = 0x791a, [0x1530] = 0x7920, [0x1531] = 0x4122, [0x1532] = 0x7a66, + [0x1533] = 0x7a64, [0x1534] = 0x7a6a, [0x1535] = 0x41d5, [0x1536] = 0x4261, + [0x1537] = 0x425d, [0x1538] = 0x4262, [0x1539] = 0x424f, [0x153a] = 0x4260, + [0x153b] = 0x7c35, [0x153c] = 0x7c34, [0x153d] = 0x42aa, [0x153e] = 0x4322, + [0x153f] = 0x7e6c, [0x1540] = 0x4321, [0x1541] = 0x7e6e, [0x1542] = 0x7e71, + [0x1543] = 0x4446, [0x1544] = 0x81d4, [0x1545] = 0x81d6, [0x1546] = 0x821a, [0x1547] = 0x8262, [0x1548] = 0x8265, [0x1549] = 0x8276, [0x154a] = 0x85db, - [0x154b] = 0x85d6, [0x154d] = 0x85e7, [0x1550] = 0x85f4, [0x1552] = 0x87fd, - [0x1553] = 0x87d5, [0x1554] = 0x8807, [0x1556] = 0x880f, [0x1557] = 0x87f8, - [0x155a] = 0x8987, [0x155c] = 0x89b5, [0x155d] = 0x89f5, [0x155f] = 0x8b3f, - [0x1560] = 0x8b43, [0x1561] = 0x8b4c, [0x1563] = 0x8d0b, [0x1564] = 0x8e6b, + [0x154b] = 0x85d6, [0x154c] = 0x4562, [0x154d] = 0x85e7, [0x154e] = 0x4560, + [0x154f] = 0x4564, [0x1550] = 0x85f4, [0x1552] = 0x87fd, [0x1553] = 0x87d5, + [0x1554] = 0x8807, [0x1555] = 0x45f6, [0x1556] = 0x880f, [0x1557] = 0x87f8, + [0x1559] = 0x4619, [0x155a] = 0x8987, [0x155b] = 0x4691, [0x155c] = 0x89b5, + [0x155d] = 0x89f5, [0x155e] = 0x470d, [0x155f] = 0x8b3f, [0x1560] = 0x8b43, + [0x1561] = 0x8b4c, [0x1562] = 0x4765, [0x1563] = 0x8d0b, [0x1564] = 0x8e6b, [0x1565] = 0x8e68, [0x1566] = 0x8e70, [0x1567] = 0x8e75, [0x1568] = 0x8e77, - [0x156a] = 0x8ec3, [0x156c] = 0x93e9, [0x156d] = 0x93ea, [0x156e] = 0x93cb, - [0x156f] = 0x93c5, [0x1570] = 0x93c6, [0x1572] = 0x93ed, [0x1573] = 0x93d3, - [0x1575] = 0x93e5, [0x1578] = 0x93db, [0x1579] = 0x93eb, [0x157a] = 0x93e0, - [0x157b] = 0x93c1, [0x157e] = 0x95dd, [0x1588] = 0x97b2, [0x1589] = 0x97b4, - [0x158a] = 0x97b1, [0x158b] = 0x97b5, [0x158c] = 0x97f2, [0x1590] = 0x9856, - [0x1594] = 0x9944, [0x1596] = 0x9a26, [0x1597] = 0x9a1f, [0x1598] = 0x9a18, - [0x1599] = 0x9a21, [0x159a] = 0x9a17, [0x159c] = 0x9b09, [0x159f] = 0x9bc5, - [0x15a0] = 0x9bdf, [0x15a2] = 0x9be3, [0x15a4] = 0x9be9, [0x15a5] = 0x9bee, - [0x15a8] = 0x9d66, [0x15a9] = 0x9d7a, [0x15ab] = 0x9d6e, [0x15ac] = 0x9d91, + [0x1569] = 0x483f, [0x156a] = 0x8ec3, [0x156b] = 0x494b, [0x156c] = 0x93e9, + [0x156d] = 0x93ea, [0x156e] = 0x93cb, [0x156f] = 0x93c5, [0x1570] = 0x93c6, + [0x1571] = 0x4948, [0x1572] = 0x93ed, [0x1573] = 0x93d3, [0x1574] = 0x4952, + [0x1575] = 0x93e5, [0x1576] = 0x494a, [0x1577] = 0x4951, [0x1578] = 0x93db, + [0x1579] = 0x93eb, [0x157a] = 0x93e0, [0x157b] = 0x93c1, [0x157c] = 0x4950, + [0x157d] = 0x494c, [0x157e] = 0x95dd, [0x157f] = 0x49ee, [0x1580] = 0x4a04, + [0x1581] = 0x4a06, [0x1582] = 0x4a2d, [0x1583] = 0x4a2e, [0x1584] = 0x4a2f, + [0x1585] = 0x4a7b, [0x1586] = 0x4a78, [0x1587] = 0x4a77, [0x1588] = 0x97b2, + [0x1589] = 0x97b4, [0x158a] = 0x97b1, [0x158b] = 0x97b5, [0x158c] = 0x97f2, + [0x158d] = 0x4aa2, [0x158e] = 0x4aa1, [0x158f] = 0x4ae3, [0x1590] = 0x9856, + [0x1591] = 0x4b1a, [0x1592] = 0x4b19, [0x1593] = 0x4b57, [0x1594] = 0x9944, + [0x1595] = 0x4b9e, [0x1596] = 0x9a26, [0x1597] = 0x9a1f, [0x1598] = 0x9a18, + [0x1599] = 0x9a21, [0x159a] = 0x9a17, [0x159b] = 0x4bdd, [0x159c] = 0x9b09, + [0x159d] = 0x4c05, [0x159e] = 0x4c28, [0x159f] = 0x9bc5, [0x15a0] = 0x9bdf, + [0x15a1] = 0x4c60, [0x15a2] = 0x9be3, [0x15a3] = 0x4c66, [0x15a4] = 0x9be9, + [0x15a5] = 0x9bee, [0x15a6] = 0x4c67, [0x15a7] = 0x4c68, [0x15a8] = 0x9d66, + [0x15a9] = 0x9d7a, [0x15aa] = 0x4cde, [0x15ab] = 0x9d6e, [0x15ac] = 0x9d91, [0x15ad] = 0x9d83, [0x15ae] = 0x9d76, [0x15af] = 0x9d7e, [0x15b0] = 0x9d6d, - [0x15b2] = 0x9e95, [0x15b3] = 0x9ee3, [0x15b6] = 0x9f03, [0x15b7] = 0x9f04, - [0x15b9] = 0x9f17, [0x15bb] = 0x5136, [0x15bd] = 0x5336, [0x15bf] = 0x5b42, + [0x15b1] = 0x4ce1, [0x15b2] = 0x9e95, [0x15b3] = 0x9ee3, [0x15b4] = 0x4d69, + [0x15b5] = 0x4d77, [0x15b6] = 0x9f03, [0x15b7] = 0x9f04, [0x15b9] = 0x9f17, + [0x15ba] = 0x34a6, [0x15bb] = 0x5136, [0x15bc] = 0x34a5, [0x15bd] = 0x5336, + [0x15be] = 0x3614, [0x15bf] = 0x5b42, [0x15c0] = 0x3736, [0x15c1] = 0x3738, [0x15c2] = 0x5b44, [0x15c3] = 0x5b46, [0x15c4] = 0x5b7e, [0x15c5] = 0x5dca, - [0x15c6] = 0x5dc8, [0x15c7] = 0x5dcc, [0x15c8] = 0x5ef0, [0x15ca] = 0x6585, - [0x15cb] = 0x66e5, [0x15cc] = 0x66e7, [0x15d0] = 0x6af4, [0x15d2] = 0x6ae9, - [0x15d8] = 0x703d, [0x15da] = 0x7036, [0x15dc] = 0x7216, [0x15de] = 0x7212, - [0x15df] = 0x720f, [0x15e0] = 0x7217, [0x15e1] = 0x7211, [0x15e2] = 0x720b, - [0x15e5] = 0x74cd, [0x15e6] = 0x74d0, [0x15e7] = 0x74cc, [0x15e8] = 0x74ce, - [0x15e9] = 0x74d1, [0x15eb] = 0x7589, [0x15ed] = 0x7a6f, [0x15ee] = 0x7c4b, - [0x15ef] = 0x7c44, [0x15f5] = 0x7e7f, [0x15f6] = 0x8b71, [0x15f8] = 0x802f, - [0x15f9] = 0x807a, [0x15fa] = 0x807b, [0x15fb] = 0x807c, [0x15ff] = 0x85fc, - [0x1600] = 0x8610, [0x1601] = 0x8602, [0x1604] = 0x85ee, [0x1605] = 0x8603, - [0x1607] = 0x860d, [0x1608] = 0x8613, [0x1609] = 0x8608, [0x160a] = 0x860f, - [0x160b] = 0x8818, [0x160c] = 0x8812, [0x160f] = 0x8967, [0x1610] = 0x8965, - [0x1611] = 0x89bb, [0x1612] = 0x8b69, [0x1613] = 0x8b62, [0x1615] = 0x8b6e, - [0x1617] = 0x8b61, [0x1619] = 0x8b64, [0x161a] = 0x8b4d, [0x161b] = 0x8c51, - [0x161e] = 0x8e83, [0x161f] = 0x8ec6, [0x1621] = 0x941f, [0x1623] = 0x9404, - [0x1624] = 0x9417, [0x1625] = 0x9408, [0x1626] = 0x9405, [0x1628] = 0x93f3, - [0x1629] = 0x941e, [0x162a] = 0x9402, [0x162b] = 0x941a, [0x162c] = 0x941b, - [0x162d] = 0x9427, [0x162e] = 0x941c, [0x1630] = 0x96b5, [0x1633] = 0x9733, - [0x1635] = 0x9734, [0x1636] = 0x9731, [0x1637] = 0x97b8, [0x1638] = 0x97ba, - [0x163a] = 0x97fc, [0x163d] = 0x98c3, [0x163f] = 0x994d, [0x1641] = 0x9a2f, - [0x1645] = 0x9ac9, [0x1647] = 0x9ac8, [0x1648] = 0x9ac4, [0x1649] = 0x9b2a, - [0x164a] = 0x9b38, [0x164b] = 0x9b50, [0x164d] = 0x9c0a, [0x164e] = 0x9bfb, - [0x164f] = 0x9c04, [0x1650] = 0x9bfc, [0x1651] = 0x9bfe, [0x1655] = 0x9c02, + [0x15c6] = 0x5dc8, [0x15c7] = 0x5dcc, [0x15c8] = 0x5ef0, [0x15c9] = 0x3a70, + [0x15ca] = 0x6585, [0x15cb] = 0x66e5, [0x15cc] = 0x66e7, [0x15cd] = 0x3b2b, + [0x15ce] = 0x3c11, [0x15cf] = 0x3c0a, [0x15d0] = 0x6af4, [0x15d1] = 0x3c0d, + [0x15d2] = 0x6ae9, [0x15d3] = 0x3c16, [0x15d4] = 0x3c10, [0x15d5] = 0x3c09, + [0x15d6] = 0x3c0e, [0x15d7] = 0x3c7a, [0x15d8] = 0x703d, [0x15d9] = 0x3d8c, + [0x15da] = 0x7036, [0x15db] = 0x3d91, [0x15dc] = 0x7216, [0x15dd] = 0x3e0a, + [0x15de] = 0x7212, [0x15df] = 0x720f, [0x15e0] = 0x7217, [0x15e1] = 0x7211, + [0x15e2] = 0x720b, [0x15e3] = 0x3e08, [0x15e4] = 0x3e0b, [0x15e5] = 0x74cd, + [0x15e6] = 0x74d0, [0x15e7] = 0x74cc, [0x15e8] = 0x74ce, [0x15e9] = 0x74d1, + [0x15ea] = 0x3f07, [0x15eb] = 0x7589, [0x15ec] = 0x40f2, [0x15ed] = 0x7a6f, + [0x15ee] = 0x7c4b, [0x15ef] = 0x7c44, [0x15f0] = 0x7c55, [0x15f1] = 0x42ae, + [0x15f2] = 0x4324, [0x15f3] = 0x4326, [0x15f4] = 0x4327, [0x15f5] = 0x7e7f, + [0x15f6] = 0x8b71, [0x15f7] = 0x4399, [0x15f8] = 0x802f, [0x15f9] = 0x807a, + [0x15fa] = 0x807b, [0x15fb] = 0x807c, [0x15fc] = 0x455f, [0x15fd] = 0x456a, + [0x15fe] = 0x4571, [0x15ff] = 0x85fc, [0x1600] = 0x8610, [0x1601] = 0x8602, + [0x1602] = 0x456c, [0x1603] = 0x456f, [0x1604] = 0x85ee, [0x1605] = 0x8603, + [0x1606] = 0x4568, [0x1607] = 0x860d, [0x1608] = 0x8613, [0x1609] = 0x8608, + [0x160a] = 0x860f, [0x160b] = 0x8818, [0x160c] = 0x8812, [0x160d] = 0x4601, + [0x160e] = 0x4668, [0x160f] = 0x8967, [0x1610] = 0x8965, [0x1611] = 0x89bb, + [0x1612] = 0x8b69, [0x1613] = 0x8b62, [0x1614] = 0x4713, [0x1615] = 0x8b6e, + [0x1616] = 0x4716, [0x1617] = 0x8b61, [0x1618] = 0x4718, [0x1619] = 0x8b64, + [0x161a] = 0x8b4d, [0x161b] = 0x8c51, [0x161c] = 0x4789, [0x161d] = 0x47c8, + [0x161e] = 0x8e83, [0x161f] = 0x8ec6, [0x1620] = 0x4884, [0x1621] = 0x941f, + [0x1622] = 0x4954, [0x1623] = 0x9404, [0x1624] = 0x9417, [0x1625] = 0x9408, + [0x1626] = 0x9405, [0x1627] = 0x4956, [0x1628] = 0x93f3, [0x1629] = 0x941e, + [0x162a] = 0x9402, [0x162b] = 0x941a, [0x162c] = 0x941b, [0x162d] = 0x9427, + [0x162e] = 0x941c, [0x162f] = 0x495a, [0x1630] = 0x96b5, [0x1631] = 0x4a05, + [0x1632] = 0x4a07, [0x1633] = 0x9733, [0x1634] = 0x4a31, [0x1635] = 0x9734, + [0x1636] = 0x9731, [0x1637] = 0x97b8, [0x1638] = 0x97ba, [0x1639] = 0x4aa3, + [0x163a] = 0x97fc, [0x163b] = 0x4aeb, [0x163c] = 0x4b1c, [0x163d] = 0x98c3, + [0x163e] = 0x4b5a, [0x163f] = 0x994d, [0x1640] = 0x4b5b, [0x1641] = 0x9a2f, + [0x1642] = 0x4ba6, [0x1643] = 0x4baa, [0x1644] = 0x4ba5, [0x1645] = 0x9ac9, + [0x1646] = 0x4be1, [0x1647] = 0x9ac8, [0x1648] = 0x9ac4, [0x1649] = 0x9b2a, + [0x164a] = 0x9b38, [0x164b] = 0x9b50, [0x164c] = 0x4c2a, [0x164d] = 0x9c0a, + [0x164e] = 0x9bfb, [0x164f] = 0x9c04, [0x1650] = 0x9bfc, [0x1651] = 0x9bfe, + [0x1652] = 0x4c72, [0x1653] = 0x4c6f, [0x1654] = 0x4c73, [0x1655] = 0x9c02, [0x1656] = 0x9bf6, [0x1657] = 0x9c1b, [0x1658] = 0x9bf9, [0x1659] = 0x9c15, [0x165a] = 0x9c10, [0x165b] = 0x9bff, [0x165c] = 0x9c00, [0x165d] = 0x9c0c, - [0x1660] = 0x9d95, [0x1661] = 0x9da5, [0x1666] = 0x9e98, [0x1667] = 0x9ec1, - [0x1669] = 0x9f5a, [0x166a] = 0x5164, [0x166b] = 0x56bb, [0x166d] = 0x58e6, - [0x166e] = 0x5b49, [0x166f] = 0x5bf7, [0x1672] = 0x5dd0, [0x1674] = 0x5fc2, - [0x1676] = 0x6511, [0x1678] = 0x6aff, [0x1679] = 0x6afe, [0x167a] = 0x6afd, - [0x167c] = 0x6b01, [0x167f] = 0x704b, [0x1680] = 0x704d, [0x1681] = 0x7047, - [0x1682] = 0x74d3, [0x1683] = 0x7668, [0x1684] = 0x7667, [0x1687] = 0x77d1, - [0x1688] = 0x7930, [0x1689] = 0x7932, [0x168a] = 0x792e, [0x168c] = 0x9f9d, - [0x168d] = 0x7ac9, [0x168e] = 0x7ac8, [0x1690] = 0x7c56, [0x1691] = 0x7c51, - [0x1695] = 0x7e85, [0x1696] = 0x7e89, [0x1697] = 0x7e8e, [0x1698] = 0x7e84, + [0x165e] = 0x4c6b, [0x165f] = 0x4ce6, [0x1660] = 0x9d95, [0x1661] = 0x9da5, + [0x1662] = 0x4ce9, [0x1663] = 0x4cec, [0x1664] = 0x4ce8, [0x1665] = 0x4cf0, + [0x1666] = 0x9e98, [0x1667] = 0x9ec1, [0x1668] = 0x4d8c, [0x1669] = 0x9f5a, + [0x166a] = 0x5164, [0x166b] = 0x56bb, [0x166c] = 0x3615, [0x166d] = 0x58e6, + [0x166e] = 0x5b49, [0x166f] = 0x5bf7, [0x1670] = 0x3771, [0x1671] = 0x3826, + [0x1672] = 0x5dd0, [0x1673] = 0x38c6, [0x1674] = 0x5fc2, [0x1675] = 0x39a8, + [0x1676] = 0x6511, [0x1677] = 0x3a73, [0x1678] = 0x6aff, [0x1679] = 0x6afe, + [0x167a] = 0x6afd, [0x167b] = 0x3c15, [0x167c] = 0x6b01, [0x167