--- glibc-2.4.orig/debian/wrapper/objcopy +++ glibc-2.4/debian/wrapper/objcopy @@ -0,0 +1,11 @@ +#!/bin/sh + +case " $* " in + *" --only-keep-debug "*) + exec /usr/bin/objcopy -R .debug_info -R .debug_aranges -R .debug_pubnames \ + -R .debug_abbrev -R .debug_line -R .debug_str -R .debug_ranges \ + -R .comment -R .note "$@" + ;; +esac + +exec /usr/bin/objcopy "$@" --- glibc-2.4.orig/debian/control.in/powerpc +++ glibc-2.4/debian/control.in/powerpc @@ -0,0 +1,21 @@ +Package: libc6-powerpc +Architecture: ppc64 +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: 32bit powerpc shared libraries for ppc64 + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the 32bit version of the library, meant for ppc64 systems. + +Package: libc6-dev-powerpc +Architecture: ppc64 +Section: libdevel +Priority: optional +Provides: lib32c-dev +Depends: libc6-powerpc (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib32gcc1 +Description: GNU C Library: 32bit powerpc development libraries for ppc64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library, meant for ppc64 systems. + --- glibc-2.4.orig/debian/control.in/opt +++ glibc-2.4/debian/control.in/opt @@ -0,0 +1,133 @@ +Package: libc6-sparcv9b +Architecture: sparc +Section: libs +Priority: extra +Pre-Depends: @libc@ (= ${Source-Version}) +Description: GNU C Library: Shared libraries [v9b optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for the UltraSPARC v9b ABI. It only + needs to be installed on UltraSPARC machines. If you install this on a + non-UltraSPARC, it won't even be used. + . + WARNING: Some commercial programs do not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libc6-sparcv9v +Architecture: sparc +Section: libs +Priority: extra +Pre-Depends: @libc@ (= ${Source-Version}) +Description: GNU C Library: Shared libraries [v9v optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for SUN4V Niagara and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara and derivatives. If you install this on a machine without + such chips, it won't even be used. + . + WARNING: Some commercial programs do not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libc6-sparc64b +Architecture: sparc +Section: base +Priority: extra +Depends: libc6 (= ${Source-Version}), lib64gcc1 +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: GNU C Library: 64bit Shared libraries for UltraSPARC [v9b optimized] + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + . + This set of libraries is optimized for UltraSPARC-III and derivative + processors. It only needs to be installed on machines using + UltraSPARC-III and derivatives. If you install this on a machine without + such chips, it won't even be used. + . + WARNING: Some commercial programs do not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libc6-sparc64v +Architecture: sparc +Section: base +Priority: extra +Depends: libc6 (= ${Source-Version}), lib64gcc1 +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: GNU C Library: 64bit Shared libraries for UltraSPARC [v9v optimized] + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + . + This set of libraries is optimized for SUN4V Niagara and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara and derivatives. If you install this on a machine without + such chips, it won't even be used. + . + WARNING: Some commercial programs do not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libc6-i686 +Architecture: i386 +Section: libs +Priority: extra +Pre-Depends: @libc@ (= ${Source-Version}) +Description: GNU C Library: Shared libraries [i686 optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for i686 machines, and will only be + used if you are running a 2.6 kernel on an i686 class CPU (check the + output of `uname -m'). This includes Pentium Pro, Pentium II/III/IV, + Celeron CPU's and similar class CPU's (including clones such as AMD + Athlon/Opteron, VIA C3 Nehemiah, but not VIA C3 Ezla). + . + This package includes support for NPTL. + . + WARNING: Some third-party binaries may not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libc6-xen +Architecture: i386 +Conflicts: libc6-i686 +Section: libs +Priority: extra +Pre-Depends: @libc@ (= ${Source-Version}) +Description: GNU C Library: Shared libraries [Xen version] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries are optimized for the Xen hypervisor, and will be + selected instead when running under Xen. + +Package: libc0.1-i686 +Architecture: kfreebsd-i386 +Section: libs +Priority: extra +Pre-Depends: @libc@ (= ${Source-Version}) +Description: GNU C Library: Shared libraries [i686 optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for i686 machines, and will only be + used on an i686 class CPU (check the output of `uname -m'). This includes + Pentium Pro, Pentium II/III/IV, Celeron CPU's and similar class CPU's + (including clones such as AMD Athlon/Opteron, VIA C3 Nehemiah, but not VIA + C3 Ezla). + . + WARNING: Some third-party binaries may not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + --- glibc-2.4.orig/debian/control.in/main +++ glibc-2.4/debian/control.in/main @@ -0,0 +1,66 @@ +Source: @glibc@ +Section: libs +Priority: required +Build-Depends: gettext, make (>= 3.80-1), dpkg-dev (>= 1.13.5), bzip2, texinfo (>= 4.0), file, + linux-kernel-headers (>= 2.6.11.2-0) [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], + mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20020608-1) [hurd-i386], gnumach-dev [hurd-i386], texi2html, + kfreebsd-kernel-headers [kfreebsd-i386 kfreebsd-amd64], + gcc-4.1, binutils (>= 2.16.1cvs20051109-1), + autoconf, sed (>= 4.0.5-4), gawk, debhelper (>= 4.1.76), + libc6-dev-amd64 [i386], libc6-dev-ppc64 [powerpc], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], + quilt +Build-Depends-Indep: perl, po-debconf (>= 1.0) +Maintainer: GNU Libc Maintainers +Uploaders: Ben Collins , GOTO Masanori , Philip Blundell , Jeff Bailey , Daniel Jacobowitz , Clint Adams , Denis Barbier , Aurelien Jarno +Standards-Version: 3.7.2 + +Package: @glibc@-doc +Architecture: all +Section: doc +Priority: optional +Suggests: @glibc@-doc-reference +Description: GNU C Library: Documentation + Contains man pages for libpthread functions and the complete GNU C Library + ChangeLog. The GNU C Library Reference manual has been moved into + @glibc@-doc-reference for licensing reasons. + +Package: locales +Architecture: all +Section: libs +Priority: standard +Depends: ${locale:Depends}, debconf | debconf-2.0 +Conflicts: base-config +Replaces: base-config, lliurex-belocs-locales-data +Description: GNU C Library: National Language (locale) data [support] + Machine-readable data files, shared objects and programs used by the + C library for localization (l10n) and internationalization (i18n) support. + . + This package contains the libc.mo i18n files, plus tools to generate + locale definitions from source files (included in this package). It allows + you to customize which definitions actually get generated. This is a + savings over how this package used to be, where all locales were generated + by default. This created a package that unpacked to an excess of 30 megs. + +Package: locales-all +Architecture: any +Section: libs +Priority: extra +Depends: ${locale:Depends} +Provides: locales +Description: GNU C Library: Precompiled locale data + This package contains the precompiled locale data for all supported locales. + A better alternative is to install the locales package and only select + desired locales, but it can be useful on a low-memory machine because some + locale files take a lot of memory to be compiled. + +Package: nscd +Architecture: @threads_archs@ +Section: admin +Priority: optional +Depends: @libc@ (>= ${Source-Version}) +Description: GNU C Library: Name Service Cache Daemon + A daemon which handles passwd, group and host lookups + for running programs and caches the results for the next + query. You should install this package only if you use + slow Services like LDAP, NIS or NIS+ + --- glibc-2.4.orig/debian/control.in/sparc64 +++ glibc-2.4/debian/control.in/sparc64 @@ -0,0 +1,22 @@ +Package: libc6-sparc64 +Architecture: sparc +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: GNU C Library: 64bit Shared libraries for UltraSPARC + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + +Package: libc6-dev-sparc64 +Architecture: sparc +Section: libdevel +Priority: optional +Provides: lib64c-dev +Depends: libc6-sparc64 (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib64gcc1 +Description: GNU C Library: 64bit Development Libraries for UltraSPARC + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for UltraSPARC systems. + --- glibc-2.4.orig/debian/control.in/libc-dbg +++ glibc-2.4/debian/control.in/libc-dbg @@ -0,0 +1,13 @@ +Package: @libc@-dbg +Architecture: @archs@ +Section: libdevel +Priority: extra +Provides: libc-dbg +Depends: @libc@ (= ${Source-Version}) +Description: GNU C Library: Libraries with debugging symbols + Unstripped shared libraries and separated debug information + for the GNU C library. + . + This package improves the accuracy of backtraces which pass through + the standard C libraries. A version of the libraries with complete + symbolic debug information is also included. --- glibc-2.4.orig/debian/control.in/.cvsignore +++ glibc-2.4/debian/control.in/.cvsignore @@ -0,0 +1,4 @@ +libc0.3 +libc1 +libc6 +libc6.1 --- glibc-2.4.orig/debian/control.in/s390x +++ glibc-2.4/debian/control.in/s390x @@ -0,0 +1,21 @@ +Package: libc6-s390x +Architecture: s390 +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: 64bit Shared libraries for IBM zSeries + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for zSeries systems. + +Package: libc6-dev-s390x +Architecture: s390 +Section: libdevel +Priority: optional +Provides: lib64c-dev +Depends: libc6-s390x (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib64gcc1 +Description: GNU C Library: 64bit Development Libraries for IBM zSeries + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for zSeries systems. + --- glibc-2.4.orig/debian/control.in/libc0.1 +++ glibc-2.4/debian/control.in/libc0.1 @@ -0,0 +1,71 @@ +Package: libc0.1 +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libs +Priority: required +Provides: ${locale-compat:Depends} +Description: GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc0.1-dev +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: standard +Depends: libc0.1 (= ${Source-Version}) +Recommends: gcc | c-compiler +Description: GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc0.1-dbg +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: extra +Provides: libc-dbg +Depends: libc0.1 (= ${Source-Version}) +Description: GNU C Library: Libraries with debugging symbols + Contains unstripped shared libraries. + This package is provided primarily to provide a backtrace with + names in a debugger, this makes it somewhat easier to interpret core + dumps. The libraries are installed in /usr/lib/debug and can be + used by placing that directory in LD_LIBRARY_PATH. + Most people will not need this package. + +Package: libc0.1-prof +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: extra +Depends: libc0.1 (= ${Source-Version}) +Description: GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc0.1-pic +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: optional +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc0.1 (= ${Source-Version}) +Description: GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc0.1-udeb +XC-Package-Type: udeb +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: debian-installer +Priority: extra +Provides: libc0.1, libc-udeb, ${locale-compat:Depends} +Description: GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + --- glibc-2.4.orig/debian/control.in/i386 +++ glibc-2.4/debian/control.in/i386 @@ -0,0 +1,24 @@ +Package: libc6-i386 +Architecture: amd64 +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Replaces: libc6-dev-i386 +Conflicts: ia32-libs (<= 1.5) +Description: GNU C Library: 32bit shared libraries for AMD64 + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the 32bit version of the library, meant for AMD64 systems. + +Package: libc6-dev-i386 +Architecture: amd64 +Section: libdevel +Priority: optional +Conflicts: ia32-libs-dev +Provides: lib32c-dev +Depends: libc6-i386 (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib32gcc1 +Description: GNU C Library: 32bit development libraries for AMD64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library, meant for AMD64 systems. + --- glibc-2.4.orig/debian/control.in/libnss-files-udeb +++ glibc-2.4/debian/control.in/libnss-files-udeb @@ -0,0 +1,13 @@ +Package: libnss-files-udeb +XC-Package-Type: udeb +Architecture: any +Section: debian-installer +Priority: extra +Description: GNU C Library: NSS helper for files - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains the files NSS helper needed for the Debian installer. + Do not install it on a normal system. + --- glibc-2.4.orig/debian/control.in/libc +++ glibc-2.4/debian/control.in/libc @@ -0,0 +1,71 @@ +Package: @libc@ +Architecture: @archs@ +Section: libs +Priority: required +Provides: ${locale-compat:Depends} +Description: GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: @libc@-dev +Architecture: @archs@ +Section: libdevel +Priority: standard +Depends: @libc@ (= ${Source-Version}) +Recommends: gcc | c-compiler +Description: GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: @libc@-dbg +Architecture: @archs@ +Section: libdevel +Priority: extra +Provides: libc-dbg +Depends: @libc@ (= ${Source-Version}) +Description: GNU C Library: Libraries with debugging symbols + Contains unstripped shared libraries. + This package is provided primarily to provide a backtrace with + names in a debugger, this makes it somewhat easier to interpret core + dumps. The libraries are installed in /usr/lib/debug and can be + used by placing that directory in LD_LIBRARY_PATH. + Most people will not need this package. + +Package: @libc@-prof +Architecture: @archs@ +Section: libdevel +Priority: extra +Depends: @libc@ (= ${Source-Version}) +Description: GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: @libc@-pic +Architecture: @archs@ +Section: libdevel +Priority: optional +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: @libc@ (= ${Source-Version}) +Description: GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: @libc@-udeb +XC-Package-Type: udeb +Architecture: @archs@ +Section: debian-installer +Priority: extra +Provides: @libc@, libc-udeb, ${locale-compat:Depends} +Description: GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + --- glibc-2.4.orig/debian/control.in/amd64 +++ glibc-2.4/debian/control.in/amd64 @@ -0,0 +1,23 @@ +Package: libc6-amd64 +Architecture: i386 +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Conflicts: amd64-libs (<= 1.2) +Description: GNU C Library: 64bit Shared libraries for AMD64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for AMD64 systems. + +Package: libc6-dev-amd64 +Architecture: i386 +Section: libdevel +Priority: optional +Depends: libc6-amd64 (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib64gcc1 +Replaces: amd64-libs-dev (<= 1.2) +Provides: lib64c-dev +Description: GNU C Library: 64bit Development Libraries for AMD64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for AMD64 systems. + --- glibc-2.4.orig/debian/control.in/libnss-dns-udeb +++ glibc-2.4/debian/control.in/libnss-dns-udeb @@ -0,0 +1,13 @@ +Package: libnss-dns-udeb +XC-Package-Type: udeb +Architecture: any +Section: debian-installer +Priority: extra +Description: GNU C Library: NSS helper for DNS - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains the DNS NSS helper needed for the Debian installer. + Do not install it on a normal system. + --- glibc-2.4.orig/debian/control.in/ppc64 +++ glibc-2.4/debian/control.in/ppc64 @@ -0,0 +1,21 @@ +Package: libc6-ppc64 +Architecture: powerpc +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: 64bit Shared libraries for PowerPC64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for PowerPC64 systems. + +Package: libc6-dev-ppc64 +Architecture: powerpc +Section: libdevel +Priority: optional +Provides: lib64c-dev +Depends: libc6-ppc64 (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib64gcc1 +Description: GNU C Library: 64bit Development Libraries for PowerPC64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for PowerPC64 systems. + --- glibc-2.4.orig/debian/control.in/libc6 +++ glibc-2.4/debian/control.in/libc6 @@ -0,0 +1,71 @@ +Package: libc6 +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: libs +Priority: required +Provides: ${locale-compat:Depends} +Description: GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc6-dev +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: standard +Depends: libc6 (= ${Source-Version}) +Recommends: gcc | c-compiler +Description: GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc6-dbg +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: extra +Provides: libc-dbg +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: Libraries with debugging symbols + Contains unstripped shared libraries. + This package is provided primarily to provide a backtrace with + names in a debugger, this makes it somewhat easier to interpret core + dumps. The libraries are installed in /usr/lib/debug and can be + used by placing that directory in LD_LIBRARY_PATH. + Most people will not need this package. + +Package: libc6-prof +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: extra +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc6-pic +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: optional +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc6-udeb +XC-Package-Type: udeb +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: debian-installer +Priority: extra +Provides: libc6, libc-udeb, ${locale-compat:Depends} +Description: GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + --- glibc-2.4.orig/debian/control.in/libc6.1 +++ glibc-2.4/debian/control.in/libc6.1 @@ -0,0 +1,71 @@ +Package: libc6.1 +Architecture: alpha ia64 +Section: libs +Priority: required +Provides: ${locale-compat:Depends} +Description: GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc6.1-dev +Architecture: alpha ia64 +Section: libdevel +Priority: standard +Depends: libc6.1 (= ${Source-Version}) +Recommends: gcc | c-compiler +Description: GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc6.1-dbg +Architecture: alpha ia64 +Section: libdevel +Priority: extra +Provides: libc-dbg +Depends: libc6.1 (= ${Source-Version}) +Description: GNU C Library: Libraries with debugging symbols + Contains unstripped shared libraries. + This package is provided primarily to provide a backtrace with + names in a debugger, this makes it somewhat easier to interpret core + dumps. The libraries are installed in /usr/lib/debug and can be + used by placing that directory in LD_LIBRARY_PATH. + Most people will not need this package. + +Package: libc6.1-prof +Architecture: alpha ia64 +Section: libdevel +Priority: extra +Depends: libc6.1 (= ${Source-Version}) +Description: GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc6.1-pic +Architecture: alpha ia64 +Section: libdevel +Priority: optional +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc6.1 (= ${Source-Version}) +Description: GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc6.1-udeb +XC-Package-Type: udeb +Architecture: alpha ia64 +Section: debian-installer +Priority: extra +Provides: libc6.1, libc-udeb, ${locale-compat:Depends} +Description: GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + --- glibc-2.4.orig/debian/control.in/libc0.3 +++ glibc-2.4/debian/control.in/libc0.3 @@ -0,0 +1,71 @@ +Package: libc0.3 +Architecture: hurd-i386 +Section: libs +Priority: required +Provides: ${locale-compat:Depends} +Description: GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc0.3-dev +Architecture: hurd-i386 +Section: libdevel +Priority: standard +Depends: libc0.3 (= ${Source-Version}) +Recommends: gcc | c-compiler +Description: GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc0.3-dbg +Architecture: hurd-i386 +Section: libdevel +Priority: extra +Provides: libc-dbg +Depends: libc0.3 (= ${Source-Version}) +Description: GNU C Library: Libraries with debugging symbols + Contains unstripped shared libraries. + This package is provided primarily to provide a backtrace with + names in a debugger, this makes it somewhat easier to interpret core + dumps. The libraries are installed in /usr/lib/debug and can be + used by placing that directory in LD_LIBRARY_PATH. + Most people will not need this package. + +Package: libc0.3-prof +Architecture: hurd-i386 +Section: libdevel +Priority: extra +Depends: libc0.3 (= ${Source-Version}) +Description: GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc0.3-pic +Architecture: hurd-i386 +Section: libdevel +Priority: optional +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc0.3 (= ${Source-Version}) +Description: GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc0.3-udeb +XC-Package-Type: udeb +Architecture: hurd-i386 +Section: debian-installer +Priority: extra +Provides: libc0.3, libc-udeb, ${locale-compat:Depends} +Description: GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + --- glibc-2.4.orig/debian/patches/arm/local-softfloat.diff +++ glibc-2.4/debian/patches/arm/local-softfloat.diff @@ -0,0 +1,99 @@ +#! /bin/sh -e + +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: fix ioperm build error on arm + +if [ $# -ne 2 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -d "$2" -f --no-backup-if-mismatch -p0 < $0;; + -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p0 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- Makeconfig.orig 2006-03-23 17:32:26.000000000 +0100 ++++ Makeconfig 2006-03-23 14:13:10.000000000 +0100 +@@ -904,7 +904,7 @@ + # is more or less arbitrary. The sorting step will take care of the + # dependencies. Only the $(binfmt-subdir) should always be kept at the + # end of the list. +-all-subdirs = csu assert ctype locale intl catgets math setjmp signal \ ++all-subdirs = soft-fp csu assert ctype locale intl catgets math setjmp signal \ + stdlib stdio-common libio malloc string wcsmbs time dirent \ + grp pwd posix io termios resource misc socket sysvipc gmon \ + gnulib iconv iconvdata wctype manual shadow po argp \ +--- sysdeps/arm/sfp-machine.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/arm/sfp-machine.h 2000-09-05 10:41:37.000000000 +0200 +@@ -0,0 +1,47 @@ ++#define _FP_W_TYPE_SIZE 32 ++#define _FP_W_TYPE unsigned long ++#define _FP_WS_TYPE signed long ++#define _FP_I_TYPE long ++ ++#define _FP_MUL_MEAT_S(R,X,Y) \ ++ _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) ++#define _FP_MUL_MEAT_D(R,X,Y) \ ++ _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) ++#define _FP_MUL_MEAT_Q(R,X,Y) \ ++ _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) ++ ++#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_udiv_norm(S,R,X,Y) ++#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) ++#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) ++ ++#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) ++#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1 ++#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1 ++#define _FP_NANSIGN_S 0 ++#define _FP_NANSIGN_D 0 ++#define _FP_NANSIGN_Q 0 ++ ++#define _FP_KEEPNANFRACP 1 ++/* From my experiments it seems X is chosen unless one of the ++ NaNs is sNaN, in which case the result is NANSIGN/NANFRAC. */ ++#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ ++ do { \ ++ if ((_FP_FRAC_HIGH_RAW_##fs(X) | \ ++ _FP_FRAC_HIGH_RAW_##fs(Y)) & _FP_QNANBIT_##fs) \ ++ { \ ++ R##_s = _FP_NANSIGN_##fs; \ ++ _FP_FRAC_SET_##wc(R,_FP_NANFRAC_##fs); \ ++ } \ ++ else \ ++ { \ ++ R##_s = X##_s; \ ++ _FP_FRAC_COPY_##wc(R,X); \ ++ } \ ++ R##_c = FP_CLS_NAN; \ ++ } while (0) ++ ++#define FP_EX_INVALID (1 << 4) ++#define FP_EX_DIVZERO (1 << 3) ++#define FP_EX_OVERFLOW (1 << 2) ++#define FP_EX_UNDERFLOW (1 << 1) ++#define FP_EX_INEXACT (1 << 0) +--- soft-fp/Makefile.orig 2006-03-23 23:58:48.000000000 +0100 ++++ soft-fp/Makefile 2006-03-23 23:59:22.000000000 +0100 +@@ -35,10 +35,14 @@ + fixunstfdi floatditf extendsftf2 trunctfsf2 extenddftf2 \ + trunctfdf2 sqrttf2 + ++routines = $(gcc-single-routines) \ ++ $(gcc-double-routines) \ ++ $(gcc-quad-routines) ++ ++static-only-routines = $(routines) ++ + distribute := double.h op-1.h op-2.h op-4.h op-common.h quad.h \ + single.h soft-fp.h extended.h Banner op-8.h testit.c \ +- $(addsuffix .c,$(gcc-single-routines)) \ +- $(addsuffix .c,$(gcc-double-routines)) \ +- $(addsuffix .c,$(gcc-quad-routines)) ++ $(addsuffix .c,$(routines)) + + include ../Rules --- glibc-2.4.orig/debian/patches/arm/local-ioperm.diff +++ glibc-2.4/debian/patches/arm/local-ioperm.diff @@ -0,0 +1,15 @@ +# DP: Description: fix ioperm build error on arm + +--- ports/sysdeps/unix/sysv/linux/arm/ioperm.c 20 Feb 2003 22:22:35 -0000 1.6 ++++ ports/sysdeps/unix/sysv/linux/arm/ioperm.c 24 Oct 2003 20:59:38 -0000 +@@ -100,8 +105,8 @@ + { + char systype[256]; + int i, n; +- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; +- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; ++ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; ++ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; + size_t len = sizeof(io.base); + + if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) --- glibc-2.4.orig/debian/patches/arm/local-dwarf2-buildfix.diff +++ glibc-2.4/debian/patches/arm/local-dwarf2-buildfix.diff @@ -0,0 +1,34 @@ +# DP: Description: Adding empty m68k framestate.c not to build for dwarf2. +# DP: Related bugs: +# DP: Dpatch author: Philip Blundell +# DP: Patch author: Philip Blundell +# DP: Upstream status: Debian-Specific +# DP: Status Details: ARM uses sjlj exceptions, not dwarf2 unwind. +# DP: This patch adds empty framestate.c for arm to avoid +# DP: dwarf2 build failure. +# DP: Date: 2003-07-19 (Update 2005-03-14 gotom) + +2005-03-14 GOTO Masanori + + * sysdeps/arm/unwind-pe.c: Update to fix compilation failure. + +2003-07-19 GOTO Masanori + + * sysdeps/arm/framestate.c: Add to fix compilation failure + with sjlj exception, suggested by Philip Blundell. + + +--- /dev/null 2003-01-13 18:16:28.000000000 +0900 ++++ sysdeps/arm/framestate.c 2003-07-16 23:21:34.000000000 +0900 +@@ -0,0 +1,2 @@ ++ ++ +--- /dev/null 2004-12-05 06:07:48.000000000 +0000 ++++ sysdeps/arm/unwind-pe.c 2005-03-14 05:14:16.000000000 +0000 +@@ -0,0 +1,6 @@ ++#include ++#include ++ ++#define _LIBC_DEFINITIONS ++#define NO_BASE_OF_ENCODED_VALUE ++#include "unwind-pe.h" --- glibc-2.4.orig/debian/patches/arm/local-no-hwcap.diff +++ glibc-2.4/debian/patches/arm/local-no-hwcap.diff @@ -0,0 +1,13 @@ +# DP: Restricted hardware caps for ARM + +--- ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h Mon Jul 23 12:57:23 2001 ++++ ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h Sun Feb 10 06:37:00 2002 +@@ -67,7 +67,7 @@ + HWCAP_ARM_VFP = 1 << 6, + HWCAP_ARM_EDSP = 1 << 7, + +- HWCAP_IMPORTANT = (HWCAP_ARM_HALF | HWCAP_ARM_FAST_MULT) ++ HWCAP_IMPORTANT = HWCAP_ARM_FAST_MULT + }; + + static inline int --- glibc-2.4.orig/debian/patches/arm/cvs-gcc4-inline.diff +++ glibc-2.4/debian/patches/arm/cvs-gcc4-inline.diff @@ -0,0 +1,32 @@ +#! /bin/sh -e + +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Make glibc-2.3.5 compile with gcc-4.0 on arm for inline +# functions of dl-machine.h. +# DP: Related bugs: +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: Dan Kegel +# DP: Upstream status: In CVS / Debian-Specific +# DP: Status Details: +# DP: Date: 2005-07-16 + +Fetched from: http://kegel.com/crosstool/crosstool-0.37/patches/glibc-2.3.5/glibc-2.3.4-allow-gcc-4.0-arm.patch + +--- ports/sysdeps/arm/dl-machine.h.orig 2006-06-01 12:25:24.000000000 +0200 ++++ ports/sysdeps/arm/dl-machine.h 2006-06-01 12:25:59.000000000 +0200 +@@ -282,7 +282,14 @@ + #ifdef RESOLVE_MAP + + /* Deal with an out-of-range PC24 reloc. */ +-auto Elf32_Addr ++#if __GNUC__ >= 4 ++ auto inline Elf32_Addr ++#else ++ static inline Elf32_Addr ++#endif ++#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) ++ __attribute ((always_inline)) ++#endif + fix_bad_pc24 (Elf32_Addr *const reloc_addr, Elf32_Addr value) + { + static void *fix_page; --- glibc-2.4.orig/debian/patches/powerpc/local-sysconf.diff +++ glibc-2.4/debian/patches/powerpc/local-sysconf.diff @@ -0,0 +1,42 @@ +# DP: Add /proc/cpuinfo handling on Linux/PowerPC + +diff -urN glibc-2.2.4/sysdeps/unix/sysv/linux/powerpc/getsysstats.c glibc-2.2.4-ds/sysdeps/unix/sysv/linux/powerpc/getsysstats.c +--- glibc-2.2.4/sysdeps/unix/sysv/linux/powerpc/getsysstats.c Wed Dec 31 16:00:00 1969 ++++ glibc-2.2.4-ds/sysdeps/unix/sysv/linux/powerpc/getsysstats.c Wed Jan 2 05:01:46 2002 +@@ -0,0 +1,36 @@ ++/* Determine various system internal values, Linux/PowerPC version. ++ Copyright (C) 2001,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++/* We need to define a special parser for /proc/cpuinfo. */ ++#define GET_NPROCS_PARSER(FP, BUFFER, RESULT) \ ++ do \ ++ { \ ++ (RESULT) = 0; \ ++ /* Read all lines and count the lines starting with the string \ ++ "cpu model". We don't have to fear extremely long lines since \ ++ the kernel will not generate them. 8192 bytes are really \ ++ enough. */ \ ++ while (fgets_unlocked (BUFFER, sizeof (BUFFER), FP) != NULL) \ ++ if (strncmp (BUFFER, "cpu\t\t:", 6) == 0) \ ++ ++(RESULT); \ ++ } \ ++ while (0) ++ ++#include --- glibc-2.4.orig/debian/patches/m32r/local-ports-m32r.diff +++ glibc-2.4/debian/patches/m32r/local-ports-m32r.diff @@ -0,0 +1,5420 @@ +diff --exclude=CVS -upNr ports/ChangeLog.m32r ports/ChangeLog.m32r +--- ports/ChangeLog.m32r 1970-01-01 09:00:00.000000000 +0900 ++++ ports/ChangeLog.m32r 2006-05-09 10:23:08.000000000 +0900 +@@ -0,0 +1,291 @@ ++2006-04-24 Kazuhiro Inaoka ++ * sysdeps/m32r/setjmp.h : Avoid stdlib/isomac.out Error. ++ ++2006-04-06 Kazuhiro Inaoka ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h : ++ Changed for IS_IN_librt case. Gather a common SYSCALL_ERROR_HANDLER ++ code. ++ ++2006-03-24 Kazuhiro Inaoka ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h : ++ Recoverd the code before 2006-03-02. ++ ++2006-03-22 Kazuhiro Inaoka ++ * Rebuild by gcc-3.4.3-13.0.3. ++ * sysdeps/m32r/strlen.S (strlen): Disable pre-read codes. ++ * sysdeps/unix/sysv/linux/m32r/mmap.S (strlen): Set an Error Code ++ when using an illegal offset value. ++ ++2006-03-02 Kazuhiro Inaoka ++ * sysdeps/unix/sysv/linux/m32r/clone.S (__clone): Changes for ++ the new system call calling convention of the kernel. ++ Marged calling SYSCALL_ERROR_HANDLER. ++ * sysdeps/unix/sysv/linux/m32r/sysdep.h : Use @GOT, @PLT, @GOTOFF. ++ Add "|| nop" after trap. Marged calling SYSCALL_ERROR_HANDLER. ++ * sysdeps/unix/sysv/linux/m32r/brk.c (__brk): Ditto. ++ * sysdeps/unix/sysv/linux/m32r/flushcache.S (__brk): Ditto. ++ * sysdeps/unix/sysv/linux/m32r/sigaction.c : Ditto. ++ * sysdeps/unix/m32r/sysdep.S : Ditto. ++ * sysdeps/m32r/bsd-_setjmp.S (_setjmp): Ditto. ++ * sysdeps/m32r/bsd-setjmp.S (setjmp): Ditto. ++ * sysdeps/m32r/setjmp.S (__sigsetjmp): Ditto. ++ * sysdeps/m32r/dl-machine.h : Ditto. ++ * sysdeps/m32r/m32r-mcount.S (_mcount): Ditto. ++ * sysdeps/m32r/sysdep.h : Ditto. ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h : ++ Use @GOT, @PLT, @GOTOFF. Fixed typo. Changed for IS_IN_librt case. ++ Removed UNDOCARGS2_*. Removed UNDOCARGS_5 DOCARGS_5 verbose saving. ++ sigaction.cv ++ ++2006-03-01 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/bits/fcntl.h ++ [__USE_GNU] (F_SETLEASE. F_GETLEASE, F_NOTIFY): New macros. ++ [__USE_GNU] (LOCK_MAND, LOCK_READ, LOCK_WRITE, LOCK_RW): New macros. ++ [__USE_GNU] (DN_ACCESS, DN_MODIFY, DN_CREATE, DN_DELETE, DN_RENAME, ++ DN_ATTRIB, DN_MULTISHOT): New macros. ++ ++2006-01-26 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/brk.c (__brk): Fixed conflist r0 on ++ asm(). ++ ++2006-01-18 Kazuhiro Inaoka ++ ++ * sysdeps/unix/m32r/sysdep.S: Changed to avoid redefined ++ error of symbol `__syscall_error_1'. ++ ++2005-11-22 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/dl-machine.h (elf_machine_rela): Support ++ R_M32R_10_PCREL_RELA. ++ Remove a code to use relocation field at R_M32R_26_PCREL_RELA ++ and R_M32R_18_PCREL_RELA. The field must be 0 with RELA. ++ ++2005-11-18 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/bits/setjmp.h (_JMPBUF_UNWINDS): Remove unnecessary &. ++ Make sure only setjmp.h or pthread.h are allow to include ++ bits/setjmp.h. ++ ++2005-10-21 Hirokazu Takata ++ ++ * sysdeps/m32r/memset.S: Update for m32r2. ++ ++2005-10-20 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/elf/start.S: Support Update PIE. ++ ++2005-10-19 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/socket.S: Remove weak_alias ++ to create listen if NO_WEAK_ALIAS is defined. ++ ++2005-10-14 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/gccframe.h: New file for dwarf2-unwind. ++ * sysdeps/unix/sysv/linux/m32r/configure: Support dwarf2-unwind. ++ ++2005-07-15 ++ ++ * sysdeps/m32r/dl-machine.h: Support R_M32R_REL32. ++ It's important to change with elf/elf.h. ++ ++2005-03-03 Hirokazu Takata ++ ++ * sysdeps/unix/sysv/linux/m32r/kernel-features.h: Removed ++ __ASSUME_VFORK_SYSCALL. ++ ++2005-02-22 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S: Changed for ++ __ASSUME_VFORK_SYSCALL. ++ * sysdeps/unix/sysv/linux/m32r/vfork.S: Ditto. ++ ++2005-02-15 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/socket.S: Added .fillinsn. ++ ++2005-02-10 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S: Changed to ++ reference pthread_create. ++ ++2005-02-04 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h: ++ Support thread cancel. ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/clone.S: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/socket.S: Ditto. ++ ++2005-01-31 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/socket.S: Removed # in macro body. ++ * sysdeps/unix/sysv/linux/Makefile: Removed gnulib, gnulib-static. ++ * sysdeps/unix/sysv/linux/sigaction.c: Changed ++ to "kernel-features.h" ++ ++2004-12-20 NIIBE Yutaka ++ ++ * sysdeps/unix/sysv/linux/m32r/kernel-features.h: Port for ++ kernel-2.6.9. ++ * sysdeps/unix/sysv/linux/m32r/getgid.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/sigaction.c: Ditto. ++ * glibc-20041101/sysdeps/unix/sysv/linux/i386/fcntl.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/chown.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/getresgid.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/getresuid.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/getrlimit.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/getrlimit64.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/lchown.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/msgctl.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/semctl.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/setfsgid.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/setfsuid.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/setrlimit.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/shmctl.c: Ditto. ++ * ++ ++2004-10-26 Kazuhiro Inaoka ++ ++ * ChangeLog.m32r: Fix typo in comment. ++ * sysdeps/m32r/preconfigure: Removed. ++ * sysdeps/m32r/configure.in: New file. ++ * sysdeps/m32r/configure: New generated file. ++ * sysdeps/m32r/linuxthreads/pspinlock.c (__pthread_spin_lock): ++ Changed INLINE_SYSCALL to INTERNAL_SYSCALL. ++ (__pthread_spin_trylock): Ditto. ++ * sysdeps/unix/sysv/linux/m32r/Versions: Removed GLIBC_2.2 ++ versioning, Added GLIBC_2.3 versioning. ++ ++2004-10-25 Kazuhiro Inaoka ++ ++ Moved from separate m32r-linuxthreads into m32r/linuxthreads ++ subdirs: ++ 2004-09-09 Kazuhiro Inaoka ++ * sysdeps/m32r/pspinlock.c: New file. ++ * sysdeps/m32r/pt-machine.h: New file ++ * sysdeps/m32r/preconfigure: Renamed from configure. ++ * sysdeps/m32r/shlib-versions: Moved from top level.. ++ * sysdeps/unix/sysv/linux/m32r/Makefile: Add static-gnulilb ++ environment value difinition. ++ ++2004-10-19 Kazuhiro Inaoka ++ ++ * m32r/configure: Changed into the simple rule. ++ ++2004-10-08 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/mmap.S (__mmap): Use sys_mmap2. ++ ++2004-10-05 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/dl-machine.h (elf_machine_rela_relative): Replace ++ static inline by auto inline, add always_inline attribute. ++ (elf_machine_rela): Likewise. ++ (elf_machine_lazy_rel): Likewise. ++ (elf_machine_runtime_setup): add always_inline attribute. ++ * sysdeps/unix/sysv/linux/m32r/bits/mman.h: Define PROT_GROWSDOWN ++ and PROT_GROWSUP. ++ * sysdeps/unix/sysv/linux/m32r/sysdep.h (SYSCALL_ERROR_HANDLER): ++ Define RTLD_PRIVATE_ERRNO variant. include . ++ ++2004-09-14 Kazuhiro Inaoka ++ ++ * configure: check for assembler line separator ++ ++2004-09-09 Kazuhiro Inaoka ++ ++ * configure, Makefile: Do nothing ++ * shlib-versions: New file. ++ * sysdeps/unix/m32r/sysdep.h: Use relative pathnames. ++ * sysdeps/unix/sysv/linux/m32r/sysdep.h: Use relative ++ pathnames. ++ * sysdeps/unix/sysv/linux/m32r/sysdep.S: Use relative ++ pathnames. ++ * sysdeps/m32r/init-first.c: Remove file ++ ++2004-09-09 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/Implies: New file ++ * sysdeps/m32r/Makefile: New file ++ * sysdeps/m32r/__longjmp.S: New file ++ * sysdeps/m32r/bits/endian.h: New file ++ * sysdeps/m32r/bits/huge_val.h: New file ++ * sysdeps/m32r/bits/setjmp.h: New file ++ * sysdeps/m32r/bsd-_setjmp.S: New file ++ * sysdeps/m32r/bsd-setjmp.S: New file ++ * sysdeps/m32r/dl-machine.h: New file ++ * sysdeps/m32r/elf/start.S: New file ++ * sysdeps/m32r/gmp-mparam.h: New file ++ * sysdeps/m32r/init-first.c: New file ++ * sysdeps/m32r/m32r-mcount.S: New file ++ * sysdeps/m32r/machine-gmon.h: New file ++ * sysdeps/m32r/memcpy.S: New file ++ * sysdeps/m32r/memset.S: New file ++ * sysdeps/m32r/memusage.h: New file ++ * sysdeps/m32r/setjmp.S: New file ++ * sysdeps/m32r/stackinfo.h: New file ++ * sysdeps/m32r/strlen.S: New file ++ * sysdeps/m32r/sys/ucontext.h: New file ++ * sysdeps/m32r/sysdep.h: New file ++ * sysdeps/unix/m32r/Makefile: New file ++ * sysdeps/unix/m32r/sysdep.S: New file ++ * sysdeps/unix/m32r/sysdep.h: New file ++ * sysdeps/unix/sysv/linux/m32r/Dist: New file ++ * sysdeps/unix/sysv/linux/m32r/Makefile: New file ++ * sysdeps/unix/sysv/linux/m32r/Versions: New file ++ * sysdeps/unix/sysv/linux/m32r/bits/fcntl.h: New file ++ * sysdeps/unix/sysv/linux/m32r/bits/mman.h: New file ++ * sysdeps/unix/sysv/linux/m32r/bits/resource.h: New file ++ * sysdeps/unix/sysv/linux/m32r/brk.c: New file ++ * sysdeps/unix/sysv/linux/m32r/chown.c: New file ++ * sysdeps/unix/sysv/linux/m32r/clone.S: New file ++ * sysdeps/unix/sysv/linux/m32r/fchown.c: New file ++ * sysdeps/unix/sysv/linux/m32r/fcntl.c: New file ++ * sysdeps/unix/sysv/linux/m32r/flushcache.S: New file ++ * sysdeps/unix/sysv/linux/m32r/fxstat.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getegid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/geteuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getgroups.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getresgid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getresuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getrlimit.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getrlimit64.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/lchown.c: New file ++ * sysdeps/unix/sysv/linux/m32r/lockf64.c: New file ++ * sysdeps/unix/sysv/linux/m32r/lxstat.c: New file ++ * sysdeps/unix/sysv/linux/m32r/m32r-stub.c: New file ++ * sysdeps/unix/sysv/linux/m32r/mmap.S: New file ++ * sysdeps/unix/sysv/linux/m32r/msgctl.c: New file ++ * sysdeps/unix/sysv/linux/m32r/pipe.S: New file ++ * sysdeps/unix/sysv/linux/m32r/profil-counter.h: New file ++ * sysdeps/unix/sysv/linux/m32r/semctl.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setegid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/seteuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setfsgid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setfsuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setgid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setgroups.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setregid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setresgid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setresuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setreuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setrlimit.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/shmctl.c: New file ++ * sysdeps/unix/sysv/linux/m32r/sigcontextinfo.h: New file ++ * sysdeps/unix/sysv/linux/m32r/socket.S: New file ++ * sysdeps/unix/sysv/linux/m32r/sys/cachectl.h: New file ++ * sysdeps/unix/sysv/linux/m32r/sys/io.h: New file ++ * sysdeps/unix/sysv/linux/m32r/sys/tas.h: New file ++ * sysdeps/unix/sysv/linux/m32r/sys/ucontext.h: New file ++ * sysdeps/unix/sysv/linux/m32r/sys/user.h: New file ++ * sysdeps/unix/sysv/linux/m32r/syscall.S: New file ++ * sysdeps/unix/sysv/linux/m32r/syscalls.list: New file ++ * sysdeps/unix/sysv/linux/m32r/sysdep.S: New file ++ * sysdeps/unix/sysv/linux/m32r/sysdep.h: New file ++ * sysdeps/unix/sysv/linux/m32r/vfork.S: New file ++ * sysdeps/unix/sysv/linux/m32r/xstat.c: New file +diff --exclude=CVS -upNr ports/sysdeps/m32r/Implies ports/sysdeps/m32r/Implies +--- ports/sysdeps/m32r/Implies 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/Implies 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,3 @@ ++wordsize-32 ++ieee754/flt-32 ++ieee754/dbl-64 +diff --exclude=CVS -upNr ports/sysdeps/m32r/Makefile ports/sysdeps/m32r/Makefile +--- ports/sysdeps/m32r/Makefile 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/Makefile 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,7 @@ ++# m32r/ELF specific definitions. ++ ++# The assembler on m32r needs the -fPIC flag even when it's assembler code. ++#ASFLAGS-.os = -fPIC ++ifeq ($(subdir),gmon) ++sysdep_routines += m32r-mcount ++endif +diff --exclude=CVS -upNr ports/sysdeps/m32r/__longjmp.S ports/sysdeps/m32r/__longjmp.S +--- ports/sysdeps/m32r/__longjmp.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/__longjmp.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,43 @@ ++/* longjmp for M32R. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++#define _SETJMP_H ++#define _ASM ++#include ++ ++/* __longjmp(jmpbuf, val) */ ++ ++ENTRY (__longjmp) ++ ld r8, @r0+ ++ ld r9, @r0+ ++ ld r10, @r0+ ++ ld r11, @r0+ ++ ld r12, @r0+ ++ ld r13, @r0+ ++ ld r2, @r0+ /* lr */ ++ ld r15, @r0 /* sp */ ++ ++ mv r0,r1 ++ bnez r0, 1f /* get the return value in place */ ++ ldi r0, #1 /* can't let setjmp() return zero! */ ++ .fillinsn ++1: ++ jmp r2 ++END (__longjmp) +diff --exclude=CVS -upNr ports/sysdeps/m32r/bits/endian.h ports/sysdeps/m32r/bits/endian.h +--- ports/sysdeps/m32r/bits/endian.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/bits/endian.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,13 @@ ++/* M32R is bi-endian. */ ++ ++#ifndef _ENDIAN_H ++# error "Never use directly; include instead." ++#endif ++ ++#ifdef __LITTLE_ENDIAN__ ++#define __BYTE_ORDER __LITTLE_ENDIAN ++#define __FLOAT_WORD_ORDER __LITTLE_ENDIAN ++#else ++#define __BYTE_ORDER __BIG_ENDIAN ++#define __FLOAT_WORD_ORDER __BIG_ENDIAN ++#endif +diff --exclude=CVS -upNr ports/sysdeps/m32r/bits/huge_val.h ports/sysdeps/m32r/bits/huge_val.h +--- ports/sysdeps/m32r/bits/huge_val.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/bits/huge_val.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,56 @@ ++/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity). ++ Used by and functions for overflow. ++ M32R version. ++ Copyright (C) 1992, 95, 96, 97, 98, 99, 2000, 2004 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 _MATH_H ++# error "Never use directly; include instead." ++#endif ++ ++/* IEEE positive infinity (-HUGE_VAL is negative infinity). */ ++ ++#if __GNUC_PREREQ(3,3) ++# define HUGE_VAL (__builtin_huge_val()) ++#elif __GNUC_PREREQ(2,96) ++# define HUGE_VAL (__extension__ 0x1.0p2047) ++#elif defined __GNUC__ ++ ++# define HUGE_VAL \ ++ (__extension__ \ ++ ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \ ++ { __l: 0x000000007ff00000ULL }).__d) ++ ++#else /* not GCC */ ++ ++# include ++ ++typedef union { unsigned char __c[8]; double __d; } __huge_val_t; ++ ++# if __BYTE_ORDER == __BIG_ENDIAN ++# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0x7f, 0xf0, 0, 0 } ++# endif ++# if __BYTE_ORDER == __LITTLE_ENDIAN ++# define __HUGE_VAL_bytes { 0, 0, 0xf0, 0x7f, 0, 0, 0, 0 } ++# endif ++ ++static __huge_val_t __huge_val = { __HUGE_VAL_bytes }; ++# define HUGE_VAL (__huge_val.__d) ++ ++#endif /* GCC. */ +diff --exclude=CVS -upNr ports/sysdeps/m32r/bits/setjmp.h ports/sysdeps/m32r/bits/setjmp.h +--- ports/sysdeps/m32r/bits/setjmp.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/bits/setjmp.h 2006-05-09 10:22:45.000000000 +0900 +@@ -0,0 +1,57 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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. */ ++ ++/* Define the machine-dependent type `jmp_buf'. M32R version. */ ++#ifndef _BITS_SETJMP_H ++#define _BITS_SETJMP_H 1 ++ ++#if !defined _SETJMP_H && !defined _PTHREAD_H ++# error "Never include directly; use instead." ++#endif ++ ++#ifndef _ASM ++typedef struct ++ { ++ /* Callee-saved registers r8 through r15. */ ++ int __regs[8]; ++ ++ /* Program counter. */ ++ void * __pc; ++ } __jmp_buf[1]; ++#endif ++ ++#if defined __USE_MISC || defined _ASM ++#define JB_R8 0 ++#define JB_R9 1 ++#define JB_R10 2 ++#define JB_R11 3 ++#define JB_R12 4 ++#define JB_FP 5 ++#define JB_LR 6 ++#define JB_SP 7 ++#define JB_PC 8 ++ ++#define JB_SIZE (4 * 9) ++#endif ++ ++/* Test if longjmp to JMPBUF would unwind the frame ++ containing a local variable at ADDRESS. */ ++#define _JMPBUF_UNWINDS(jmpbuf, address) \ ++ ((void *) (address) < (jmpbuf)[0].__regs[JB_SP]) ++ ++#endif /* bits/setjmp.h */ +diff --exclude=CVS -upNr ports/sysdeps/m32r/bsd-_setjmp.S ports/sysdeps/m32r/bsd-_setjmp.S +--- ports/sysdeps/m32r/bsd-_setjmp.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/bsd-_setjmp.S 2006-03-02 11:15:18.000000000 +0900 +@@ -0,0 +1,43 @@ ++/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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. */ ++ ++/* This just does a tail-call to `__sigsetjmp (ARG, 0)'. ++ We cannot do it in C because it must be a tail-call, so frame-unwinding ++ in setjmp doesn't clobber the state restored by longjmp. */ ++ ++#include ++ ++ENTRY (_setjmp) ++#ifdef SHARED ++ mv r2,lr ++ bl.s .+4 ++ ld24 r1,#_GLOBAL_OFFSET_TABLE_ ++ add r1,lr ++ mv lr,r2 ++ ++ ld24 r2,C_SYMBOL_NAME(__sigsetjmp@GOT) ++ add r2,r1 ++ ld r2,@r2 ++#else ++ LDIMM (r2, C_SYMBOL_NAME(__sigsetjmp)) ++#endif ++ ldi r1, #0 /* Pass a second argument of zero. */ ++ jmp r2 ++END (_setjmp) ++libc_hidden_def(_setjmp) +diff --exclude=CVS -upNr ports/sysdeps/m32r/bsd-setjmp.S ports/sysdeps/m32r/bsd-setjmp.S +--- ports/sysdeps/m32r/bsd-setjmp.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/bsd-setjmp.S 2006-03-02 11:15:35.000000000 +0900 +@@ -0,0 +1,42 @@ ++/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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. */ ++ ++/* This just does a tail-call to `__sigsetjmp (ARG, 1)'. ++ We cannot do it in C because it must be a tail-call, so frame-unwinding ++ in setjmp doesn't clobber the state restored by longjmp. */ ++ ++#include ++ ++ENTRY (setjmp) ++#ifdef SHARED ++ mv r2,lr ++ bl.s .+4 ++ ld24 r1,#_GLOBAL_OFFSET_TABLE_ ++ add r1,lr ++ mv lr,r2 ++ ++ ld24 r2,C_SYMBOL_NAME(__sigsetjmp@GOT) ++ add r2,r1 ++ ld r2,@r2 ++#else ++ LDIMM (r2, C_SYMBOL_NAME(__sigsetjmp)) ++#endif ++ ldi r1, #1 /* Pass a second argument of one. */ ++ jmp r2 ++END (setjmp) +diff --exclude=CVS -upNr ports/sysdeps/m32r/configure ports/sysdeps/m32r/configure +--- ports/sysdeps/m32r/configure 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/configure 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,7 @@ ++# This file is generated from configure.in by Autoconf. DO NOT EDIT! ++ ++libc_cv_asm_line_sep='!' ++cat >>confdefs.h <<_ACEOF ++#define ASM_LINE_SEP $libc_cv_asm_line_sep ++_ACEOF ++ +diff --exclude=CVS -upNr ports/sysdeps/m32r/configure.in ports/sysdeps/m32r/configure.in +--- ports/sysdeps/m32r/configure.in 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/configure.in 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,5 @@ ++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. ++ ++dnl M32R uses `;' to start comments and `!' for line separator. ++libc_cv_asm_line_sep='!' ++AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep) +diff --exclude=CVS -upNr ports/sysdeps/m32r/dl-machine.h ports/sysdeps/m32r/dl-machine.h +--- ports/sysdeps/m32r/dl-machine.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/dl-machine.h 2006-03-02 11:28:06.000000000 +0900 +@@ -0,0 +1,814 @@ ++/* Machine-dependent ELF dynamic relocation inline functions. M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef dl_machine_h ++#define dl_machine_h ++ ++/* Only dummy. This doesn't work. */ ++ ++#define ELF_MACHINE_NAME "M32R" ++ ++#include ++ ++#include ++ ++/* Define the M32R_OLD_ABI, if you want to keep compatibility with ++ an old Renesas relocs */ ++#ifdef M32R_OLD_ABI ++#define R_M32R_16_SAMPLE 1 ++#define R_M32R_32_SAMPLE 2 ++#define R_M32R_24_SAMPLE 3 ++#define R_M32R_10_PCREL_SAMPLE 4 ++#define R_M32R_18_PCREL_SAMPLE 5 ++#define R_M32R_26_PCREL_SAMPLE 6 ++#define R_M32R_HI16_ULO_SAMPLE 7 ++#define R_M32R_HI16_SLO_SAMPLE 8 ++#define R_M32R_LO16_SAMPLE 9 ++#define R_M32R_SDA16_SAMPLE 10 ++ ++#define R_M32R_GOT24_SAMPLE 11 /* conflict */ ++#define R_M32R_26_PLTREL_SAMPLE 12 /* conflict */ ++#define R_M32R_GOT16_HI_ULO_SAMPLE 13 ++#define R_M32R_GOT16_HI_SLO_SAMPLE 14 ++#define R_M32R_GOT16_LO_SAMPLE 15 ++#define R_M32R_GOTPC24_SAMPLE 16 ++#define R_M32R_COPY_SAMPLE 17 ++#define R_M32R_GLOB_DAT_SAMPLE 18 ++#define R_M32R_JMP_SLOT_SAMPLE 19 ++#define R_M32R_RELATIVE_SAMPLE 20 ++#define R_M32R_GNU_VTINHERIT_SAMPLE 21 ++#define R_M32R_GNU_VTENTRY_SAMPLE 22 ++#endif /* M32R_OLD_ABI */ ++ ++/* Return nonzero iff ELF header is compatible with the running host. */ ++static inline int __attribute__ ((unused)) ++elf_machine_matches_host (const Elf32_Ehdr *ehdr) ++{ ++ return (ehdr->e_machine == EM_M32R); ++} ++ ++ ++/* Return the link-time address of _DYNAMIC. Conveniently, this is the ++ first element of the GOT. This must be inlined in a function which ++ uses global data. */ ++static inline Elf32_Addr __attribute__ ((unused)) ++elf_machine_dynamic (void) ++{ ++ register Elf32_Addr *got; ++ asm (" bl.s .+4\n" ++ " ld24 %0,#_GLOBAL_OFFSET_TABLE_\n" ++ " add %0,lr" :"=r" (got) : : "lr" ); ++ return *got; ++} ++ ++ ++/* Return the run-time load address of the shared object. */ ++static inline Elf32_Addr __attribute__ ((unused)) ++elf_machine_load_address (void) ++{ ++ Elf32_Addr addr; ++ asm (" ld24 r0,#here\n\t" ++ " add r0,r12\n\t" ++ " ld r0,@r0\n\t" ++ "here: \n\t" ++ " ld24 r1,#_GLOBAL_OFFSET_TABLE_\n\t" ++ " mv r2,r12\n\t" ++ " sub r2,r1\n\t" ++ " sub r2,r0\n\t" ++ " mv %0,r2" ++ : "=r" (addr) : : "r0", "r1", "r2" ); ++ return addr; ++} ++ ++ ++/* Set up the loaded object described by L so its unrelocated PLT ++ entries will jump to the on-demand fixup code in dl-runtime.c. */ ++ ++static inline int __attribute__ ((unused, always_inline)) ++elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) ++{ ++ Elf32_Addr *got; ++ extern void _dl_runtime_resolve (Elf32_Word); ++ extern void _dl_runtime_profile (Elf32_Word); ++ ++ if (l->l_info[DT_JMPREL] && lazy) ++ { ++ /* The GOT entries for functions in the PLT have not yet been filled ++ in. Their initial contents will arrange when called to load an ++ offset into the .rela.plt section and _GLOBAL_OFFSET_TABLE_[1], ++ and then jump to _GLOBAL_OFFSET_TABLE[2]. */ ++ got = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]); ++ got[1] = (Elf32_Addr) l; /* Identify this shared object. */ ++ ++ /* The got[2] entry contains the address of a function which gets ++ called to get the address of a so far unresolved function and ++ jump to it. The profiling extension of the dynamic linker allows ++ to intercept the calls to collect information. In this case we ++ don't store the address in the GOT so that all future calls also ++ end in this function. */ ++ if (profile) ++ { ++ got[2] = (Elf32_Addr) &_dl_runtime_profile; ++ /* Say that we really want profiling and the timers are started. */ ++ GL(dl_profile_map) = l; ++ } ++ else ++ /* This function will get called to fix up the GOT entry indicated by ++ the offset on the stack, and then jump to the resolved address. */ ++ got[2] = (Elf32_Addr) &_dl_runtime_resolve; ++ } ++ return lazy; ++} ++ ++/* This code is used in dl-runtime.c to call the `fixup' function ++ and then redirect to the address it returns. */ ++ ++#define ELF_MACHINE_RUNTIME_FIXUP_ARGS int plt_type ++ ++#ifdef SHARED ++#define FUN_ADDR( func ) "\n\ ++ bl.s .+4 \n\ ++ ld24 r12,#_GLOBAL_OFFSET_TABLE_ \n\ ++ add r12,lr \n\ ++ ld24 r4,#" #func "@GOT \n\ ++ add r4,r12 \n\ ++ ld r4,@r4" ++#else ++#define FUN_ADDR( func ) "\ ++ seth r4,#high( " #func " ) \n\ ++ or3 r4,r4,#low( " #func " )" ++#endif ++ ++#define FGR_SAVE "" ++#define FGR_LOAD "" ++ ++#ifdef M32R_OLD_NEWABI ++#define LOAD_ARGS_FROM_STACK( name ) "\n\ ++ mv r7,lr \n\ ++ ; OLD_PLT to keep compatible mode only \n\ ++ bl.s .+4 \n\ ++ .fillinsn \n\ ++ addi lr,# " #name " -. \n\ ++ beq r6,lr,1f \n\ ++ ; OLT_PLT ABI \n\ ++ pop r4 ; link map address \n\ ++ pop r5 ; reloc offset \n\ ++ .fillinsn \n\ ++1: \n\ ++ mv lr,r7" ++#else ++#define LOAD_ARGS_FROM_STACK( name ) "\n\ ++ ; DELETE FOR NEW ABI pop r4 ; link map address \n\ ++ ; DELETE FOR NEW ABI pop r5 ; reloc offset\n" ++#endif ++ ++#ifndef PROF ++# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ ++ .text \n\ ++ .globl _dl_runtime_resolve \n\ ++ .type _dl_runtime_resolve, @function \n\ ++ \n\ ++ .balign 4 \n\ ++_dl_runtime_resolve: \n\ ++ " LOAD_ARGS_FROM_STACK( _dl_runtime_resolve ) " \n\ ++ push r0 \n\ ++ push r1 \n\ ++ push r2 \n\ ++ push r3 \n\ ++ push r12 \n\ ++ " FGR_SAVE " \n\ ++ push lr \n\ ++ \n\ ++ ; fixup( ELF_MACHINE_RUNTIME_TRAMPOLINE, link_map, reloc_offset ) \n\ ++ ;mv r0,*** ; plt_type (dummy) \n\ ++ \n\ ++ mv r1,r4 ; link map address \n\ ++ mv r2,r5 ; reloc offset \n\ ++ \n\ ++ " FUN_ADDR( fixup ) " \n\ ++ \n\ ++ jl r4 ; Call resolver. \n\ ++ mv r4,r0 ; value \n\ ++ \n\ ++ pop lr ; Get register content back. \n\ ++ " FGR_LOAD " \n\ ++ pop r12 \n\ ++ pop r3 \n\ ++ pop r2 \n\ ++ pop r1 \n\ ++ pop r0 \n\ ++ \n\ ++ jmp r4 ; Jump to function address. \n\ ++ \n\ ++ .balign 4 \n\ ++ .size _dl_runtime_resolve, .-_dl_runtime_resolve \n\ ++ \n\ ++ .globl _dl_runtime_profile \n\ ++ .type _dl_runtime_profile, @function \n\ ++ \n\ ++ .balign 4 \n\ ++_dl_runtime_profile: \n\ ++ " LOAD_ARGS_FROM_STACK( _dl_runtime_profile ) " \n\ ++ push r0 \n\ ++ push r1 \n\ ++ push r2 \n\ ++ push r3 \n\ ++ push r12 \n\ ++ " FGR_SAVE " \n\ ++ push lr \n\ ++ \n\ ++ ; profile_fixup( ELF_MACHINE_RUNTIME_TRAMPOLINE, link_map, reloc_offset ) \n\ ++ ;mv r0,*** ; plt_type (dummy) \n\ ++ mv r1,r4 ; link map address \n\ ++ mv r2,r5 ; reloc offset \n\ ++ \n\ ++ " FUN_ADDR( profile_fixup ) " \n\ ++ \n\ ++ jl r4 ; Call resolver. \n\ ++ mv r4,r0 ; value \n\ ++ \n\ ++ pop lr ; Get register content back. \n\ ++ " FGR_LOAD " \n\ ++ pop r12 \n\ ++ pop r3 \n\ ++ pop r2 \n\ ++ pop r1 \n\ ++ pop r0 \n\ ++ \n\ ++ jmp r4 ; Jump to function address. \n\ ++ \n\ ++ .balign 4 \n\ ++ .size _dl_runtime_profile, .-_dl_runtime_profile \n\ ++ .previous \n\ ++"); ++#else ++# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ ++ .text \n\ ++ .globl _dl_runtime_resolve \n\ ++ .globl _dl_runtime_profile \n\ ++ .type _dl_runtime_resolve, @function \n\ ++ .type _dl_runtime_profile, @function \n\ ++ \n\ ++ .balign 4 \n\ ++_dl_runtime_resolve: \n\ ++_dl_runtime_profile: \n\ ++ " LOAD_ARGS_FROM_STACK( _dl_runtime_resolve ) " \n\ ++ push r0 \n\ ++ push r1 \n\ ++ push r2 \n\ ++ push r3 \n\ ++ push r12 \n\ ++ " FGR_SAVE " \n\ ++ push lr \n\ ++ \n\ ++ ; fixup( ELF_MACHINE_RUNTIME_TRAMPOLINE, link_map, reloc_offset ) \n\ ++ ;mv r0,*** ; plt_type (dummy) \n\ ++ mv r1,r4 ; link map address \n\ ++ mv r2,r5 ; reloc offset \n\ ++ \n\ ++ " FUN_ADDR( fixup ) " \n\ ++ \n\ ++ jl r4 ; Call resolver. \n\ ++ mv r4,r0 ; value \n\ ++ \n\ ++ pop lr ; Get register content back. \n\ ++ " FGR_LOAD " \n\ ++ pop r12 \n\ ++ pop r3 \n\ ++ pop r2 \n\ ++ pop r1 \n\ ++ pop r0 \n\ ++ \n\ ++ jmp r4 ; Jump to function address. \n\ ++ \n\ ++ .balign 4 \n\ ++ .size _dl_runtime_resolve, .-_dl_runtime_resolve \n\ ++ .size _dl_runtime_profile, .-_dl_runtime_profile \n\ ++ .previous \n\ ++"); ++#endif ++ ++/* Mask identifying addresses reserved for the user program, ++ where the dynamic linker should not map anything. */ ++#define ELF_MACHINE_USER_ADDRESS_MASK 0x80000000UL ++ ++/* Initial entry point code for the dynamic linker. ++ The C function `_dl_start' is the real entry point; ++ its return value is the user program's entry point. */ ++ ++#define RTLD_START asm ("\ ++.text\n\ ++.globl _start\n\ ++.globl _dl_start_user\n\ ++_start:\n\ ++ mv r0,r15\n\ ++ bl _dl_start\n\ ++_dl_start_user:\n\ ++ ; Save the user entry point address in r8.\n\ ++ mv r8,r0\n\ ++ ; Point r12 at the GOT.\n\ ++ bl.s .+4\n\ ++ ld24 r12,#_GLOBAL_OFFSET_TABLE_\n\ ++ add r12,lr\n\ ++ ; Store the highest stack address\n\ ++ ld24 r0,#__libc_stack_end@GOT ; __libc_stack_end@GOT \n\ ++ add r0,r12\n\ ++ ld r0,@r0\n\ ++ st r15,@r0\n\ ++ ; See if we were run as a command with the executable file\n\ ++ ; name as an extra leading argument.\n\ ++ ld24 r0,#_dl_skip_args@GOT ; _dl_skip_args@GOT \n\ ++ add r0,r12\n\ ++ ld r0,@r0\n\ ++ ld r0,@r0\n\ ++ ; Get the original argument count.\n\ ++ ld r1,@r15\n\ ++ ; Subtract _dl_skip_args from it.\n\ ++ sub r1,r0\n\ ++ ; Adjust the stack pointer to skip _dl_skip_args words.\n\ ++ slli r0,#2\n\ ++ add r15,r0\n\ ++ ; Store back the modified argument count.\n\ ++ st r1,@r15\n\ ++ ; Compute argv address and envp.\n\ ++ mv r2,r15\n\ ++ addi r2,#4\n\ ++ mv r3,r1\n\ ++ addi r3,#1\n\ ++ slli r3,#2\n\ ++ add r3,r2\n\ ++ ld24 r0,#_rtld_local@GOT\n\ ++ add r0,r12\n\ ++ ld r0,@r0\n\ ++ ld r0,@r0\n\ ++ ; Call _dl_init.\n\ ++ bl _dl_init@PLT ; _dl_init@PLT \n\ ++ .fillinsn\n\ ++1: ; Pass our finalizer function to the user in r4, as per ELF ABI.\n\ ++ ld24 r0,#_dl_fini@GOT ; _dl_fini@GOT \n\ ++ add r0,r12\n\ ++ ld r0,@r0\n\ ++ ; Jump to the user's entry point.\n\ ++ jmp r8\n\ ++.previous\n\ ++"); ++ ++/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so ++ PLT entries should not be allowed to define the value. ++ ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one ++ of the main executable's symbols, as for a COPY reloc. */ ++#ifdef M32R_OLD_ABI ++/* for oldtype relocation compatibility */ ++#define elf_machine_type_class(type) \ ++ ((((type) == R_M32R_JMP_SLOT || (type) == R_M32R_JMP_SLOT_SAMPLE) * ELF_RTYPE_CLASS_PLT) \ ++ | (((type) == R_M32R_COPY || (type) == R_M32R_COPY_SAMPLE) * ELF_RTYPE_CLASS_COPY)) ++#else ++#define elf_machine_type_class(type) \ ++ ((((type) == R_M32R_JMP_SLOT) * ELF_RTYPE_CLASS_PLT) \ ++ | (((type) == R_M32R_COPY) * ELF_RTYPE_CLASS_COPY)) ++#endif ++ ++/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ ++#ifdef M32R_OLD_ABI ++/* for oldtype relocation compatibility */ ++#define ELF_MACHINE_JMP_SLOT \ ++ R_M32R_JMP_SLOT || ELFW(R_TYPE)(reloc->r_info) == R_M32R_JMP_SLOT_SAMPLE ++#else ++#define ELF_MACHINE_JMP_SLOT R_M32R_JMP_SLOT ++#endif ++ ++/* M32R never uses Elf32_Rel relocations. */ ++#define ELF_MACHINE_NO_REL 1 ++ ++/* We define an initialization functions. This is called very early in ++ _dl_sysdep_start. */ ++#define DL_PLATFORM_INIT dl_platform_init () ++ ++static inline void __attribute__ ((unused)) ++dl_platform_init (void) ++{ ++ if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0') ++ /* Avoid an empty string which would disturb us. */ ++ GLRO(dl_platform) = NULL; ++} ++ ++static inline Elf32_Addr ++elf_machine_fixup_plt (struct link_map *map, lookup_t t, ++ const Elf32_Rela *reloc, ++ Elf32_Addr *reloc_addr, Elf32_Addr value) ++{ ++ return *reloc_addr = value; ++} ++ ++/* Return the final value of a plt relocation. */ ++static inline Elf32_Addr ++elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc, ++ Elf32_Addr value) ++{ ++ return value + reloc->r_addend; ++} ++ ++#endif /* !dl_machine_h */ ++ ++#ifdef RESOLVE ++ ++extern char **_dl_argv; ++ ++/* Perform the relocation specified by RELOC and SYM (which is fully resolved). ++ MAP is the object containing the reloc. */ ++ ++auto inline void ++__attribute ((always_inline)) ++elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, ++ const Elf32_Sym *sym, const struct r_found_version *version, ++ void *const reloc_addr_arg) ++{ ++ Elf32_Addr *const reloc_addr = reloc_addr_arg; ++ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); ++ Elf32_Addr value; ++ ++#define COPY_UNALIGNED_WORD(swp, twp, align) \ ++ { \ ++ void *__s = (swp), *__t = (twp); \ ++ unsigned char *__s1 = __s, *__t1 = __t; \ ++ unsigned short *__s2 = __s, *__t2 = __t; \ ++ unsigned long *__s4 = __s, *__t4 = __t; \ ++ switch ((align)) \ ++ { \ ++ case 0: \ ++ *__t4 = *__s4; \ ++ break; \ ++ case 2: \ ++ *__t2++ = *__s2++; \ ++ *__t2 = *__s2; \ ++ break; \ ++ default: \ ++ *__t1++ = *__s1++; \ ++ *__t1++ = *__s1++; \ ++ *__t1++ = *__s1++; \ ++ *__t1 = *__s1; \ ++ break; \ ++ } \ ++ } ++#define COPY_UNALIGNED_HWORD(swp, twp, align) \ ++ { \ ++ void *__s = (swp), *__t = (twp); \ ++ unsigned char *__s1 = __s, *__t1 = __t; \ ++ unsigned short *__s2 = __s, *__t2 = __t; \ ++ switch ((align)) \ ++ { \ ++ case 0: \ ++ *__t2 = *__s2; \ ++ break; \ ++ default: \ ++ *__t1++ = *__s1++; \ ++ *__t1 = *__s1; \ ++ break; \ ++ } \ ++ } ++ ++#ifdef M32R_OLD_ABI ++/* for oldtype relocation compatibility */ ++ if (__builtin_expect (r_type == R_M32R_RELATIVE || r_type == R_M32R_RELATIVE_SAMPLE, 0)) ++#else ++ if (__builtin_expect (r_type == R_M32R_RELATIVE, 0)) ++#endif ++ { ++#ifndef RTLD_BOOTSTRAP ++ if (map != &GL(dl_rtld_map)) /* Already done in rtld itself. */ ++#endif ++ { ++ if (reloc->r_addend) ++ value = map->l_addr + reloc->r_addend; ++ else ++ { ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &value, ++ (int) reloc_addr_arg & 3); ++ value += map->l_addr; ++ } ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ } ++ } ++#ifndef RTLD_BOOTSTRAP ++ else if (__builtin_expect (r_type == R_M32R_NONE, 0)) ++ return; ++#endif ++ else ++ { ++ const Elf32_Sym *const refsym = sym; ++#ifndef RTLD_BOOTSTRAP ++ Elf32_Addr tmp_value; ++#endif ++ value = RESOLVE (&sym, version, r_type); ++ if (sym) ++ value += sym->st_value; ++ value += reloc->r_addend; ++ ++ switch (r_type) ++ { ++#ifdef M32R_OLD_ABI ++ case R_M32R_COPY_SAMPLE: ++#endif ++ case R_M32R_COPY: ++ if (sym == NULL) ++ /* This can happen in trace mode if an object could not be ++ found. */ ++ break; ++ if (sym->st_size > refsym->st_size ++ || (sym->st_size < refsym->st_size && GLRO(dl_verbose))) ++ { ++ const char *strtab; ++ ++ strtab = (const char *) D_PTR (map, l_info[DT_STRTAB]); ++ _dl_error_printf ("\ ++%s: Symbol `%s' has different size in shared object, consider re-linking\n", ++ _dl_argv[0] ?: "", ++ strtab + refsym->st_name); ++ } ++ memcpy (reloc_addr, (void *) value, MIN (sym->st_size, ++ refsym->st_size)); ++ break; ++#ifdef M32R_OLD_ABI ++ case R_M32R_GLOB_DAT_SAMPLE: ++#endif ++ case R_M32R_GLOB_DAT: ++#if 0 /* 20021129 1 -> 0 */ ++ case R_M32R_32: ++ *reloc_addr = value; ++ break; ++#endif /* 20021129 1 -> 0 */ ++#ifdef M32R_OLD_ABI ++ case R_M32R_JMP_SLOT_SAMPLE: ++#endif ++ case R_M32R_JMP_SLOT: ++ elf_machine_fixup_plt(map, 0, reloc, reloc_addr, value); ++ break; ++#if 1 /* 20021129 0 -> 1 */ ++#ifdef M32R_OLD_ABI ++ case R_M32R_32_SAMPLE: ++#endif ++ case R_M32R_32_RELA: ++#ifndef RTLD_BOOTSTRAP ++#ifdef M32R_OLD_ABI ++ case R_M32R_24_SAMPLE: ++ case R_M32R_16_SAMPLE: ++ case R_M32R_HI16_ULO_SAMPLE: ++ case R_M32R_HI16_SLO_SAMPLE: ++ case R_M32R_LO16_SAMPLE: ++ case R_M32R_SDA16_SAMPLE: ++#endif ++ case R_M32R_24_RELA: ++ case R_M32R_16_RELA: ++ case R_M32R_HI16_ULO_RELA: ++ case R_M32R_HI16_SLO_RELA: ++ case R_M32R_LO16_RELA: ++ case R_M32R_SDA16_RELA: ++#endif ++ case R_M32R_REL32: ++ { ++#ifndef RTLD_BOOTSTRAP ++ /* This is defined in rtld.c, but nowhere in the static ++ libc.a; make the reference weak so static programs can ++ still link. This declaration cannot be done when ++ compiling rtld.c (i.e. #ifdef RTLD_BOOTSTRAP) because ++ rtld.c contains the common defn for _dl_rtld_map, which ++ is incompatible with a weak decl in the same file. */ ++# ifndef SHARED ++ weak_extern (GL(dl_rtld_map)); ++# endif ++ if (map == &GL(dl_rtld_map)) ++ /* Undo the relocation done here during bootstrapping. ++ Now we will relocate it anew, possibly using a ++ binding found in the user program or a loaded library ++ rather than the dynamic linker's built-in definitions ++ used while loading those libraries. */ ++ value -= map->l_addr + refsym->st_value + reloc->r_addend; ++#endif ++#ifdef M32R_OLD_ABI ++ if (r_type == R_M32R_32_SAMPLE ++ || r_type == R_M32R_32_RELA) ++#else ++ if (r_type == R_M32R_32_RELA) ++#endif ++ { ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ } ++#ifndef RTLD_BOOTSTRAP ++#ifdef M32R_OLD_ABI ++ else if (r_type == R_M32R_16_SAMPLE ++ || r_type == R_M32R_16_RELA) ++#else ++ else if (r_type == R_M32R_16_RELA) ++#endif ++ { ++ COPY_UNALIGNED_HWORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ } ++ else if (r_type == R_M32R_REL32) ++ { ++ value = (value - (Elf32_Addr) reloc_addr); ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ } ++ else ++ { ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &tmp_value, ++ (int) reloc_addr_arg & 3); ++ switch (r_type) ++ { ++#ifdef M32R_OLD_ABI ++ case R_M32R_24_SAMPLE: ++ if (value & 0xff000000) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_24 relocation overflow"); ++ } ++ value = (tmp_value & ~0xffffff) | (value & 0xffffff); ++ break; ++#endif ++ case R_M32R_24_RELA: ++ if (value & 0xff000000) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_24_RELA relocation overflow"); ++ } ++ value = (tmp_value & ~0xffffff) | (value & 0xffffff); ++ break; ++#ifdef M32R_OLD_ABI ++ case R_M32R_HI16_ULO_SAMPLE: ++#endif ++ case R_M32R_HI16_ULO_RELA: ++ value = (tmp_value & ~0xffff) | ((value >>16) & 0xffff); ++ break; ++#ifdef M32R_OLD_ABI ++ case R_M32R_HI16_SLO_SAMPLE: ++#endif ++ case R_M32R_HI16_SLO_RELA: ++ if (value & 0x8000) ++ value += 0x10000; ++ value = (tmp_value & ~0xffff) | ((value >>16) & 0xffff); ++ break; ++#ifdef M32R_OLD_ABI ++ case R_M32R_LO16_SAMPLE: ++ case R_M32R_SDA16_SAMPLE: ++#endif ++ case R_M32R_LO16_RELA: ++ case R_M32R_SDA16_RELA: ++ value = (tmp_value & ~0xffff) | (value & 0xffff); ++ break; ++ } ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ } ++#endif ++ break; ++ } ++#ifndef RTLD_BOOTSTRAP ++#ifdef M32R_OLD_ABI ++ case R_M32R_26_PCREL_SAMPLE: ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &tmp_value, ++ (int) reloc_addr_arg & 3); ++ value += (signed long)(((tmp_value & 0xffffff) ^ 0x800000) - 0x800000) << 2; ++ value = value - (Elf32_Addr) reloc_addr; ++ if ((signed long)value < -0x2000000 || 0x1fffffc < (signed long)value) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_26_PCREL relocation overflow"); ++ } ++ value = (tmp_value & ~0xffffff) | ((value >> 2) & 0xffffff); ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, (int) reloc_addr_arg & 3); ++ break; ++#endif ++ case R_M32R_26_PCREL_RELA: ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &tmp_value, ++ (int) reloc_addr_arg & 3); ++ value = value - (Elf32_Addr) reloc_addr; ++ if ((signed long)value < -0x2000000 || 0x1fffffc < (signed long)value) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_26_PCREL_RELA relocation overflow"); ++ } ++ value = (tmp_value & ~0xffffff) | ((value >> 2) & 0xffffff); ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ break; ++#ifdef M32R_OLD_ABI ++ case R_M32R_18_PCREL_SAMPLE: ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &tmp_value, ++ (int) reloc_addr_arg & 3); ++ value += (signed long)((tmp_value & 0xffff) ^ 0x8000) - 0x8000) << 2; ++ value = value - (Elf32_Addr) reloc_addr; ++ if ((signed long)value < -0x20000 || 0x1fffc < (signed long)value) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_18_PCREL relocation overflow"); ++ } ++ value = (tmp_value & ~0xffff) | ((value >> 2) & 0xffff); ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ break; ++#endif ++ case R_M32R_18_PCREL_RELA: ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &tmp_value, ++ (int) reloc_addr_arg & 3); ++ value = value - (Elf32_Addr) reloc_addr; ++ if ((signed long)value < -0x20000 || 0x1fffc < (signed long)value) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_18_PCREL_RELA relocation overflow"); ++ } ++ value = (tmp_value & ~0xffff) | ((value >> 2) & 0xffff); ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ break; ++#endif ++#ifdef M32R_OLD_ABI ++ case R_M32R_10_PCREL_SAMPLE: ++#else ++ case R_M32R_10_PCREL_RELA: ++#endif ++ { ++ unsigned short tmp_hvalue; ++ COPY_UNALIGNED_HWORD (reloc_addr_arg, &tmp_hvalue, ++ (int) reloc_addr_arg & 3); ++ value = value - (Elf32_Addr) reloc_addr; ++ if ((signed long)value < -0x200 || 0x1fc < (signed long)value) ++ { ++#ifdef M32R_OLD_ABI ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_10_PCREL relocation overflow"); ++#else ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_10_PCREL_RELA relocation overflow"); ++#endif ++ } ++ tmp_hvalue = (tmp_hvalue & ~0xff) | ((value >> 2) & 0xff); ++ COPY_UNALIGNED_HWORD (&tmp_hvalue, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ break; ++ } ++#endif /* 20021129 0 -> 1 */ ++ default: ++ _dl_reloc_bad_type (map, r_type, 0); ++ break; ++ } ++ } ++} ++ ++auto inline void ++__attribute ((always_inline)) ++elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, ++ void *const reloc_addr_arg) ++{ ++ Elf32_Addr value; ++ ++ if (reloc->r_addend) ++ value = l_addr + reloc->r_addend; ++ else ++ { ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &value, (int) reloc_addr_arg & 3); ++ value += l_addr; ++ } ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, (int) reloc_addr_arg & 3); ++ ++#undef COPY_UNALIGNED_WORD ++#undef COPY_UNALIGNED_HWORD ++} ++ ++auto inline void ++__attribute ((always_inline)) ++elf_machine_lazy_rel (struct link_map *map, ++ Elf32_Addr l_addr, const Elf32_Rela *reloc) ++{ ++ Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset); ++ /* Check for unexpected PLT reloc type. */ ++#ifdef M32R_OLD_ABI ++ if (ELF32_R_TYPE (reloc->r_info) == R_M32R_JMP_SLOT ++ || ELF32_R_TYPE (reloc->r_info) == R_M32R_JMP_SLOT_SAMPLE) ++#else ++ if (ELF32_R_TYPE (reloc->r_info) == R_M32R_JMP_SLOT) ++#endif ++ *reloc_addr += l_addr; ++ else ++ _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1); ++} ++ ++#endif /* RESOLVE */ +diff --exclude=CVS -upNr ports/sysdeps/m32r/elf/start.S ports/sysdeps/m32r/elf/start.S +--- ports/sysdeps/m32r/elf/start.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/elf/start.S 2006-03-02 11:31:52.000000000 +0900 +@@ -0,0 +1,109 @@ ++/* Startup code for M32R & ELF. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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. */ ++ ++/* This is the canonical entry point, usually the first thing in the text ++ segment. ++ ++ Note that the code in the .init section has already been run. ++ This includes _init and _libc_init ++ ++ ++ At this entry point, most registers' values are unspecified, except: ++ ++ r0 Contains a function pointer to be registered with `atexit'. ++ This is how the dynamic linker arranges to have DT_FINI ++ functions called for shared libraries that have been loaded ++ before this code runs. ++ ++ sp The stack contains the arguments and environment: ++ @(0,sp) argc ++ @(4,sp) argv[0] ++ ... ++ @((4*argc),sp) NULL ++ @((4*(argc+1)),sp) envp[0] ++ ... ++ NULL ++*/ ++ ++#include "sysdep.h" ++#include "bp-sym.h" ++ ++ .text ++ .globl _start ++_start: ++ /* Clear the frame pointer since this is the outermost frame. */ ++ ldi r13, #0 ++#ifdef SHARED ++ bl.s .+4 ++ ld24 r12, #_GLOBAL_OFFSET_TABLE_ ++ add r12, lr ++#endif ++ ++ /* Pop argc off the stack and save a pointer to argv */ ++ pop r1 ++ mv r2, sp ++ ++ /* Push the last arguments to main() onto the stack */ ++ push r0 ++#ifdef SHARED ++ ld24 r0, #__libc_csu_fini@GOT ++ add r0,r12 ++ ld r0,@r0 ++#else ++ LDIMM (r0, __libc_csu_fini) ++#endif ++ push r0 ++ ++ /* Set up the other arguments for main() that go in registers */ ++#ifdef SHARED ++ ld24 r0,#BP_SYM (main@GOT) ++ add r0,r12 ++ ld r0,@r0 ++ ld24 r3, #__libc_csu_init@GOT ++ add r3,r12 ++ ld r3,@r3 ++#else ++ LDIMM (r0, BP_SYM (main)) ++ LDIMM (r3, __libc_csu_init) ++#endif ++ ++ /* __libc_start_main (main, argc, argv, init, fini, rtld_fini) */ ++ ++ /* Let the libc call main and exit with its return code. */ ++#ifdef SHARED ++ bl BP_SYM (__libc_start_main@PLT) ++#else ++ LDIMM (r4, BP_SYM (__libc_start_main)) ++ jl r4 ++#endif ++ /* should never get here....*/ ++#ifdef SHARED ++ bl abort@PLT ++#else ++ LDIMM (r4, abort) ++ jl r4 ++#endif ++ ++/* Define a symbol for the first piece of initialized data. */ ++ .data ++ .globl __data_start ++__data_start: ++ .long 0 ++ .weak data_start ++ data_start = __data_start +diff --exclude=CVS -upNr ports/sysdeps/m32r/gccframe.h ports/sysdeps/m32r/gccframe.h +--- ports/sysdeps/m32r/gccframe.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/gccframe.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,22 @@ ++/* Definition of object in frame unwind info. m32r version. ++ Copyright (C) 2001 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define DWARF_FRAME_REGISTERS 20 ++ ++#include +diff --exclude=CVS -upNr ports/sysdeps/m32r/gmp-mparam.h ports/sysdeps/m32r/gmp-mparam.h +--- ports/sysdeps/m32r/gmp-mparam.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/gmp-mparam.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,30 @@ ++/* gmp-mparam.h -- Compiler/machine parameter header file. ++ ++Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ ++This file is part of the GNU MP Library. ++ ++The GNU MP Library is free software; you can redistribute it and/or modify ++it under the terms of the GNU 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 MP Library is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public ++License for more details. ++ ++You should have received a copy of the GNU Library General Public License ++along with the GNU MP Library; see the file COPYING.LIB. If not, write to ++the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ++MA 02111-1307, USA. */ ++ ++#define BITS_PER_MP_LIMB 32 ++#define BYTES_PER_MP_LIMB 4 ++#define BITS_PER_LONGINT 32 ++#define BITS_PER_INT 32 ++#define BITS_PER_SHORTINT 16 ++#define BITS_PER_CHAR 8 ++ ++#define IEEE_DOUBLE_BIG_ENDIAN 0 ++#define IEEE_DOUBLE_MIXED_ENDIAN 1 +diff --exclude=CVS -upNr ports/sysdeps/m32r/linuxthreads/pspinlock.c ports/sysdeps/m32r/linuxthreads/pspinlock.c +--- ports/sysdeps/m32r/linuxthreads/pspinlock.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/linuxthreads/pspinlock.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,70 @@ ++/* POSIX spinlock implementation. M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++#include "internals.h" ++ ++int ++__pthread_spin_lock (pthread_spinlock_t *lock) ++{ ++ while (INTERNAL_SYSCALL (tas, , 1, lock)); ++ return 0; ++} ++weak_alias (__pthread_spin_lock, pthread_spin_lock) ++ ++ ++int ++__pthread_spin_trylock (pthread_spinlock_t *lock) ++{ ++ unsigned int val; ++ ++ if ((val = *lock) == 0) ++ val = INTERNAL_SYSCALL (tas, , 1, lock); ++ return (val > 0 ? EBUSY : 0); ++} ++weak_alias (__pthread_spin_trylock, pthread_spin_trylock) ++ ++ ++int ++__pthread_spin_unlock (pthread_spinlock_t *lock) ++{ ++ return *lock = 0; ++} ++weak_alias (__pthread_spin_unlock, pthread_spin_unlock) ++ ++ ++int ++__pthread_spin_init (pthread_spinlock_t *lock, int pshared) ++{ ++ /* We can ignore the `pshared' parameter. Since we are busy-waiting ++ all processes which can access the memory location `lock' points ++ to can use the spinlock. */ ++ return *lock = 0; ++} ++weak_alias (__pthread_spin_init, pthread_spin_init) ++ ++ ++int ++__pthread_spin_destroy (pthread_spinlock_t *lock) ++{ ++ /* Nothing to do. */ ++ return 0; ++} ++weak_alias (__pthread_spin_destroy, pthread_spin_destroy) +diff --exclude=CVS -upNr ports/sysdeps/m32r/linuxthreads/pt-machine.h ports/sysdeps/m32r/linuxthreads/pt-machine.h +--- ports/sysdeps/m32r/linuxthreads/pt-machine.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/linuxthreads/pt-machine.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,55 @@ ++/* Machine-dependent pthreads configuration and inline functions. ++ M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _PT_MACHINE_H ++#define _PT_MACHINE_H 1 ++ ++#include ++#include ++ ++#ifndef __ASSEMBLER__ ++#ifndef PT_EI ++# define PT_EI extern inline ++#endif ++ ++extern long int testandset (int *spinlock); ++extern int __compare_and_swap (long int *p, long int oldval, long int newval); ++ ++/* Spinlock implementation; required. */ ++PT_EI long int ++testandset (int *spinlock) ++{ ++ int ret; ++ ++ ret = INLINE_SYSCALL (tas, 1, spinlock); ++ return ret; ++} ++ ++#define lock_held(p) *(p) ++ ++/* Get some notion of the current stack. Need not be exactly the top ++ of the stack, just something somewhere in the current frame. */ ++#define CURRENT_STACK_FRAME stack_pointer ++register char * stack_pointer __asm__ ("r15"); ++ ++#endif /* __ASSEMBLER__ */ ++ ++#endif /* pt-machine.h */ ++ +diff --exclude=CVS -upNr ports/sysdeps/m32r/m32r-mcount.S ports/sysdeps/m32r/m32r-mcount.S +--- ports/sysdeps/m32r/m32r-mcount.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/m32r-mcount.S 2006-03-02 11:17:40.000000000 +0900 +@@ -0,0 +1,67 @@ ++/* m32r-specific implemetation of profiling support. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU 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 ++ ++ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(_mcount) ++ ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), function) ++ .balign 4 ++C_LABEL(_mcount) ++ /* Save the caller-clobbered registers. */ ++ push r0 ++ push r1 ++ push r2 ++ push r3 ++ push r4 ++ push r5 ++ push r6 ++ push r7 ++ push lr ++ ld r0,@(36,sp) ++ mv r1,lr ++ ++#ifdef __PIC__ ++ push r12 ++ bl.s .+4 ++ ld24 r12,#_GLOBAL_OFFSET_TABLE_ ++ add r12,lr ++ ld24 lr,#__mcount_internal@GOT ++ add lr,r12 ++ ld lr,@(lr) ++ jl lr ++ pop r12 ++#else ++ bl __mcount_internal ++#endif ++ /* Pop the saved registers. Please note that `mcount' has no ++ return value. */ ++ pop lr ++ pop r7 ++ pop r6 ++ pop r5 ++ pop r4 ++ pop r3 ++ pop r2 ++ pop r1 ++ pop r0 ++ ret ++ ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount)) ++ ++#undef mcount ++weak_alias(_mcount, mcount) +diff --exclude=CVS -upNr ports/sysdeps/m32r/machine-gmon.h ports/sysdeps/m32r/machine-gmon.h +--- ports/sysdeps/m32r/machine-gmon.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/machine-gmon.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,34 @@ ++/* Machine-dependent definitions for profiling support. M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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. */ ++ ++/* NOTYET */ ++ ++/* We must not pollute the global namespace. */ ++#define mcount_internal __mcount_internal ++ ++void mcount_internal (u_long frompc, u_long selfpc); ++ ++#define _MCOUNT_DECL(frompc, selfpc) \ ++void mcount_internal (u_long frompc, u_long selfpc) ++ ++ ++/* Define MCOUNT as empty since we have the implementation in another ++ file. */ ++#define MCOUNT ++ +diff --exclude=CVS -upNr ports/sysdeps/m32r/memcpy.S ports/sysdeps/m32r/memcpy.S +--- ports/sysdeps/m32r/memcpy.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/memcpy.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,62 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++ ++/* ++ * void *memcpy(void *dst, const void *src, size_t n); ++ * No overlap between the memory of DST and of SRC are assumed. ++ * ++ * dst: r0 ++ * src: r1 ++ * n : r2 ++ */ ++ ++ENTRY(memcpy) ++ mv r4, r0 ++ mv r7, r0 ++ or r7, r1 ++ beq r0, r1, end_memcopy ++ beqz r2, end_memcopy ++ ++ and3 r7, r7, #3 ++ bnez r7, byte_copy ++ srl3 r3, r2, #2 ++ and3 r2, r2, #3 ++ beqz r3, byte_copy ++ addi r4, #-4 ++word_copy: ++ ld r7, @r1+ ++ addi r3, #-1 ++ st r7, @+r4 ++ bnez r3, word_copy ++ beqz r2, end_memcopy ++ addi r4, #4 ++byte_copy: ++ ldb r7, @r1 ++ addi r1, #1 ++ addi r2, #-1 ++ stb r7, @r4 ++ addi r4, #1 ++ bnez r2, byte_copy ++end_memcopy: ++ jmp r14 ++ nop ++END(memcpy) ++libc_hidden_builtin_def (memcpy) +diff --exclude=CVS -upNr ports/sysdeps/m32r/memset.S ports/sysdeps/m32r/memset.S +--- ports/sysdeps/m32r/memset.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/memset.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,184 @@ ++/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ++ This file is part of the 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 ++ ++/* void *memset(void *dst, int val, int len); ++ * ++ * dst: r0 ++ * val: r1 ++ * len: r2 ++ * ret: r0 ++ */ ++ ++ .text ++ ++#if defined(__m32r2__) ++ ++ENTRY(memset) ++ mv r4, r0 || cmpz r2 ++ jc r14 ; return if r2=0 ++ cmpui r2, #16 ++ bnc qword_align_check ++ cmpui r2, #4 ++ bc byte_set ++; case len >= 4 ++word_align_check: ++ and3 r3, r4, #3 ++ beqz r3, word_set ++; case no word-align ++ addi r3, #-4 ++ neg r3, r3 ; r3 = -(r3 - 4) ++align_word: ++ stb r1, @r4 || addi r4, #1 ++ addi r2, #-1 || addi r3, #-1 ++ bnez r3, align_word ++ cmpui r2, #4 ++ bc byte_set ++word_set: ++ and3 r1, r1, #0x00ff ; r1: abababab <-- ??????ab ++ sll3 r3, r1, #8 ++ or r1, r3 || addi r4, #-4 ++ sll3 r3, r1, #16 ++ or r1, r3 || addi r2, #-4 ++word_set_loop: ++ st r1, @+r4 || addi r2, #-4 ++ bgtz r2, word_set_loop ++ bnez r2, byte_set_wrap ++ st r1, @+r4 ++ jmp r14 ++ ++qword_align_check: ++ and3 r3, r4, #15 ++ bnez r3, word_align_check ++qword_set: ++ and3 r1, r1, #0x00ff ; r1: abababab <-- ??????ab ++ sll3 r3, r1, #8 ++ or r1, r3 || addi r4, #-4 ++ sll3 r3, r1, #16 ++ or r1, r3 || ldi r5, #16 ++qword_set_loop: ++ ld r3, @(4,r4) ; cache line allocate ++ st r1, @+r4 || addi r2, #-16 ++ st r1, @+r4 || cmpu r2, r5 ++ st r1, @+r4 ++ st r1, @+r4 ++ bnc qword_set_loop || cmpz r2 ++ jc r14 ++set_remainder: ++ cmpui r2, #4 ++ bc byte_set_wrap1 ++ addi r2, #-4 ++ bra word_set_loop ++ ++byte_set_wrap: ++ addi r2, #4 ++ cmpz r2 ++ jc r14 ; return if r2=0 ++byte_set_wrap1: ++ addi r4, #4 ++byte_set: ++ addi r2, #-1 || stb r1, @r4+ ++ bnez r2, byte_set ++end_memset: ++ jmp r14 ++END(memset) ++ ++#else ++ ++ENTRY(memset) ++ mv r4, r0 ++ beqz r2, end_memset ++ cmpui r2, #16 ++ bnc qword_align_check ++ cmpui r2, #4 ++ bc byte_set ++; case len >= 4 ++word_align_check: ++ and3 r3, r4, #3 ++ beqz r3, word_set ++; case no word-align ++ addi r3, #-4 ++ neg r3, r3 ; r3 = -(r3 - 4) ++align_word: ++ stb r1, @r4 ++ addi r4, #1 ++ addi r2, #-1 ++ addi r3, #-1 ++ bnez r3, align_word ++ cmpui r2, #4 ++ bc byte_set ++word_set: ++ and3 r1, r1, #0x00ff ; r1: abababab <-- ??????ab ++ sll3 r3, r1, #8 ++ or r1, r3 ++ sll3 r3, r1, #16 ++ or r1, r3 ++ addi r2, #-4 ++ addi r4, #-4 ++word_set_loop: ++ st r1, @+r4 ++ addi r2, #-4 ++ bgtz r2, word_set_loop ++ bnez r2, byte_set_wrap ++ st r1, @+r4 ++ jmp r14 ++ ++qword_align_check: ++ and3 r3, r4, #15 ++ bnez r3, word_align_check ++qword_set: ++ and3 r1, r1, #0x00ff ; r1: abababab <-- ??????ab ++ sll3 r3, r1, #8 ++ or r1, r3 ++ sll3 r3, r1, #16 ++ or r1, r3 ++ addi r4, #-4 ++qword_set_loop: ++ ld r3, @(4,r4) ; cache line allocate ++ addi r2, #-16 ++ st r1, @+r4 ++ st r1, @+r4 ++ cmpui r2, #16 ++ st r1, @+r4 ++ st r1, @+r4 ++ bnc qword_set_loop ++ bnez r2, set_remainder ++ jmp r14 ++set_remainder: ++ cmpui r2, #4 ++ bc byte_set_wrap1 ++ addi r2, #-4 ++ bra word_set_loop ++ ++byte_set_wrap: ++ addi r2, #4 ++ beqz r2, end_memset ++byte_set_wrap1: ++ addi r4, #4 ++byte_set: ++ addi r2, #-1 ++ stb r1, @r4 ++ addi r4, #1 ++ bnez r2, byte_set ++end_memset: ++ jmp r14 ++END(memset) ++ ++#endif ++libc_hidden_builtin_def (memset) +diff --exclude=CVS -upNr ports/sysdeps/m32r/memusage.h ports/sysdeps/m32r/memusage.h +--- ports/sysdeps/m32r/memusage.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/memusage.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,21 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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. */ ++ ++#define GETSP() ({ register uintptr_t stack_ptr asm ("r15"); stack_ptr; }) ++ ++#include +diff --exclude=CVS -upNr ports/sysdeps/m32r/setjmp.S ports/sysdeps/m32r/setjmp.S +--- ports/sysdeps/m32r/setjmp.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/setjmp.S 2006-03-02 11:18:51.000000000 +0900 +@@ -0,0 +1,53 @@ ++/* setjmp for M32R. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++#define _SETJMP_H ++#define _ASM ++#include ++ ++ENTRY (__sigsetjmp) ++ mv r2, r0 ++ /* Save registers */ ++ st r8, @r0 ++ st r9, @+r0 ++ st r10, @+r0 ++ st r11, @+r0 ++ st r12, @+r0 ++ st r13, @+r0 ++ st r14, @+r0 /* lr */ ++ st r15, @+r0 /* sp */ ++ mv r0, r2 ++ ++ /* Make a tail call to __sigjmp_save; it takes the same args. */ ++#ifdef SHARED ++ mv r2,lr ++ bl.s .+4 ++ ld24 r3,#_GLOBAL_OFFSET_TABLE_ ++ add r3,lr ++ mv lr,r2 ++ ++ ld24 r2,C_SYMBOL_NAME(__sigjmp_save@GOT) ++ add r2,r3 ++ ld r2,@r2 ++#else ++ LDIMM (r2, C_SYMBOL_NAME(__sigjmp_save)) ++#endif ++ jmp r2 ++END (__sigsetjmp) +diff --exclude=CVS -upNr ports/sysdeps/m32r/shlib-versions ports/sysdeps/m32r/shlib-versions +--- ports/sysdeps/m32r/shlib-versions 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/shlib-versions 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,2 @@ ++m32r.*-.*-linux.* DEFAULT GLIBC_2.3 ++m32r.*-.*-linux.* ld=ld-linux.so.2 +diff --exclude=CVS -upNr ports/sysdeps/m32r/stackinfo.h ports/sysdeps/m32r/stackinfo.h +--- ports/sysdeps/m32r/stackinfo.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/stackinfo.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,28 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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. */ ++ ++/* This file contains a bit of information about the stack allocation ++ of the processor. */ ++ ++#ifndef _STACKINFO_H ++#define _STACKINFO_H 1 ++ ++/* On SH the stack grows down. */ ++#define _STACK_GROWS_DOWN 1 ++ ++#endif /* stackinfo.h */ +diff --exclude=CVS -upNr ports/sysdeps/m32r/strlen.S ports/sysdeps/m32r/strlen.S +--- ports/sysdeps/m32r/strlen.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/strlen.S 2006-04-20 09:44:29.000000000 +0900 +@@ -0,0 +1,77 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++ ++/* size_t strlen (const char *s) */ ++ ++ENTRY(strlen) ++ mv r6, r0 ++ ldi r2, #0 ++ and3 r0, r0, #3 ++ bnez r0, strlen_byte ++; ++strlen_word: ++ ld r0, @r6+ ++; ++ seth r5, #high(0x01010101) ++ or3 r5, r5, #low(0x01010101) ++ sll3 r7, r5, #7 ++strlen_word_loop: ++ not r4, r0 ; NOTE: If a null char. exists, return 0. ++ sub r0, r5 ; if ((x - 0x01010101) & ~x & 0x80808080) ++ and r4, r7 ; return 0; ++ and r4, r0 ++ bnez r4, strlen_last_bytes ++ ld r1, @r6+ ++ addi r2, #4 ++; ++ not r4, r1 ; NOTE: If a null char. exists, return 0. ++ sub r1, r5 ; if ((x - 0x01010101) & ~x & 0x80808080) ++ and r4, r7 ; return 0; ++ and r4, r1 ++ bnez r4, strlen_last_bytes ++ ld r0, @r6+ ++ addi r2, #4 ++ bra strlen_word_loop ++; ++strlen_byte: ++ ldb r1, @r6 ++ addi r6, #1 ++ beqz r1, strlen_exit ++ addi r2, #1 ++ bra strlen_byte ++; ++strlen_last_bytes: ++ ldi r0, #4 ++ addi r6, #-4 ++; ++strlen_byte_loop: ++ ldb r1, @r6 ++ addi r6, #1 ++ addi r0, #-1 ++ beqz r1, strlen_exit ++ addi r2, #1 ++ bnez r0, strlen_byte_loop ++; ++strlen_exit: ++ mv r0, r2 ++ jmp r14 ++END(strlen) ++libc_hidden_builtin_def (strlen) +diff --exclude=CVS -upNr ports/sysdeps/m32r/sys/ucontext.h ports/sysdeps/m32r/sys/ucontext.h +--- ports/sysdeps/m32r/sys/ucontext.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/sys/ucontext.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,102 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _SYS_UCONTEXT_H ++#define _SYS_UCONTEXT_H 1 ++ ++#include ++#include ++ ++typedef int greg_t; ++ ++/* Number of general registers. */ ++#define NGREG 16 ++ ++/* Container for all general registers. */ ++typedef greg_t gregset_t[NGREG]; ++ ++/* Number of each register is the `gregset_t' array. */ ++enum ++{ ++ R0 = 0, ++#define R0 R0 ++ R1 = 1, ++#define R1 R1 ++ R2 = 2, ++#define R2 R2 ++ R3 = 3, ++#define R3 R3 ++ R4 = 4, ++#define R4 R4 ++ R5 = 5, ++#define R5 R5 ++ R6 = 6, ++#define R6 R6 ++ R7 = 7, ++#define R7 R7 ++ R8 = 8, ++#define R8 R8 ++ R9 = 9, ++#define R9 R9 ++ R10 = 10, ++#define R10 R10 ++ R11 = 11, ++#define R11 R11 ++ R12 = 12, ++#define R12 R12 ++ R13 = 13, ++#define R13 R13 ++ R14 = 14, ++#define R14 R14 ++ R15 = 15, ++#define R15 R15 ++}; ++ ++#if 0 ++/* FIXME */ ++typedef int freg_t; ++ ++/* Number of FPU registers. */ ++#define NFREG 16 ++ ++/* Structure to describe FPU registers. */ ++typedef freg_t fpregset_t[NFREG]; ++#endif ++ ++/* Context to describe whole processor state. */ ++typedef struct ++ { ++ gregset_t gregs; ++#if 0 ++ fpregset_t fpregs; ++ fpregset_t xfpregs; ++#endif ++ } mcontext_t; ++ ++/* Userlevel context. */ ++typedef struct ucontext ++ { ++ unsigned long int uc_flags; ++ struct ucontext *uc_link; ++ __sigset_t uc_sigmask; ++ stack_t uc_stack; ++ mcontext_t uc_mcontext; ++ long int uc_filler[5]; ++ } ucontext_t; ++ ++#endif /* sys/ucontext.h */ +diff --exclude=CVS -upNr ports/sysdeps/m32r/sysdep.h ports/sysdeps/m32r/sysdep.h +--- ports/sysdeps/m32r/sysdep.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/sysdep.h 2006-03-06 15:12:42.000000000 +0900 +@@ -0,0 +1,92 @@ ++/* Assembler macros for M32R. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++ ++#ifdef __ASSEMBLER__ ++ ++/* Syntactic details of assembler. */ ++ ++#ifdef HAVE_ELF ++ ++#define ALIGNARG(log2) log2 ++/* For ELF we need the `.type' directive to make shared libs work right. */ ++#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,@##typearg ++#define ASM_SIZE_DIRECTIVE(name) .size name,.-name ++ ++#define PLTJMP(_x) _x ++#define GOT(_x) _x ++ ++#else ++ ++#define ALIGNARG(log2) log2 ++#define ASM_TYPE_DIRECTIVE(name,type) /* Nothing is specified. */ ++#define ASM_SIZE_DIRECTIVE(name) /* Nothing is specified. */ ++ ++#define PLTJMP(_x) _x ++#define GOT(_x) _x ++ ++#endif ++ ++/* If compiled for profiling, call `mcount' at the start of each function. */ ++#ifdef PROF ++#ifdef __PIC__ ++#define CALL_MCOUNT \ ++ push r14 ! \ ++ ld24 r14,#mcount@GOT ! \ ++ add r14,r12 ! \ ++ ld r14,@r14 ! \ ++ jl r14 ! \ ++ pop r14 ++#else ++#define CALL_MCOUNT \ ++ push r14 ! \ ++ seth r14,#high(mcount) ! \ ++ or3 r14,r14,#low(mcount) ! \ ++ jl r14 ! \ ++ pop r14 ++#endif ++#else ++#define CALL_MCOUNT /* Do nothing. */ ++#endif ++ ++#undef CALL_MCOUNT /* Do nothing. */ ++#define CALL_MCOUNT /* Do nothing. */ ++ ++/* Define an entry point visible from C. */ ++#define ENTRY(name) \ ++ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name) ! \ ++ ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),function) ! \ ++ .balign 4 ! \ ++ C_LABEL(name) ! \ ++ CALL_MCOUNT ++ ++#undef END ++#define END(name) \ ++ ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(name)) ++ ++#ifdef NO_UNDERSCORES ++/* Since C identifiers are not normally prefixed with an underscore ++ on this system, the asm identifier `syscall_error' intrudes on the ++ C name space. Make sure we use an innocuous name. */ ++#define syscall_error __syscall_error ++#define mcount _mcount ++#endif ++ ++#endif /* __ASSEMBLER__ */ +diff --exclude=CVS -upNr ports/sysdeps/unix/m32r/Makefile ports/sysdeps/unix/m32r/Makefile +--- ports/sysdeps/unix/m32r/Makefile 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/m32r/Makefile 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,4 @@ ++# m32r/ELF specific definitions. ++ ++# The assembler on m32r needs the -fPIC flag even when it's assembler code. ++ASFLAGS-.os = -fPIC +diff --exclude=CVS -upNr ports/sysdeps/unix/m32r/sysdep.S ports/sysdeps/unix/m32r/sysdep.S +--- ports/sysdeps/unix/m32r/sysdep.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/m32r/sysdep.S 2006-03-02 11:39:48.000000000 +0900 +@@ -0,0 +1,84 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++#define _ERRNO_H ++#include ++ ++.globl C_SYMBOL_NAME(errno) ++.globl syscall_error ++ ++#undef syscall_error ++#ifdef NO_UNDERSCORES ++__syscall_error: ++#else ++syscall_error: ++#endif ++#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN ++ /* We translate the system's EWOULDBLOCK error into EAGAIN. ++ The GNU C library always defines EWOULDBLOCK==EAGAIN. ++ EWOULDBLOCK_sys is the original number. */ ++ ldi r1, #EWOULDBLOCK_sys ++ bne r1, r0, skip ++ ldi r0, #EAGAIN ++skip: ++#endif ++ /* Store it in errno... */ ++#ifndef SHARED ++#ifndef _LIBC_REENTRANT ++ LDIMM (r1, C_SYMBOL_NAME(errno)) ++ st r0, @r1 ++#else ++ push r0 ++ push lr ++ LDIMM (r1, C_SYMBOL_NAME(__errno_location)) ++ jl r1 ++ pop lr ++ pop r1 ++ st r1, @r0 ++#endif ++#else ++ push r12 ++ push lr ++ bl.s .+4 ++ ld24 r12,#_GLOBAL_OFFSET_TABLE_ ++ add r12, lr ++#ifndef _LIBC_REENTRANT ++ mv r2, r0 ++ LDIMM (r1, C_SYMBOL_NAME(errno@GOT)) ++ add r1, r12 ++ ld r1, @r1 ++ st r2, @r1 ++#else ++ push r0 ++ LDIMM (r1, C_SYMBOL_NAME(__errno_location@GOT)) ++ add r1, r12 ++ ld r1, @r1 ++ jl r1 ++ pop r1 ++ st r1, @r0 ++#endif ++ pop lr ++ pop r12 ++#endif ++ /* And just kick back a -1. */ ++ ldi r0, #-1 ++ ret ++ ++#undef __syscall_error ++END(__syscall_error) +diff --exclude=CVS -upNr ports/sysdeps/unix/m32r/sysdep.h ports/sysdeps/unix/m32r/sysdep.h +--- ports/sysdeps/unix/m32r/sysdep.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/m32r/sysdep.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,33 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 "../../m32r/sysdep.h" ++ ++#ifdef __ASSEMBLER__ ++ ++#define ret jmp r14 ++ ++/* The m32r move insn is d, s. */ ++#define MOVE(x,y) mv y,x ++ ++#define LDIMM(reg,x) \ ++ seth reg, #high(x) ! \ ++ or3 reg, reg, #low(x) ++ ++#endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/Dist ports/sysdeps/unix/sysv/linux/m32r/Dist +--- ports/sysdeps/unix/sysv/linux/m32r/Dist 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/Dist 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,9 @@ ++clone.S ++pipe.S ++flushcache.S ++setresuid.c ++setresgid.c ++setfsuid.c ++setfsgid.c ++sys/io.h ++sys/user.h +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/Makefile ports/sysdeps/unix/sysv/linux/m32r/Makefile +--- ports/sysdeps/unix/sysv/linux/m32r/Makefile 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/Makefile 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,16 @@ ++# m32r/ELF specific definitions. ++#gnulib := -lgcc ++#static-gnulib := -lgcc ++ ++# The assembler on m32r needs the -fPIC flag even when it's assembler code. ++ASFLAGS-.os = -fPIC ++ ++ifeq ($(subdir),io) ++sysdep_routines += pipe ++endif ++ ++ifeq ($(subdir),misc) ++sysdep_routines += m32r-stub tas \ ++ cachectl flushcache ++sysdep_headers += sys/io.h sys/tas.h sys/cachectl.h ++endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/Versions ports/sysdeps/unix/sysv/linux/m32r/Versions +--- ports/sysdeps/unix/sysv/linux/m32r/Versions 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/Versions 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,12 @@ ++libc { ++ GLIBC_2.3 { ++ # Needed by gcc ++ _flush_cache; ++ ++ # c* ++ cachectl; cacheflush; ++ ++ # t* ++ tas; ++ } ++} +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/bits/fcntl.h ports/sysdeps/unix/sysv/linux/m32r/bits/fcntl.h +--- ports/sysdeps/unix/sysv/linux/m32r/bits/fcntl.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/bits/fcntl.h 2006-03-01 17:17:36.000000000 +0900 +@@ -0,0 +1,179 @@ ++/* O_*, F_*, FD_* bit values for Linux. ++ Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _FCNTL_H ++# error "Never use directly; include instead." ++#endif ++ ++ ++#include ++ ++/* open/fcntl - O_SYNC is only implemented on blocks devices and on files ++ located on an ext2 file system */ ++#define O_ACCMODE 0003 ++#define O_RDONLY 00 ++#define O_WRONLY 01 ++#define O_RDWR 02 ++#define O_CREAT 0100 /* not fcntl */ ++#define O_EXCL 0200 /* not fcntl */ ++#define O_NOCTTY 0400 /* not fcntl */ ++#define O_TRUNC 01000 /* not fcntl */ ++#define O_APPEND 02000 ++#define O_NONBLOCK 04000 ++#define O_NDELAY O_NONBLOCK ++#define O_SYNC 010000 ++#define O_FSYNC O_SYNC ++#define O_ASYNC 020000 ++ ++#ifdef __USE_GNU ++# define O_DIRECT 040000 /* Direct disk access. */ ++# define O_DIRECTORY 0200000 /* Must be a directory. */ ++# define O_NOFOLLOW 0400000 /* Do not follow links. */ ++#endif ++ ++/* For now Linux has synchronisity options for data and read operations. ++ We define the symbols here but let them do the same as O_SYNC since ++ this is a superset. */ ++#if defined __USE_POSIX199309 || defined __USE_UNIX98 ++# define O_DSYNC O_SYNC /* Synchronize data. */ ++# define O_RSYNC O_SYNC /* Synchronize read operations. */ ++#endif ++ ++#ifdef __USE_LARGEFILE64 ++# define O_LARGEFILE 0100000 ++#endif ++ ++/* Values for the second argument to `fcntl'. */ ++#define F_DUPFD 0 /* Duplicate file descriptor. */ ++#define F_GETFD 1 /* Get file descriptor flags. */ ++#define F_SETFD 2 /* Set file descriptor flags. */ ++#define F_GETFL 3 /* Get file status flags. */ ++#define F_SETFL 4 /* Set file status flags. */ ++#ifndef __USE_FILE_OFFSET64 ++# define F_GETLK 5 /* Get record locking info. */ ++# define F_SETLK 6 /* Set record locking info (non-blocking). */ ++# define F_SETLKW 7 /* Set record locking info (blocking). */ ++#else ++# define F_GETLK F_GETLK64 /* Get record locking info. */ ++# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/ ++# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */ ++#endif ++#define F_GETLK64 12 /* Get record locking info. */ ++#define F_SETLK64 13 /* Set record locking info (non-blocking). */ ++#define F_SETLKW64 14 /* Set record locking info (blocking). */ ++ ++#if defined __USE_BSD || defined __USE_XOPEN2K ++# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */ ++# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */ ++#endif ++ ++#ifdef __USE_GNU ++# define F_SETSIG 10 /* Set number of signal to be sent. */ ++# define F_GETSIG 11 /* Get number of signal to be sent. */ ++#endif ++ ++#ifdef __USE_GNU ++# define F_SETLEASE 1024 /* Set a lease. */ ++# define F_GETLEASE 1025 /* Enquire what lease is active. */ ++# define F_NOTIFY 1026 /* Request notfications on a directory. */ ++#endif ++ ++/* For F_[GET|SET]FL. */ ++#define FD_CLOEXEC 1 /* actually anything with low bit set goes */ ++ ++/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */ ++#define F_RDLCK 0 /* Read lock. */ ++#define F_WRLCK 1 /* Write lock. */ ++#define F_UNLCK 2 /* Remove lock. */ ++ ++/* For old implementation of bsd flock(). */ ++#define F_EXLCK 4 /* or 3 */ ++#define F_SHLCK 8 /* or 4 */ ++ ++#ifdef __USE_BSD ++/* Operations for bsd flock(), also used by the kernel implementation. */ ++# define LOCK_SH 1 /* shared lock */ ++# define LOCK_EX 2 /* exclusive lock */ ++# define LOCK_NB 4 /* or'd with one of the above to prevent ++ blocking */ ++# define LOCK_UN 8 /* remove lock */ ++#endif ++ ++#ifdef __USE_GNU ++# define LOCK_MAND 32 /* This is a mandatory flock: */ ++# define LOCK_READ 64 /* ... which allows concurrent read operations. */ ++# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */ ++# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */ ++#endif ++ ++#ifdef __USE_GNU ++/* Types of directory notifications that may be requested with F_NOTIFY. */ ++# define DN_ACCESS 0x00000001 /* File accessed. */ ++# define DN_MODIFY 0x00000002 /* File modified. */ ++# define DN_CREATE 0x00000004 /* File created. */ ++# define DN_DELETE 0x00000008 /* File removed. */ ++# define DN_RENAME 0x00000010 /* File renamed. */ ++# define DN_ATTRIB 0x00000020 /* File changed attibutes. */ ++# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */ ++#endif ++ ++struct flock ++ { ++ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ ++ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ ++#ifndef __USE_FILE_OFFSET64 ++ __off_t l_start; /* Offset where the lock begins. */ ++ __off_t l_len; /* Size of the locked area; zero means until EOF. */ ++#else ++ __off64_t l_start; /* Offset where the lock begins. */ ++ __off64_t l_len; /* Size of the locked area; zero means until EOF. */ ++#endif ++ __pid_t l_pid; /* Process holding the lock. */ ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct flock64 ++ { ++ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ ++ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ ++ __off64_t l_start; /* Offset where the lock begins. */ ++ __off64_t l_len; /* Size of the locked area; zero means until EOF. */ ++ __pid_t l_pid; /* Process holding the lock. */ ++ }; ++#endif ++ ++/* Define some more compatibility macros to be backward compatible with ++ BSD systems which did not managed to hide these kernel macros. */ ++#ifdef __USE_BSD ++# define FAPPEND O_APPEND ++# define FFSYNC O_FSYNC ++# define FASYNC O_ASYNC ++# define FNONBLOCK O_NONBLOCK ++# define FNDELAY O_NDELAY ++#endif /* Use BSD. */ ++ ++/* Advise to `posix_fadvise'. */ ++#ifdef __USE_XOPEN2K ++# define POSIX_FADV_NORMAL 0 /* No further special treatment. */ ++# define POSIX_FADV_RANDOM 1 /* Expect random page references. */ ++# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */ ++# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */ ++# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */ ++# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ ++#endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/bits/mman.h ports/sysdeps/unix/sysv/linux/m32r/bits/mman.h +--- ports/sysdeps/unix/sysv/linux/m32r/bits/mman.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/bits/mman.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,98 @@ ++/* Definitions for POSIX memory map interface. Linux/M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _SYS_MMAN_H ++# error "Never include this file directly. Use instead" ++#endif ++ ++/* The following definitions basically come from the kernel headers. ++ But the kernel header is not namespace clean. */ ++ ++ ++/* Protections are chosen from these bits, OR'd together. The ++ implementation does not necessarily support PROT_EXEC or PROT_WRITE ++ without PROT_READ. The only guarantees are that no writing will be ++ allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */ ++ ++#define PROT_READ 0x1 /* Page can be read. */ ++#define PROT_WRITE 0x2 /* Page can be written. */ ++#define PROT_EXEC 0x4 /* Page can be executed. */ ++#define PROT_NONE 0x0 /* Page can not be accessed. */ ++#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of ++ growsdown vma (mprotect only). */ ++#define PROT_GROWSUP 0x02000000 /* Extend change to start of ++ growsup vma (mprotect only). */ ++ ++ ++/* Sharing types (must choose one and only one of these). */ ++#define MAP_SHARED 0x01 /* Share changes. */ ++#define MAP_PRIVATE 0x02 /* Changes are private. */ ++#ifdef __USE_MISC ++# define MAP_TYPE 0x0f /* Mask for type of mapping. */ ++#endif ++ ++/* Other flags. */ ++#define MAP_FIXED 0x10 /* Interpret addr exactly. */ ++#ifdef __USE_MISC ++# define MAP_FILE 0 ++# define MAP_ANONYMOUS 0x20 /* Don't use a file. */ ++# define MAP_ANON MAP_ANONYMOUS ++#endif ++ ++/* These are Linux-specific. */ ++#ifdef __USE_MISC ++# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */ ++# define MAP_DENYWRITE 0x0800 /* ETXTBSY */ ++# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */ ++# define MAP_LOCKED 0x2000 /* Lock the mapping. */ ++# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */ ++#endif ++ ++/* Flags to `msync'. */ ++#define MS_ASYNC 1 /* Sync memory asynchronously. */ ++#define MS_SYNC 4 /* Synchronous memory sync. */ ++#define MS_INVALIDATE 2 /* Invalidate the caches. */ ++ ++/* Flags for `mlockall'. */ ++#define MCL_CURRENT 1 /* Lock all currently mapped pages. */ ++#define MCL_FUTURE 2 /* Lock all additions to address ++ space. */ ++ ++/* Flags for `mremap'. */ ++#ifdef __USE_GNU ++# define MREMAP_MAYMOVE 1 ++#endif ++ ++/* Advice to `madvise'. */ ++#ifdef __USE_BSD ++# define MADV_NORMAL 0 /* No further special treatment. */ ++# define MADV_RANDOM 1 /* Expect random page references. */ ++# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */ ++# define MADV_WILLNEED 3 /* Will need these pages. */ ++# define MADV_DONTNEED 4 /* Don't need these pages. */ ++#endif ++ ++/* The POSIX people had to invent similar names for the same things. */ ++#ifdef __USE_XOPEN2K ++# define POSIX_MADV_NORMAL 0 /* No further special treatment. */ ++# define POSIX_MADV_RANDOM 1 /* Expect random page references. */ ++# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ ++# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ ++# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */ ++#endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/bits/resource.h ports/sysdeps/unix/sysv/linux/m32r/bits/resource.h +--- ports/sysdeps/unix/sysv/linux/m32r/bits/resource.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/bits/resource.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,209 @@ ++/* Bit values & structures for resource limits. Linux/M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _SYS_RESOURCE_H ++# error "Never use directly; include instead." ++#endif ++ ++#include ++ ++/* Transmute defines to enumerations. The macro re-definitions are ++ necessary because some programs want to test for operating system ++ features with #ifdef RUSAGE_SELF. In ISO C the reflexive ++ definition is a no-op. */ ++ ++/* Kinds of resource limit. */ ++enum __rlimit_resource ++{ ++ /* Per-process CPU limit, in seconds. */ ++ RLIMIT_CPU = 0, ++#define RLIMIT_CPU RLIMIT_CPU ++ ++ /* Largest file that can be created, in bytes. */ ++ RLIMIT_FSIZE = 1, ++#define RLIMIT_FSIZE RLIMIT_FSIZE ++ ++ /* Maximum size of data segment, in bytes. */ ++ RLIMIT_DATA = 2, ++#define RLIMIT_DATA RLIMIT_DATA ++ ++ /* Maximum size of stack segment, in bytes. */ ++ RLIMIT_STACK = 3, ++#define RLIMIT_STACK RLIMIT_STACK ++ ++ /* Largest core file that can be created, in bytes. */ ++ RLIMIT_CORE = 4, ++#define RLIMIT_CORE RLIMIT_CORE ++ ++ /* Largest resident set size, in bytes. ++ This affects swapping; processes that are exceeding their ++ resident set size will be more likely to have physical memory ++ taken from them. */ ++ RLIMIT_RSS = 5, ++#define RLIMIT_RSS RLIMIT_RSS ++ ++ /* Number of open files. */ ++ RLIMIT_NOFILE = 7, ++ RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */ ++#define RLIMIT_NOFILE RLIMIT_NOFILE ++#define RLIMIT_OFILE RLIMIT_OFILE ++ ++ /* Address space limit. */ ++ RLIMIT_AS = 9, ++#define RLIMIT_AS RLIMIT_AS ++ ++ /* Number of processes. */ ++ RLIMIT_NPROC = 6, ++#define RLIMIT_NPROC RLIMIT_NPROC ++ ++ /* Locked-in-memory address space. */ ++ RLIMIT_MEMLOCK = 8, ++#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK ++ ++ /* Maximum number of file locks. */ ++ RLIMIT_LOCKS = 10, ++#define RLIMIT_LOCKS RLIMIT_LOCKS ++ ++ RLIMIT_NLIMITS = 11, ++ RLIM_NLIMITS = RLIMIT_NLIMITS ++#define RLIMIT_NLIMITS RLIMIT_NLIMITS ++#define RLIM_NLIMITS RLIM_NLIMITS ++}; ++ ++/* Value to indicate that there is no limit. */ ++#ifndef __USE_FILE_OFFSET64 ++# define RLIM_INFINITY ((unsigned long int)(~0UL)) ++#else ++# define RLIM_INFINITY 0xffffffffffffffffuLL ++#endif ++ ++#ifdef __USE_LARGEFILE64 ++# define RLIM64_INFINITY 0xffffffffffffffffuLL ++#endif ++ ++/* We can represent all limits. */ ++#define RLIM_SAVED_MAX RLIM_INFINITY ++#define RLIM_SAVED_CUR RLIM_INFINITY ++ ++ ++/* Type for resource quantity measurement. */ ++#ifndef __USE_FILE_OFFSET64 ++typedef __rlim_t rlim_t; ++#else ++typedef __rlim64_t rlim_t; ++#endif ++#ifdef __USE_LARGEFILE64 ++typedef __rlim64_t rlim64_t; ++#endif ++ ++struct rlimit ++ { ++ /* The current (soft) limit. */ ++ rlim_t rlim_cur; ++ /* The hard limit. */ ++ rlim_t rlim_max; ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct rlimit64 ++ { ++ /* The current (soft) limit. */ ++ rlim64_t rlim_cur; ++ /* The hard limit. */ ++ rlim64_t rlim_max; ++ }; ++#endif ++ ++/* Whose usage statistics do you want? */ ++enum __rusage_who ++{ ++ /* The calling process. */ ++ RUSAGE_SELF = 0, ++#define RUSAGE_SELF RUSAGE_SELF ++ ++ /* All of its terminated child processes. */ ++ RUSAGE_CHILDREN = -1, ++#define RUSAGE_CHILDREN RUSAGE_CHILDREN ++ ++ /* Both. */ ++ RUSAGE_BOTH = -2 ++#define RUSAGE_BOTH RUSAGE_BOTH ++}; ++ ++#define __need_timeval ++#include /* For `struct timeval'. */ ++ ++/* Structure which says how much of each resource has been used. */ ++struct rusage ++ { ++ /* Total amount of user time used. */ ++ struct timeval ru_utime; ++ /* Total amount of system time used. */ ++ struct timeval ru_stime; ++ /* Maximum resident set size (in kilobytes). */ ++ long int ru_maxrss; ++ /* Amount of sharing of text segment memory ++ with other processes (kilobyte-seconds). */ ++ long int ru_ixrss; ++ /* Amount of data segment memory used (kilobyte-seconds). */ ++ long int ru_idrss; ++ /* Amount of stack memory used (kilobyte-seconds). */ ++ long int ru_isrss; ++ /* Number of soft page faults (i.e. those serviced by reclaiming ++ a page from the list of pages awaiting reallocation. */ ++ long int ru_minflt; ++ /* Number of hard page faults (i.e. those that required I/O). */ ++ long int ru_majflt; ++ /* Number of times a process was swapped out of physical memory. */ ++ long int ru_nswap; ++ /* Number of input operations via the file system. Note: This ++ and `ru_oublock' do not include operations with the cache. */ ++ long int ru_inblock; ++ /* Number of output operations via the file system. */ ++ long int ru_oublock; ++ /* Number of IPC messages sent. */ ++ long int ru_msgsnd; ++ /* Number of IPC messages received. */ ++ long int ru_msgrcv; ++ /* Number of signals delivered. */ ++ long int ru_nsignals; ++ /* Number of voluntary context switches, i.e. because the process ++ gave up the process before it had to (usually to wait for some ++ resource to be available). */ ++ long int ru_nvcsw; ++ /* Number of involuntary context switches, i.e. a higher priority process ++ became runnable or the current process used up its time slice. */ ++ long int ru_nivcsw; ++ }; ++ ++/* Priority limits. */ ++#define PRIO_MIN -20 /* Minimum priority a process can have. */ ++#define PRIO_MAX 20 /* Maximum priority a process can have. */ ++ ++/* The type of the WHICH argument to `getpriority' and `setpriority', ++ indicating what flavor of entity the WHO argument specifies. */ ++enum __priority_which ++{ ++ PRIO_PROCESS = 0, /* WHO is a process ID. */ ++#define PRIO_PROCESS PRIO_PROCESS ++ PRIO_PGRP = 1, /* WHO is a process group ID. */ ++#define PRIO_PGRP PRIO_PGRP ++ PRIO_USER = 2 /* WHO is a user ID. */ ++#define PRIO_USER PRIO_USER ++}; +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/brk.c ports/sysdeps/unix/sysv/linux/m32r/brk.c +--- ports/sysdeps/unix/sysv/linux/m32r/brk.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/brk.c 2006-03-02 12:30:59.000000000 +0900 +@@ -0,0 +1,50 @@ ++/* brk system call for Linux/M32R. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++#include ++ ++/* This must be initialized data because commons can't have aliases. */ ++void *__curbrk = 0; ++ ++int ++__brk (void *addr) ++{ ++ void *newbrk; ++ register long r7 asm ("r7") = SYS_ify (brk); ++ register long r0 asm ("r0") = (long)addr; ++ ++ asm volatile ("trap #0x2 || nop\n\t" ++ "mv %0,r0\n" ++ : "=r"(newbrk), "+r" (r0) ++ : "r" (r7), "r" (r0) ++ ); ++ ++ __curbrk = newbrk; ++ ++ if (newbrk < addr) ++ { ++ __set_errno (ENOMEM); ++ return -1; ++ } ++ ++ return 0; ++} ++weak_alias (__brk, brk) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/chown.c ports/sysdeps/unix/sysv/linux/m32r/chown.c +--- ports/sysdeps/unix/sysv/linux/m32r/chown.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/chown.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,35 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "kernel-features.h" ++ ++int ++__chown (const char *file, uid_t owner, gid_t group) ++{ ++ return INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group); ++} ++libc_hidden_def (__chown) ++weak_alias (__chown, chown) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/clone.S ports/sysdeps/unix/sysv/linux/m32r/clone.S +--- ports/sysdeps/unix/sysv/linux/m32r/clone.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/clone.S 2006-03-02 17:39:21.000000000 +0900 +@@ -0,0 +1,89 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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. */ ++ ++/* clone() is even more special than fork() as it mucks with stacks ++ and invokes a function in the right context after its all over. */ ++ ++#include ++#define _ERRNO_H 1 ++#include ++ ++/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, ++ pid_t *ptid, void *tls, pid_t *ctid); */ ++ ++ .text ++ENTRY(__clone) ++ /* sanity check arguments. */ ++ beqz r0, 1f ++ bnez r1, 2f ++ ++ .fillinsn ++1: ++ ldi r0, #-EINVAL ++ bra .Lsyscall_error ++ .fillinsn ++2: ++ /* insert the args onto the new stack */ ++ st r3, @-r1 ++ /* save the function pointer as the 0th element */ ++ st r0, @-r1 ++ ++ /* do the system call */ ++ mv r0, r2 ++ ld r2, @r15 ++ ld r3, @(8,r15) ++ ;ld RX, @(4,r15) /* FIXME: *tls */ ++ ldi r7, #SYS_ify(clone) ++ SYSCALL_INST ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 3f // i.e. error in linux ++ ++ .fillinsn ++.Lsyscall_error: ++ SYSCALL_ERROR_HANDLER ++ .fillinsn ++3: ++ beqz r0, 4f ++ ret ++ .fillinsn ++4: ++ /* thread starts */ ++ ld r1, @r15 ++ ld r0, @(4,r15) ++ jl r1 ++ ++ /* we are done, passing the return value through r0 */ ++#ifdef SHARED ++ push r12 ++ push lr ++ bl.s .+4 ++ ld24 r12, #_GLOBAL_OFFSET_TABLE_ ++ add r12, lr ++ bl C_SYMBOL_NAME(_exit@PLT) ++ pop lr ++ pop r12 ++ ret ++#else ++ LDIMM (r1, C_SYMBOL_NAME(_exit)) ++ jmp r1 ++#endif ++ ++PSEUDO_END (__clone) ++ ++weak_alias (__clone, clone) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/configure ports/sysdeps/unix/sysv/linux/m32r/configure +--- ports/sysdeps/unix/sysv/linux/m32r/configure 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/configure 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,6 @@ ++# This file is generated from configure.in by Autoconf. DO NOT EDIT! ++ # Local configure fragment for m32r/sysdeps/unix/sysv/linux/m32r ++ ++arch_minimum_kernel=2.4.19 ++libc_cv_gcc_unwind_find_fde=yes ++ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/configure.in ports/sysdeps/unix/sysv/linux/m32r/configure.in +--- ports/sysdeps/unix/sysv/linux/m32r/configure.in 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/configure.in 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,5 @@ ++# Local configure fragment for m32r/sysdeps/unix/sysv/linux/m32r ++ ++arch_minimum_kernel=2.4.19 ++libc_cv_gcc_unwind_find_fde=yes ++ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/fchown.c ports/sysdeps/unix/sysv/linux/m32r/fchown.c +--- ports/sysdeps/unix/sysv/linux/m32r/fchown.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/fchown.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/fcntl.c ports/sysdeps/unix/sysv/linux/m32r/fcntl.c +--- ports/sysdeps/unix/sysv/linux/m32r/fcntl.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/fcntl.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/flushcache.S ports/sysdeps/unix/sysv/linux/m32r/flushcache.S +--- ports/sysdeps/unix/sysv/linux/m32r/flushcache.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/flushcache.S 2006-03-02 11:42:26.000000000 +0900 +@@ -0,0 +1,29 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include ++ ++/* int _flush_cache(char *addr, int nbytes, int cache); */ ++ ++ .text ++ENTRY(__flush_cache) ++ trap #12 || nop ++ ret ++PSEUDO_END (__flush_cache) ++ ++weak_alias (__flush_cache, _flush_cache) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/fxstat.c ports/sysdeps/unix/sysv/linux/m32r/fxstat.c +--- ports/sysdeps/unix/sysv/linux/m32r/fxstat.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/fxstat.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getegid.c ports/sysdeps/unix/sysv/linux/m32r/getegid.c +--- ports/sysdeps/unix/sysv/linux/m32r/getegid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getegid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/geteuid.c ports/sysdeps/unix/sysv/linux/m32r/geteuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/geteuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/geteuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getgid.c ports/sysdeps/unix/sysv/linux/m32r/getgid.c +--- ports/sysdeps/unix/sysv/linux/m32r/getgid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getgid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getgroups.c ports/sysdeps/unix/sysv/linux/m32r/getgroups.c +--- ports/sysdeps/unix/sysv/linux/m32r/getgroups.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getgroups.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,2 @@ ++/* We also have to rewrite the kernel gid_t to the user land type. */ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getresgid.c ports/sysdeps/unix/sysv/linux/m32r/getresgid.c +--- ports/sysdeps/unix/sysv/linux/m32r/getresgid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getresgid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "kernel-features.h" ++ ++int ++__getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid) ++{ ++ return INLINE_SYSCALL (getresgid32, 3, CHECK_1 (rgid), ++ CHECK_1 (egid), CHECK_1 (sgid)); ++} ++libc_hidden_def (__getresgid) ++weak_alias (__getresgid, getresgid) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getresuid.c ports/sysdeps/unix/sysv/linux/m32r/getresuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/getresuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getresuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "kernel-features.h" ++ ++int ++__getresuid (uid_t *ruid, uid_t *euid, uid_t *suid) ++{ ++ return INLINE_SYSCALL (getresuid32, 3, CHECK_1 (ruid), ++ CHECK_1 (euid), CHECK_1 (suid)); ++} ++libc_hidden_def (__getresuid) ++weak_alias (__getresuid, getresuid) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getrlimit.c ports/sysdeps/unix/sysv/linux/m32r/getrlimit.c +--- ports/sysdeps/unix/sysv/linux/m32r/getrlimit.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getrlimit.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,36 @@ ++/* Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "kernel-features.h" ++ ++int ++__new_getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits) ++{ ++ return INLINE_SYSCALL (ugetrlimit, 2, resource, CHECK_1 (rlimits)); ++} ++ ++weak_alias (__new_getrlimit, __getrlimit); ++versioned_symbol (libc, __new_getrlimit, getrlimit, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getrlimit64.c ports/sysdeps/unix/sysv/linux/m32r/getrlimit64.c +--- ports/sysdeps/unix/sysv/linux/m32r/getrlimit64.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getrlimit64.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,25 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 getrlimit64 __new_getrlimit64 ++ ++#include ++ ++#undef getrlimit64 ++#include ++versioned_symbol (libc, __new_getrlimit64, getrlimit64, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getuid.c ports/sysdeps/unix/sysv/linux/m32r/getuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/getuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/kernel-features.h ports/sysdeps/unix/sysv/linux/m32r/kernel-features.h +--- ports/sysdeps/unix/sysv/linux/m32r/kernel-features.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/kernel-features.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,17 @@ ++#define __ASSUME_32BITUIDS 1 ++#define __ASSUME_CLONE_THREAD_FLAGS 1 ++#define __ASSUME_FADVISE64_64_SYSCALL 1 ++#define __ASSUME_FCNTL64 1 ++#define __ASSUME_GETDENTS64_SYSCALL 1 ++#define __ASSUME_IPC64 1 ++#define __ASSUME_MMAP2_SYSCALL 1 ++#define __ASSUME_NEW_GETRLIMIT_SYSCALL 1 ++#define __ASSUME_SETRESGID_SYSCALL 1 ++#define __ASSUME_SETRESUID_SYSCALL 1 ++#define __ASSUME_STAT64_SYSCALL 1 ++#define __ASSUME_ST_INO_64_BIT 1 ++#define __ASSUME_TGKILL 1 ++#define __ASSUME_TRUNCATE64_SYSCALL 1 ++#define __ASSUME_UTIMES 1 ++ ++#include_next "kernel-features.h" +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/lchown.c ports/sysdeps/unix/sysv/linux/m32r/lchown.c +--- ports/sysdeps/unix/sysv/linux/m32r/lchown.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/lchown.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,35 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "kernel-features.h" ++ ++int ++__lchown (const char *file, uid_t owner, gid_t group) ++{ ++ return INLINE_SYSCALL (lchown32, 3, CHECK_STRING (file), owner, group); ++} ++ ++weak_alias (__lchown, lchown) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h +--- ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h 2006-04-20 09:44:47.000000000 +0900 +@@ -0,0 +1,186 @@ ++/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#ifndef __ASSEMBLER__ ++# include ++#endif ++ ++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN_librt ++ ++# undef PSEUDO ++# define PSEUDO(name, syscall_name, args) \ ++ .text! \ ++ ENTRY(name)! \ ++ SINGLE_THREAD_P_INT ! \ ++ bnez r6, .Lpseudo_cancel ! \ ++ DO_CALL (syscall_name, args) ! \ ++ not r5,r0 ! \ ++ srai r5,12 ! \ ++ bnez r5,.Lpseudo_end ! \ ++ bra .Lsyscall_error ! \ ++ .fillinsn ! \ ++ .Lpseudo_cancel: ! \ ++ SAVE_REGS ! \ ++ /* save syscall args around CENABLE. */ \ ++ DOCARGS_##args ! \ ++ CENABLE ! \ ++ mv r8,r0 ! /* put mask back */ \ ++ /* restore syscall args */ \ ++ UNDOCARGS_##args ! \ ++ ldi r7, SYS_ify(syscall_name) ! /* do the call */ \ ++ SYSCALL_INST_##args ! \ ++ /* save syscall return value */ \ ++ push r0 ! \ ++ mv r0,r8 ! /* get mask back */ \ ++ CDISABLE ! \ ++ pop r0 ! /* retrive return value. */ \ ++ UNDOC2ARGS_##args ! \ ++ RESTORE_REGS ! \ ++ /* fix register damege. */ \ ++ not r5,r0 ! \ ++ srai r5,12 ! \ ++ bnez r5, .Lpseudo_end ! \ ++ .fillinsn ! \ ++ .Lsyscall_error: ! \ ++ SYSCALL_ERROR_HANDLER ! \ ++ .fillinsn ! \ ++ .Lpseudo_end: ! \ ++ ++# define DOCARGS_0 ++# define UNDOCARGS_0 ++# define UNDOC2ARGS_0 ++ ++# define DOCARGS_1 push r0 ++# define UNDOCARGS_1 pop r0 ++# define UNDOC2ARGS_1 ++ ++# define DOCARGS_2 push r1 ! push r0 ++# define UNDOCARGS_2 pop r0 ! pop r1 ++# define UNDOC2ARGS_2 ++ ++# define DOCARGS_3 push r2 ! push r1 ! push r0 ++# define UNDOCARGS_3 pop r0 ! pop r1 ! pop r2 ++# define UNDOC2ARGS_3 ++ ++# define DOCARGS_4 push r3 ! push r2 ! push r1 ! push r0 ++# define UNDOCARGS_4 pop r0 ! pop r1 ! pop r2 ! pop r3 ++# define UNDOC2ARGS_4 ++ ++# define DOCARGS_5 push r3 ! push r2 ! push r1 ! push r0 ++# if !defined PIC ++# define UNDOCARGS_5 pop r0 ! pop r1 ! pop r2 ! pop r3 ! ld r4, @(8,sp) ! push r4 ++# define UNDOC2ARGS_5 addi sp,#4 ++# else ++# define UNDOCARGS_5 pop r0 ! pop r1 ! pop r2 ! pop r3 ! ld r4, @(12,sp) ! push r4 ++# define UNDOC2ARGS_5 addi sp,#4 ++# endif ++ ++ ++# ifdef IS_IN_libpthread ++# ifdef PIC ++# define CENABLE bl __pthread_enable_asynccancel@PLT ++# define CDISABLE bl __pthread_disable_asynccancel@PLT ++# else ++# define CENABLE bl __pthread_enable_asynccancel ++# define CDISABLE bl __pthread_disable_asynccancel ++# endif ++# define __local_multiple_threads __pthread_multiple_threads ++# elif !defined NOT_IN_libc ++# ifdef PIC ++# define CENABLE bl __libc_enable_asynccancel@PLT ++# define CDISABLE bl __libc_disable_asynccancel@PLT ++# else ++# define CENABLE bl __libc_enable_asynccancel ++# define CDISABLE bl __libc_disable_asynccancel ++# endif ++# define __local_multiple_threads __libc_multiple_threads ++# else ++# ifdef PIC ++# define CENABLE bl __librt_enable_asynccancel@PLT ++# define CDISABLE bl __librt_disable_asynccancel@PLT ++# else ++# define CENABLE bl __librt_enable_asynccancel ++# define CDISABLE bl __librt_disable_asynccancel ++# endif ++# define __local_multiple_threads __librt_multiple_threads ++# endif ++ ++# ifndef __ASSEMBLER__ ++extern int __local_multiple_threads attribute_hidden; ++# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) ++# else ++# if !defined PIC ++# define SINGLE_THREAD_P_INT \ ++ seth r6,#shigh(__local_multiple_threads) ! \ ++ ld r6,@(low(__local_multiple_threads), r6) ++ ++# define SINGLE_THREAD_P SINGLE_THREAD_P_INT ++ ++# define SAVE_REGS \ ++ push lr ! push r8 ++ ++# define RESTORE_REGS \ ++ pop r8 ! pop lr ++ ++# else ++# if !defined NOT_IN_libc || defined IS_IN_libpthread ++# define SINGLE_THREAD_P_INT \ ++ mv r4,lr ! \ ++ bl.s .+4 ! \ ++ ld24 r5,#_GLOBAL_OFFSET_TABLE_ ! \ ++ seth r6,#high(__local_multiple_threads@GOTOFF) !\ ++ or3 r6,r6,#low(__local_multiple_threads@GOTOFF) !\ ++ add r5,lr ! \ ++ mv lr,r4 ! \ ++ add r6,r5 ! \ ++ ld r6,@r6 ++ ++# else ++# define SINGLE_THREAD_P_INT \ ++ mv r4,lr ! \ ++ bl.s .+4 ! \ ++ ld24 r5,#_GLOBAL_OFFSET_TABLE_ ! \ ++ ld24 r6,#__local_multiple_threads@GOT !\ ++ add r5,lr ! \ ++ mv lr,r4 ! \ ++ add r6,r5 ! \ ++ ld r6,@r6 ! \ ++ ld r6,@r6 ++ ++# endif ++ ++# define SINGLE_THREAD_P \ ++ SINGLE_THREAD_P_INT ++ ++# define SAVE_REGS \ ++ push lr ! push r8 ! push r12 ! mv r12, r5 ++ ++# define RESTORE_REGS \ ++ pop r12 ! pop r8 ! pop lr ++ ++# endif ++# endif ++ ++ ++#elif !defined __ASSEMBLER__ ++ ++/* This code should never be used but we define it anyhow. */ ++# define SINGLE_THREAD_P (1) ++ ++#endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S +--- ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,75 @@ ++/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#define _ERRNO_H 1 ++#include ++#include "kernel-features.h" ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++#ifdef __NR_vfork ++ ++#ifdef SHARED ++ mv r4, lr ++ bl.s .+4 ++ ld24 r5, #_GLOBAL_OFFSET_TABLE_ ++ add r5, lr ++ mv lr, r4 ++ ++ seth r6, #high(__libc_pthread_functions@GOTOFF) ++ or3 r6, r6, #low(__libc_pthread_functions@GOTOFF) ++ add r6, r5 ++ ld r0, @r6 ++ ++ seth r6, #high(HIDDEN_JUMPTARGET(__fork)@GOTOFF) ++ or3 r6, r6, #low(HIDDEN_JUMPTARGET(__fork)@GOTOFF) ++ add r6, r5 ++ beqz r0, 5f ++ jmp r6 ++ .fillinsn ++5: ++#else ++ .weak pthread_create ++ seth r0, #shigh(pthread_create) ++ or3 r0, r0, #low(pthread_create) ++ bnez r0, HIDDEN_JUMPTARGET(__fork) ++#endif ++ ++ ldi r7, #__NR_vfork ++ SYSCALL_INST ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++#endif ++ ++ SYSCALL_ERROR_HANDLER ++ ++ .fillinsn ++1: ++ ret ++ ++ ++PSEUDO_END (__vfork) ++libc_hidden_def(__vfork) ++ ++weak_alias (__vfork, vfork) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/lockf64.c ports/sysdeps/unix/sysv/linux/m32r/lockf64.c +--- ports/sysdeps/unix/sysv/linux/m32r/lockf64.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/lockf64.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/lxstat.c ports/sysdeps/unix/sysv/linux/m32r/lxstat.c +--- ports/sysdeps/unix/sysv/linux/m32r/lxstat.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/lxstat.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,2 @@ ++#include ++ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/m32r-stub.c ports/sysdeps/unix/sysv/linux/m32r/m32r-stub.c +--- ports/sysdeps/unix/sysv/linux/m32r/m32r-stub.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/m32r-stub.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,11 @@ ++#include ++ ++struct link_map _dl_rtld_map; ++ ++#ifndef __PIC__ ++void __pthread_initialize_minimal(void) ++{ ++} ++#endif ++ ++ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/mmap.S ports/sysdeps/unix/sysv/linux/m32r/mmap.S +--- ports/sysdeps/unix/sysv/linux/m32r/mmap.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/mmap.S 2006-04-20 09:44:30.000000000 +0900 +@@ -0,0 +1,59 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++ ++#define EINVAL 22 ++ ++/* ++__ptr_t ++__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset); ++*/ ++ ++ENTRY (__mmap) ++ /* Push args and pass the address of 1st arg. ++ * The 5th and 6th args are already passed in the stack. ++ */ ++ ld r4, @sp // fd ++ ld r5, @(4,sp) // offset ++ and3 r6, r5, #0x00000fff ++ beqz r6, 2f ++ ldi r0, #-EINVAL ++ bra 0f ++ .fillinsn ++2: ++ srli r5, #12 ++ ++ ldi r7, #__NR_mmap2 ++ SYSCALL_INST ++ ++ .fillinsn ++0: ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++ SYSCALL_ERROR_HANDLER ++ ++ .fillinsn ++1: ++ ret ++ ++PSEUDO_END (__mmap) ++ ++weak_alias (__mmap, mmap) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/msgctl.c ports/sysdeps/unix/sysv/linux/m32r/msgctl.c +--- ports/sysdeps/unix/sysv/linux/m32r/msgctl.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/msgctl.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,39 @@ ++/* Copyright (C) 1995, 1997, 1998, 2000, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "kernel-features.h" ++#include ++ ++int ++__new_msgctl (int msqid, int cmd, struct msqid_ds *buf) ++{ ++ return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, ++ msqid, cmd | __IPC_64, 0, CHECK_1 (buf)); ++} ++ ++versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/pipe.S ports/sysdeps/unix/sysv/linux/m32r/pipe.S +--- ports/sysdeps/unix/sysv/linux/m32r/pipe.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/pipe.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++ ++ENTRY (__libc_pipe) ++ ldi r7, #__NR_pipe ++ SYSCALL_INST ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++ SYSCALL_ERROR_HANDLER ++ .fillinsn ++1: ++ ldi r0, #0 ++ ret ++PSEUDO_END (__libc_pipe) ++ ++weak_alias (__libc_pipe, __pipe) ++libc_hidden_def (__pipe) ++weak_alias (__libc_pipe, pipe) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/profil-counter.h ports/sysdeps/unix/sysv/linux/m32r/profil-counter.h +--- ports/sysdeps/unix/sysv/linux/m32r/profil-counter.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/profil-counter.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,29 @@ ++/* Low-level statistical profiling support function. Linux/M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++ ++static void ++profil_counter (int signo, SIGCONTEXT sc) ++{ ++ void *pc; ++ pc = GET_PC(sc); ++ profil_count (pc); ++} +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/semctl.c ports/sysdeps/unix/sysv/linux/m32r/semctl.c +--- ports/sysdeps/unix/sysv/linux/m32r/semctl.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/semctl.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,62 @@ ++/* Copyright (C) 1995,1997,1998,2000,2003,2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include "kernel-features.h" ++#include ++ ++/* Define a `union semun' suitable for Linux here. */ ++union semun ++{ ++ int val; /* value for SETVAL */ ++ struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */ ++ unsigned short int *array; /* array for GETALL & SETALL */ ++ struct seminfo *__buf; /* buffer for IPC_INFO */ ++ struct __old_semid_ds *__old_buf; ++}; ++ ++#include ++#include /* definition of CHECK_SEMCTL needs union semum */ ++ ++int ++__new_semctl (int semid, int semnum, int cmd, ...) ++{ ++ union semun arg; ++ va_list ap; ++ ++ va_start (ap, cmd); ++ ++ /* Get the argument. */ ++ arg = va_arg (ap, union semun); ++ ++ va_end (ap); ++ ++ return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd | __IPC_64, ++ CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)); ++} ++ ++versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setegid.c ports/sysdeps/unix/sysv/linux/m32r/setegid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setegid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setegid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/seteuid.c ports/sysdeps/unix/sysv/linux/m32r/seteuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/seteuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/seteuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setfsgid.c ports/sysdeps/unix/sysv/linux/m32r/setfsgid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setfsgid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setfsgid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,34 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "kernel-features.h" ++ ++int ++setfsgid (gid_t gid) ++{ ++ INTERNAL_SYSCALL_DECL (err); ++ /* No error checking. */ ++ return INTERNAL_SYSCALL (setfsgid32, err, 1, gid); ++} +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setfsuid.c ports/sysdeps/unix/sysv/linux/m32r/setfsuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setfsuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setfsuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,35 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "kernel-features.h" ++ ++int ++setfsuid (uid_t uid) ++{ ++ INTERNAL_SYSCALL_DECL (err); ++ /* No error checking. */ ++ return INTERNAL_SYSCALL (setfsuid32, err, 1, uid); ++} +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setgid.c ports/sysdeps/unix/sysv/linux/m32r/setgid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setgid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setgid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setgroups.c ports/sysdeps/unix/sysv/linux/m32r/setgroups.c +--- ports/sysdeps/unix/sysv/linux/m32r/setgroups.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setgroups.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,2 @@ ++/* We also have to rewrite the kernel gid_t to the user land type. */ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setregid.c ports/sysdeps/unix/sysv/linux/m32r/setregid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setregid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setregid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setresgid.c ports/sysdeps/unix/sysv/linux/m32r/setresgid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setresgid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setresgid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setresuid.c ports/sysdeps/unix/sysv/linux/m32r/setresuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setresuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setresuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setreuid.c ports/sysdeps/unix/sysv/linux/m32r/setreuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setreuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setreuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setrlimit.c ports/sysdeps/unix/sysv/linux/m32r/setrlimit.c +--- ports/sysdeps/unix/sysv/linux/m32r/setrlimit.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setrlimit.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "kernel-features.h" ++ ++int ++__new_setrlimit (enum __rlimit_resource resource, const struct rlimit *rlimits) ++{ ++ return INLINE_SYSCALL (setrlimit, 2, resource, CHECK_1 (rlimits)); ++} ++ ++weak_alias (__new_setrlimit, __setrlimit); ++versioned_symbol (libc, __new_setrlimit, setrlimit, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setuid.c ports/sysdeps/unix/sysv/linux/m32r/setuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/shmctl.c ports/sysdeps/unix/sysv/linux/m32r/shmctl.c +--- ports/sysdeps/unix/sysv/linux/m32r/shmctl.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/shmctl.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "kernel-features.h" ++#include ++ ++int ++__new_shmctl (int shmid, int cmd, struct shmid_ds *buf) ++{ ++ return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, ++ shmid, cmd | __IPC_64, 0, CHECK_1 (buf)); ++} ++ ++versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sigaction.c ports/sysdeps/unix/sysv/linux/m32r/sigaction.c +--- ports/sysdeps/unix/sysv/linux/m32r/sigaction.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sigaction.c 2006-03-02 12:32:45.000000000 +0900 +@@ -0,0 +1,105 @@ ++/* POSIX.1 `sigaction' call for Linux/M32R. ++ Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "kernel-features.h" ++ ++/* The difference here is that the sigaction structure used in the ++ kernel is not the same as we use in the libc. Therefore we must ++ translate it here. */ ++#include ++ ++/* We do not globally define the SA_RESTORER flag so do it here. */ ++#define SA_RESTORER 0x04000000 ++ ++/* Using the hidden attribute here does not change the code but it ++ helps to avoid warnings. */ ++#if defined HAVE_HIDDEN && defined HAVE_VISIBILITY_ATTRIBUTE \ ++ && !defined HAVE_BROKEN_VISIBILITY_ATTRIBUTE ++extern void restore_rt (void) asm ("__restore_rt") attribute_hidden; ++#else ++static void restore_rt (void) asm ("__restore_rt"); ++#endif ++ ++ ++/* If ACT is not NULL, change the action for SIG to *ACT. ++ If OACT is not NULL, put the old action for SIG in *OACT. */ ++int ++__libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) ++{ ++ int result; ++ struct kernel_sigaction kact, koact; ++ ++ if (act) ++ { ++ kact.k_sa_handler = act->sa_handler; ++ memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t)); ++ kact.sa_flags = act->sa_flags | SA_RESTORER; ++ ++ kact.sa_restorer = &restore_rt; ++ } ++ ++ /* XXX The size argument hopefully will have to be changed to the ++ real size of the user-level sigset_t. */ ++ result = INLINE_SYSCALL (rt_sigaction, 4, ++ sig, act ? __ptrvalue (&kact) : NULL, ++ oact ? __ptrvalue (&koact) : NULL, _NSIG / 8); ++ if (oact && result >= 0) ++ { ++ oact->sa_handler = koact.k_sa_handler; ++ memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (sigset_t)); ++ oact->sa_flags = koact.sa_flags; ++ oact->sa_restorer = koact.sa_restorer; ++ } ++ return result; ++} ++libc_hidden_def (__libc_sigaction) ++ ++#ifndef LIBC_SIGACTION ++weak_alias (__libc_sigaction, __sigaction) ++libc_hidden_weak (__sigaction) ++weak_alias (__libc_sigaction, sigaction) ++#endif ++ ++/* NOTE: Please think twice before making any changes to the bits of ++ code below. GDB needs some intimate knowledge about it to ++ recognize them as signal trampolines, and make backtraces through ++ signal handlers work right. Important are both the names ++ (__restore_rt) and the exact instruction sequence. ++ If you ever feel the need to make any changes, please notify the ++ appropriate GDB maintainer. */ ++ ++#define RESTORE(name, syscall) RESTORE2 (name, syscall) ++# define RESTORE2(name, syscall) \ ++asm \ ++ ( \ ++ "__" #name ":\n" \ ++ " ldi r7,#" #syscall "\n" \ ++ " trap #2 || nop\n" \ ++ ); ++/* The return code for realtime-signals. */ ++RESTORE (restore_rt, __NR_rt_sigreturn) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sigcontextinfo.h ports/sysdeps/unix/sysv/linux/m32r/sigcontextinfo.h +--- ports/sysdeps/unix/sysv/linux/m32r/sigcontextinfo.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sigcontextinfo.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,26 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Philip Blundell , 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. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY 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. */ ++ ++#define SIGCONTEXT struct sigcontext * ++#define SIGCONTEXT_EXTRA_ARGS ++#define GET_PC(ctx) ((void *)((ctx)->sc_bpc)) ++#define GET_FRAME(ctx) ((void *)((ctx)->sc_fp)) ++#define GET_STACK(ctx) ((void *)((ctx)->sc_spi)) ++#define CALL_SIGHANDLER(handler, signo, ctx) \ ++ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/socket.S ports/sysdeps/unix/sysv/linux/m32r/socket.S +--- ports/sysdeps/unix/sysv/linux/m32r/socket.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/socket.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,155 @@ ++/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ++ This file is part of the 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 ++ ++#define P(a, b) P2(a, b) ++#define P2(a, b) a##b ++ ++ .text ++/* The socket-oriented system calls are handled unusally in Linux. ++ They are all gated through the single `socketcall' system call number. ++ `socketcall' takes two arguments: the first is the subcode, specifying ++ which socket function is being called; and the second is a pointer to ++ the arguments to the specific function. ++ ++ The .S files for the other calls just #define socket and #include this. */ ++ ++#ifndef __socket ++#ifndef NO_WEAK_ALIAS ++#define __socket P(__,socket) ++#else ++#define __socket socket ++#endif ++#endif ++ ++#define PUSHARGS(x) PUSHARGS x ++ .macro PUSHARGS nargs ++ push r0 ++ .aif \nargs ge 2 ++ push r1 ++ .aif \nargs ge 3 ++ push r2 ++ .aif \nargs ge 4 ++ push r3 ++ /* If nargs is 5, caller has already pushed arg 5. */ ++ /* If nargs is 6, caller has already pushed arg 5, 6. */ ++ .aendi ++ .aendi ++ .aendi ++ .endm ++ ++#define PUSHARGS(x) PUSHARGS x ++ ++#define POPARGS_1 addi r15,#4 ++#define POPARGS_2 addi r15,#8 ++#define POPARGS_3 addi r15,#12 ++#define POPARGS_4 addi r15,#16 ++#define POPARGS_5 addi r15,#16 ++#define POPARGS_6 addi r15,#16 ++ ++#ifndef NARGS ++#define NARGS 3 /* If we were called with no wrapper, this is really socket() */ ++#endif ++ ++.globl __socket ++ENTRY (__socket) ++ /* This will not work in the case of a socket call being interrupted ++ by a signal. If the signal handler uses any stack the arguments ++ to socket will be trashed. The results of a restart of any ++ socket call are then unpredictable. */ ++ ++ /* Push args onto the stack. */ ++ /* PUSHARGS(NARGS) */ ++#if (NARGS >= 4) ++ push r3 ++ /* If nargs is 6, caller has already pushed arg 5, 6. */ ++ /* If nargs is 5, caller has already pushed arg 5. */ ++#endif ++#if (NARGS >= 3) ++ push r2 ++#endif ++#if (NARGS >= 2) ++ push r1 ++#endif ++ push r0 ++ ++#if defined NEED_CANCELLATION && defined CENABLE ++ SINGLE_THREAD_P ++ bnez r6, 2f ++#endif ++ ++ /* Do the system call trap. */ ++ ldi r0, #P(SOCKOP_,socket) ++ mv r1, r15 ++ ldi r7, #SYS_ify(socketcall) ++ SYSCALL_INST ++ ++ /* Pop args off the stack */ ++ P(POPARGS_,NARGS) ++ ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++ SYSCALL_ERROR_HANDLER ++ .fillinsn ++1: ++ /* Successful; return the syscall's value. */ ++ ret ++ ++#if defined NEED_CANCELLATION && defined CENABLE ++ .fillinsn ++2: ++ SAVE_REGS ++ CENABLE ++ mv r8, r0 ++ ++ ldi r0, #P(SOCKOP_,socket) ++#if !defined PIC ++ add3 r1, r15, #8 ++#else ++ add3 r1, r15, #12 ++#endif ++ ldi r7, #SYS_ify(socketcall) ++ SYSCALL_INST ++ ++ push r0 ++ mv r0, r8 ++ CDISABLE ++ pop r0 ++ RESTORE_REGS ++ ++ P(POPARGS_,NARGS) ++ ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 3f // i.e. error in linux ++ ++ SYSCALL_ERROR_HANDLER ++ .fillinsn ++3: ++ ret ++#endif ++ ++PSEUDO_END (__socket) ++ ++#ifndef NO_WEAK_ALIAS ++weak_alias (__socket, socket) ++#endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sys/cachectl.h ports/sysdeps/unix/sysv/linux/m32r/sys/cachectl.h +--- ports/sysdeps/unix/sysv/linux/m32r/sys/cachectl.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sys/cachectl.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_CACHECTL_H ++#define _SYS_CACHECTL_H 1 ++ ++#include ++ ++/* ++ * Get the kernel definition for the op bits. ++ */ ++#include ++ ++__BEGIN_DECLS ++ ++#ifdef __USE_MISC ++extern int cacheflush (void *addr, __const int nbytes, __const int op) __THROW; ++#endif ++extern int _flush_cache (char *addr, __const int nbytes, __const int op) __THROW; ++ ++__END_DECLS ++ ++#endif /* sys/cachectl.h */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sys/io.h ports/sysdeps/unix/sysv/linux/m32r/sys/io.h +--- ports/sysdeps/unix/sysv/linux/m32r/sys/io.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sys/io.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,48 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _SYS_IO_H ++ ++#define _SYS_IO_H 1 ++#include ++ ++__BEGIN_DECLS ++ ++/* If TURN_ON is TRUE, request for permission to do direct i/o on the ++ port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O ++ permission off for that range. This call requires root privileges. */ ++extern int ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero, ++ permission to access any I/O port is granted. This call requires ++ root privileges. */ ++extern int iopl (int __level) __THROW; ++ ++/* The functions that actually perform reads and writes. */ ++extern unsigned char inb (unsigned long int port) __THROW; ++extern unsigned short int inw (unsigned long int port) __THROW; ++extern unsigned long int inl (unsigned long int port) __THROW; ++ ++extern void outb (unsigned char value, unsigned long int port) __THROW; ++extern void outw (unsigned short value, unsigned long int port) __THROW; ++extern void outl (unsigned long value, unsigned long int port) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_IO_H */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sys/tas.h ports/sysdeps/unix/sysv/linux/m32r/sys/tas.h +--- ports/sysdeps/unix/sysv/linux/m32r/sys/tas.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sys/tas.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,13 @@ ++#ifndef _SYS_TAS_H ++ ++#define _SYS_TAS_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++extern int tas(int *) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_TAS_H */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sys/ucontext.h ports/sysdeps/unix/sysv/linux/m32r/sys/ucontext.h +--- ports/sysdeps/unix/sysv/linux/m32r/sys/ucontext.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sys/ucontext.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,111 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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. */ ++ ++/* Where is System V/SH ABI? */ ++ ++#ifndef _SYS_UCONTEXT_H ++#define _SYS_UCONTEXT_H 1 ++ ++#include ++#include ++ ++/* We need the signal context definitions even if they are not used ++ included in . */ ++#include ++ ++ ++typedef int greg_t; ++ ++/* Number of general registers. */ ++#define NFPREG 16 ++ ++/* Container for all general registers. */ ++typedef greg_t gregset_t[NFPREG]; ++ ++#if 0 ++#ifdef __USE_GNU ++/* Number of each register is the `gregset_t' array. */ ++enum ++{ ++ R0 = 0, ++#define R0 R0 ++ R1 = 1, ++#define R1 R1 ++ R2 = 2, ++#define R2 R2 ++ R3 = 3, ++#define R3 R3 ++ R4 = 4, ++#define R4 R4 ++ R5 = 5, ++#define R5 R5 ++ R6 = 6, ++#define R6 R6 ++ R7 = 7, ++#define R7 R7 ++ R8 = 8, ++#define R8 R8 ++ R9 = 9, ++#define R9 R9 ++ R10 = 10, ++#define R10 R10 ++ R11 = 11, ++#define R11 R11 ++ R12 = 12, ++#define R12 R12 ++ R13 = 13, ++#define R13 R13 ++ R14 = 14, ++#define R14 R14 ++ R15 = 15, ++#define R15 R15 ++}; ++#endif ++#endif /* 0 */ ++ ++typedef int freg_t; ++ ++/* Number of FPU registers. */ ++#define NFPREG 16 ++ ++/* Structure to describe FPU registers. */ ++typedef freg_t fpregset_t[NFPREG]; ++ ++/* Context to describe whole processor state. */ ++typedef struct ++ { ++ gregset_t gregs; ++ fpregset_t fpregs; ++ fpregset_t xfpregs; ++ unsigned int fpscr; ++ unsigned int fpul; ++ unsigned int macl; ++ unsigned int mach; ++ } mcontext_t; ++ ++/* Userlevel context. */ ++typedef struct ucontext ++ { ++ unsigned long int uc_flags; ++ struct ucontext *uc_link; ++ stack_t uc_stack; ++ mcontext_t uc_mcontext; ++ __sigset_t uc_sigmask; ++ } ucontext_t; ++ ++#endif /* sys/ucontext.h */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sys/user.h ports/sysdeps/unix/sysv/linux/m32r/sys/user.h +--- ports/sysdeps/unix/sysv/linux/m32r/sys/user.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sys/user.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,26 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _SYS_USER_H ++#define _SYS_USER_H 1 ++ ++#include ++ ++#include ++ ++#endif /* sys/user.h */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/syscall.S ports/sysdeps/unix/sysv/linux/m32r/syscall.S +--- ports/sysdeps/unix/sysv/linux/m32r/syscall.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/syscall.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,41 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++ ++ENTRY (__syscall) ++ mv r7, r0 // syscall number ++ mv r0, r1 // p1 ++ mv r1, r2 // p2 ++ mv r2, r3 // p3 ++ ld r3, @(sp) // p4 ++ ld r4, @(4,sp) // p5 ++ ld r5, @(8,sp) // p6 ++ ld r6, @(12,sp) // p7 ++ SYSCALL_INST ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++ SYSCALL_ERROR_HANDLER ++ .fillinsn ++1: ++ ret ++PSEUDO_END (__syscall) ++ ++weak_alias (__syscall, syscall) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/syscalls.list ports/sysdeps/unix/sysv/linux/m32r/syscalls.list +--- ports/sysdeps/unix/sysv/linux/m32r/syscalls.list 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/syscalls.list 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,4 @@ ++# File name Caller Syscall name # args Strong name Weak names ++tas - tas i:p __tas tas ++cachectl - cachectl i:pii __cachectl cachectl ++cacheflush - cacheflush i:pii __cacheflush cacheflush +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sysdep.S ports/sysdeps/unix/sysv/linux/m32r/sysdep.S +--- ports/sysdeps/unix/sysv/linux/m32r/sysdep.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sysdep.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,32 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++ ++/* The syscall stubs jump here when they detect an error. ++ The code for Linux is almost identical to the canonical Unix ++ code, except that the error number in R0 is negated. */ ++ ++#undef CALL_MCOUNT ++#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers R0. */ ++ ++ENTRY (__syscall_error) ++ neg r0, r0 ++ ++#define __syscall_error __syscall_error_1 ++#include "../../../m32r/sysdep.S" +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sysdep.h ports/sysdeps/unix/sysv/linux/m32r/sysdep.h +--- ports/sysdeps/unix/sysv/linux/m32r/sysdep.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sysdep.h 2006-03-02 12:29:40.000000000 +0900 +@@ -0,0 +1,294 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, ++ Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _LINUX_M32R_SYSDEP_H ++#define _LINUX_M32R_SYSDEP_H 1 ++ ++/* There is some commonality. */ ++#include "../../../m32r/sysdep.h" ++ ++/* Defines RTLD_PRIVATE_ERRNO. */ ++#include ++ ++/* For Linux we can use the system call table in the header file ++ /usr/include/asm/unistd.h ++ of the kernel. But these symbols do not follow the SYS_* syntax ++ so we have to redefine the `SYS_ify' macro here. */ ++#undef SYS_ify ++#define SYS_ify(syscall_name) __NR_##syscall_name ++ ++#ifdef __ASSEMBLER__ ++ ++/* Linux uses a negative return value to indicate syscall errors, ++ unlike most Unices, which use the condition codes' carry flag. ++ ++ Since version 2.1 the return value of a system call might be ++ negative even if the call succeeded. E.g., the `lseek' system call ++ might return a large offset. Therefore we must not anymore test ++ for < 0, but test for a real error by making sure the value in R0 ++ is a real error number. Linus said he will make sure the no syscall ++ returns a value in -1 .. -4095 as a valid result so we can savely ++ test with -4095. */ ++ ++#define SYSCALL_INST trap #2 || nop ++#define SYSCALL_INST_0 trap #2 || nop ++#define SYSCALL_INST_1 trap #2 || nop ++#define SYSCALL_INST_2 trap #2 || nop ++#define SYSCALL_INST_3 trap #2 || nop ++#define SYSCALL_INST_4 trap #2 || nop ++#define SYSCALL_INST_5 \ ++ ld r4,@sp ! \ ++ trap #2 || nop ++#define SYSCALL_INST_STR_6 \ ++ ld r4,@sp ! \ ++ ld r5,@(4,sp) ! \ ++ trap #2 || nop ++#define SYSCALL_INST_STR_7 \ ++ ld r4,@sp ! \ ++ ld r5,@(4,sp) ! \ ++ ld r6,@(8,sp) ! \ ++ trap #2 || nop ++ ++#define DO_CALL( syscall_name, args ) \ ++ ldi r7,SYS_ify(syscall_name) ! \ ++ SYSCALL_INST_##args ++ ++#undef PSEUDO ++#define PSEUDO(name, syscall_name, args) \ ++ .text !\ ++ENTRY (name) !\ ++ DO_CALL (syscall_name, args) !\ ++ not r1,r0 !\ ++ srai r1,12 !\ ++ bnez r1,.Lpseudo_end !\ ++ SYSCALL_ERROR_HANDLER !\ ++ .fillinsn !\ ++ .Lpseudo_end: ++ ++#undef PSEUDO_END ++#define PSEUDO_END(name) \ ++ END (name) ++ ++#undef PSEUDO_NOERRNO ++#define PSEUDO_NOERRNO(name, syscall_name, args) \ ++ .text !\ ++ ENTRY (name) !\ ++ DO_CALL (syscall_name, args) ++ ++#undef PSEUDO_END_NOERRNO ++#define PSEUDO_END_NOERRNO(name) \ ++ END (name) ++ ++#define ret_NOERRNO ret ++ ++#define PSEUDO_ERRVAL(name, syscall_name, args) \ ++ .text !\ ++ ENTRY (name) !\ ++ DO_CALL (syscall_name, args) ++ ++#undef PSEUDO_END_ERRVAL ++#define PSEUDO_END_ERRVAL(name) \ ++ END (name) ++ ++#define ret_ERRVAL ret ++ ++#ifndef __PIC__ ++# define SYSCALL_ERROR_HANDLER \ ++ LDIMM (r1, C_SYMBOL_NAME(__syscall_error)) !\ ++ jmp r1 !\ ++ ++#else ++# if RTLD_PRIVATE_ERRNO ++# define SYSCALL_ERROR_HANDLER \ ++ neg r1,r0 !\ ++ mv r3,lr !\ ++ bl.s .+4 !\ ++ ld24 r2,#_GLOBAL_OFFSET_TABLE_ !\ ++ add r2,lr !\ ++ mv lr,r3 !\ ++ ld24 r0,#C_SYMBOL_NAME(rtld_errno@GOT) !\ ++ add r2,r0 !\ ++ ld r2,@r2 !\ ++ st r1,@r2 !\ ++ ldi r0,#-1 !\ ++ ret ++ ++# elif defined _LIBC_REENTRANT ++ ++# if USE___THREAD ++# ifndef NOT_IN_libc ++# define SYSCALL_ERROR_ERRNO __libc_errno@GOT ++# else ++# define SYSCALL_ERROR_ERRNO errno@GOT ++# endif ++# define SYSCALL_ERROR_HANDLER \ ++ neg r1,r0 !\ ++ mv r3,lr !\ ++ bl.s .+4 !\ ++ ld24 r2,#_GLOBAL_OFFSET_TABLE_ !\ ++ add r2,lr !\ ++ mv lr,r3 !\ ++ ld24 r0,#C_SYMBOL_NAME(SYSCALL_ERROR_ERRNO) !\ ++ add r2,r0 !\ ++ ld r2,@r2 !\ ++ st r1,@r2 !\ ++ ldi r0,#-1 !\ ++ ret ++ ++# else ++# define SYSCALL_ERROR_HANDLER \ ++ neg r1,r0 !\ ++ push r12 !\ ++ push lr !\ ++ push r1 !\ ++ bl.s .+4 !\ ++ ld24 r12,#_GLOBAL_OFFSET_TABLE_ !\ ++ add r12,lr !\ ++ ld24 r1,#C_SYMBOL_NAME(__errno_location@GOT) !\ ++ add r1,r12 !\ ++ ld r1,@r1 !\ ++ jl r1 !\ ++ pop r1 !\ ++ st r1,@r0 !\ ++ pop lr !\ ++ pop r12 !\ ++ ldi r0,#-1 !\ ++ ret !\ ++ ++# endif ++ ++# else ++/* Store (-r0) into errno through the GOT. */ ++# define SYSCALL_ERROR_HANDLER \ ++ neg r1,r0 !\ ++ mv r3,lr !\ ++ bl.s .+4 !\ ++ ld24 r2,#_GLOBAL_OFFSET_TABLE_ !\ ++ add r2,lr !\ ++ mv lr,r3 !\ ++ ld24 r0,#C_SYMBOL_NAME(errno@GOT) !\ ++ add r2,r0 !\ ++ ld r2,@r2 !\ ++ st r1,@r2 !\ ++ ldi r0,#-1 !\ ++ ret ++ ++# endif /* _LIBC_REENTRANT */ ++#endif /* __PIC__ */ ++ ++#define ret_ERRVAL ret ++ ++#else /* not __ASSEMBLER__ */ ++ ++#undef DO_CALL ++ ++#define SYSCALL_INST_STR "trap #2 || nop\n\t" ++ ++#define ASMFMT_0 \ ++ , "0" (r0) ++#define ASMFMT_1 \ ++ , "0" (r0) ++#define ASMFMT_2 \ ++ , "0" (r0), "r" (r1) ++#define ASMFMT_3 \ ++ , "0" (r0), "r" (r1), "r" (r2) ++#define ASMFMT_4 \ ++ , "0" (r0), "r" (r1), "r" (r2), "r" (r3) ++#define ASMFMT_5 \ ++ , "0" (r0), "r" (r1), "r" (r2), "r" (r3), "r" (r4) ++#define ASMFMT_6 \ ++ , "0" (r0), "r" (r1), "r" (r2), "r" (r3), "r" (r4), "r" (r5) ++#define ASMFMT_7 \ ++ , "0" (r0), "r" (r1), "r" (r2), "r" (r3), "r" (r4), "r" (r5), "r" (r6) ++ ++#define SUBSTITUTE_ARGS_0() \ ++ register long r0 asm ("r0") = 0 ++#define SUBSTITUTE_ARGS_1(arg1) \ ++ register long r0 asm ("r0") = (long)(arg1) ++#define SUBSTITUTE_ARGS_2(arg1, arg2) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2) ++#define SUBSTITUTE_ARGS_3(arg1, arg2, arg3) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2); \ ++ register long r2 asm ("r2") = (long)(arg3) ++#define SUBSTITUTE_ARGS_4(arg1, arg2, arg3, arg4) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2); \ ++ register long r2 asm ("r2") = (long)(arg3); \ ++ register long r3 asm ("r3") = (long)(arg4) ++#define SUBSTITUTE_ARGS_5(arg1, arg2, arg3, arg4, arg5) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2); \ ++ register long r2 asm ("r2") = (long)(arg3); \ ++ register long r3 asm ("r3") = (long)(arg4); \ ++ register long r4 asm ("r4") = (long)(arg5) ++#define SUBSTITUTE_ARGS_6(arg1, arg2, arg3, arg4, arg5, arg6) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2); \ ++ register long r2 asm ("r2") = (long)(arg3); \ ++ register long r3 asm ("r3") = (long)(arg4); \ ++ register long r4 asm ("r4") = (long)(arg5); \ ++ register long r5 asm ("r5") = (long)(arg6) ++#define SUBSTITUTE_ARGS_7(arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2); \ ++ register long r2 asm ("r2") = (long)(arg3); \ ++ register long r3 asm ("r3") = (long)(arg4); \ ++ register long r4 asm ("r4") = (long)(arg5); \ ++ register long r5 asm ("r5") = (long)(arg6); \ ++ register long r6 asm ("r6") = (long)(arg7) ++ ++#undef INLINE_SYSCALL ++#define INLINE_SYSCALL(name, nr, args...) \ ++ ({ \ ++ unsigned int resultvar = INTERNAL_SYSCALL (name, , nr, args); \ ++ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (resultvar, ), 0)) \ ++ { \ ++ __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar, )); \ ++ resultvar = 0xffffffff; \ ++ } \ ++ (int) resultvar; }) ++ ++#undef INTERNAL_SYSCALL ++#define INTERNAL_SYSCALL(name, err, nr, args...) \ ++ ({ \ ++ register long r7 asm ("r7") = SYS_ify (name); \ ++ SUBSTITUTE_ARGS_##nr(args); \ ++ \ ++ asm volatile (SYSCALL_INST_STR "\n\t" \ ++ : "=r" (r0) \ ++ : "r" (r7) ASMFMT_##nr \ ++ : "memory"); \ ++ \ ++ (int) r0; }) ++ ++#undef INTERNAL_SYSCALL_DECL ++#define INTERNAL_SYSCALL_DECL(err) do { } while (0) ++ ++#undef INTERNAL_SYSCALL_ERROR_P ++#define INTERNAL_SYSCALL_ERROR_P(val, err) \ ++ ((unsigned int) (val) >= 0xfffff001u) ++ ++#undef INTERNAL_SYSCALL_ERRNO ++#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) ++ ++#endif /* __ASSEMBLER__ */ ++ ++#endif /* linux/m32r/sysdep.h */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/vfork.S ports/sysdeps/unix/sysv/linux/m32r/vfork.S +--- ports/sysdeps/unix/sysv/linux/m32r/vfork.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/vfork.S 2006-03-02 11:43:35.000000000 +0900 +@@ -0,0 +1,48 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the 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 ++#define _ERRNO_H 1 ++#include ++ ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++ ++#ifdef __NR_vfork ++ ldi r7, #__NR_vfork ++ SYSCALL_INST ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++#endif ++ ++ SYSCALL_ERROR_HANDLER ++ ++ .fillinsn ++1: ++ ret ++ ++PSEUDO_END (__vfork) ++libc_hidden_def(__vfork) ++ ++weak_alias (__vfork, vfork) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/xstat.c ports/sysdeps/unix/sysv/linux/m32r/xstat.c +--- ports/sysdeps/unix/sysv/linux/m32r/xstat.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/xstat.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include --- glibc-2.4.orig/debian/patches/m68k/local-compat.diff +++ glibc-2.4/debian/patches/m68k/local-compat.diff @@ -0,0 +1,22 @@ +# DP: Fixes some old compatibility issues with m68k and lchown/chown + +--- ports/sysdeps/unix/sysv/linux/m68k/chown.c 2006-01-08 09:21:17.000000000 +0100 ++++ ports/sysdeps/unix/sysv/linux/m68k/chown.c 2006-06-01 11:36:57.000000000 +0200 +@@ -67,3 +67,8 @@ + } + libc_hidden_def (__chown) + weak_alias (__chown, chown) ++ ++#include ++#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2) ++compat_symbol (libc, __chown, chown, GLIBC_2_1); ++#endif +--- ports/sysdeps/unix/sysv/linux/m68k/lchown.c 2000-01-17 06:20:35.000000000 +0100 ++++ ports/sysdeps/unix/sysv/linux/m68k/lchown.c 2006-06-01 11:36:57.000000000 +0200 +@@ -1 +1,6 @@ + #include ++ ++#include ++#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2) ++compat_symbol (libc, __lchown, lchown, GLIBC_2_1); ++#endif --- glibc-2.4.orig/debian/patches/m68k/local-fpic.diff +++ glibc-2.4/debian/patches/m68k/local-fpic.diff @@ -0,0 +1,12 @@ +# DP: Make sure libc_nonshared.a is compiled with -fPIC on m68k + +--- ports/sysdeps/m68k/Makefile 2006-06-01 11:20:48.000000000 +0200 ++++ ports/sysdeps/m68k/Makefile 2006-06-01 11:37:21.000000000 +0200 +@@ -44,3 +44,7 @@ + shared-only-routines += libgcc-compat + endif + endif ++ ++# Build objects in libc_nonshared.a with -fPIC (instead of -fpic) to avoid ++# possible linkage problems. ++CFLAGS-.oS += -fPIC --- glibc-2.4.orig/debian/patches/m68k/local-reloc.diff +++ glibc-2.4/debian/patches/m68k/local-reloc.diff @@ -0,0 +1,19 @@ +# DP: Description: binutils bug workaround +# DP: Related bugs: #263601: m68k: workaround for binutils problem +# DP: Dpatch author: Roman Zippel +# DP: Patch author: Richard Zidlicky +# DP: Upstream status: Debian-Specific +# DP: Status Details: Actual fix is to modify m68k binutils. +# DP: Date: 2004-08-09 + +--- glibc-2.3.2/ports/sysdeps/m68k/dl-machine.h.org 2004-08-05 02:00:32.000000000 +0200 ++++ glibc-2.3.2/ports/sysdeps/m68k/dl-machine.h 2004-08-05 02:01:07.000000000 +0200 +@@ -310,6 +310,8 @@ + Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset); + if (ELF32_R_TYPE (reloc->r_info) == R_68K_JMP_SLOT) + *reloc_addr += l_addr; ++ else if (ELF32_R_TYPE (reloc->r_info) == R_68K_NONE) ++ return; + else + _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1); + } --- glibc-2.4.orig/debian/patches/m68k/submitted-gcc34-seccomment.diff +++ glibc-2.4/debian/patches/m68k/submitted-gcc34-seccomment.diff @@ -0,0 +1,29 @@ +# DP: Description: Make glibc-2.3.5 compile with gcc-3.4/4.0 + binutils 2.16 +# on m68k fixed by adding #APP. +# DP: Related bugs: +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: Andreas Schwab +# DP: Upstream status: Pending +# DP: Status Details: +# DP: Date: 2005-08-03 + +From: Andreas Schwab + +--- include/libc-symbols.h 2006-02-24 04:27:11.000000000 +0100 ++++ include/libc-symbols.h 2006-06-01 12:29:12.000000000 +0200 +@@ -232,12 +232,12 @@ + # define __make_section_unallocated(section_string) + # endif + +-/* Tacking on "\n\t#" to the section name makes gcc put it's bogus ++/* Tacking on "\nAPP\t#" to the section name makes gcc put it's bogus + section attributes on what looks like a comment to the assembler. */ + # ifdef HAVE_SECTION_QUOTES +-# define __sec_comment "\"\n\t#\"" ++# define __sec_comment "\"\n#APP\t#\"" + # else +-# define __sec_comment "\n\t#" ++# define __sec_comment "\n#APP\t#" + # endif + # define link_warning(symbol, msg) \ + __make_section_unallocated (".gnu.warning." #symbol) \ --- glibc-2.4.orig/debian/patches/m68k/local-dwarf2-buildfix.diff +++ glibc-2.4/debian/patches/m68k/local-dwarf2-buildfix.diff @@ -0,0 +1,34 @@ +# DP: Description: Adding empty m68k framestate.c not to build for dwarf2. +# DP: Related bugs: +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: GOTO Masanori +# DP: Upstream status: Debian-Specific +# DP: Status Details: m68k uses sjlj exceptions, not dwarf2 unwind. +# DP: This patch adds empty framestate.c for m68k to avoid +# DP: dwarf2 build failure. +# DP: Date: 2003-07-19 (Update 2005-03-16 gotom) + +2005-03-16 GOTO Masanori + + * sysdeps/m68k/unwind-pe.c: Update to fix compilation failure. + +2003-07-19 GOTO Masanori + + * sysdeps/m68k/framestate.c: Add to fix compilation failure + with sjlj exception, suggested by Philip Blundell. + + +--- /dev/null 2003-01-13 18:16:28.000000000 +0900 ++++ sysdeps/m68k/framestate.c 2003-07-16 23:21:34.000000000 +0900 +@@ -0,0 +1,2 @@ ++ ++ +--- /dev/null 2004-12-05 06:07:48.000000000 +0000 ++++ sysdeps/m68k/unwind-pe.c 2005-03-14 05:14:16.000000000 +0000 +@@ -0,0 +1,6 @@ ++#include ++#include ++ ++#define _LIBC_DEFINITIONS ++#define NO_BASE_OF_ENCODED_VALUE ++#include "unwind-pe.h" --- glibc-2.4.orig/debian/patches/m68k/local-mathinline_h.diff +++ glibc-2.4/debian/patches/m68k/local-mathinline_h.diff @@ -0,0 +1,49 @@ +--- libc/ports/sysdeps/m68k/fpu/bits/mathinline.h 2006-03-03 15:22:14.000000000 +0100 ++++ libc/ports/sysdeps/m68k/fpu/bits/mathinline.h 2006-04-07 00:41:04.000000000 +0200 +@@ -100,7 +100,7 @@ + /* Define a const math function. */ + #define __m81_defun(rettype, func, args) \ + __m81_inline rettype __attribute__((__const__)) \ +- __m81_u(func) args ++ __m81_u(func) args __THROW + + /* Define the three variants of a math function that has a direct + implementation in the m68k fpu. FUNC is the name for C (which will be +@@ -314,7 +314,7 @@ + \ + __m81_inline float_type \ + __m81_u(__CONCAT(__fma,s))(float_type __x, float_type __y, \ +- float_type __z) \ ++ float_type __z) __THROW \ + { \ + return (__x * __y) + __z; \ + } +@@ -331,7 +331,7 @@ + # define __inline_functions(float_type, s) \ + __m81_inline void \ + __m81_u(__CONCAT(__sincos,s))(float_type __x, float_type *__sinx, \ +- float_type *__cosx) \ ++ float_type *__cosx) __THROW \ + { \ + __asm ("fsincos%.x %2,%1:%0" \ + : "=f" (*__sinx), "=f" (*__cosx) : "f" (__x)); \ +@@ -351,14 +351,14 @@ + /* Note that there must be no whitespace before the argument passed for + NAME, to make token pasting work correctly with -traditional. */ + # define __inline_forward_c(rettype, name, args1, args2) \ +-extern __inline rettype __attribute__((__const__)) \ +- name args1 \ +-{ \ +- return __CONCAT(__,name) args2; \ ++extern __inline rettype __attribute__((__const__)) \ ++name args1 __THROW \ ++{ \ ++ return __CONCAT(__,name) args2; \ + } + + # define __inline_forward(rettype, name, args1, args2) \ +-extern __inline rettype name args1 \ ++extern __inline rettype name args1 __THROW \ + { \ + return __CONCAT(__,name) args2; \ + } --- glibc-2.4.orig/debian/patches/kfreebsd/local-scripts.diff +++ glibc-2.4/debian/patches/kfreebsd/local-scripts.diff @@ -0,0 +1,117 @@ +diff -urN glibc-2.3.2.orig/abi-tags glibc-2.3.2/abi-tags +--- abi-tags 2002-09-21 02:28:19.000000000 +0200 ++++ abi-tags 2005-06-12 17:58:26.000000000 +0200 +@@ -22,7 +22,7 @@ + + .*-sun-solaris2.* 2 2.0.0 # just an arbitrary value + +-.*-.*-freebsd.*-gnu.* 3 4.0.0 # earliest compatible kernel version ++.*-.*-kfreebsd.* 3 5.4.0 # earliest compatible kernel version + + # There is no catch-all default here because every supported OS that uses + # ELF must have its own unique ABI tag. +diff -urN glibc-2.3.2.orig/configure glibc-2.3.2/configure +--- configure 2005-06-12 17:39:18.000000000 +0200 ++++ configure 2005-06-12 18:02:40.000000000 +0200 +@@ -1774,7 +1774,7 @@ + # i586-linuxaout is mangled into i586-pc-linux-gnuaout + linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*) + ;; +-gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*) ++gnu* | linux* | freebsd* | netbsd* | k*bsd* | sysv4* | solaris2* | irix6*) + # These systems (almost) always use the ELF format. + elf=yes + ;; +@@ -1982,7 +1982,7 @@ + ### + if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then + case "$machine-$host_os" in +- *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*) ++ *-linux* | *-gnu* | *-kfreebsd* | arm*-none* | powerpc-aix4.3.*) + ;; + *) + echo "*** The GNU C library is currently not available for this platform." +@@ -2052,7 +2052,7 @@ + case "$os" in + gnu*) + base_os=mach/hurd ;; +-netbsd* | 386bsd* | freebsd* | bsdi*) ++netbsd* | 386bsd* | freebsd* | bsdi* | k*bsd*) + base_os=unix/bsd/bsd4.4 ;; + osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*) + base_os=unix/bsd ;;diff -urN glibc-2.3.2.orig/configure.in glibc-2.3.2/configure.in +diff -urN glibc-2.3.2.orig/configure.in glibc-2.3.2/configure.in +--- configure.in 2005-06-12 17:39:21.000000000 +0200 ++++ configure.in 2005-06-12 18:01:28.000000000 +0200 +@@ -283,7 +283,7 @@ + # i586-linuxaout is mangled into i586-pc-linux-gnuaout + linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*) + ;; +-gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*) ++gnu* | linux* | freebsd* | netbsd* | k*bsd* | sysv4* | solaris2* | irix6*) + # These systems (almost) always use the ELF format. + elf=yes + ;; +@@ -468,7 +468,7 @@ + ### + if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then + case "$machine-$host_os" in +- *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*) ++ *-linux* | *-gnu* | *-kfreebsd* | arm*-none* | powerpc-aix4.3.*) + ;; + *) + echo "*** The GNU C library is currently not available for this platform." +@@ -539,7 +539,7 @@ + case "$os" in + gnu*) + base_os=mach/hurd ;; +-netbsd* | 386bsd* | freebsd* | bsdi*) ++netbsd* | 386bsd* | freebsd* | bsdi* | k*bsd*) + base_os=unix/bsd/bsd4.4 ;; + osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*) + base_os=unix/bsd ;; +diff -urN glibc-2.3.2.orig/shlib-versions glibc-2.3.2/shlib-versions +--- shlib-versions 2002-09-05 11:31:49.000000000 +0200 ++++ shlib-versions 2005-06-12 18:06:19.000000000 +0200 +@@ -26,6 +26,7 @@ + x86_64-.*-linux.* DEFAULT GLIBC_2.2.5 + powerpc64-.*-linux.* DEFAULT GLIBC_2.3 + .*-.*-gnu-gnu.* DEFAULT GLIBC_2.2.6 ++.*-.*-kfreebsd.* DEFAULT GLIBC_2.3 + + # Configuration Library=version Earliest symbol set (optional) + # ------------- --------------- ------------------------------ +@@ -39,6 +40,7 @@ + hppa.*-.*-.* libm=6 GLIBC_2.2 + .*-.*-linux.* libm=6 + .*-.*-gnu-gnu.* libm=6 ++.*-.*-kfreebsd.* libm=1 + + # We provide libc.so.6 for Linux kernel versions 2.0 and later. + alpha.*-.*-linux.* libc=6.1 +@@ -49,6 +51,7 @@ + sparc64-.*-linux.* libc=6 GLIBC_2.2 + hppa.*-.*-.* libc=6 GLIBC_2.2 + .*-.*-linux.* libc=6 ++.*-.*-kfreebsd.* libc=0.1 + + # libmachuser.so.1 corresponds to mach/*.defs as of Utah's UK22 release. + .*-.*-gnu-gnu.* libmachuser=1 +@@ -73,6 +73,7 @@ + powerpc64.*-.*-linux.* ld=ld64.so.1 GLIBC_2.3 + cris-.*-linux.* ld=ld.so.1 GLIBC_2.2 + x86_64-.*-linux.* ld=ld-linux-x86-64.so.2 GLIBC_2.2.5 ++x86_64-.*-kfreebsd.* ld=ld-kfreebsd-x86-64.so.1 + # We use the ELF ABI standard name for the default. + .*-.*-.* ld=ld.so.1 + +diff -urN glibc-2.3.2.orig/linuxthreads/shlib-versions glibc-2.3.2/linuxthreads/shlib-versions +--- linuxthreads/shlib-versions 2002-09-05 12:14:21.000000000 +0200 ++++ linuxthreads/shlib-versions 2005-06-15 01:40:37.000000000 +0200 +@@ -8,4 +8,5 @@ + cris-.*-linux.* libpthread=0 GLIBC_2.2 + x86_64-.*-linux.* libpthread=0 GLIBC_2.2.5 + powerpc64-.*-linux.* libpthread=0 GLIBC_2.3 +-.*-.*-linux.* libpthread=0 ++.*-.*-kfreebsd.* libpthread=0 GLIBC_2.3 ++.*-.*-.* libpthread=0 --- glibc-2.4.orig/debian/patches/kfreebsd/local-ftw.diff +++ glibc-2.4/debian/patches/kfreebsd/local-ftw.diff @@ -0,0 +1,11 @@ +--- io/ftw.c.orig 2006-05-30 00:56:37.942174148 +0200 ++++ io/ftw.c 2006-05-30 00:56:45.044815874 +0200 +@@ -341,7 +341,7 @@ + + if (dfdp != NULL && *dfdp != -1) + { +- int fd = openat64_not_cancel_3 (*dfdp, data->dirbuf + data->ftw.base, ++ int fd = openat64 (*dfdp, data->dirbuf + data->ftw.base, + O_RDONLY | O_DIRECTORY | O_NDELAY); + dirp->stream = NULL; + if (fd != -1 && (dirp->stream = __fdopendir (fd)) == NULL) --- glibc-2.4.orig/debian/patches/kfreebsd/local-pthread_at_fork.diff +++ glibc-2.4/debian/patches/kfreebsd/local-pthread_at_fork.diff @@ -0,0 +1,11 @@ +--- linuxthreads/old_pthread_atfork.c~ 2005-12-22 13:26:01.000000000 +0000 ++++ linuxthreads/old_pthread_atfork.c 2005-12-22 13:26:01.000000000 +0000 +@@ -19,7 +19,7 @@ + + #include + +-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_3) ++#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_3_2) + # define __pthread_atfork __dyn_pthread_atfork + # include "pthread_atfork.c" + # undef __pthread_atfork --- glibc-2.4.orig/debian/patches/kfreebsd/local-sys_queue_h.diff +++ glibc-2.4/debian/patches/kfreebsd/local-sys_queue_h.diff @@ -0,0 +1,675 @@ +--- misc/sys/queue.h.orig 1999-06-08 23:03:17.000000000 +0200 ++++ misc/sys/queue.h 2005-04-28 22:29:17.000000000 +0200 +@@ -26,50 +26,296 @@ + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * +- * @(#)queue.h 8.3 (Berkeley) 12/13/93 ++ * @(#)queue.h 8.5 (Berkeley) 8/20/94 ++ * $FreeBSD: src/sys/sys/queue.h,v 1.58 2004/04/07 04:19:49 imp Exp $ + */ + +-#ifndef _SYS_QUEUE_H +-#define _SYS_QUEUE_H 1 ++#ifndef _SYS_QUEUE_H_ ++#define _SYS_QUEUE_H_ ++ ++#include + + /* +- * This file defines three types of data structures: lists, tail queues, +- * and circular queues. ++ * This file defines four types of data structures: singly-linked lists, ++ * singly-linked tail queues, lists and tail queues. ++ * ++ * A singly-linked list is headed by a single forward pointer. The elements ++ * are singly linked for minimum space and pointer manipulation overhead at ++ * the expense of O(n) removal for arbitrary elements. New elements can be ++ * added to the list after an existing element or at the head of the list. ++ * Elements being removed from the head of the list should use the explicit ++ * macro for this purpose for optimum efficiency. A singly-linked list may ++ * only be traversed in the forward direction. Singly-linked lists are ideal ++ * for applications with large datasets and few or no removals or for ++ * implementing a LIFO queue. ++ * ++ * A singly-linked tail queue is headed by a pair of pointers, one to the ++ * head of the list and the other to the tail of the list. The elements are ++ * singly linked for minimum space and pointer manipulation overhead at the ++ * expense of O(n) removal for arbitrary elements. New elements can be added ++ * to the list after an existing element, at the head of the list, or at the ++ * end of the list. Elements being removed from the head of the tail queue ++ * should use the explicit macro for this purpose for optimum efficiency. ++ * A singly-linked tail queue may only be traversed in the forward direction. ++ * Singly-linked tail queues are ideal for applications with large datasets ++ * and few or no removals or for implementing a FIFO queue. + * + * A list is headed by a single forward pointer (or an array of forward + * pointers for a hash table header). The elements are doubly linked + * so that an arbitrary element can be removed without a need to +- * traverse the list. New elements can be added to the list after +- * an existing element or at the head of the list. A list may only be +- * traversed in the forward direction. ++ * traverse the list. New elements can be added to the list before ++ * or after an existing element or at the head of the list. A list ++ * may only be traversed in the forward direction. + * + * A tail queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to +- * traverse the list. New elements can be added to the list after +- * an existing element, at the head of the list, or at the end of the +- * list. A tail queue may only be traversed in the forward direction. +- * +- * A circle queue is headed by a pair of pointers, one to the head of the +- * list and the other to the tail of the list. The elements are doubly +- * linked so that an arbitrary element can be removed without a need to +- * traverse the list. New elements can be added to the list before or after +- * an existing element, at the head of the list, or at the end of the list. +- * A circle queue may be traversed in either direction, but has a more +- * complex end of list detection. ++ * traverse the list. New elements can be added to the list before or ++ * after an existing element, at the head of the list, or at the end of ++ * the list. A tail queue may be traversed in either direction. + * + * For details on the use of these macros, see the queue(3) manual page. ++ * ++ * ++ * SLIST LIST STAILQ TAILQ ++ * _HEAD + + + + ++ * _HEAD_INITIALIZER + + + + ++ * _ENTRY + + + + ++ * _INIT + + + + ++ * _EMPTY + + + + ++ * _FIRST + + + + ++ * _NEXT + + + + ++ * _PREV - - - + ++ * _LAST - - + + ++ * _FOREACH + + + + ++ * _FOREACH_SAFE + + + + ++ * _FOREACH_REVERSE - - - + ++ * _FOREACH_REVERSE_SAFE - - - + ++ * _INSERT_HEAD + + + + ++ * _INSERT_BEFORE - + - + ++ * _INSERT_AFTER + + + + ++ * _INSERT_TAIL - - + + ++ * _CONCAT - - + + ++ * _REMOVE_HEAD + - + - ++ * _REMOVE + + + + ++ * + */ ++#define QUEUE_MACRO_DEBUG 0 ++#if QUEUE_MACRO_DEBUG ++/* Store the last 2 places the queue element or head was altered */ ++struct qm_trace { ++ char * lastfile; ++ int lastline; ++ char * prevfile; ++ int prevline; ++}; ++ ++#define TRACEBUF struct qm_trace trace; ++#define TRASHIT(x) do {(x) = (void *)-1;} while (0) ++ ++#define QMD_TRACE_HEAD(head) do { \ ++ (head)->trace.prevline = (head)->trace.lastline; \ ++ (head)->trace.prevfile = (head)->trace.lastfile; \ ++ (head)->trace.lastline = __LINE__; \ ++ (head)->trace.lastfile = __FILE__; \ ++} while (0) ++ ++#define QMD_TRACE_ELEM(elem) do { \ ++ (elem)->trace.prevline = (elem)->trace.lastline; \ ++ (elem)->trace.prevfile = (elem)->trace.lastfile; \ ++ (elem)->trace.lastline = __LINE__; \ ++ (elem)->trace.lastfile = __FILE__; \ ++} while (0) ++ ++#else ++#define QMD_TRACE_ELEM(elem) ++#define QMD_TRACE_HEAD(head) ++#define TRACEBUF ++#define TRASHIT(x) ++#endif /* QUEUE_MACRO_DEBUG */ + + /* +- * List definitions. ++ * Singly-linked List declarations. + */ +-#define LIST_HEAD(name, type) \ ++#define SLIST_HEAD(name, type) \ ++struct name { \ ++ struct type *slh_first; /* first element */ \ ++} ++ ++#define SLIST_HEAD_INITIALIZER(head) \ ++ { NULL } ++ ++#define SLIST_ENTRY(type) \ ++struct { \ ++ struct type *sle_next; /* next element */ \ ++} ++ ++/* ++ * Singly-linked List functions. ++ */ ++#define SLIST_EMPTY(head) ((head)->slh_first == NULL) ++ ++#define SLIST_FIRST(head) ((head)->slh_first) ++ ++#define SLIST_FOREACH(var, head, field) \ ++ for ((var) = SLIST_FIRST((head)); \ ++ (var); \ ++ (var) = SLIST_NEXT((var), field)) ++ ++#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = SLIST_FIRST((head)); \ ++ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ ++ (var) = (tvar)) ++ ++#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ ++ for ((varp) = &SLIST_FIRST((head)); \ ++ ((var) = *(varp)) != NULL; \ ++ (varp) = &SLIST_NEXT((var), field)) ++ ++#define SLIST_INIT(head) do { \ ++ SLIST_FIRST((head)) = NULL; \ ++} while (0) ++ ++#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ ++ SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ ++ SLIST_NEXT((slistelm), field) = (elm); \ ++} while (0) ++ ++#define SLIST_INSERT_HEAD(head, elm, field) do { \ ++ SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ ++ SLIST_FIRST((head)) = (elm); \ ++} while (0) ++ ++#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) ++ ++#define SLIST_REMOVE(head, elm, type, field) do { \ ++ if (SLIST_FIRST((head)) == (elm)) { \ ++ SLIST_REMOVE_HEAD((head), field); \ ++ } \ ++ else { \ ++ struct type *curelm = SLIST_FIRST((head)); \ ++ while (SLIST_NEXT(curelm, field) != (elm)) \ ++ curelm = SLIST_NEXT(curelm, field); \ ++ SLIST_NEXT(curelm, field) = \ ++ SLIST_NEXT(SLIST_NEXT(curelm, field), field); \ ++ } \ ++} while (0) ++ ++#define SLIST_REMOVE_HEAD(head, field) do { \ ++ SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ ++} while (0) ++ ++/* ++ * Singly-linked Tail queue declarations. ++ */ ++#define STAILQ_HEAD(name, type) \ ++struct name { \ ++ struct type *stqh_first;/* first element */ \ ++ struct type **stqh_last;/* addr of last next element */ \ ++} ++ ++#define STAILQ_HEAD_INITIALIZER(head) \ ++ { NULL, &(head).stqh_first } ++ ++#define STAILQ_ENTRY(type) \ ++struct { \ ++ struct type *stqe_next; /* next element */ \ ++} ++ ++/* ++ * Singly-linked Tail queue functions. ++ */ ++#define STAILQ_CONCAT(head1, head2) do { \ ++ if (!STAILQ_EMPTY((head2))) { \ ++ *(head1)->stqh_last = (head2)->stqh_first; \ ++ (head1)->stqh_last = (head2)->stqh_last; \ ++ STAILQ_INIT((head2)); \ ++ } \ ++} while (0) ++ ++#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) ++ ++#define STAILQ_FIRST(head) ((head)->stqh_first) ++ ++#define STAILQ_FOREACH(var, head, field) \ ++ for((var) = STAILQ_FIRST((head)); \ ++ (var); \ ++ (var) = STAILQ_NEXT((var), field)) ++ ++ ++#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = STAILQ_FIRST((head)); \ ++ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ ++ (var) = (tvar)) ++ ++#define STAILQ_INIT(head) do { \ ++ STAILQ_FIRST((head)) = NULL; \ ++ (head)->stqh_last = &STAILQ_FIRST((head)); \ ++} while (0) ++ ++#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ ++ if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ ++ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ ++ STAILQ_NEXT((tqelm), field) = (elm); \ ++} while (0) ++ ++#define STAILQ_INSERT_HEAD(head, elm, field) do { \ ++ if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ ++ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ ++ STAILQ_FIRST((head)) = (elm); \ ++} while (0) ++ ++#define STAILQ_INSERT_TAIL(head, elm, field) do { \ ++ STAILQ_NEXT((elm), field) = NULL; \ ++ *(head)->stqh_last = (elm); \ ++ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ ++} while (0) ++ ++#define STAILQ_LAST(head, type, field) \ ++ (STAILQ_EMPTY((head)) ? \ ++ NULL : \ ++ ((struct type *) \ ++ ((char *)((head)->stqh_last) - __offsetof(struct type, field)))) ++ ++#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) ++ ++#define STAILQ_REMOVE(head, elm, type, field) do { \ ++ if (STAILQ_FIRST((head)) == (elm)) { \ ++ STAILQ_REMOVE_HEAD((head), field); \ ++ } \ ++ else { \ ++ struct type *curelm = STAILQ_FIRST((head)); \ ++ while (STAILQ_NEXT(curelm, field) != (elm)) \ ++ curelm = STAILQ_NEXT(curelm, field); \ ++ if ((STAILQ_NEXT(curelm, field) = \ ++ STAILQ_NEXT(STAILQ_NEXT(curelm, field), field)) == NULL)\ ++ (head)->stqh_last = &STAILQ_NEXT((curelm), field);\ ++ } \ ++} while (0) ++ ++#define STAILQ_REMOVE_HEAD(head, field) do { \ ++ if ((STAILQ_FIRST((head)) = \ ++ STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ ++ (head)->stqh_last = &STAILQ_FIRST((head)); \ ++} while (0) ++ ++#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \ ++ if ((STAILQ_FIRST((head)) = STAILQ_NEXT((elm), field)) == NULL) \ ++ (head)->stqh_last = &STAILQ_FIRST((head)); \ ++} while (0) ++ ++/* ++ * List declarations. ++ */ ++#define LIST_HEAD(name, type) \ + struct name { \ + struct type *lh_first; /* first element */ \ + } + +-#define LIST_ENTRY(type) \ ++#define LIST_HEAD_INITIALIZER(head) \ ++ { NULL } ++ ++#define LIST_ENTRY(type) \ + struct { \ + struct type *le_next; /* next element */ \ + struct type **le_prev; /* address of previous next element */ \ +@@ -78,164 +324,230 @@ + /* + * List functions. + */ +-#define LIST_INIT(head) { \ +- (head)->lh_first = NULL; \ +-} + +-#define LIST_INSERT_AFTER(listelm, elm, field) { \ +- if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \ +- (listelm)->field.le_next->field.le_prev = \ +- &(elm)->field.le_next; \ +- (listelm)->field.le_next = (elm); \ +- (elm)->field.le_prev = &(listelm)->field.le_next; \ +-} ++#define LIST_EMPTY(head) ((head)->lh_first == NULL) + +-#define LIST_INSERT_HEAD(head, elm, field) { \ +- if (((elm)->field.le_next = (head)->lh_first) != NULL) \ +- (head)->lh_first->field.le_prev = &(elm)->field.le_next;\ +- (head)->lh_first = (elm); \ +- (elm)->field.le_prev = &(head)->lh_first; \ +-} ++#define LIST_FIRST(head) ((head)->lh_first) + +-#define LIST_REMOVE(elm, field) { \ +- if ((elm)->field.le_next != NULL) \ +- (elm)->field.le_next->field.le_prev = \ ++#define LIST_FOREACH(var, head, field) \ ++ for ((var) = LIST_FIRST((head)); \ ++ (var); \ ++ (var) = LIST_NEXT((var), field)) ++ ++#define LIST_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = LIST_FIRST((head)); \ ++ (var) && ((tvar) = LIST_NEXT((var), field), 1); \ ++ (var) = (tvar)) ++ ++#define LIST_INIT(head) do { \ ++ LIST_FIRST((head)) = NULL; \ ++} while (0) ++ ++#define LIST_INSERT_AFTER(listelm, elm, field) do { \ ++ if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ ++ LIST_NEXT((listelm), field)->field.le_prev = \ ++ &LIST_NEXT((elm), field); \ ++ LIST_NEXT((listelm), field) = (elm); \ ++ (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ ++} while (0) ++ ++#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ ++ (elm)->field.le_prev = (listelm)->field.le_prev; \ ++ LIST_NEXT((elm), field) = (listelm); \ ++ *(listelm)->field.le_prev = (elm); \ ++ (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ ++} while (0) ++ ++#define LIST_INSERT_HEAD(head, elm, field) do { \ ++ if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ ++ LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ ++ LIST_FIRST((head)) = (elm); \ ++ (elm)->field.le_prev = &LIST_FIRST((head)); \ ++} while (0) ++ ++#define LIST_NEXT(elm, field) ((elm)->field.le_next) ++ ++#define LIST_REMOVE(elm, field) do { \ ++ if (LIST_NEXT((elm), field) != NULL) \ ++ LIST_NEXT((elm), field)->field.le_prev = \ + (elm)->field.le_prev; \ +- *(elm)->field.le_prev = (elm)->field.le_next; \ +-} ++ *(elm)->field.le_prev = LIST_NEXT((elm), field); \ ++} while (0) + + /* +- * Tail queue definitions. ++ * Tail queue declarations. + */ +-#define TAILQ_HEAD(name, type) \ ++#define TAILQ_HEAD(name, type) \ + struct name { \ + struct type *tqh_first; /* first element */ \ + struct type **tqh_last; /* addr of last next element */ \ ++ TRACEBUF \ + } + +-#define TAILQ_ENTRY(type) \ ++#define TAILQ_HEAD_INITIALIZER(head) \ ++ { NULL, &(head).tqh_first } ++ ++#define TAILQ_ENTRY(type) \ + struct { \ + struct type *tqe_next; /* next element */ \ + struct type **tqe_prev; /* address of previous next element */ \ ++ TRACEBUF \ + } + + /* + * Tail queue functions. + */ +-#define TAILQ_INIT(head) { \ +- (head)->tqh_first = NULL; \ +- (head)->tqh_last = &(head)->tqh_first; \ +-} +- +-#define TAILQ_INSERT_HEAD(head, elm, field) { \ +- if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \ +- (elm)->field.tqe_next->field.tqe_prev = \ +- &(elm)->field.tqe_next; \ ++#define TAILQ_CONCAT(head1, head2, field) do { \ ++ if (!TAILQ_EMPTY(head2)) { \ ++ *(head1)->tqh_last = (head2)->tqh_first; \ ++ (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ ++ (head1)->tqh_last = (head2)->tqh_last; \ ++ TAILQ_INIT((head2)); \ ++ QMD_TRACE_HEAD(head); \ ++ QMD_TRACE_HEAD(head2); \ ++ } \ ++} while (0) ++ ++#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) ++ ++#define TAILQ_FIRST(head) ((head)->tqh_first) ++ ++#define TAILQ_FOREACH(var, head, field) \ ++ for ((var) = TAILQ_FIRST((head)); \ ++ (var); \ ++ (var) = TAILQ_NEXT((var), field)) ++ ++#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = TAILQ_FIRST((head)); \ ++ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ ++ (var) = (tvar)) ++ ++#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ ++ for ((var) = TAILQ_LAST((head), headname); \ ++ (var); \ ++ (var) = TAILQ_PREV((var), headname, field)) ++ ++#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ ++ for ((var) = TAILQ_LAST((head), headname); \ ++ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ ++ (var) = (tvar)) ++ ++#define TAILQ_INIT(head) do { \ ++ TAILQ_FIRST((head)) = NULL; \ ++ (head)->tqh_last = &TAILQ_FIRST((head)); \ ++ QMD_TRACE_HEAD(head); \ ++} while (0) ++ ++#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ ++ if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ ++ TAILQ_NEXT((elm), field)->field.tqe_prev = \ ++ &TAILQ_NEXT((elm), field); \ ++ else { \ ++ (head)->tqh_last = &TAILQ_NEXT((elm), field); \ ++ QMD_TRACE_HEAD(head); \ ++ } \ ++ TAILQ_NEXT((listelm), field) = (elm); \ ++ (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ ++ QMD_TRACE_ELEM(&(elm)->field); \ ++ QMD_TRACE_ELEM(&listelm->field); \ ++} while (0) ++ ++#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ ++ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ ++ TAILQ_NEXT((elm), field) = (listelm); \ ++ *(listelm)->field.tqe_prev = (elm); \ ++ (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ ++ QMD_TRACE_ELEM(&(elm)->field); \ ++ QMD_TRACE_ELEM(&listelm->field); \ ++} while (0) ++ ++#define TAILQ_INSERT_HEAD(head, elm, field) do { \ ++ if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ ++ TAILQ_FIRST((head))->field.tqe_prev = \ ++ &TAILQ_NEXT((elm), field); \ + else \ +- (head)->tqh_last = &(elm)->field.tqe_next; \ +- (head)->tqh_first = (elm); \ +- (elm)->field.tqe_prev = &(head)->tqh_first; \ +-} ++ (head)->tqh_last = &TAILQ_NEXT((elm), field); \ ++ TAILQ_FIRST((head)) = (elm); \ ++ (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ ++ QMD_TRACE_HEAD(head); \ ++ QMD_TRACE_ELEM(&(elm)->field); \ ++} while (0) + +-#define TAILQ_INSERT_TAIL(head, elm, field) { \ +- (elm)->field.tqe_next = NULL; \ ++#define TAILQ_INSERT_TAIL(head, elm, field) do { \ ++ TAILQ_NEXT((elm), field) = NULL; \ + (elm)->field.tqe_prev = (head)->tqh_last; \ + *(head)->tqh_last = (elm); \ +- (head)->tqh_last = &(elm)->field.tqe_next; \ +-} +- +-#define TAILQ_INSERT_AFTER(head, listelm, elm, field) { \ +- if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\ +- (elm)->field.tqe_next->field.tqe_prev = \ +- &(elm)->field.tqe_next; \ +- else \ +- (head)->tqh_last = &(elm)->field.tqe_next; \ +- (listelm)->field.tqe_next = (elm); \ +- (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \ +-} +- +-#define TAILQ_REMOVE(head, elm, field) { \ +- if (((elm)->field.tqe_next) != NULL) \ +- (elm)->field.tqe_next->field.tqe_prev = \ ++ (head)->tqh_last = &TAILQ_NEXT((elm), field); \ ++ QMD_TRACE_HEAD(head); \ ++ QMD_TRACE_ELEM(&(elm)->field); \ ++} while (0) ++ ++#define TAILQ_LAST(head, headname) \ ++ (*(((struct headname *)((head)->tqh_last))->tqh_last)) ++ ++#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) ++ ++#define TAILQ_PREV(elm, headname, field) \ ++ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) ++ ++#define TAILQ_REMOVE(head, elm, field) do { \ ++ if ((TAILQ_NEXT((elm), field)) != NULL) \ ++ TAILQ_NEXT((elm), field)->field.tqe_prev = \ + (elm)->field.tqe_prev; \ +- else \ ++ else { \ + (head)->tqh_last = (elm)->field.tqe_prev; \ +- *(elm)->field.tqe_prev = (elm)->field.tqe_next; \ +-} ++ QMD_TRACE_HEAD(head); \ ++ } \ ++ *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ ++ TRASHIT((elm)->field.tqe_next); \ ++ TRASHIT((elm)->field.tqe_prev); \ ++ QMD_TRACE_ELEM(&(elm)->field); \ ++} while (0) + +-/* +- * Circular queue definitions. +- */ +-#define CIRCLEQ_HEAD(name, type) \ +-struct name { \ +- struct type *cqh_first; /* first element */ \ +- struct type *cqh_last; /* last element */ \ +-} + +-#define CIRCLEQ_ENTRY(type) \ +-struct { \ +- struct type *cqe_next; /* next element */ \ +- struct type *cqe_prev; /* previous element */ \ +-} ++#ifdef _KERNEL + + /* +- * Circular queue functions. ++ * XXX insque() and remque() are an old way of handling certain queues. ++ * They bogusly assumes that all queue heads look alike. + */ +-#define CIRCLEQ_INIT(head) { \ +- (head)->cqh_first = (void *)(head); \ +- (head)->cqh_last = (void *)(head); \ +-} + +-#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) { \ +- (elm)->field.cqe_next = (listelm)->field.cqe_next; \ +- (elm)->field.cqe_prev = (listelm); \ +- if ((listelm)->field.cqe_next == (void *)(head)) \ +- (head)->cqh_last = (elm); \ +- else \ +- (listelm)->field.cqe_next->field.cqe_prev = (elm); \ +- (listelm)->field.cqe_next = (elm); \ +-} ++struct quehead { ++ struct quehead *qh_link; ++ struct quehead *qh_rlink; ++}; + +-#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) { \ +- (elm)->field.cqe_next = (listelm); \ +- (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \ +- if ((listelm)->field.cqe_prev == (void *)(head)) \ +- (head)->cqh_first = (elm); \ +- else \ +- (listelm)->field.cqe_prev->field.cqe_next = (elm); \ +- (listelm)->field.cqe_prev = (elm); \ +-} ++#if defined(__GNUC__) || defined(__INTEL_COMPILER) + +-#define CIRCLEQ_INSERT_HEAD(head, elm, field) { \ +- (elm)->field.cqe_next = (head)->cqh_first; \ +- (elm)->field.cqe_prev = (void *)(head); \ +- if ((head)->cqh_last == (void *)(head)) \ +- (head)->cqh_last = (elm); \ +- else \ +- (head)->cqh_first->field.cqe_prev = (elm); \ +- (head)->cqh_first = (elm); \ +-} ++static __inline void ++insque(void *a, void *b) ++{ ++ struct quehead *element = (struct quehead *)a, ++ *head = (struct quehead *)b; + +-#define CIRCLEQ_INSERT_TAIL(head, elm, field) { \ +- (elm)->field.cqe_next = (void *)(head); \ +- (elm)->field.cqe_prev = (head)->cqh_last; \ +- if ((head)->cqh_first == (void *)(head)) \ +- (head)->cqh_first = (elm); \ +- else \ +- (head)->cqh_last->field.cqe_next = (elm); \ +- (head)->cqh_last = (elm); \ ++ element->qh_link = head->qh_link; ++ element->qh_rlink = head; ++ head->qh_link = element; ++ element->qh_link->qh_rlink = element; + } + +-#define CIRCLEQ_REMOVE(head, elm, field) { \ +- if ((elm)->field.cqe_next == (void *)(head)) \ +- (head)->cqh_last = (elm)->field.cqe_prev; \ +- else \ +- (elm)->field.cqe_next->field.cqe_prev = \ +- (elm)->field.cqe_prev; \ +- if ((elm)->field.cqe_prev == (void *)(head)) \ +- (head)->cqh_first = (elm)->field.cqe_next; \ +- else \ +- (elm)->field.cqe_prev->field.cqe_next = \ +- (elm)->field.cqe_next; \ ++static __inline void ++remque(void *a) ++{ ++ struct quehead *element = (struct quehead *)a; ++ ++ element->qh_link->qh_rlink = element->qh_rlink; ++ element->qh_rlink->qh_link = element->qh_link; ++ element->qh_rlink = 0; + } +-#endif /* sys/queue.h */ ++ ++#else /* !(__GNUC__ || __INTEL_COMPILER) */ ++ ++void insque(void *a, void *b); ++void remque(void *a); ++ ++#endif /* __GNUC__ || __INTEL_COMPILER */ ++ ++#endif /* _KERNEL */ ++ ++#endif /* !_SYS_QUEUE_H_ */ --- glibc-2.4.orig/debian/patches/kfreebsd/local-sysdeps.diff +++ glibc-2.4/debian/patches/kfreebsd/local-sysdeps.diff @@ -0,0 +1,21988 @@ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/adjtime.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/adjtime.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/adjtime.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/adjtime.c 2006-01-03 21:41:36.000000000 +0100 +@@ -0,0 +1,51 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_adjtime (const struct __kernel_timeval *delta, ++ struct __kernel_timeval *olddelta); ++ ++int ++__adjtime (const struct timeval *delta, struct timeval *olddelta) ++{ ++ struct __kernel_timeval kdelta; ++ int retval; ++ ++ kdelta.tv_sec = delta->tv_sec; ++ kdelta.tv_usec = delta->tv_usec; ++ if (olddelta != NULL) ++ { ++ struct __kernel_timeval kolddelta; ++ ++ retval = __syscall_adjtime (&kdelta, &kolddelta); ++ if (retval >= 0) ++ { ++ olddelta->tv_sec = kolddelta.tv_sec; ++ olddelta->tv_usec = kolddelta.tv_usec; ++ } ++ } ++ else ++ retval = __syscall_adjtime (&kdelta, NULL); ++ return retval; ++} ++ ++weak_alias (__adjtime, adjtime) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/kernel_time_t.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/kernel_time_t.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/kernel_time_t.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/kernel_time_t.h 2006-01-03 22:37:14.000000000 +0100 +@@ -0,0 +1,143 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 files describe the way that structures using time_t ++ are represented in the kernel */ ++ ++#ifndef _BITS_KERNEL_TIME_T_H ++#define _BITS_TIME_H 1 ++ ++#include ++#include ++ ++/* This structure corresponds to the newer FreeBSD 'struct timespec' */ ++struct __kernel_timespec ++ { ++ int tv_sec; /* Seconds. */ ++ long int tv_nsec; /* Nanoseconds. */ ++ }; ++ ++/* This structure corresponds to the newer FreeBSD 'struct timeval' */ ++struct __kernel_timeval ++ { ++ int tv_sec; /* Seconds. */ ++ __suseconds_t tv_usec; /* Microseconds. */ ++ }; ++ ++/* This structure corresponds to the newer FreeBSD 'struct itimerval' */ ++struct __kernel_itimerval ++ { ++ /* Value to put into `it_value' when the timer expires. */ ++ struct __kernel_timeval it_interval; ++ /* Time to the next timer expiration. */ ++ struct __kernel_timeval it_value; ++ }; ++ ++/* This structure corresponds to the newer FreeBSD 'struct rusage' */ ++struct __kernel_rusage ++ { ++ /* Total amount of user time used. */ ++ struct __kernel_timeval ru_utime; ++ /* Total amount of system time used. */ ++ struct __kernel_timeval ru_stime; ++ /* Maximum resident set size (in kilobytes). */ ++ long int ru_maxrss; ++ /* Amount of sharing of text segment memory ++ with other processes (kilobyte-seconds). */ ++ long int ru_ixrss; ++ /* Amount of data segment memory used (kilobyte-seconds). */ ++ long int ru_idrss; ++ /* Amount of stack memory used (kilobyte-seconds). */ ++ long int ru_isrss; ++ /* Number of soft page faults (i.e. those serviced by reclaiming ++ a page from the list of pages awaiting reallocation. */ ++ long int ru_minflt; ++ /* Number of hard page faults (i.e. those that required I/O). */ ++ long int ru_majflt; ++ /* Number of times a process was swapped out of physical memory. */ ++ long int ru_nswap; ++ /* Number of input operations via the file system. Note: This ++ and `ru_oublock' do not include operations with the cache. */ ++ long int ru_inblock; ++ /* Number of output operations via the file system. */ ++ long int ru_oublock; ++ /* Number of IPC messages sent. */ ++ long int ru_msgsnd; ++ /* Number of IPC messages received. */ ++ long int ru_msgrcv; ++ /* Number of signals delivered. */ ++ long int ru_nsignals; ++ /* Number of voluntary context switches, i.e. because the process ++ gave up the process before it had to (usually to wait for some ++ resource to be available). */ ++ long int ru_nvcsw; ++ /* Number of involuntary context switches, i.e. a higher priority process ++ became runnable or the current process used up its time slice. */ ++ long int ru_nivcsw; ++ }; ++ ++/* This structure corresponds to the newer FreeBSD 'struct msqid_ds' */ ++struct __kernel_msqid_ds ++{ ++ struct ipc_perm msg_perm; /* structure describing operation permission */ ++ void *__msg_first; ++ void *__msg_last; ++ msglen_t __msg_cbytes; /* current number of bytes on queue */ ++ msgqnum_t msg_qnum; /* number of messages currently on queue */ ++ msglen_t msg_qbytes; /* max number of bytes allowed on queue */ ++ __pid_t msg_lspid; /* pid of last msgsnd() */ ++ __pid_t msg_lrpid; /* pid of last msgrcv() */ ++ int msg_stime; /* time of last msgsnd command */ ++ long __unused1; ++ int msg_rtime; /* time of last msgrcv command */ ++ long __unused2; ++ int msg_ctime; /* time of last change */ ++ long __unused3; ++ long __unused4[4]; ++}; ++ ++/* This structure corresponds to the newer FreeBSD 'struct shmid_ds' */ ++struct __kernel_shmid_ds ++ { ++ struct ipc_perm shm_perm; /* operation permission struct */ ++ int shm_segsz; /* size of segment in bytes */ ++ __pid_t shm_lpid; /* pid of last shmop */ ++ __pid_t shm_cpid; /* pid of creator */ ++ shmatt_t shm_nattch; /* number of current attaches */ ++ int shm_atime; /* time of last shmat() */ ++ int shm_dtime; /* time of last shmdt() */ ++ int shm_ctime; /* time of last change by shmctl() */ ++ void *__shm_internal; ++ }; ++ ++/* This structure corresponds to the newer FreeBSD 'struct semid_ds' */ ++struct semid_ds ++{ ++ struct ipc_perm sem_perm; /* operation permission struct */ ++ void *__sem_base; ++ unsigned short int sem_nsems; /* number of semaphores in set */ ++ int sem_otime; /* last semop() time */ ++ long __unused1; ++ int sem_ctime; /* last time changed by semctl() */ ++ long __unused2; ++ long __unused3[4]; ++}; ++ ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/mcontext.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/mcontext.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/mcontext.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/mcontext.h 2006-01-17 19:01:15.000000000 +0100 +@@ -0,0 +1,52 @@ ++/* Machine-dependent processor state structure for FreeBSD. alpha version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++/* Whole processor state. */ ++typedef struct ++ { ++ long mc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* General registers. */ ++ unsigned long mc_regs[32]; ++ long mc_ps; ++ long mc_pc; /* Process counter. */ ++ ++ /* Trap arguments. */ ++ unsigned long mc_traparg_a0; ++ unsigned long mc_traparg_a1; ++ unsigned long mc_traparg_a2; ++ ++ /* Floating-point registers. */ ++ unsigned long mc_fpregs[32]; ++ unsigned long mc_fpcr; ++ unsigned long mc_fp_control; ++#define _MC_FPOWNED_NONE 0 /* FP state not used */ ++#define _MC_FPOWNED_FPU 1 /* FP state came from FPU */ ++#define _MC_FPOWNED_PCB 2 /* FP state came from PCB */ ++ long mc_ownedfp; ++#define _MC_REV0_SIGFRAME 1 /* context is a signal frame */ ++#define _MC_REV0_TRAPFRAME 2 /* context is a trap frame */ ++ long mc_format; ++ long mc_thrptr; /* Thread pointer */ ++ long mc_spare[5]; ++ } mcontext_t; +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/sigcontext.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/sigcontext.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/sigcontext.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/sigcontext.h 2006-01-17 19:01:15.000000000 +0100 +@@ -0,0 +1,84 @@ ++/* Machine-dependent signal context structure for FreeBSD. alpha version. ++ Copyright (C) 1991-1992,1994,1997,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++#ifndef _BITS_SIGCONTEXT_H ++#define _BITS_SIGCONTEXT_H 1 ++ ++/* State of this thread when the signal was taken. */ ++struct sigcontext ++ { ++ __sigset_t sc_mask; /* Blocked signals to restore. */ ++ long sc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* General registers. */ ++ unsigned long sc_regs[32]; ++ long sc_ps; ++ long sc_pc; /* Process counter. */ ++ ++ /* Trap arguments. */ ++ unsigned long sc_traparg_a0; ++ unsigned long sc_traparg_a1; ++ unsigned long sc_traparg_a2; ++ ++ /* Floating-point registers. */ ++ unsigned long sc_fpregs[32]; ++ unsigned long sc_fpcr; ++ unsigned long sc_fp_control; ++ long sc_ownedfp; ++ long sc_format; /* see mcontext_t */ ++ long sc_spare[6]; /* XXX */ ++ }; ++ ++/* Traditional BSD names for some members. */ ++#define sc_sp sc_regs[30] /* Stack pointer. */ ++#define sc_fp sc_regs[15] /* Frame pointer. */ ++ ++ ++#if 0 /* XXX These need verification. */ ++ ++/* Codes for SIGFPE. */ ++#define FPE_INTDIV 1 /* integer divide by zero */ ++#define FPE_INTOVF 2 /* integer overflow */ ++#define FPE_FLTDIV 3 /* floating divide by zero */ ++#define FPE_FLTOVF 4 /* floating overflow */ ++#define FPE_FLTUND 5 /* floating underflow */ ++#define FPE_FLTINX 6 /* floating loss of precision */ ++#define FPE_SUBRNG_FAULT 0x7 /* BOUNDS instruction failed */ ++#define FPE_FLTDNR_FAULT 0x8 /* denormalized operand */ ++#define FPE_EMERR_FAULT 0xa /* mysterious emulation error 33 */ ++#define FPE_EMBND_FAULT 0xb /* emulation BOUNDS instruction failed */ ++ ++/* Codes for SIGILL. */ ++#define ILL_PRIVIN_FAULT 1 ++#define ILL_ALIGN_FAULT 14 ++#define ILL_FPOP_FAULT 24 ++ ++/* Codes for SIGBUS. */ ++#define BUS_PAGE_FAULT 12 ++#define BUS_SEGNP_FAULT 26 ++#define BUS_STK_FAULT 27 ++#define BUS_SEGM_FAULT 29 ++ ++#endif ++ ++#endif /* _BITS_SIGCONTEXT_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/stat16.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/stat16.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/stat16.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/stat16.h 2006-01-03 21:17:01.000000000 +0100 +@@ -0,0 +1,53 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* This structure corresponds to the original FreeBSD 'struct stat' ++ (i.e. _STAT_VER_stat), and is used by the fhstat() system call. */ ++struct stat16 ++ { ++ __dev_t st_dev; /* Device containing the file. */ ++ __ino_t st_ino; /* File serial number. */ ++ ++ __uint16_t st_mode; /* File mode. */ ++ __uint16_t st_nlink; /* Link count. */ ++ ++ __uid_t st_uid; /* User ID of the file's owner. */ ++ __gid_t st_gid; /* Group ID of the file's group. */ ++ ++ __dev_t st_rdev; /* Device number, if device. */ ++ ++ int st_atime; /* Time of last access. */ ++ long int st_atimensec; /* Nanoseconds of last access. */ ++ int st_mtime; /* Time of last modification. */ ++ long int st_mtimensec; /* Nanoseconds of last modification. */ ++ int st_ctime; /* Time of last status change. */ ++ long int st_ctimensec; /* Nanoseconds of last status change. */ ++ ++ __off_t st_size; /* Size of file, in bytes. */ ++ ++ __blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ ++ ++ __blksize_t st_blksize; /* Optimal block size for I/O. */ ++ ++ __uint32_t st_flags; /* User defined flags. */ ++ ++ __uint32_t st_gen; /* Generation number. */ ++ ++ __uint32_t __unused1; ++ __quad_t __unused2[2]; ++ }; +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/stat32.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/stat32.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/stat32.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/stat32.h 2006-01-03 21:17:15.000000000 +0100 +@@ -0,0 +1,52 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* This structure corresponds to the newer FreeBSD 'struct nstat' ++ (i.e. _STAT_VER_nstat). */ ++struct stat32 ++ { ++ __dev_t st_dev; /* Device containing the file. */ ++ __ino_t st_ino; /* File serial number. */ ++ ++ __uint32_t st_mode; /* File mode. */ ++ __uint32_t st_nlink; /* Link count. */ ++ ++ __uid_t st_uid; /* User ID of the file's owner. */ ++ __gid_t st_gid; /* Group ID of the file's group. */ ++ ++ __dev_t st_rdev; /* Device number, if device. */ ++ ++ int st_atime; /* Time of last access. */ ++ long int st_atimensec; /* Nanoseconds of last access. */ ++ int st_mtime; /* Time of last modification. */ ++ long int st_mtimensec; /* Nanoseconds of last modification. */ ++ int st_ctime; /* Time of last status change. */ ++ long int st_ctimensec; /* Nanoseconds of last status change. */ ++ ++ __off_t st_size; /* Size of file, in bytes. */ ++ ++ __blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ ++ ++ __blksize_t st_blksize; /* Optimal block size for I/O. */ ++ ++ __uint32_t st_flags; /* User defined flags. */ ++ ++ __uint32_t st_gen; /* Generation number. */ ++ ++ __quad_t __unused1[2]; ++ }; +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/time.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/time.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/bits/time.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/time.h 2006-02-23 19:25:25.000000000 +0100 +@@ -0,0 +1,89 @@ ++/* System-dependent timing definitions. FreeBSD version. ++ Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Never include this file directly; use instead. ++ */ ++ ++#ifndef __need_timeval ++# ifndef _BITS_TIME_H ++# define _BITS_TIME_H 1 ++ ++/* ISO/IEC 9899:1990 7.12.1: ++ The macro `CLOCKS_PER_SEC' is the number per second of the value ++ returned by the `clock' function. */ ++/* CAE XSH, Issue 4, Version 2: ++ The value of CLOCKS_PER_SEC is required to be 1 million on all ++ XSI-conformant systems. */ ++# define CLOCKS_PER_SEC 1000000l ++ ++# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K ++/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK ++ presents the real value for clock ticks per second for the system. */ ++# define CLK_TCK 100 ++# endif ++ ++# ifdef __USE_POSIX199309 ++/* Identifier for system-wide realtime clock. */ ++# define CLOCK_REALTIME 0 ++/* High-resolution timer from the CPU. */ ++# define CLOCK_PROCESS_CPUTIME_ID 2 ++/* Thread-specific CPU-time clock. */ ++# define CLOCK_THREAD_CPUTIME_ID 3 ++/* Monotonic system-wide clock. */ ++# define CLOCK_MONOTONIC 4 ++/* These are BSD specific clocks. */ ++# ifdef __USE_BSD ++# define CLOCK_VIRTUAL 1 ++# define CLOCK_PROF 2 ++# endif ++ ++/* Flag to indicate time is absolute. */ ++# define TIMER_ABSTIME 1 ++# endif ++ ++ ++/* Getkerninfo clock information structure */ ++struct clockinfo ++ { ++ int hz; /* clock frequency */ ++ int tick; /* micro-seconds per hz tick */ ++ int spare; ++ int stathz; /* statistics clock frequency */ ++ int profhz; /* profiling clock frequency */ ++ }; ++ ++# endif /* bits/time.h */ ++#endif ++ ++#ifdef __need_timeval ++# undef __need_timeval ++# ifndef _STRUCT_TIMEVAL ++# define _STRUCT_TIMEVAL 1 ++# include ++ ++/* A time value that is accurate to the nearest ++ microsecond but also has a range of years. */ ++struct timeval ++ { ++ __time_t tv_sec; /* Seconds. */ ++ __suseconds_t tv_usec; /* Microseconds. */ ++ }; ++# endif /* struct timeval */ ++#endif /* need timeval */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/brk.S sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/brk.S +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/brk.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/brk.S 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,73 @@ ++/* Copyright (C) 1993, 1995-1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Traditional name for the 'brk' system call. */ ++#define SYS_brk SYS_obreak ++ ++#include ++ ++#ifdef PIC ++.section .bss ++ .align 3 ++ .globl __curbrk ++__curbrk: .skip 8 ++ .type __curbrk,@object ++ .size __curbrk,8 ++#else ++.comm __curbrk, 8 ++#endif ++ ++ .text ++LEAF(__brk, 8) ++ ldgp gp, 0(t12) ++ subq sp, 8, sp ++#ifdef PROF ++ .set noat ++ lda AT, _mcount ++ jsr AT, (AT), _mcount ++ .set at ++#endif ++ .prologue 1 ++ ++ /* Save the requested brk across the system call. */ ++ stq a0, 0(sp) ++ ++ ldiq v0, SYS_brk ++ call_pal PAL_callsys ++ ++ ldq a0, 0(sp) ++ ++ /* Test for error. */ ++ bne a3, $error ++ ++ /* Don't need to handle brk(0) specially, because the kernel doesn't ++ support this way of calling brk anyway. */ ++ ++ /* Update __curbrk and return cleanly. */ ++ stq a0, __curbrk ++ mov zero, v0 ++ addq sp, 8, sp ++ ret ++ ++ /* What a horrible way to die. */ ++$error: addq sp, 8, sp ++ jmp zero, __syscall_error ++ ++ END(__brk) ++ ++weak_alias (__brk, brk) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/dl-brk.S sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/dl-brk.S +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/dl-brk.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/dl-brk.S 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/dl-machine.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/dl-machine.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/dl-machine.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/dl-machine.h 2006-02-08 16:21:06.000000000 +0100 +@@ -0,0 +1,34 @@ ++/* Dynamic linker magic for glibc on FreeBSD. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* FreeBSD on alpha can emulate two ABIs (= sets of system calls): ++ The native FreeBSD ABI and OSF/1. Without additional kernel ++ modules, only the FreeBSD ABI is supported. For this reason, we use ++ this ABI, and we have to label every executable as using this ABI, ++ by writing the string "FreeBSD" at byte offset 8 (= EI_ABIVERSION) ++ of every executable. Strictly speaking, only ld.so and the ++ executables would need this labelling. But it's easiest to mark ++ every executable and every shared object the same way. */ ++#define VALID_ELF_HEADER(e_ident, expected, size) \ ++ (memcmp (e_ident, expected, EI_ABIVERSION) == 0 \ ++ && memcmp ((const char *) (e_ident) + EI_ABIVERSION, "FreeBSD", 8) == 0) ++#define VALID_ELF_ABIVERSION(abi) (memcmp (&(abi), "FreeBSD", 8) == 0) ++ ++#include_next +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/fhstatfs64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/fhstatfs64.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/fhstatfs64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/fhstatfs64.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,2 @@ ++/* 'fhstatfs64' is the same as 'fhstatfs', because ++ __fsblkcnt64_t == __fsblkcnt_t and __fsfilcnt64_t == __fsfilcnt_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/fork.S sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/fork.S +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/fork.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/fork.S 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,30 @@ ++/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++PSEUDO (__libc_fork, fork, 0) ++ /* In the parent process, a4 == 0, v0 == child pid. */ ++ /* In the child process, a4 == 1, v0 == parent pid. */ ++ cmovne a4, zero, v0 ++ ret ++ ++PSEUDO_END (__libc_fork) ++ ++weak_alias (__libc_fork, __fork) ++weak_alias (__fork, fork) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/fpu.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/fpu.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/fpu.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/fpu.h 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,128 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FPU_H ++#define _FPU_H 1 ++ ++ ++/* Usage of the fpcr register. ++ The rounding mode bits (in FPCR_DYN_MASK) can be modified in user mode ++ and will be preserved by the kernel when a software assisted floating- ++ point operation or an exception occurs. All other bits will be set by ++ the kernel when a software assisted floating-point operation or an ++ exception occurs. */ ++ ++#if 0 /* Only Linux, not FreeBSD */ ++#define FPCR_DNOD (1UL<<47) /* denorm INV trap disable */ ++#define FPCR_DNZ (1UL<<48) /* denorms to zero */ ++#endif ++#define FPCR_INVD (1UL<<49) /* invalid op disable (opt.) */ ++#define FPCR_DZED (1UL<<50) /* division by zero disable (opt.) */ ++#define FPCR_OVFD (1UL<<51) /* overflow disable (optional) */ ++#define FPCR_INV (1UL<<52) /* invalid operation */ ++#define FPCR_DZE (1UL<<53) /* division by zero */ ++#define FPCR_OVF (1UL<<54) /* overflow */ ++#define FPCR_UNF (1UL<<55) /* underflow */ ++#define FPCR_INE (1UL<<56) /* inexact */ ++#define FPCR_IOV (1UL<<57) /* integer overflow */ ++#define FPCR_UNDZ (1UL<<60) /* underflow to zero (opt.) */ ++#define FPCR_UNFD (1UL<<61) /* underflow disable (opt.) */ ++#define FPCR_INED (1UL<<62) /* inexact disable (opt.) */ ++#define FPCR_SUM (1UL<<63) /* summary bit, an OR of bits 52..56 */ ++ ++#define FPCR_DYN_SHIFT 58 /* first dynamic rounding mode bit */ ++#define FPCR_DYN_CHOPPED (0x0UL << FPCR_DYN_SHIFT) /* towards 0 */ ++#define FPCR_DYN_MINUS (0x1UL << FPCR_DYN_SHIFT) /* towards -INF */ ++#define FPCR_DYN_NORMAL (0x2UL << FPCR_DYN_SHIFT) /* towards nearest */ ++#define FPCR_DYN_PLUS (0x3UL << FPCR_DYN_SHIFT) /* towards +INF */ ++#define FPCR_DYN_MASK (0x3UL << FPCR_DYN_SHIFT) ++ ++#define FPCR_MASK 0xffff800000000000 ++ ++ ++/* IEEE traps are enabled depending on a control word (not to be confused ++ with fpcr!) which can be read using __ieee_get_fp_control() and written ++ using __ieee_set_fp_control(). The bits in these control word are ++ as follows (compatible with Linux and OSF/1). */ ++ ++/* Trap enable bits. Get copied (inverted) to bits 49,50,51,61,62,47 ++ of fpcr in the kernel. */ ++#define IEEE_TRAP_ENABLE_INV (1UL<<1) /* invalid op */ ++#define IEEE_TRAP_ENABLE_DZE (1UL<<2) /* division by zero */ ++#define IEEE_TRAP_ENABLE_OVF (1UL<<3) /* overflow */ ++#define IEEE_TRAP_ENABLE_UNF (1UL<<4) /* underflow */ ++#define IEEE_TRAP_ENABLE_INE (1UL<<5) /* inexact */ ++#if 0 /* Only Linux, not FreeBSD */ ++#define IEEE_TRAP_ENABLE_DNO (1UL<<6) /* denorm */ ++#endif ++#define IEEE_TRAP_ENABLE_MASK (IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE |\ ++ IEEE_TRAP_ENABLE_OVF | IEEE_TRAP_ENABLE_UNF |\ ++ IEEE_TRAP_ENABLE_INE/*| IEEE_TRAP_ENABLE_DNO*/) ++ ++#if 0 /* Only Linux, not FreeBSD */ ++ ++/* Denorm and Underflow flushing. */ ++/* Get copied to bits 48,60 of fpcr in the kernel. */ ++#define IEEE_MAP_DMZ (1UL<<12) /* Map denorm inputs to zero */ ++#define IEEE_MAP_UMZ (1UL<<13) /* Map underflowed outputs to zero */ ++ ++#define IEEE_MAP_MASK (IEEE_MAP_DMZ | IEEE_MAP_UMZ) ++ ++#endif ++ ++/* Status bits. Get copied to bits 52,53,54,55,56 of fpcr in the kernel. */ ++#define IEEE_STATUS_INV (1UL<<17) /* invalid op */ ++#define IEEE_STATUS_DZE (1UL<<18) /* division by zero */ ++#define IEEE_STATUS_OVF (1UL<<19) /* overflow */ ++#define IEEE_STATUS_UNF (1UL<<20) /* underflow */ ++#define IEEE_STATUS_INE (1UL<<21) /* inexact */ ++#if 0 /* Only Linux, not FreeBSD */ ++#define IEEE_STATUS_DNO (1UL<<22) /* denorm */ ++#endif ++ ++#define IEEE_STATUS_MASK (IEEE_STATUS_INV | IEEE_STATUS_DZE | \ ++ IEEE_STATUS_OVF | IEEE_STATUS_UNF | \ ++ IEEE_STATUS_INE /* | IEEE_STATUS_DNO */) ++ ++#define IEEE_SW_MASK (IEEE_TRAP_ENABLE_MASK | \ ++ IEEE_STATUS_MASK /* | IEEE_MAP_MASK */) ++ ++#if 0 /* Only Linux, not FreeBSD */ ++ ++#define IEEE_CURRENT_RM_SHIFT 32 ++#define IEEE_CURRENT_RM_MASK (3UL<, 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_futimes (int fd, const struct __kernel_timeval tvp[2]); ++ ++int ++__futimes (int fd, const struct timeval tvp[2]) ++{ ++ if (tvp != NULL) ++ { ++ struct __kernel_timeval ktv[2]; ++ ++ ktv[0].tv_sec = tvp[0].tv_sec; ++ ktv[0].tv_usec = tvp[0].tv_usec; ++ ktv[1].tv_sec = tvp[1].tv_sec; ++ ktv[1].tv_usec = tvp[1].tv_usec; ++ return __syscall_futimes (fd, ktv); ++ } ++ else ++ return __syscall_futimes (fd, NULL); ++} ++ ++weak_alias (__futimes, futimes) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/getfsstat64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getfsstat64.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/getfsstat64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getfsstat64.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,2 @@ ++/* 'getfsstat64' is the same as 'getfsstat', because ++ __fsblkcnt64_t == __fsblkcnt_t and __fsfilcnt64_t == __fsfilcnt_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/getitimer.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getitimer.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/getitimer.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getitimer.c 2006-01-03 21:41:52.000000000 +0100 +@@ -0,0 +1,49 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_getitimer (int which, struct __kernel_itimerval *value); ++ ++int ++__getitimer (enum __itimer_which which, struct itimerval *value) ++{ ++ struct __kernel_itimerval kvalue; ++ int retval; ++ ++ if (value == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ retval = __syscall_getitimer (which, &kvalue); ++ if (retval >= 0) ++ { ++ value->it_interval.tv_sec = kvalue.it_interval.tv_sec; ++ value->it_interval.tv_usec = kvalue.it_interval.tv_usec; ++ value->it_value.tv_sec = kvalue.it_value.tv_sec; ++ value->it_value.tv_usec = kvalue.it_value.tv_usec; ++ } ++ return retval; ++} ++ ++weak_alias (__getitimer, getitimer) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/getmntinfo64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getmntinfo64.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/getmntinfo64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getmntinfo64.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,2 @@ ++/* 'getmntinfo64' is the same as 'getmntinfo', because ++ __fsblkcnt64_t == __fsblkcnt_t and __fsfilcnt64_t == __fsfilcnt_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/getmntinfo.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getmntinfo.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/getmntinfo.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getmntinfo.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,8 @@ ++/* 'getmntinfo64' is the same as 'getmntinfo', because ++ __fsblkcnt64_t == __fsblkcnt_t and __fsfilcnt64_t == __fsfilcnt_t. */ ++ ++#define getmntinfo64 __no_getmntinfo64_decl ++#include ++#undef getmntinfo64 ++ ++weak_alias (__getmntinfo, getmntinfo64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/getrusage.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getrusage.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/getrusage.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getrusage.c 2006-01-03 21:41:58.000000000 +0100 +@@ -0,0 +1,63 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_getrusage (int who, struct __kernel_rusage *usage); ++ ++int ++__getrusage (enum __rusage_who who, struct rusage *usage) ++{ ++ struct __kernel_rusage kusage; ++ int retval; ++ ++ if (usage == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ retval = __syscall_getrusage (who, &kusage); ++ if (retval >= 0) ++ { ++ usage->ru_utime.tv_sec = kusage.ru_utime.tv_sec; ++ usage->ru_utime.tv_usec = kusage.ru_utime.tv_usec; ++ usage->ru_stime.tv_sec = kusage.ru_stime.tv_sec; ++ usage->ru_stime.tv_usec = kusage.ru_stime.tv_usec; ++ usage->ru_maxrss = kusage.ru_maxrss; ++ usage->ru_ixrss = kusage.ru_ixrss; ++ usage->ru_idrss = kusage.ru_idrss; ++ usage->ru_isrss = kusage.ru_isrss; ++ usage->ru_minflt = kusage.ru_minflt; ++ usage->ru_majflt = kusage.ru_majflt; ++ usage->ru_nswap = kusage.ru_nswap; ++ usage->ru_inblock = kusage.ru_inblock; ++ usage->ru_oublock = kusage.ru_oublock; ++ usage->ru_msgsnd = kusage.ru_msgsnd; ++ usage->ru_msgrcv = kusage.ru_msgrcv; ++ usage->ru_nsignals = kusage.ru_nsignals; ++ usage->ru_nvcsw = kusage.ru_nvcsw; ++ usage->ru_nivcsw = kusage.ru_nivcsw; ++ } ++ return retval; ++} ++ ++weak_alias (__getrusage, getrusage) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/gettimeofday.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/gettimeofday.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/gettimeofday.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/gettimeofday.c 2006-01-03 21:42:04.000000000 +0100 +@@ -0,0 +1,52 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_gettimeofday (struct __kernel_timeval *tv, ++ struct timezone *tz); ++ ++#undef __gettimeofday ++ ++int ++__gettimeofday (struct timeval *tv, struct timezone *tz) ++{ ++ struct __kernel_timeval ktv; ++ int retval; ++ ++ if (tv == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ retval = __syscall_gettimeofday (&ktv, tz); ++ if (retval >= 0) ++ { ++ tv->tv_sec = ktv.tv_sec; ++ tv->tv_usec = ktv.tv_usec; ++ } ++ return retval; ++} ++ ++INTDEF(__gettimeofday) ++ ++weak_alias (__gettimeofday, gettimeofday) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/ieee_get_fp_control.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/ieee_get_fp_control.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/ieee_get_fp_control.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/ieee_get_fp_control.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,35 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++unsigned long ++__ieee_get_fp_control (void) ++{ ++ /* The Alpha hardware requires this to be a system call. */ ++ unsigned long word; ++ ++ if (__sysarch (ALPHA_GET_FPMASK, &word) < 0) ++ abort (); ++ ++ return word; ++} ++ ++weak_alias (__ieee_get_fp_control, ieee_get_fp_control) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/ieee_set_fp_control.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/ieee_set_fp_control.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/ieee_set_fp_control.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/ieee_set_fp_control.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,33 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++void ++__ieee_set_fp_control (unsigned long trap_enable_mask) ++{ ++ /* The Alpha hardware requires this to be a system call. */ ++ unsigned long word = trap_enable_mask; ++ ++ if (__sysarch (ALPHA_SET_FPMASK, &word) < 0) ++ abort (); ++} ++ ++weak_alias (__ieee_set_fp_control, ieee_set_fp_control) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/lutimes.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/lutimes.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/lutimes.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/lutimes.c 2006-01-03 21:42:10.000000000 +0100 +@@ -0,0 +1,44 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_lutimes (const char *file, ++ const struct __kernel_timeval tvp[2]); ++ ++int ++__lutimes (const char *file, const struct timeval tvp[2]) ++{ ++ if (tvp != NULL) ++ { ++ struct __kernel_timeval ktv[2]; ++ ++ ktv[0].tv_sec = tvp[0].tv_sec; ++ ktv[0].tv_usec = tvp[0].tv_usec; ++ ktv[1].tv_sec = tvp[1].tv_sec; ++ ktv[1].tv_usec = tvp[1].tv_usec; ++ return __syscall_lutimes (file, ktv); ++ } ++ else ++ return __syscall_lutimes (file, NULL); ++} ++ ++weak_alias (__lutimes, lutimes) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/machine/pal.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/machine/pal.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/machine/pal.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/machine/pal.h 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,57 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Unprivileged PAL function codes. (The PAL codes which require ++ privileges are useful in the kernel only.) */ ++ ++/* Common PAL codes. */ ++#define PAL_bpt 128 ++#define PAL_bugchk 129 ++#define PAL_callsys 131 ++#define PAL_imb 134 ++#define PAL_rduniq 158 ++#define PAL_wruniq 159 ++#define PAL_gentrap 170 ++#define PAL_nphalt 190 ++ ++/* gentrap causes. */ ++#define GEN_INTOVF -1 /* integer overflow */ ++#define GEN_INTDIV -2 /* integer division by zero */ ++#define GEN_FLTOVF -3 /* fp overflow */ ++#define GEN_FLTDIV -4 /* fp division by zero */ ++#define GEN_FLTUND -5 /* fp underflow */ ++#define GEN_FLTINV -6 /* invalid fp operand */ ++#define GEN_FLTINE -7 /* inexact fp operand */ ++#define GEN_DECOVF -8 /* decimal overflow (for COBOL??) */ ++#define GEN_DECDIV -9 /* decimal division by zero */ ++#define GEN_DECINV -10 /* invalid decimal operand */ ++#define GEN_ROPRAND -11 /* reserved operand */ ++#define GEN_ASSERTERR -12 /* assertion error */ ++#define GEN_NULPTRERR -13 /* null pointer error */ ++#define GEN_STKOVF -14 /* stack overflow */ ++#define GEN_STRLENERR -15 /* string length error */ ++#define GEN_SUBSTRERR -16 /* substring error */ ++#define GEN_RANGERR -17 /* range error */ ++#define GEN_SUBRNG -18 ++#define GEN_SUBRNG1 -19 ++#define GEN_SUBRNG2 -20 ++#define GEN_SUBRNG3 -21 /* these report range errors for */ ++#define GEN_SUBRNG4 -22 /* subscripting (indexing) at levels 0..7 */ ++#define GEN_SUBRNG5 -23 ++#define GEN_SUBRNG6 -24 ++#define GEN_SUBRNG7 -25 +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/Makefile sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/Makefile +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/Makefile 2006-01-03 20:13:02.000000000 +0100 +@@ -0,0 +1,28 @@ ++# Additional header files to be installed in $prefix/include: ++ ++ifeq ($(subdir),misc) ++sysdep_headers += machine/pal.h ++sysdep_routines += sys_select sys_utimes sys_lutimes sys_futimes ++endif ++ ++# Additional functions, and particular system calls: ++ ++ifeq ($(subdir),io) ++sysdep_routines += sys_poll ++endif ++ ++ifeq ($(subdir),math) ++sysdep_routines += ieee_get_fp_control ieee_set_fp_control ++endif ++ ++ifeq ($(subdir),posix) ++sysdep_routines += sys_nanosleep sys_sched_rr_gi ++endif ++ ++ifeq ($(subdir),time) ++sysdep_routines += sys_adjtime sys_gettimeofday sys_settimeofday sys_getitimer sys_setitimer ++endif ++ ++ifeq ($(subdir),resource) ++sysdep_routines += sys_getrusage ++endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/msgctl.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/msgctl.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/msgctl.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/msgctl.c 2006-01-03 22:30:14.000000000 +0100 +@@ -0,0 +1,62 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++extern int __syscall_msgctl (int msqid, int cmd, struct __kernel_msqid_ds *buf); ++ ++int ++__msgctl (int msqid, int cmd, struct msqid_ds *buf) ++{ ++ struct __kernel_msqid_ds kmsqid_ds; ++ int retval; ++ ++ kmsqid_ds.msg_perm = msqid_ds->msg_perm; ++ kmsqid_ds.__msg_first = msqid_ds->__msg_first; ++ kmsqid_ds.__msg_last = msqid_ds->__msg_last; ++ kmsqid_ds.__msg_cbytes = msqid_ds->__msg_cbytes; ++ kmsqid_ds.msg_qnum = msqid_ds->msg_qnum; ++ kmsqid_ds.msg_qbytes = msqid_ds->msg_qbytes; ++ kmsqid_ds.msg_lspid = msqid_ds->msg_lspid; ++ kmsqid_ds.msg_lrpid = msqid_ds->msg_lrpid; ++ kmsqid_ds.msg_stime = msqid_ds->msg_stime; ++ kmsqid_ds.msg_rtime = msqid_ds->msg_rtime; ++ kmsqid_ds.msg_ctime = msqid_ds->msg_ctime; ++ ++ retval = __syscall_msgctl (msqid, cmd, &kmsqid_ds); ++ ++ msqid_ds->msg_perm = kmsqid_ds.msg_perm; ++ msqid_ds->__msg_first = kmsqid_ds.__msg_first; ++ msqid_ds->__msg_last = kmsqid_ds.__msg_last; ++ msqid_ds->__msg_cbytes = kmsqid_ds.__msg_cbytes; ++ msqid_ds->msg_qnum = kmsqid_ds.msg_qnum; ++ msqid_ds->msg_qbytes = kmsqid_ds.msg_qbytes; ++ msqid_ds->msg_lspid = kmsqid_ds.msg_lspid; ++ msqid_ds->msg_lrpid = kmsqid_ds.msg_lrpid; ++ msqid_ds->msg_stime = kmsqid_ds.msg_stime; ++ msqid_ds->msg_rtime = kmsqid_ds.msg_rtime; ++ msqid_ds->msg_ctime = kmsqid_ds.msg_ctime; ++ ++ return retval; ++} ++ ++weak_alias (__msgctl, msgctl) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/nanosleep.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/nanosleep.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/nanosleep.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/nanosleep.c 2006-01-03 21:42:15.000000000 +0100 +@@ -0,0 +1,54 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_nanosleep (const struct __kernel_timespec *requested_time, ++ struct __kernel_timespec *remaining); ++ ++int ++__libc_nanosleep (const struct timespec *requested_time, ++ struct timespec *remaining) ++{ ++ struct __kernel_timespec krequested_time; ++ int retval; ++ ++ krequested_time.tv_sec = requested_time->tv_sec; ++ krequested_time.tv_nsec = requested_time->tv_nsec; ++ if (remaining != NULL) ++ { ++ struct __kernel_timespec kremaining; ++ ++ retval = __syscall_nanosleep (&krequested_time, &kremaining); ++ if (retval >= 0 || errno == EINTR) ++ { ++ remaining->tv_sec = kremaining.tv_sec; ++ remaining->tv_nsec = kremaining.tv_nsec; ++ } ++ } ++ else ++ retval = __syscall_nanosleep (&krequested_time, NULL); ++ return retval; ++} ++ ++weak_alias (__libc_nanosleep, __nanosleep) ++weak_alias (__libc_nanosleep, nanosleep) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/poll.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/poll.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/poll.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/poll.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,46 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* nfds_t is defined as 'unsigned long int' in , but the poll ++ system call expects an 'unsigned int' as second argument. */ ++ ++extern int __syscall_poll (struct pollfd *fds, unsigned int nfds, int timeout); ++ ++int ++__poll (struct pollfd *fds, nfds_t nfds, int timeout) ++{ ++ unsigned int infds = nfds; ++ ++ if (infds == nfds) ++ return INLINE_SYSCALL (poll, 3, fds, infds, timeout); ++ else ++ { ++ /* NFDS doesn't fit into an unsigned int. FDS cannot point to such ++ a big chunk of valid memory. */ ++ __set_errno (EFAULT); ++ return -1; ++ } ++} ++libc_hidden_def (__poll) ++ ++weak_alias (__poll, poll) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/README sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/README +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/README 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/README 2006-01-03 23:06:05.000000000 +0100 +@@ -0,0 +1,11 @@ ++Note that even on 64-bit platforms, because __ino64_t != __ino_t, we have ++stat64 != stat, fstat64 != fstat, lstat64 != lstat, fhstat64 != fhstat, ++glob64 != glob. ++ ++Note that on alpha glue code is used in order to use a 64-bit __time_t with a ++32-bit __kernel_time_t type. All system calls taking arguments with ++'time_t', 'struct timeval', 'struct timespec', 'struct itimerval', ++'struct rusage', 'struct msqid_ds', 'struct shmid_ds', 'struct semid_ds' need ++some special handling. The benefit is that user programs will not need to switch ++from a 32-bit time_t to a 64-bit time_t in 2038. ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/regdef.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/regdef.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/regdef.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/regdef.h 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,62 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _REGDEF_H ++#define _REGDEF_H ++ ++/* Common symbolic names for Alpha registers. ++ Names taken from binutils/opcodes/alpha-dis.c. ++ Register usage info taken from gcc-3.1/gcc/config/alpha/alpha.h. ++ NB: "saved" = "call-saved", "nonsaved" = "call-used". */ ++ ++#define v0 $0 /* nonsaved, first return value */ ++#define t0 $1 /* nonsaved, second return value, lexical closure reg */ ++#define t1 $2 /* nonsaved */ ++#define t2 $3 /* nonsaved */ ++#define t3 $4 /* nonsaved */ ++#define t4 $5 /* nonsaved */ ++#define t5 $6 /* nonsaved */ ++#define t6 $7 /* nonsaved */ ++#define t7 $8 /* nonsaved */ ++#define s0 $9 /* saved */ ++#define s1 $10 /* saved */ ++#define s2 $11 /* saved */ ++#define s3 $12 /* saved */ ++#define s4 $13 /* saved */ ++#define s5 $14 /* saved */ ++#define s6 $15 /* use only in leaf functions without frame pointer */ ++#define fp $15 /* frame pointer */ ++#define a0 $16 /* nonsaved, argument 1 */ ++#define a1 $17 /* nonsaved, argument 2 */ ++#define a2 $18 /* nonsaved, argument 3 */ ++#define a3 $19 /* nonsaved, argument 4 */ ++#define a4 $20 /* nonsaved, argument 5 */ ++#define a5 $21 /* nonsaved, argument 6 */ ++#define t8 $22 /* nonsaved */ ++#define t9 $23 /* nonsaved */ ++#define t10 $24 /* nonsaved */ ++#define t11 $25 /* nonsaved */ ++#define ra $26 /* return address */ ++#define t12 $27 /* current function's address */ ++#define pv $27 /* current function's address */ ++#define AT $28 /* nonsaved, assembler temporary */ ++#define gp $29 /* global pointer */ ++#define sp $30 /* stack pointer */ ++#define zero $31 /* reads as zero, writes go to /dev/null */ ++ ++#endif /* _REGDEF_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/rfork.S sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/rfork.S +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/rfork.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/rfork.S 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,29 @@ ++/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++SYSCALL__ (rfork, 0) ++ /* In the parent process, a4 == 0, v0 == child pid. */ ++ /* In the child process, a4 == 1, v0 == parent pid. */ ++ cmovne a4, zero, v0 ++ ret ++ ++PSEUDO_END (__rfork) ++ ++weak_alias (__rfork, rfork) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/sched_rr_gi.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sched_rr_gi.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/sched_rr_gi.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sched_rr_gi.c 2006-01-03 21:42:20.000000000 +0100 +@@ -0,0 +1,50 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_sched_rr_get_interval (pid_t pid, ++ struct __kernel_timespec *t); ++ ++int ++__sched_rr_get_interval (pid_t pid, struct timespec *t) ++{ ++ struct __kernel_timespec kt; ++ int retval; ++ ++ if (t == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ retval = __syscall_sched_rr_get_interval (pid, &kt); ++ if (retval >= 0) ++ { ++ t->tv_sec = kt.tv_sec; ++ t->tv_nsec = kt.tv_nsec; ++ } ++ return retval; ++} ++ ++weak_alias (__sched_rr_get_interval, sched_rr_get_interval) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/select.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/select.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/select.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/select.c 2006-01-03 21:42:25.000000000 +0100 +@@ -0,0 +1,53 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_select (int nfds, ++ fd_set *readfds, ++ fd_set *writefds, ++ fd_set *exceptfds, ++ struct __kernel_timeval *timeout); ++ ++int ++__select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, ++ struct timeval *timeout) ++{ ++ int retval; ++ ++ if (timeout != NULL) ++ { ++ struct __kernel_timeval ktimeout; ++ ++ ktimeout.tv_sec = timeout->tv_sec; ++ ktimeout.tv_usec = timeout->tv_usec; ++ retval = __syscall_select (nfds, readfds, writefds, exceptfds, &ktimeout); ++ timeout->tv_sec = ktimeout.tv_sec; ++ timeout->tv_usec = ktimeout.tv_usec; ++ } ++ else ++ retval = __syscall_select (nfds, readfds, writefds, exceptfds, NULL); ++ return retval; ++} ++libc_hidden_def (__select) ++ ++weak_alias (__select, select) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/semctl.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/semctl.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/semctl.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/semctl.c 2006-01-03 23:05:38.000000000 +0100 +@@ -0,0 +1,87 @@ ++/* Copyright (C) 1995,1997,1998,2000,2003,2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include /* va_list */ ++#include /* NULL */ ++#include ++ ++/* union semun from FreeBSD */ ++/* ++ * semctl's arg parameter structure ++ */ ++union __kernel_semun ++{ ++ int val; /* value for SETVAL */ ++ struct __kernel_semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */ ++ unsigned short *array; /* array for GETALL & SETALL */ ++}; ++ ++int ++semctl (int semid, int semnum, int cmd, ...) ++{ ++ int result; ++ va_list ap; ++ ++ union semun semun; ++ union semun semun_ptr; ++ ++ union __kernel_semun ksemun; ++ struct __kernel_semid_ds ksemid_ds; ++ ++ va_start (ap, cmd); ++ if (cmd == GETALL || cmd == SETVAL || cmd == SETALL) ++ { ++ semun = va_arg (ap, union semun); ++ semun_ptr = &semun; ++ } ++ else if (cmd == IPC_SET || cmd == IPC_STAT) ++ { ++ semun = va_arg (ap, union semun); ++ ++ ksemid_ds.sem_perm = semun.buf->sem_perm; ++ ksemid_ds.sem_base = semun.buf->sem_base; ++ ksemid_ds.sem_nsems = semun.buf->sem_nsems; ++ ksemid_ds.sem_otime = semun.buf->sem_otime; ++ ksemid_ds.sem_ctime = semun.buf->sem_ctime; ++ ++ ksemun.buf = &ksemid_ds ++ semun_ptr = (semun_ptr *) &ksemun; ++ } ++ else ++ { ++ semun_ptr = NULL; ++ } ++ va_end (ap); ++ ++ result = syscall (SYS_semctl, semid, semnum, cmd, semun_ptr); ++ ++ if (cmd == IPC_SET || cmd == IPC_STAT) ++ { ++ semun.buf->sem_perm = ksemid_ds.sem_perm; ++ semun.buf->sem_base = ksemid_ds.sem_base; ++ semun.buf->sem_nsems = ksemid_ds.sem_nsems; ++ semun.buf->sem_otime = ksemid_ds.sem_otime; ++ semun.buf->sem_ctime = ksemid_ds.sem_ctime; ++ } ++ ++ return result; ++} ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/setfpucw.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/setfpucw.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/setfpucw.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/setfpucw.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,88 @@ ++/* Set FP exception mask and rounding mode. ++ Copyright (C) 1996, 1997, 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++extern unsigned long __ieee_get_fp_control (void); ++extern void __ieee_set_fp_control (unsigned long); ++ ++ ++static inline unsigned long ++rdfpcr (void) ++{ ++ unsigned long fpcr; ++ asm ("excb; mf_fpcr %0" : "=f"(fpcr)); ++ return fpcr; ++} ++ ++static inline void ++wrfpcr (unsigned long fpcr) ++{ ++ asm volatile ("mt_fpcr %0; excb" : : "f"(fpcr)); ++} ++ ++ ++void ++__setfpucw (fpu_control_t fpu_control) ++{ ++ if (!fpu_control) ++ fpu_control = _FPU_DEFAULT; ++ ++ /* Note that the fpu_control argument, as defined in , ++ consists of bits that are not directly related to the bits of the ++ fpcr and fp_control registers. In particular, the precision control ++ (_FPU_EXTENDED, _FPU_DOUBLE, _FPU_SINGLE) and the interrupt mask ++ _FPU_MASK_UM are without effect. */ ++ ++ /* First, set dynamic rounding mode: */ ++ { ++ unsigned long fpcr; ++ ++ fpcr = rdfpcr(); ++ fpcr &= ~FPCR_DYN_MASK; ++ switch (fpu_control & 0xc00) ++ { ++ case _FPU_RC_NEAREST: fpcr |= FPCR_DYN_NORMAL; break; ++ case _FPU_RC_DOWN: fpcr |= FPCR_DYN_MINUS; break; ++ case _FPU_RC_UP: fpcr |= FPCR_DYN_PLUS; break; ++ case _FPU_RC_ZERO: fpcr |= FPCR_DYN_CHOPPED; break; ++ } ++ wrfpcr(fpcr); ++ } ++ ++ /* Now tell kernel about traps that we like to hear about: */ ++ { ++ unsigned long old_fpcw, fpcw; ++ ++ old_fpcw = fpcw = __ieee_get_fp_control (); ++ fpcw &= ~IEEE_TRAP_ENABLE_MASK; ++ ++ if (!(fpu_control & _FPU_MASK_IM)) fpcw |= IEEE_TRAP_ENABLE_INV; ++ if (!(fpu_control & _FPU_MASK_DM)) fpcw |= IEEE_TRAP_ENABLE_UNF; ++ if (!(fpu_control & _FPU_MASK_ZM)) fpcw |= IEEE_TRAP_ENABLE_DZE; ++ if (!(fpu_control & _FPU_MASK_OM)) fpcw |= IEEE_TRAP_ENABLE_OVF; ++ if (!(fpu_control & _FPU_MASK_PM)) fpcw |= IEEE_TRAP_ENABLE_INE; ++ ++ if (fpcw != old_fpcw) ++ __ieee_set_fp_control (fpcw); ++ } ++ ++ __fpu_control = fpu_control; /* update global copy */ ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/setitimer.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/setitimer.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/setitimer.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/setitimer.c 2006-01-03 21:42:34.000000000 +0100 +@@ -0,0 +1,63 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_setitimer (int which, ++ const struct __kernel_itimerval *new, ++ struct __kernel_itimerval *old); ++ ++int ++__setitimer (enum __itimer_which which, ++ const struct itimerval *new, struct itimerval *old) ++{ ++ int retval; ++ struct __kernel_itimerval knew; ++ ++ if (new == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ knew.it_interval.tv_sec = new->it_interval.tv_sec; ++ knew.it_interval.tv_usec = new->it_interval.tv_usec; ++ knew.it_value.tv_sec = new->it_value.tv_sec; ++ knew.it_value.tv_usec = new->it_value.tv_usec; ++ if (old != NULL) ++ { ++ struct __kernel_itimerval kold; ++ ++ retval = __syscall_setitimer (which, &knew, &kold); ++ if (retval >= 0) ++ { ++ old->it_interval.tv_sec = kold.it_interval.tv_sec; ++ old->it_interval.tv_usec = kold.it_interval.tv_usec; ++ old->it_value.tv_sec = kold.it_value.tv_sec; ++ old->it_value.tv_usec = kold.it_value.tv_usec; ++ } ++ } ++ else ++ retval = __syscall_setitimer (which, &knew, NULL); ++ return retval; ++} ++ ++weak_alias (__setitimer, setitimer) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/settimeofday.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/settimeofday.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/settimeofday.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/settimeofday.c 2006-01-03 21:42:40.000000000 +0100 +@@ -0,0 +1,43 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_settimeofday (const struct __kernel_timeval *tv, ++ const struct timezone *tz); ++ ++int ++__settimeofday (const struct timeval *tv, const struct timezone *tz) ++{ ++ struct __kernel_timeval ktv; ++ ++ if (tv == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ ktv.tv_sec = tv->tv_sec; ++ ktv.tv_usec = tv->tv_usec; ++ return __syscall_settimeofday (&ktv, tz); ++} ++ ++weak_alias (__settimeofday, settimeofday) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/shmctl.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/shmctl.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/shmctl.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/shmctl.c 2006-01-03 22:30:03.000000000 +0100 +@@ -0,0 +1,58 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++extern int __syscall_msgctl (int shmid, int cmd, struct __kernel_shmid_ds *buf); ++ ++int ++__msgctl (int shmid, int cmd, struct shmid_ds *buf) ++{ ++ struct __kernel_shmid_ds kshmid_ds; ++ int retval; ++ ++ kshmid_ds.shm_perm = shmid_ds->shm_perm; ++ kshmid_ds.shm_segsz = shmid_ds->shm_segsz; ++ kshmid_ds.shm_lpid = shmid_ds->shm_lpid; ++ kshmid_ds.shm_cpid = shmid_ds->shm_cpid; ++ kshmid_ds.shm_nattch = shmid_ds->shm_nattch; ++ kshmid_ds.shm_atime = shmid_ds->shm_atime; ++ kshmid_ds.shm_dtime = shmid_ds->shm_dtime; ++ kshmid_ds.shm_ctime = shmid_ds->shm_ctime; ++ kshmid_ds.__shm_internal = shmid_ds->__shm_internal; ++ ++ retval = __syscall_shmctl (shmid, cmd, &kshmid_ds); ++ ++ shmid_ds->shm_perm = kshmid_ds.shm_perm; ++ shmid_ds->shm_segsz = kshmid_ds.shm_segsz; ++ shmid_ds->shm_lpid = kshmid_ds.shm_lpid; ++ shmid_ds->shm_cpid = kshmid_ds.shm_cpid; ++ shmid_ds->shm_nattch = kshmid_ds.shm_nattch; ++ shmid_ds->shm_atime = kshmid_ds.shm_atime; ++ shmid_ds->shm_dtime = kshmid_ds.shm_dtime; ++ shmid_ds->shm_ctime = kshmid_ds.shm_ctime; ++ shmid_ds->__shm_internal = kshmid_ds.__shm_internal; ++ ++ return retval; ++} ++ ++weak_alias (__shmctl, shmctl) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/sigcontextinfo.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sigcontextinfo.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/sigcontextinfo.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sigcontextinfo.h 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,25 @@ ++/* Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define SIGCONTEXT int _code, struct sigcontext * ++#define SIGCONTEXT_EXTRA_ARGS _code, ++#define GET_PC(ctx) ((void *) (ctx)->sc_pc) ++#define GET_FRAME(ctx) ((void *) (ctx)->sc_regs[15]) ++#define GET_STACK(ctx) ((void *) (ctx)->sc_regs[30]) ++#define CALL_SIGHANDLER(handler, signo, ctx) \ ++ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/start_thread.S sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/start_thread.S +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/start_thread.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/start_thread.S 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,172 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* __start_thread (flags, stack, func, arg) ++ calls __rfork (flags), and in the child sets the stack pointer and then ++ calls _exit (func (arg)). ++ It cannot be done in portable C. */ ++ ++#include ++#define SIG_SETMASK 3 ++ ++ .text ++ENTRY (__start_thread) ++ /* There is a window of a few instructions, right after the rfork ++ system call, where the handling of a signal would write garbage ++ into the stack shared by the parent and the child (assuming ++ RFMEM is set in flags). To solve this: 1. We block all signals ++ around the rfork system call and unblock them afterwards in ++ the parent and in the child (but only after changing the stack ++ pointer). 2. The child accesses only values passed in registers ++ and on its own stack. This way, if the parent is scheduled to ++ run first, and handles a signal, it will not affect the child; ++ and if the child runs first, and handles a signal, it will use ++ the child's stack and not affect the parent. ++ We need to pass 7 words of info to the child: stack, func, arg, ++ and the signal mask to restore. Since we have only 4 call-saved ++ registers available (%ebx, %esi, %edi, %ebp), we pass only the ++ stack pointer in a register, and the rest through the child's ++ stack. */ ++ lda sp,-56(sp) ++ stq ra,0(sp) ++ stq s0,8(sp) ++ stq s1,16(sp) ++ stq s2,24(sp) ++ stq s3,32(sp) ++ .prologue 1 ++ ++ /* Save arguments. */ ++ mov a0,s1 /* flags */ ++ mov a1,s0 /* stack */ ++ mov a2,s2 /* func */ ++ mov a3,s3 /* arg */ ++ ++ and a0,32,t0 /* flags & RFMEM */ ++ beq t0,$simple ++ ++ /* Block all signals. */ ++ lda t0,-1 ++ stq t0,40(sp) ++ stq t0,48(sp) ++ lda a0,SIG_SETMASK ++ lda a1,40(sp) ++ mov a1,a2 ++ lda v0,SYS_sigprocmask ++ call_pal PAL_callsys ++ bne a3,$error ++ ++ /* Copy all info to the child's stack. */ ++ lda s0,-32(s0) /* room for func, arg, sigset_t */ ++ andnot s0,7,s0 /* make it 8-bytes aligned */ ++ stq s2,8(s0) /* func */ ++ stq s3,0(s0) /* arg */ ++ ldq t0,40(sp) /* sigset_t word 0 */ ++ ldq t1,48(sp) /* sigset_t word 1 */ ++ stq t0,16(s0) ++ stq t1,24(s0) ++ ++ /* Perform the rfork system call. */ ++ mov s1,a0 /* flags */ ++ lda v0,SYS_rfork ++ call_pal PAL_callsys ++ bne a3,$error ++ ++ /* a4 is now 0 for the parent and 1 for the child. */ ++ bne a4,$child ++ ++ /* Save the child pid, currently in v0. */ ++ mov v0,s1 ++ ++ /* Restore the previous signal mask. */ ++ lda a0,SIG_SETMASK ++ lda a1,40(sp) ++ mov zero,a2 ++ lda v0,SYS_sigprocmask ++ call_pal PAL_callsys ++ ++ /* Return the child pid, currently in s1. */ ++ mov s1,v0 ++$retv0: ldq ra,0(sp) ++ ldq s0,8(sp) ++ ldq s1,16(sp) ++ ldq s2,24(sp) ++ ldq s3,32(sp) ++ lda sp,56(sp) ++ ret zero,(ra),1 ++ ++$child: /* Here we are in the child thread. */ ++ ++ /* Set the stack pointer. */ ++ mov s0,sp ++ ++ /* Restore the previous signal mask. */ ++ lda a0,SIG_SETMASK ++ lda a1,16(sp) ++ mov zero,a2 ++ lda v0,SYS_sigprocmask ++ call_pal PAL_callsys ++ ++$child1: ++ /* Call func (arg). */ ++ ldq a0,0(sp) ++ ldq pv,8(sp) ++ jsr ra,(pv),0 ++ ++ /* Tail-call _exit. */ ++ br gp,$here ++$here: ldgp gp,0(gp) ++ mov v0,a0 ++ jmp zero,_exit ++ ++$simple:/* Simple case without signal mask handling. */ ++ ++ /* Copy all info to the child's stack. */ ++ lda s0,-16(s0) /* room for func, arg */ ++ andnot s0,7,s0 /* make it 8-bytes aligned */ ++ stq s2,8(s0) /* func */ ++ stq s3,0(s0) /* arg */ ++ ++ /* Perform the rfork system call. */ ++ mov s1,a0 /* flags */ ++ lda v0,SYS_rfork ++ call_pal PAL_callsys ++ bne a3,$error ++ ++ /* a4 is now 0 for the parent and 1 for the child. */ ++ /* If in the parent, return the child pid, currently in v0. */ ++ beq a4,$retv0 ++ ++$simple_child:/* Here we are in the child thread. */ ++ ++ /* Set the stack pointer. */ ++ mov s0,sp ++ ++ br zero,$child1 ++ ++$error: ldq ra,0(sp) ++ ldq s0,8(sp) ++ ldq s1,16(sp) ++ ldq s2,24(sp) ++ ldq s3,32(sp) ++ lda sp,56(sp) ++#if 0 /* Not needed: The PSEUDO_END expansion starts with this label. */ ++ br zero,1996f ++#endif ++ ++PSEUDO_END (__start_thread) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/statfs64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/statfs64.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/statfs64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/statfs64.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,2 @@ ++/* 'statfs64' is the same as 'statfs', because ++ __fsblkcnt64_t == __fsblkcnt_t and __fsfilcnt64_t == __fsfilcnt_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/sysarch.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sysarch.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/sysarch.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sysarch.h 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,53 @@ ++/* Parameters for the architecture specific system call. alpha version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYSARCH_H ++#define _SYSARCH_H 1 ++ ++#include ++ ++/* Function that can be used as first argument to 'sysarch'. */ ++enum ++ { ++ ALPHA_SETHAE = 0, ++#define ALPHA_SETHAE ALPHA_SETHAE ++ /* Arg is 'unsigned long *'. Returns the current pcb_fp_control. */ ++ ALPHA_GET_FPMASK = 1, ++#define ALPHA_GET_FPMASK ALPHA_GET_FPMASK ++ /* Arg is 'unsigned long *'. Sets the pcb_fp_control and returns its ++ old value in the same memory location. */ ++ ALPHA_SET_FPMASK = 2, ++#define ALPHA_SET_FPMASK ALPHA_SET_FPMASK ++ ALPHA_GET_UAC = 3, ++#define ALPHA_GET_UAC ALPHA_GET_UAC ++ ALPHA_SET_UAC = 4 ++#define ALPHA_SET_UAC ALPHA_SET_UAC ++ }; ++ ++__BEGIN_DECLS ++ ++extern int sysarch (int __cmd, void *__arg); ++ ++#ifdef _LIBC ++extern int __sysarch (int __cmd, void *__arg); ++#endif ++ ++__END_DECLS ++ ++#endif /* _SYSARCH_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/syscall.S sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/syscall.S +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/syscall.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/syscall.S 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/syscalls.list sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/syscalls.list +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/syscalls.list 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/syscalls.list 2006-01-03 22:32:57.000000000 +0100 +@@ -0,0 +1,21 @@ ++# File name Caller Syscall name # args Strong name Weak names ++ ++fhstatfs - fhstatfs i:pp __fhstatfs fhstatfs fhstatfs64 ++fstatfs - fstatfs i:ip __fstatfs fstatfs __fstatfs64 fstatfs64 ++getfsstat - getfsstat i:pii __getfsstat getfsstat __getfsstat64 getfsstat64 ++sys_poll - poll i:pii __syscall_poll ++statfs - statfs i:sp __statfs statfs statfs64 ++sys_adjtime - adjtime i:pp __syscall_adjtime ++sys_futimes - futimes i:ip __syscall_futimes ++sys_getitimer - getitimer i:ip __syscall_getitimer ++sys_getrusage - getrusage i:ip __syscall_getrusage ++sys_gettimeofday - gettimeofday i:PP __syscall_gettimeofday ++sys_lutimes - lutimes i:sp __syscall_lutimes ++sys_msgctl - msgctl i:iip __syscall_msgctl ++sys_nanosleep - nanosleep i:pp __syscall_nanosleep ++sys_sched_rr_gi - sched_rr_get_interval i:ip __syscall_sched_rr_get_interval ++sys_shmctl - shmctl i:iip __syscall_shmctl ++sys_select - select i:iPPPP __syscall_select ++sys_setitimer - setitimer i:ipp __syscall_setitimer ++sys_settimeofday - settimeofday i:PP __syscall_settimeofday ++sys_utimes - utimes i:sp __syscall_utimes +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/sysdep.h sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sysdep.h +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/sysdep.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sysdep.h 2006-01-21 00:13:27.000000000 +0100 +@@ -0,0 +1,34 @@ ++/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FREEBSD_ALPHA_SYSDEP_H ++#define _FREEBSD_ALPHA_SYSDEP_H 1 ++ ++#ifdef __ASSEMBLER__ ++#include /* get PAL_callsys */ ++#else ++#include ++#endif ++ ++#include ++ ++/* FIXME: Is this necessary? */ ++#undef INLINE_SYSCALL ++#define INLINE_SYSCALL(name, nr, args...) __syscall_##name(args) ++ ++#endif /* freebsd/alpha/sysdep.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/utimes.c sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/utimes.c +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/utimes.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/utimes.c 2006-01-03 21:42:48.000000000 +0100 +@@ -0,0 +1,44 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_utimes (const char *file, ++ const struct __kernel_timeval tvp[2]); ++ ++int ++__utimes (const char *file, const struct timeval tvp[2]) ++{ ++ if (tvp != NULL) ++ { ++ struct __kernel_timeval ktv[2]; ++ ++ ktv[0].tv_sec = tvp[0].tv_sec; ++ ktv[0].tv_usec = tvp[0].tv_usec; ++ ktv[1].tv_sec = tvp[1].tv_sec; ++ ktv[1].tv_usec = tvp[1].tv_usec; ++ return __syscall_utimes (file, ktv); ++ } ++ else ++ return __syscall_utimes (file, NULL); ++} ++ ++weak_alias (__utimes, utimes) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/alpha/vfork.S sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/vfork.S +--- null/unix/bsd/bsd4.4/kfreebsd/alpha/vfork.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/vfork.S 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,29 @@ ++/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++SYSCALL__ (vfork, 0) ++ /* In the parent process, a4 == 0, v0 == child pid. */ ++ /* In the child process, a4 == 1, v0 == parent pid. */ ++ cmovne a4, zero, v0 ++ ret ++ ++PSEUDO_END (__vfork) ++ ++weak_alias (__vfork, vfork) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bind.c sysdeps/unix/bsd/bsd4.4/kfreebsd/bind.c +--- null/unix/bsd/bsd4.4/kfreebsd/bind.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bind.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,59 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++/* According to POSIX.1-2004 the len argument specifies the length of ++ the sockaddr structure pointed to by the addrarg argument. However ++ the FreeBSD kernel waits the actual length of the address stored ++ there. The code below emulate this behaviour. */ ++ ++extern int __libc_sa_len (sa_family_t __af); ++extern int __libc_sa_len_internal (sa_family_t __af); ++ ++extern int __syscall_bind (int fd, __CONST_SOCKADDR_ARG addr, ++ socklen_t addrlen) __THROW; ++ ++/* Open a connection on socket FD to peer at ADDR (which LEN bytes long). ++ For connectionless socket types, just set the default address to send to ++ and the only address from which to accept transmissions. ++ Return 0 on success, -1 for errors. */ ++ ++int ++__bind (int fd, __CONST_SOCKADDR_ARG addr, socklen_t addrlen) ++{ ++ socklen_t new_addrlen; ++ ++#ifndef NOT_IN_libc ++ new_addrlen = INTUSE(__libc_sa_len) ((addr.__sockaddr__)->sa_family); ++#else ++ new_addrlen = __libc_sa_len ((addr.__sockaddr__)->sa_family); ++#endif ++ ++ /* Only allow a smaller size, otherwise it could lead to ++ stack corruption */ ++ if (new_addrlen < addrlen) ++ addrlen = new_addrlen; ++ ++ /* We pass 3 arguments. */ ++ return INLINE_SYSCALL (bind, 3, fd, addr, addrlen); ++} ++ ++weak_alias (__bind, bind) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/dirent.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/dirent.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/dirent.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/dirent.h 2006-04-10 23:30:44.000000000 +0200 +@@ -0,0 +1,52 @@ ++/* Directory entry structure `struct dirent'. FreeBSD version. ++ Copyright (C) 1996-1998,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _DIRENT_H ++# error "Never use directly; include instead." ++#endif ++ ++struct dirent ++ { ++ unsigned int d_ino; /* File serial number. */ ++ unsigned short int d_reclen; /* Length of the whole `struct dirent'. */ ++ unsigned char d_type; /* File type, possibly unknown. */ ++ unsigned char d_namlen; /* Length of the file name. */ ++ ++ /* Only this member is in the POSIX standard. */ ++ char d_name[1]; /* File name (actually longer). */ ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct dirent64 ++ { ++ unsigned int d_ino; /* File serial number. */ ++ unsigned short int d_reclen; /* Length of the whole `struct dirent'. */ ++ unsigned char d_type; /* File type, possibly unknown. */ ++ unsigned char d_namlen; /* Length of the file name. */ ++ ++ /* Only this member is in the POSIX standard. */ ++ char d_name[1]; /* File name (actually longer). */ ++ }; ++#endif ++ ++#define d_fileno d_ino /* Backwards compatibility. */ ++ ++#define _DIRENT_HAVE_D_RECLEN 1 ++#define _DIRENT_HAVE_D_NAMLEN 1 ++#define _DIRENT_HAVE_D_TYPE 1 +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/errno.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/errno.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/errno.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/errno.h 2006-03-26 18:58:36.000000000 +0200 +@@ -0,0 +1,182 @@ ++/*- ++ * Copyright (c) 1982, 1986, 1989, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * (c) UNIX System Laboratories, Inc. ++ * All or some portions of this file are derived from material licensed ++ * to the University of California by American Telephone and Telegraph ++ * Co. or Unix System Laboratories, Inc. and are reproduced herein with ++ * the permission of UNIX System Laboratories, Inc. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)errno.h 8.5 (Berkeley) 1/21/94 ++ * based on $FreeBSD: src/sys/sys/errno.h,v 1.28 2005/04/02 12:33:28 das Exp $ ++ */ ++ ++#ifdef _ERRNO_H ++ ++# undef EDOM ++# undef EILSEQ ++# undef ERANGE ++ ++#define EPERM 1 /* Operation not permitted */ ++#define ENOENT 2 /* No such file or directory */ ++#define ESRCH 3 /* No such process */ ++#define EINTR 4 /* Interrupted system call */ ++#define EIO 5 /* Input/output error */ ++#define ENXIO 6 /* Device not configured */ ++#define E2BIG 7 /* Argument list too long */ ++#define ENOEXEC 8 /* Exec format error */ ++#define EBADF 9 /* Bad file descriptor */ ++#define ECHILD 10 /* No child processes */ ++#define EDEADLK 11 /* Resource deadlock avoided */ ++ /* 11 was EAGAIN */ ++#define ENOMEM 12 /* Cannot allocate memory */ ++#define EACCES 13 /* Permission denied */ ++#define EFAULT 14 /* Bad address */ ++#define ENOTBLK 15 /* Block device required */ ++#define EBUSY 16 /* Device busy */ ++#define EEXIST 17 /* File exists */ ++#define EXDEV 18 /* Cross-device link */ ++#define ENODEV 19 /* Operation not supported by device */ ++#define ENOTDIR 20 /* Not a directory */ ++#define EISDIR 21 /* Is a directory */ ++#define EINVAL 22 /* Invalid argument */ ++#define ENFILE 23 /* Too many open files in system */ ++#define EMFILE 24 /* Too many open files */ ++#define ENOTTY 25 /* Inappropriate ioctl for device */ ++#define ETXTBSY 26 /* Text file busy */ ++#define EFBIG 27 /* File too large */ ++#define ENOSPC 28 /* No space left on device */ ++#define ESPIPE 29 /* Illegal seek */ ++#define EROFS 30 /* Read-only filesystem */ ++#define EMLINK 31 /* Too many links */ ++#define EPIPE 32 /* Broken pipe */ ++ ++/* math software */ ++#define EDOM 33 /* Numerical argument out of domain */ ++#define ERANGE 34 /* Result too large */ ++ ++/* non-blocking and interrupt i/o */ ++#define EAGAIN 35 /* Resource temporarily unavailable */ ++#define EWOULDBLOCK EAGAIN /* Operation would block */ ++#define EINPROGRESS 36 /* Operation now in progress */ ++#define EALREADY 37 /* Operation already in progress */ ++ ++/* ipc/network software -- argument errors */ ++#define ENOTSOCK 38 /* Socket operation on non-socket */ ++#define EDESTADDRREQ 39 /* Destination address required */ ++#define EMSGSIZE 40 /* Message too long */ ++#define EPROTOTYPE 41 /* Protocol wrong type for socket */ ++#define ENOPROTOOPT 42 /* Protocol not available */ ++#define EPROTONOSUPPORT 43 /* Protocol not supported */ ++#define ESOCKTNOSUPPORT 44 /* Socket type not supported */ ++#define EOPNOTSUPP 45 /* Operation not supported */ ++#define ENOTSUP EOPNOTSUPP /* Operation not supported */ ++#define EPFNOSUPPORT 46 /* Protocol family not supported */ ++#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */ ++#define EADDRINUSE 48 /* Address already in use */ ++#define EADDRNOTAVAIL 49 /* Can't assign requested address */ ++ ++/* ipc/network software -- operational errors */ ++#define ENETDOWN 50 /* Network is down */ ++#define ENETUNREACH 51 /* Network is unreachable */ ++#define ENETRESET 52 /* Network dropped connection on reset */ ++#define ECONNABORTED 53 /* Software caused connection abort */ ++#define ECONNRESET 54 /* Connection reset by peer */ ++#define ENOBUFS 55 /* No buffer space available */ ++#define EISCONN 56 /* Socket is already connected */ ++#define ENOTCONN 57 /* Socket is not connected */ ++#define ESHUTDOWN 58 /* Can't send after socket shutdown */ ++#define ETOOMANYREFS 59 /* Too many references: can't splice */ ++#define ETIMEDOUT 60 /* Operation timed out */ ++#define ECONNREFUSED 61 /* Connection refused */ ++ ++#define ELOOP 62 /* Too many levels of symbolic links */ ++#define ENAMETOOLONG 63 /* File name too long */ ++ ++/* should be rearranged */ ++#define EHOSTDOWN 64 /* Host is down */ ++#define EHOSTUNREACH 65 /* No route to host */ ++#define ENOTEMPTY 66 /* Directory not empty */ ++ ++/* quotas & mush */ ++#define EPROCLIM 67 /* Too many processes */ ++#define EUSERS 68 /* Too many users */ ++#define EDQUOT 69 /* Disc quota exceeded */ ++ ++/* Network File System */ ++#define ESTALE 70 /* Stale NFS file handle */ ++#define EREMOTE 71 /* Too many levels of remote in path */ ++#define EBADRPC 72 /* RPC struct is bad */ ++#define ERPCMISMATCH 73 /* RPC version wrong */ ++#define EPROGUNAVAIL 74 /* RPC prog. not avail */ ++#define EPROGMISMATCH 75 /* Program version wrong */ ++#define EPROCUNAVAIL 76 /* Bad procedure for program */ ++ ++#define ENOLCK 77 /* No locks available */ ++#define ENOSYS 78 /* Function not implemented */ ++ ++#define EFTYPE 79 /* Inappropriate file type or format */ ++#define EAUTH 80 /* Authentication error */ ++#define ENEEDAUTH 81 /* Need authenticator */ ++#define EIDRM 82 /* Identifier removed */ ++#define ENOMSG 83 /* No message of desired type */ ++#define EOVERFLOW 84 /* Value too large to be stored in data type */ ++#define ECANCELED 85 /* Operation canceled */ ++#define EILSEQ 86 /* Illegal byte sequence */ ++#define ENOATTR 87 /* Attribute not found */ ++ ++#define EDOOFUS 88 /* Programming error */ ++ ++#define EBADMSG 89 /* Bad message */ ++#define EMULTIHOP 90 /* Multihop attempted */ ++#define ENOLINK 91 /* Link has been severed */ ++#define EPROTO 92 /* Protocol error */ ++ ++#define ELAST 92 /* Must be equal largest errno */ ++ ++# ifndef __ASSEMBLER__ ++/* Function to get address of global `errno' variable. */ ++extern int *__errno_location (void) __THROW __attribute__ ((__const__)); ++ ++# if !defined _LIBC || defined _LIBC_REENTRANT ++/* When using threads, errno is a per-thread value. */ ++# define errno (*__errno_location ()) ++# endif ++# endif /* !__ASSEMBLER__ */ ++#endif /* _ERRNO_H */ ++ ++#if !defined _ERRNO_H && defined __need_Emath ++/* This is ugly but the kernel header is not clean enough. We must ++ define only the values EDOM, EILSEQ and ERANGE in case __need_Emath is ++ defined. */ ++ ++#define EDOM 33 /* Numerical argument out of domain */ ++#define ERANGE 34 /* Result too large */ ++#define EILSEQ 86 /* Illegal byte sequence */ ++ ++#endif /* !_ERRNO_H && __need_Emath */ ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/fcntl.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/fcntl.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/fcntl.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/fcntl.h 2006-05-30 22:22:12.000000000 +0200 +@@ -0,0 +1,143 @@ ++/* O_*, F_*, FD_* bit values for FreeBSD. ++ Copyright (C) 1991-1992, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FCNTL_H ++#error "Never use directly; include instead." ++#endif ++ ++#include ++ ++/* File access modes for `open' and `fcntl'. */ ++#define O_RDONLY 0 /* Open read-only. */ ++#define O_WRONLY 1 /* Open write-only. */ ++#define O_RDWR 2 /* Open read/write. */ ++ ++ ++/* Bits OR'd into the second argument to open. */ ++#define O_CREAT 0x0200 /* Create file if it doesn't exist. */ ++#define O_EXCL 0x0800 /* Fail if file already exists. */ ++#define O_TRUNC 0x0400 /* Truncate file to zero length. */ ++#define O_NOCTTY 0x8000 /* Don't assign a controlling terminal. */ ++#ifdef __USE_MISC ++#define O_ASYNC 0x0040 /* Send SIGIO to owner when data is ready. */ ++#define O_FSYNC 0x0080 /* Synchronous writes. */ ++#define O_SYNC O_FSYNC ++#define O_SHLOCK 0x0010 /* Open with shared file lock. */ ++#define O_EXLOCK 0x0020 /* Open with shared exclusive lock. */ ++#define O_NOFOLLOW 0x0100 /* Don't follow symlinks. */ ++#define O_DIRECT 0x00010000 /* Attempt to bypass buffer cache */ ++#endif ++ ++/* File status flags for `open' and `fcntl'. */ ++#define O_APPEND 0x0008 /* Writes append to the file. */ ++#define O_NONBLOCK 0x0004 /* Non-blocking I/O. */ ++ ++#ifdef __USE_BSD ++#define O_NDELAY O_NONBLOCK ++#endif ++ ++/* Since 'off_t' is 64-bit, O_LARGEFILE is a no-op. */ ++#define O_LARGEFILE 0 ++ ++/* FreeBSD doesn't have smaller grained synchronicity control than per file. ++ fdatasync() is equivalent to fsync(), so we define O_DSYNC == O_SYNC. */ ++#if defined __USE_POSIX199309 || defined __USE_UNIX98 ++# define O_DSYNC O_SYNC /* Synchronize data. */ ++# define O_RSYNC O_SYNC /* Synchronize read operations. */ ++#endif ++ ++#ifdef __USE_BSD ++/* Bits in the file status flags returned by F_GETFL. ++ These are all the O_* flags, plus FREAD and FWRITE, which are ++ independent bits set by which of O_RDONLY, O_WRONLY, and O_RDWR, was ++ given to `open'. */ ++#define FREAD 1 ++#define FWRITE 2 ++ ++/* Traditional BSD names the O_* bits. */ ++#define FASYNC O_ASYNC ++#define FCREAT O_CREAT ++#define FEXCL O_EXCL ++#define FTRUNC O_TRUNC ++#define FNOCTTY O_NOCTTY ++#define FFSYNC O_FSYNC ++#define FSYNC O_SYNC ++#define FAPPEND O_APPEND ++#define FNONBLOCK O_NONBLOCK ++#define FNDELAY O_NDELAY ++#endif ++ ++/* Mask for file access modes. This is system-dependent in case ++ some system ever wants to define some other flavor of access. */ ++#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) ++ ++/* Values for the second argument to `fcntl'. */ ++#define F_DUPFD 0 /* Duplicate file descriptor. */ ++#define F_GETFD 1 /* Get file descriptor flags. */ ++#define F_SETFD 2 /* Set file descriptor flags. */ ++#define F_GETFL 3 /* Get file status flags. */ ++#define F_SETFL 4 /* Set file status flags. */ ++#ifdef __USE_BSD ++#define F_GETOWN 5 /* Get owner (receiver of SIGIO). */ ++#define F_SETOWN 6 /* Set owner (receiver of SIGIO). */ ++#endif ++#define F_GETLK 7 /* Get record locking info. */ ++#define F_SETLK 8 /* Set record locking info (non-blocking). */ ++#define F_SETLKW 9 /* Set record locking info (blocking). */ ++ ++/* File descriptor flags used with F_GETFD and F_SETFD. */ ++#define FD_CLOEXEC 1 /* Close on exec. */ ++ ++ ++#include ++ ++/* The structure describing an advisory lock. This is the type of the third ++ argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests. */ ++struct flock ++ { ++ __off_t l_start; /* Offset where the lock begins. */ ++ __off_t l_len; /* Size of the locked area; zero means until EOF. */ ++ __pid_t l_pid; /* Process holding the lock. */ ++ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ ++ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct flock64 ++ { ++ __off64_t l_start; /* Offset where the lock begins. */ ++ __off64_t l_len; /* Size of the locked area; zero means until EOF. */ ++ __pid_t l_pid; /* Process holding the lock. */ ++ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ ++ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ ++ }; ++#endif ++ ++/* Values for the `l_type' field of a `struct flock'. */ ++#define F_RDLCK 1 /* Read lock. */ ++#define F_WRLCK 3 /* Write lock. */ ++#define F_UNLCK 2 /* Remove lock. */ ++ ++#ifdef __USE_BSD ++/* Operations for flock(). */ ++# define LOCK_SH 1 /* shared lock */ ++# define LOCK_EX 2 /* exclusive lock */ ++# define LOCK_NB 4 /* or'd with one of the above to prevent blocking */ ++# define LOCK_UN 8 /* remove lock */ ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/in.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/in.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/in.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/in.h 2006-01-16 20:40:34.000000000 +0100 +@@ -0,0 +1,249 @@ ++/* Copyright (C) 1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* FreeBSD version. */ ++ ++#ifndef _NETINET_IN_H ++# error "Never use directly; include instead." ++#endif ++ ++ ++/* Link numbers. */ ++#define IMPLINK_IP 155 ++#define IMPLINK_LOWEXPER 156 ++#define IMPLINK_HIGHEXPER 158 ++ ++ ++/* Options for use with `getsockopt' and `setsockopt' at the IP level. ++ The first word in the comment at the right is the data type used; ++ "bool" means a boolean value stored in an `int'. */ ++#define IP_OPTIONS 1 /* ip_opts; IP per-packet options. */ ++#define IP_HDRINCL 2 /* int; Header is included with data. */ ++#define IP_TOS 3 /* int; IP type of service and precedence. */ ++#define IP_TTL 4 /* int; IP time to live. */ ++#define IP_RECVOPTS 5 /* bool; Receive all IP options w/datagram. */ ++#define IP_RECVRETOPTS 6 /* bool; Receive IP options for response. */ ++#define IP_RECVDSTADDR 7 /* bool; Receive IP dst addr w/datagram. */ ++#define IP_RETOPTS 8 /* ip_opts; Set/get IP per-packet options. */ ++#define IP_MULTICAST_IF 9 /* in_addr; set/get IP multicast i/f */ ++#define IP_MULTICAST_TTL 10 /* u_char; set/get IP multicast ttl */ ++#define IP_MULTICAST_LOOP 11 /* i_char; set/get IP multicast loopback */ ++#define IP_ADD_MEMBERSHIP 12 /* ip_mreq; add an IP group membership */ ++#define IP_DROP_MEMBERSHIP 13 /* ip_mreq; drop an IP group membership */ ++#define IP_MULTICAST_VIF 14 /* set/get IP mcast virt. iface */ ++#define IP_RSVP_ON 15 /* enable RSVP in kernel */ ++#define IP_RSVP_OFF 16 /* disable RSVP in kernel */ ++#define IP_RSVP_VIF_ON 17 /* set RSVP per-vif socket */ ++#define IP_RSVP_VIF_OFF 18 /* unset RSVP per-vif socket */ ++#define IP_PORTRANGE 19 /* int; range to choose for unspec port */ ++#define IP_RECVIF 20 /* bool; receive reception if w/dgram */ ++/* for IPSEC */ ++#define IP_IPSEC_POLICY 21 /* int; set/get security policy */ ++#define IP_FAITH 22 /* bool; accept FAITH'ed connections */ ++ ++#define IP_FW_ADD 50 /* add a firewall rule to chain */ ++#define IP_FW_DEL 51 /* delete a firewall rule from chain */ ++#define IP_FW_FLUSH 52 /* flush firewall rule chain */ ++#define IP_FW_ZERO 53 /* clear single/all firewall counter(s) */ ++#define IP_FW_GET 54 /* get entire firewall rule chain */ ++#define IP_FW_RESETLOG 55 /* reset logging counters */ ++ ++#define IP_DUMMYNET_CONFIGURE 60 /* add/configure a dummynet pipe */ ++#define IP_DUMMYNET_DEL 61 /* delete a dummynet pipe from chain */ ++#define IP_DUMMYNET_FLUSH 62 /* flush dummynet */ ++#define IP_DUMMYNET_GET 64 /* get entire dummynet pipes */ ++ ++/* To select the IP level. */ ++#define SOL_IP 0 ++ ++/* ++ * Defaults and limits for options ++ */ ++#define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */ ++#define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */ ++#define IP_MAX_MEMBERSHIPS 20 /* per socket */ ++ ++/* ++ * Argument for IP_PORTRANGE: ++ * - which range to search when port is unspecified at bind() or connect() ++ */ ++#define IP_PORTRANGE_DEFAULT 0 /* default range */ ++#define IP_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */ ++#define IP_PORTRANGE_LOW 2 /* "low" - vouchsafe security */ ++ ++/* ++ * Names for IP sysctl objects ++ */ ++#define IPCTL_FORWARDING 1 /* act as router */ ++#define IPCTL_SENDREDIRECTS 2 /* may send redirects when forwarding */ ++#define IPCTL_DEFTTL 3 /* default TTL */ ++#ifdef notyet ++#define IPCTL_DEFMTU 4 /* default MTU */ ++#endif ++#define IPCTL_RTEXPIRE 5 /* cloned route expiration time */ ++#define IPCTL_RTMINEXPIRE 6 /* min value for expiration time */ ++#define IPCTL_RTMAXCACHE 7 /* trigger level for dynamic expire */ ++#define IPCTL_SOURCEROUTE 8 /* may perform source routes */ ++#define IPCTL_DIRECTEDBROADCAST 9 /* may re-broadcast received packets */ ++#define IPCTL_INTRQMAXLEN 10 /* max length of netisr queue */ ++#define IPCTL_INTRQDROPS 11 /* number of netisr q drops */ ++#define IPCTL_STATS 12 /* ipstat structure */ ++#define IPCTL_ACCEPTSOURCEROUTE 13 /* may accept source routed packets */ ++#define IPCTL_FASTFORWARDING 14 /* use fast IP forwarding code */ ++#define IPCTL_KEEPFAITH 15 /* FAITH IPv4->IPv6 translater ctl */ ++#define IPCTL_GIF_TTL 16 /* default TTL for gif encap packet */ ++#define IPCTL_MAXID 17 ++ ++/* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS. ++ The `ip_dst' field is used for the first-hop gateway when using a ++ source route (this gets put into the header proper). */ ++struct ip_opts ++ { ++ struct in_addr ip_dst; /* First hop; zero without source route. */ ++ char ip_opts[40]; /* Actually variable in size. */ ++ }; ++ ++/* Options for use with `getsockopt' and `setsockopt' at the IPv6 level. ++ The first word in the comment at the right is the data type used; ++ "bool" means a boolean value stored in an `int'. */ ++#define IPV6_SOCKOPT_RESERVED1 3 /* reserved for future use */ ++#define IPV6_UNICAST_HOPS 4 /* int; IP6 hops */ ++#define IPV6_MULTICAST_IF 9 /* u_int; set/get IP6 multicast i/f */ ++#define IPV6_MULTICAST_HOPS 10 /* int; set/get IP6 multicast hops */ ++#define IPV6_MULTICAST_LOOP 11 /* u_int; set/get IP6 multicast loopback */ ++#define IPV6_JOIN_GROUP 12 /* ip6_mreq; join a group membership */ ++#define IPV6_LEAVE_GROUP 13 /* ip6_mreq; leave a group membership */ ++#define IPV6_PORTRANGE 14 /* int; range to choose for unspec port */ ++#define ICMP6_FILTER 18 /* icmp6_filter; icmp6 filter */ ++ ++#define IPV6_CHECKSUM 26 /* int; checksum offset for raw socket */ ++#define IPV6_V6ONLY 27 /* bool; make AF_INET6 sockets v6 only */ ++ ++#define IPV6_IPSEC_POLICY 28 /* struct; get/set security policy */ ++#define IPV6_FAITH 29 /* bool; accept FAITH'ed connections */ ++ ++#define IPV6_FW_ADD 30 /* add a firewall rule to chain */ ++#define IPV6_FW_DEL 31 /* delete a firewall rule from chain */ ++#define IPV6_FW_FLUSH 32 /* flush firewall rule chain */ ++#define IPV6_FW_ZERO 33 /* clear single/all firewall counter(s) */ ++#define IPV6_FW_GET 34 /* get entire firewall rule chain */ ++#define IPV6_RTHDRDSTOPTS 35 /* ip6_dest; send dst option before rthdr */ ++ ++#define IPV6_RECVPKTINFO 36 /* bool; recv if, dst addr */ ++#define IPV6_RECVHOPLIMIT 37 /* bool; recv hop limit */ ++#define IPV6_RECVRTHDR 38 /* bool; recv routing header */ ++#define IPV6_RECVHOPOPTS 39 /* bool; recv hop-by-hop option */ ++#define IPV6_RECVDSTOPTS 40 /* bool; recv dst option after rthdr */ ++ ++#define IPV6_USE_MIN_MTU 42 /* bool; send packets at the minimum MTU */ ++#define IPV6_RECVPATHMTU 43 /* bool; notify an according MTU */ ++#define IPV6_PATHMTU 44 /* mtuinfo; get the current path MTU (sopt), ++ 4 bytes int; MTU notification (cmsg) */ ++ ++#define IPV6_PKTINFO 46 /* in6_pktinfo; send if, src addr */ ++#define IPV6_HOPLIMIT 47 /* int; send hop limit */ ++#define IPV6_NEXTHOP 48 /* sockaddr; next hop addr */ ++#define IPV6_HOPOPTS 49 /* ip6_hbh; send hop-by-hop option */ ++#define IPV6_DSTOPTS 50 /* ip6_dest; send dst option befor rthdr */ ++#define IPV6_RTHDR 51 /* ip6_rthdr; send routing header */ ++ ++#define IPV6_RECVTCLASS 57 /* bool; recv traffic class values */ ++ ++#define IPV6_AUTOFLOWLABEL 59 /* bool; attach flowlabel automagically */ ++ ++#define IPV6_TCLASS 61 /* int; send traffic class value */ ++#define IPV6_DONTFRAG 62 /* bool; disable IPv6 fragmentation */ ++ ++#define IPV6_PREFER_TEMPADDR 63 /* int; prefer temporary addresses as ++ * the source address. ++ */ ++ ++/* Obsolete synonyms for the above. */ ++#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP ++#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP ++#define IPV6_RXHOPOPTS IPV6_HOPOPTS ++#define IPV6_RXDSTOPTS IPV6_DSTOPTS ++ ++/* Socket level values for IPv6. */ ++#define SOL_IPV6 41 ++#define SOL_ICMPV6 58 ++ ++/* ++ * Defaults and limits for options ++ */ ++#define IPV6_DEFAULT_MULTICAST_HOPS 1 /* normally limit m'casts to 1 hop */ ++#define IPV6_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */ ++ ++/* ++ * Argument for IPV6_PORTRANGE: ++ * - which range to search when port is unspecified at bind() or connect() ++ */ ++#define IPV6_PORTRANGE_DEFAULT 0 /* default range */ ++#define IPV6_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */ ++#define IPV6_PORTRANGE_LOW 2 /* "low" - vouchsafe security */ ++ ++/* Routing header options for IPv6. */ ++#define IPV6_RTHDR_LOOSE 0 /* Hop doesn't need to be neighbour. */ ++#define IPV6_RTHDR_STRICT 1 /* Hop must be a neighbour. */ ++ ++#define IPV6_RTHDR_TYPE_0 0 /* IPv6 Routing header type 0. */ ++ ++/* ++ * Names for IP sysctl objects ++ */ ++#define IPV6CTL_FORWARDING 1 /* act as router */ ++#define IPV6CTL_SENDREDIRECTS 2 /* may send redirects when forwarding*/ ++#define IPV6CTL_DEFHLIM 3 /* default Hop-Limit */ ++#define IPV6CTL_FORWSRCRT 5 /* forward source-routed dgrams */ ++#define IPV6CTL_STATS 6 /* stats */ ++#define IPV6CTL_MRTSTATS 7 /* multicast forwarding stats */ ++#define IPV6CTL_MRTPROTO 8 /* multicast routing protocol */ ++#define IPV6CTL_MAXFRAGPACKETS 9 /* max packets reassembly queue */ ++#define IPV6CTL_SOURCECHECK 10 /* verify source route and intf */ ++#define IPV6CTL_SOURCECHECK_LOGINT 11 /* minimume logging interval */ ++#define IPV6CTL_ACCEPT_RTADV 12 ++#define IPV6CTL_KEEPFAITH 13 ++#define IPV6CTL_LOG_INTERVAL 14 ++#define IPV6CTL_HDRNESTLIMIT 15 ++#define IPV6CTL_DAD_COUNT 16 ++#define IPV6CTL_AUTO_FLOWLABEL 17 ++#define IPV6CTL_DEFMCASTHLIM 18 ++#define IPV6CTL_GIF_HLIM 19 /* default HLIM for gif encap packet */ ++#define IPV6CTL_KAME_VERSION 20 ++#define IPV6CTL_USE_DEPRECATED 21 /* use deprecated addr (RFC2462 5.5.4) */ ++#define IPV6CTL_RR_PRUNE 22 /* walk timer for router renumbering */ ++#define IPV6CTL_V6ONLY 24 ++#define IPV6CTL_RTEXPIRE 25 /* cloned route expiration time */ ++#define IPV6CTL_RTMINEXPIRE 26 /* min value for expiration time */ ++#define IPV6CTL_RTMAXCACHE 27 /* trigger level for dynamic expire */ ++ ++#define IPV6CTL_USETEMPADDR 32 /* use temporary addresses (RFC3041) */ ++#define IPV6CTL_TEMPPLTIME 33 /* preferred lifetime for tmpaddrs */ ++#define IPV6CTL_TEMPVLTIME 34 /* valid lifetime for tmpaddrs */ ++#define IPV6CTL_AUTO_LINKLOCAL 35 /* automatic link-local addr assign */ ++#define IPV6CTL_RIP6STATS 36 /* raw_ip6 stats */ ++#define IPV6CTL_PREFER_TEMPADDR 37 /* prefer temporary addr as src */ ++#define IPV6CTL_ADDRCTLPOLICY 38 /* get/set address selection policy */ ++ ++#define IPV6CTL_MAXFRAGS 41 /* max fragments */ ++ ++/* New entries should be added here from current IPV6CTL_MAXID value. */ ++/* to define items, should talk with KAME guys first, for *BSD compatibility */ ++/* 42-44 is already used in KAME */ ++#define IPV6CTL_STEALTH 45 ++#define IPV6CTL_MAXID 46 +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/ioctls.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/ioctls.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/ioctls.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/ioctls.h 2006-05-02 21:24:22.000000000 +0200 +@@ -0,0 +1,67 @@ ++/*- ++ * Copyright (c) 1982, 1986, 1990 The Regents of the University of California. ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)ioctl.h 8.6 (Berkeley) 3/28/94 ++ */ ++ ++#ifndef _IOCTLS_H_ ++#define _IOCTLS_H_ ++ ++#include ++ ++#include ++ ++/* ++ * @(#)ioctl.h 8.6 (Berkeley) 3/28/94 ++ */ ++ ++#define TIOCGSIZE TIOCGWINSZ ++#define TIOCSSIZE TIOCSWINSZ ++ ++#include ++ ++#include ++ ++#ifndef _SYS_IOCTL_COMPAT_H_ ++#ifndef BURN_BRIDGES ++ ++#undef ECHO /* see bits/termios.h */ ++#undef MDMBUF /* see bits/termios.h */ ++#undef TOSTOP /* see bits/termios.h */ ++#undef FLUSHO /* see bits/termios.h */ ++#undef PENDIN /* see bits/termios.h */ ++#undef NOFLSH /* see bits/termios.h */ ++ ++#include ++ ++#define TAB3 XTABS /* expand tabs on output */ ++ ++#endif /* !BURN_BRIDGES */ ++#endif /* !_SYS_IOCTL_COMPAT_H_ */ ++ ++#endif /* !_IOCTLS_H_ */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/ioctl-types.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/ioctl-types.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/ioctl-types.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/ioctl-types.h 2006-05-02 21:24:22.000000000 +0200 +@@ -0,0 +1,57 @@ ++/* Structure types for pre-termios terminal ioctls. FreeBSD version. ++ Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_IOCTL_H ++# error "Never use directly; include instead." ++#endif ++ ++/* Type of ARG for TIOCGETC and TIOCSETC requests. */ ++/* struct tchars is defined in */ ++#define _IOT_tchars /* Hurd ioctl type field. */ \ ++ _IOT (_IOTS (char), 6, 0, 0, 0, 0) ++ ++/* Type of ARG for TIOCGLTC and TIOCSLTC requests. */ ++/* struct ltchars is defined in */ ++#define _IOT_ltchars /* Hurd ioctl type field. */ \ ++ _IOT (_IOTS (char), 6, 0, 0, 0, 0) ++ ++/* Type of ARG for TIOCGETP and TIOCSETP requests (and gtty and stty). */ ++/* struct sgttyb is defined in */ ++#define _IOT_sgttyb /* Hurd ioctl type field. */ \ ++ _IOT (_IOTS (char), 6, _IOTS (short int), 1, 0, 0) ++ ++/* Type of ARG for TIOCGWINSZ and TIOCSWINSZ requests. */ ++/* struct winsize is defined in */ ++#define _IOT_winsize /* Hurd ioctl type field. */ \ ++ _IOT (_IOTS (unsigned short int), 4, 0, 0, 0, 0) ++ ++/* Many systems that have TIOCGWINSZ define TIOCGSIZE for source ++ compatibility with Sun; they define `struct ttysize' to have identical ++ layout as `struct winsize' and #define TIOCGSIZE to be TIOCGWINSZ ++ (likewise TIOCSSIZE and TIOCSWINSZ). */ ++/* struct ttysize is in FreeBSD originally defined in , ++ which is replaced by GLIBC version -> define here */ ++struct ttysize ++{ ++ unsigned short int ts_lines; ++ unsigned short int ts_cols; ++ unsigned short int ts_xxx; ++ unsigned short int ts_yyy; ++}; ++#define _IOT_ttysize _IOT_winsize +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/ipc.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/ipc.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/ipc.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/ipc.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,56 @@ ++/* Copyright (C) 1995-1997, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_IPC_H ++# error "Never use directly; include instead." ++#endif ++ ++#include ++ ++/* Mode bits for `msgget', `semget', and `shmget'. */ ++#define IPC_CREAT 01000 /* create key if key does not exist */ ++#define IPC_EXCL 02000 /* fail if key exists */ ++#define IPC_NOWAIT 04000 /* return error on wait */ ++ ++/* Control commands for `msgctl', `semctl', and `shmctl'. */ ++#define IPC_RMID 0 /* remove identifier */ ++#define IPC_SET 1 /* set `ipc_perm' options */ ++#define IPC_STAT 2 /* get `ipc_perm' options */ ++ ++/* Special key values. */ ++#define IPC_PRIVATE ((key_t) 0) /* private key */ ++ ++#ifdef __USE_BSD ++/* Common mode bits. */ ++# define IPC_R 0400 /* read permission, same as S_IRUSR */ ++# define IPC_W 0200 /* write permission, same as S_IWUSR */ ++# define IPC_M 0x1000 /* control permission */ ++#endif ++ ++ ++/* Data structure used to pass permission information to IPC operations. */ ++struct ipc_perm ++ { ++ __uint16_t /* yuck! */ cuid; /* creator's user ID */ ++ __uint16_t /* yuck! */ cgid; /* creator's group ID */ ++ __uint16_t /* yuck! */ uid; /* owner's user ID */ ++ __uint16_t /* yuck! */ gid; /* owner's group ID */ ++ __mode_t mode; /* read/write permission */ ++ __uint16_t __seq; ++ __key_t __key; ++ }; +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/local_lim.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/local_lim.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/local_lim.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/local_lim.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/mman.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/mman.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/mman.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/mman.h 2006-01-17 16:54:10.000000000 +0100 +@@ -0,0 +1,118 @@ ++/* Definitions for POSIX memory map interface. FreeBSD version. ++ Copyright (C) 1994-1998, 2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_MMAN_H ++# error "Never use directly; include instead." ++#endif ++ ++#include ++#include ++ ++/* Protections are chosen from these bits, OR'd together. The ++ implementation does not necessarily support PROT_EXEC or PROT_WRITE ++ without PROT_READ. The only guarantees are that no writing will be ++ allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */ ++ ++#define PROT_NONE 0x00 /* No access. */ ++#define PROT_READ 0x01 /* Pages can be read. */ ++#define PROT_WRITE 0x02 /* Pages can be written. */ ++#define PROT_EXEC 0x04 /* Pages can be executed. */ ++ ++/* Flags contain mapping type, sharing type and options. */ ++ ++/* Mapping type (must choose one and only one of these). */ ++#ifdef __USE_BSD ++# define MAP_FILE 0x0000 /* Mapped from a file or device. */ ++# define MAP_ANON 0x1000 /* Allocated from anonymous virtual memory. */ ++# define MAP_TYPE 0x1000 /* Mask for type field. */ ++# ifdef __USE_MISC ++# define MAP_ANONYMOUS MAP_ANON /* Linux name. */ ++# endif ++#endif ++ ++/* Sharing types (must choose one and only one of these). */ ++#define MAP_SHARED 0x0001 /* Share changes. */ ++#define MAP_PRIVATE 0x0002 /* Changes private; copy pages on write. */ ++#ifdef __USE_BSD ++# define MAP_COPY MAP_PRIVATE /* Virtual copy of region at mapping time. */ ++#endif ++ ++/* Other flags. */ ++#define MAP_FIXED 0x0010 /* Map address must be exactly as requested. */ ++#ifdef __USE_BSD ++#define MAP_RENAME 0x0020 /* Sun: rename private pages to file */ ++#define MAP_NORESERVE 0x0040 /* Sun: don't reserve needed swap area */ ++# define MAP_INHERIT 0x0080 /* Region is retained after exec. */ ++# define MAP_NOEXTEND 0x0100 /* For MAP_FILE, don't change file size. */ ++# define MAP_HASSEMPHORE 0x0200 /* Region may contain semaphores. */ ++# define MAP_STACK 0x0400 /* Region grows down, like a stack. */ ++# define MAP_NOSYNC 0x0800 /* Try to avoid flushing to the disk. */ ++# define MAP_NOCORE 0x20000 /* Don't include these pages in a core dump. */ ++#endif ++ ++/* Advice to `madvise'. */ ++#ifdef __USE_BSD ++# define MADV_NORMAL 0 /* No further special treatment. */ ++# define MADV_RANDOM 1 /* Expect random page references. */ ++# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */ ++# define MADV_WILLNEED 3 /* Will need these pages. */ ++# define MADV_DONTNEED 4 /* Don't need these pages. */ ++# define MADV_FREE 5 /* Don't need these pages, they contain junk. */ ++# define MADV_NOSYNC 6 /* Try to avoid flushing to the disk. */ ++# define MADV_AUTOSYNC 7 /* Use the default flushing strategy. */ ++# define MADV_NOCORE 8 /* Don't include these pages in a core dump. */ ++# define MADV_CORE 9 /* Include pages in a core dump (default). */ ++#endif ++ ++/* The POSIX people had to invent similar names for the same things. */ ++#ifdef __USE_XOPEN2K ++# define POSIX_MADV_NORMAL 0 /* No further special treatment. */ ++# define POSIX_MADV_RANDOM 1 /* Expect random page references. */ ++# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ ++# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ ++# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */ ++#endif ++ ++/* Flags to `msync'. */ ++#define MS_ASYNC 1 /* Sync memory asynchronously. */ ++#define MS_SYNC 0 /* Synchronous memory sync. */ ++#define MS_INVALIDATE 2 /* Invalidate the caches. */ ++ ++/* Flags for `mlockall' (can be OR'd together). */ ++#define MCL_CURRENT 1 /* Lock all currently mapped pages. */ ++#define MCL_FUTURE 2 /* Lock all additions to address ++ space. */ ++ ++/* Flags for 'minherit'. */ ++#ifdef __USE_BSD ++# define INHERIT_SHARE 0 ++# define INHERIT_COPY 1 ++# define INHERIT_NONE 2 ++#endif ++ ++ ++#ifdef __USE_BSD ++ ++__BEGIN_DECLS ++ ++extern int minherit (void *__addr, size_t __len, int __inherit); ++ ++__END_DECLS ++ ++#endif /* Use BSD */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/msq.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/msq.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/msq.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/msq.h 2006-01-03 21:56:56.000000000 +0100 +@@ -0,0 +1,73 @@ ++/* Copyright (C) 1995, 1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_MSG_H ++#error "Never use directly; include instead." ++#endif ++ ++#include ++ ++/* Define options for message queue functions. */ ++#define MSG_NOERROR 010000 /* no error if message is too big */ ++ ++/* Types used in the structure definition. */ ++typedef unsigned long int msgqnum_t; ++typedef unsigned long int msglen_t; ++ ++ ++/* Structure of record for one message inside the kernel. ++ The type `struct __msg' is opaque. */ ++struct msqid_ds ++{ ++ struct ipc_perm msg_perm; /* structure describing operation permission */ ++ void *__msg_first; ++ void *__msg_last; ++ msglen_t __msg_cbytes; /* current number of bytes on queue */ ++ msgqnum_t msg_qnum; /* number of messages currently on queue */ ++ msglen_t msg_qbytes; /* max number of bytes allowed on queue */ ++ __pid_t msg_lspid; /* pid of last msgsnd() */ ++ __pid_t msg_lrpid; /* pid of last msgrcv() */ ++ __time_t msg_stime; /* time of last msgsnd command */ ++ long __unused1; ++ __time_t msg_rtime; /* time of last msgrcv command */ ++ long __unused2; ++ __time_t msg_ctime; /* time of last change */ ++ long __unused3; ++ long __unused4[4]; ++}; ++ ++#ifdef __USE_MISC ++ ++# define msg_cbytes __msg_cbytes ++ ++# if 0 /* XXX No way to use this from user space? */ ++ ++/* buffer for msgctl calls IPC_INFO, MSG_INFO */ ++struct msginfo ++ { ++ int msgmax; ++ int msgmni; ++ int msgmnb; ++ int msgtql; ++ int msgssz; ++ int msgseg; ++ }; ++ ++# endif ++ ++#endif /* __USE_MISC */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/poll.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/poll.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/poll.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/poll.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,51 @@ ++/* Copyright (C) 1997, 2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_POLL_H ++# error "Never use directly; include instead." ++#endif ++ ++/* Event types that can be polled for. These bits may be set in `events' ++ to indicate the interesting event types; they will appear in `revents' ++ to indicate the status of the file descriptor. */ ++#define POLLIN 0x0001 /* There is data to read. */ ++#define POLLPRI 0x0002 /* There is urgent data to read. */ ++#define POLLOUT 0x0004 /* Writing now will not block. */ ++ ++#ifdef __USE_XOPEN ++/* These values are defined in XPG4.2. */ ++# define POLLRDNORM 0x0040 /* Normal data may be read. */ ++# define POLLRDBAND 0x0080 /* Priority data may be read. */ ++# define POLLWRNORM 0x0004 /* Writing now will not block. */ ++# define POLLWRBAND 0x0100 /* Priority data may be written. */ ++#endif ++ ++#ifdef __USE_BSD ++/* These are extensions for FreeBSD. */ ++# define POLLEXTEND 0x0200 /* File size may have grown. */ ++# define POLLATTRIB 0x0400 /* File attributes may have changed. */ ++# define POLLNLINK 0x0800 /* File may have been moved/removed. */ ++# define POLLWRITE 0x1000 /* File's contents may have changed. */ ++#endif ++ ++/* Event types always implicitly polled for. These bits need not be set in ++ `events', but they will appear in `revents' to indicate the status of ++ the file descriptor. */ ++#define POLLERR 0x0008 /* Error condition. */ ++#define POLLHUP 0x0010 /* Hung up. */ ++#define POLLNVAL 0x0020 /* Invalid polling request. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/posix_opt.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/posix_opt.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/posix_opt.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/posix_opt.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,90 @@ ++/* Define POSIX options for FreeBSD. ++ Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Never include this file directly; use instead. ++ */ ++ ++#ifndef _BITS_POSIX_OPT_H ++#define _BITS_POSIX_OPT_H 1 ++ ++/* Job control is supported. */ ++#define _POSIX_JOB_CONTROL 1 ++ ++/* Processes have a saved set-user-ID and a saved set-group-ID. */ ++#define _POSIX_SAVED_IDS 1 ++ ++/* Priority scheduling is supported. */ ++#define _POSIX_PRIORITY_SCHEDULING 1 ++ ++/* Synchronizing file data is supported. */ ++#define _POSIX_SYNCHRONIZED_IO 1 ++ ++/* The fsync function is present. */ ++#define _POSIX_FSYNC 1 ++ ++/* Mapping of files to memory is supported. */ ++#define _POSIX_MAPPED_FILES 1 ++ ++/* Locking of all memory is supported. */ ++#define _POSIX_MEMLOCK 1 ++ ++/* Locking of ranges of memory is supported. */ ++#define _POSIX_MEMLOCK_RANGE 1 ++ ++/* Setting of memory protections is supported. */ ++#define _POSIX_MEMORY_PROTECTION 1 ++ ++/* Implementation supports `poll' function. */ ++#define _POSIX_POLL 1 ++ ++/* Implementation supports `select' and `pselect' functions. */ ++#define _POSIX_SELECT 1 ++ ++/* XPG4.2 shared memory is supported. */ ++#define _XOPEN_SHM 1 ++ ++/* X/Open realtime support is available. */ ++#define _XOPEN_REALTIME 1 ++ ++/* Only root can change owner of file. */ ++#define _POSIX_CHOWN_RESTRICTED 1 ++ ++/* `c_cc' member of 'struct termios' structure can be disabled by ++ using the value _POSIX_VDISABLE. */ ++#define _POSIX_VDISABLE '\0' ++ ++/* The LFS interface is available, except for the asynchronous I/O. */ ++#define _LFS_LARGEFILE 1 ++#define _LFS64_LARGEFILE 1 ++#define _LFS64_STDIO 1 ++ ++/* POSIX timers are available. */ ++#define _POSIX_TIMERS 1 ++ ++/* GNU libc provides regular expression handling. */ ++#define _POSIX_REGEXP 1 ++ ++/* We have a POSIX shell. */ ++#define _POSIX_SHELL 1 ++ ++/* The `spawn' function family is supported. */ ++#define _POSIX_SPAWN 200912L ++ ++#endif /* bits/posix_opt.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/resource.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/resource.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/resource.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/resource.h 2006-02-23 19:25:25.000000000 +0100 +@@ -0,0 +1,200 @@ ++/* Bit values & structures for resource limits. FreeBSD version. ++ Copyright (C) 1994, 1996-1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_RESOURCE_H ++# error "Never use directly; include instead." ++#endif ++ ++#include ++ ++/* Transmute defines to enumerations. The macro re-definitions are ++ necessary because some programs want to test for operating system ++ features with #ifdef RUSAGE_SELF. In ISO C the reflexive ++ definition is a no-op. ++ ++ These are the values for FreeBSD. Earlier BSD systems have a subset of ++ these kinds of resource limit. */ ++ ++/* Kinds of resource limit. */ ++enum __rlimit_resource ++{ ++ /* Per-process CPU limit, in seconds. */ ++ RLIMIT_CPU = 0, ++#define RLIMIT_CPU RLIMIT_CPU ++ ++ /* Largest file that can be created, in bytes. */ ++ RLIMIT_FSIZE = 1, ++#define RLIMIT_FSIZE RLIMIT_FSIZE ++ ++ /* Maximum size of data segment, in bytes. */ ++ RLIMIT_DATA = 2, ++#define RLIMIT_DATA RLIMIT_DATA ++ ++ /* Maximum size of stack segment, in bytes. */ ++ RLIMIT_STACK = 3, ++#define RLIMIT_STACK RLIMIT_STACK ++ ++ /* Largest core file that can be created, in bytes. */ ++ RLIMIT_CORE = 4, ++#define RLIMIT_CORE RLIMIT_CORE ++ ++ /* Largest resident set size, in bytes. ++ This affects swapping; processes that are exceeding their ++ resident set size will be more likely to have physical memory ++ taken from them. */ ++ __RLIMIT_RSS = 5, ++#define RLIMIT_RSS __RLIMIT_RSS ++ ++ /* Locked-in-memory address space. */ ++ __RLIMIT_MEMLOCK = 6, ++#define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK ++ ++ /* Number of processes. */ ++ __RLIMIT_NPROC = 7, ++#define RLIMIT_NPROC __RLIMIT_NPROC ++ ++ /* Number of open files. */ ++ RLIMIT_NOFILE = 8, ++#define RLIMIT_NOFILE RLIMIT_NOFILE ++ ++ /* Maximum size of all socket buffers. */ ++ __RLIMIT_SBSIZE = 9, ++#define RLIMIT_SBSIZE __RLIMIT_SBSIZE ++ ++ /* Address space limit. */ ++ RLIMIT_AS = 10, ++#define RLIMIT_AS RLIMIT_AS ++ ++ __RLIMIT_NLIMITS = 11, ++ __RLIM_NLIMITS = __RLIMIT_NLIMITS ++#define RLIMIT_NLIMITS __RLIMIT_NLIMITS ++#define RLIM_NLIMITS __RLIM_NLIMITS ++}; ++ ++/* Value to indicate that there is no limit. */ ++#define RLIM_INFINITY 0x7fffffffffffffffLL ++#ifdef __USE_LARGEFILE64 ++# define RLIM64_INFINITY 0x7fffffffffffffffLL ++#endif ++ ++ ++/* Type for resource quantity measurement. */ ++typedef __rlim_t rlim_t; ++#ifdef __USE_LARGEFILE64 ++typedef __rlim64_t rlim64_t; ++#endif ++ ++struct rlimit ++ { ++ /* The current (soft) limit. */ ++ rlim_t rlim_cur; ++ /* The hard limit. */ ++ rlim_t rlim_max; ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct rlimit64 ++ { ++ /* The current (soft) limit. */ ++ rlim64_t rlim_cur; ++ /* The hard limit. */ ++ rlim64_t rlim_max; ++ }; ++#endif ++ ++#define CP_USER 0 ++#define CP_NICE 1 ++#define CP_SYS 2 ++#define CP_INTR 3 ++#define CP_IDLE 4 ++#define CPUSTATES 5 ++ ++/* Whose usage statistics do you want? */ ++enum __rusage_who ++{ ++ /* The calling process. */ ++ RUSAGE_SELF = 0, ++#define RUSAGE_SELF RUSAGE_SELF ++ ++ /* All of its terminated child processes. */ ++ RUSAGE_CHILDREN = -1 ++#define RUSAGE_CHILDREN RUSAGE_CHILDREN ++}; ++ ++#define __need_timeval ++#include /* For `struct timeval'. */ ++ ++/* Structure which says how much of each resource has been used. */ ++struct rusage ++ { ++ /* Total amount of user time used. */ ++ struct timeval ru_utime; ++ /* Total amount of system time used. */ ++ struct timeval ru_stime; ++ /* Maximum resident set size (in kilobytes). */ ++ long int ru_maxrss; ++ /* Amount of sharing of text segment memory ++ with other processes (kilobyte-seconds). */ ++ long int ru_ixrss; ++ /* Amount of data segment memory used (kilobyte-seconds). */ ++ long int ru_idrss; ++ /* Amount of stack memory used (kilobyte-seconds). */ ++ long int ru_isrss; ++ /* Number of soft page faults (i.e. those serviced by reclaiming ++ a page from the list of pages awaiting reallocation. */ ++ long int ru_minflt; ++ /* Number of hard page faults (i.e. those that required I/O). */ ++ long int ru_majflt; ++ /* Number of times a process was swapped out of physical memory. */ ++ long int ru_nswap; ++ /* Number of input operations via the file system. Note: This ++ and `ru_oublock' do not include operations with the cache. */ ++ long int ru_inblock; ++ /* Number of output operations via the file system. */ ++ long int ru_oublock; ++ /* Number of IPC messages sent. */ ++ long int ru_msgsnd; ++ /* Number of IPC messages received. */ ++ long int ru_msgrcv; ++ /* Number of signals delivered. */ ++ long int ru_nsignals; ++ /* Number of voluntary context switches, i.e. because the process ++ gave up the process before it had to (usually to wait for some ++ resource to be available). */ ++ long int ru_nvcsw; ++ /* Number of involuntary context switches, i.e. a higher priority process ++ became runnable or the current process used up its time slice. */ ++ long int ru_nivcsw; ++ }; ++ ++/* Priority limits. */ ++#define PRIO_MIN -20 /* Minimum priority a process can have. */ ++#define PRIO_MAX 20 /* Maximum priority a process can have. */ ++ ++/* The type of the WHICH argument to `getpriority' and `setpriority', ++ indicating what flavor of entity the WHO argument specifies. */ ++enum __priority_which ++{ ++ PRIO_PROCESS = 0, /* WHO is a process ID. */ ++#define PRIO_PROCESS PRIO_PROCESS ++ PRIO_PGRP = 1, /* WHO is a process group ID. */ ++#define PRIO_PGRP PRIO_PGRP ++ PRIO_USER = 2 /* WHO is a user ID. */ ++#define PRIO_USER PRIO_USER ++}; +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/sched.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sched.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/sched.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sched.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,113 @@ ++/* Definitions of constants and data structure for POSIX 1003.1b-1993 ++ scheduling interface. ++ Copyright (C) 1996, 1997, 2001, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 __need_schedparam ++ ++#ifndef _SCHED_H ++# error "Never include directly; use instead." ++#endif ++ ++ ++/* Scheduling algorithms. */ ++#define SCHED_OTHER 2 ++#define SCHED_FIFO 1 ++#define SCHED_RR 3 ++ ++/* Data structure to describe a process' schedulability. */ ++struct sched_param ++{ ++ int __sched_priority; ++}; ++ ++ ++#ifdef __USE_MISC ++/* Cloning flags. */ ++# define CSIGNAL 0x000000ff /* Signal mask to be sent at exit. */ ++# define CLONE_VM 0x00000100 /* Set if VM shared between processes. */ ++# define CLONE_FS 0x00000200 /* Set if fs info shared between processes. */ ++# define CLONE_FILES 0x00000400 /* Set if open files shared between processes. */ ++# define CLONE_SIGHAND 0x00000800 /* Set if signal handlers shared. */ ++# define CLONE_PID 0x00001000 /* Set if pid shared. */ ++# define CLONE_PTRACE 0x00002000 /* Set if tracing continues on the child. */ ++# define CLONE_VFORK 0x00004000 /* Set if the parent wants the child to ++ wake it up on mm_release. */ ++#endif ++ ++__BEGIN_DECLS ++ ++/* Clone current process. */ ++#ifdef __USE_MISC ++extern int clone (int (*__fn) (void *__arg), void *__child_stack, ++ int __flags, void *__arg) __THROW; ++#endif ++ ++__END_DECLS ++ ++#endif /* need schedparam */ ++ ++ ++#if !defined __defined_schedparam \ ++ && (defined __need_schedparam || defined _SCHED_H) ++# define __defined_schedparam 1 ++ ++/* Data structure to describe a process' schedulability. */ ++struct __sched_param ++ { ++ int __sched_priority; ++ }; ++ ++# undef __need_schedparam ++#endif ++ ++ ++#if defined _SCHED_H && !defined __cpu_set_t_defined ++# define __cpu_set_t_defined ++/* Size definition for CPU sets. */ ++# define __CPU_SETSIZE 1024 ++# define __NCPUBITS (8 * sizeof (__cpu_mask)) ++ ++/* Type for array elements in 'cpu_set'. */ ++typedef unsigned long int __cpu_mask; ++ ++/* Basic access functions. */ ++# define __CPUELT(cpu) ((cpu) / __NCPUBITS) ++# define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS)) ++ ++/* Data structure to describe CPU mask. */ ++typedef struct ++{ ++ __cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS]; ++} cpu_set_t; ++ ++/* Access functions for CPU masks. */ ++# define __CPU_ZERO(cpusetp) \ ++ do { \ ++ unsigned int __i; \ ++ cpu_set *__arr = (cpusetp); \ ++ for (__i = 0; __i < sizeof (cpu_set) / sizeof (__cpu_mask); ++__i) \ ++ __arr->__bits[__i] = 0; \ ++ } while (0) ++# define __CPU_SET(cpu, cpusetp) \ ++ ((cpusetp)->__bits[__CPUELT (cpu)] |= __CPUMASK (cpu)) ++# define __CPU_CLR(cpu, cpusetp) \ ++ ((cpusetp)->__bits[__CPUELT (cpu)] &= ~__CPUMASK (cpu)) ++# define __CPU_ISSET(cpu, cpusetp) \ ++ (((cpusetp)->__bits[__CPUELT (cpu)] & __CPUMASK (cpu)) != 0) ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/sem.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sem.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/sem.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sem.h 2006-01-03 22:37:55.000000000 +0100 +@@ -0,0 +1,70 @@ ++/* Copyright (C) 1995-1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_SEM_H ++# error "Never include directly; use instead." ++#endif ++ ++#include ++ ++/* Flags for `semop'. */ ++#define SEM_UNDO 0x1000 /* undo the operation on exit */ ++ ++/* Commands for `semctl'. */ ++#define GETPID 4 /* get sempid */ ++#define GETVAL 5 /* get semval */ ++#define GETALL 6 /* get all semval's */ ++#define GETNCNT 3 /* get semncnt */ ++#define GETZCNT 7 /* get semzcnt */ ++#define SETVAL 8 /* set semval */ ++#define SETALL 9 /* set all semval's */ ++ ++#ifdef __USE_BSD ++# define SEM_R IPC_R /* read permission for user */ ++# define SEM_A IPC_W /* alter permission for user */ ++#endif ++ ++ ++/* Data structure describing a set of semaphores. */ ++struct semid_ds ++{ ++ struct ipc_perm sem_perm; /* operation permission struct */ ++ void *__sem_base; ++ unsigned short int sem_nsems; /* number of semaphores in set */ ++ __time_t sem_otime; /* last semop() time */ ++ long __unused1; ++ __time_t sem_ctime; /* last time changed by semctl() */ ++ long __unused2; ++ long __unused3[4]; ++}; ++ ++/* The user should define a union like the following to use it for arguments ++ for `semctl'. ++ ++ union semun ++ { ++ int val; <= value for SETVAL ++ struct semid_ds *buf; <= buffer for IPC_STAT & IPC_SET ++ unsigned short int *array; <= array for GETALL & SETALL ++ struct seminfo *__buf; <= buffer for IPC_INFO ++ }; ++ ++ Previous versions of this file used to define this union but this is ++ incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether ++ one must define the union or not. */ ++#define _SEM_SEMUN_UNDEFINED 1 +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/shm.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/shm.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/shm.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/shm.h 2006-01-03 22:04:26.000000000 +0100 +@@ -0,0 +1,61 @@ ++/* Copyright (C) 1995-1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_SHM_H ++# error "Never include directly; use instead." ++#endif ++ ++#include ++ ++/* Permission flag for shmget. */ ++#ifdef __USE_BSD ++# define SHM_R IPC_R /* read permission for user */ ++# define SHM_W IPC_W /* write permission for user */ ++#endif ++ ++/* Flags for `shmat'. */ ++#define SHM_RDONLY 010000 /* attach read-only else read-write */ ++#define SHM_RND 020000 /* round attach address to SHMLBA */ ++ ++/* Commands for `shmctl'. */ ++#if 0 /* FreeBSD does not have these yet. */ ++#define SHM_LOCK 11 /* lock segment (root only) */ ++#define SHM_UNLOCK 12 /* unlock segment (root only) */ ++#endif ++ ++/* Segment low boundary address multiple. */ ++#define SHMLBA (__getpagesize ()) ++extern int __getpagesize (void) __THROW __attribute__ ((__const__)); ++ ++ ++/* Type to count number of attaches. */ ++typedef unsigned short int shmatt_t; ++ ++/* Data structure describing a set of semaphores. */ ++struct shmid_ds ++ { ++ struct ipc_perm shm_perm; /* operation permission struct */ ++ int shm_segsz; /* size of segment in bytes */ ++ __pid_t shm_lpid; /* pid of last shmop */ ++ __pid_t shm_cpid; /* pid of creator */ ++ shmatt_t shm_nattch; /* number of current attaches */ ++ __time_t shm_atime; /* time of last shmat() */ ++ __time_t shm_dtime; /* time of last shmdt() */ ++ __time_t shm_ctime; /* time of last change by shmctl() */ ++ void *__shm_internal; ++ }; +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/sigaction.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigaction.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/sigaction.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigaction.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,76 @@ ++/* Copyright (C) 1991-1992,1996-1998,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SIGNAL_H ++# error "Never include directly; use instead." ++#endif ++ ++/* These definitions match those used by the FreeBSD kernel. */ ++ ++/* Structure describing the action to be taken when a signal arrives. */ ++struct sigaction ++ { ++ /* Signal handler. */ ++#ifdef __USE_POSIX199309 ++ union ++ { ++ /* Used if SA_SIGINFO is not set. */ ++ __sighandler_t sa_handler; ++ /* Used if SA_SIGINFO is set. */ ++ void (*sa_sigaction) (int, siginfo_t *, void *); ++ } ++ __sigaction_handler; ++# define sa_handler __sigaction_handler.sa_handler ++# define sa_sigaction __sigaction_handler.sa_sigaction ++#else ++ __sighandler_t sa_handler; ++#endif ++ ++ /* Special flags. */ ++ int sa_flags; ++ ++ /* Additional set of signals to be blocked. */ ++ __sigset_t sa_mask; ++ }; ++ ++/* Bits in `sa_flags'. */ ++#if defined __USE_UNIX98 || defined __USE_MISC ++# define SA_ONSTACK 0x0001 /* Take signal on signal stack. */ ++# define SA_RESTART 0x0002 /* Restart syscall on signal return. */ ++# define SA_RESETHAND 0x0004 /* Reset to SIG_DFL on entry to handler. */ ++# define SA_NODEFER 0x0010 /* Don't automatically block the signal when ++ its handler is being executed. */ ++# define SA_NOCLDWAIT 0x0020 /* Don't save zombie processes. */ ++# define SA_SIGINFO 0x0040 /* Provide additional info to the handler. */ ++#endif ++#define SA_NOCLDSTOP 0x0008 /* Don't send SIGCHLD when children stop. */ ++ ++#ifdef __USE_MISC ++# define SA_INTERRUPT 0 /* Historical no-op ("not SA_RESTART"). */ ++ ++/* Some aliases for the SA_ constants. */ ++# define SA_NOMASK SA_NODEFER ++# define SA_ONESHOT SA_RESETHAND ++# define SA_STACK SA_ONSTACK ++#endif ++ ++ ++/* Values for the HOW argument to `sigprocmask'. */ ++#define SIG_BLOCK 1 /* Block signals. */ ++#define SIG_UNBLOCK 2 /* Unblock signals. */ ++#define SIG_SETMASK 3 /* Set the set of blocked signals. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/siginfo.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/siginfo.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/siginfo.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/siginfo.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,222 @@ ++/* siginfo_t, sigevent and constants. FreeBSD version. ++ Copyright (C) 1997-1998, 2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SIGNAL_H && !defined __need_siginfo_t \ ++ && !defined __need_sigevent_t ++# error "Never include this file directly. Use instead" ++#endif ++ ++#if (!defined __have_sigval_t \ ++ && (defined _SIGNAL_H || defined __need_siginfo_t \ ++ || defined __need_sigevent_t)) ++# define __have_sigval_t 1 ++ ++/* Type for data associated with a signal. */ ++typedef union sigval ++ { ++ int sival_int; ++ void *sival_ptr; ++ } sigval_t; ++#endif ++ ++#if (!defined __have_siginfo_t \ ++ && (defined _SIGNAL_H || defined __need_siginfo_t)) ++# define __have_siginfo_t 1 ++ ++typedef struct siginfo ++ { ++ int si_signo; /* Signal number. */ ++ int si_errno; /* If non-zero, an errno value associated with ++ this signal, as defined in . */ ++ int si_code; /* Signal code. */ ++ int si_pid; /* Sending process ID. */ ++ unsigned int si_uid; /* Real user ID of sending process. */ ++ int si_status; /* Exit value or signal. */ ++ void *si_addr; /* Address of faulting instruction. */ ++ union sigval si_value; /* Signal value. */ ++ long int si_band; /* Band event for SIGPOLL. */ ++ int __si_spare[7]; ++ } siginfo_t; ++ ++ ++/* Values for `si_code'. Positive values are reserved for kernel-generated ++ signals. */ ++enum ++{ ++ SI_ASYNCIO = 0x10004, /* Sent by AIO completion. */ ++# define SI_ASYNCIO SI_ASYNCIO ++ SI_MESGQ = 0x10005, /* Sent by real time mesq state change. */ ++# define SI_MESGQ SI_MESGQ ++ SI_TIMER = 0x10003, /* Sent by timer expiration. */ ++# define SI_TIMER SI_TIMER ++ SI_QUEUE = 0x10002, /* Sent by sigqueue. */ ++# define SI_QUEUE SI_QUEUE ++ SI_USER = 0x10001, /* Sent by kill, sigsend, raise. */ ++# define SI_USER SI_USER ++ SI_UNDEFINED = 0 ++# define SI_UNDEFINED SI_UNDEFINED ++}; ++ ++#if 0 /* XXX These need verification. See . */ ++ ++/* `si_code' values for SIGILL signal. */ ++enum ++{ ++ ILL_ILLOPC = 1, /* Illegal opcode. */ ++# define ILL_ILLOPC ILL_ILLOPC ++ ILL_ILL_OPN, /* Illegal operand. */ ++# define ILL_ILLOPN ILL_ILLOPN ++ ILL_ILLADR, /* Illegal addressing mode. */ ++# define ILL_ILLADR ILL_ILLADR ++ ILL_ILLTRP, /* Illegal trap. */ ++# define ILL_ILLTRP ILL_ILLTRP ++ ILL_PRVOPC, /* Privileged opcode. */ ++# define ILL_PRVOPC ILL_PRVOPC ++ ILL_PRVREG, /* Privileged register. */ ++# define ILL_PRVREG ILL_PRVREG ++ ILL_COPROC, /* Coprocessor error. */ ++# define ILL_COPROC ILL_COPROC ++ ILL_BADSTK /* Internal stack error. */ ++# define ILL_BADSTK ILL_BADSTK ++}; ++ ++/* `si_code' values for SIGFPE signal. */ ++enum ++{ ++ FPE_INTDIV = 1, /* Integer divide by zero. */ ++# define FPE_INTDIV FPE_INTDIV ++ FPE_INTOVF, /* Integer overflow. */ ++# define FPE_INTOVF FPE_INTOVF ++ FPE_FLTDIV, /* Floating point divide by zero. */ ++# define FPE_FLTDIV FPE_FLTDIV ++ FPE_FLTOVF, /* Floating point overflow. */ ++# define FPE_FLTOVF FPE_FLTOVF ++ FPE_FLTUND, /* Floating point underflow. */ ++# define FPE_FLTUND FPE_FLTUND ++ FPE_FLTRES, /* Floating point inexact result. */ ++# define FPE_FLTRES FPE_FLTRES ++ FPE_FLTINV, /* Floating point invalid operation. */ ++# define FPE_FLTINV FPE_FLTINV ++ FPE_FLTSUB /* Subscript out of range. */ ++# define FPE_FLTSUB FPE_FLTSUB ++}; ++ ++/* `si_code' values for SIGSEGV signal. */ ++enum ++{ ++ SEGV_MAPERR = 1, /* Address not mapped to object. */ ++# define SEGV_MAPERR SEGV_MAPERR ++ SEGV_ACCERR /* Invalid permissions for mapped object. */ ++# define SEGV_ACCERR SEGV_ACCERR ++}; ++ ++/* `si_code' values for SIGBUS signal. */ ++enum ++{ ++ BUS_ADRALN = 1, /* Invalid address alignment. */ ++# define BUS_ADRALN BUS_ADRALN ++ BUS_ADRERR, /* Non-existant physical address. */ ++# define BUS_ADRERR BUS_ADRERR ++ BUS_OBJERR /* Object specific hardware error. */ ++# define BUS_OBJERR BUS_OBJERR ++}; ++ ++/* `si_code' values for SIGTRAP signal. */ ++enum ++{ ++ TRAP_BRKPT = 1, /* Process breakpoint. */ ++# define TRAP_BRKPT TRAP_BRKPT ++ TRAP_TRACE /* Process trace trap. */ ++# define TRAP_TRACE TRAP_TRACE ++}; ++ ++#endif ++ ++/* `si_code' values for SIGCHLD signal. */ ++/* XXX These are only used by the waitid() function, not by the kernel. */ ++enum ++{ ++ CLD_EXITED = 1, /* Child has exited. */ ++# define CLD_EXITED CLD_EXITED ++ CLD_KILLED, /* Child was killed. */ ++# define CLD_KILLED CLD_KILLED ++ CLD_DUMPED, /* Child terminated abnormally. */ ++# define CLD_DUMPED CLD_DUMPED ++ CLD_TRAPPED, /* Traced child has trapped. */ ++# define CLD_TRAPPED CLD_TRAPPED ++ CLD_STOPPED, /* Child has stopped. */ ++# define CLD_STOPPED CLD_STOPPED ++ CLD_CONTINUED /* Stopped child has continued. */ ++# define CLD_CONTINUED CLD_CONTINUED ++}; ++ ++#if 0 /* XXX These need verification. See . */ ++ ++/* `si_code' values for SIGPOLL signal. */ ++enum ++{ ++ POLL_IN = 1, /* Data input available. */ ++# define POLL_IN POLL_IN ++ POLL_OUT, /* Output buffers available. */ ++# define POLL_OUT POLL_OUT ++ POLL_MSG, /* Input message available. */ ++# define POLL_MSG POLL_MSG ++ POLL_ERR, /* I/O error. */ ++# define POLL_ERR POLL_ERR ++ POLL_PRI, /* High priority input available. */ ++# define POLL_PRI POLL_PRI ++ POLL_HUP /* Device disconnected. */ ++# define POLL_HUP POLL_HUP ++}; ++ ++#endif ++ ++# undef __need_siginfo_t ++#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */ ++ ++ ++#if (defined _SIGNAL_H || defined __need_sigevent_t) \ ++ && !defined __have_sigevent_t ++# define __have_sigevent_t 1 ++ ++/* Structure to transport application-defined values with signals. */ ++ ++typedef struct sigevent ++ { ++ int sigev_notify; ++ int sigev_signo; ++ sigval_t sigev_value; ++ /* Not yet supported by the kernel. */ ++ void (*sigev_notify_function) (sigval_t); /* Function to start. */ ++ void *sigev_notify_attributes; /* Really pthread_attr_t. */ ++ } sigevent_t; ++ ++/* `sigev_notify' values. */ ++enum ++{ ++ SIGEV_SIGNAL = 1, /* Notify via signal. */ ++# define SIGEV_SIGNAL SIGEV_SIGNAL ++ SIGEV_NONE = 0, /* Other notification: meaningless. */ ++# define SIGEV_NONE SIGEV_NONE ++ /* Not yet supported by the kernel. */ ++ SIGEV_THREAD = 2 /* Deliver via thread creation. */ ++# define SIGEV_THREAD SIGEV_THREAD ++}; ++ ++#endif /* have _SIGNAL_H. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/signum.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/signum.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/signum.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/signum.h 2006-05-02 21:24:22.000000000 +0200 +@@ -0,0 +1,71 @@ ++/* Signal number definitions. FreeBSD version. ++ Copyright (C) 1991-1993, 1996, 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifdef _SIGNAL_H ++ ++/* This file defines the fake signal functions and signal ++ number constants for 4.2 or 4.3 BSD-derived Unix system. */ ++ ++/* Fake signal functions. */ ++#define SIG_ERR ((__sighandler_t) -1) /* Error return. */ ++#define SIG_DFL ((__sighandler_t) 0) /* Default action. */ ++#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */ ++ ++#define SIG_CATCH ((__sighandler_t) 2) /* FreeBSD specific ? */ ++#define SIG_HOLD ((__sighandler_t) 3) /* Add signal to hold mask. */ ++ ++/* Signals. */ ++#define SIGHUP 1 /* Hangup (POSIX). */ ++#define SIGINT 2 /* Interrupt (ANSI). */ ++#define SIGQUIT 3 /* Quit (POSIX). */ ++#define SIGILL 4 /* Illegal instruction (ANSI). */ ++#define SIGABRT SIGIOT /* Abort (ANSI). */ ++#define SIGTRAP 5 /* Trace trap (POSIX). */ ++#define SIGIOT 6 /* IOT trap (4.2 BSD). */ ++#define SIGEMT 7 /* EMT trap (4.2 BSD). */ ++#define SIGFPE 8 /* Floating-point exception (ANSI). */ ++#define SIGKILL 9 /* Kill, unblockable (POSIX). */ ++#define SIGBUS 10 /* Bus error (4.2 BSD). */ ++#define SIGSEGV 11 /* Segmentation violation (ANSI). */ ++#define SIGSYS 12 /* Bad argument to system call (4.2 BSD). */ ++#define SIGPIPE 13 /* Broken pipe (POSIX). */ ++#define SIGALRM 14 /* Alarm clock (POSIX). */ ++#define SIGTERM 15 /* Termination (ANSI). */ ++#define SIGURG 16 /* Urgent condition on socket (4.2 BSD). */ ++#define SIGSTOP 17 /* Stop, unblockable (POSIX). */ ++#define SIGTSTP 18 /* Keyboard stop (POSIX). */ ++#define SIGCONT 19 /* Continue (POSIX). */ ++#define SIGCHLD 20 /* Child status has changed (POSIX). */ ++#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */ ++#define SIGTTIN 21 /* Background read from tty (POSIX). */ ++#define SIGTTOU 22 /* Background write to tty (POSIX). */ ++#define SIGIO 23 /* I/O now possible (4.2 BSD). */ ++#define SIGPOLL SIGIO /* Pollable event occurred (System V). */ ++#define SIGXCPU 24 /* CPU limit exceeded (4.2 BSD). */ ++#define SIGXFSZ 25 /* File size limit exceeded (4.2 BSD). */ ++#define SIGVTALRM 26 /* Virtual alarm clock (4.2 BSD). */ ++#define SIGPROF 27 /* Profiling alarm clock (4.2 BSD). */ ++#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */ ++#define SIGINFO 29 /* Information request (4.4 BSD). */ ++#define SIGUSR1 30 /* User-defined signal 1 (POSIX). */ ++#define SIGUSR2 31 /* User-defined signal 2 (POSIX). */ ++ ++#endif /* included. */ ++ ++#define _NSIG 129 /* Biggest signal number + 1. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/sigset.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigset.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/sigset.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigset.h 2006-02-23 19:25:25.000000000 +0100 +@@ -0,0 +1,140 @@ ++/* __sig_atomic_t, __sigset_t, and related definitions. FreeBSD version. ++ Copyright (C) 1994-1996, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SIGSET_H_types ++#define _SIGSET_H_types 1 ++ ++typedef int __sig_atomic_t; ++ ++/* A `sigset_t' has a bit for each signal. */ ++__extension__ ++typedef struct ++ { ++ union ++ { ++ unsigned int __sigbits[4]; ++ unsigned int __bits[4]; ++ }; ++ } __sigset_t; ++ ++#endif /* ! _SIGSET_H_types */ ++ ++/* We only want to define these functions if was actually ++ included; otherwise we were included just to define the types. Since we ++ are namespace-clean, it wouldn't hurt to define extra macros. But ++ trouble can be caused by functions being defined (e.g., any global ++ register vars declared later will cause compilation errors). */ ++ ++#if !defined (_SIGSET_H_fns) && defined (_SIGNAL_H) ++#define _SIGSET_H_fns 1 ++ ++# ifndef _EXTERN_INLINE ++# define _EXTERN_INLINE extern __inline ++# endif ++ ++/* Return a mask that includes SIG only. */ ++# define __sigmask(sig) ((unsigned int) 1 << ((sig) - 1) % 32) ++ ++/* Return the word index for SIG. */ ++# define __sigword(sig) (((sig) - 1) >> 5) ++ ++# if defined __GNUC__ && __GNUC__ >= 2 ++# define __sigemptyset(set) \ ++ (__extension__ ({ sigset_t *__set = (set); \ ++ __set->__sigbits[0] = 0; __set->__sigbits[1] = 0; \ ++ __set->__sigbits[2] = 0; __set->__sigbits[3] = 0; \ ++ 0; })) ++# define __sigfillset(set) \ ++ (__extension__ ({ sigset_t *__set = (set); \ ++ __set->__sigbits[0] = ~0; __set->__sigbits[1] = ~0; \ ++ __set->__sigbits[2] = ~0; __set->__sigbits[3] = ~0; \ ++ 0; })) ++ ++# ifdef __USE_GNU ++/* The POSIX does not specify for handling the whole signal set in one ++ command. This is often wanted and so we define three more functions ++ here. */ ++# define __sigisemptyset(set) \ ++ (__extension__ ({ const sigset_t *__set = (set); \ ++ __set->__sigbits[0] == 0 \ ++ && __set->__sigbits[1] == 0 \ ++ && __set->__sigbits[2] == 0 \ ++ && __set->__sigbits[3] == 0; })) ++# define __sigandset(dest, left, right) \ ++ (__extension__ ({ sigset_t *__dest = (dest); \ ++ const sigset_t *__left = (left); \ ++ const sigset_t *__right = (right); \ ++ __dest->__sigbits[0] = \ ++ __left->__sigbits[0] & __right->__sigbits[0]; \ ++ __dest->__sigbits[1] = \ ++ __left->__sigbits[1] & __right->__sigbits[1]; \ ++ __dest->__sigbits[2] = \ ++ __left->__sigbits[2] & __right->__sigbits[2]; \ ++ __dest->__sigbits[3] = \ ++ __left->__sigbits[3] & __right->__sigbits[3]; \ ++ 0; })) ++# define __sigorset(dest, left, right) \ ++ (__extension__ ({ sigset_t *__dest = (dest); \ ++ const sigset_t *__left = (left); \ ++ const sigset_t *__right = (right); \ ++ __dest->__sigbits[0] = \ ++ __left->__sigbits[0] | __right->__sigbits[0]; \ ++ __dest->__sigbits[1] = \ ++ __left->__sigbits[1] | __right->__sigbits[1]; \ ++ __dest->__sigbits[2] = \ ++ __left->__sigbits[2] | __right->__sigbits[2]; \ ++ __dest->__sigbits[3] = \ ++ __left->__sigbits[3] | __right->__sigbits[3]; \ ++ 0; })) ++# endif ++# endif ++ ++/* These functions needn't check for a bogus signal number -- error ++ checking is done in the non __ versions. */ ++ ++extern int __sigismember (__const __sigset_t *, int); ++extern int __sigaddset (__sigset_t *, int); ++extern int __sigdelset (__sigset_t *, int); ++ ++# ifdef __USE_EXTERN_INLINES ++ ++_EXTERN_INLINE int ++__sigismember (__const __sigset_t *__set, int __sig) ++{ ++ return (__set->__sigbits[__sigword (__sig)] & __sigmask (__sig) ? 1 : 0); ++} ++ ++_EXTERN_INLINE int ++__sigaddset (__sigset_t *__set, int __sig) ++{ ++ __set->__sigbits[__sigword (__sig)] |= __sigmask (__sig); ++ return 0; ++} ++ ++_EXTERN_INLINE int ++__sigdelset (__sigset_t *__set, int __sig) ++{ ++ __set->__sigbits[__sigword (__sig)] &= ~__sigmask (__sig); ++ return 0; ++} ++ ++# endif ++ ++ ++#endif /* ! _SIGSET_H_fns */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/socket.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/socket.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/socket.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/socket.h 2006-04-12 09:33:08.000000000 +0200 +@@ -0,0 +1,381 @@ ++/* System-specific socket constants and types. FreeBSD version. ++ Copyright (C) 1991-1992,1994-1999,2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef __BITS_SOCKET_H ++#define __BITS_SOCKET_H 1 ++ ++#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H ++# error "Never include directly; use instead." ++#endif ++ ++#define __need_size_t ++#define __need_NULL ++#include ++ ++#include /* XXX Is this allowed? */ ++#include ++ ++/* Type for length arguments in socket calls. */ ++#ifndef __socklen_t_defined ++typedef __socklen_t socklen_t; ++# define __socklen_t_defined ++#endif ++ ++ ++/* Types of sockets. */ ++enum __socket_type ++{ ++ SOCK_STREAM = 1, /* Sequenced, reliable, connection-based ++ byte streams. */ ++#define SOCK_STREAM SOCK_STREAM ++ SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams ++ of fixed maximum length. */ ++#define SOCK_DGRAM SOCK_DGRAM ++ SOCK_RAW = 3, /* Raw protocol interface. */ ++#define SOCK_RAW SOCK_RAW ++ SOCK_RDM = 4, /* Reliably-delivered messages. */ ++#define SOCK_RDM SOCK_RDM ++ SOCK_SEQPACKET = 5 /* Sequenced, reliable, connection-based, ++ datagrams of fixed maximum length. */ ++#define SOCK_SEQPACKET SOCK_SEQPACKET ++}; ++ ++/* Protocol families. */ ++#define PF_UNSPEC 0 /* Unspecified. */ ++#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ ++#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */ ++#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */ ++#define PF_INET 2 /* IP protocol family. */ ++#define PF_IMPLINK 3 /* ARPAnet IMP protocol. */ ++#define PF_PUP 4 /* PUP protocols. */ ++#define PF_CHAOS 5 /* MIT Chaos protocols. */ ++#define PF_NS 6 /* Xerox NS protocols. */ ++#define PF_ISO 7 /* ISO protocols. */ ++#define PF_OSI PF_ISO ++#define PF_ECMA 8 /* ECMA protocols. */ ++#define PF_DATAKIT 9 /* AT&T Datakit protocols. */ ++#define PF_CCITT 10 /* CCITT protocols (X.25 et al). */ ++#define PF_SNA 11 /* IBM SNA protocol. */ ++#define PF_DECnet 12 /* DECnet protocols. */ ++#define PF_DLI 13 /* Direct data link interface. */ ++#define PF_LAT 14 /* DEC Local Area Transport protocol. */ ++#define PF_HYLINK 15 /* NSC Hyperchannel protocol. */ ++#define PF_APPLETALK 16 /* Don't use this. */ ++#define PF_ROUTE 17 /* Internal Routing Protocol. */ ++#define PF_LINK 18 /* Link layer interface. */ ++#define PF_XTP 19 /* eXpress Transfer Protocol (no AF). */ ++#define PF_COIP 20 /* Connection-oriented IP, aka ST II. */ ++#define PF_CNT 21 /* Computer Network Technology. */ ++#define PF_RTIP 22 /* Help Identify RTIP packets. **/ ++#define PF_IPX 23 /* Novell Internet Protocol. */ ++#define PF_SIP 24 /* Simple Internet Protocol. */ ++#define PF_PIP 25 /* Help Identify PIP packets. */ ++#define PF_ISDN 26 /* Integrated Services Digital Network. */ ++#define PF_KEY 27 /* Internal key-management function. */ ++#define PF_INET6 28 /* IP version 6. */ ++#define PF_NATM 29 /* Native ATM access. */ ++#define PF_ATM 30 /* ATM. */ ++#define PF_HDRCMPLT 31 /* Used by BPF to not rewrite headers in ++ interface output routine. */ ++#define PF_NETGRAPH 32 /* Netgraph sockets. */ ++#define PF_MAX 33 ++ ++/* Address families. */ ++#define AF_UNSPEC PF_UNSPEC ++#define AF_LOCAL PF_LOCAL ++#define AF_UNIX PF_UNIX ++#define AF_FILE PF_FILE ++#define AF_INET PF_INET ++#define AF_IMPLINK PF_IMPLINK ++#define AF_PUP PF_PUP ++#define AF_CHAOS PF_CHAOS ++#define AF_NS PF_NS ++#define AF_ISO PF_ISO ++#define AF_OSI PF_OSI ++#define AF_ECMA PF_ECMA ++#define AF_DATAKIT PF_DATAKIT ++#define AF_CCITT PF_CCITT ++#define AF_SNA PF_SNA ++#define AF_DECnet PF_DECnet ++#define AF_DLI PF_DLI ++#define AF_LAT PF_LAT ++#define AF_HYLINK PF_HYLINK ++#define AF_APPLETALK PF_APPLETALK ++#define AF_ROUTE PF_ROUTE ++#define AF_LINK PF_LINK ++#define pseudo_AF_XTP PF_XTP ++#define AF_COIP PF_COIP ++#define AF_CNT PF_CNT ++#define pseudo_AF_RTIP PF_RTIP ++#define AF_IPX PF_IPX ++#define AF_SIP PF_SIP ++#define pseudo_AF_PIP PF_PIP ++#define AF_ISDN PF_ISDN ++#define AF_E164 AF_ISDN /* CCITT E.164 recommendation. */ ++#define pseudo_AF_KEY PF_KEY ++#define AF_INET6 PF_INET6 ++#define AF_NATM PF_NATM ++#define AF_ATM PF_ATM ++#define pseudo_AF_HDRCMPLT PF_HDRCMPLT ++#define AF_NETGRAPH PF_NETGRAPH ++#define AF_MAX PF_MAX ++ ++/* Maximum queue length specifiable by listen. */ ++#define SOMAXCONN 128 /* 5 on the original 4.4 BSD. */ ++ ++/* Get the definition of the macro to define the common sockaddr members. */ ++#include ++ ++/* Structure describing a generic socket address. */ ++struct sockaddr ++ { ++ __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ ++ char sa_data[14]; /* Address data. */ ++ }; ++ ++ ++/* Structure large enough to hold any socket address (with the historical ++ exception of AF_UNIX). We reserve 128 bytes. */ ++#if ULONG_MAX > 0xffffffff ++# define __ss_aligntype __uint64_t ++#else ++# define __ss_aligntype __uint32_t ++#endif ++#define _SS_SIZE 128 ++#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype))) ++ ++struct sockaddr_storage ++ { ++ __SOCKADDR_COMMON (ss_); /* Address family, etc. */ ++ __ss_aligntype __ss_align; /* Force desired alignment. */ ++ char __ss_padding[_SS_PADSIZE]; ++ }; ++ ++ ++/* Bits in the FLAGS argument to `send', `recv', et al. */ ++enum ++ { ++ MSG_OOB = 0x01, /* Process out-of-band data. */ ++#define MSG_OOB MSG_OOB ++ MSG_PEEK = 0x02, /* Peek at incoming messages. */ ++#define MSG_PEEK MSG_PEEK ++ MSG_DONTROUTE = 0x04, /* Don't use local routing. */ ++#define MSG_DONTROUTE MSG_DONTROUTE ++ MSG_EOR = 0x08, /* Data completes record. */ ++#define MSG_EOR MSG_EOR ++ MSG_TRUNC = 0x10, /* Data discarded before delivery. */ ++#define MSG_TRUNC MSG_TRUNC ++ MSG_CTRUNC = 0x20, /* Control data lost before delivery. */ ++#define MSG_CTRUNC MSG_CTRUNC ++ MSG_WAITALL = 0x40, /* Wait for full request or error. */ ++#define MSG_WAITALL MSG_WAITALL ++ MSG_DONTWAIT = 0x80, /* This message should be nonblocking. */ ++#define MSG_DONTWAIT MSG_DONTWAIT ++ MSG_EOF = 0x100, /* Data completes connection. */ ++#define MSG_EOF MSG_EOF ++ MSG_COMPAT = 0x8000,/* Used in sendit(). */ ++#define MSG_COMPAT MSG_COMPAT ++ MSG_NOSIGNAL = 0x20000 /* do not generate SIGPIPE on EOF */ ++#if 0 /* available since FreeBSD 6.0 */ ++#define MSG_NOSIGNAL MSG_NOSIGNAL ++#endif ++ }; ++ ++ ++/* Structure describing messages sent by ++ `sendmsg' and received by `recvmsg'. */ ++struct msghdr ++ { ++ void *msg_name; /* Address to send to/receive from. */ ++ socklen_t msg_namelen; /* Length of address data. */ ++ ++ struct iovec *msg_iov; /* Vector of data to send/receive into. */ ++ int msg_iovlen; /* Number of elements in the vector. */ ++ ++ void *msg_control; /* Ancillary data (eg BSD filedesc passing). */ ++ socklen_t msg_controllen; /* Ancillary data buffer length. */ ++ ++ int msg_flags; /* Flags in received message. */ ++ }; ++ ++/* Structure used for storage of ancillary data object information. */ ++struct cmsghdr ++ { ++ socklen_t cmsg_len; /* Length of data in cmsg_data plus length ++ of cmsghdr structure. */ ++ int cmsg_level; /* Originating protocol. */ ++ int cmsg_type; /* Protocol specific type. */ ++#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L ++ __extension__ unsigned char __cmsg_data __flexarr __attribute__ ((aligned (__alignof__(size_t)))); /* Ancillary data. */ ++#endif ++ }; ++ ++#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg) ++ ++#define CMSG_FIRSTHDR(mhdr) \ ++ ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \ ++ ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL) ++ ++#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \ ++ & (size_t) ~(sizeof (size_t) - 1)) ++#define CMSG_SPACE(len) (CMSG_ALIGN (len) \ ++ + CMSG_ALIGN (sizeof (struct cmsghdr))) ++#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len)) ++ ++/* Ancillary data object manipulation macros. */ ++#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L ++# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data) ++#else ++# define CMSG_DATA(cmsg) ((unsigned char *) (cmsg) + CMSG_ALIGN(sizeof (struct cmsghdr))) ++#endif ++ ++extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, ++ struct cmsghdr *__cmsg) __THROW; ++#ifdef __USE_EXTERN_INLINES ++# ifndef _EXTERN_INLINE ++# define _EXTERN_INLINE extern __inline ++# endif ++_EXTERN_INLINE struct cmsghdr * ++__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)) ++{ ++ if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) ++ /* The kernel header does this so there may be a reason. */ ++ return 0; ++ ++ __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg ++ + CMSG_ALIGN (__cmsg->cmsg_len)); ++ if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control ++ + __mhdr->msg_controllen) ++ || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len) ++ > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) ++ /* No more entries. */ ++ return 0; ++ return __cmsg; ++} ++#endif /* Use `extern inline'. */ ++ ++/* Socket level message types. */ ++enum ++ { ++ SCM_RIGHTS = 0x01, /* Access rights (array of int). */ ++#define SCM_RIGHTS SCM_RIGHTS ++ SCM_TIMESTAMP = 0x02, /* Timestamp (struct timeval). */ ++#define SCM_TIMESTAMP SCM_TIMESTAMP ++ SCM_CREDS = 0x03 /* Process creds (struct cmsgcred). */ ++#define SCM_CREDS SCM_CREDS ++ }; ++ ++/* Unfortunately, BSD practice dictates this structure be of fixed size. ++ If there are more than CMGROUP_MAX groups, the list is truncated. ++ (On GNU systems, the `cmcred_euid' field is just the first in the ++ list of effective UIDs.) */ ++#define CMGROUP_MAX 16 ++ ++/* Structure delivered by SCM_CREDS. This describes the identity of the ++ sender of the data simultaneously received on the socket. By BSD ++ convention, this is included only when a sender on a AF_LOCAL socket ++ sends cmsg data of this type and size; the sender's structure is ++ ignored, and the system fills in the various IDs of the sender process. */ ++struct cmsgcred ++ { ++ __pid_t cmcred_pid; ++ __uid_t cmcred_uid; ++ __uid_t cmcred_euid; ++ __gid_t cmcred_gid; ++ short cmcred_ngroups; ++ __gid_t cmcred_groups[CMGROUP_MAX]; ++ }; ++ ++/* Protocol number used to manipulate socket-level options ++ with `getsockopt' and `setsockopt'. */ ++#define SOL_SOCKET 0xffff ++ ++/* Socket-level options for `getsockopt' and `setsockopt'. */ ++enum ++ { ++ SO_DEBUG = 0x0001, /* Record debugging information. */ ++#define SO_DEBUG SO_DEBUG ++ SO_ACCEPTCONN = 0x0002, /* Accept connections on socket. */ ++#define SO_ACCEPTCONN SO_ACCEPTCONN ++ SO_REUSEADDR = 0x0004, /* Allow reuse of local addresses. */ ++#define SO_REUSEADDR SO_REUSEADDR ++ SO_KEEPALIVE = 0x0008, /* Keep connections alive and send ++ SIGPIPE when they die. */ ++#define SO_KEEPALIVE SO_KEEPALIVE ++ SO_DONTROUTE = 0x0010, /* Don't do local routing. */ ++#define SO_DONTROUTE SO_DONTROUTE ++ SO_BROADCAST = 0x0020, /* Allow transmission of ++ broadcast messages. */ ++#define SO_BROADCAST SO_BROADCAST ++ SO_USELOOPBACK = 0x0040, /* Use the software loopback to avoid ++ hardware use when possible. */ ++#define SO_USELOOPBACK SO_USELOOPBACK ++ SO_LINGER = 0x0080, /* Block on close of a reliable ++ socket to transmit pending data. */ ++#define SO_LINGER SO_LINGER ++ SO_OOBINLINE = 0x0100, /* Receive out-of-band data in-band. */ ++#define SO_OOBINLINE SO_OOBINLINE ++ SO_REUSEPORT = 0x0200, /* Allow local address and port reuse. */ ++#define SO_REUSEPORT SO_REUSEPORT ++ SO_TIMESTAMP = 0x0400, /* Timestamp received dgram traffic. */ ++#define SO_TIMESTAMP SO_TIMESTAMP ++ SO_SNDBUF = 0x1001, /* Send buffer size. */ ++#define SO_SNDBUF SO_SNDBUF ++ SO_RCVBUF = 0x1002, /* Receive buffer. */ ++#define SO_RCVBUF SO_RCVBUF ++ SO_SNDLOWAT = 0x1003, /* Send low-water mark. */ ++#define SO_SNDLOWAT SO_SNDLOWAT ++ SO_RCVLOWAT = 0x1004, /* Receive low-water mark. */ ++#define SO_RCVLOWAT SO_RCVLOWAT ++ SO_SNDTIMEO = 0x1005, /* Send timeout. */ ++#define SO_SNDTIMEO SO_SNDTIMEO ++ SO_RCVTIMEO = 0x1006, /* Receive timeout. */ ++#define SO_RCVTIMEO SO_RCVTIMEO ++ SO_ERROR = 0x1007, /* Get and clear error status. */ ++#define SO_ERROR SO_ERROR ++ SO_STYLE = 0x1008, /* Get socket connection style. */ ++#define SO_STYLE SO_STYLE ++ SO_TYPE = SO_STYLE /* Compatible name for SO_STYLE. */ ++#define SO_TYPE SO_TYPE ++ }; ++ ++/* Structure used to manipulate the SO_LINGER option. */ ++struct linger ++ { ++ int l_onoff; /* Nonzero to linger on close. */ ++ int l_linger; /* Time to linger. */ ++ }; ++ ++ ++#ifdef __USE_BSD ++ ++struct sf_hdtr; ++ ++__BEGIN_DECLS ++ ++extern int bsd_sendfile (int __in_fd, int __out_sock, ++ __off_t __in_offset, size_t __nbytes, ++ struct sf_hdtr *__hdtr, __off_t *__sockbytes, ++ int __flags) __THROW; ++ ++__END_DECLS ++ ++#endif /* Use BSD */ ++ ++#endif /* bits/socket.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/stat16.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/stat16.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/stat16.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/stat16.h 2006-01-27 05:39:47.000000000 +0100 +@@ -0,0 +1,59 @@ ++/* Copyright (C) 2002, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 structure corresponds to the standard FreeBSD 'struct stat' ++ (i.e. _STAT_VER_stat), and is used by the stat() system call family. */ ++ ++struct stat16 ++ { ++ __dev_t st_dev; /* Device containing the file. */ ++ __ino_t st_ino; /* File serial number. */ ++ ++ __uint16_t st_mode; /* File mode. */ ++ __uint16_t st_nlink; /* Link count. */ ++ ++ __uid_t st_uid; /* User ID of the file's owner. */ ++ __gid_t st_gid; /* Group ID of the file's group. */ ++ ++ __dev_t st_rdev; /* Device number, if device. */ ++ ++ long int st_atime; /* Time of last access. */ ++ long int st_atimensec; /* Nanoseconds of last access. */ ++ long int st_mtime; /* Time of last modification. */ ++ long int st_mtimensec; /* Nanoseconds of last modification. */ ++ long int st_ctime; /* Time of last status change. */ ++ long int st_ctimensec; /* Nanoseconds of last status change. */ ++ ++ __off_t st_size; /* Size of file, in bytes. */ ++ ++ __blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ ++ ++ __blksize_t st_blksize; /* Optimal block size for I/O. */ ++ ++ __uint32_t st_flags; /* User defined flags. */ ++ ++ __uint32_t st_gen; /* Generation number. */ ++ ++ __uint32_t __unused1; ++ ++ long int st_birthtime; /* Time of file creation. */ ++ long int st_birthtimensec; /* Nanoseconds of file creation. */ ++ ++#define _BIRTH_PADSIZE (2*(8 - sizeof (long))) ++ char __birth_padding[_BIRTH_PADSIZE]; ++ }; +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/statfs.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/statfs.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/statfs.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/statfs.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,91 @@ ++/* Definition of `struct statfs', information about a filesystem. ++ Copyright (C) 1996-1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_STATFS_H ++#define _BITS_STATFS_H 1 ++ ++#if !defined _SYS_STATFS_H && !defined _SYS_MOUNT_H ++# error "Never include directly; use instead." ++#endif ++ ++#include ++ ++struct statfs ++ { ++ unsigned long f_version; ++ unsigned long f_bsize; ++ unsigned long f_iosize; ++#ifndef __USE_FILE_OFFSET64 ++ __fsblkcnt_t f_blocks; ++ __fsblkcnt_t f_bfree; ++ __fsblkcnt_t f_bavail; ++ __fsfilcnt_t f_files; ++ __fsfilcnt_t f_ffree; ++#else ++ __fsblkcnt64_t f_blocks; ++ __fsblkcnt64_t f_bfree; ++ __fsblkcnt64_t f_bavail; ++ __fsfilcnt64_t f_files; ++ __fsfilcnt64_t f_ffree; ++#endif ++ __fsid_t f_fsid; ++ __uid_t f_owner; ++ int f_type; ++ int f_flags; ++ unsigned long int f_syncwrites; ++ unsigned long int f_asyncwrites; ++ char f_fstypename[16]; ++ char f_mntonname[80]; ++ unsigned long int f_syncreads; ++ unsigned long int f_asyncreads; ++ unsigned short f_namemax; ++ char f_mntfromname[80]; ++ short __unused3; ++ long __unused4[2]; ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct statfs64 ++ { ++ unsigned long f_version; ++ unsigned long f_bsize; ++ unsigned long f_iosize; ++ __fsblkcnt64_t f_blocks; ++ __fsblkcnt64_t f_bfree; ++ __fsblkcnt64_t f_bavail; ++ __fsfilcnt64_t f_files; ++ __fsfilcnt64_t f_ffree; ++ __fsid_t f_fsid; ++ __uid_t f_owner; ++ int f_type; ++ int f_flags; ++ unsigned long int f_syncwrites; ++ unsigned long int f_asyncwrites; ++ char f_fstypename[16]; ++ char f_mntonname[80]; ++ unsigned long int f_syncreads; ++ unsigned long int f_asyncreads; ++ unsigned short f_namemax; ++ char f_mntfromname[80]; ++ short __unused3; ++ long __unused4[2]; ++ }; ++#endif ++ ++#endif /* _BITS_STATFS_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/stat.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/stat.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/stat.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/stat.h 2006-02-04 17:53:29.000000000 +0100 +@@ -0,0 +1,168 @@ ++/* Copyright (C) 1992, 1996-1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_STAT_H ++# error "Never include directly; use instead." ++#endif ++ ++/* This structure needs to be defined in accordance with the ++ implementation of __stat, __fstat, and __lstat. */ ++ ++#include ++ ++/* Versions of the 'struct stat' data structure. */ ++#define _STAT_VER_ostat 0 /* 'struct ostat' in /usr/src/sys/sys/stat.h */ ++#define _STAT_VER_stat 1 /* 'struct stat' in /usr/src/sys/sys/stat.h */ ++#define _STAT_VER_nstat 2 /* 'struct nstat' in /usr/src/sys/sys/stat.h */ ++#define _STAT_VER_gstat 3 /* glibc's 'struct stat' without LFS */ ++/* By default we use _STAT_VER_gstat, but we support also _STAT_VER_stat */ ++#define _STAT_VER _STAT_VER_gstat ++ ++/* Structure describing file characteristics. */ ++struct stat ++ { ++ __dev_t st_dev; /* Device containing the file. */ ++#ifndef __USE_FILE_OFFSET64 ++ __ino_t st_ino; /* File serial number. */ ++#else ++ __ino64_t st_ino; /* File serial number. */ ++#endif ++ ++ __uint32_t st_mode; /* File mode. */ ++ __uint32_t st_nlink; /* Link count. */ ++ ++ __uid_t st_uid; /* User ID of the file's owner. */ ++ __gid_t st_gid; /* Group ID of the file's group. */ ++ ++ __dev_t st_rdev; /* Device number, if device. */ ++ ++ __time_t st_atime; /* Time of last access. */ ++ long int st_atimensec; /* Nanoseconds of last access. */ ++ __time_t st_mtime; /* Time of last modification. */ ++ long int st_mtimensec; /* Nanoseconds of last modification. */ ++ __time_t st_ctime; /* Time of last status change. */ ++ long int st_ctimensec; /* Nanoseconds of last status change. */ ++ ++ __off_t st_size; /* Size of file, in bytes. */ ++ ++ __blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ ++ ++ __blksize_t st_blksize; /* Optimal block size for I/O. */ ++#define _STATBUF_ST_BLKSIZE /* Tell code we have this member. */ ++ ++ __uint32_t st_flags; /* User defined flags. */ ++ ++ __uint32_t st_gen; /* Generation number. */ ++ ++ __quad_t __unused1[2]; ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct stat64 ++ { ++ __dev_t st_dev; /* Device containing the file. */ ++ __ino64_t st_ino; /* File serial number. */ ++ ++ __uint32_t st_mode; /* File mode. */ ++ __uint32_t st_nlink; /* Link count. */ ++ ++ __uid_t st_uid; /* User ID of the file's owner. */ ++ __gid_t st_gid; /* Group ID of the file's group. */ ++ ++ __dev_t st_rdev; /* Device number, if device. */ ++ ++ __time_t st_atime; /* Time of last access. */ ++ long int st_atimensec; /* Nanoseconds of last access. */ ++ __time_t st_mtime; /* Time of last modification. */ ++ long int st_mtimensec; /* Nanoseconds of last modification. */ ++ __time_t st_ctime; /* Time of last status change. */ ++ long int st_ctimensec; /* Nanoseconds of last status change. */ ++ ++ __off_t st_size; /* Size of file, in bytes. */ ++ ++ __blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ ++ ++ __blksize_t st_blksize; /* Optimal block size for I/O. */ ++ ++ __uint32_t st_flags; /* User defined flags. */ ++ ++ __uint32_t st_gen; /* Generation number. */ ++ ++ __quad_t __unused1[2]; ++ }; ++#endif ++ ++/* Encoding of the file mode. These are the standard Unix values, ++ but POSIX.1 does not specify what values should be used. */ ++ ++#define __S_IFMT 0170000 /* These bits determine file type. */ ++ ++/* File types. */ ++#define __S_IFDIR 0040000 /* Directory. */ ++#define __S_IFCHR 0020000 /* Character device. */ ++#define __S_IFBLK 0060000 /* Block device. */ ++#define __S_IFREG 0100000 /* Regular file. */ ++#define __S_IFLNK 0120000 /* Symbolic link. */ ++#define __S_IFSOCK 0140000 /* Socket. */ ++#define __S_IFWHT 0160000 /* Whiteout. */ ++#define __S_IFIFO 0010000 /* FIFO. */ ++ ++/* POSIX.1b objects. */ ++#define __S_TYPEISMQ(buf) 0 ++#define __S_TYPEISSEM(buf) 0 ++#define __S_TYPEISSHM(buf) 0 ++ ++/* Protection bits. */ ++ ++#define __S_ISUID 04000 /* Set user ID on execution. */ ++#define __S_ISGID 02000 /* Set group ID on execution. */ ++#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */ ++#define __S_IREAD 0400 /* Read by owner. */ ++#define __S_IWRITE 0200 /* Write by owner. */ ++#define __S_IEXEC 0100 /* Execute by owner. */ ++ ++#ifdef __USE_BSD ++ ++/* Definitions of flags stored in file flags word. */ ++ ++/* Super-user and owner changeable flags. */ ++# define UF_SETTABLE 0x0000ffff /* mask of owner changeable flags */ ++# define UF_NODUMP 0x00000001 /* do not dump file */ ++# define UF_IMMUTABLE 0x00000002 /* file may not be changed */ ++# define UF_APPEND 0x00000004 /* writes to file may only append */ ++# define UF_OPAQUE 0x00000008 /* directory is opaque wrt. union */ ++# define UF_NOUNLINK 0x00000010 /* file may not be removed or renamed */ ++ ++/* Super-user changeable flags. */ ++# define SF_SETTABLE 0xffff0000 /* mask of superuser changeable flags */ ++# define SF_ARCHIVED 0x00010000 /* file is archived */ ++# define SF_IMMUTABLE 0x00020000 /* file may not be changed */ ++# define SF_APPEND 0x00040000 /* writes to file may only append */ ++# define SF_NOUNLINK 0x00100000 /* file may not be removed or renamed */ ++ ++__BEGIN_DECLS ++ ++/* Set file flags for FILE to FLAGS. */ ++extern int chflags (__const char *__file, unsigned long int __flags) __THROW; ++ ++/* Set file flags of the file referred to by FD to FLAGS. */ ++extern int fchflags (int __fd, unsigned long int __flags) __THROW; ++ ++__END_DECLS ++ ++#endif /* __USE_BSD */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/statvfs.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/statvfs.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/statvfs.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/statvfs.h 2006-05-18 19:31:40.000000000 +0200 +@@ -0,0 +1,95 @@ ++/* Definition of `struct statvfs', information about a filesystem. ++ Copyright (C) 1998, 2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_STATVFS_H ++# error "Never include directly; use instead." ++#endif ++ ++#include ++ ++#if __WORDSIZE == 32 ++#define _STATVFSBUF_F_UNUSED ++#endif ++ ++struct statvfs ++ { ++ unsigned long int f_bsize; ++ unsigned long int f_frsize; ++#ifndef __USE_FILE_OFFSET64 ++ __fsblkcnt_t f_blocks; ++ __fsblkcnt_t f_bfree; ++ __fsblkcnt_t f_bavail; ++ __fsfilcnt_t f_files; ++ __fsfilcnt_t f_ffree; ++ __fsfilcnt_t f_favail; ++#else ++ __fsblkcnt64_t f_blocks; ++ __fsblkcnt64_t f_bfree; ++ __fsblkcnt64_t f_bavail; ++ __fsfilcnt64_t f_files; ++ __fsfilcnt64_t f_ffree; ++ __fsfilcnt64_t f_favail; ++#endif ++ unsigned long int f_fsid; ++#ifdef _STATVFSBUF_F_UNUSED ++ int __f_unused; ++#endif ++ unsigned long int f_flag; ++ unsigned long int f_namemax; ++ unsigned int f_spare[6]; ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct statvfs64 ++ { ++ unsigned long int f_bsize; ++ unsigned long int f_frsize; ++ __fsblkcnt64_t f_blocks; ++ __fsblkcnt64_t f_bfree; ++ __fsblkcnt64_t f_bavail; ++ __fsfilcnt64_t f_files; ++ __fsfilcnt64_t f_ffree; ++ __fsfilcnt64_t f_favail; ++ unsigned long int f_fsid; ++#ifdef _STATVFSBUF_F_UNUSED ++ int __f_unused; ++#endif ++ unsigned long int f_flag; ++ unsigned long int f_namemax; ++ unsigned int f_spare[6]; ++ }; ++#endif ++ ++/* Definitions for the flag in `f_flag'. */ ++enum ++{ ++ ST_RDONLY = 1, /* Mount read-only. */ ++#define ST_RDONLY ST_RDONLY ++ ST_NOSUID = 2 /* Ignore suid and sgid bits. */ ++#define ST_NOSUID ST_NOSUID ++#ifdef __USE_GNU ++ , ++ ST_NODEV = 4, /* Disallow access to device special files. */ ++# define ST_NODEV ST_NODEV ++ ST_NOEXEC = 8, /* Disallow program execution. */ ++# define ST_NOEXEC ST_NOEXEC ++ ST_SYNCHRONOUS = 16 /* Writes are synced at once. */ ++# define ST_SYNCHRONOUS ST_SYNCHRONOUS ++#endif /* Use GNU. */ ++}; +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/sys_errlist.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sys_errlist.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/sys_errlist.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sys_errlist.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,33 @@ ++/* Declare sys_errlist and sys_nerr, or don't. Compatibility (do) version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _STDIO_H ++# error "Never include directly; use instead." ++#endif ++ ++/* sys_errlist and sys_nerr are deprecated. Use strerror instead. */ ++ ++#ifdef __USE_BSD ++extern int sys_nerr; ++extern __const char *__const sys_errlist[]; ++#endif ++#ifdef __USE_GNU ++extern int _sys_nerr; ++extern __const char *__const _sys_errlist[]; ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/syslog-path.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/syslog-path.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/syslog-path.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/syslog-path.h 2006-02-24 10:16:21.000000000 +0100 +@@ -0,0 +1,31 @@ ++/* -- _PATH_LOG definition ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_SYSLOG_H ++# error "Never include this file directly. Use instead" ++#endif ++ ++#ifndef _BITS_SYSLOG_PATH_H ++#define _BITS_SYSLOG_PATH_H 1 ++ ++/* On kFreeBSD, named pipes are not allowed in /dev (devfs), so we pick this ++ alternate path. */ ++#define _PATH_LOG "/var/run/log" ++ ++#endif /* bits/syslog-path.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/termios.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/termios.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/termios.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/termios.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,258 @@ ++/* termios type and macro definitions. FreeBSD version. ++ Copyright (C) 1993-1994,1996-1997,1999,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _TERMIOS_H ++# error "Never include directly; use instead." ++#endif ++ ++/* These macros are also defined in some files (with ++ numerically identical values), but this serves to shut up cpp's ++ complaining. */ ++#ifdef __USE_BSD ++ ++# ifdef MDMBUF ++# undef MDMBUF ++# endif ++# ifdef FLUSHO ++# undef FLUSHO ++# endif ++# ifdef PENDIN ++# undef PENDIN ++# endif ++ ++#endif /* __USE_BSD */ ++ ++#ifdef ECHO ++# undef ECHO ++#endif ++#ifdef TOSTOP ++# undef TOSTOP ++#endif ++#ifdef NOFLSH ++# undef NOFLSH ++#endif ++ ++ ++/* Type of terminal control flag masks. */ ++typedef unsigned int tcflag_t; ++ ++/* Type of control characters. */ ++typedef unsigned char cc_t; ++ ++/* Type of baud rate specifiers. */ ++typedef unsigned int speed_t; ++ ++/* Terminal control structure. */ ++struct termios ++{ ++ /* Input modes. */ ++ tcflag_t c_iflag; ++#define IGNBRK (1 << 0) /* Ignore break condition. */ ++#define BRKINT (1 << 1) /* Signal interrupt on break. */ ++#define IGNPAR (1 << 2) /* Ignore characters with parity errors. */ ++#define PARMRK (1 << 3) /* Mark parity and framing errors. */ ++#define INPCK (1 << 4) /* Enable input parity check. */ ++#define ISTRIP (1 << 5) /* Strip 8th bit off characters. */ ++#define INLCR (1 << 6) /* Map NL to CR on input. */ ++#define IGNCR (1 << 7) /* Ignore CR. */ ++#define ICRNL (1 << 8) /* Map CR to NL on input. */ ++#define IXON (1 << 9) /* Enable start/stop output control. */ ++#define IXOFF (1 << 10) /* Enable start/stop input control. */ ++#ifdef __USE_BSD ++# define IXANY (1 << 11) /* Any character will restart after stop. */ ++# define IMAXBEL (1 << 13) /* Ring bell when input queue is full. */ ++#endif ++ ++ /* Output modes. */ ++ tcflag_t c_oflag; ++#define OPOST (1 << 0) /* Perform output processing. */ ++#ifdef __USE_BSD ++# define ONLCR (1 << 1) /* Map NL to CR-NL on output. */ ++# define OXTABS (1 << 2) /* Expand tabs to spaces. */ ++# define ONOEOT (1 << 3) /* Discard EOT (^D) on output. */ ++#endif ++ ++ /* Control modes. */ ++ tcflag_t c_cflag; ++#ifdef __USE_BSD ++# define CIGNORE (1 << 0) /* Ignore these control flags. */ ++#endif ++#define CSIZE (CS5|CS6|CS7|CS8) /* Number of bits per byte (mask). */ ++#define CS5 (0 << 8) /* 5 bits per byte. */ ++#define CS6 (1 << 8) /* 6 bits per byte. */ ++#define CS7 (2 << 8) /* 7 bits per byte. */ ++#define CS8 (3 << 8) /* 8 bits per byte. */ ++#define CSTOPB (1 << 10) /* Two stop bits instead of one. */ ++#define CREAD (1 << 11) /* Enable receiver. */ ++#define PARENB (1 << 12) /* Parity enable. */ ++#define PARODD (1 << 13) /* Odd parity instead of even. */ ++#define HUPCL (1 << 14) /* Hang up on last close. */ ++#define CLOCAL (1 << 15) /* Ignore modem status lines. */ ++#ifdef __USE_BSD ++# define CCTS_OFLOW (1 << 16) /* CTS flow control of output. */ ++# define CRTS_IFLOW (1 << 17) /* RTS flow control of input. */ ++# define CRTSCTS (CCTS_OFLOW|CRTS_IFLOW) /* CTS/RTS flow control. */ ++# define CDTR_IFLOW (1 << 18) /* DTR flow control of input. */ ++# define CDSR_OFLOW (1 << 19) /* DSR flow control of output. */ ++# define CCAR_OFLOW (1 << 20) /* DCD flow control of output. */ ++# define MDMBUF (1 << 20) /* Carrier flow control of output. */ ++#endif ++ ++ /* Local modes. */ ++ tcflag_t c_lflag; ++#ifdef __USE_BSD ++# define ECHOKE (1 << 0) /* Visual erase for KILL. */ ++#endif ++#define _ECHOE (1 << 1) /* Visual erase for ERASE. */ ++#define ECHOE _ECHOE ++#define _ECHOK (1 << 2) /* Echo NL after KILL. */ ++#define ECHOK _ECHOK ++#define _ECHO (1 << 3) /* Enable echo. */ ++#define ECHO _ECHO ++#define _ECHONL (1 << 4) /* Echo NL even if ECHO is off. */ ++#define ECHONL _ECHONL ++#ifdef __USE_BSD ++# define ECHOPRT (1 << 5) /* Hardcopy visual erase. */ ++# define ECHOCTL (1 << 6) /* Echo control characters as ^X. */ ++#endif ++#define _ISIG (1 << 7) /* Enable signals. */ ++#define ISIG _ISIG ++#define _ICANON (1 << 8) /* Do erase and kill processing. */ ++#define ICANON _ICANON ++#ifdef __USE_BSD ++# define ALTWERASE (1 << 9) /* Alternate WERASE algorithm. */ ++#endif ++#define _IEXTEN (1 << 10) /* Enable DISCARD and LNEXT. */ ++#define IEXTEN _IEXTEN ++#define _EXTPROC (1 << 11) /* External processing. */ ++#define EXTPROC _EXTPROC ++#define _TOSTOP (1 << 22) /* Send SIGTTOU for background output. */ ++#define TOSTOP _TOSTOP ++#ifdef __USE_BSD ++# define FLUSHO (1 << 23) /* Output being flushed (state). */ ++# define NOKERNINFO (1 << 25) /* Disable VSTATUS. */ ++# define PENDIN (1 << 29) /* Retype pending input (state). */ ++#endif ++#define _NOFLSH (1 << 31) /* Disable flush after interrupt. */ ++#define NOFLSH _NOFLSH ++ ++ /* Control characters. */ ++#define VEOF 0 /* End-of-file character [ICANON]. */ ++#define VEOL 1 /* End-of-line character [ICANON]. */ ++#ifdef __USE_BSD ++# define VEOL2 2 /* Second EOL character [ICANON]. */ ++#endif ++#define VERASE 3 /* Erase character [ICANON]. */ ++#ifdef __USE_BSD ++# define VWERASE 4 /* Word-erase character [ICANON]. */ ++#endif ++#define VKILL 5 /* Kill-line character [ICANON]. */ ++#ifdef __USE_BSD ++# define VREPRINT 6 /* Reprint-line character [ICANON]. */ ++#endif ++#define VINTR 8 /* Interrupt character [ISIG]. */ ++#define VQUIT 9 /* Quit character [ISIG]. */ ++#define VSUSP 10 /* Suspend character [ISIG]. */ ++#ifdef __USE_BSD ++# define VDSUSP 11 /* Delayed suspend character [ISIG]. */ ++#endif ++#define VSTART 12 /* Start (X-ON) character [IXON, IXOFF]. */ ++#define VSTOP 13 /* Stop (X-OFF) character [IXON, IXOFF]. */ ++#ifdef __USE_BSD ++# define VLNEXT 14 /* Literal-next character [IEXTEN]. */ ++# define VDISCARD 15 /* Discard character [IEXTEN]. */ ++#endif ++#define VMIN 16 /* Minimum number of bytes read at once [!ICANON]. */ ++#define VTIME 17 /* Time-out value (tenths of a second) [!ICANON]. */ ++#ifdef __USE_BSD ++# define VSTATUS 18 /* Status character [ICANON]. */ ++#endif ++#define NCCS 20 ++ cc_t c_cc[NCCS]; ++ ++ /* Input and output baud rates. */ ++#ifdef __USE_BSD ++ speed_t c_ispeed, c_ospeed; ++# define __ispeed c_ispeed ++# define __ospeed c_ospeed ++#else ++ speed_t __ispeed, __ospeed; ++#endif ++#define B0 0 /* Hang up. */ ++#define B50 50 /* 50 baud. */ ++#define B75 75 /* 75 baud. */ ++#define B110 110 /* 110 baud. */ ++#define B134 134 /* 134.5 baud. */ ++#define B150 150 /* 150 baud. */ ++#define B200 200 /* 200 baud. */ ++#define B300 300 /* 300 baud. */ ++#define B600 600 /* 600 baud. */ ++#define B1200 1200 /* 1200 baud. */ ++#define B1800 1800 /* 1800 baud. */ ++#define B2400 2400 /* 2400 baud. */ ++#define B4800 4800 /* 4800 baud. */ ++#define B9600 9600 /* 9600 baud. */ ++#define B19200 19200 /* 19200 baud. */ ++#define B38400 38400 /* 38400 baud. */ ++#define B76800 76800 ++#ifdef __USE_MISC ++# define EXTA 19200 ++# define EXTB 38400 ++#endif ++#define B7200 7200 ++#define B14400 14400 ++#define B28800 28800 ++#define B57600 57600 ++#define B115200 115200 ++#define B230400 230400 ++#define B460800 460800 ++#define B500000 500000 ++#define B576000 576000 ++#define B921600 921600 ++#define B1000000 1000000 ++#define B1152000 1152000 ++#define B1500000 1500000 ++#define B2000000 2000000 ++#define B2500000 2500000 ++#define B3000000 3000000 ++#define B3500000 3500000 ++#define B4000000 4000000 ++}; ++ ++#define _IOT_termios /* Hurd ioctl type field. */ \ ++ _IOT (_IOTS (tcflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2) ++ ++/* Values for the OPTIONAL_ACTIONS argument to `tcsetattr'. */ ++#define TCSANOW 0 /* Change immediately. */ ++#define TCSADRAIN 1 /* Change when pending output is written. */ ++#define TCSAFLUSH 2 /* Flush pending input before changing. */ ++#ifdef __USE_BSD ++# define TCSASOFT 0x10 /* Flag: Don't alter hardware state. */ ++#endif ++ ++/* Values for the QUEUE_SELECTOR argument to `tcflush'. */ ++#define TCIFLUSH 1 /* Discard data received but not yet read. */ ++#define TCOFLUSH 2 /* Discard data written but not yet sent. */ ++#define TCIOFLUSH 3 /* Discard all pending data. */ ++ ++/* Values for the ACTION argument to `tcflow'. */ ++#define TCOOFF 1 /* Suspend output. */ ++#define TCOON 2 /* Restart suspended output. */ ++#define TCIOFF 3 /* Send a STOP character. */ ++#define TCION 4 /* Send a START character. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/typesizes.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/typesizes.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/typesizes.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/typesizes.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,66 @@ ++/* bits/typesizes.h -- underlying types for *_t. kFreeBSD version. ++ Copyright (C) 2002, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_TYPES_H ++# error "Never include directly; use instead." ++#endif ++ ++#ifndef _BITS_TYPESIZES_H ++#define _BITS_TYPESIZES_H 1 ++ ++/* See for the meaning of these macros. This file exists so ++ that need not vary across different GNU platforms. */ ++ ++#define __DEV_T_TYPE __U32_TYPE ++#define __UID_T_TYPE __U32_TYPE ++#define __GID_T_TYPE __U32_TYPE ++#define __INO_T_TYPE __U32_TYPE ++#define __INO64_T_TYPE __UQUAD_TYPE ++#define __MODE_T_TYPE __U16_TYPE ++#define __NLINK_T_TYPE __U16_TYPE ++#define __OFF_T_TYPE __SQUAD_TYPE ++#define __OFF64_T_TYPE __SQUAD_TYPE ++#define __PID_T_TYPE __S32_TYPE ++#define __RLIM_T_TYPE __SQUAD_TYPE ++#define __RLIM64_T_TYPE __SQUAD_TYPE ++#define __BLKCNT_T_TYPE __SQUAD_TYPE ++#define __BLKCNT64_T_TYPE __SQUAD_TYPE ++#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE ++#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE ++#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE ++#define __FSFILCNT64_T_TYPE __UQUAD_TYPE ++#define __ID_T_TYPE __U32_TYPE ++#define __CLOCK_T_TYPE __S32_TYPE ++#define __TIME_T_TYPE __SLONGWORD_TYPE ++#define __USECONDS_T_TYPE __U32_TYPE ++#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE ++#define __DADDR_T_TYPE __S32_TYPE ++#define __SWBLK_T_TYPE __S32_TYPE ++#define __KEY_T_TYPE __SLONGWORD_TYPE ++#define __CLOCKID_T_TYPE __S32_TYPE ++#define __TIMER_T_TYPE __S32_TYPE ++#define __BLKSIZE_T_TYPE __U32_TYPE ++#define __FSID_T_TYPE struct { int __val[2]; } ++#define __SSIZE_T_TYPE __SWORD_TYPE ++ ++/* Number of descriptors that can fit in an `fd_set'. */ ++#define __FD_SETSIZE 1024 ++ ++ ++#endif /* bits/typesizes.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/uio.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/uio.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/uio.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/uio.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,37 @@ ++/* Copyright (C) 1996-1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_UIO_H ++# error "Never include directly; use instead." ++#endif ++ ++ ++/* `struct iovec' -- Structure describing a section of memory. */ ++ ++struct iovec ++{ ++ /* Starting address. */ ++ __ptr_t iov_base; ++ /* Length in bytes. */ ++ size_t iov_len; ++}; ++ ++/* Maximum number of 'struct iovec's that can be passed to a readv() or ++ writev() system call. For larger arrays of 'struct iovec', the libc ++ uses a single read() or write() call to guarantee atomicity. */ ++#define UIO_MAXIOV 1024 +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/utsname.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/utsname.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/utsname.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/utsname.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,27 @@ ++/* Copyright (C) 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_UTSNAME_H ++# error "Never include directly; use instead." ++#endif ++ ++/* Length of the entries in 'struct utsname' is 32. */ ++#define _UTSNAME_LENGTH 32 ++ ++/* But the version entry is longer. */ ++#define _UTSNAME_VERSION_LENGTH 256 +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/bits/waitflags.h sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/waitflags.h +--- null/unix/bsd/bsd4.4/kfreebsd/bits/waitflags.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/waitflags.h 2006-01-21 00:13:27.000000000 +0100 +@@ -0,0 +1,36 @@ ++/* Definitions of flag bits for `waitpid' et al. ++ Copyright (C) 1992, 1996-1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_WAIT_H && !defined _STDLIB_H ++# error "Never include directly; use instead." ++#endif ++ ++ ++/* Bits in the third argument to `waitpid'. */ ++#define WNOHANG 1 /* Don't block waiting. */ ++#define WUNTRACED 2 /* Report status of stopped children. */ ++ ++/* Bits in the fourth argument to `waitid'. */ ++#define WSTOPPED 2 /* Report stopped child (same as WUNTRACED). */ ++#define WCONTINUED 4 /* Report continued child. */ ++ ++#define __WCLONE 0x80000000 /* Wait for cloned process. */ ++#ifdef __USE_BSD ++# define WLINUXCLONE __WCLONE /* FreeBSD name for __WCLONE. */ ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/brk.c sysdeps/unix/bsd/bsd4.4/kfreebsd/brk.c +--- null/unix/bsd/bsd4.4/kfreebsd/brk.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/brk.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,51 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Robert Millan ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++#ifndef SYS_break ++#define SYS_break SYS_obreak ++#endif ++ ++extern void _end; ++ ++/* sbrk.c expects this. */ ++void *__curbrk = &_end; ++ ++/* Set the end of the process's data space to ADDR. ++ Return 0 if successful, -1 if not. */ ++int ++__brk (addr) ++ void *addr; ++{ ++ if (addr < &_end) ++ return 0; ++ ++ if (syscall (SYS_break, addr) == -1) ++ { ++ __set_errno (ENOMEM); ++ return -1; ++ } ++ ++ __curbrk = addr; ++ return 0; ++} ++weak_alias (__brk, brk) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/clock_getres.c sysdeps/unix/bsd/bsd4.4/kfreebsd/clock_getres.c +--- null/unix/bsd/bsd4.4/kfreebsd/clock_getres.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/clock_getres.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,32 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++int __syscall_clock_getres(clockid_t clock_id, struct timespec *tp); ++ ++# define SYSDEP_GETRES \ ++ case CLOCK_REALTIME: \ ++ case CLOCK_MONOTONIC: \ ++ retval = INLINE_SYSCALL (clock_getres, 2, clock_id, res); \ ++ break ++ ++/* We handled the REALTIME clock here. */ ++# define HANDLED_REALTIME 1 ++ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/clock_gettime.c sysdeps/unix/bsd/bsd4.4/kfreebsd/clock_gettime.c +--- null/unix/bsd/bsd4.4/kfreebsd/clock_gettime.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/clock_gettime.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,31 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++int __syscall_clock_gettime(clockid_t clock_id, struct timespec *tp); ++ ++# define SYSDEP_GETTIME \ ++ case CLOCK_REALTIME: \ ++ case CLOCK_MONOTONIC: \ ++ retval = INLINE_SYSCALL (clock_gettime, 2, clock_id, tp); \ ++ break ++ ++/* We handled the REALTIME clock here. */ ++# define HANDLED_REALTIME 1 ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/clock_settime.c sysdeps/unix/bsd/bsd4.4/kfreebsd/clock_settime.c +--- null/unix/bsd/bsd4.4/kfreebsd/clock_settime.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/clock_settime.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,30 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++int __syscall_clock_settime(clockid_t clock_id, const struct timespec *tp); ++ ++# define SYSDEP_SETTIME \ ++ case CLOCK_REALTIME: \ ++ retval = INLINE_SYSCALL (clock_settime, 2, clock_id, tp); \ ++ break ++/* We handled the REALTIME clock here. */ ++# define HANDLED_REALTIME 1 ++ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/clone.c sysdeps/unix/bsd/bsd4.4/kfreebsd/clone.c +--- null/unix/bsd/bsd4.4/kfreebsd/clone.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/clone.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,101 @@ ++/* Create a thread. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define __clone __no_broken_clone_decl ++#include ++#include ++#include ++#include ++#include ++#undef __clone ++ ++/* __start_thread (flags, child_stack, fn, arg) ++ is roughly equivalent to ++ ++ int retval = __rfork (flags); ++ if (retval == 0) ++ { ++ // Here we are in the child thread. ++ %stackpointer = child_stack; ++ _exit (fn (arg)); ++ } ++ return retval; ++ ++ but it cannot be done in portable C because it must access fn and arg ++ after having replaced the stack pointer. */ ++ ++extern int __start_thread (int flags, void *child_stack, ++ int (*fn) (void *), void *arg); ++ ++int __clone (int (*fn) (void *), void *child_stack, int flags, void *arg) ++{ ++ int rfork_flags = RFPROC; ++ ++ if (fn == NULL || child_stack == NULL) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ /* This implementation of clone() does not support all Linux flags. */ ++ if (flags & ~(CSIGNAL | CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND ++ | CLONE_VFORK)) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ if ((flags & CSIGNAL) != 0 && (flags & CSIGNAL) != SIGCHLD) ++ { ++ if ((flags & CSIGNAL) & ~RFTHPNMASK) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ rfork_flags |= (RFLINUXTHPN | ((flags & CSIGNAL) << RFTHPNSHIFT)); ++ } ++ ++ if (flags & CLONE_VM) ++ rfork_flags |= RFMEM; ++ ++ if (flags & CLONE_FS) ++ /* Sharing the filesystem related info (umask, cwd, root dir) ++ is not supported by rfork. Ignore this; let's hope programs ++ will set their umask and cwd before spawning threads. */ ++ ; ++ ++ if (!(flags & CLONE_FILES)) ++ rfork_flags |= RFFDG; ++ ++ if (flags & CLONE_SIGHAND) ++ { ++ rfork_flags |= RFSIGSHARE; ++ /* Also set the undocumented flag RFTHREAD. It has the effect that when ++ the thread leader exits, all threads belonging to it are killed. */ ++ rfork_flags |= RFTHREAD; ++ } ++ ++ if (flags & CLONE_VFORK) ++ rfork_flags |= RFPPWAIT; ++ ++ return __start_thread (rfork_flags, child_stack, fn, arg); ++} ++ ++weak_alias (__clone, clone) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/configure sysdeps/unix/bsd/bsd4.4/kfreebsd/configure +--- null/unix/bsd/bsd4.4/kfreebsd/configure 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/configure 2006-03-01 20:13:16.000000000 +0100 +@@ -0,0 +1,332 @@ ++# This file is generated from configure.in by Autoconf. DO NOT EDIT! ++ # Local configure fragment for sysdeps/unix/bsd/bsd4.4/kfreebsd. ++ ++case "$machine" in ++ x86_64*) ++ echo "Adding extra sysnames for kfreebsd/x86_64/elf" ++ sysnames="sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/elf $sysnames" ++ ;; ++esac ++ ++# The kFreeBSD headers can be found in ++# /usr/src/sys/ ++# Check whether this directory is available. ++if test -z "$sysheaders" && ++ test "x$cross_compiling" = xno && ++ test -d /usr/src/sys/ ; then ++ sysheaders="/usr/src/sys/" ++ ccheaders=`$CC -print-file-name=include` ++ SYSINCLUDES="-I $sysheaders" ++fi ++ ++# Don't bother trying to generate any glue code to be compatible with the ++# existing system library, because we are the only system library. ++inhibit_glue=yes ++ ++if test -n "$sysheaders"; then ++ OLD_CPPFLAGS=$CPPFLAGS ++ CPPFLAGS="$CPPFLAGS $SYSINCLUDES" ++fi ++ ++ ++echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6 ++if test "${ac_cv_prog_egrep+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | (grep -E '(a|b)') >/dev/null 2>&1 ++ then ac_cv_prog_egrep='grep -E' ++ else ac_cv_prog_egrep='egrep' ++ fi ++fi ++echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 ++echo "${ECHO_T}$ac_cv_prog_egrep" >&6 ++ EGREP=$ac_cv_prog_egrep ++ ++ ++echo "$as_me:$LINENO: checking installed kFreeBSD kernel header files" >&5 ++echo $ECHO_N "checking installed kFreeBSD kernel header files... $ECHO_C" >&6 ++if test "${libc_cv_kfreebsd540+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#if !defined(__FreeBSD_kernel_version) && defined(__FreeBSD_version) ++#define __FreeBSD_kernel_version __FreeBSD_version ++#endif ++#if !defined __FreeBSD_kernel_version || __FreeBSD_kernel_version < (5 *10000+ 4 *100+ 0) /* 5.4.0 */ ++eat flaming death ++#endif ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "eat flaming death" >/dev/null 2>&1; then ++ libc_cv_kfreebsd540='TOO OLD!' ++else ++ libc_cv_kfreebsd540='5.4.0 or later' ++fi ++rm -f conftest* ++ ++fi ++echo "$as_me:$LINENO: result: $libc_cv_kfreebsd540" >&5 ++echo "${ECHO_T}$libc_cv_kfreebsd540" >&6 ++if test "$libc_cv_kfreebsd540" != '5.4.0 or later'; then ++ { { echo "$as_me:$LINENO: error: GNU libc requires kernel header files from ++kFreeBSD 5.4.0 or later to be installed before configuring. ++The kernel header files are found usually in /usr/src/sys/; make sure ++these directories use files from kFreeBSD 5.4.0 or later. ++This check uses , so ++make sure that file was built correctly when installing the kernel header ++files. To use kernel headers not from /usr/src/sys/, use the ++configure option --with-headers." >&5 ++echo "$as_me: error: GNU libc requires kernel header files from ++kFreeBSD 5.4.0 or later to be installed before configuring. ++The kernel header files are found usually in /usr/src/sys/; make sure ++these directories use files from kFreeBSD 5.4.0 or later. ++This check uses , so ++make sure that file was built correctly when installing the kernel header ++files. To use kernel headers not from /usr/src/sys/, use the ++configure option --with-headers." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++# Check whether --enable-compatible-utmp or --disable-compatible-utmp was given. ++if test "${enable_compatible_utmp+set}" = set; then ++ enableval="$enable_compatible_utmp" ++ enable_utmp_compat=$enableval ++else ++ enable_utmp_compat=no ++fi; ++if test "$enable_utmp_compat" = no; then ++ utmp_subdir=utmp-utmpx ++else ++ utmp_subdir=utmp-compat ++fi ++sysnames="$sysnames sysdeps/unix/bsd/bsd4.4/kfreebsd/$utmp_subdir" ++ ++# If the user gave a minimal version number test whether the available ++# kernel headers are young enough. Additionally we have minimal ++# kernel versions for some architectures. If a previous configure fragment ++# set arch_minimum_kernel already, let that override our defaults here. ++# Note that we presume such a fragment has set libc_cv_gcc_unwind_find_fde ++# if appropriate too. ++test -n "$arch_minimum_kernel" || ++case "$machine" in ++ i386*) ++ libc_cv_gcc_unwind_find_fde=yes ++ arch_minimum_kernel=5.4.0 ++ ;; ++ x86_64*) ++ arch_minimum_kernel=5.4.0 ++ ;; ++ *) ++ arch_minimum_kernel=5.4.0 ++ ;; ++esac ++if test -n "$minimum_kernel"; then ++ ++ user_version=$((`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'`)) ++ arch_version=$((`echo "$arch_minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'`)) ++ ++ if test $user_version -lt $arch_version; then ++ { echo "$as_me:$LINENO: WARNING: minimum kernel version reset to $arch_minimum_kernel" >&5 ++echo "$as_me: WARNING: minimum kernel version reset to $arch_minimum_kernel" >&2;} ++ minimum_kernel=$arch_minimum_kernel ++ fi ++else ++ if test $arch_minimum_kernel != '5.4.0'; then ++ minimum_kernel=$arch_minimum_kernel ++ fi ++fi ++ ++if test -n "$minimum_kernel"; then ++ echo "$as_me:$LINENO: checking for kernel header at least $minimum_kernel" >&5 ++echo $ECHO_N "checking for kernel header at least $minimum_kernel... $ECHO_C" >&6 ++ decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 10000 + \2 * 100 + \3)/'`; ++ abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`; ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#if !defined(__FreeBSD_kernel_version) && defined(__FreeBSD_version) ++#define __FreeBSD_kernel_version __FreeBSD_version ++#endif ++#if __FreeBSD_kernel_version < $decnum ++eat flaming death ++#endif ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "eat flaming death" >/dev/null 2>&1; then ++ libc_minimum_kernel='too old!' ++else ++ libc_minimum_kernel=ok ++fi ++rm -f conftest* ++ ++ echo "$as_me:$LINENO: result: $libc_minimum_kernel" >&5 ++echo "${ECHO_T}$libc_minimum_kernel" >&6 ++ if test "$libc_minimum_kernel" = ok; then ++ cat >>confdefs.h <<_ACEOF ++#define __KFREEBSD_KERNEL_VERSION $decnum ++_ACEOF ++ ++ cat >>confdefs.h <<_ACEOF ++#define __ABI_TAG_VERSION $abinum ++_ACEOF ++ ++ else ++ { { echo "$as_me:$LINENO: error: *** The available kernel headers are older than the requested ++*** compatible kernel version" >&5 ++echo "$as_me: error: *** The available kernel headers are older than the requested ++*** compatible kernel version" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++fi ++ ++if test -n "$sysheaders"; then ++ CPPFLAGS=$OLD_CPPFLAGS ++fi ++# The Linux filesystem standard prescribes where to place "essential" ++# files. I.e., when the installation prefix is "/usr" we have to place ++# shared library objects and the configuration files on the root partition ++# in /lib and /etc. ++case "$prefix" in ++/usr | /usr/) ++ # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib ++ case $machine in ++ sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 | \ ++ mips/mips64/n64/* ) ++ libc_cv_slibdir="/lib64" ++ if test "$libdir" = '${exec_prefix}/lib'; then ++ libdir='${exec_prefix}/lib64'; ++ # Locale data can be shared between 32bit and 64bit libraries ++ libc_cv_localedir='${exec_prefix}/lib/locale' ++ fi ++ ;; ++ mips/mips64/n32/* ) ++ libc_cv_slibdir="/lib32" ++ if test "$libdir" = '${exec_prefix}/lib'; then ++ libdir='${exec_prefix}/lib32'; ++ # Locale data can be shared between 32bit and 64bit libraries ++ libc_cv_localedir='${exec_prefix}/lib/locale' ++ fi ++ ;; ++ *) ++ libc_cv_slibdir="/lib" ++ ;; ++ esac ++ # Allow the user to override the path with --sysconfdir ++ if test $sysconfdir = '${prefix}/etc'; then ++ libc_cv_sysconfdir=/etc ++ else ++ libc_cv_sysconfdir=$sysconfdir ++ fi ++ libc_cv_rootsbindir="/sbin" ++ ;; ++esac ++ ++ ++# Put exception handling support into libc, so that not every shared ++# library needs to include it. ++# FIXME: Does not work yet. ++libc_cv_gcc_unwind_find_fde=no ++ ++ ++# Under kFreeBSD the LinuxThreads or (may be later) NPTL add-on should be available. ++case $add_ons in ++ # Only one of the add-ons should be available. ++ *linuxthreads*nptl*|*nptl*linuxthreads*) ++ echo "\ ++*** LinuxThreads and NPTL add-ons are both available. Only one must be used." ++ exit 1 ++ ;; ++ # It is available. Good. ++ *linuxthreads*) ++ linuxthreads_missing= ++ ;; ++ *nptl*) ++ linuxthreads_missing= ++ ;; ++ *) ++ linuxthreads_missing=yes ++ ;; ++esac ++ ++if test "$linuxthreads_missing"; then ++ if test $enable_sanity = yes; then ++ echo "\ ++*** On GNU/kFreeBSD systems it is normal to compile GNU libc with the ++*** \`linuxthreads' add-on. Without that, the library will be ++*** incompatible with normal GNU/kFreeBSD systems. ++*** If you really mean to not use this add-on, run configure again ++*** using the extra parameter \`--disable-sanity-checks'." ++ exit 1 ++ else ++ echo "\ ++*** WARNING: Are you sure you do not want to use the \`linuxthreads' ++*** add-on?" ++ fi ++fi ++ ++if test "$prefix" = "/usr/local" -o "$prefix" = "/usr/local/" -o "$prefix" = "NONE"; then ++ if test $enable_sanity = yes; then ++ echo "\ ++*** On GNU/kFreeBSD systems the GNU C Library should not be installed into ++*** /usr/local since this might make your system totally unusable. ++*** We strongly advise to use a different prefix. For details read the FAQ. ++*** If you really mean to do this, run configure again using the extra ++*** parameter \`--disable-sanity-checks'." ++ exit 1 ++ else ++ echo "\ ++*** WARNING: Do you really want to install the GNU C Library into /usr/local? ++*** This might make your system totally unusable, for details read the FAQ." ++ fi ++fi ++ ++ ++# One kFreeBSD we use ldconfig. ++use_ldconfig=yes ++ ++if test $host = $build; then ++ # If $prefix/include/{net,scsi} are symlinks, make install will ++ # clobber what they're linked to (probably a kernel tree). ++ # test -L ought to work on all Linux boxes. ++ if test "x$prefix" != xNONE; then ++ ac_prefix=$prefix ++ else ++ ac_prefix=$ac_default_prefix ++ fi ++ echo "$as_me:$LINENO: checking for symlinks in ${ac_prefix}/include" >&5 ++echo $ECHO_N "checking for symlinks in ${ac_prefix}/include... $ECHO_C" >&6 ++ ac_message= ++ if test -L ${ac_prefix}/include/net; then ++ ac_message="$ac_message ++ ${ac_prefix}/include/net is a symlink" ++ fi ++ if test -L ${ac_prefix}/include/scsi; then ++ ac_message="$ac_message ++ ${ac_prefix}/include/scsi is a symlink" ++ fi ++ if test -n "$ac_message"; then ++ { { echo "$as_me:$LINENO: error: $ac_message ++\`make install' will destroy the target of the link(s). ++Delete the links and re-run configure, or better still, move the entire ++${ac_prefix}/include directory out of the way." >&5 ++echo "$as_me: error: $ac_message ++\`make install' will destroy the target of the link(s). ++Delete the links and re-run configure, or better still, move the entire ++${ac_prefix}/include directory out of the way." >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ echo "$as_me:$LINENO: result: ok" >&5 ++echo "${ECHO_T}ok" >&6 ++ fi ++fi +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/configure.in sysdeps/unix/bsd/bsd4.4/kfreebsd/configure.in +--- null/unix/bsd/bsd4.4/kfreebsd/configure.in 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/configure.in 2006-03-01 20:13:16.000000000 +0100 +@@ -0,0 +1,257 @@ ++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. ++# Local configure fragment for sysdeps/unix/bsd/bsd4.4/kfreebsd. ++ ++case "$machine" in ++ x86_64*) ++ echo "Adding extra sysnames for kfreebsd/x86_64/elf" ++ sysnames="sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/elf $sysnames" ++ ;; ++esac ++ ++# The kFreeBSD headers can be found in ++# /usr/src/sys/ ++# Check whether this directory is available. ++if test -z "$sysheaders" && ++ test "x$cross_compiling" = xno && ++ test -d /usr/src/sys/ ; then ++ sysheaders="/usr/src/sys/" ++ ccheaders=`$CC -print-file-name=include` ++ dnl We don't have to use -nostdinc. We just want one more directory ++ dnl to be used. ++ SYSINCLUDES="-I $sysheaders" ++fi ++ ++# Don't bother trying to generate any glue code to be compatible with the ++# existing system library, because we are the only system library. ++inhibit_glue=yes ++ ++define([LIBC_KFREEBSD_VERSION],[5.4.0])dnl ++if test -n "$sysheaders"; then ++ OLD_CPPFLAGS=$CPPFLAGS ++ CPPFLAGS="$CPPFLAGS $SYSINCLUDES" ++fi ++define([libc_cv_kfreebsdVER], [libc_cv_kfreebsd]patsubst(LIBC_KFREEBSD_VERSION,[\.]))dnl ++AC_CACHE_CHECK(installed kFreeBSD kernel header files, libc_cv_kfreebsdVER, [dnl ++AC_EGREP_CPP([eat flaming death], [#include ++#if !defined(__FreeBSD_kernel_version) && defined(__FreeBSD_version) ++#define __FreeBSD_kernel_version __FreeBSD_version ++#endif ++#if !defined __FreeBSD_kernel_version || __FreeBSD_kernel_version < ]dnl ++patsubst(LIBC_KFREEBSD_VERSION,[^\([^.]*\)\.\([^.]*\)\.\([^.]*\)$],dnl ++[ (\1 *10000+ \2 *100+ \3) /* \1.\2.\3 */])[ ++eat flaming death ++#endif], ++ libc_cv_kfreebsdVER='TOO OLD!', ++ libc_cv_kfreebsdVER='LIBC_KFREEBSD_VERSION or later')]) ++if test "$libc_cv_kfreebsdVER" != 'LIBC_KFREEBSD_VERSION or later'; then ++ AC_MSG_ERROR([GNU libc requires kernel header files from ++kFreeBSD LIBC_KFREEBSD_VERSION or later to be installed before configuring. ++The kernel header files are found usually in /usr/src/sys/; make sure ++these directories use files from kFreeBSD LIBC_KFREEBSD_VERSION or later. ++This check uses , so ++make sure that file was built correctly when installing the kernel header ++files. To use kernel headers not from /usr/src/sys/, use the ++configure option --with-headers.]) ++fi ++ ++AC_ARG_ENABLE(compatible-utmp, dnl ++[ --disable-compatible-utmp use a struct utmp which is the same as struct ++ utmpx, as on kFreeBSD, but incompatible with FreeBSD], ++ enable_utmp_compat=$enableval, enable_utmp_compat=no) ++if test "$enable_utmp_compat" = no; then ++ utmp_subdir=utmp-utmpx ++else ++ utmp_subdir=utmp-compat ++fi ++sysnames="$sysnames sysdeps/unix/bsd/bsd4.4/kfreebsd/$utmp_subdir" ++ ++# If the user gave a minimal version number test whether the available ++# kernel headers are young enough. Additionally we have minimal ++# kernel versions for some architectures. If a previous configure fragment ++# set arch_minimum_kernel already, let that override our defaults here. ++# Note that we presume such a fragment has set libc_cv_gcc_unwind_find_fde ++# if appropriate too. ++test -n "$arch_minimum_kernel" || ++case "$machine" in ++ i386*) ++ libc_cv_gcc_unwind_find_fde=yes ++ arch_minimum_kernel=5.4.0 ++ ;; ++ x86_64*) ++ arch_minimum_kernel=5.4.0 ++ ;; ++ *) ++ arch_minimum_kernel=5.4.0 ++ ;; ++esac ++if test -n "$minimum_kernel"; then ++ changequote(,) ++ user_version=$((`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'`)) ++ arch_version=$((`echo "$arch_minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'`)) ++ changequote([,]) ++ if test $user_version -lt $arch_version; then ++ AC_MSG_WARN([minimum kernel version reset to $arch_minimum_kernel]) ++ minimum_kernel=$arch_minimum_kernel ++ fi ++else ++ if test $arch_minimum_kernel != '5.4.0'; then ++ minimum_kernel=$arch_minimum_kernel ++ fi ++fi ++ ++if test -n "$minimum_kernel"; then ++ AC_MSG_CHECKING(for kernel header at least $minimum_kernel) ++changequote(,)dnl ++ decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 10000 + \2 * 100 + \3)/'`; ++ abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`; ++changequote([,])dnl ++ AC_EGREP_CPP([eat flaming death], [#include ++#if !defined(__FreeBSD_kernel_version) && defined(__FreeBSD_version) ++#define __FreeBSD_kernel_version __FreeBSD_version ++#endif ++#if __FreeBSD_kernel_version < $decnum ++eat flaming death ++#endif], libc_minimum_kernel='too old!', libc_minimum_kernel=ok) ++ AC_MSG_RESULT($libc_minimum_kernel) ++ if test "$libc_minimum_kernel" = ok; then ++ AC_DEFINE_UNQUOTED(__KFREEBSD_KERNEL_VERSION, $decnum) ++ AC_DEFINE_UNQUOTED(__ABI_TAG_VERSION, $abinum) ++ else ++ AC_MSG_ERROR([*** The available kernel headers are older than the requested ++*** compatible kernel version]) ++ fi ++fi ++ ++if test -n "$sysheaders"; then ++ CPPFLAGS=$OLD_CPPFLAGS ++fi ++# The Linux filesystem standard prescribes where to place "essential" ++# files. I.e., when the installation prefix is "/usr" we have to place ++# shared library objects and the configuration files on the root partition ++# in /lib and /etc. ++case "$prefix" in ++/usr | /usr/) ++ # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib ++ case $machine in ++ sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 | \ ++ mips/mips64/n64/* ) ++ libc_cv_slibdir="/lib64" ++ if test "$libdir" = '${exec_prefix}/lib'; then ++ libdir='${exec_prefix}/lib64'; ++ # Locale data can be shared between 32bit and 64bit libraries ++ libc_cv_localedir='${exec_prefix}/lib/locale' ++ fi ++ ;; ++ mips/mips64/n32/* ) ++ libc_cv_slibdir="/lib32" ++ if test "$libdir" = '${exec_prefix}/lib'; then ++ libdir='${exec_prefix}/lib32'; ++ # Locale data can be shared between 32bit and 64bit libraries ++ libc_cv_localedir='${exec_prefix}/lib/locale' ++ fi ++ ;; ++ *) ++ libc_cv_slibdir="/lib" ++ ;; ++ esac ++ # Allow the user to override the path with --sysconfdir ++ if test $sysconfdir = '${prefix}/etc'; then ++ libc_cv_sysconfdir=/etc ++ else ++ libc_cv_sysconfdir=$sysconfdir ++ fi ++ libc_cv_rootsbindir="/sbin" ++ ;; ++esac ++ ++ ++# Put exception handling support into libc, so that not every shared ++# library needs to include it. ++# FIXME: Does not work yet. ++libc_cv_gcc_unwind_find_fde=no ++ ++ ++# Under kFreeBSD the LinuxThreads or (may be later) NPTL add-on should be available. ++case $add_ons in ++ # Only one of the add-ons should be available. ++ *linuxthreads*nptl*|*nptl*linuxthreads*) ++ echo "\ ++*** LinuxThreads and NPTL add-ons are both available. Only one must be used." ++ exit 1 ++ ;; ++ # It is available. Good. ++ *linuxthreads*) ++ linuxthreads_missing= ++ ;; ++ *nptl*) ++ linuxthreads_missing= ++ ;; ++ *) ++ linuxthreads_missing=yes ++ ;; ++esac ++ ++if test "$linuxthreads_missing"; then ++ if test $enable_sanity = yes; then ++ echo "\ ++*** On GNU/kFreeBSD systems it is normal to compile GNU libc with the ++*** \`linuxthreads' add-on. Without that, the library will be ++*** incompatible with normal GNU/kFreeBSD systems. ++*** If you really mean to not use this add-on, run configure again ++*** using the extra parameter \`--disable-sanity-checks'." ++ exit 1 ++ else ++ echo "\ ++*** WARNING: Are you sure you do not want to use the \`linuxthreads' ++*** add-on?" ++ fi ++fi ++ ++if test "$prefix" = "/usr/local" -o "$prefix" = "/usr/local/" -o "$prefix" = "NONE"; then ++ if test $enable_sanity = yes; then ++ echo "\ ++*** On GNU/kFreeBSD systems the GNU C Library should not be installed into ++*** /usr/local since this might make your system totally unusable. ++*** We strongly advise to use a different prefix. For details read the FAQ. ++*** If you really mean to do this, run configure again using the extra ++*** parameter \`--disable-sanity-checks'." ++ exit 1 ++ else ++ echo "\ ++*** WARNING: Do you really want to install the GNU C Library into /usr/local? ++*** This might make your system totally unusable, for details read the FAQ." ++ fi ++fi ++ ++ ++# One kFreeBSD we use ldconfig. ++use_ldconfig=yes ++ ++if test $host = $build; then ++ # If $prefix/include/{net,scsi} are symlinks, make install will ++ # clobber what they're linked to (probably a kernel tree). ++ # test -L ought to work on all Linux boxes. ++ if test "x$prefix" != xNONE; then ++ ac_prefix=$prefix ++ else ++ ac_prefix=$ac_default_prefix ++ fi ++ AC_MSG_CHECKING([for symlinks in ${ac_prefix}/include]) ++ ac_message= ++ if test -L ${ac_prefix}/include/net; then ++ ac_message="$ac_message ++ ${ac_prefix}/include/net is a symlink" ++ fi ++ if test -L ${ac_prefix}/include/scsi; then ++ ac_message="$ac_message ++ ${ac_prefix}/include/scsi is a symlink" ++ fi ++ if test -n "$ac_message"; then ++ AC_MSG_ERROR([$ac_message ++\`make install' will destroy the target of the link(s). ++Delete the links and re-run configure, or better still, move the entire ++${ac_prefix}/include directory out of the way.]) ++ else ++ AC_MSG_RESULT(ok) ++ fi ++fi +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/connect.c sysdeps/unix/bsd/bsd4.4/kfreebsd/connect.c +--- null/unix/bsd/bsd4.4/kfreebsd/connect.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/connect.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,68 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++/* According to POSIX.1-2004 the len argument specifies the length of ++ the sockaddr structure pointed to by the addrarg argument. However ++ the FreeBSD kernel waits the actual length of the address stored ++ there. The code below emulate this behaviour. */ ++ ++extern int __libc_sa_len (sa_family_t __af); ++extern int __libc_sa_len_internal (sa_family_t __af); ++ ++extern int __syscall_connect (int fd, __CONST_SOCKADDR_ARG addr, ++ socklen_t addrlen); ++ ++/* Open a connection on socket FD to peer at ADDR (which LEN bytes long). ++ For connectionless socket types, just set the default address to send to ++ and the only address from which to accept transmissions. ++ Return 0 on success, -1 for errors. */ ++ ++int ++__libc_connect (int fd, __CONST_SOCKADDR_ARG addr, socklen_t addrlen) ++{ ++ socklen_t new_addrlen; ++ ++#ifndef NOT_IN_libc ++ new_addrlen = INTUSE(__libc_sa_len) ((addr.__sockaddr__)->sa_family); ++#else ++ new_addrlen = __libc_sa_len ((addr.__sockaddr__)->sa_family); ++#endif ++ ++ /* Only allow a smaller size, otherwise it could lead to ++ stack corruption */ ++ if (new_addrlen < addrlen) ++ addrlen = new_addrlen; ++ ++ /* We pass 3 arguments. */ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (connect, 3, fd, addr, addrlen); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ int result = INLINE_SYSCALL (connect, 3, fd, addr, addrlen); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++} ++ ++strong_alias (__libc_connect, __connect_internal) ++weak_alias (__libc_connect, __connect) ++weak_alias (__libc_connect, connect) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/Dist sysdeps/unix/bsd/bsd4.4/kfreebsd/Dist +--- null/unix/bsd/bsd4.4/kfreebsd/Dist 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/Dist 2006-01-16 08:16:07.000000000 +0100 +@@ -0,0 +1,31 @@ ++bits/mcontext.h ++bits/stat16.h ++fpu.h ++machine/pal.h ++net/ethernet.h ++net/if_arp.h ++net/if_ether.h ++net/if_dl.h ++net/route.h ++nfs/nfs.h ++regdef.h ++sa_len.c ++stat16conv.c ++statconv.c ++statfsconv.c ++sys/acl.h ++sys/extattr.h ++sys/io.h ++sys/jail.h ++sys/ktrace.h ++sys/linker.h ++sys/mount.h ++sys/perm.h ++sys/rfork.h ++sys/rtprio.h ++sys/syslimits.h ++sys/timex.h ++sys/vm86.h ++sys_lseek.S ++sysarch.h ++ucontext_i.h +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/dl-execstack.c sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-execstack.c +--- null/unix/bsd/bsd4.4/kfreebsd/dl-execstack.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-execstack.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,58 @@ ++/* Stack executability handling for GNU dynamic linker. Linux version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++ ++extern int __stack_prot attribute_relro attribute_hidden; ++ ++ ++int ++internal_function ++_dl_make_stack_executable (void **stack_endp) ++{ ++ /* This gives us the highest/lowest page that needs to be changed. */ ++ uintptr_t page = ((uintptr_t) *stack_endp ++ & -(intptr_t) GLRO(dl_pagesize)); ++ ++ /* Challenge the caller. */ ++ if (__builtin_expect (__check_caller (RETURN_ADDRESS (0), ++ allow_ldso|allow_libpthread) != 0, 0) ++ || __builtin_expect (*stack_endp != __libc_stack_end, 0)) ++ return EPERM; ++ ++ if (__builtin_expect (__mprotect ((void *) page, GLRO(dl_pagesize), ++ __stack_prot) != 0, 0)) ++ return errno; ++ ++ /* Clear the address. */ ++ *stack_endp = NULL; ++ ++ /* Remember that we changed the permission. */ ++ GL(dl_stack_flags) |= PF_X; ++ ++ return 0; ++} ++rtld_hidden_def (_dl_make_stack_executable) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/dl-machine.h sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-machine.h +--- null/unix/bsd/bsd4.4/kfreebsd/dl-machine.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-machine.h 2006-02-08 16:21:06.000000000 +0100 +@@ -0,0 +1,31 @@ ++/* Dynamic linker magic for glibc on FreeBSD kernel. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Contrary to most kernels which use ELFOSABI_SYSV aka ELFOSABI_NONE, ++ FreeBSD uses ELFOSABI_FREEBSD for the OSABI field. */ ++ ++# define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_FREEBSD) ++# define VALID_ELF_ABIVERSION(ver) (ver == 0) ++# define VALID_ELF_HEADER(hdr,exp,size) \ ++ memcmp (hdr,exp,size-2) == 0 \ ++ && VALID_ELF_OSABI (hdr[EI_OSABI]) \ ++ && VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION]) ++ ++#include_next +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/dl-osinfo.h sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-osinfo.h +--- null/unix/bsd/bsd4.4/kfreebsd/dl-osinfo.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-osinfo.h 2006-02-08 16:21:06.000000000 +0100 +@@ -0,0 +1,99 @@ ++/* Operating system specific code for generic dynamic loader functions. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++#ifndef MIN ++# define MIN(a,b) (((a)<(b))?(a):(b)) ++#endif ++ ++#ifdef SHARED ++/* This is the function used in the dynamic linker to print the fatal error ++ message. */ ++static inline void ++__attribute__ ((__noreturn__)) ++dl_fatal (const char *str) ++{ ++ _dl_dprintf (2, str); ++ _exit (1); ++} ++#endif ++ ++ ++#define DL_SYSDEP_OSCHECK(FATAL) \ ++ do { \ ++ /* Test whether the kernel is new enough. This test is only \ ++ performed if the library is not compiled to run on all \ ++ kernels. */ \ ++ if (__KFREEBSD_KERNEL_VERSION > 0) \ ++ { \ ++ char bufmem[64]; \ ++ char *buf = bufmem; \ ++ unsigned int version; \ ++ int parts; \ ++ char *cp; \ ++ struct utsname uts; \ ++ \ ++ /* Try the uname syscall */ \ ++ if (! __uname (&uts)) \ ++ { \ ++ /* Now convert it into a number. The string consists of at most \ ++ three parts. */ \ ++ version = 0; \ ++ parts = 0; \ ++ buf = uts.release; \ ++ cp = buf; \ ++ while ((*cp >= '0') && (*cp <= '9')) \ ++ { \ ++ unsigned int here = *cp++ - '0'; \ ++ \ ++ while ((*cp >= '0') && (*cp <= '9')) \ ++ { \ ++ here *= 10; \ ++ here += *cp++ - '0'; \ ++ } \ ++ \ ++ ++parts; \ ++ version *= 100; \ ++ version |= here; \ ++ \ ++ if (*cp++ != '.') \ ++ /* Another part following? */ \ ++ break; \ ++ } \ ++ \ ++ if (parts == 2) \ ++ version *= 100; \ ++ \ ++ if (parts == 1) \ ++ version *= 10000; \ ++ \ ++ /* Now we can test with the required version. */ \ ++ if (version < __KFREEBSD_KERNEL_VERSION) \ ++ /* Not sufficent. */ \ ++ FATAL ("FATAL: kernel too old\n"); \ ++ \ ++ GLRO(dl_osversion) = version; \ ++ } \ ++ } \ ++ } while (0) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fcntl.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fcntl.c +--- null/unix/bsd/bsd4.4/kfreebsd/fcntl.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fcntl.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fhstat64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstat64.c +--- null/unix/bsd/bsd4.4/kfreebsd/fhstat64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstat64.c 2006-01-27 05:39:47.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++fhstat64 (const fhandle_t *fhp, struct stat64 *buf) ++{ ++ struct stat16 buf16; ++ ++ if (__syscall_fhstat (fhp, &buf16) < 0) ++ return -1; ++ ++ /* Convert a 'struct stat16' to 'struct stat64'. */ ++ stat16_to_stat64 (&buf16, buf); ++ ++ return 0; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fhstat.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstat.c +--- null/unix/bsd/bsd4.4/kfreebsd/fhstat.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstat.c 2006-01-27 05:39:47.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__fhstat (const fhandle_t *fhp, struct stat *buf) ++{ ++ struct stat16 buf16; ++ ++ if (__syscall_fhstat (fhp, &buf16) < 0) ++ return -1; ++ ++ /* Convert a 'struct stat16' to 'struct stat'. */ ++ stat16_to_stat (&buf16, buf); ++ ++ return 0; ++} ++ ++weak_alias (__fhstat, fhstat) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fhstatfs64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstatfs64.c +--- null/unix/bsd/bsd4.4/kfreebsd/fhstatfs64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstatfs64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,36 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include "statfsconv.c" ++ ++int ++fhstatfs64 (const fhandle_t *fhp, struct statfs64 *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fhstatfs (fhp, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statfs64'. */ ++ statfs5_to_statfs64 (&kbuf, buf); ++ ++ return 0; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fhstatfs.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstatfs.c +--- null/unix/bsd/bsd4.4/kfreebsd/fhstatfs.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstatfs.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,35 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "statfsconv.c" ++ ++int ++fhstatfs (const fhandle_t *fhp, struct statfs *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fhstatfs (fhp, &kbuf) < 0) ++ return -1; ++ ++ statfs5_to_statfs (&kbuf, buf); ++ ++ return 0; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fstatfs64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatfs64.c +--- null/unix/bsd/bsd4.4/kfreebsd/fstatfs64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatfs64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Return information about the filesystem on which FD resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FD resides. */ ++int ++__fstatfs64 (int fd, struct statfs64 *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fstatfs (fd, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statfs64'. */ ++ statfs5_to_statfs64 (&kbuf, buf); ++ ++ return 0; ++} ++ ++weak_alias (__fstatfs64, fstatfs64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fstatfs.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatfs.c +--- null/unix/bsd/bsd4.4/kfreebsd/fstatfs.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatfs.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Return information about the filesystem on which FD resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "statfsconv.c" ++ ++/* Return information about the filesystem on which FD resides. */ ++int ++__fstatfs (int fd, struct statfs *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fstatfs (fd, &kbuf) < 0) ++ return -1; ++ ++ statfs5_to_statfs (&kbuf, buf); ++ ++ return 0; ++} ++weak_alias (__fstatfs, fstatfs) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fstatvfs64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatvfs64.c +--- null/unix/bsd/bsd4.4/kfreebsd/fstatvfs64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatvfs64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,41 @@ ++/* Return information about the filesystem on which FD resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FD resides. */ ++int ++__fstatvfs64 (int fd, struct statvfs64 *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fstatfs (fd, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statvfs64'. */ ++ statfs5_to_statvfs64 (&kbuf, buf); ++ ++ return 0; ++} ++ ++weak_alias (__fstatvfs64, fstatvfs64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fstatvfs.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatvfs.c +--- null/unix/bsd/bsd4.4/kfreebsd/fstatvfs.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatvfs.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Return information about the filesystem on which FD resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FD resides. */ ++int ++fstatvfs (int fd, struct statvfs *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fstatfs (fd, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statvfs'. */ ++ statfs5_to_statvfs (&kbuf, buf); ++ ++ return 0; ++} ++libc_hidden_def (fstatvfs) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/ftruncate64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/ftruncate64.c +--- null/unix/bsd/bsd4.4/kfreebsd/ftruncate64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/ftruncate64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1 @@ ++/* 'ftruncate64' is the same as 'ftruncate', because __off64_t == __off_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/ftruncate.c sysdeps/unix/bsd/bsd4.4/kfreebsd/ftruncate.c +--- null/unix/bsd/bsd4.4/kfreebsd/ftruncate.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/ftruncate.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* The real system call has a word of padding before the 64-bit off_t ++ argument. */ ++extern int __syscall_ftruncate (int __fd, int __unused1, ++ __off_t __length) __THROW; ++ ++int ++__ftruncate (int fd, __off_t length) ++{ ++ /* We pass 2 arguments in 4 words. */ ++ return INLINE_SYSCALL (ftruncate, 2, fd, 0, length); ++} ++ ++weak_alias (__ftruncate, ftruncate) ++ ++/* 'ftruncate64' is the same as 'ftruncate', because __off64_t == __off_t. */ ++strong_alias (__ftruncate, __ftruncate64) ++weak_alias (__ftruncate64, ftruncate64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fxstat64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fxstat64.c +--- null/unix/bsd/bsd4.4/kfreebsd/fxstat64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fxstat64.c 2006-01-27 05:39:47.000000000 +0100 +@@ -0,0 +1,44 @@ ++/* fxstat using FreeBSD fstat, nfstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__fxstat64 (int vers, int fd, struct stat64 *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_fstat (fd, __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat64 (&buf16, buf); ++ return result; ++ } ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__fxstat64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/fxstat.c sysdeps/unix/bsd/bsd4.4/kfreebsd/fxstat.c +--- null/unix/bsd/bsd4.4/kfreebsd/fxstat.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/fxstat.c 2006-01-27 05:39:47.000000000 +0100 +@@ -0,0 +1,48 @@ ++/* fxstat using FreeBSD fstat, nfstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__fxstat (int vers, int fd, struct stat *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_fstat (fd, __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat (&buf16, buf); ++ return result; ++ } ++ else if (__builtin_expect (vers == _STAT_VER_stat, 1)) ++ return __syscall_fstat (fd, CHECK_1 ((struct stat16 *) buf)); ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__fxstat) ++ ++weak_alias (__fxstat, _fxstat) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/_G_config.h sysdeps/unix/bsd/bsd4.4/kfreebsd/_G_config.h +--- null/unix/bsd/bsd4.4/kfreebsd/_G_config.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/_G_config.h 2006-01-03 16:12:12.000000000 +0100 +@@ -0,0 +1,102 @@ ++/* This file is needed by libio to define various configuration parameters. ++ These are always the same in the GNU C library. */ ++ ++#ifndef _G_config_h ++#define _G_config_h 1 ++ ++/* Define types for libio in terms of the standard internal type names. */ ++ ++#include ++#define __need_size_t ++#define __need_wchar_t ++#define __need_wint_t ++#define __need_NULL ++#include ++#ifndef _WINT_T ++/* Integral type unchanged by default argument promotions that can ++ hold any value corresponding to members of the extended character ++ set, as well as at least one value that does not correspond to any ++ member of the extended character set. */ ++# define _WINT_T ++typedef unsigned int wint_t; ++#endif ++#define __need_mbstate_t ++#include ++#define _G_size_t size_t ++typedef struct ++{ ++ __off_t __pos; ++ __mbstate_t __state; ++} _G_fpos_t; ++typedef struct ++{ ++ __off64_t __pos; ++ __mbstate_t __state; ++} _G_fpos64_t; ++#define _G_ssize_t __ssize_t ++#define _G_off_t __off_t ++#define _G_off64_t __off64_t ++#define _G_pid_t __pid_t ++#define _G_uid_t __uid_t ++#define _G_wchar_t wchar_t ++#define _G_wint_t wint_t ++#define _G_stat64 stat64 ++#include ++typedef union ++{ ++ struct __gconv_info __cd; ++ struct ++ { ++ struct __gconv_info __cd; ++ struct __gconv_step_data __data; ++ } __combined; ++} _G_iconv_t; ++ ++typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); ++typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); ++typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); ++typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); ++ ++#define _G_HAVE_BOOL 1 ++ ++ ++/* These library features are always available in the GNU C library. */ ++#define _G_HAVE_ATEXIT 1 ++#define _G_HAVE_SYS_CDEFS 1 ++#define _G_HAVE_SYS_WAIT 1 ++#define _G_NEED_STDARG_H 1 ++#define _G_va_list __gnuc_va_list ++ ++#define _G_HAVE_PRINTF_FP 1 ++#define _G_HAVE_MMAP 1 ++#define _G_HAVE_LONG_DOUBLE_IO 1 ++#define _G_HAVE_IO_FILE_OPEN 1 ++#define _G_HAVE_IO_GETLINE_INFO 1 ++ ++#define _G_IO_IO_FILE_VERSION 0x20001 ++ ++#define _G_OPEN64 __open64 ++#define _G_LSEEK64 __lseek64 ++#define _G_MMAP64 __mmap64 ++#define _G_FSTAT64(fd,buf) __fxstat64 (_STAT_VER, fd, buf) ++ ++/* This is defined by if `st_blksize' exists. */ ++#define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE) ++ ++#define _G_BUFSIZ 8192 ++ ++/* These are the vtbl details for ELF. */ ++#define _G_NAMES_HAVE_UNDERSCORE 0 ++#define _G_VTABLE_LABEL_HAS_LENGTH 1 ++#define _G_USING_THUNKS 1 ++#define _G_VTABLE_LABEL_PREFIX "__vt_" ++#define _G_VTABLE_LABEL_PREFIX_ID __vt_ ++ ++ ++#if defined __cplusplus || defined __STDC__ ++# define _G_ARGS(ARGLIST) ARGLIST ++#else ++# define _G_ARGS(ARGLIST) () ++#endif ++ ++#endif /* _G_config.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getcwd.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getcwd.c +--- null/unix/bsd/bsd4.4/kfreebsd/getcwd.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getcwd.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,90 @@ ++/* Determine current working directory. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++/* The system calls only makes a lookup in the VFS cache, which can easily ++ fail. Therefore we use the generic version as a fallback. */ ++extern int __syscall_getcwd (char *__unbounded buf, unsigned int size); ++static char *generic_getcwd (char *buf, size_t size) internal_function; ++ ++char * ++__getcwd (char *buf, size_t size) ++{ ++ char tmpbuf[PATH_MAX]; ++ ++ if (INLINE_SYSCALL (getcwd, 2, tmpbuf, PATH_MAX) >= 0) ++ { ++ size_t len = strlen (tmpbuf) + 1; ++ ++ if (size == 0) ++ { ++ if (__builtin_expect (buf != NULL, 0)) ++ { ++ __set_errno (EINVAL); ++ return NULL; ++ } ++ ++ buf = (char *) malloc (len); ++ if (__builtin_expect (buf == NULL, 0)) ++ { ++ __set_errno (ENOMEM); ++ return NULL; ++ } ++ } ++ else ++ { ++ if (size < len) ++ { ++ __set_errno (ERANGE); ++ return NULL; ++ } ++ ++ if (buf == NULL) ++ { ++ buf = (char *) malloc (size); ++ if (__builtin_expect (buf == NULL, 0)) ++ { ++ __set_errno (ENOMEM); ++ return NULL; ++ } ++ } ++ } ++ ++ memcpy (buf, tmpbuf, len); ++ return buf; ++ } ++ ++ return generic_getcwd (buf, size); ++} ++ ++weak_alias (__getcwd, getcwd) ++ ++/* Get the code for the generic version. */ ++#define GETCWD_RETURN_TYPE static char * internal_function ++#define __getcwd generic_getcwd ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getdents64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getdents64.c +--- null/unix/bsd/bsd4.4/kfreebsd/getdents64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getdents64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1 @@ ++/* We have the function getdirentries64 in file getdirentries64.c. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getdents.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getdents.c +--- null/unix/bsd/bsd4.4/kfreebsd/getdents.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getdents.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,89 @@ ++/* Read directory entries, 3 argument function. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#if 1 ++ ++/* Use the 3-argument system call. */ ++ ++extern int __syscall_getdents (int fd, char *buf, size_t nbytes); ++ ++/* Read directory entries from FD into BUF, reading at most NBYTES. ++ Returns the number of bytes read; zero when at end of directory; or ++ -1 for errors. */ ++ssize_t ++internal_function ++__getdents (int fd, char *buf, size_t nbytes) ++{ ++ return __syscall_getdents (fd, buf, nbytes); ++} ++ ++/* Export getdents(). Not an internal_function. */ ++ssize_t ++getdents (int fd, char *buf, size_t nbytes) ++{ ++ return __syscall_getdents (fd, buf, nbytes); ++} ++ ++#else ++ ++/* Use the 4-argument system call. */ ++ ++extern int __syscall_getdirentries (int fd, char *buf, unsigned int nbytes, ++ long *basep); ++ ++/* Read directory entries from FD into BUF, reading at most NBYTES. ++ Returns the number of bytes read; zero when at end of directory; or ++ -1 for errors. */ ++ssize_t ++internal_function ++__getdents (int fd, char *buf, size_t nbytes) ++{ ++ /* On 64-bit platforms, the system call differs from this function ++ because it takes an 'unsigned int', not a 'size_t'. */ ++ unsigned int nbytes32; ++ ++ nbytes32 = nbytes; ++ if (nbytes32 == nbytes) ++ return __syscall_getdirentries (fd, buf, nbytes32, NULL); ++ else ++ { ++ /* NBYTES is too large. */ ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++ ++/* Export getdents(). Not an internal_function. */ ++ssize_t ++getdents (int fd, char *buf, size_t nbytes) ++{ ++ return __getdents (fd, buf, nbytes); ++} ++ ++#endif ++ ++/* Since 'struct dirent64' == 'struct dirent', the functions '__getdents64' ++ and '__getdents' are equal. */ ++strong_alias (__getdents, __getdents64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getdirentries64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getdirentries64.c +--- null/unix/bsd/bsd4.4/kfreebsd/getdirentries64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getdirentries64.c 2006-01-17 16:22:36.000000000 +0100 +@@ -0,0 +1,5 @@ ++/* Since 'struct dirent64' == 'struct dirent', the functions 'getdirentries64' ++ and 'getdirentries' differ only in the type of the BASEP argument. */ ++#define GETDIRENTRIES getdirentries64 ++#define OFF_T off64_t ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getdirentries.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getdirentries.c +--- null/unix/bsd/bsd4.4/kfreebsd/getdirentries.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getdirentries.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,100 @@ ++/* Read directory entries, 4 argument function. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef GETDIRENTRIES ++# define GETDIRENTRIES getdirentries ++# define OFF_T off_t ++#endif ++ ++#include ++#include ++#include ++#include ++#include ++ ++#if 1 ++ ++/* Use the 4-argument system call. */ ++ ++extern int __syscall_getdirentries (int fd, char *buf, unsigned int nbytes, ++ long *basep); ++ ++/* Read directory entries from FD into BUF, reading at most NBYTES. ++ Reading starts at offset *BASEP, and *BASEP is updated with the new ++ position after reading. Returns the number of bytes read; zero when at ++ end of directory; or -1 for errors. */ ++/* FIXME: This is not what this function does. It starts reading at the ++ current position of FD, not at *BASEP. */ ++ssize_t ++GETDIRENTRIES (int fd, char *buf, size_t nbytes, OFF_T *basep) ++{ ++ /* On 32-bit platforms, the system call differs from this function because ++ it takes a 'long *', not an 'OFF_T *'. On 64-bit platforms, the system ++ call differs from this function because it takes an 'unsigned int', not ++ a 'size_t'. */ ++ unsigned int nbytes32; ++ ++ nbytes32 = nbytes; ++ if (nbytes32 == nbytes) ++ { ++ long base; ++ int result = __syscall_getdirentries (fd, buf, nbytes32, &base); ++ ++ if (result >= 0 && basep != NULL) ++ *basep = base; ++ return result; ++ } ++ else ++ { ++ /* NBYTES is too large. */ ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++ ++#else ++ ++/* Use the 3-argument system call. */ ++ ++extern int __syscall_getdents (int fd, char *buf, size_t nbytes); ++ ++/* Read directory entries from FD into BUF, reading at most NBYTES. ++ Reading starts at offset *BASEP, and *BASEP is updated with the new ++ position after reading. Returns the number of bytes read; zero when at ++ end of directory; or -1 for errors. */ ++/* FIXME: This is not what this function does. It starts reading at the ++ current position of FD, not at *BASEP. */ ++ssize_t ++GETDIRENTRIES (int fd, char *buf, size_t nbytes, OFF_T *basep) ++{ ++ OFF_T base = 0; ++ ssize_t result; ++ ++ if (basep) ++ base = __lseek (fd, (off_t) 0, SEEK_CUR); ++ ++ result = __syscall_getdents (fd, buf, nbytes); ++ ++ if (basep && result >= 0) ++ *basep = base; ++ return result; ++} ++ ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getfsstat64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getfsstat64.c +--- null/unix/bsd/bsd4.4/kfreebsd/getfsstat64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getfsstat64.c 2006-01-13 15:56:49.000000000 +0100 +@@ -0,0 +1,49 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++int ++__getfsstat64 (struct statfs64 *buf, long bufsize, int flags) ++{ ++ long bufcount; ++ struct statfs_fbsd5 *tmpbuf; ++ int count, i; ++ ++ if (bufsize < 0) ++ bufsize = 0; ++ bufcount = bufsize / sizeof (struct statfs64); ++ ++ if ((bufcount == 0) || (buf == NULL)) ++ tmpbuf = NULL; ++ else ++ tmpbuf = alloca(bufcount * sizeof (struct statfs_fbsd5)); ++ ++ count = __syscall_getfsstat (tmpbuf, bufcount * sizeof (struct statfs_fbsd5), flags); ++ if (tmpbuf && count > 0) ++ for (i = count - 1; i >= 0; i--) ++ statfs5_to_statfs64 (&tmpbuf[i], &buf[i]); ++ ++ return count; ++} ++ ++weak_alias (__getfsstat64, getfsstat64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getfsstat.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getfsstat.c +--- null/unix/bsd/bsd4.4/kfreebsd/getfsstat.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getfsstat.c 2006-01-13 15:56:49.000000000 +0100 +@@ -0,0 +1,49 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "statfsconv.c" ++ ++int ++__getfsstat (struct statfs *buf, long bufsize, int flags) ++{ ++ long bufcount; ++ struct statfs_fbsd5 *tmpbuf; ++ int count, i; ++ ++ if (bufsize < 0) ++ bufsize = 0; ++ bufcount = bufsize / sizeof (struct statfs); ++ ++ if ((bufcount == 0) || (buf == NULL)) ++ tmpbuf = NULL; ++ else ++ tmpbuf = alloca(bufcount * sizeof (struct statfs_fbsd5)); ++ ++ count = __syscall_getfsstat (tmpbuf, bufcount * sizeof (struct statfs_fbsd5), flags); ++ if (tmpbuf && count > 0) ++ for (i = count - 1; i >= 0; i--) ++ statfs5_to_statfs (&tmpbuf[i], &buf[i]); ++ ++ return count; ++} ++ ++weak_alias (__getfsstat, getfsstat) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/gethostid.c sysdeps/unix/bsd/bsd4.4/kfreebsd/gethostid.c +--- null/unix/bsd/bsd4.4/kfreebsd/gethostid.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/gethostid.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Return the current machine's Internet number. */ ++long int ++gethostid (void) ++{ ++ /* Fetch sysctl value of "kern.hostid". */ ++ int request[2] = { CTL_KERN, KERN_HOSTID }; ++ int result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ /* Dummy result. */ ++ return 0; ++ ++ return result; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/gethostname.c sysdeps/unix/bsd/bsd4.4/kfreebsd/gethostname.c +--- null/unix/bsd/bsd4.4/kfreebsd/gethostname.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/gethostname.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,52 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* Put the name of the current host in no more than LEN bytes of NAME. ++ The result is null-terminated if LEN is large enough for the full ++ name and the terminator. */ ++ ++int ++__gethostname (char *name, size_t len) ++{ ++ /* Fetch the "kern.hostname" sysctl value. */ ++ int request[2] = { CTL_KERN, KERN_HOSTNAME }; ++ size_t result_len = len; ++ ++ if (__sysctl (request, 2, name, &result_len, NULL, 0) < 0) ++ { ++ if (errno == ENOMEM) ++ __set_errno (ENAMETOOLONG); ++ return -1; ++ } ++ ++ if (result_len >= len) ++ { ++ __set_errno (ENAMETOOLONG); ++ return -1; ++ } ++ ++ name[result_len] = '\0'; ++ return 0; ++} ++ ++weak_alias (__gethostname, gethostname) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getloadavg.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getloadavg.c +--- null/unix/bsd/bsd4.4/kfreebsd/getloadavg.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getloadavg.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,53 @@ ++/* Get system load averages. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++struct loadavg ++ { ++ unsigned int ldavg[3]; ++ long fscale; ++ }; ++ ++/* Put the 1 minute, 5 minute and 15 minute load averages into the first ++ NELEM elements of LOADAVG. Return the number written (never more than ++ three, but may be less than NELEM), or -1 if an error occurred. */ ++int ++getloadavg (double loadavg[], int nelem) ++{ ++ if (nelem > 3) ++ nelem = 3; ++ if (nelem > 0) ++ { ++ /* Fetch the "vm.loadavg" sysctl value. */ ++ int request[2] = { CTL_VM, VM_LOADAVG }; ++ struct loadavg result; ++ size_t result_len = sizeof (result); ++ int i; ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ return -1; ++ ++ for (i = 0; i < nelem; i++) ++ loadavg[i] = (double) result.ldavg[i] / (double) result.fscale; ++ } ++ return nelem; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getlogin.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getlogin.c +--- null/unix/bsd/bsd4.4/kfreebsd/getlogin.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getlogin.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,49 @@ ++/* Non-reentrant function to return the current login name. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* Defined in getlogin_r.c. */ ++extern char *__getlogin_cache; ++extern char __getlogin_cache_room[MAXLOGNAME]; ++ ++extern int __syscall_getlogin (char *__name, size_t __name_len); ++ ++/* Return the login name of the user, or NULL if it can't be determined. ++ The returned pointer, if not NULL, is good only until the next call. */ ++ ++char * ++getlogin (void) ++{ ++ if (__getlogin_cache == NULL) ++ { ++ if (INLINE_SYSCALL (getlogin, 2, __getlogin_cache_room, MAXLOGNAME) < 0) ++ return NULL; ++ /* The system call should return a NULL terminated name. */ ++ if (__memchr (__getlogin_cache_room, '\0', MAXLOGNAME) == NULL) ++ abort (); ++ __getlogin_cache = __getlogin_cache_room; ++ } ++ return (__getlogin_cache[0] ? __getlogin_cache : NULL); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getlogin_r.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getlogin_r.c +--- null/unix/bsd/bsd4.4/kfreebsd/getlogin_r.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getlogin_r.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,69 @@ ++/* Reentrant function to return the current login name. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* Cache the system call's return value. */ ++char *__getlogin_cache; ++/* The kernel never returns more than MAXLOGNAME bytes, therefore we don't ++ need more than that either. */ ++char __getlogin_cache_room[MAXLOGNAME]; ++ ++extern int __syscall_getlogin (char *__name, size_t __name_len); ++ ++/* Return at most NAME_LEN characters of the login name of the user in NAME. ++ If it cannot be determined or some other error occurred, return the error ++ code. Otherwise return 0. ++ Note that the getlogin_r function in FreeBSD libc returns a 'char *', ++ but SUSV2 wants a return type of 'int'. */ ++ ++int ++getlogin_r (char *name, size_t name_len) ++{ ++ size_t len; ++ ++ if (__getlogin_cache == NULL) ++ { ++ if (INLINE_SYSCALL (getlogin, 2, __getlogin_cache_room, MAXLOGNAME) < 0) ++ return -1; ++ /* The system call should return a NULL terminated name. */ ++ if (__memchr (__getlogin_cache_room, '\0', MAXLOGNAME) == NULL) ++ abort (); ++ __getlogin_cache = __getlogin_cache_room; ++ } ++ ++ len = strlen (__getlogin_cache); ++ if (__builtin_expect (len < name_len, 1)) ++ { ++ memcpy (name, __getlogin_cache, len + 1); ++ return 0; ++ } ++ else ++ { ++ __set_errno (ERANGE); ++ return -1; ++ } ++} ++libc_hidden_def (getlogin_r) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getmntinfo64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getmntinfo64.c +--- null/unix/bsd/bsd4.4/kfreebsd/getmntinfo64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getmntinfo64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,78 @@ ++/* Return list of mounted filesystems. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++static int mntbufsize; ++static struct statfs64 *mntbuf; ++ ++/* Return list of mounted filesystems. ++ Inherently not multithread-safe. */ ++int ++getmntinfo64 (struct statfs64 **mntbufp, int flags) ++{ ++ for (;;) ++ { ++ int count = __getfsstat64 (NULL, 0, flags); ++ int count2; ++ ++ if (count < 0) ++ return 0; ++ ++ if (count == 0) ++ { ++ __set_errno (0); ++ return 0; ++ } ++ ++ if (count > mntbufsize) ++ { ++ if (mntbuf != NULL) ++ free (mntbuf); ++ mntbufsize = 0; ++ mntbuf = (struct statfs64 *) malloc (count * sizeof (struct statfs64)); ++ if (mntbuf == NULL) ++ { ++ __set_errno (ENOMEM); ++ return 0; ++ } ++ mntbufsize = count; ++ } ++ ++ count2 = __getfsstat64 (mntbuf, count * sizeof (struct statfs64), flags); ++ ++ if (count2 < 0) ++ return 0; ++ ++ if (count2 == 0) ++ { ++ __set_errno (0); ++ return 0; ++ } ++ ++ if (count2 <= count) ++ { ++ *mntbufp = mntbuf; ++ return count2; ++ } ++ } ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getmntinfo.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getmntinfo.c +--- null/unix/bsd/bsd4.4/kfreebsd/getmntinfo.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getmntinfo.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,80 @@ ++/* Return list of mounted filesystems. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++static int mntbufsize; ++static struct statfs *mntbuf; ++ ++/* Return list of mounted filesystems. ++ Inherently not multithread-safe. */ ++int ++__getmntinfo (struct statfs **mntbufp, int flags) ++{ ++ for (;;) ++ { ++ int count = __getfsstat (NULL, 0, flags); ++ int count2; ++ ++ if (count < 0) ++ return 0; ++ ++ if (count == 0) ++ { ++ __set_errno (0); ++ return 0; ++ } ++ ++ if (count > mntbufsize) ++ { ++ if (mntbuf != NULL) ++ free (mntbuf); ++ mntbufsize = 0; ++ mntbuf = (struct statfs *) malloc (count * sizeof (struct statfs)); ++ if (mntbuf == NULL) ++ { ++ __set_errno (ENOMEM); ++ return 0; ++ } ++ mntbufsize = count; ++ } ++ ++ count2 = __getfsstat (mntbuf, count * sizeof (struct statfs), flags); ++ ++ if (count2 < 0) ++ return 0; ++ ++ if (count2 == 0) ++ { ++ __set_errno (0); ++ return 0; ++ } ++ ++ if (count2 <= count) ++ { ++ *mntbufp = mntbuf; ++ return count2; ++ } ++ } ++} ++ ++weak_alias (__getmntinfo, getmntinfo) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getpagesize.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getpagesize.c +--- null/unix/bsd/bsd4.4/kfreebsd/getpagesize.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getpagesize.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,42 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Return the system page size. */ ++int ++__getpagesize (void) ++{ ++ static int cached_pagesize /* = 0 */; ++ ++ if (cached_pagesize == 0) ++ { ++ /* Fetch sysctl value of "hw.pagesize". */ ++ int request[2] = { CTL_HW, HW_PAGESIZE }; ++ size_t result_len = sizeof (cached_pagesize); ++ ++ if (__sysctl (request, 2, &cached_pagesize, &result_len, NULL, 0) < 0) ++ return -1; ++ } ++ return cached_pagesize; ++} ++libc_hidden_def (__getpagesize) ++ ++weak_alias (__getpagesize, getpagesize) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getpt.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getpt.c +--- null/unix/bsd/bsd4.4/kfreebsd/getpt.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getpt.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,92 @@ ++/* Copyright (C) 1998-1999, 2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++ ++/* Prefix for master pseudo terminal nodes. */ ++#define _PATH_PTY "/dev/pty" ++ ++ ++/* Letters indicating a series of pseudo terminals. */ ++#ifndef PTYNAME1 ++#define PTYNAME1 "pqrs" ++#endif ++const char __libc_ptyname1[] attribute_hidden = PTYNAME1; ++ ++/* Letters indicating the position within a series. */ ++#ifndef PTYNAME2 ++#define PTYNAME2 "0123456789abcdefghijklmnopqrstuv"; ++#endif ++const char __libc_ptyname2[] attribute_hidden = PTYNAME2; ++ ++ ++/* Open a master pseudo terminal and return its file descriptor. */ ++int ++__posix_openpt (int oflag) ++{ ++ char buf[sizeof (_PATH_PTY) + 2]; ++ const char *p, *q; ++ char *s; ++ ++ s = __mempcpy (buf, _PATH_PTY, sizeof (_PATH_PTY) - 1); ++ /* s[0] and s[1] will be filled in the loop. */ ++ s[2] = '\0'; ++ ++ for (p = __libc_ptyname1; *p != '\0'; ++p) ++ { ++ s[0] = *p; ++ ++ for (q = __libc_ptyname2; *q != '\0'; ++q) ++ { ++ int fd; ++ ++ s[1] = *q; ++ ++ fd = __open (buf, oflag); ++ if (fd >= 0) ++ { ++ if (!(oflag & O_NOCTTY)) ++ __ioctl (fd, TIOCSCTTY, NULL); ++ ++ return fd; ++ } ++ ++ if (errno == ENOENT) ++ return -1; ++ } ++ } ++ ++ __set_errno (ENOENT); ++ return -1; ++} ++ ++weak_alias (__posix_openpt, posix_openpt) ++ ++ ++int ++__getpt (void) ++{ ++ return __posix_openpt (O_RDWR); ++} ++ ++weak_alias (__getpt, getpt) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getrlimit64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getrlimit64.c +--- null/unix/bsd/bsd4.4/kfreebsd/getrlimit64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getrlimit64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1 @@ ++/* 'getrlimit64' is the same as 'getrlimit', because __rlim64_t == __rlim_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/getsysstats.c sysdeps/unix/bsd/bsd4.4/kfreebsd/getsysstats.c +--- null/unix/bsd/bsd4.4/kfreebsd/getsysstats.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/getsysstats.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,108 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++ ++int ++__get_nprocs (void) ++{ ++ /* Fetch sysctl value of "hw.ncpu". */ ++ int request[2] = { CTL_HW, HW_NCPU }; ++ int result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ /* Dummy result. */ ++ return 1; ++ ++ return result; ++} ++ ++weak_alias (__get_nprocs, get_nprocs) ++ ++ ++int ++__get_nprocs_conf (void) ++{ ++ /* We don't know how to distinguish between configured and active CPUs. */ ++ return __get_nprocs (); ++} ++ ++weak_alias (__get_nprocs_conf, get_nprocs_conf) ++ ++ ++long int ++__get_phys_pages (void) ++{ ++ /* Fetch sysctl value of "hw.physmem". This is a little smaller than ++ the real installed memory size, but so what. */ ++ int request[2] = { CTL_HW, HW_PHYSMEM }; ++ int result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ return -1; ++ ++ return result; ++} ++ ++weak_alias (__get_phys_pages, get_phys_pages) ++ ++ ++long int ++__get_avphys_pages (void) ++{ ++#if 1 ++ int result1; ++ int result2; ++ { ++ /* Fetch sysctl value of "vm.stats.vm.v_inactive_count". */ ++ size_t result_len = sizeof (result1); ++ ++ if (__sysctlbyname ("vm.stats.vm.v_inactive_count", &result1, &result_len, ++ NULL, 0) < 0) ++ return -1; ++ } ++ { ++ /* Fetch sysctl value of "vm.stats.vm.v_free_count". */ ++ size_t result_len = sizeof (result2); ++ ++ if (__sysctlbyname ("vm.stats.vm.v_free_count", &result2, &result_len, ++ NULL, 0) < 0) ++ return -1; ++ } ++ ++ return result1 + result2; ++#else ++ /* This does not appear to work. */ ++ /* Fetch v_inactive_count field of sysctl value of "vm.vmmeter". */ ++ int request[2] = { CTL_VM, VM_METER }; ++ struct vmmeter result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ return -1; ++ ++ return result.v_inactive_count; ++#endif ++} ++ ++weak_alias (__get_avphys_pages, get_avphys_pages) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/glob64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/glob64.c +--- null/unix/bsd/bsd4.4/kfreebsd/glob64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/glob64.c 2006-01-23 18:56:18.000000000 +0100 +@@ -0,0 +1,3 @@ ++/* 'glob64' is different from 'glob', because ++ 'struct stat64' != 'struct stat'. */ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/glob.c sysdeps/unix/bsd/bsd4.4/kfreebsd/glob.c +--- null/unix/bsd/bsd4.4/kfreebsd/glob.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/glob.c 2006-01-23 18:56:18.000000000 +0100 +@@ -0,0 +1,3 @@ ++/* 'glob64' is different from 'glob', because ++ 'struct stat64' != 'struct stat'. */ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/bits/mcontext.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/bits/mcontext.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/bits/mcontext.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/bits/mcontext.h 2006-01-17 19:00:09.000000000 +0100 +@@ -0,0 +1,111 @@ ++/* Machine-dependent processor state structure for FreeBSD. i386 version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++/*- ++ * Copyright (c) 1999 Marcel Moolenaar ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer ++ * in this position and unchanged. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ * based on $FreeBSD: src/sys/i386/include/ucontext.h,v 1.10 2002/12/02 19:58:55 deischen Exp $ ++ */ ++ ++ /* ++ * The first 20 fields must match the definition of ++ * sigcontext. So that we can support sigcontext ++ * and ucontext_t at the same time. ++ */ ++ ++/* Whole processor state. */ ++typedef struct ++ { ++ int mc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* Segment registers. */ ++ int mc_gs; ++ int mc_fs; ++ int mc_es; ++ int mc_ds; ++ ++ /* "General" registers. These members are in the order that the i386 ++ `pusha' and `popa' instructions use (`popa' ignores %esp). */ ++ int mc_edi; ++ int mc_esi; ++ int mc_ebp; ++ int mc_isp; /* Not used; sc_esp is used instead. */ ++ int mc_ebx; ++ int mc_edx; ++ int mc_ecx; ++ int mc_eax; ++ ++ int mc_trapno; ++ int mc_err; ++ ++ int mc_eip; /* Instruction pointer. */ ++ int mc_cs; /* Code segment register. */ ++ ++ int mc_efl; /* Processor flags. */ ++ ++ int mc_esp; /* This stack pointer is used. */ ++ int mc_ss; /* Stack segment register. */ ++ ++ int mc_len; /* sizeof(mcontext_t) */ ++#define _MC_FPFMT_NODEV 0x10000 /* device not present or configured */ ++#define _MC_FPFMT_387 0x10001 ++#define _MC_FPFMT_XMM 0x10002 ++ int mc_fpformat; ++#define _MC_FPOWNED_NONE 0x20000 /* FP state not used */ ++#define _MC_FPOWNED_FPU 0x20001 /* FP state came from FPU */ ++#define _MC_FPOWNED_PCB 0x20002 /* FP state came from PCB */ ++ int mc_ownedfp; ++ int mc_spare1[1]; /* align next field to 16 bytes */ ++ /* ++ * See for the internals of mc_fpstate[]. ++ */ ++ int mc_fpstate[128] __attribute__((aligned(16))); ++ int mc_spare2[8]; ++ } mcontext_t; ++ ++/* Traditional BSD names for some members. */ ++#define mc_eflags mc_efl +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/bits/sigcontext.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/bits/sigcontext.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/bits/sigcontext.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/bits/sigcontext.h 2006-01-22 22:10:19.000000000 +0100 +@@ -0,0 +1,160 @@ ++/* Machine-dependent signal context structure for FreeBSD. i386 version. ++ Copyright (C) 1991-1992,1994,1997,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++#ifndef _BITS_SIGCONTEXT_H ++#define _BITS_SIGCONTEXT_H 1 ++ ++#ifdef __x86_64__ ++struct sigcontext { ++ __sigset_t sc_mask; /* signal mask to restore */ ++ long sc_onstack; /* sigstack state to restore */ ++ union { long sc_rdi; long rdi;}; ++ union { long sc_rsi; long rsi;}; ++ union { long sc_rdx; long rdx;}; ++ union { long sc_rcx; long rcx;}; ++ union { long sc_r8; long r8;}; ++ union { long sc_r9; long r9;}; ++ union { long sc_rax; long rax;}; ++ union { long sc_rbx; long rbx;}; ++ union { long sc_rbp; long rbp;}; ++ union { long sc_r10; long r10;}; ++ union { long sc_r11; long r11;}; ++ union { long sc_r12; long r12;}; ++ union { long sc_r13; long r13;}; ++ union { long sc_r14; long r14;}; ++ union { long sc_r15; long r15;}; ++ union { long sc_trapno; long trapno;}; ++ union { long sc_addr; long addr;}; ++ union { long sc_flags; long flags;}; ++ union { long sc_err; long err;}; ++ union { long sc_rip; long rip;}; ++ union { long sc_cs; long cs;}; ++ union { long sc_rflags; long rflags;}; ++ union { long sc_rsp; long rsp;}; ++ union { long sc_ss; long ss;}; ++ long sc_len; /* sizeof(mcontext_t) */ ++ /* ++ * XXX - See and for ++ * the following fields. ++ */ ++ long sc_fpformat; ++ long sc_ownedfp; ++ long sc_fpstate[64] __attribute__((aligned(16))); ++ long sc_spare[8]; ++}; ++ ++/* Traditional BSD names for some members. */ ++#define sc_sp sc_rsp /* Stack pointer. */ ++#define sc_fp sc_rbp /* Frame pointer. */ ++#define sc_pc sc_rip /* Process counter. */ ++ ++#else ++ ++/* State of this thread when the signal was taken. ++ The unions below are for compatibility with Linux (whose sigcontext ++ components don't have sc_ prefix) */ ++struct sigcontext ++ { ++ __sigset_t sc_mask; /* Blocked signals to restore. */ ++ int sc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* Segment registers. */ ++ union { int sc_gs; int gs; }; ++ union { int sc_fs; int fs; }; ++ union { int sc_es; int es; }; ++ union { int sc_ds; int ds; }; ++ ++ /* "General" registers. These members are in the order that the i386 ++ `pusha' and `popa' instructions use (`popa' ignores %esp). */ ++ union { int sc_edi; int edi; }; ++ union { int sc_esi; int esi; }; ++ union { int sc_ebp; int ebp; }; ++ union { int sc_isp; int isp; }; /* Not used; sc_esp is used instead. */ ++ union { int sc_ebx; int ebx; }; ++ union { int sc_edx; int edx; }; ++ union { int sc_ecx; int ecx; }; ++ union { int sc_eax; int eax; }; ++ ++ union { int sc_trapno; int trapno; }; ++ union { int sc_err; int err; }; ++ ++ union { int sc_eip; int eip; }; /* Instruction pointer. */ ++ union { int sc_cs; int cs; }; /* Code segment register. */ ++ ++ int sc_efl; /* Processor flags. */ ++ ++ union { int sc_esp; int esp; }; /* This stack pointer is used. */ ++ union { int sc_ss; int ss; }; /* Stack segment register. */ ++ ++ int sc_len; /* sizeof(mcontext_t) */ ++ /* ++ * XXX - See and for ++ * the following fields. ++ */ ++ int sc_fpformat; ++ int sc_ownedfp; ++ int sc_spare1[1]; ++ int sc_fpstate[128] __attribute__((aligned(16))); ++ int sc_spare2[8]; ++ }; ++ ++/* Traditional BSD names for some members. */ ++#define sc_sp sc_esp /* Stack pointer. */ ++#define sc_fp sc_ebp /* Frame pointer. */ ++#define sc_pc sc_eip /* Process counter. */ ++#define sc_ps sc_efl ++#define sc_eflags sc_efl ++#define eflags sc_efl /* Linux-style name. */ ++ ++ ++/* Codes for SIGFPE. */ ++#define FPE_INTDIV 1 /* integer divide by zero */ ++#define FPE_INTOVF 2 /* integer overflow */ ++ ++#if 1 /* FIXME: These need verification. */ ++ ++#define FPE_FLTDIV 3 /* floating divide by zero */ ++#define FPE_FLTOVF 4 /* floating overflow */ ++#define FPE_FLTUND 5 /* floating underflow */ ++#define FPE_FLTINX 6 /* floating loss of precision */ ++#define FPE_SUBRNG_FAULT 0x7 /* BOUNDS instruction failed */ ++#define FPE_FLTDNR_FAULT 0x8 /* denormalized operand */ ++#define FPE_EMERR_FAULT 0xa /* mysterious emulation error 33 */ ++#define FPE_EMBND_FAULT 0xb /* emulation BOUNDS instruction failed */ ++ ++/* Codes for SIGILL. */ ++#define ILL_PRIVIN_FAULT 1 ++#define ILL_ALIGN_FAULT 14 ++#define ILL_FPOP_FAULT 24 ++ ++/* Codes for SIGBUS. */ ++#define BUS_PAGE_FAULT 12 ++#define BUS_SEGNP_FAULT 26 ++#define BUS_STK_FAULT 27 ++#define BUS_SEGM_FAULT 29 ++ ++#endif ++ ++#endif ++ ++#endif /* _BITS_SIGCONTEXT_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/bits/time.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/bits/time.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/bits/time.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/bits/time.h 2006-02-23 19:25:25.000000000 +0100 +@@ -0,0 +1,89 @@ ++/* System-dependent timing definitions. FreeBSD version. ++ Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Never include this file directly; use instead. ++ */ ++ ++#ifndef __need_timeval ++# ifndef _BITS_TIME_H ++# define _BITS_TIME_H 1 ++ ++/* ISO/IEC 9899:1990 7.12.1: ++ The macro `CLOCKS_PER_SEC' is the number per second of the value ++ returned by the `clock' function. */ ++/* CAE XSH, Issue 4, Version 2: ++ The value of CLOCKS_PER_SEC is required to be 1 million on all ++ XSI-conformant systems. */ ++# define CLOCKS_PER_SEC 1000000l ++ ++# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K ++/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK ++ presents the real value for clock ticks per second for the system. */ ++# define CLK_TCK 128 ++# endif ++ ++# ifdef __USE_POSIX199309 ++/* Identifier for system-wide realtime clock. */ ++# define CLOCK_REALTIME 0 ++/* High-resolution timer from the CPU. */ ++# define CLOCK_PROCESS_CPUTIME_ID 2 ++/* Thread-specific CPU-time clock. */ ++# define CLOCK_THREAD_CPUTIME_ID 3 ++/* Monotonic system-wide clock. */ ++# define CLOCK_MONOTONIC 4 ++/* These are BSD specific clocks. */ ++# ifdef __USE_BSD ++# define CLOCK_VIRTUAL 1 ++# define CLOCK_PROF 2 ++# endif ++ ++/* Flag to indicate time is absolute. */ ++# define TIMER_ABSTIME 1 ++# endif ++ ++ ++/* Getkerninfo clock information structure */ ++struct clockinfo ++ { ++ int hz; /* clock frequency */ ++ int tick; /* micro-seconds per hz tick */ ++ int spare; ++ int stathz; /* statistics clock frequency */ ++ int profhz; /* profiling clock frequency */ ++ }; ++ ++# endif /* bits/time.h */ ++#endif ++ ++#ifdef __need_timeval ++# undef __need_timeval ++# ifndef _STRUCT_TIMEVAL ++# define _STRUCT_TIMEVAL 1 ++# include ++ ++/* A time value that is accurate to the nearest ++ microsecond but also has a range of years. */ ++struct timeval ++ { ++ __time_t tv_sec; /* Seconds. */ ++ __suseconds_t tv_usec; /* Microseconds. */ ++ }; ++# endif /* struct timeval */ ++#endif /* need timeval */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/dl-machine.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/dl-machine.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/dl-machine.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/dl-machine.h 2006-01-14 23:17:06.000000000 +0100 +@@ -0,0 +1,124 @@ ++/* Machine-dependent ELF dynamic relocation inline functions. ++ FreeBSD i386 specific version of dl_platform_init() ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 FreeBSD we redefine an initialization function. ++ This is called very early in dl_sysdep_start. */ ++ ++#include_next ++ ++#undef DL_PLATFORM_INIT ++#define DL_PLATFORM_INIT dl_platform_kfreebsd_i386_init () ++ ++#ifndef _DL_MACHINE_KFREEBSD ++#define _DL_MACHINE_KFREEBSD ++ ++#define X86_EFLAGS_AC 0x00040000 /* Alignment Check */ ++#define X86_EFLAGS_ID 0x00200000 /* CPUID detection flag */ ++ ++static inline int try_flip_flags(int val) ++{ ++ int ret; ++ __asm__( ++ "pushfl\n\t" ++ "pushfl\n\t" ++ "popl %%ecx\n\t" ++ "xorl %%ecx,%%eax\n\t" ++ "pushl %%eax\n\t" ++ "popfl\n\t" ++ "pushfl\n\t" ++ "popl %%eax\n\t" ++ "xorl %%ecx,%%eax\n\t" ++ "popfl\n\t" ++ : "=a" (ret) ++ : "0" (val) ++ : "cx" ++ ); ++ return ret; ++} ++ ++static inline void cpuid(int op, int *eax, int *edx) ++{ ++ __asm__( ++ "push %%ebx\n\t" ++ "cpuid\n\t" ++ "pop %%ebx\n\t" ++ : "=a" (*eax), ++ "=d" (*edx) ++ : "0" (op) ++ : "cx" ++ ); ++} ++ ++static inline void __attribute__ ((unused)) ++dl_platform_kfreebsd_i386_init (void) ++{ ++ if ((GLRO(dl_platform) == NULL) || (*GLRO(dl_platform) == '\0')) ++ { ++ /* we don't have reasonable AT_PLATFORM from kernel ++ try to use cpuid to get one, also guess AT_HWCAP */ ++ ++ int val, hwcap; ++ ++ val = try_flip_flags(X86_EFLAGS_AC | X86_EFLAGS_ID); ++ ++ if (!(val & X86_EFLAGS_AC)) ++ { ++ /* 386 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[0]; ++ GLRO(dl_hwcap) = 0; ++ } ++ else if (!(val & X86_EFLAGS_ID)) ++ { ++ /* 486 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[1]; ++ GLRO(dl_hwcap) = 0; ++ } ++ else ++ { ++ cpuid(0, &val, &hwcap); ++ if (val == 0) ++ { ++ /* 486 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[1]; ++ GLRO(dl_hwcap) = 0; ++ } ++ else ++ { ++ cpuid(1, &val, &hwcap); ++ GLRO(dl_hwcap) = hwcap; ++ switch (val & 0xf00) ++ { ++ case 0x400: /* 486 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[1]; ++ break; ++ case 0x500: /* 586 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[2]; ++ break; ++ default: /* 686 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[3]; ++ } ++ } ++ } ++ } ++} ++ ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/dl-procinfo.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/dl-procinfo.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/dl-procinfo.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/dl-procinfo.h 2006-01-13 15:56:49.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/get_clockfreq.c sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/get_clockfreq.c +--- null/unix/bsd/bsd4.4/kfreebsd/i386/get_clockfreq.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/get_clockfreq.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/getcontext.S sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/getcontext.S +--- null/unix/bsd/bsd4.4/kfreebsd/i386/getcontext.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/getcontext.S 2006-01-21 00:13:27.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Save current context. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text ++ENTRY(__getcontext) ++ clc ++ movl 0(%esp), %ecx /* save the return PC value */ ++ ++ DO_CALL (getcontext, 1) ++ jb SYSCALL_ERROR_LABEL ++ ++ addl $4, %esp /* remove stale return address */ ++ jmp *%ecx ++ ++L(pseudo_end): ++ ret ++ ++PSEUDO_END(__getcontext) ++ ++weak_alias(__getcontext, getcontext) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/i386_get_ioperm.c sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_get_ioperm.c +--- null/unix/bsd/bsd4.4/kfreebsd/i386/i386_get_ioperm.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_get_ioperm.c 2006-04-11 09:22:30.000000000 +0200 +@@ -0,0 +1,36 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++int ++i386_get_ioperm (unsigned long int from, unsigned long int *num, int *turned_on) ++{ ++ struct i386_ioperm_args args; ++ ++ args.start = from; ++ ++ if (__sysarch (I386_GET_IOPERM, &args) < 0) ++ return -1; ++ ++ *num = args.length; ++ *turned_on = args.enable; ++ ++ return 0; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/i386_get_ldt.c sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_get_ldt.c +--- null/unix/bsd/bsd4.4/kfreebsd/i386/i386_get_ldt.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_get_ldt.c 2006-02-04 17:53:29.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ Contributed by Robert Millan ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++int ++i386_get_ldt (int from, union descriptor *descs, int num) ++{ ++ struct i386_ldt_args args; ++ ++ args.start = from; ++ args.descs = descs; ++ args.num = num; ++ ++ if (__sysarch (I386_GET_LDT, &args) < 0) ++ return -1; ++ ++ return 0; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/i386_set_ioperm.c sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_set_ioperm.c +--- null/unix/bsd/bsd4.4/kfreebsd/i386/i386_set_ioperm.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_set_ioperm.c 2006-04-11 07:46:26.000000000 +0200 +@@ -0,0 +1,34 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++int ++i386_set_ioperm (unsigned long int from, unsigned long int num, int turn_on) ++{ ++ struct i386_ioperm_args args; ++ ++ args.start = from; ++ args.length = num; ++ args.enable = turn_on; ++ ++ return __sysarch (I386_SET_IOPERM, &args); ++} ++ ++strong_alias (i386_set_ioperm, ioperm) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/i386_set_ldt.c sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_set_ldt.c +--- null/unix/bsd/bsd4.4/kfreebsd/i386/i386_set_ldt.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_set_ldt.c 2006-02-04 17:53:29.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ Contributed by Robert Millan ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++int ++i386_set_ldt (int from, union descriptor *descs, int num) ++{ ++ struct i386_ldt_args args; ++ ++ args.start = from; ++ args.descs = descs; ++ args.num = num; ++ ++ if (__sysarch (I386_SET_LDT, &args) < 0) ++ return -1; ++ ++ return 0; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/i386_vm86.c sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_vm86.c +--- null/unix/bsd/bsd4.4/kfreebsd/i386/i386_vm86.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_vm86.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,31 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++int ++i386_vm86 (int cmd, void *arg) ++{ ++ struct i386_vm86_args args; ++ ++ args.sub_op = cmd; ++ args.sub_args = arg; ++ ++ return __sysarch (I386_VM86, &args); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/iopl.c sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/iopl.c +--- null/unix/bsd/bsd4.4/kfreebsd/i386/iopl.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/iopl.c 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,54 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Robert Millan ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 /* open */ ++#include /* close */ ++ ++static int __iopl_fd = -1; ++ ++int ++iopl (int level) ++ { ++ switch (level) ++ { ++ case 3: ++ if (__iopl_fd != -1) ++ return 0; ++ ++ __iopl_fd = open ("/dev/io", O_RDWR); ++ if (__iopl_fd == -1) ++ { ++ if (errno == EACCES) ++ __set_errno (EPERM); ++ return -1; ++ } ++ return 0; ++ ++ case 0: ++ if (__iopl_fd != -1) ++ if (close (__iopl_fd) == -1) ++ return 1; ++ return 0; ++ ++ default: ++ __set_errno (EINVAL); ++ return -1; ++ } ++ } +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/makecontext.S sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/makecontext.S +--- null/unix/bsd/bsd4.4/kfreebsd/i386/makecontext.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/makecontext.S 2006-01-21 00:13:27.000000000 +0100 +@@ -0,0 +1,113 @@ ++/* Create new context. ++ Copyright (C) 2001,02 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 ++ ++ ++ENTRY(__makecontext) ++ movl 4(%esp), %eax ++ ++ /* Load the address of the function we are supposed to run. */ ++ movl 8(%esp), %ecx ++ ++ /* Compute the address of the stack. The information comes from ++ to us_stack element. */ ++ movl oSS_SP(%eax), %edx ++ movl %ecx, oEIP(%eax) ++ addl oSS_SIZE(%eax), %edx ++ ++ /* Put the next context on the new stack (from the uc_link ++ element). */ ++ movl oLINK(%eax), %ecx ++ movl %ecx, -4(%edx) ++ ++ /* Remember the number of parameters for the exit handler since ++ it has to remove them. We store the number in the EBX register ++ which the function we will call must preserve. */ ++ movl 12(%esp), %ecx ++ movl %ecx, oEBX(%eax) ++ ++ /* Make room on the new stack for the parameters. */ ++ negl %ecx ++ leal -8(%edx,%ecx,4), %edx ++ negl %ecx ++ /* Store the future stack pointer. */ ++ movl %edx, oESP(%eax) ++ ++ /* Copy all the parameters. */ ++ jecxz 2f ++1: movl 12(%esp,%ecx,4), %eax ++ movl %eax, (%edx,%ecx,4) ++ decl %ecx ++ jnz 1b ++2: ++ ++ /* If the function we call returns we must continue with the ++ context which is given in the uc_link element. To do this ++ set the return address for the function the user provides ++ to a little bit of helper code which does the magic (see ++ below). */ ++#ifdef PIC ++ call 1f ++1: popl %ecx ++ addl $L(exitcode)-1b, %ecx ++ movl %ecx, (%edx) ++#else ++ movl $L(exitcode), (%edx) ++#endif ++ /* 'makecontext' returns no value. */ ++ ret ++ ++ /* This is the helper code which gets called if a function which ++ is registered with 'makecontext' returns. In this case we ++ have to install the context listed in the uc_link element of ++ the context 'makecontext' manipulated at the time of the ++ 'makecontext' call. If the pointer is NULL the process must ++ terminate. */ ++L(exitcode): ++ /* This removes the parameters passed to the function given to ++ 'makecontext' from the stack. EBX contains the number of ++ parameters (see above). */ ++ leal (%esp,%ebx,4), %esp ++ ++#ifdef PIC ++ call 1f ++1: popl %ebx ++ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx ++#endif ++ popl %eax /* This is the next context. */ ++ testl %eax, %eax ++ je 2f /* If it is zero exit. */ ++ ++ pushl %eax ++ call JUMPTARGET(__setcontext) ++ /* If this returns (which can happen if the syscall fails) we'll ++ exit the program with the return error value (-1). */ ++ ++2: pushl %eax ++ call HIDDEN_JUMPTARGET(exit) ++ /* The 'exit' call should never return. In case it does cause ++ the process to terminate. */ ++ hlt ++END(__makecontext) ++ ++weak_alias(__makecontext, makecontext) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/Makefile sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/Makefile +--- null/unix/bsd/bsd4.4/kfreebsd/i386/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/Makefile 2006-02-04 17:53:29.000000000 +0100 +@@ -0,0 +1,19 @@ ++# Additional header files to be installed in $prefix/include: ++ ++ifeq ($(subdir),misc) ++sysdep_headers += \ ++ sys/io.h \ ++ sys/perm.h \ ++ sys/vm86.h ++endif ++ ++# Additional functions, and particular system calls: ++ ++ifeq ($(subdir),misc) ++# For and . ++sysdep_routines += i386_get_ioperm i386_set_ioperm iopl ++# For . ++sysdep_routines += i386_vm86 ++# For . ++sysdep_routines += i386_get_ldt i386_set_ldt ++endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/rfork.S sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/rfork.S +--- null/unix/bsd/bsd4.4/kfreebsd/i386/rfork.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/rfork.S 2006-05-25 21:43:10.000000000 +0200 +@@ -0,0 +1,43 @@ ++/* Copyright (C) 1991-1992, 1994-1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text; ++ENTRY (__rfork) ++ /* save the return PC value into ECX, ++ preserve stack frame with argument */ ++ movl 0(%esp), %ecx; ++ DO_CALL (rfork, 1) ++ jb SYSCALL_ERROR_LABEL; ++ /* R1 is now 0 for the parent and 1 for the child. Decrement it to ++ make it -1 (all bits set) for the parent, and 0 (no bits set) ++ for the child. Then AND it with R0, so the parent gets ++ R0&-1==R0, and the child gets R0&0==0. */ ++ decl %edx ++ andl %edx, %eax ++ ++ popl %edx ++ jmp *%ecx ++ ++L(pseudo_end): ++ ret ++PSEUDO_END (__rfork) ++ ++weak_alias (__rfork, rfork) ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/sigcontextinfo.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sigcontextinfo.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/sigcontextinfo.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sigcontextinfo.h 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,25 @@ ++/* Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define SIGCONTEXT int _code, struct sigcontext * ++#define SIGCONTEXT_EXTRA_ARGS _code, ++#define GET_PC(ctx) ((void *) (ctx)->sc_eip) ++#define GET_FRAME(ctx) ((void *) (ctx)->sc_ebp) ++#define GET_STACK(ctx) ((void *) (ctx)->sc_esp) ++#define CALL_SIGHANDLER(handler, signo, ctx) \ ++ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/start_thread.S sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/start_thread.S +--- null/unix/bsd/bsd4.4/kfreebsd/i386/start_thread.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/start_thread.S 2006-05-25 21:43:10.000000000 +0200 +@@ -0,0 +1,202 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* __start_thread (flags, stack, func, arg) ++ calls __rfork (flags), and in the child sets the stack pointer and then ++ calls _exit (func (arg)). ++ It cannot be done in portable C. */ ++ ++#include ++#include ++#define SIG_SETMASK 3 ++ ++ .text ++ENTRY (__start_thread) ++ /* There is a window of a few instructions, right after the rfork ++ system call, where the handling of a signal would write garbage ++ into the stack shared by the parent and the child (assuming ++ RFMEM is set in flags). To solve this: 1. We block all signals ++ around the rfork system call and unblock them afterwards in ++ the parent and in the child (but only after changing the stack ++ pointer). 2. The child accesses only values passed in registers ++ and on its own stack. This way, if the parent is scheduled to ++ run first, and handles a signal, it will not affect the child; ++ and if the child runs first, and handles a signal, it will use ++ the child's stack and not affect the parent. ++ We need to pass 7 words of info to the child: stack, func, arg, ++ and the signal mask to restore. Since we have only 4 call-saved ++ registers available (%ebx, %esi, %edi, %ebp), we pass only the ++ stack pointer in a register, and the rest through the child's ++ stack. */ ++ pushl %ebp ++ movl %esp, %ebp ++ subl $36, %esp ++ movl %ebx, 32(%esp) ++ ++ movl 8(%ebp), %eax /* flags */ ++ testl $32, %eax /* flags & RFMEM */ ++ jz L(simple) ++ ++ /* Block all signals. */ ++ movl $-1, %eax ++ movl %eax, 16(%esp) ++ movl %eax, 20(%esp) ++ movl %eax, 24(%esp) ++ movl %eax, 28(%esp) ++ leal 16(%esp), %eax ++ movl $SIG_SETMASK, 4(%esp) ++ movl %eax, 8(%esp) ++ movl %eax, 12(%esp) ++ DO_CALL (sigprocmask, 3) ++ jb L(error) ++ ++ /* Copy all info to the child's stack. */ ++ movl 12(%ebp), %ebx /* stack */ ++ subl $32, %ebx /* room for func, arg, sigset_t */ ++ andl $-16, %ebx /* make it 16-bytes aligned */ ++ movl 16(%ebp), %eax /* func */ ++ movl 20(%ebp), %edx /* arg */ ++ movl %eax, 4(%ebx) ++ movl %edx, (%ebx) ++ movl 16(%esp), %eax /* sigset_t word 0 */ ++ movl 20(%esp), %edx /* sigset_t word 1 */ ++ movl %eax, 16(%ebx) ++ movl %edx, 20(%ebx) ++ movl 24(%esp), %eax /* sigset_t word 2 */ ++ movl 28(%esp), %edx /* sigset_t word 3 */ ++ movl %eax, 24(%ebx) ++ movl %edx, 28(%ebx) ++ ++ /* Perform the rfork system call. */ ++ movl 8(%ebp), %eax /* flags */ ++ movl %eax, 4(%esp) ++ DO_CALL (rfork, 1) ++ jb L(error_unmask) ++ ++ /* %edx is now 0 for the parent and 1 for the child. */ ++ testl %edx, %edx ++ jnz L(child) ++ ++ /* Save the child pid, currently in %eax. */ ++ movl %eax, %ebx ++ ++ /* Restore the previous signal mask. */ ++ leal 16(%esp), %eax ++ movl $SIG_SETMASK, 4(%esp) ++ movl %eax, 8(%esp) ++ movl $0, 12(%esp) ++ DO_CALL (sigprocmask, 3) ++ ++ /* Return the child pid, currently in %ebx. */ ++ movl %ebx, %eax ++ addl $32, %esp ++ popl %ebx ++ popl %ebp ++ ret ++ ++L(child):/* Here we are in the child thread. */ ++ ++ /* Set the stack pointer. */ ++ movl %ebx, %esp ++ /* Terminate the stack frame. */ ++ subl %ebp, %ebp ++ ++ movl 4(%esp), %edi ++ ++ /* Restore the previous signal mask. */ ++ leal 16(%esp), %eax ++ movl $SIG_SETMASK, 4(%esp) ++ movl %eax, 8(%esp) ++ movl $0, 12(%esp) ++ DO_CALL (sigprocmask, 3) ++ ++L(child1): ++ /* Call func (arg). */ ++ call *%edi ++ ++ /* Call _exit. */ ++#ifdef PIC ++ call L(here) ++L(here): ++ popl %ebx ++ addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ebx ++#endif ++ pushl %eax ++ call JUMPTARGET (_exit) ++ ++L(simple):/* Simple case without signal mask handling. */ ++ ++ /* Copy all info to the child's stack. */ ++ movl 12(%ebp), %ebx /* stack */ ++ subl $8, %ebx /* room for func, arg */ ++ andl $-16, %ebx /* make it 16-bytes aligned */ ++ movl 16(%ebp), %eax /* func */ ++ movl 20(%ebp), %edx /* arg */ ++ movl %eax, 4(%ebx) ++ movl %edx, (%ebx) ++ ++ /* Perform the rfork system call. */ ++ movl 8(%ebp), %eax /* flags */ ++ movl %eax, 4(%esp) ++ DO_CALL (rfork, 1) ++ jb L(error) ++ ++ /* %edx is now 0 for the parent and 1 for the child. */ ++ testl %edx, %edx ++ jnz L(simple_child) ++ ++ /* Return the child pid, currently in %eax. */ ++ addl $32, %esp ++ popl %ebx ++ popl %ebp ++L(pseudo_end): ++ ret ++ ++L(simple_child):/* Here we are in the child thread. */ ++ ++ /* Set the stack pointer. */ ++ movl %ebx, %esp ++ /* Terminate the stack frame. */ ++ subl %ebp, %ebp ++ ++ movl 4(%esp), %edi ++ ++ jmp L(child1) ++ ++L(error_unmask): ++ ++ /* Save the error code, currently in %eax. */ ++ movl %eax, %ebx ++ ++ /* Restore the previous signal mask. */ ++ leal 16(%esp), %eax ++ movl $SIG_SETMASK, 4(%esp) ++ movl %eax, 8(%esp) ++ movl $0, 12(%esp) ++ DO_CALL (sigprocmask, 3) ++ ++ /* load saved error code */ ++ movl %ebx, %eax ++ ++L(error): ++ addl $32, %esp ++ popl %ebx ++ popl %ebp ++ jmp SYSCALL_ERROR_LABEL ++PSEUDO_END (__start_thread) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/swapcontext.S sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/swapcontext.S +--- null/unix/bsd/bsd4.4/kfreebsd/i386/swapcontext.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/swapcontext.S 2006-01-21 00:13:27.000000000 +0100 +@@ -0,0 +1,32 @@ ++/* swap current context. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text ++ENTRY(__swapcontext) ++ clc ++ DO_CALL (swapcontext, 2) ++ jb SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++ ++PSEUDO_END(__swapcontext) ++ ++weak_alias(__swapcontext, swapcontext) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/sys/io.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys/io.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/sys/io.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys/io.h 2006-04-10 23:30:44.000000000 +0200 +@@ -0,0 +1,180 @@ ++/* Copyright (C) 1996, 2000, 2002, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_IO_H ++#define _SYS_IO_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++/* If TURN_ON is TRUE, request for permission to do direct i/o on the ++ port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O ++ permission off for that range. This call requires root privileges. ++ ++ Portability note: not all kFreeBSD platforms support this call. Most ++ platforms based on the PC I/O architecture probably will, however. */ ++extern int ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to ++ access any I/O port is granted. This call requires root ++ privileges. */ ++extern int iopl (int __level) __THROW; ++ ++#if defined __GNUC__ && __GNUC__ >= 2 ++ ++static __inline unsigned char ++inb (unsigned short int port) ++{ ++ unsigned char _v; ++ ++ __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned char ++inb_p (unsigned short int port) ++{ ++ unsigned char _v; ++ ++ __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned short int ++inw (unsigned short int port) ++{ ++ unsigned short _v; ++ ++ __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned short int ++inw_p (unsigned short int port) ++{ ++ unsigned short int _v; ++ ++ __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned int ++inl (unsigned short int port) ++{ ++ unsigned int _v; ++ ++ __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned int ++inl_p (unsigned short int port) ++{ ++ unsigned int _v; ++ __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline void ++outb (unsigned char value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outb %b0,%w1": :"a" (value), "Nd" (port)); ++} ++ ++static __inline void ++outb_p (unsigned char value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++outw (unsigned short int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outw %w0,%w1": :"a" (value), "Nd" (port)); ++ ++} ++ ++static __inline void ++outw_p (unsigned short int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++outl (unsigned int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outl %0,%w1": :"a" (value), "Nd" (port)); ++} ++ ++static __inline void ++outl_p (unsigned int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++insb (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insb":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++insw (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insw":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++insl (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insl":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsb (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsw (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsl (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++#endif /* GNU C */ ++ ++__END_DECLS ++#endif /* _SYS_IO_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/sys/perm.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys/perm.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/sys/perm.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys/perm.h 2006-04-11 09:21:14.000000000 +0200 +@@ -0,0 +1,43 @@ ++/* Copyright (C) 1996, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_PERM_H ++#define _SYS_PERM_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++/* Set port input/output permissions. */ ++extern int ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++ ++/* Change I/O privilege level. */ ++extern int iopl (int __level) __THROW; ++ ++extern int i386_set_ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++/* Retrieve a contiguous range of port input/output permissions. */ ++extern int i386_get_ioperm (unsigned long int __from, unsigned long int *__num, ++ int *__turned_on) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_PERM_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/sys/vm86.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys/vm86.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/sys/vm86.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys/vm86.h 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,53 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_VM86_H ++#define _SYS_VM86_H 1 ++ ++#include ++ ++/* Possible values for the 'cmd' argument to i386_vm86. */ ++enum ++ { ++ VM86_INIT = 1, ++#define VM86_INIT VM86_INIT ++ VM86_GET_VME = 3 ++#define VM86_GET_VME VM86_GET_VME ++ }; ++ ++/* Argument structure for VM86_INIT. */ ++struct vm86_init_args ++ { ++ int debug; ++ int cpu_type; ++ unsigned char int_map[32]; ++ }; ++ ++/* Argument structure for VM86_GET_VME. */ ++struct vm86_vme_args ++ { ++ int state; ++ }; ++ ++__BEGIN_DECLS ++ ++extern int i386_vm86 (int __cmd, void *__arg); ++ ++__END_DECLS ++ ++#endif /* _SYS_VM86_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/sysarch.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysarch.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/sysarch.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysarch.h 2006-01-03 22:12:22.000000000 +0100 +@@ -0,0 +1,81 @@ ++/* Parameters for the architecture specific system call. i386 version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYSARCH_H ++#define _SYSARCH_H 1 ++ ++#include ++ ++/* Function that can be used as first argument to 'sysarch'. */ ++enum ++ { ++ I386_GET_LDT = 0, ++#define I386_GET_LDT I386_GET_LDT ++ I386_SET_LDT = 1, ++#define I386_SET_LDT I386_SET_LDT ++ I386_GET_IOPERM = 3, ++#define I386_GET_IOPERM I386_GET_IOPERM ++ I386_SET_IOPERM = 4, ++#define I386_SET_IOPERM I386_SET_IOPERM ++ I386_VM86 = 6, ++#define I386_VM86 I386_VM86 ++ I386_GET_FSBASE = 7, ++#define I386_GET_FSBASE I386_GET_FSBASE ++ I386_SET_FSBASE = 8, ++#define I386_SET_FSBASE I386_SET_FSBASE ++ I386_GET_GSBASE = 9, ++#define I386_GET_GSBASE I386_GET_GSBASE ++ I386_SET_GSBASE = 10 ++#define I386_SET_GSBASE I386_SET_GSBASE ++ }; ++ ++/* Argument struct for I386_GET_LDT and I386_SET_LDT. */ ++struct i386_ldt_args ++ { ++ int start; ++ union descriptor *descs; ++ int num; ++ }; ++ ++/* Argument struct for I386_GET_IOPERM and I386_SET_IOPERM. */ ++struct i386_ioperm_args ++ { ++ unsigned int start; ++ unsigned int length; ++ int enable; ++ }; ++ ++/* Argument struct for I386_VM86. */ ++struct i386_vm86_args ++ { ++ int sub_op; ++ void *sub_args; ++ }; ++ ++__BEGIN_DECLS ++ ++extern int sysarch (int __cmd, void *__arg); ++ ++#ifdef _LIBC ++extern int __sysarch (int __cmd, void *__arg); ++#endif ++ ++__END_DECLS ++ ++#endif /* _SYSARCH_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/syscall.S sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/syscall.S +--- null/unix/bsd/bsd4.4/kfreebsd/i386/syscall.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/syscall.S 2006-05-25 21:43:10.000000000 +0200 +@@ -0,0 +1,31 @@ ++/* Copyright (C) 1993, 1995-1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++ .text; ++ENTRY (syscall) ++ popl %ecx /* Pop return address into %ecx. */ ++ movl 0(%esp), %eax /* Load syscall number into %eax. */ ++ int $0x80 /* Do the system call. */ ++ pushl %ecx /* Push back return address. */ ++ jb SYSCALL_ERROR_LABEL; /* Jump to error handler if error. */ ++ ++L(pseudo_end): ++ ret /* Return to caller. */ ++PSEUDO_END (syscall) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.h 2006-05-25 21:43:10.000000000 +0200 +@@ -0,0 +1,222 @@ ++/* Copyright (C) 1992,1993,1995-2000,2002,2003,2004 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper, , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FREEBSD_I386_SYSDEP_H ++#define _FREEBSD_I386_SYSDEP_H 1 ++ ++/* There is some commonality. */ ++#include ++#include ++#include ++/* Defines RTLD_PRIVATE_ERRNO and USE_DL_SYSINFO. */ ++#include ++#include ++ ++#ifdef __ASSEMBLER__ ++ ++/* We don't want the label for the error handle to be global when we define ++ it here. */ ++#ifdef PIC ++# define SYSCALL_ERROR_LABEL 0f ++#else ++# define SYSCALL_ERROR_LABEL syscall_error ++#endif ++ ++#undef PSEUDO ++#define PSEUDO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args); \ ++ jb SYSCALL_ERROR_LABEL; \ ++ L(pseudo_end): ++ ++#undef PSEUDO_END ++#define PSEUDO_END(name) \ ++ SYSCALL_ERROR_HANDLER \ ++ END (name) ++ ++#undef PSEUDO_NOERRNO ++#define PSEUDO_NOERRNO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args) ++ ++#undef PSEUDO_END_NOERRNO ++#define PSEUDO_END_NOERRNO(name) \ ++ END (name) ++ ++#define ret_NOERRNO ret ++ ++/* The function has to return the error code. */ ++#undef PSEUDO_ERRVAL ++#define PSEUDO_ERRVAL(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args); \ ++ ++#undef PSEUDO_END_ERRVAL ++#define PSEUDO_END_ERRVAL(name) \ ++ END (name) ++ ++#define ret_ERRVAL ret ++ ++#ifndef PIC ++# define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */ ++#else ++ ++# ifndef HAVE_HIDDEN ++# define SETUP_PIC_REG(reg) \ ++ call 1f; \ ++ .subsection 1; \ ++1:movl (%esp), %e##reg; \ ++ ret; \ ++ .previous ++# else ++# define SETUP_PIC_REG(reg) \ ++ .section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax",@progbits; \ ++ .globl __i686.get_pc_thunk.reg; \ ++ .hidden __i686.get_pc_thunk.reg; \ ++ .type __i686.get_pc_thunk.reg,@function; \ ++__i686.get_pc_thunk.reg: \ ++ movl (%esp), %e##reg; \ ++ ret; \ ++ .size __i686.get_pc_thunk.reg, . - __i686.get_pc_thunk.reg; \ ++ .previous; \ ++ call __i686.get_pc_thunk.reg ++# endif ++ ++# if RTLD_PRIVATE_ERRNO ++# define SYSCALL_ERROR_HANDLER \ ++0:SETUP_PIC_REG(cx); \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ ++ movl %eax, rtld_errno@GOTOFF(%ecx); \ ++ orl $-1, %eax; \ ++ jmp L(pseudo_end); ++ ++# elif defined _LIBC_REENTRANT ++ ++# if USE___THREAD ++# ifndef NOT_IN_libc ++# define SYSCALL_ERROR_ERRNO __libc_errno ++# else ++# define SYSCALL_ERROR_ERRNO errno ++# endif ++# define SYSCALL_ERROR_HANDLER \ ++0:SETUP_PIC_REG (cx); \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ ++ movl SYSCALL_ERROR_ERRNO@GOTNTPOFF(%ecx), %ecx; \ ++ SYSCALL_ERROR_HANDLER_TLS_STORE (%eax, %ecx); \ ++ orl $-1, %eax; \ ++ jmp L(pseudo_end); ++# ifndef NO_TLS_DIRECT_SEG_REFS ++# define SYSCALL_ERROR_HANDLER_TLS_STORE(src, destoff) \ ++ movl src, %gs:(destoff) ++# else ++# define SYSCALL_ERROR_HANDLER_TLS_STORE(src, destoff) \ ++ addl %gs:0, destoff; \ ++ movl src, (destoff) ++# endif ++# else ++# define SYSCALL_ERROR_HANDLER \ ++0:pushl %ebx; \ ++ SETUP_PIC_REG (bx); \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ ++ pushl %eax; \ ++ PUSH_ERRNO_LOCATION_RETURN; \ ++ call BP_SYM (__errno_location)@PLT; \ ++ POP_ERRNO_LOCATION_RETURN; \ ++ popl %ecx; \ ++ popl %ebx; \ ++ movl %ecx, (%eax); \ ++ orl $-1, %eax; \ ++ jmp L(pseudo_end); ++/* A quick note: it is assumed that the call to `__errno_location' does ++ not modify the stack! */ ++# endif ++# else ++/* Store (%eax) into errno through the GOT. */ ++# define SYSCALL_ERROR_HANDLER \ ++0:SETUP_PIC_REG(cx); \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ ++ movl errno@GOT(%ecx), %ecx; \ ++ movl %eax, (%ecx); \ ++ orl $-1, %eax; \ ++ jmp L(pseudo_end); ++# endif /* _LIBC_REENTRANT */ ++#endif /* PIC */ ++ ++/* ++ FreeBSD expects the system call arguments on the stack, ++ syscall number is in %eax. ++ return value is in %eax + %edx ++ error is signaled via cflags. ++ all other data registers are preserved ++ ++ syscall number %eax call-clobbered ++ ++ The stack layout upon entering the function is: ++ ++ 20(%esp) Arg# 5 ++ 16(%esp) Arg# 4 ++ 12(%esp) Arg# 3 ++ 8(%esp) Arg# 2 ++ 4(%esp) Arg# 1 ++ (%esp) Return address ++ ++ (Of course a function with say 3 arguments does not have entries for ++ arguments 4 and 5.) ++ ++*/ ++ ++#undef DO_CALL ++#define DO_CALL(syscall_name, args) \ ++ movl $SYS_ify (syscall_name), %eax; \ ++ int $0x80 \ ++ ++#else /* !__ASSEMBLER__ */ ++ ++#include ++ ++/* Consistency check for position-independent code. */ ++#ifdef __PIC__ ++# define check_consistency() \ ++ ({ int __res; \ ++ __asm__ __volatile__ \ ++ ("call __i686.get_pc_thunk.cx;" \ ++ "addl $_GLOBAL_OFFSET_TABLE_, %%ecx;" \ ++ "subl %%ebx, %%ecx;" \ ++ "je 1f;" \ ++ "ud2;" \ ++ "1:\n" \ ++ ".section .gnu.linkonce.t.__i686.get_pc_thunk.cx,\"ax\",@progbits;" \ ++ ".globl __i686.get_pc_thunk.cx;" \ ++ ".hidden __i686.get_pc_thunk.cx;" \ ++ ".type __i686.get_pc_thunk.cx,@function;" \ ++ "__i686.get_pc_thunk.cx:" \ ++ "movl (%%esp), %%ecx;" \ ++ "ret;" \ ++ ".previous" \ ++ : "=c" (__res)); \ ++ __res; }) ++#endif ++ ++#endif /* __ASSEMBLER__ */ ++ ++#endif /* _FREEBSD_I386_SYSDEP_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.S sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.S +--- null/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.S 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 1995-1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* The following code is only used in the shared library when we ++ compile the reentrant version. Otherwise each system call defines ++ its own version. */ ++ ++#ifndef PIC ++ ++/* The syscall stubs jump here when they detect an error. ++ The code for FreeBSD is identical to the canonical Unix/i386 code. */ ++ ++#undef CALL_MCOUNT ++#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %eax. */ ++ ++ .text ++ENTRY (__syscall_error) ++#define __syscall_error __syscall_error_1 ++#include ++ ++#endif /* !PIC */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/sys_fork.S sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys_fork.S +--- null/unix/bsd/bsd4.4/kfreebsd/i386/sys_fork.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys_fork.S 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,33 @@ ++/* Copyright (C) 1991-1992, 1994-1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text; ++ENTRY (__syscall_fork) ++ DO_CALL (fork, 0) ++ jb SYSCALL_ERROR_LABEL; ++ /* R1 is now 0 for the parent and 1 for the child. Decrement it to ++ make it -1 (all bits set) for the parent, and 0 (no bits set) ++ for the child. Then AND it with R0, so the parent gets ++ R0&-1==R0, and the child gets R0&0==0. */ ++ decl r1 ++ andl r1, r0 ++L(pseudo_end): ++ ret ++PSEUDO_END (__syscall_fork) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/sys_lseek.S sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys_lseek.S +--- null/unix/bsd/bsd4.4/kfreebsd/i386/sys_lseek.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys_lseek.S 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,31 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* lseek returns a 64-bit result in %eax, %edx. This means that in the ++ error case we have to set both %eax and %edx to -1. */ ++ ++PSEUDO_NOERRNO(__syscall_lseek, lseek, 4) ++ jnb L(no_error) ++ call SYSCALL_ERROR_LABEL; ++ orl $-1, %edx; ++L(pseudo_end): ++L(no_error): ++ ret ++PSEUDO_END(__syscall_lseek) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/ucontext_i.h sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/ucontext_i.h +--- null/unix/bsd/bsd4.4/kfreebsd/i386/ucontext_i.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/ucontext_i.h 2006-01-21 00:13:27.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Offsets and other constants needed in the *context() function ++ implementation. ++ Copyright (C) 2001 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Offsets of the fields in the ucontext_t structure. */ ++#define oSIGMASK 0 ++#define oGS 20 ++#define oFS 24 ++#define oEDI 36 ++#define oESI 40 ++#define oEBP 44 ++#define oEBX 52 ++#define oEDX 56 ++#define oECX 60 ++#define oEAX 64 ++ ++#define oEIP 76 ++#define oESP 88 ++ ++#define oLINK 656 ++#define oSS_SP 660 ++#define oSS_SIZE 664 +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/Versions sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/Versions +--- null/unix/bsd/bsd4.4/kfreebsd/i386/Versions 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/Versions 2006-02-04 17:53:29.000000000 +0100 +@@ -0,0 +1,7 @@ ++libc { ++ GLIBC_2.2.6 { ++ i386_get_ioperm; i386_set_ioperm; i386_vm86; ++ ioperm; iopl; ++ i386_get_ldt; i386_set_ldt; ++ } ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/i386/vfork.S sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/vfork.S +--- null/unix/bsd/bsd4.4/kfreebsd/i386/vfork.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/vfork.S 2006-05-25 21:43:10.000000000 +0200 +@@ -0,0 +1,56 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++ ++ /* Pop the return PC value into ECX. */ ++ popl %ecx ++ ++ /* Perform the system call. */ ++ DO_CALL (vfork, 0) ++ jb L(error) /* Branch forward if it failed. */ ++ ++ /* In the parent process, %edx == 0, %eax == child pid. */ ++ /* In the child process, %edx == 1, %eax == parent pid. */ ++ ++ /* Change %eax to be 0 in the child process. */ ++ decl %edx ++ andl %edx, %eax ++ ++ /* Jump to the return PC. */ ++ jmp *%ecx ++ ++L(error): ++ /* Push back the return PC. */ ++ pushl %ecx ++ ++ /* Branch to the error handler, hidden in PSEUDO_END. */ ++ jmp SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++PSEUDO_END (__vfork) ++libc_hidden_def (__vfork) ++ ++weak_alias (__vfork, vfork) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/ifaddrs.c sysdeps/unix/bsd/bsd4.4/kfreebsd/ifaddrs.c +--- null/unix/bsd/bsd4.4/kfreebsd/ifaddrs.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/ifaddrs.c 2006-02-08 16:21:06.000000000 +0100 +@@ -0,0 +1,171 @@ ++/* getifaddrs -- get names and addresses of all network interfaces ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++/* Create a linked list of `struct ifaddrs' structures, one for each ++ network interface on the host machine. If successful, store the ++ list in *IFAP and return 0. On errors, return -1 and set `errno'. */ ++int ++getifaddrs (struct ifaddrs **ifap) ++{ ++ /* This implementation handles only IPv4 interfaces. ++ The various ioctls below will only work on an AF_INET socket. ++ Some different mechanism entirely must be used for IPv6. */ ++ int fd = __socket (AF_INET, SOCK_DGRAM, 0); ++ struct ifreq *ifreqs; ++ int nifs; ++ ++ if (fd < 0) ++ return -1; ++ ++ __ifreq (&ifreqs, &nifs, fd); ++ if (ifreqs == NULL) /* XXX doesn't distinguish error vs none */ ++ { ++ __close (fd); ++ return -1; ++ } ++ ++ /* Now we have the list of interfaces and each one's address. ++ Put it into the expected format and fill in the remaining details. */ ++ if (nifs == 0) ++ *ifap = NULL; ++ else ++ { ++ struct ++ { ++ struct ifaddrs ia; ++ struct sockaddr addr, netmask, broadaddr; ++ char name[IF_NAMESIZE]; ++ } *storage; ++ struct ifreq *ifr; ++ int i, j; ++ ++ storage = malloc (nifs * sizeof storage[0]); ++ if (storage == NULL) ++ { ++ __close (fd); ++ __if_freereq (ifreqs, nifs); ++ return -1; ++ } ++ ++ i = 0; ++ j = 0; ++ ifr = ifreqs; ++ do ++ { ++ struct ifreq *next_ifr = __if_nextreq (ifr); ++ ++ /* Fill in all pointers to the storage we've already allocated. */ ++ storage[i].ia.ifa_next = &storage[i + 1].ia; ++ storage[i].ia.ifa_addr = &storage[i].addr; ++ storage[i].ia.ifa_netmask = &storage[i].netmask; ++ storage[i].ia.ifa_broadaddr = &storage[i].broadaddr; /* & dstaddr */ ++ ++ /* Now copy the information we already have from SIOCGIFCONF. */ ++ storage[i].ia.ifa_name = strncpy (storage[i].name, ifr->ifr_name, ++ sizeof storage[i].name); ++ storage[i].addr = ifr->ifr_addr; ++ ++ /* The SIOCGIFCONF call filled in only the name and address. ++ Now we must also ask for the other information we need. */ ++ ++ if (__ioctl (fd, SIOCGIFFLAGS, ifr) < 0) ++ break; ++ ++ /* Ignore interfaces that are down. */ ++ if (ifr->ifr_flags & IFF_UP) ++ { ++ storage[i].ia.ifa_flags = ifr->ifr_flags; ++ ++ /* Retrieve the value for storage[i].ia.ifa_netmask. */ ++ ifr->ifr_addr = storage[i].addr; ++ if (__ioctl (fd, SIOCGIFNETMASK, ifr) < 0) ++ break; ++ storage[i].netmask = ifr->ifr_netmask; ++ ++ /* Retrieve the value for storage[i].ia.ifa_broadaddr. */ ++ if (ifr->ifr_flags & IFF_BROADCAST) ++ { ++ ifr->ifr_addr = storage[i].addr; ++ if (__ioctl (fd, SIOCGIFBRDADDR, ifr) < 0) ++ break; ++ storage[i].broadaddr = ifr->ifr_broadaddr; ++ } ++ else if (ifr->ifr_flags & IFF_POINTOPOINT) ++ { ++ ifr->ifr_addr = storage[i].addr; ++ if (__ioctl (fd, SIOCGIFDSTADDR, ifr) < 0) ++ break; ++ storage[i].broadaddr = ifr->ifr_dstaddr; ++ } ++ else ++ /* Just 'cause. */ ++ memset (&storage[i].broadaddr, 0, sizeof storage[i].broadaddr); ++ ++ storage[i].ia.ifa_data = NULL; /* Nothing here for now. */ ++ ++ ++i; ++ } ++ ++ ++j; ++ ifr = next_ifr; ++ } while (j < nifs); ++ if (j < nifs) /* Broke out early on error. */ ++ { ++ __close (fd); ++ free (storage); ++ __if_freereq (ifreqs, nifs); ++ return -1; ++ } ++ ++ if (i == 0) ++ *ifap = NULL; ++ else ++ { ++ storage[i - 1].ia.ifa_next = NULL; ++ *ifap = &storage[0].ia; ++ } ++ ++ __close (fd); ++ __if_freereq (ifreqs, nifs); ++ } ++ ++ return 0; ++} ++#ifndef getifaddrs ++libc_hidden_def (getifaddrs) ++#endif ++ ++void ++freeifaddrs (struct ifaddrs *ifa) ++{ ++ free (ifa); ++} ++libc_hidden_def (freeifaddrs) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/if_index.c sysdeps/unix/bsd/bsd4.4/kfreebsd/if_index.c +--- null/unix/bsd/bsd4.4/kfreebsd/if_index.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/if_index.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,303 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++typedef int (*if_fn) (void *private, unsigned int index, const char *name); ++ ++/* Iterate through all present interfaces. ++ Call FN once for every interface, returning immediately if FN returns ++ a nonzero value. */ ++static void ++if_iterate (if_fn fn, void *private) ++{ ++ int request[6] = { CTL_NET, PF_ROUTE, 0, 0, NET_RT_IFLIST, 0 }; ++ char *buf; ++ size_t bufsize = 512; ++ char *bufend; ++ char *p; ++ ++ /* Call the kernel function sysctl_iflist() in /usr/src/sys/net/rtsock.c. */ ++ for (;;) ++ { ++ buf = alloca (bufsize); ++ if (__sysctl (request, 6, buf, &bufsize, NULL, 0) >= 0) ++ break; ++ if (errno != ENOMEM) ++ return; ++ bufsize *= 2; ++ } ++ ++ bufend = buf + bufsize; ++ for (p = buf; p < bufend; ) ++ { ++ struct if_msghdr *msg = (struct if_msghdr *) p; ++ ++ if (msg->ifm_version != RTM_VERSION) ++ abort (); ++ ++ switch (msg->ifm_type) ++ { ++ case RTM_IFINFO: ++ if (msg->ifm_flags & IFF_UP) ++ { ++ unsigned int index; ++ struct sockaddr_dl *sdl; ++ char namebuf[IFNAMSIZ + 1]; ++ size_t namelen; ++ ++ index = msg->ifm_index; ++ if (index == 0) ++ abort (); ++ ++ sdl = (struct sockaddr_dl *) (msg + 1); ++ namelen = sdl->sdl_nlen; ++ /* Avoid overflowing namebuf[]. */ ++ if (namelen > IFNAMSIZ) ++ namelen = IFNAMSIZ; ++ memcpy (namebuf, sdl->sdl_data, namelen); ++ namebuf[namelen] = '\0'; ++ ++ /* Call FN now. */ ++ if (fn (private, index, namebuf)) ++ return; ++ } ++ break; ++ ++ case RTM_NEWADDR: ++ break; ++ ++ default: ++ abort (); ++ } ++ ++ p += msg->ifm_msglen; ++ } ++} ++ ++/* ------------------------------------------------------------------------- */ ++ ++struct nametoindex_locals ++ { ++ const char *name; ++ unsigned int index; ++ }; ++ ++static int ++nametoindex_aux (void *private, unsigned int index, const char *name) ++{ ++ struct nametoindex_locals *l = (struct nametoindex_locals *) private; ++ if (strcmp (name, l->name) == 0) ++ { ++ l->index = index; ++ return 1; ++ } ++ return 0; ++} ++ ++/* Return the index of an interface given by name. */ ++unsigned int ++if_nametoindex (const char *ifname) ++{ ++ struct nametoindex_locals l; ++ ++ l.name = ifname; ++ l.index = 0; ++ if_iterate (nametoindex_aux, &l); ++ ++ return l.index; ++} ++libc_hidden_def (if_nametoindex) ++ ++/* ------------------------------------------------------------------------- */ ++ ++struct indextoname_locals ++ { ++ unsigned int index; ++ char *name; ++ char *retval; ++ }; ++ ++static int ++indextoname_aux (void *private, unsigned int index, const char *name) ++{ ++ struct indextoname_locals *l = (struct indextoname_locals *) private; ++ if (index == l->index) ++ { ++ strncpy (l->name, name, IF_NAMESIZE); ++ l->retval = l->name; ++ return 1; ++ } ++ __set_errno (ENXIO); ++ return 0; ++} ++ ++/* Return the name of an interface given by name. */ ++char * ++if_indextoname (unsigned int ifindex, char *ifname) ++{ ++ struct indextoname_locals l; ++ ++ l.index = ifindex; ++ l.name = ifname; ++ l.retval = NULL; ++ if_iterate (indextoname_aux, &l); ++ return l.retval; ++} ++libc_hidden_def (if_indextoname) ++ ++/* ------------------------------------------------------------------------- */ ++ ++struct nameindex_locals ++ { ++ /* Resizable array of 'struct if_nameindex'. */ ++ struct if_nameindex *s_array; ++ size_t s_len; ++ size_t s_allocated; ++ /* Resizable array of char. */ ++ char *c_array; ++ size_t c_len; ++ size_t c_allocated; ++ /* Out-of-memory indicator. */ ++ int oom; ++ }; ++ ++static void ++add_s (struct nameindex_locals *l, unsigned int index, char *name) ++{ ++ if (l->s_len == l->s_allocated) ++ { ++ size_t new_allocated = 2 * l->s_allocated + 1; ++ struct if_nameindex *new_array = ++ (struct if_nameindex *) ++ realloc (l->s_array, new_allocated * sizeof (struct if_nameindex)); ++ if (new_array == NULL) ++ { ++ l->oom = 1; ++ return; ++ } ++ l->s_array = new_array; ++ l->s_allocated = new_allocated; ++ } ++ /* Now l->s_len < l->s_allocated. */ ++ l->s_array[l->s_len].if_index = index; ++ l->s_array[l->s_len].if_name = name; ++ l->s_len++; ++} ++ ++static __inline size_t ++add_c (struct nameindex_locals *l, const char *name) ++{ ++ size_t n = strlen (name) + 1; ++ size_t result_offset; ++ if (l->c_len + n > l->c_allocated) ++ { ++ size_t new_allocated = ++ (l->c_len + n < 2 * l->c_allocated + 1 ++ ? l->c_len + n ++ : 2 * l->c_allocated + 1); ++ char *new_array = (char *) realloc (l->c_array, new_allocated); ++ if (new_array == NULL) ++ { ++ l->oom = 1; ++ return 0; ++ } ++ l->c_array = new_array; ++ l->c_allocated = new_allocated; ++ } ++ /* Now l->c_len + n <= l->c_allocated. */ ++ result_offset = l->c_len; ++ memcpy (l->c_array + l->c_len, name, n); ++ l->c_len += n; ++ return result_offset; ++} ++ ++static int ++nameindex_aux (void *private, unsigned int index, const char *name) ++{ ++ struct nameindex_locals *l = (struct nameindex_locals *) private; ++ ++ size_t name_offset = add_c (l, name); ++ if (!l->oom) ++ { ++ add_s (l, index, (char *) NULL + name_offset); ++ if (!l->oom) ++ return 0; ++ } ++ return 1; ++} ++ ++/* Return an array of 'struct if_nameindex', one for each present ++ interface. */ ++struct if_nameindex * ++if_nameindex (void) ++{ ++ struct nameindex_locals l; ++ ++ l.s_array = NULL; l.s_len = 0; l.s_allocated = 0; ++ l.c_array = NULL; l.c_len = 0; l.c_allocated = 0; ++ l.oom = 0; ++ if_iterate (nameindex_aux, &l); ++ if (!l.oom) ++ { ++ /* Convert all offsets to real pointers. */ ++ struct if_nameindex *p; ++ struct if_nameindex *p_end; ++ ++ for (p = l.s_array, p_end = p + l.s_len; p < p_end; p++) ++ p->if_name = l.c_array + (p->if_name - (char *) NULL); ++ ++ /* Add a terminating entry. */ ++ add_s (&l, 0, NULL); ++ } ++ if (l.oom) ++ { ++ free (l.s_array); ++ free (l.c_array); ++ __set_errno (ENOMEM); ++ return NULL; ++ } ++ return l.s_array; ++} ++libc_hidden_def (if_nameindex) ++ ++/* ------------------------------------------------------------------------- */ ++ ++/* Free an array returned by if_nameindex(). */ ++void ++if_freenameindex (struct if_nameindex *ifn) ++{ ++ if (ifn != NULL) ++ { ++ /* Free c_array. */ ++ free (ifn[0].if_name); ++ /* Free s_array. */ ++ free (ifn); ++ } ++} ++libc_hidden_def (if_freenameindex) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/ifreq.c sysdeps/unix/bsd/bsd4.4/kfreebsd/ifreq.c +--- null/unix/bsd/bsd4.4/kfreebsd/ifreq.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/ifreq.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,93 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++/* The FreeBSD ioctl SIOCGIFCONF returns the list if interfaces as a ++ concatenation of records of different size, each having at least ++ sizeof (struct ifreq) bytes. */ ++ ++ ++void ++__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd) ++{ ++ int fd = sockfd; ++ struct ifconf ifc; ++ int rq_len; ++ int nifs; ++ char *ifstart; ++ char *ifend; ++ struct ifreq *ifr; ++ /* FreeBSD has many interfaces, many of them are usually down. */ ++# define RQ_IFS 16 ++ /* We have to assume all records are of limited size, so that we know ++ when we can stop enlarging the buffer. */ ++# define RQ_MAXSIZE 256 ++ ++ if (fd < 0) ++ fd = __opensock (); ++ if (fd < 0) ++ { ++ *num_ifs = 0; ++ *ifreqs = NULL; ++ return; ++ } ++ ++ ifc.ifc_buf = NULL; ++ rq_len = RQ_IFS * sizeof (struct ifreq) + RQ_MAXSIZE; ++ for (;;) ++ { ++ ifc.ifc_len = rq_len; ++ ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len); ++ if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0) ++ { ++ if (ifc.ifc_buf) ++ free (ifc.ifc_buf); ++ ++ if (fd != sockfd) ++ __close (fd); ++ *num_ifs = 0; ++ *ifreqs = NULL; ++ return; ++ } ++ if (ifc.ifc_len + RQ_MAXSIZE <= rq_len) ++ break; ++ rq_len *= 2; ++ } ++ ++ nifs = 0; ++ ifstart = (char *) ifc.ifc_buf; ++ ifend = ifstart + ifc.ifc_len; ++ for (ifr = (struct ifreq *) ifstart; ++ (char *) ifr < ifend; ++ ifr = __if_nextreq (ifr)) ++ nifs++; ++ ++ if (fd != sockfd) ++ __close (fd); ++ ++ *num_ifs = nifs; ++ *ifreqs = realloc (ifc.ifc_buf, ifc.ifc_len); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/Implies sysdeps/unix/bsd/bsd4.4/kfreebsd/Implies +--- null/unix/bsd/bsd4.4/kfreebsd/Implies 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/Implies 2006-01-03 23:41:01.000000000 +0100 +@@ -0,0 +1,11 @@ ++# The kernel include files come from the 'kernel-include' add-on. ++# This is actually added by configure.in. ++#/usr/src/sys/ ++ ++# One of two possible utmp file formats. ++# This is actually added by configure.in. ++#unix/bsd/bsd4.4/kfreebsd/utmp-xyz ++ ++# The gnu subdirectory exists for things common to Linux-based, Hurd-based ++# and kFreeBSD-based GNU systems. ++gnu +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/init-first.c sysdeps/unix/bsd/bsd4.4/kfreebsd/init-first.c +--- null/unix/bsd/bsd4.4/kfreebsd/init-first.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/init-first.c 2006-01-13 15:56:49.000000000 +0100 +@@ -0,0 +1,128 @@ ++/* Initialization code run first thing by the ELF startup code. Linux version. ++ Copyright (C) 1995-1999,2000,01,02,03,2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++/* The function is called from assembly stubs the compiler can't see. */ ++static void init (int, char **, char **) __attribute__ ((used)); ++ ++/* Set nonzero if we have to be prepared for more then one libc being ++ used in the process. Safe assumption if initializer never runs. */ ++int __libc_multiple_libcs attribute_hidden = 1; ++ ++/* Remember the command line argument and enviroment contents for ++ later calls of initializers for dynamic libraries. */ ++int __libc_argc attribute_hidden; ++char **__libc_argv attribute_hidden; ++ ++ ++static void ++init (int argc, char **argv, char **envp) ++{ ++#ifdef USE_NONOPTION_FLAGS ++ extern void __getopt_clean_environment (char **); ++#endif ++ ++ __libc_multiple_libcs = &_dl_starting_up && !_dl_starting_up; ++ ++ /* Make sure we don't initialize twice. */ ++ if (!__libc_multiple_libcs) ++ { ++ /* Set the FPU control word to the proper default value if the ++ kernel would use a different value. (In a static program we ++ don't have this information.) */ ++#if 0 ++ /* at least on kFreeBSD set it even if SHARED, ++ fixes "make check" failures like math/test-fpucw.out */ ++#ifdef SHARED ++ if (__fpu_control != GLRO(dl_fpu_control)) ++#endif ++#endif ++ __setfpucw (__fpu_control); ++ } ++ ++ /* Save the command-line arguments. */ ++ __libc_argc = argc; ++ __libc_argv = argv; ++ __environ = envp; ++ ++#ifndef SHARED ++ __libc_init_secure (); ++ ++ /* First the initialization which normally would be done by the ++ dynamic linker. */ ++ _dl_non_dynamic_init (); ++#endif ++ ++ __init_misc (argc, argv, envp); ++ ++#ifdef USE_NONOPTION_FLAGS ++ /* This is a hack to make the special getopt in GNU libc working. */ ++ __getopt_clean_environment (envp); ++#endif ++ ++#ifdef SHARED ++ __libc_global_ctors (); ++#endif ++} ++ ++#ifdef SHARED ++ ++strong_alias (init, _init); ++ ++extern void __libc_init_first (void); ++ ++void ++__libc_init_first (void) ++{ ++} ++ ++#else ++extern void __libc_init_first (int argc, char **argv, char **envp); ++ ++void ++__libc_init_first (int argc, char **argv, char **envp) ++{ ++ init (argc, argv, envp); ++} ++#endif ++ ++ ++/* This function is defined here so that if this file ever gets into ++ ld.so we will get a link error. Having this file silently included ++ in ld.so causes disaster, because the _init definition above will ++ cause ld.so to gain an init function, which is not a cool thing. */ ++ ++extern void _dl_start (void) __attribute__ ((noreturn)); ++ ++void ++_dl_start (void) ++{ ++ abort (); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/kernel-features.h sysdeps/unix/bsd/bsd4.4/kfreebsd/kernel-features.h +--- null/unix/bsd/bsd4.4/kfreebsd/kernel-features.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/kernel-features.h 2006-01-03 22:12:22.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Set flags signalling availability of kernel features based on given ++ kernel version number. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef __KFREEBSD_KERNEL_VERSION ++/* We assume the worst; all kernels should be supported. */ ++# define __KFREEBSD_KERNEL_VERSION 0 ++#endif ++ ++/* We assume for __KFREEBSD_KERNEL_VERSION the same encoding used in ++ osreldate.h. I.e., the major, minor, and subminor are all ++ concatenated, with two digits for each. This means we can do ++ numeric comparisons. ++ ++ In the following we will define certain symbols depending on ++ whether the describes kernel feature is available in the kernel ++ version given by __KFREEBSD_KERNEL_VERSION. We are not always exactly ++ recording the correct versions in which the features were ++ introduced. If somebody cares these values can afterwards be ++ corrected. */ ++ ++/* No real-time signals in FreeBSD 5.x or 6.x. */ ++#define __ASSUME_REALTIME_SIGNALS 0 ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/ldconfig.h sysdeps/unix/bsd/bsd4.4/kfreebsd/ldconfig.h +--- null/unix/bsd/bsd4.4/kfreebsd/ldconfig.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/ldconfig.h 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,32 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#define SYSDEP_KNOWN_INTERPRETER_NAMES \ ++ { "/usr/lib/ld.so.1", FLAG_ELF_LIBC6 }, \ ++ { "/gnu/usr/lib/ld.so.1", FLAG_ELF_LIBC6 }, /* temporary */ \ ++ { "/usr/libexec/ld-elf.so.1", FLAG_ELF_LIBC5 }, ++ ++#define SYSDEP_KNOWN_LIBRARY_NAMES \ ++ { "libc.so.6", FLAG_ELF_LIBC6 }, /* temporary */ \ ++ { "libm.so.6", FLAG_ELF_LIBC6 }, /* temporary */ \ ++ { "libc.so.4", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.4", FLAG_ELF_LIBC5 }, \ ++ { "libc.so.5", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.5", FLAG_ELF_LIBC5 }, +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/ldsodefs.h sysdeps/unix/bsd/bsd4.4/kfreebsd/ldsodefs.h +--- null/unix/bsd/bsd4.4/kfreebsd/ldsodefs.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/ldsodefs.h 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,39 @@ ++/* Run-time dynamic linker data structures for loaded ELF shared objects. ++ Copyright (C) 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _LDSODEFS_H ++ ++/* Get the real definitions. */ ++#include_next ++ ++/* Now define our stuff. */ ++ ++/* FreeBSD puts some extra information into an auxiliary vector when it ++ execs ELF executables. Note that it uses AT_* values of 10 and 11 ++ to denote something different than AT_NOTELF and AT_UID, but this is ++ not a problem since elf/dl-support.c ignores these AT_* values. */ ++#define HAVE_AUX_VECTOR ++ ++/* Used by static binaries to check the auxiliary vector. */ ++extern void _dl_aux_init (ElfW(auxv_t) *av) internal_function; ++ ++/* Initialization which is normally done by the dynamic linker. */ ++extern void _dl_non_dynamic_init (void) internal_function; ++ ++#endif /* ldsodefs.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/llseek.c sysdeps/unix/bsd/bsd4.4/kfreebsd/llseek.c +--- null/unix/bsd/bsd4.4/kfreebsd/llseek.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/llseek.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,6 @@ ++/* We don't need a definition since the lseek64 function is what we need. */ ++/* llseek doesn't have a prototype. Since the second parameter is a ++ 64bit type, this results in wrong behaviour if no prototype is ++ provided. */ ++link_warning (llseek, "\ ++the `llseek' function may be dangerous; use `lseek64' instead.") +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/lseek64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/lseek64.c +--- null/unix/bsd/bsd4.4/kfreebsd/lseek64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/lseek64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1 @@ ++/* 'lseek64' is the same as 'lseek', because __off64_t == __off_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/lseek.c sysdeps/unix/bsd/bsd4.4/kfreebsd/lseek.c +--- null/unix/bsd/bsd4.4/kfreebsd/lseek.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/lseek.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,85 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++/* The real system call has a word of padding before the 64-bit off_t ++ argument. */ ++extern __off_t __syscall_lseek (int __fd, int __unused1, __off_t __offset, ++ int __whence) __THROW; ++ ++__off_t ++__libc_lseek (int fd, __off_t offset, int whence) ++{ ++#if 0 /* If the kernel would work right... */ ++ /* We pass 3 arguments in 5 words. */ ++ return INLINE_SYSCALL (lseek, 3, fd, 0, offset, whence); ++#else ++ /* According to POSIX:2001, if the resulting file offset would become ++ negative, this function has to return an EINVAL error and leave the ++ file offset unchanged. But the FreeBSD 4.0 kernel doesn't do this, ++ so we emulate it. */ ++ if (offset >= 0) ++ /* No risk that the file offset could become negative. */ ++ return INLINE_SYSCALL (lseek, 3, fd, 0, offset, whence); ++ else ++ { ++ /* Test whether the file offset becomes negative. */ ++ __off_t old_position; ++ __off_t new_position; ++ int saved_errno; ++ ++ saved_errno = errno; ++ old_position = INLINE_SYSCALL (lseek, 3, fd, 0, 0, SEEK_CUR); ++ errno = 0; ++ new_position = INLINE_SYSCALL (lseek, 3, fd, 0, offset, whence); ++ if (new_position < 0) ++ { ++ if (errno == 0) ++ { ++ /* The file offset became negative, and the kernel didn't ++ notice it. */ ++ if (old_position >= 0) ++ INLINE_SYSCALL (lseek, 3, fd, 0, old_position, SEEK_SET); ++ new_position = -1; ++ errno = EINVAL; ++ } ++ } ++ else ++ errno = saved_errno; ++ return new_position; ++ } ++#endif ++} ++ ++weak_alias (__libc_lseek, __lseek) ++libc_hidden_def (__lseek) ++weak_alias (__libc_lseek, lseek) ++ ++/* 'lseek64' is the same as 'lseek', because __off64_t == __off_t. */ ++strong_alias (__libc_lseek, __libc_lseek64) ++weak_alias (__libc_lseek64, __lseek64) ++weak_alias (__lseek64, lseek64) ++ ++/* 'llseek' is the same as 'lseek', because __off64_t == __off_t. */ ++strong_alias (__libc_lseek, __llseek) ++weak_alias (__llseek, llseek) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/lxstat64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/lxstat64.c +--- null/unix/bsd/bsd4.4/kfreebsd/lxstat64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/lxstat64.c 2006-01-27 05:39:47.000000000 +0100 +@@ -0,0 +1,44 @@ ++/* lxstat using FreeBSD lstat, nlstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__lxstat64 (int vers, const char *file, struct stat64 *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_lstat (CHECK_STRING (file), __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat64 (&buf16, buf); ++ return result; ++ } ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__lxstat64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/lxstat.c sysdeps/unix/bsd/bsd4.4/kfreebsd/lxstat.c +--- null/unix/bsd/bsd4.4/kfreebsd/lxstat.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/lxstat.c 2006-01-27 05:39:47.000000000 +0100 +@@ -0,0 +1,49 @@ ++/* lxstat using FreeBSD lstat, nlstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__lxstat (int vers, const char *file, struct stat *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_lstat (CHECK_STRING (file), __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat (&buf16, buf); ++ return result; ++ } ++ else if (__builtin_expect (vers == _STAT_VER_stat, 1)) ++ return __syscall_lstat (CHECK_STRING (file), ++ CHECK_1 ((struct stat16 *) buf)); ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__lxstat) ++ ++weak_alias (__lxstat, _lxstat) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/Makefile sysdeps/unix/bsd/bsd4.4/kfreebsd/Makefile +--- null/unix/bsd/bsd4.4/kfreebsd/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/Makefile 2006-05-25 21:43:10.000000000 +0200 +@@ -0,0 +1,119 @@ ++# Use bash, not /bin/sh, for executing scripts, because the native ++# FreeBSD /bin/sh does not interpret the IFS="" read ... command ++# in localedata/tst-fmon.sh correctly. ++SHELL = bash ++ ++# Additional header files to be installed in $prefix/include: ++ ++ifeq ($(subdir),misc) ++sysdep_headers += \ ++ sys/ktrace.h \ ++ sys/mount.h \ ++ sys/kd.h \ ++ sys/rfork.h ++endif ++ ++ifeq ($(subdir),stdlib) ++sysdep_headers += \ ++ bits/mcontext.h ++endif ++ ++# Additional functions, and particular system calls: ++ ++ifeq ($(subdir),csu) ++# For . ++sysdep_routines += errno-loc ++endif ++ ++ifeq ($(subdir),io) ++# For . ++sysdep_routines += sys_getcwd sys_lseek ++# For . ++sysdep_routines += sys_open ++# For . ++sysdep_routines += sys_fstat sys_lstat sys_mknod sys_nfstat sys_nlstat sys_nstat sys_stat ++# For . ++sysdep_routines += fstatfs64 statfs64 sys_fstatfs sys_statfs ++# Other. ++sysdep_routines += lchmod ++endif ++ ++ifeq ($(subdir),dirent) ++# For . ++sysdep_routines += sys_getdents sys_getdirentries getdirentries getdirentries64 ++endif ++ ++ifeq ($(subdir),misc) ++# For . ++sysdep_routines += clone start_thread ++# For . ++sysdep_routines += sys_ftruncate sys_truncate ++# For . ++sysdep_routines += acl_aclcheck_fd acl_aclcheck_file acl_delete_fd acl_delete_file acl_get_fd acl_get_file acl_set_fd acl_set_file ++# For . ++sysdep_routines += extattrctl extattr_delete_file extattr_get_file extattr_set_file ++# For . ++sysdep_routines += jail ++# For . ++sysdep_routines += ktrace utrace ++# For . ++sysdep_routines += kldfind kldfirstmod kldload kldnext kldstat kldsym kldunload kldunloadf ++# For . ++sysdep_routines += minherit sys_mmap ++# For . ++sysdep_routines += fhopen sys_fhstat sys_fhstatfs fhstat fhstat64 fhstatfs fhstatfs64 getfh getfsstat getfsstat64 sys_getfsstat getmntinfo getmntinfo64 mount nmount unmount ++# For . ++sysdep_routines += sys_ptrace ++# For . ++sysdep_routines += rfork ++# For . ++sysdep_routines += rtprio ++# For . ++sysdep_routines += bsd_sendfile ++# For . ++sysdep_routines += sysctl sysctlbyname ++# For . ++sysdep_routines += sys_readv sys_writev ++# Other. ++sysdep_routines += swapon swapoff sys_aio_cancel sys_aio_error sys_aio_read sys_aio_return sys_aio_suspend sys_aio_waitcomplete sys_aio_write sys_lio_listio issetugid modfind modfnext modnext modstat obreak quotactl rfork sysarch undelete yield ++# for INLINE_SYSCALL ++sysdep_routines += sys_fork sys_execve sys_sigaction sys_close sys_fcntl ++sysdep_routines += sys_clock_getres sys_clock_gettime sys_clock_settime ++endif ++ ++ifeq ($(subdir),posix) ++# For . ++sysdep_routines += sys_getlogin sys_pread sys_pwrite sys_setlogin sys_read sys_write ++endif ++ ++ifeq ($(subdir),inet) ++sysdep_headers += net/ethernet.h net/if_ether.h ++endif ++ ++ifeq ($(subdir),time) ++# For . ++sysdep_routines += ntp_adjtime ntp_gettime ++endif ++ ++ifeq ($(subdir),socket) ++sysdep_routines += sa_len sys_bind sys_connect sys_sendto ++endif ++ ++# Linuxthreads dependencies. ++ ++ifeq ($(subdir),posix) ++sysdep_headers += bits/initspin.h ++endif ++ ++# Don't compile the ctype glue code, since we have a much better ++# than the old non-GNU C library. ++inhibit-glue = yes ++ ++# Special ELF hacks. ++ifeq ($(subdir),elf) ++sysdep-rtld-routines += dl-brk dl-sbrk ++endif ++ ++ifeq ($(subdir),sunrpc) ++sysdep_headers += nfs/nfs.h ++endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/mmap64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/mmap64.c +--- null/unix/bsd/bsd4.4/kfreebsd/mmap64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/mmap64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1 @@ ++/* 'mmap64' is the same as 'mmap', because __off64_t == __off_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/mmap.c sysdeps/unix/bsd/bsd4.4/kfreebsd/mmap.c +--- null/unix/bsd/bsd4.4/kfreebsd/mmap.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/mmap.c 2006-05-25 21:43:10.000000000 +0200 +@@ -0,0 +1,81 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* The real system call has a word of padding before the 64-bit off_t ++ argument. */ ++extern void *__syscall_mmap (void *__addr, size_t __len, int __prot, ++ int __flags, int __fd, int __unused1, ++ __off_t __offset) __THROW; ++extern ssize_t __syscall_pread (int __fd, void *__buf, size_t __nbytes, ++ int __unused1, __off_t __offset) __THROW; ++ ++void * ++__mmap (void *addr, size_t len, int prot, int flags, int fd, __off_t offset) ++{ ++ void *result; ++ ++ /* Validity checks not done by the kernel. */ ++ if ((flags & MAP_FIXED) || (offset != 0)) ++ { ++ int pagesize = __getpagesize (); ++ ++ if (((flags & MAP_FIXED) ++ && (__builtin_expect (pagesize & (pagesize - 1), 0) ++ ? (unsigned long) addr % pagesize ++ : (unsigned long) addr & (pagesize - 1))) ++ || (__builtin_expect (pagesize & (pagesize - 1), 0) ++ ? offset % pagesize ++ : offset & (pagesize - 1))) ++ { ++ __set_errno (EINVAL); ++ return (void *) (-1); ++ } ++ } ++ ++ /* We pass 7 arguments in 8 words. */ ++ /* for ANON mapping we must pass -1 in place of fd */ ++ if (flags & MAP_ANON) ++ return INLINE_SYSCALL (mmap, 7, addr, len, prot, flags, -1, 0, offset); ++ result = INLINE_SYSCALL (mmap, 7, addr, len, prot, flags, fd, 0, offset); ++ ++ if (result != (void *) (-1) && fd >= 0 && len > 0) ++ { ++ /* Force an update of the atime. POSIX:2001 mandates that this happens ++ at some time between the mmap() call and the first page-in. Since ++ the FreeBSD 4.0 kernel doesn't update the atime upon a page-in, we ++ do it here. */ ++ char dummy; ++ ++ INLINE_SYSCALL (pread, 5, fd, &dummy, 1, 0, offset); ++ } ++ ++ return result; ++} ++ ++weak_alias (__mmap, mmap) ++ ++/* 'mmap64' is the same as 'mmap', because __off64_t == __off_t. */ ++strong_alias (__mmap, __mmap64) ++weak_alias (__mmap64, mmap64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/munmap.c sysdeps/unix/bsd/bsd4.4/kfreebsd/munmap.c +--- null/unix/bsd/bsd4.4/kfreebsd/munmap.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/munmap.c 2006-02-28 11:21:26.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++extern int __syscall_munmap (void *__addr, size_t __len) __THROW; ++ ++int ++__munmap (void *addr, size_t len) ++{ ++ int pagesize = __getpagesize (); ++ if ((unsigned long) addr & (pagesize - 1)) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ return INLINE_SYSCALL (munmap, 2, addr, len); ++} ++ ++weak_alias (__munmap, munmap) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/net/ethernet.h sysdeps/unix/bsd/bsd4.4/kfreebsd/net/ethernet.h +--- null/unix/bsd/bsd4.4/kfreebsd/net/ethernet.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/net/ethernet.h 2006-01-15 18:55:01.000000000 +0100 +@@ -0,0 +1,76 @@ ++/* Copyright (C) 1997, 1999, 2001, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Based on the FreeBSD version of this file. Curiously, that file ++ lacks a copyright in the header. */ ++ ++#ifndef __NET_ETHERNET_H ++#define __NET_ETHERNET_H 1 ++ ++#include ++#include ++#include /* IEEE 802.3 Ethernet constants */ ++ ++__BEGIN_DECLS ++ ++/* This is a name for the 48 bit ethernet address available on many ++ systems. */ ++struct ether_addr ++{ ++ u_int8_t ether_addr_octet[ETH_ALEN]; ++} __attribute__ ((__packed__)); ++ ++/* 10Mb/s ethernet header */ ++struct ether_header ++{ ++ u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */ ++ u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */ ++ u_int16_t ether_type; /* packet type ID field */ ++} __attribute__ ((__packed__)); ++ ++/* Ethernet protocol ID's */ ++#define ETHERTYPE_PUP 0x0200 /* Xerox PUP */ ++#define ETHERTYPE_IP 0x0800 /* IP */ ++#define ETHERTYPE_ARP 0x0806 /* Address resolution */ ++#define ETHERTYPE_REVARP 0x8035 /* Reverse ARP */ ++ ++#define ETHER_ADDR_LEN ETH_ALEN /* size of ethernet addr */ ++#define ETHER_TYPE_LEN 2 /* bytes in type field */ ++#define ETHER_CRC_LEN 4 /* bytes in CRC field */ ++#define ETHER_HDR_LEN ETH_HLEN /* total octets in header */ ++#define ETHER_MIN_LEN (ETH_ZLEN + ETHER_CRC_LEN) /* min packet length */ ++#define ETHER_MAX_LEN (ETH_FRAME_LEN + ETHER_CRC_LEN) /* max packet length */ ++ ++/* make sure ethenet length is valid */ ++#define ETHER_IS_VALID_LEN(foo) \ ++ ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) ++ ++/* ++ * The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have ++ * (type-ETHERTYPE_TRAIL)*512 bytes of data followed ++ * by an ETHER type (as given above) and then the (variable-length) header. ++ */ ++#define ETHERTYPE_TRAIL 0x1000 /* Trailer packet */ ++#define ETHERTYPE_NTRAILER 16 ++ ++#define ETHERMTU ETH_DATA_LEN ++#define ETHERMIN (ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) ++ ++__END_DECLS ++ ++#endif /* net/ethernet.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/net/if_ether.h sysdeps/unix/bsd/bsd4.4/kfreebsd/net/if_ether.h +--- null/unix/bsd/bsd4.4/kfreebsd/net/if_ether.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/net/if_ether.h 2006-01-15 18:55:01.000000000 +0100 +@@ -0,0 +1,104 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 _NET_IF_ETHER_H ++#define _NET_IF_ETHER_H 1 ++ ++/* ++ * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble ++ * and FCS/CRC (frame check sequence). ++ */ ++ ++#define ETH_ALEN 6 /* Octets in one ethernet addr */ ++#define ETH_HLEN 14 /* Total octets in header. */ ++#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ ++#define ETH_DATA_LEN 1500 /* Max. octets in payload */ ++#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */ ++ ++/* ++ * These are the defined Ethernet Protocol ID's. ++ */ ++ ++#define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */ ++#define ETH_P_PUP 0x0200 /* Xerox PUP packet */ ++#define ETH_P_PUPAT 0x0201 /* Xerox PUP Addr Trans packet */ ++#define ETH_P_IP 0x0800 /* Internet Protocol packet */ ++#define ETH_P_X25 0x0805 /* CCITT X.25 */ ++#define ETH_P_ARP 0x0806 /* Address Resolution packet */ ++#define ETH_P_BPQ 0x08FF /* G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] */ ++#define ETH_P_IEEEPUP 0x0a00 /* Xerox IEEE802.3 PUP packet */ ++#define ETH_P_IEEEPUPAT 0x0a01 /* Xerox IEEE802.3 PUP Addr Trans packet */ ++#define ETH_P_DEC 0x6000 /* DEC Assigned proto */ ++#define ETH_P_DNA_DL 0x6001 /* DEC DNA Dump/Load */ ++#define ETH_P_DNA_RC 0x6002 /* DEC DNA Remote Console */ ++#define ETH_P_DNA_RT 0x6003 /* DEC DNA Routing */ ++#define ETH_P_LAT 0x6004 /* DEC LAT */ ++#define ETH_P_DIAG 0x6005 /* DEC Diagnostics */ ++#define ETH_P_CUST 0x6006 /* DEC Customer use */ ++#define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */ ++#define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */ ++#define ETH_P_ATALK 0x809B /* Appletalk DDP */ ++#define ETH_P_AARP 0x80F3 /* Appletalk AARP */ ++#define ETH_P_8021Q 0x8100 /* 802.1Q VLAN Extended Header */ ++#define ETH_P_IPX 0x8137 /* IPX over DIX */ ++#define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */ ++#define ETH_P_WCCP 0x883E /* Web-cache coordination protocol ++ * defined in draft-wilson-wrec-wccp-v2-00.txt */ ++#define ETH_P_PPP_DISC 0x8863 /* PPPoE discovery messages */ ++#define ETH_P_PPP_SES 0x8864 /* PPPoE session messages */ ++#define ETH_P_MPLS_UC 0x8847 /* MPLS Unicast traffic */ ++#define ETH_P_MPLS_MC 0x8848 /* MPLS Multicast traffic */ ++#define ETH_P_ATMMPOA 0x884c /* MultiProtocol Over ATM */ ++#define ETH_P_ATMFATE 0x8884 /* Frame-based ATM Transport ++ * over Ethernet ++ */ ++#define ETH_P_AOE 0x88A2 /* ATA over Ethernet */ ++ ++/* ++ * Non DIX types. Won't clash for 1500 types. ++ */ ++ ++#define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */ ++#define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */ ++#define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */ ++#define ETH_P_802_2 0x0004 /* 802.2 frames */ ++#define ETH_P_SNAP 0x0005 /* Internal only */ ++#define ETH_P_DDCMP 0x0006 /* DEC DDCMP: Internal only */ ++#define ETH_P_WAN_PPP 0x0007 /* Dummy type for WAN PPP frames*/ ++#define ETH_P_PPP_MP 0x0008 /* Dummy type for PPP MP frames */ ++#define ETH_P_LOCALTALK 0x0009 /* Localtalk pseudo type */ ++#define ETH_P_PPPTALK 0x0010 /* Dummy type for Atalk over PPP*/ ++#define ETH_P_TR_802_2 0x0011 /* 802.2 frames */ ++#define ETH_P_MOBITEX 0x0015 /* Mobitex (kaz@cafe.net) */ ++#define ETH_P_CONTROL 0x0016 /* Card specific control frames */ ++#define ETH_P_IRDA 0x0017 /* Linux-IrDA */ ++#define ETH_P_ECONET 0x0018 /* Acorn Econet */ ++#define ETH_P_HDLC 0x0019 /* HDLC frames */ ++#define ETH_P_ARCNET 0x001A /* 1A for ArcNet :-) */ ++ ++/* ++ * This is an Ethernet frame header. ++ */ ++ ++struct ethhdr { ++ unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ ++ unsigned char h_source[ETH_ALEN]; /* source ether addr */ ++ unsigned short h_proto; /* packet type ID field */ ++} __attribute__((packed)); ++ ++#endif /* net/if_ether.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/net/if.h sysdeps/unix/bsd/bsd4.4/kfreebsd/net/if.h +--- null/unix/bsd/bsd4.4/kfreebsd/net/if.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/net/if.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,328 @@ ++/* ++ * Copyright (c) 1982, 1986, 1989, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)if.h 8.1 (Berkeley) 6/10/93 ++ * $FreeBSD: src/sys/net/if.h,v 1.88.2.2 2004/09/13 05:11:40 brooks Exp $ ++ */ ++ ++#ifndef _NET_IF_H_ ++#define _NET_IF_H_ ++ ++#include ++ ++#include ++ ++#include ++#include ++ ++struct ifnet; ++ ++/* ++ * Length of interface external name, including terminating '\0'. ++ * Note: this is the same size as a generic device's external name. ++ */ ++#define IF_NAMESIZE 16 ++#define IFNAMSIZ IF_NAMESIZE ++#define IF_MAXUNIT 0x7fff /* historical value */ ++ ++/* ++ * Structure used to query names of interface cloners. ++ */ ++ ++struct if_clonereq { ++ int ifcr_total; /* total cloners (out) */ ++ int ifcr_count; /* room for this many in user buffer */ ++ char *ifcr_buffer; /* buffer for cloner names */ ++}; ++ ++/* ++ * Structure describing information about an interface ++ * which may be of interest to management entities. ++ */ ++struct if_data { ++ /* generic interface information */ ++ unsigned char ifi_type; /* ethernet, tokenring, etc */ ++ unsigned char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */ ++ unsigned char ifi_addrlen; /* media address length */ ++ unsigned char ifi_hdrlen; /* media header length */ ++ unsigned char ifi_link_state; /* current link state */ ++ unsigned char ifi_recvquota; /* polling quota for receive intrs */ ++ unsigned char ifi_xmitquota; /* polling quota for xmit intrs */ ++ unsigned char ifi_datalen; /* length of this data struct */ ++ unsigned long ifi_mtu; /* maximum transmission unit */ ++ unsigned long ifi_metric; /* routing metric (external only) */ ++ unsigned long ifi_baudrate; /* linespeed */ ++ /* volatile statistics */ ++ unsigned long ifi_ipackets; /* packets received on interface */ ++ unsigned long ifi_ierrors; /* input errors on interface */ ++ unsigned long ifi_opackets; /* packets sent on interface */ ++ unsigned long ifi_oerrors; /* output errors on interface */ ++ unsigned long ifi_collisions; /* collisions on csma interfaces */ ++ unsigned long ifi_ibytes; /* total number of octets received */ ++ unsigned long ifi_obytes; /* total number of octets sent */ ++ unsigned long ifi_imcasts; /* packets received via multicast */ ++ unsigned long ifi_omcasts; /* packets sent via multicast */ ++ unsigned long ifi_iqdrops; /* dropped on input, this interface */ ++ unsigned long ifi_noproto; /* destined for unsupported protocol */ ++ unsigned long ifi_hwassist; /* HW offload capabilities */ ++ time_t ifi_epoch; /* time of attach or stat reset */ ++#ifdef __alpha__ ++ u_int ifi_timepad; /* time_t is int, not long on alpha */ ++#endif ++ struct timeval ifi_lastchange; /* time of last administrative change */ ++}; ++ ++#define IFF_UP 0x1 /* interface is up */ ++#define IFF_BROADCAST 0x2 /* broadcast address valid */ ++#define IFF_DEBUG 0x4 /* turn on debugging */ ++#define IFF_LOOPBACK 0x8 /* is a loopback net */ ++#define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */ ++#define IFF_SMART 0x20 /* interface manages own routes */ ++#define IFF_RUNNING 0x40 /* resources allocated */ ++#define IFF_NOARP 0x80 /* no address resolution protocol */ ++#define IFF_PROMISC 0x100 /* receive all packets */ ++#define IFF_ALLMULTI 0x200 /* receive all multicast packets */ ++#define IFF_OACTIVE 0x400 /* transmission in progress */ ++#define IFF_SIMPLEX 0x800 /* can't hear own transmissions */ ++#define IFF_LINK0 0x1000 /* per link layer defined bit */ ++#define IFF_LINK1 0x2000 /* per link layer defined bit */ ++#define IFF_LINK2 0x4000 /* per link layer defined bit */ ++#define IFF_ALTPHYS IFF_LINK2 /* use alternate physical connection */ ++#define IFF_MULTICAST 0x8000 /* supports multicast */ ++#define IFF_POLLING 0x10000 /* Interface is in polling mode. */ ++#define IFF_PPROMISC 0x20000 /* user-requested promisc mode */ ++#define IFF_MONITOR 0x40000 /* user-requested monitor mode */ ++#define IFF_STATICARP 0x80000 /* static ARP */ ++#define IFF_NEEDSGIANT 0x100000 /* hold Giant over if_start calls */ ++ ++/* flags set internally only: */ ++#define IFF_CANTCHANGE \ ++ (IFF_BROADCAST|IFF_POINTOPOINT|IFF_RUNNING|IFF_OACTIVE|\ ++ IFF_SIMPLEX|IFF_MULTICAST|IFF_ALLMULTI|IFF_SMART|IFF_PROMISC|\ ++ IFF_POLLING) ++ ++/* ++ * Values for if_link_state. ++ */ ++#define LINK_STATE_UNKNOWN 0 /* link invalid/unknown */ ++#define LINK_STATE_DOWN 1 /* link is down */ ++#define LINK_STATE_UP 2 /* link is up */ ++ ++/* ++ * Some convenience macros used for setting ifi_baudrate. ++ * XXX 1000 vs. 1024? --thorpej@netbsd.org ++ */ ++#define IF_Kbps(x) ((x) * 1000) /* kilobits/sec. */ ++#define IF_Mbps(x) (IF_Kbps((x) * 1000)) /* megabits/sec. */ ++#define IF_Gbps(x) (IF_Mbps((x) * 1000)) /* gigabits/sec. */ ++ ++/* Capabilities that interfaces can advertise. */ ++#define IFCAP_RXCSUM 0x0001 /* can offload checksum on RX */ ++#define IFCAP_TXCSUM 0x0002 /* can offload checksum on TX */ ++#define IFCAP_NETCONS 0x0004 /* can be a network console */ ++#define IFCAP_VLAN_MTU 0x0008 /* VLAN-compatible MTU */ ++#define IFCAP_VLAN_HWTAGGING 0x0010 /* hardware VLAN tag support */ ++#define IFCAP_JUMBO_MTU 0x0020 /* 9000 byte MTU supported */ ++#define IFCAP_POLLING 0x0040 /* driver supports polling */ ++ ++#define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM) ++ ++#define IFQ_MAXLEN 50 ++#define IFNET_SLOWHZ 1 /* granularity is 1 second */ ++ ++/* ++ * Message format for use in obtaining information about interfaces ++ * from getkerninfo and the routing socket ++ */ ++struct if_msghdr { ++ unsigned short ifm_msglen; /* to skip over non-understood messages */ ++ unsigned char ifm_version; /* future binary compatibility */ ++ unsigned char ifm_type; /* message type */ ++ int ifm_addrs; /* like rtm_addrs */ ++ int ifm_flags; /* value of if_flags */ ++ unsigned short ifm_index; /* index for associated ifp */ ++ struct if_data ifm_data;/* statistics and other data about if */ ++}; ++ ++/* ++ * Message format for use in obtaining information about interface addresses ++ * from getkerninfo and the routing socket ++ */ ++struct ifa_msghdr { ++ unsigned short ifam_msglen; /* to skip over non-understood messages */ ++ unsigned char ifam_version; /* future binary compatibility */ ++ unsigned char ifam_type; /* message type */ ++ int ifam_addrs; /* like rtm_addrs */ ++ int ifam_flags; /* value of ifa_flags */ ++ unsigned short ifam_index; /* index for associated ifp */ ++ int ifam_metric; /* value of ifa_metric */ ++}; ++ ++/* ++ * Message format for use in obtaining information about multicast addresses ++ * from the routing socket ++ */ ++struct ifma_msghdr { ++ unsigned short ifmam_msglen; /* to skip over non-understood messages */ ++ unsigned char ifmam_version; /* future binary compatibility */ ++ unsigned char ifmam_type; /* message type */ ++ int ifmam_addrs; /* like rtm_addrs */ ++ int ifmam_flags; /* value of ifa_flags */ ++ unsigned short ifmam_index; /* index for associated ifp */ ++}; ++ ++/* ++ * Message format announcing the arrival or departure of a network interface. ++ */ ++struct if_announcemsghdr { ++ unsigned short ifan_msglen; /* to skip over non-understood messages */ ++ unsigned char ifan_version; /* future binary compatibility */ ++ unsigned char ifan_type; /* message type */ ++ unsigned short ifan_index; /* index for associated ifp */ ++ char ifan_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ unsigned short ifan_what; /* what type of announcement */ ++}; ++ ++#define IFAN_ARRIVAL 0 /* interface arrival */ ++#define IFAN_DEPARTURE 1 /* interface departure */ ++ ++/* ++ * Interface request structure used for socket ++ * ioctl's. All interface ioctl's must have parameter ++ * definitions which begin with ifr_name. The ++ * remainder may be interface specific. ++ */ ++struct ifreq { ++ char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ union { ++ struct sockaddr ifru_addr; ++ struct sockaddr ifru_dstaddr; ++ struct sockaddr ifru_broadaddr; ++ struct sockaddr ifru_netmask; ++ short ifru_flags[2]; ++ short ifru_index; ++ int ifru_metric; ++ int ifru_mtu; ++ int ifru_phys; ++ int ifru_media; ++ char *ifru_data; ++ int ifru_cap[2]; ++ } ifr_ifru; ++#define ifr_addr ifr_ifru.ifru_addr /* address */ ++#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ ++#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ ++#define ifr_netmask ifr_ifru.ifru_netmask /* interface net mask */ ++#define ifr_flags ifr_ifru.ifru_flags[0] /* flags (low 16 bits) */ ++#define ifr_flagshigh ifr_ifru.ifru_flags[1] /* flags (high 16 bits) */ ++#define ifr_metric ifr_ifru.ifru_metric /* metric */ ++#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */ ++#define ifr_phys ifr_ifru.ifru_phys /* physical wire */ ++#define ifr_media ifr_ifru.ifru_media /* physical media */ ++#define ifr_data ifr_ifru.ifru_data /* for use by interface */ ++#define ifr_reqcap ifr_ifru.ifru_cap[0] /* requested capabilities */ ++#define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */ ++#define ifr_index ifr_ifru.ifru_index /* interface index */ ++}; ++ ++#define _SIZEOF_ADDR_IFREQ(ifr) \ ++ ((ifr).ifr_addr.sa_len > sizeof(struct sockaddr) ? \ ++ (sizeof(struct ifreq) - sizeof(struct sockaddr) + \ ++ (ifr).ifr_addr.sa_len) : sizeof(struct ifreq)) ++ ++struct ifaliasreq { ++ char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ struct sockaddr ifra_addr; ++ struct sockaddr ifra_broadaddr; ++ struct sockaddr ifra_mask; ++}; ++ ++struct ifmediareq { ++ char ifm_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ int ifm_current; /* current media options */ ++ int ifm_mask; /* don't care mask */ ++ int ifm_status; /* media status */ ++ int ifm_active; /* active options */ ++ int ifm_count; /* # entries in ifm_ulist array */ ++ int *ifm_ulist; /* media words */ ++}; ++ ++/* ++ * Structure used to retrieve aux status data from interfaces. ++ * Kernel suppliers to this interface should respect the formatting ++ * needed by ifconfig(8): each line starts with a TAB and ends with ++ * a newline. The canonical example to copy and paste is in if_tun.c. ++ */ ++ ++#define IFSTATMAX 800 /* 10 lines of text */ ++struct ifstat { ++ char ifs_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ char ascii[IFSTATMAX + 1]; ++}; ++ ++/* ++ * Structure used in SIOCGIFCONF request. ++ * Used to retrieve interface configuration ++ * for machine (useful for programs which ++ * must know all networks accessible). ++ */ ++struct ifconf { ++ int ifc_len; /* size of associated buffer */ ++ union { ++ char *ifcu_buf; ++ struct ifreq *ifcu_req; ++ } ifc_ifcu; ++#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */ ++#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */ ++}; ++ ++ ++/* ++ * Structure for SIOC[AGD]LIFADDR ++ */ ++struct if_laddrreq { ++ char iflr_name[IFNAMSIZ]; ++ unsigned int flags; ++#define IFLR_PREFIX 0x8000 /* in: prefix given out: kernel fills id */ ++ unsigned int prefixlen; /* in/out */ ++ struct sockaddr_storage addr; /* in/out */ ++ struct sockaddr_storage dstaddr; /* out */ ++}; ++ ++struct if_nameindex { ++ unsigned int if_index; /* 1, 2, ... */ ++ char *if_name; /* null terminated name: "le0", ... */ ++}; ++ ++__BEGIN_DECLS ++void if_freenameindex(struct if_nameindex *); ++char *if_indextoname(unsigned int, char *); ++struct if_nameindex *if_nameindex(void); ++unsigned int if_nametoindex(const char *); ++__END_DECLS ++ ++#endif /* !_NET_IF_H_ */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/netinet/if_ether.h sysdeps/unix/bsd/bsd4.4/kfreebsd/netinet/if_ether.h +--- null/unix/bsd/bsd4.4/kfreebsd/netinet/if_ether.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/netinet/if_ether.h 2006-05-25 21:43:09.000000000 +0200 +@@ -0,0 +1,138 @@ ++/* Copyright (C) 1996, 1997, 1999, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef __NETINET_IF_ETHER_H ++ ++#define __NETINET_IF_ETHER_H 1 ++#include ++#include ++ ++#include ++ ++#ifdef __USE_BSD ++/* ++ * Copyright (c) 1982, 1986, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)if_ether.h 8.3 (Berkeley) 5/2/95 ++ * $FreeBSD$ ++ */ ++ ++#include ++#include ++#include ++ ++__BEGIN_DECLS ++/* ++ * Ethernet Address Resolution Protocol. ++ * ++ * See RFC 826 for protocol description. Structure below is adapted ++ * to resolving internet addresses. Field names used correspond to ++ * RFC 826. ++ */ ++struct ether_arp { ++ struct arphdr ea_hdr; /* fixed-size header */ ++ u_int8_t arp_sha[ETH_ALEN]; /* sender hardware address */ ++ u_int8_t arp_spa[4]; /* sender protocol address */ ++ u_int8_t arp_tha[ETH_ALEN]; /* target hardware address */ ++ u_int8_t arp_tpa[4]; /* target protocol address */ ++}; ++#define arp_hrd ea_hdr.ar_hrd ++#define arp_pro ea_hdr.ar_pro ++#define arp_hln ea_hdr.ar_hln ++#define arp_pln ea_hdr.ar_pln ++#define arp_op ea_hdr.ar_op ++ ++struct sockaddr_inarp { ++ __SOCKADDR_COMMON (sin_); ++ in_port_t sin_port; /* Port number. */ ++ struct in_addr sin_addr; /* Internet address. */ ++ struct in_addr sin_srcaddr; ++ unsigned short sin_tos; ++ unsigned short sin_other; ++#define SIN_PROXY 1 ++}; ++ ++/* ++ * IP and ethernet specific routing flags ++ */ ++#define RTF_USETRAILERS RTF_PROTO1 /* use trailers */ ++#define RTF_ANNOUNCE RTF_PROTO2 /* announce new arp entry */ ++ ++/* ++ * Macro to map an IP multicast address to an Ethernet multicast address. ++ * The high-order 25 bits of the Ethernet address are statically assigned, ++ * and the low-order 23 bits are taken from the low end of the IP address. ++ */ ++#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \ ++ /* struct in_addr *ipaddr; */ \ ++ /* u_char enaddr[ETH_ALEN]; */ \ ++{ \ ++ (enaddr)[0] = 0x01; \ ++ (enaddr)[1] = 0x00; \ ++ (enaddr)[2] = 0x5e; \ ++ (enaddr)[3] = ((u_int8_t *)ipaddr)[1] & 0x7f; \ ++ (enaddr)[4] = ((u_int8_t *)ipaddr)[2]; \ ++ (enaddr)[5] = ((u_int8_t *)ipaddr)[3]; \ ++} ++ ++/* ++ * Macro to map an IP6 multicast address to an Ethernet multicast address. ++ * The high-order 16 bits of the Ethernet address are statically assigned, ++ * and the low-order 32 bits are taken from the low end of the IP6 address. ++ */ ++#define ETHER_MAP_IPV6_MULTICAST(ip6addr, enaddr) \ ++/* struct in6_addr *ip6addr; */ \ ++/* u_char enaddr[ETH_ALEN]; */ \ ++{ \ ++ (enaddr)[0] = 0x33; \ ++ (enaddr)[1] = 0x33; \ ++ (enaddr)[2] = ((u_int8_t *)ip6addr)[12]; \ ++ (enaddr)[3] = ((u_int8_t *)ip6addr)[13]; \ ++ (enaddr)[4] = ((u_int8_t *)ip6addr)[14]; \ ++ (enaddr)[5] = ((u_int8_t *)ip6addr)[15]; \ ++} ++ ++__END_DECLS ++#endif /* __USE_BSD */ ++ ++#endif /* netinet/if_ether.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/netinet/ip_icmp.h sysdeps/unix/bsd/bsd4.4/kfreebsd/netinet/ip_icmp.h +--- null/unix/bsd/bsd4.4/kfreebsd/netinet/ip_icmp.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/netinet/ip_icmp.h 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,288 @@ ++/* Copyright (C) 1991-1993, 1995-1997, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef __NETINET_IP_ICMP_H ++#define __NETINET_IP_ICMP_H 1 ++ ++#include ++#include ++ ++__BEGIN_DECLS ++ ++struct icmphdr ++{ ++ u_int8_t type; /* message type */ ++ u_int8_t code; /* type sub-code */ ++ u_int16_t checksum; ++ union ++ { ++ struct ++ { ++ u_int16_t id; ++ u_int16_t sequence; ++ } echo; /* echo datagram */ ++ u_int32_t gateway; /* gateway address */ ++ struct ++ { ++ u_int16_t __unused; ++ u_int16_t mtu; ++ } frag; /* path mtu discovery */ ++ } un; ++}; ++ ++#define ICMP_ECHOREPLY 0 /* Echo Reply */ ++#define ICMP_DEST_UNREACH 3 /* Destination Unreachable */ ++#define ICMP_SOURCE_QUENCH 4 /* Source Quench */ ++#define ICMP_REDIRECT 5 /* Redirect (change route) */ ++#define ICMP_ECHO 8 /* Echo Request */ ++#define ICMP_TIME_EXCEEDED 11 /* Time Exceeded */ ++#define ICMP_PARAMETERPROB 12 /* Parameter Problem */ ++#define ICMP_TIMESTAMP 13 /* Timestamp Request */ ++#define ICMP_TIMESTAMPREPLY 14 /* Timestamp Reply */ ++#define ICMP_INFO_REQUEST 15 /* Information Request */ ++#define ICMP_INFO_REPLY 16 /* Information Reply */ ++#define ICMP_ADDRESS 17 /* Address Mask Request */ ++#define ICMP_ADDRESSREPLY 18 /* Address Mask Reply */ ++#define NR_ICMP_TYPES 18 ++ ++ ++/* Codes for UNREACH. */ ++#define ICMP_NET_UNREACH 0 /* Network Unreachable */ ++#define ICMP_HOST_UNREACH 1 /* Host Unreachable */ ++#define ICMP_PROT_UNREACH 2 /* Protocol Unreachable */ ++#define ICMP_PORT_UNREACH 3 /* Port Unreachable */ ++#define ICMP_FRAG_NEEDED 4 /* Fragmentation Needed/DF set */ ++#define ICMP_SR_FAILED 5 /* Source Route failed */ ++#define ICMP_NET_UNKNOWN 6 ++#define ICMP_HOST_UNKNOWN 7 ++#define ICMP_HOST_ISOLATED 8 ++#define ICMP_NET_ANO 9 ++#define ICMP_HOST_ANO 10 ++#define ICMP_NET_UNR_TOS 11 ++#define ICMP_HOST_UNR_TOS 12 ++#define ICMP_PKT_FILTERED 13 /* Packet filtered */ ++#define ICMP_PREC_VIOLATION 14 /* Precedence violation */ ++#define ICMP_PREC_CUTOFF 15 /* Precedence cut off */ ++#define NR_ICMP_UNREACH 15 /* instead of hardcoding immediate value */ ++ ++/* Codes for REDIRECT. */ ++#define ICMP_REDIR_NET 0 /* Redirect Net */ ++#define ICMP_REDIR_HOST 1 /* Redirect Host */ ++#define ICMP_REDIR_NETTOS 2 /* Redirect Net for TOS */ ++#define ICMP_REDIR_HOSTTOS 3 /* Redirect Host for TOS */ ++ ++/* Codes for TIME_EXCEEDED. */ ++#define ICMP_EXC_TTL 0 /* TTL count exceeded */ ++#define ICMP_EXC_FRAGTIME 1 /* Fragment Reass time exceeded */ ++ ++ ++#ifdef __USE_BSD ++/* ++ * Copyright (c) 1982, 1986, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93 ++ */ ++ ++#include ++#include ++ ++/* ++ * Internal of an ICMP Router Advertisement ++ */ ++struct icmp_ra_addr ++{ ++ u_int32_t ira_addr; ++ u_int32_t ira_preference; ++}; ++ ++struct icmp ++{ ++ u_int8_t icmp_type; /* type of message, see below */ ++ u_int8_t icmp_code; /* type sub code */ ++ u_int16_t icmp_cksum; /* ones complement checksum of struct */ ++ union ++ { ++ u_char ih_pptr; /* ICMP_PARAMPROB */ ++ struct in_addr ih_gwaddr; /* gateway address */ ++ struct ih_idseq /* echo datagram */ ++ { ++ u_int16_t icd_id; ++ u_int16_t icd_seq; ++ } ih_idseq; ++ u_int32_t ih_void; ++ ++ /* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */ ++ struct ih_pmtu ++ { ++ u_int16_t ipm_void; ++ u_int16_t ipm_nextmtu; ++ } ih_pmtu; ++ ++ struct ih_rtradv ++ { ++ u_int8_t irt_num_addrs; ++ u_int8_t irt_wpa; ++ u_int16_t irt_lifetime; ++ } ih_rtradv; ++ } icmp_hun; ++#define icmp_pptr icmp_hun.ih_pptr ++#define icmp_gwaddr icmp_hun.ih_gwaddr ++#define icmp_id icmp_hun.ih_idseq.icd_id ++#define icmp_seq icmp_hun.ih_idseq.icd_seq ++#define icmp_void icmp_hun.ih_void ++#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void ++#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu ++#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs ++#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa ++#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime ++ union ++ { ++ struct ++ { ++ u_int32_t its_otime; ++ u_int32_t its_rtime; ++ u_int32_t its_ttime; ++ } id_ts; ++ struct ++ { ++ struct ip idi_ip; ++ /* options and then 64 bits of data */ ++ } id_ip; ++ struct icmp_ra_addr id_radv; ++ u_int32_t id_mask; ++ u_int8_t id_data[1]; ++ } icmp_dun; ++#define icmp_otime icmp_dun.id_ts.its_otime ++#define icmp_rtime icmp_dun.id_ts.its_rtime ++#define icmp_ttime icmp_dun.id_ts.its_ttime ++#define icmp_ip icmp_dun.id_ip.idi_ip ++#define icmp_radv icmp_dun.id_radv ++#define icmp_mask icmp_dun.id_mask ++#define icmp_data icmp_dun.id_data ++}; ++ ++/* ++ * Lower bounds on packet lengths for various types. ++ * For the error advice packets must first insure that the ++ * packet is large enough to contain the returned ip header. ++ * Only then can we do the check to see if 64 bits of packet ++ * data have been returned, since we need to check the returned ++ * ip header length. ++ */ ++#define ICMP_MINLEN 8 /* abs minimum */ ++#define ICMP_TSLEN (8 + 3 * sizeof (n_time)) /* timestamp */ ++#define ICMP_MASKLEN 12 /* address mask */ ++#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */ ++#ifndef _IP_VHL ++#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8) ++ /* N.B.: must separately check that ip_hl >= 5 */ ++#else ++#define ICMP_ADVLEN(p) (8 + (IP_VHL_HL((p)->icmp_ip.ip_vhl) << 2) + 8) ++ /* N.B.: must separately check that header length >= 5 */ ++#endif ++ ++/* Definition of type and code fields. */ ++/* defined above: ICMP_ECHOREPLY, ICMP_REDIRECT, ICMP_ECHO */ ++#define ICMP_ECHOREPLY 0 /* echo reply */ ++#define ICMP_UNREACH 3 /* dest unreachable, codes: */ ++#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */ ++#define ICMP_REDIRECT 5 /* shorter route, codes: */ ++#define ICMP_ECHO 8 /* echo service */ ++#define ICMP_ROUTERADVERT 9 /* router advertisement */ ++#define ICMP_ROUTERSOLICIT 10 /* router solicitation */ ++#define ICMP_TIMXCEED 11 /* time exceeded, code: */ ++#define ICMP_PARAMPROB 12 /* ip header bad */ ++#define ICMP_TSTAMP 13 /* timestamp request */ ++#define ICMP_TSTAMPREPLY 14 /* timestamp reply */ ++#define ICMP_IREQ 15 /* information request */ ++#define ICMP_IREQREPLY 16 /* information reply */ ++#define ICMP_MASKREQ 17 /* address mask request */ ++#define ICMP_MASKREPLY 18 /* address mask reply */ ++ ++#define ICMP_MAXTYPE 18 ++ ++/* UNREACH codes */ ++#define ICMP_UNREACH_NET 0 /* bad net */ ++#define ICMP_UNREACH_HOST 1 /* bad host */ ++#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */ ++#define ICMP_UNREACH_PORT 3 /* bad port */ ++#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */ ++#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */ ++#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */ ++#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */ ++#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */ ++#define ICMP_UNREACH_NET_PROHIB 9 /* net denied */ ++#define ICMP_UNREACH_HOST_PROHIB 10 /* host denied */ ++#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */ ++#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */ ++#define ICMP_UNREACH_FILTER_PROHIB 13 /* admin prohib */ ++#define ICMP_UNREACH_HOST_PRECEDENCE 14 /* host prec vio. */ ++#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 /* prec cutoff */ ++ ++/* REDIRECT codes */ ++#define ICMP_REDIRECT_NET 0 /* for network */ ++#define ICMP_REDIRECT_HOST 1 /* for host */ ++#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */ ++#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */ ++ ++/* TIMEXCEED codes */ ++#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */ ++#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */ ++ ++/* PARAMPROB code */ ++#define ICMP_PARAMPROB_ERRATPTR 0 /* error at param ptr */ ++#define ICMP_PARAMPROB_OPTABSENT 1 /* req. opt. absent */ ++#define ICMP_PARAMPROB_LENGTH 2 /* bad length */ ++ ++#define ICMP_INFOTYPE(type) \ ++ ((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \ ++ (type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \ ++ (type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \ ++ (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \ ++ (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY) ++ ++#endif /* __USE_BSD */ ++ ++__END_DECLS ++ ++#endif /* netinet/ip_icmp.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/netinet/tcp.h sysdeps/unix/bsd/bsd4.4/kfreebsd/netinet/tcp.h +--- null/unix/bsd/bsd4.4/kfreebsd/netinet/tcp.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/netinet/tcp.h 2006-01-02 19:10:53.000000000 +0100 +@@ -0,0 +1,258 @@ ++/* netinet/tcp.h ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Copyright (c) 1982, 1986, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)tcp.h 8.1 (Berkeley) 6/10/93 ++ */ ++ ++#ifndef _NETINET_TCP_H ++#define _NETINET_TCP_H 1 ++ ++#include ++ ++/* ++ * User-settable options (used with setsockopt). ++ */ ++#define TCP_NODELAY 1 /* Don't delay send to coalesce packets */ ++#define TCP_MAXSEG 2 /* Set maximum segment size */ ++#define TCP_NOPUSH 4 /* Don't push last block of write */ ++#define TCP_NOOPT 8 /* Don't use TCP options */ ++ ++#ifdef __USE_MISC ++# include ++ ++# ifdef __FAVOR_BSD ++typedef u_int32_t tcp_seq; ++typedef u_int32_t tcp_cc; /* connection count, per RFC 1644 */ ++/* ++ * TCP header. ++ * Per RFC 793, September, 1981. ++ */ ++struct tcphdr ++ { ++ u_int16_t th_sport; /* source port */ ++ u_int16_t th_dport; /* destination port */ ++ tcp_seq th_seq; /* sequence number */ ++ tcp_seq th_ack; /* acknowledgement number */ ++# if __BYTE_ORDER == __LITTLE_ENDIAN ++ u_int8_t th_x2:4; /* (unused) */ ++ u_int8_t th_off:4; /* data offset */ ++# endif ++# if __BYTE_ORDER == __BIG_ENDIAN ++ u_int8_t th_off:4; /* data offset */ ++ u_int8_t th_x2:4; /* (unused) */ ++# endif ++ u_int8_t th_flags; ++# define TH_FIN 0x01 ++# define TH_SYN 0x02 ++# define TH_RST 0x04 ++# define TH_PUSH 0x08 ++# define TH_ACK 0x10 ++# define TH_URG 0x20 ++ u_int16_t th_win; /* window */ ++ u_int16_t th_sum; /* checksum */ ++ u_int16_t th_urp; /* urgent pointer */ ++}; ++ ++# else /* !__FAVOR_BSD */ ++struct tcphdr ++ { ++ u_int16_t source; ++ u_int16_t dest; ++ u_int32_t seq; ++ u_int32_t ack_seq; ++# if __BYTE_ORDER == __LITTLE_ENDIAN ++ u_int16_t res1:4; ++ u_int16_t doff:4; ++ u_int16_t fin:1; ++ u_int16_t syn:1; ++ u_int16_t rst:1; ++ u_int16_t psh:1; ++ u_int16_t ack:1; ++ u_int16_t urg:1; ++ u_int16_t res2:2; ++# elif __BYTE_ORDER == __BIG_ENDIAN ++ u_int16_t doff:4; ++ u_int16_t res1:4; ++ u_int16_t res2:2; ++ u_int16_t urg:1; ++ u_int16_t ack:1; ++ u_int16_t psh:1; ++ u_int16_t rst:1; ++ u_int16_t syn:1; ++ u_int16_t fin:1; ++# else ++# error "Adjust your defines" ++# endif ++ u_int16_t window; ++ u_int16_t check; ++ u_int16_t urg_ptr; ++}; ++# endif /* __FAVOR_BSD */ ++ ++enum ++{ ++ TCP_ESTABLISHED = 1, ++ TCP_SYN_SENT, ++ TCP_SYN_RECV, ++ TCP_FIN_WAIT1, ++ TCP_FIN_WAIT2, ++ TCP_TIME_WAIT, ++ TCP_CLOSE, ++ TCP_CLOSE_WAIT, ++ TCP_LAST_ACK, ++ TCP_LISTEN, ++ TCP_CLOSING /* now a valid state */ ++}; ++ ++# define TCPOPT_EOL 0 ++# define TCPOPT_NOP 1 ++# define TCPOPT_MAXSEG 2 ++# define TCPOLEN_MAXSEG 4 ++# define TCPOPT_WINDOW 3 ++# define TCPOLEN_WINDOW 3 ++# define TCPOPT_SACK_PERMITTED 4 /* Experimental */ ++# define TCPOLEN_SACK_PERMITTED 2 ++# define TCPOPT_SACK 5 /* Experimental */ ++# define TCPOPT_TIMESTAMP 8 ++# define TCPOLEN_TIMESTAMP 10 ++# define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */ ++# define TCPOPT_TSTAMP_HDR \ ++ (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP) ++#define TCPOPT_CC 11 /* CC options: RFC-1644 */ ++#define TCPOPT_CCNEW 12 ++#define TCPOPT_CCECHO 13 ++#define TCPOLEN_CC 6 ++#define TCPOLEN_CC_APPA (TCPOLEN_CC+2) ++#define TCPOPT_CC_HDR(ccopt) \ ++ (TCPOPT_NOP<<24|TCPOPT_NOP<<16|(ccopt)<<8|TCPOLEN_CC) ++ ++/* ++ * Default maximum segment size for TCP. ++ * With an IP MSS of 576, this is 536, ++ * but 512 is probably more convenient. ++ * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)). ++ */ ++# define TCP_MSS 512 ++ ++/* ++ * Default maximum segment size for TCP6. ++ * With an IP MSS of 1280, this is 1220, ++ * but 1024 is probably more convenient. ++ * This should be defined as MIN(1024, IP6_MSS - sizeof (struct tcpip6hdr)). ++ */ ++# define TCP6_MSS 1024 ++ ++# define TCP_MAXWIN 65535 /* largest value for (unscaled) window */ ++# define TTCP_CLIENT_SND_WND 4096 /* default send window for T/TCP client */ ++ ++# define TCP_MAX_WINSHIFT 14 /* maximum window shift */ ++ ++#define TCP_MAXBURST 4 /* maximum segments in a burst */ ++ ++#define TCP_MAXHLEN (0xf<<2) /* max length of header in bytes */ ++#define TCP_MAXOLEN (TCP_MAXHLEN - sizeof (struct tcphdr)) ++ /* max space left for options */ ++ ++# define SOL_TCP 6 /* TCP level */ ++ ++ ++# define TCPI_OPT_TIMESTAMPS 1 ++# define TCPI_OPT_SACK 2 ++# define TCPI_OPT_WSCALE 4 ++# define TCPI_OPT_ECN 8 ++ ++/* Values for tcpi_state. */ ++enum tcp_ca_state ++{ ++ TCP_CA_Open = 0, ++ TCP_CA_Disorder = 1, ++ TCP_CA_CWR = 2, ++ TCP_CA_Recovery = 3, ++ TCP_CA_Loss = 4 ++}; ++ ++struct tcp_info ++{ ++ u_int8_t tcpi_state; ++ u_int8_t tcpi_ca_state; ++ u_int8_t tcpi_retransmits; ++ u_int8_t tcpi_probes; ++ u_int8_t tcpi_backoff; ++ u_int8_t tcpi_options; ++ u_int8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; ++ ++ u_int32_t tcpi_rto; ++ u_int32_t tcpi_ato; ++ u_int32_t tcpi_snd_mss; ++ u_int32_t tcpi_rcv_mss; ++ ++ u_int32_t tcpi_unacked; ++ u_int32_t tcpi_sacked; ++ u_int32_t tcpi_lost; ++ u_int32_t tcpi_retrans; ++ u_int32_t tcpi_fackets; ++ ++ /* Times. */ ++ u_int32_t tcpi_last_data_sent; ++ u_int32_t tcpi_last_ack_sent; /* Not remembered, sorry. */ ++ u_int32_t tcpi_last_data_recv; ++ u_int32_t tcpi_last_ack_recv; ++ ++ /* Metrics. */ ++ u_int32_t tcpi_pmtu; ++ u_int32_t tcpi_rcv_ssthresh; ++ u_int32_t tcpi_rtt; ++ u_int32_t tcpi_rttvar; ++ u_int32_t tcpi_snd_ssthresh; ++ u_int32_t tcpi_snd_cwnd; ++ u_int32_t tcpi_advmss; ++ u_int32_t tcpi_reordering; ++}; ++ ++#endif /* Misc. */ ++ ++#endif /* netinet/tcp.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/nfs/nfs.h sysdeps/unix/bsd/bsd4.4/kfreebsd/nfs/nfs.h +--- null/unix/bsd/bsd4.4/kfreebsd/nfs/nfs.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/nfs/nfs.h 2006-05-02 21:24:22.000000000 +0200 +@@ -0,0 +1,3 @@ ++#include ++#include ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/not-cancel.h sysdeps/unix/bsd/bsd4.4/kfreebsd/not-cancel.h +--- null/unix/bsd/bsd4.4/kfreebsd/not-cancel.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/not-cancel.h 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,53 @@ ++/* Uncancelable versions of cancelable interfaces. Linux version. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , 2003. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* Uncancelable open. */ ++#define open_not_cancel(name, flags, mode) \ ++ INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode)) ++#define open_not_cancel_2(name, flags) \ ++ INLINE_SYSCALL (open, 2, (const char *) (name), (flags)) ++ ++/* Uncancelable close. */ ++#define close_not_cancel(fd) \ ++ INLINE_SYSCALL (close, 1, fd) ++#define close_not_cancel_no_status(fd) \ ++ INLINE_SYSCALL (close, 1, fd) ++ ++/* Uncancelable read. */ ++#define read_not_cancel(fd, buf, n) \ ++ INLINE_SYSCALL (read, 3, (fd), (buf), (n)) ++ ++/* Uncancelable write. */ ++#define write_not_cancel(fd, buf, n) \ ++ INLINE_SYSCALL (write, 3, (fd), (buf), (n)) ++ ++/* Uncancelable writev. */ ++#define writev_not_cancel_no_status(fd, iov, n) \ ++ INLINE_SYSCALL (writev, 3, (fd), (iov), (n)) ++ ++/* Uncancelable fcntl. */ ++#define fcntl_not_cancel(fd, cmd, val) \ ++ __fcntl_nocancel (fd, cmd, val) ++ ++/* Uncancelable waitpid. */ ++# define waitpid_not_cancel(pid, stat_loc, options) \ ++ INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/ntp_gettime.c sysdeps/unix/bsd/bsd4.4/kfreebsd/ntp_gettime.c +--- null/unix/bsd/bsd4.4/kfreebsd/ntp_gettime.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/ntp_gettime.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,62 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#ifndef ntptimeval ++#define ntptimeval ntptimeval4 ++#endif ++ ++int ++ntp_gettime (struct ntptimeval *ntv) ++{ ++ /* Fetch sysctl value of "kern.ntp_pll.gettime". */ ++ /* The 'struct ntptimeval' has grown in size. */ ++ union ++ { ++ struct ntptimeval3 tv3; ++ struct ntptimeval4 tv4; ++ } tv; ++ size_t size = sizeof (tv); ++ int request[2] = { CTL_KERN, KERN_NTP_PLL }; ++ ++ if (__sysctl (request, 2, &tv, &size, NULL, 0) >= 0) ++ { ++ if (size == sizeof (struct ntptimeval3)) ++ { ++ if (ntv) ++ { ++ ntv->time = tv.tv3.time; ++ ntv->maxerror = tv.tv3.maxerror; ++ ntv->esterror = tv.tv3.esterror; ++ ntv->tai = 0; ++ ntv->time_state = tv.tv3.time_state; ++ } ++ return tv.tv3.time_state; ++ } ++ if (size == sizeof (struct ntptimeval4)) ++ { ++ if (ntv) ++ *ntv = tv.tv4; ++ return tv.tv4.time_state; ++ } ++ } ++ return TIME_ERROR; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/open64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/open64.c +--- null/unix/bsd/bsd4.4/kfreebsd/open64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/open64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,2 @@ ++/* 'open64' is the same as 'open', because __off64_t == __off_t and ++ O_LARGEFILE == 0. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/open.c sysdeps/unix/bsd/bsd4.4/kfreebsd/open.c +--- null/unix/bsd/bsd4.4/kfreebsd/open.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/open.c 2006-03-18 17:31:11.000000000 +0100 +@@ -0,0 +1,87 @@ ++/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int futimes (int fd, const struct timeval tvp[2]); ++ ++int ++__libc_open (const char *file, int oflag, ...) ++{ ++ int mode = 0; ++ int fd; ++ ++ if (oflag & O_CREAT) ++ { ++ va_list arg; ++ va_start (arg, oflag); ++ mode = va_arg (arg, int); ++ va_end (arg); ++ } ++ ++ if (SINGLE_THREAD_P) ++ { ++ fd = INLINE_SYSCALL (open, 3, file, oflag, mode); ++ } ++ else ++ { ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ fd = INLINE_SYSCALL (open, 3, file, oflag, mode); ++ LIBC_CANCEL_RESET (oldtype); ++ } ++ ++ if (fd >= 0 && (oflag & O_TRUNC)) ++ { ++ /* Set the modification time. The kernel ought to do this. */ ++ int saved_errno = errno; ++ struct timeval tv[2]; ++ ++ if (__gettimeofday (&tv[1], NULL) >= 0) ++ { ++ struct stat statbuf; ++ ++ if (__fxstat (_STAT_VER, fd, &statbuf) >= 0) ++ { ++ tv[0].tv_sec = statbuf.st_atime; ++ tv[0].tv_usec = 0; ++ ++ futimes (fd, tv); ++ } ++ } ++ __set_errno (saved_errno); ++ } ++ ++ return fd; ++} ++libc_hidden_def (__libc_open) ++ ++weak_alias (__libc_open, __open) ++libc_hidden_weak (__open) ++ ++weak_alias (__libc_open, open) ++ ++strong_alias (__libc_open, __libc_open64) ++weak_alias (__libc_open64, __open64) ++weak_alias (__libc_open64, open64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/paths.h sysdeps/unix/bsd/bsd4.4/kfreebsd/paths.h +--- null/unix/bsd/bsd4.4/kfreebsd/paths.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/paths.h 2006-02-24 10:16:21.000000000 +0100 +@@ -0,0 +1,74 @@ ++/* ++ * Copyright (c) 1989, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)paths.h 8.1 (Berkeley) 6/2/93 ++ */ ++ ++#ifndef _PATHS_H_ ++#define _PATHS_H_ ++ ++/* Default search path. */ ++#define _PATH_DEFPATH "/usr/bin:/bin" ++/* All standard utilities path. */ ++#define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin" ++ ++#define _PATH_BSHELL "/bin/sh" ++#define _PATH_CONSOLE "/dev/console" ++#define _PATH_CSHELL "/bin/csh" ++#define _PATH_DEVDB "/var/run/dev.db" ++#define _PATH_DEVNULL "/dev/null" ++#define _PATH_DRUM "/dev/drum" ++#define _PATH_KLOG "/dev/klog" ++#define _PATH_KMEM "/dev/kmem" ++#define _PATH_LASTLOG "/var/log/lastlog" ++/* FIFOs are not permitted in /dev, so we use /var/run/log instead of /dev/log */ ++#define _PATH_MAILDIR "/var/mail" ++#define _PATH_MAN "/usr/share/man" ++#define _PATH_MEM "/dev/mem" ++#define _PATH_MNTTAB "/etc/fstab" ++#define _PATH_MOUNTED "/etc/mtab" ++#define _PATH_NOLOGIN "/etc/nologin" ++#define _PATH_PRESERVE "/var/preserve" ++#define _PATH_RWHODIR "/var/rwho" ++#define _PATH_SENDMAIL "/usr/sbin/sendmail" ++#define _PATH_SHADOW "/etc/shadow" ++#define _PATH_SHELLS "/etc/shells" ++#define _PATH_TTY "/dev/tty" ++#define _PATH_UNIX "/kernel" ++#define _PATH_UTMP "/var/run/utmp" ++#define _PATH_VI "/usr/bin/vi" ++#define _PATH_WTMP "/var/log/wtmp" ++ ++/* Provide trailing slash, since mostly used for building pathnames. */ ++#define _PATH_DEV "/dev/" ++#define _PATH_TMP "/tmp/" ++#define _PATH_VARDB "/var/db/" ++#define _PATH_VARRUN "/var/run/" ++#define _PATH_VARTMP "/var/tmp/" ++ ++#endif /* !_PATHS_H_ */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/pread64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/pread64.c +--- null/unix/bsd/bsd4.4/kfreebsd/pread64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/pread64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1 @@ ++/* 'pread64' is the same as 'pread', because __off64_t == __off_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/pread.c sysdeps/unix/bsd/bsd4.4/kfreebsd/pread.c +--- null/unix/bsd/bsd4.4/kfreebsd/pread.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/pread.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,49 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++/* The real system call has a word of padding before the 64-bit off_t ++ argument. */ ++extern ssize_t __syscall_pread (int __fd, void *__buf, size_t __nbytes, ++ int __unused1, __off_t __offset) __THROW; ++ ++ssize_t ++__libc_pread (int fd, void *buf, size_t nbytes, __off_t offset) ++{ ++ /* We pass 5 arguments in 6 words. */ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (pread, 5, fd, buf, nbytes, 0, offset); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ssize_t result = INLINE_SYSCALL (pread, 5, fd, buf, nbytes, 0, offset); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++} ++ ++strong_alias (__libc_pread, __pread) ++weak_alias (__pread, pread) ++ ++/* 'pread64' is the same as 'pread', because __off64_t == __off_t. */ ++strong_alias (__libc_pread, __libc_pread64) ++weak_alias (__libc_pread64, __pread64) ++weak_alias (__libc_pread64, pread64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/prof-freq.c sysdeps/unix/bsd/bsd4.4/kfreebsd/prof-freq.c +--- null/unix/bsd/bsd4.4/kfreebsd/prof-freq.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/prof-freq.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,47 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++struct clockinfo ++{ ++ int hz; /* Clock frequency. */ ++ int tick; /* Microseconds per hz tick, = 1000000 / hz. */ ++ int tickadj; /* Clock skew rate for adjtime(). */ ++ int stathz; /* Statistics clock frequency. */ ++ int profhz; /* Profiling clock frequency. */ ++}; ++ ++int ++__profile_frequency (void) ++{ ++ /* Fetch the "kern.clockrate" sysctl value. */ ++ int request[2] = { CTL_KERN, KERN_CLOCKRATE }; ++ struct clockinfo result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ /* Dummy result. */ ++ return 1; ++ ++ /* Yes, hz, not profhz. On i386, the value is 100, not 1024. */ ++ return result.hz; ++} ++libc_hidden_def (__profile_frequency) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/ptrace.c sysdeps/unix/bsd/bsd4.4/kfreebsd/ptrace.c +--- null/unix/bsd/bsd4.4/kfreebsd/ptrace.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/ptrace.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,68 @@ ++/* Copyright (C) 1995-1998, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++extern int __syscall_ptrace (enum __ptrace_request request, pid_t pid, ++ void *addr, void *data); ++ ++int ++ptrace (enum __ptrace_request request, ...) ++{ ++ int res, ret; ++ va_list ap; ++ pid_t pid; ++ void *addr, *data; ++ ++ /* Usually 4 arguments are given, except when request == PTRACE_TRACEME. ++ But it doesn't harm to peek at the stack in this case as well. */ ++ va_start (ap, request); ++ pid = va_arg (ap, pid_t); ++ addr = va_arg (ap, void *); ++ data = va_arg (ap, void *); ++ va_end (ap); ++ ++ switch (request) ++ { ++ case PTRACE_PEEKTEXT: ++ case PTRACE_PEEKDATA: ++#ifdef PTRACE_PEEKUSER ++ case PTRACE_PEEKUSER: ++#endif ++ res = INLINE_SYSCALL (ptrace, 4, request, pid, addr, &ret); ++ if (res >= 0) ++ { ++ /* ret can be -1 even for successful operation. */ ++ __set_errno (0); ++ return ret; ++ } ++ break; ++ ++ default: ++ res = INLINE_SYSCALL (ptrace, 4, request, pid, addr, data); ++ break; ++ } ++ ++ return res; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/ptsname.c sysdeps/unix/bsd/bsd4.4/kfreebsd/ptsname.c +--- null/unix/bsd/bsd4.4/kfreebsd/ptsname.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/ptsname.c 2006-02-23 19:25:25.000000000 +0100 +@@ -0,0 +1,112 @@ ++/* Copyright (C) 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++/* Static buffer for `ptsname'. */ ++static char buffer[sizeof (_PATH_TTY) + 2]; ++ ++ ++/* Return the pathname of the pseudo terminal slave associated with ++ the master FD is open on, or NULL on errors. ++ The returned storage is good until the next call to this function. */ ++char * ++ptsname (int fd) ++{ ++ return __ptsname_r (fd, buffer, sizeof (buffer)) != 0 ? NULL : buffer; ++} ++ ++/* The are declared in getpt.c. */ ++extern const char __libc_ptyname1[] attribute_hidden; ++extern const char __libc_ptyname2[] attribute_hidden; ++ ++ ++/* Store at most BUFLEN characters of the pathname of the slave pseudo ++ terminal associated with the master FD is open on in BUF. ++ Return 0 on success, otherwise an error number. */ ++int ++__ptsname_r (int fd, char *buf, size_t buflen) ++{ ++ int saved_errno = errno; ++ struct stat64 st; ++ unsigned int ptyno; ++ char *p; ++ ++ if (buf == NULL) ++ { ++ __set_errno (EINVAL); ++ return EINVAL; ++ } ++ ++ /* Don't call isatty (fd) - it usually fails with errno = EAGAIN. */ ++ ++ if (__fxstat64 (_STAT_VER, fd, &st) < 0) ++ return errno; ++ ++ /* Check if FD really is a master pseudo terminal. */ ++ if (!(S_ISCHR (st.st_mode))) ++ { ++ __set_errno (ENOTTY); ++ return ENOTTY; ++ } ++ ++ ptyno = (unsigned int) minor (st.st_rdev); ++ if (ptyno / 32 >= strlen (__libc_ptyname1)) ++ { ++ __set_errno (ENOTTY); ++ return ENOTTY; ++ } ++ ++ if (buflen < sizeof (_PATH_TTY) + 2) ++ { ++ __set_errno (ERANGE); ++ return ERANGE; ++ } ++ ++ /* Construct the slave's pathname. */ ++ /* instead of strlen(_PATH_DEV) we use (sizeof (_PATH_DEV) - 1) */ ++ p = __mempcpy (buf, _PATH_DEV, sizeof (_PATH_DEV) - 1); ++ buflen -= (sizeof (_PATH_DEV) - 1); ++ if(__sysctlbyname("kern.devname", p, &buflen, &st.st_rdev, sizeof (st.st_rdev)) < 0) ++ return errno; ++ p[0] = 't'; ++ ++ if (__xstat64 (_STAT_VER, buf, &st) < 0) ++ return errno; ++ ++ /* Check if the pathname we're about to return might be ++ slave pseudo terminal of the given master pseudo terminal. */ ++ if (!(S_ISCHR (st.st_mode))) ++ { ++ /* This really is a configuration problem. */ ++ __set_errno (ENOTTY); ++ return ENOTTY; ++ } ++ ++ __set_errno (saved_errno); ++ return 0; ++} ++weak_alias (__ptsname_r, ptsname_r) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/pwrite64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/pwrite64.c +--- null/unix/bsd/bsd4.4/kfreebsd/pwrite64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/pwrite64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1 @@ ++/* 'pwrite64' is the same as 'pwrite', because __off64_t == __off_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/pwrite.c sysdeps/unix/bsd/bsd4.4/kfreebsd/pwrite.c +--- null/unix/bsd/bsd4.4/kfreebsd/pwrite.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/pwrite.c 2006-01-10 21:14:32.000000000 +0100 +@@ -0,0 +1,49 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++/* The real system call has a word of padding before the 64-bit off_t ++ argument. */ ++extern ssize_t __syscall_pwrite (int __fd, const void *__buf, size_t __nbytes, ++ int __unused1, __off_t __offset) __THROW; ++ ++ssize_t ++__libc_pwrite (int fd, const void *buf, size_t nbytes, __off_t offset) ++{ ++ /* We pass 5 arguments in 6 words. */ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (pwrite, 5, fd, buf, nbytes, 0, offset); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ssize_t result = INLINE_SYSCALL (pwrite, 5, fd, buf, nbytes, 0, offset); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++} ++ ++strong_alias (__libc_pwrite, __pwrite) ++weak_alias (__pwrite, pwrite) ++ ++/* 'pwrite64' is the same as 'pwrite', because __off64_t == __off_t. */ ++strong_alias (__libc_pwrite, __libc_pwrite64) ++weak_alias (__libc_pwrite64, __pwrite64) ++weak_alias (__libc_pwrite64, pwrite64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/readdir64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir64.c +--- null/unix/bsd/bsd4.4/kfreebsd/readdir64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,2 @@ ++/* 'readdir64' is the same as 'readdir', because ++ struct dirent64 == struct dirent. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/readdir64_r.c sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir64_r.c +--- null/unix/bsd/bsd4.4/kfreebsd/readdir64_r.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir64_r.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,2 @@ ++/* 'readdir64_r' is the same as 'readdir_r', because ++ struct dirent64 == struct dirent. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/readdir.c sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir.c +--- null/unix/bsd/bsd4.4/kfreebsd/readdir.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,11 @@ ++/* 'readdir64' is the same as 'readdir', because ++ struct dirent64 == struct dirent. */ ++ ++#define readdir64 __no_readdir64_decl ++#define __readdir64 __no___readdir64_decl ++#include ++#undef __readdir64 ++#undef readdir64 ++ ++strong_alias (__readdir, __readdir64) ++weak_alias (__readdir64, readdir64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/readdir_r.c sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir_r.c +--- null/unix/bsd/bsd4.4/kfreebsd/readdir_r.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir_r.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,11 @@ ++/* 'readdir64_r' is the same as 'readdir_r', because ++ struct dirent64 == struct dirent. */ ++ ++#define readdir64_r __no_readdir64_r_decl ++#define __readdir64_r __no___readdir64_r_decl ++#include ++#undef __readdir64_r ++#undef readdir64_r ++ ++strong_alias (__readdir_r, __readdir64_r) ++weak_alias (__readdir64_r, readdir64_r) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/readv.c sysdeps/unix/bsd/bsd4.4/kfreebsd/readv.c +--- null/unix/bsd/bsd4.4/kfreebsd/readv.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/readv.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,56 @@ ++/* readv for FreeBSD. ++ Copyright (C) 1997-1998, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++extern ssize_t __syscall_readv (int, __const struct iovec *__unbounded, int); ++ ++static ssize_t __atomic_readv_replacement (int, __const struct iovec *, ++ int) internal_function; ++ ++ssize_t ++__libc_readv (int fd, const struct iovec *vector, int count) ++{ ++ if (count <= UIO_MAXIOV) ++ { ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), count); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ssize_t result = INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), count); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++ ++ } ++ else ++ return __atomic_readv_replacement (fd, vector, count); ++} ++strong_alias (__libc_readv, __readv) ++weak_alias (__libc_readv, readv) ++ ++#define __libc_readv static internal_function __atomic_readv_replacement ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/recv.c sysdeps/unix/bsd/bsd4.4/kfreebsd/recv.c +--- null/unix/bsd/bsd4.4/kfreebsd/recv.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/recv.c 2006-01-23 18:56:18.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* The real syscall's name. See sysdeps/unix/inet/syscalls.list. */ ++#define __syscall_recvfrom __libc_recvfrom ++ ++/* Read N bytes into BUF from socket FD. ++ Return the number of bytes read or -1 for error. */ ++ ++ssize_t ++__libc_recv (int fd, void *buf, size_t n, int flags) ++{ ++ return INLINE_SYSCALL (recvfrom, 6, fd, buf, n, flags, NULL, NULL); ++} ++ ++weak_alias (__libc_recv, __recv) ++weak_alias (__libc_recv, recv) ++ ++LIBC_CANCEL_HANDLED (); /* in __libc_recvfrom */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sa_len.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sa_len.c +--- null/unix/bsd/bsd4.4/kfreebsd/sa_len.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sa_len.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,44 @@ ++/* Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include ++#include ++#include ++#include ++ ++int ++__libc_sa_len (sa_family_t af) ++{ ++ switch (af) ++ { ++ case AF_APPLETALK: ++ return sizeof (struct sockaddr_at); ++ case AF_INET: ++ return sizeof (struct sockaddr_in); ++ case AF_INET6: ++ return sizeof (struct sockaddr_in6); ++ case AF_IPX: ++ return sizeof (struct sockaddr_ipx); ++ case AF_LOCAL: ++ return sizeof (struct sockaddr_un); ++ } ++ return 0; ++} ++INTDEF(__libc_sa_len) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sched_getp.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sched_getp.c +--- null/unix/bsd/bsd4.4/kfreebsd/sched_getp.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sched_getp.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,45 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++/* Retrieve scheduling parameters for a particular process. */ ++int ++__sched_getparam (pid_t pid, struct sched_param *param) ++{ ++ /* kFreeBSD return bogus values for SYS_sched_param (see PR kern/76485); ++ fortunately the same information can be retrieved through the rtprio() ++ system call. */ ++ struct rtprio rtp; ++ ++ if (__rtprio (RTP_LOOKUP, pid, &rtp) >= 0) ++ { ++ if (RTP_PRIO_IS_REALTIME (rtp.type)) ++ param->sched_priority = RTP_PRIO_MAX - rtp.prio; ++ else ++ param->sched_priority = 0; ++ } ++ ++ return 0; ++} ++ ++weak_alias (__sched_getparam, sched_getparam) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/seekdir.c sysdeps/unix/bsd/bsd4.4/kfreebsd/seekdir.c +--- null/unix/bsd/bsd4.4/kfreebsd/seekdir.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/seekdir.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,2 @@ ++/* Avoid , which doesn't pass the testsuite. */ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/semctl.c sysdeps/unix/bsd/bsd4.4/kfreebsd/semctl.c +--- null/unix/bsd/bsd4.4/kfreebsd/semctl.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/semctl.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,86 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Robert Millan ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/*- ++ * Copyright (c) 2002 Doug Rabson ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ */ ++ ++#include ++#include ++#include /* va_list */ ++#include /* NULL */ ++#include ++ ++/* union semun from FreeBSD */ ++/* ++ * semctl's arg parameter structure ++ */ ++union semun ++{ ++ int val; /* value for SETVAL */ ++ struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */ ++ unsigned short *array; /* array for GETALL & SETALL */ ++}; ++ ++ ++int ++semctl (int semid, int semnum, int cmd, ...) ++{ ++ va_list ap; ++ union semun semun; ++ union semun *semun_ptr; ++ ++ va_start (ap, cmd); ++ if (cmd == IPC_SET || cmd == IPC_STAT || cmd == GETALL ++ || cmd == SETVAL || cmd == SETALL) ++ { ++ semun = va_arg (ap, union semun); ++ semun_ptr = &semun; ++ } ++ else ++ { ++ semun_ptr = NULL; ++ } ++ va_end (ap); ++ ++ return syscall (SYS_semctl, semid, semnum, cmd, semun_ptr); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/send.c sysdeps/unix/bsd/bsd4.4/kfreebsd/send.c +--- null/unix/bsd/bsd4.4/kfreebsd/send.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/send.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,46 @@ ++/* Copyright (C) 2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern ssize_t __syscall_sendto (int fd, __const __ptr_t buf, ++ size_t n, int flags, ++ __CONST_SOCKADDR_ARG addr, ++ socklen_t addrlen); ++ ++/* Send N bytes of BUF to socket FD. ++ Return the number of bytes sent or -1. */ ++ ++ssize_t ++__libc_send (int fd, const void *buf, size_t n, int flags) ++{ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (sendto, 6, fd, buf, n, flags, NULL, 0); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ int result = INLINE_SYSCALL (sendto, 6, fd, buf, n, flags, NULL, 0); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++} ++ ++weak_alias (__libc_send, __send) ++libc_hidden_weak (__send) ++ ++weak_alias (__send, send) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sendto.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sendto.c +--- null/unix/bsd/bsd4.4/kfreebsd/sendto.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sendto.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,69 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++/* According to POSIX.1-2004 the len argument specifies the length of ++ the sockaddr structure pointed to by the addrarg argument. However ++ the FreeBSD kernel waits the actual length of the address stored ++ there. The code below emulate this behaviour. */ ++ ++extern int __libc_sa_len (sa_family_t __af); ++extern int __libc_sa_len_internal (sa_family_t __af); ++ ++extern ssize_t __syscall_sendto (int fd, __const void * buf, ++ size_t n, int flags, ++ __CONST_SOCKADDR_ARG addr, ++ socklen_t addrlen); ++ ++/* Send N bytes of BUF on socket FD to peer at address ADDR (which is ++ * ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */ ++ ++ ++ssize_t ++__libc_sendto (int fd, __const void * buf, size_t n, int flags, ++ __CONST_SOCKADDR_ARG addr, socklen_t addrlen) ++{ ++ socklen_t new_addrlen; ++ ++#ifndef NOT_IN_libc ++ new_addrlen = INTUSE(__libc_sa_len) ((addr.__sockaddr__)->sa_family); ++#else ++ new_addrlen = __libc_sa_len ((addr.__sockaddr__)->sa_family); ++#endif ++ ++ /* Only allow a smaller size, otherwise it could lead to ++ stack corruption */ ++ if (new_addrlen < addrlen) ++ addrlen = new_addrlen; ++ ++ /* We pass 6 arguments. */ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (sendto, 6, fd, buf, n, flags, addr, addrlen); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ int result = INLINE_SYSCALL (sendto, 6, fd, buf, n, flags, addr, addrlen); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++} ++ ++weak_alias (__libc_sendto, __sendto) ++weak_alias (__libc_sendto, sendto) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sethostid.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sethostid.c +--- null/unix/bsd/bsd4.4/kfreebsd/sethostid.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sethostid.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Set the current machine's Internet number to ID. ++ This call is restricted to the super-user. */ ++ ++int ++sethostid (long int id) ++{ ++ /* Set the "kern.hostid" sysctl value. */ ++ int value = id; ++ int request[2] = { CTL_KERN, KERN_HOSTID }; ++ ++ if (__sysctl (request, 2, NULL, NULL, &value, sizeof (value)) < 0) ++ return -1; ++ ++ return 0; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sethostname.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sethostname.c +--- null/unix/bsd/bsd4.4/kfreebsd/sethostname.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sethostname.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Set the name of the current host to NAME, which is LEN bytes long ++ (excluding a possible trailing NUL byte). This call is restricted to ++ the super-user. */ ++ ++int ++sethostname (const char *name, size_t len) ++{ ++ /* Set the "kern.hostname" sysctl value. */ ++ int request[2] = { CTL_KERN, KERN_HOSTNAME }; ++ ++ if (__sysctl (request, 2, NULL, NULL, (void *) name, len) < 0) ++ return -1; ++ ++ return 0; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/setlogin.c sysdeps/unix/bsd/bsd4.4/kfreebsd/setlogin.c +--- null/unix/bsd/bsd4.4/kfreebsd/setlogin.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/setlogin.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,34 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Defined in getlogin_r.c. */ ++extern char *__getlogin_cache; ++ ++extern int __syscall_setlogin (const char *__name); ++ ++int ++setlogin (const char *name) ++{ ++ /* FIXME: Not multithread-safe. */ ++ __getlogin_cache = NULL; ++ return INLINE_SYSCALL (setlogin, 1, name); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/setrlimit64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/setrlimit64.c +--- null/unix/bsd/bsd4.4/kfreebsd/setrlimit64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/setrlimit64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1 @@ ++/* 'setrlimit64' is the same as 'setrlimit', because __rlim64_t == __rlim_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sigaction.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sigaction.c +--- null/unix/bsd/bsd4.4/kfreebsd/sigaction.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sigaction.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,46 @@ ++/* Copyright (C) 1991,1995,1996,1997,2002,2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++extern int __syscall_sigaction (int __sig, const struct sigaction *__act, struct sigaction *__oact) __THROW; ++ ++int ++__libc_sigaction (sig, act, oact) ++ int sig; ++ const struct sigaction *act; ++ struct sigaction *oact; ++{ ++ if (sig <= 0 || sig >= NSIG) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ return INLINE_SYSCALL (sigaction, 3, sig, act, oact); ++} ++libc_hidden_def (__libc_sigaction) ++ ++#ifndef LIBC_SIGACTION ++weak_alias (__libc_sigaction, __sigaction) ++libc_hidden_weak (__sigaction) ++weak_alias (__libc_sigaction, sigaction) ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sigreturn.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sigreturn.c +--- null/unix/bsd/bsd4.4/kfreebsd/sigreturn.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sigreturn.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,3 @@ ++/* The sigreturn syscall cannot be explicitly called on FreeBSD, only ++ implicitly by returning from a signal handler. */ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sigset-cvt-mask.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sigset-cvt-mask.h +--- null/unix/bsd/bsd4.4/kfreebsd/sigset-cvt-mask.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sigset-cvt-mask.h 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,36 @@ ++/* Convert between lowlevel sigmask and libc representation of sigset_t. ++ FreeBSD version. ++ Copyright (C) 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++static inline int __attribute__ ((unused)) ++sigset_set_old_mask (sigset_t *set, int mask) ++{ ++ set->__sigbits[0] = (unsigned int) mask; ++ set->__sigbits[1] = 0; ++ set->__sigbits[2] = 0; ++ set->__sigbits[3] = 0; ++ ++ return 0; ++} ++ ++static inline int __attribute__ ((unused)) ++sigset_get_old_mask (const sigset_t *set) ++{ ++ return (unsigned int) set->__sigbits[0]; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sigstack.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sigstack.c +--- null/unix/bsd/bsd4.4/kfreebsd/sigstack.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sigstack.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,3 @@ ++/* We can reuse the Linux implementation with some tricks. */ ++#define __NR_sigaltstack 1 ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sleep.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sleep.c +--- null/unix/bsd/bsd4.4/kfreebsd/sleep.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sleep.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,44 @@ ++/* Implementation of the POSIX sleep function using nanosleep. ++ Copyright (C) 1996-1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* The default implementation of sleep() in sysdeps/posix/sleep.c, based on ++ SIGALRM, does not mix well with threads. Therefore we use the nanosleep() ++ system call. */ ++unsigned int ++__sleep (unsigned int seconds) ++{ ++ struct timespec ts = { tv_sec: seconds, tv_nsec: 0 }; ++ int ret; ++ ++ /* This is not necessary but some buggy programs depend on this. */ ++ if (seconds == 0) ++ return 0; ++ ++ ret = __nanosleep (&ts, &ts); ++ ++ if (ret == 0) ++ return 0; ++ ++ /* Round remaining time. */ ++ return (unsigned int) ts.tv_sec + (ts.tv_nsec >= 500000000L); ++} ++ ++weak_alias (__sleep, sleep) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/stat16conv.c sysdeps/unix/bsd/bsd4.4/kfreebsd/stat16conv.c +--- null/unix/bsd/bsd4.4/kfreebsd/stat16conv.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/stat16conv.c 2006-01-27 05:39:47.000000000 +0100 +@@ -0,0 +1,83 @@ ++/* Convert between different 'struct stat' formats. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_fhstat (const fhandle_t *fhp, struct stat16 *buf); ++extern int __syscall_fstat (int, struct stat16 *__unbounded); ++extern int __syscall_lstat (const char *__unbounded, struct stat16 *__unbounded); ++extern int __syscall_stat (const char *__unbounded, struct stat16 *__unbounded); ++ ++ ++/* Convert a 'struct stat16' to 'struct stat'. */ ++static inline void ++stat16_to_stat (const struct stat16 *p16, struct stat *q) ++{ ++ q->st_dev = p16->st_dev; ++ q->st_ino = p16->st_ino; ++ q->st_mode = p16->st_mode; ++ q->st_nlink = p16->st_nlink; ++ q->st_uid = p16->st_uid; ++ q->st_gid = p16->st_gid; ++ q->st_rdev = p16->st_rdev; ++ q->st_atime = p16->st_atime; ++ q->st_atimensec = p16->st_atimensec; ++ q->st_mtime = p16->st_mtime; ++ q->st_mtimensec = p16->st_mtimensec; ++ q->st_ctime = p16->st_ctime; ++ q->st_ctimensec = p16->st_ctimensec; ++ q->st_size = p16->st_size; ++ q->st_blocks = p16->st_blocks; ++ q->st_blksize = p16->st_blksize; ++ q->st_flags = p16->st_flags; ++ q->st_gen = p16->st_gen; ++#if 0 ++ memcpy (q->__unused1, p16->__unused2, sizeof (p16->__unused2)); ++#endif ++} ++ ++/* Convert a 'struct stat16' to 'struct stat64'. */ ++static inline void ++stat16_to_stat64 (const struct stat16 *p16, struct stat64 *q) ++{ ++ q->st_dev = p16->st_dev; ++ q->st_ino = p16->st_ino; ++ q->st_mode = p16->st_mode; ++ q->st_nlink = p16->st_nlink; ++ q->st_uid = p16->st_uid; ++ q->st_gid = p16->st_gid; ++ q->st_rdev = p16->st_rdev; ++ q->st_atime = p16->st_atime; ++ q->st_atimensec = p16->st_atimensec; ++ q->st_mtime = p16->st_mtime; ++ q->st_mtimensec = p16->st_mtimensec; ++ q->st_ctime = p16->st_ctime; ++ q->st_ctimensec = p16->st_ctimensec; ++ q->st_size = p16->st_size; ++ q->st_blocks = p16->st_blocks; ++ q->st_blksize = p16->st_blksize; ++ q->st_flags = p16->st_flags; ++ q->st_gen = p16->st_gen; ++#if 0 ++ memcpy (q->__unused1, p16->__unused2, sizeof (p16->__unused2)); ++#endif ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/statconv.c sysdeps/unix/bsd/bsd4.4/kfreebsd/statconv.c +--- null/unix/bsd/bsd4.4/kfreebsd/statconv.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/statconv.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,46 @@ ++/* Convert between different 'struct stat' formats. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* Convert a 'struct stat' to 'struct stat64'. */ ++static inline void ++stat_to_stat64 (const struct stat *p32, struct stat64 *p64) ++{ ++ p64->st_dev = p32->st_dev; ++ p64->st_ino = p32->st_ino; ++ p64->st_mode = p32->st_mode; ++ p64->st_nlink = p32->st_nlink; ++ p64->st_uid = p32->st_uid; ++ p64->st_gid = p32->st_gid; ++ p64->st_rdev = p32->st_rdev; ++ p64->st_atime = p32->st_atime; ++ p64->st_atimensec = p32->st_atimensec; ++ p64->st_mtime = p32->st_mtime; ++ p64->st_mtimensec = p32->st_mtimensec; ++ p64->st_ctime = p32->st_ctime; ++ p64->st_ctimensec = p32->st_ctimensec; ++ p64->st_size = p32->st_size; ++ p64->st_blocks = p32->st_blocks; ++ p64->st_blksize = p32->st_blksize; ++ p64->st_flags = p32->st_flags; ++ p64->st_gen = p32->st_gen; ++ memcpy (p64->__unused1, p32->__unused1, sizeof (p32->__unused1)); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/statfs64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/statfs64.c +--- null/unix/bsd/bsd4.4/kfreebsd/statfs64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/statfs64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,37 @@ ++/* Return information about the filesystem on which FILE resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FILE resides. */ ++int ++statfs64 (const char *file, struct statfs64 *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_statfs (file, &kbuf) < 0) ++ return -1; ++ ++ statfs5_to_statfs64 (&kbuf, buf); ++ ++ return 0; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/statfs.c sysdeps/unix/bsd/bsd4.4/kfreebsd/statfs.c +--- null/unix/bsd/bsd4.4/kfreebsd/statfs.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/statfs.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Return information about the filesystem on which FILE resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "statfsconv.c" ++ ++/* Return information about the filesystem on which FILE resides. */ ++int ++__statfs (const char *file, struct statfs *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_statfs (file, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statvfs'. */ ++ statfs5_to_statfs (&kbuf, buf); ++ ++ return 0; ++} ++libc_hidden_def (__statfs) ++weak_alias (__statfs, statfs) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/statfsconv.c sysdeps/unix/bsd/bsd4.4/kfreebsd/statfsconv.c +--- null/unix/bsd/bsd4.4/kfreebsd/statfsconv.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/statfsconv.c 2006-05-18 19:31:40.000000000 +0200 +@@ -0,0 +1,203 @@ ++/* Convert between different 'struct statfs' and 'struct statvfs' formats. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++/* ++ * filesystem statistics ++ */ ++ ++#define MFSNAMELEN 16 /* length of type name including null */ ++#define MNAMELEN 88 /* size of on/from name bufs */ ++ ++struct statfs_fbsd5 { ++ uint32_t f_version; /* structure version number */ ++ uint32_t f_type; /* type of filesystem */ ++ uint64_t f_flags; /* copy of mount exported flags */ ++ uint64_t f_bsize; /* filesystem fragment size */ ++ uint64_t f_iosize; /* optimal transfer block size */ ++ uint64_t f_blocks; /* total data blocks in filesystem */ ++ uint64_t f_bfree; /* free blocks in filesystem */ ++ int64_t f_bavail; /* free blocks avail to non-superuser */ ++ uint64_t f_files; /* total file nodes in filesystem */ ++ int64_t f_ffree; /* free nodes avail to non-superuser */ ++ uint64_t f_syncwrites; /* count of sync writes since mount */ ++ uint64_t f_asyncwrites; /* count of async writes since mount */ ++ uint64_t f_syncreads; /* count of sync reads since mount */ ++ uint64_t f_asyncreads; /* count of async reads since mount */ ++ uint64_t f_spare[10]; /* unused spare */ ++ uint32_t f_namemax; /* maximum filename length */ ++ __uid_t f_owner; /* user that mounted the filesystem */ ++ __fsid_t f_fsid; /* filesystem id */ ++ char f_charspare[80]; /* spare string space */ ++ char f_fstypename[MFSNAMELEN]; /* filesystem type name */ ++ char f_mntfromname[MNAMELEN]; /* mounted filesystem */ ++ char f_mntonname[MNAMELEN]; /* directory on which mounted */ ++}; ++ ++extern int __syscall_getfsstat(struct statfs_fbsd5 *buf, long bufsize, int flags); ++extern int __syscall_statfs(const char *path, struct statfs_fbsd5 *buf); ++extern int __syscall_fstatfs(int fd, struct statfs_fbsd5 *buf); ++extern int __syscall_fhstatfs(const struct fhandle *u_fhp, struct statfs_fbsd5 *buf); ++ ++ ++/* ++ * Convert a FreeBSD 5.x format statfs structure to an glibc format statfs structure. ++ */ ++ ++static inline void ++statfs5_to_statfs(const struct statfs_fbsd5 *pk, struct statfs *p32) ++{ ++ memset(p32, 0, sizeof(*p32)); ++ ++ p32->f_version = pk->f_version; ++ p32->f_bsize = MIN(pk->f_bsize, ULONG_MAX); ++ p32->f_iosize = MIN(pk->f_iosize, ULONG_MAX); ++ ++ p32->f_blocks = MIN(pk->f_blocks, ULONG_MAX); ++ p32->f_bfree = MIN(pk->f_bfree, ULONG_MAX); ++ p32->f_bavail = MIN(pk->f_bavail, ULONG_MAX); ++ p32->f_files = MIN(pk->f_files, ULONG_MAX); ++ p32->f_ffree = MIN(pk->f_ffree, ULONG_MAX); ++ ++ p32->f_fsid = pk->f_fsid; ++ p32->f_owner = pk->f_owner; ++ p32->f_type = pk->f_type; ++ p32->f_flags = pk->f_flags; ++ ++ p32->f_syncwrites = MIN(pk->f_syncwrites, ULONG_MAX); ++ p32->f_asyncwrites = MIN(pk->f_asyncwrites, ULONG_MAX); ++ p32->f_syncreads = MIN(pk->f_syncreads, ULONG_MAX); ++ p32->f_asyncreads = MIN(pk->f_asyncreads, ULONG_MAX); ++ ++ p32->f_namemax = MIN(pk->f_namemax, USHRT_MAX); ++ ++ memcpy(p32->f_fstypename, pk->f_fstypename, sizeof (p32->f_fstypename)); ++ memcpy(p32->f_mntonname, pk->f_mntonname, sizeof (p32->f_mntonname)); ++ memcpy(p32->f_mntfromname,pk->f_mntfromname,sizeof (p32->f_mntfromname)); ++} ++ ++ ++/* ++ * Convert a FreeBSD 5.x format statfs structure to an glibc format statfs64 structure. ++ */ ++ ++static inline void ++statfs5_to_statfs64(const struct statfs_fbsd5 *pk, struct statfs64 *p64) ++{ ++ memset(p64, 0, sizeof(*p64)); ++ ++ p64->f_version = pk->f_version; ++ p64->f_bsize = MIN(pk->f_bsize, ULONG_MAX); ++ p64->f_iosize = MIN(pk->f_iosize, ULONG_MAX); ++ ++ p64->f_blocks = pk->f_blocks; ++ p64->f_bfree = pk->f_bfree; ++ p64->f_bavail = pk->f_bavail; ++ p64->f_files = pk->f_files; ++ p64->f_ffree = pk->f_ffree; ++ ++ p64->f_fsid = pk->f_fsid; ++ p64->f_owner = pk->f_owner; ++ p64->f_type = pk->f_type; ++ p64->f_flags = pk->f_flags; ++ ++ p64->f_syncwrites = MIN(pk->f_syncwrites, ULONG_MAX); ++ p64->f_asyncwrites = MIN(pk->f_asyncwrites, ULONG_MAX); ++ p64->f_syncreads = MIN(pk->f_syncreads, ULONG_MAX); ++ p64->f_asyncreads = MIN(pk->f_asyncreads, ULONG_MAX); ++ ++ p64->f_namemax = MIN(pk->f_namemax, USHRT_MAX); ++ ++ memcpy(p64->f_fstypename, pk->f_fstypename, sizeof (p64->f_fstypename)); ++ memcpy(p64->f_mntonname, pk->f_mntonname, sizeof (p64->f_mntonname)); ++ memcpy(p64->f_mntfromname,pk->f_mntfromname,sizeof (p64->f_mntfromname)); ++} ++ ++ ++/* ++ * Convert a FreeBSD 5.x format statfs structure to an glibc format statvfs structure. ++ */ ++ ++static inline void ++statfs5_to_statvfs (const struct statfs_fbsd5 *pk, struct statvfs *p32) ++{ ++ /* FIXME: What is the difference between f_bsize and f_frsize ? */ ++ p32->f_bsize = MIN(pk->f_bsize, ULONG_MAX); ++ p32->f_frsize = MIN(pk->f_bsize, ULONG_MAX); ++ ++ p32->f_blocks = MIN(pk->f_blocks, ULONG_MAX); ++ p32->f_bfree = MIN(pk->f_bfree, ULONG_MAX); ++ p32->f_bavail = MIN(pk->f_bavail, ULONG_MAX); ++ p32->f_files = MIN(pk->f_files, ULONG_MAX); ++ p32->f_ffree = MIN(pk->f_ffree, ULONG_MAX); ++ p32->f_favail = MIN(pk->f_ffree, ULONG_MAX); /* Hmm. May be filesystem dependent. */ ++ ++ memcpy(&(p32->f_fsid), &(pk->f_fsid), sizeof(__fsid_t)); ++ ++ p32->f_flag = ++ (pk->f_flags & MNT_RDONLY ? ST_RDONLY : 0) ++ | (pk->f_flags & MNT_NOSUID ? ST_NOSUID : 0) ++ | (pk->f_flags & MNT_NODEV ? ST_NODEV : 0) ++ | (pk->f_flags & MNT_NOEXEC ? ST_NOEXEC : 0) ++ | (pk->f_flags & MNT_SYNCHRONOUS ? ST_SYNCHRONOUS : 0); ++ p32->f_namemax = pk->f_namemax; ++ ++ memset (p32->f_spare, '\0', sizeof (p32->f_spare)); ++} ++ ++ ++/* ++ * Convert a FreeBSD 5.x format statfs structure to an glibc format statvfs64 structure. ++ */ ++ ++static inline void ++statfs5_to_statvfs64 (const struct statfs_fbsd5 *pk, struct statvfs64 *p64) ++{ ++ /* FIXME: What is the difference between f_bsize and f_frsize ? */ ++ p64->f_bsize = MIN(pk->f_bsize, ULONG_MAX); ++ p64->f_frsize = MIN(pk->f_bsize, ULONG_MAX); ++ ++ p64->f_blocks = pk->f_blocks; ++ p64->f_bfree = pk->f_bfree; ++ p64->f_bavail = pk->f_bavail; ++ p64->f_files = pk->f_files; ++ p64->f_ffree = pk->f_ffree; ++ p64->f_favail = pk->f_ffree; /* Hmm. May be filesystem dependent. */ ++ ++ memcpy(&(p64->f_fsid), &(pk->f_fsid), sizeof(__fsid_t)); ++ ++ p64->f_flag = ++ (pk->f_flags & MNT_RDONLY ? ST_RDONLY : 0) ++ | (pk->f_flags & MNT_NOSUID ? ST_NOSUID : 0) ++ | (pk->f_flags & MNT_NODEV ? ST_NODEV : 0) ++ | (pk->f_flags & MNT_NOEXEC ? ST_NOEXEC : 0) ++ | (pk->f_flags & MNT_SYNCHRONOUS ? ST_SYNCHRONOUS : 0); ++ p64->f_namemax = pk->f_namemax; ++ ++ memset (p64->f_spare, '\0', sizeof (p64->f_spare)); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/statvfs64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/statvfs64.c +--- null/unix/bsd/bsd4.4/kfreebsd/statvfs64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/statvfs64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,41 @@ ++/* Return information about the filesystem on which FILE resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FILE resides. */ ++int ++__statvfs64 (const char *file, struct statvfs64 *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_statfs (file, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statvfs64'. */ ++ statfs5_to_statvfs64 (&kbuf, buf); ++ ++ return 0; ++} ++ ++weak_alias (__statvfs64, statvfs64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/statvfs.c sysdeps/unix/bsd/bsd4.4/kfreebsd/statvfs.c +--- null/unix/bsd/bsd4.4/kfreebsd/statvfs.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/statvfs.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Return information about the filesystem on which FILE resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FILE resides. */ ++int ++statvfs (const char *file, struct statvfs *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_statfs (file, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statvfs'. */ ++ statfs5_to_statvfs (&kbuf, buf); ++ ++ return 0; ++} ++libc_hidden_weak (statvfs) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/kd.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/kd.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/kd.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/kd.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,24 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_KD_H ++#define _SYS_KD_H 1 ++ ++#include ++ ++#endif /* sys/kd.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/ktrace.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ktrace.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/ktrace.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ktrace.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,184 @@ ++/* 'ktrace' system call debugger support interface. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_KTRACE_H ++#define _SYS_KTRACE_H 1 ++ ++#include ++ ++/* Define MAXCOMLEN. */ ++#include ++ ++/* Define register_t. */ ++#include ++ ++/* Define __sighandler_t, __sigset_t. */ ++#include ++ ++/* Define 'struct timeval'. */ ++#define __need_timeval ++#include ++ ++ ++/* Structure of records written to the system call trace log file. ++ A header of type ktr_header, followed by a variable length buffer. */ ++ ++struct ktr_header ++ { ++ int ktr_len; /* Length of ktr_buf. */ ++ short ktr_type; /* Trace record type. */ ++ __pid_t ktr_pid; /* Process id. */ ++ char ktr_comm[MAXCOMLEN+1]; /* Command name. */ ++ struct timeval ktr_time; /* Timestamp. */ ++ void *ktr_buf; /* Pointer to ktr_len bytes. ++ (Ignore in the log file.) */ ++ }; ++ ++/* Possible values of ktr_type. */ ++enum ++{ ++ KTR_SYSCALL = 1, /* System call record. */ ++#define KTR_SYSCALL KTR_SYSCALL ++ KTR_SYSRET = 2, /* Return from system call record. */ ++#define KTR_SYSRET KTR_SYSRET ++ KTR_NAMEI = 3, /* Namei record. */ ++#define KTR_NAMEI KTR_NAMEI ++ KTR_GENIO = 4, /* Generic process I/O record. */ ++#define KTR_GENIO KTR_GENIO ++ KTR_PSIG = 5, /* Processed signal record. */ ++#define KTR_PSIG KTR_PSIG ++ KTR_CSW = 6, /* Context switch record. */ ++#define KTR_CSW KTR_CSW ++ KTR_USER = 7 /* User defined record. */ ++#define KTR_USER KTR_USER ++}; ++ ++/* ktr_buf for KTR_SYSCALL: System call record. */ ++struct ktr_syscall ++ { ++ short ktr_code; /* Syscall number. */ ++ short ktr_narg; /* Number of arguments. */ ++ register_t ktr_args __flexarr; ++ }; ++ ++/* ktr_buf for KTR_SYSRET: Return from system call record. */ ++struct ktr_sysret ++ { ++ short ktr_code; /* Syscall number. */ ++ short ktr_eosys; ++ int ktr_error; ++ register_t ktr_retval; ++ }; ++ ++/* ktr_buf for KTR_NAMEI: Namei record. ++ It contains the pathname. */ ++ ++/* ktr_buf for KTR_GENIO: Generic process I/O record. */ ++enum uio_rw ++{ ++ UIO_READ, ++ UIO_WRITE ++}; ++struct ktr_genio ++ { ++ int ktr_fd; /* File descriptor. */ ++ enum uio_rw ktr_rw; /* I/O direction. */ ++ char ktr_data __flexarr; /* Data successfully read/written. */ ++ }; ++ ++/* ktr_buf for KTR_PSIG: Processed signal record. */ ++struct ktr_psig ++ { ++ int signo; ++ __sighandler_t action; ++ int code; ++ sigset_t mask; ++ }; ++ ++/* ktr_buf for KTR_CSW: Context switch record. */ ++struct ktr_csw ++ { ++ int out; /* 1 if switch out, 0 if switch in. */ ++ int user; /* 1 if usermode, 0 if kernel mode. */ ++ }; ++ ++/* Maximum size of ktr_buf for KTR_USER: User defined record. */ ++#define KTR_USER_MAXLEN 2048 ++ ++ ++/* The OP_FLAGS argument of ktrace() consists of an operation and ++ some flags. This macro extracts the operation. */ ++#define KTROP(op_flags) ((op_flags) & 3) ++ ++/* Possible values for operation in OP_FLAGS argument of ktrace(). */ ++enum ++{ ++ KTROP_SET = 0, /* Set trace facilities. */ ++#define KTROP_SET KTROP_SET ++ KTROP_CLEAR = 1, /* Clear trace facilities. */ ++#define KTROP_CLEAR KTROP_CLEAR ++ KTROP_CLEARFILE = 2 /* Stop all tracing to file. */ ++#define KTROP_CLEARFILE KTROP_CLEARFILE ++}; ++ ++/* Possible flags to be ORed into OP_FLAGS argument of ktrace(). */ ++enum ++{ ++ KTRFLAG_DESCEND = 4 /* Perform operation on all children processes too. */ ++#define KTRFLAG_DESCEND KTRFLAG_DESCEND ++}; ++ ++ ++/* The FAC is an OR of some trace facilities. */ ++enum ++{ ++ KTRFAC_SYSCALL = 1 << KTR_SYSCALL, /* Trace system calls. */ ++#define KTRFAC_SYSCALL KTRFAC_SYSCALL ++ KTRFAC_SYSRET = 1 << KTR_SYSRET, /* Trace system call returns. */ ++#define KTRFAC_SYSRET KTRFAC_SYSRET ++ KTRFAC_NAMEI = 1 << KTR_NAMEI, /* Trace namei operations. */ ++#define KTRFAC_NAMEI KTRFAC_NAMEI ++ KTRFAC_GENIO = 1 << KTR_GENIO, /* Trace generic process I/O. */ ++#define KTRFAC_GENIO KTRFAC_GENIO ++ KTRFAC_PSIG = 1 << KTR_PSIG, /* Trace signal processing. */ ++#define KTRFAC_PSIG KTRFAC_PSIG ++ KTRFAC_CSW = 1 << KTR_CSW, /* Trace context switches. */ ++#define KTRFAC_CSW KTRFAC_CSW ++ KTRFAC_USER = 1 << KTR_USER, /* Trace user defined records. */ ++#define KTRFAC_USER KTRFAC_USER ++ KTRFAC_INHERIT = 1 << 30 /* Inherit trace flags to new children. */ ++#define KTRFAC_INHERIT KTRFAC_INHERIT ++}; ++ ++ ++__BEGIN_DECLS ++ ++/* Enable system call tracing for the process PID. ++ Trace records will be written to TRACEFILE; this file is truncated. If ++ OP_FLAGS contains KTROP_CLEAR, TRACEFILE may be NULL. ++ FAC contains the facilities to switch on or off. */ ++extern int ktrace (__const char *__tracefile, int __op_flags, int __fac, ++ __pid_t pid) __THROW; ++ ++/* Write a user defined record to the current process' trace log file. */ ++extern int utrace (__const void *__buf, size_t __len) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_KTRACE_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/mount.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/mount.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/mount.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/mount.h 2006-01-14 23:17:06.000000000 +0100 +@@ -0,0 +1,438 @@ ++/* Header file for handling mounted filesystems. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_MOUNT_H ++#define _SYS_MOUNT_H 1 ++ ++#include ++ ++/* Retrieving the list of mounted filesystems. */ ++ ++#include ++ ++#include ++#include ++ ++/* ++ * File identifier. ++ * These are unique per filesystem on a single machine. ++ */ ++#define MAXFIDSZ 16 ++ ++struct fid { ++ u_short fid_len; /* length of data in bytes */ ++ u_short fid_reserved; /* force longword alignment */ ++ char fid_data[MAXFIDSZ]; /* data (variable length) */ ++}; ++ ++/* ++ * filesystem statistics ++ */ ++#define MFSNAMELEN 16 /* length of type name including null */ ++#define MNAMELEN 88 /* size of on/from name bufs */ ++#define STATFS_VERSION 0x20030518 /* current version number */ ++ ++ ++/* ++ * User specifiable flags. ++ */ ++#define MNT_RDONLY 0x00000001 /* read only filesystem */ ++#define MNT_SYNCHRONOUS 0x00000002 /* filesystem written synchronously */ ++#define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */ ++#define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */ ++#define MNT_NODEV 0x00000010 /* don't interpret special files */ ++#define MNT_UNION 0x00000020 /* union with underlying filesystem */ ++#define MNT_ASYNC 0x00000040 /* filesystem written asynchronously */ ++#define MNT_SUIDDIR 0x00100000 /* special handling of SUID on dirs */ ++#define MNT_SOFTDEP 0x00200000 /* soft updates being done */ ++#define MNT_NOSYMFOLLOW 0x00400000 /* do not follow symlinks */ ++#define MNT_JAILDEVFS 0x02000000 /* jail-friendly DEVFS behaviour */ ++#define MNT_MULTILABEL 0x04000000 /* MAC support for individual objects */ ++#define MNT_ACLS 0x08000000 /* ACL support enabled */ ++#define MNT_NOATIME 0x10000000 /* disable update of file access time */ ++#define MNT_NOCLUSTERR 0x40000000 /* disable cluster read */ ++#define MNT_NOCLUSTERW 0x80000000 /* disable cluster write */ ++ ++/* ++ * NFS export related mount flags. ++ */ ++#define MNT_EXRDONLY 0x00000080 /* exported read only */ ++#define MNT_EXPORTED 0x00000100 /* filesystem is exported */ ++#define MNT_DEFEXPORTED 0x00000200 /* exported to the world */ ++#define MNT_EXPORTANON 0x00000400 /* use anon uid mapping for everyone */ ++#define MNT_EXKERB 0x00000800 /* exported with Kerberos uid mapping */ ++#define MNT_EXPUBLIC 0x20000000 /* public export (WebNFS) */ ++ ++/* ++ * Flags set by internal operations, ++ * but visible to the user. ++ * XXX some of these are not quite right.. (I've never seen the root flag set) ++ */ ++#define MNT_LOCAL 0x00001000 /* filesystem is stored locally */ ++#define MNT_QUOTA 0x00002000 /* quotas are enabled on filesystem */ ++#define MNT_ROOTFS 0x00004000 /* identifies the root filesystem */ ++#define MNT_USER 0x00008000 /* mounted by a user */ ++#define MNT_IGNORE 0x00800000 /* do not show entry in df */ ++ ++/* ++ * Mask of flags that are visible to statfs(). ++ * XXX I think that this could now become (~(MNT_CMDFLAGS)) ++ * but the 'mount' program may need changing to handle this. ++ */ ++#define MNT_VISFLAGMASK (MNT_RDONLY | MNT_SYNCHRONOUS | MNT_NOEXEC | \ ++ MNT_NOSUID | MNT_NODEV | MNT_UNION | \ ++ MNT_ASYNC | MNT_EXRDONLY | MNT_EXPORTED | \ ++ MNT_DEFEXPORTED | MNT_EXPORTANON| MNT_EXKERB | \ ++ MNT_LOCAL | MNT_USER | MNT_QUOTA | \ ++ MNT_ROOTFS | MNT_NOATIME | MNT_NOCLUSTERR| \ ++ MNT_NOCLUSTERW | MNT_SUIDDIR | MNT_SOFTDEP | \ ++ MNT_IGNORE | MNT_EXPUBLIC | MNT_NOSYMFOLLOW | \ ++ MNT_JAILDEVFS | MNT_MULTILABEL | MNT_ACLS) ++ ++/* Mask of flags that can be updated. */ ++#define MNT_UPDATEMASK (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV | \ ++ MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC | \ ++ MNT_NOATIME | \ ++ MNT_NOSYMFOLLOW | MNT_IGNORE | MNT_JAILDEVFS | \ ++ MNT_NOCLUSTERR | MNT_NOCLUSTERW | MNT_SUIDDIR | \ ++ MNT_ACLS | MNT_USER) ++ ++/* ++ * External filesystem command modifier flags. ++ * Unmount can use the MNT_FORCE flag. ++ * XXX These are not STATES and really should be somewhere else. ++ */ ++#define MNT_UPDATE 0x00010000 /* not a real mount, just an update */ ++#define MNT_DELEXPORT 0x00020000 /* delete export host lists */ ++#define MNT_RELOAD 0x00040000 /* reload filesystem data */ ++#define MNT_FORCE 0x00080000 /* force unmount or readonly change */ ++#define MNT_SNAPSHOT 0x01000000 /* snapshot the filesystem */ ++#define MNT_BYFSID 0x08000000 /* specify filesystem by ID. */ ++#define MNT_CMDFLAGS (MNT_UPDATE | MNT_DELEXPORT | MNT_RELOAD | \ ++ MNT_FORCE | MNT_SNAPSHOT | MNT_BYFSID) ++/* ++ * Internal filesystem control flags stored in mnt_kern_flag. ++ * ++ * MNTK_UNMOUNT locks the mount entry so that name lookup cannot proceed ++ * past the mount point. This keeps the subtree stable during mounts ++ * and unmounts. ++ * ++ * MNTK_UNMOUNTF permits filesystems to detect a forced unmount while ++ * dounmount() is still waiting to lock the mountpoint. This allows ++ * the filesystem to cancel operations that might otherwise deadlock ++ * with the unmount attempt (used by NFS). ++ */ ++#define MNTK_UNMOUNTF 0x00000001 /* forced unmount in progress */ ++#define MNTK_UNMOUNT 0x01000000 /* unmount in progress */ ++#define MNTK_MWAIT 0x02000000 /* waiting for unmount to finish */ ++#define MNTK_WANTRDWR 0x04000000 /* upgrade to read/write requested */ ++#define MNTK_SUSPEND 0x08000000 /* request write suspension */ ++#define MNTK_SUSPENDED 0x10000000 /* write operations are suspended */ ++ ++/* ++ * Sysctl CTL_VFS definitions. ++ * ++ * Second level identifier specifies which filesystem. Second level ++ * identifier VFS_VFSCONF returns information about all filesystems. ++ * Second level identifier VFS_GENERIC is non-terminal. ++ */ ++#define VFS_VFSCONF 0 /* get configured filesystems */ ++#define VFS_GENERIC 0 /* generic filesystem information */ ++/* ++ * Third level identifiers for VFS_GENERIC are given below; third ++ * level identifiers for specific filesystems are given in their ++ * mount specific header files. ++ */ ++#define VFS_MAXTYPENUM 1 /* int: highest defined filesystem type */ ++#define VFS_CONF 2 /* struct: vfsconf for filesystem given ++ as next argument */ ++ ++/* ++ * Flags for various system call interfaces. ++ * ++ * waitfor flags to vfs_sync() and getfsstat() ++ */ ++#define MNT_WAIT 1 /* synchronously wait for I/O to complete */ ++#define MNT_NOWAIT 2 /* start all I/O, but do not wait for it */ ++#define MNT_LAZY 3 /* push data not written by filesystem syncer */ ++ ++/* ++ * Generic file handle ++ */ ++struct fhandle { ++ fsid_t fh_fsid; /* Filesystem id of mount point */ ++ struct fid fh_fid; /* Filesys specific id */ ++}; ++typedef struct fhandle fhandle_t; ++ ++/* ++ * Export arguments for local filesystem mount calls. ++ */ ++struct export_args { ++ int ex_flags; /* export related flags */ ++ uid_t ex_root; /* mapping for root uid */ ++ struct xucred ex_anon; /* mapping for anonymous user */ ++ struct sockaddr *ex_addr; /* net address to which exported */ ++ u_char ex_addrlen; /* and the net address length */ ++ struct sockaddr *ex_mask; /* mask of valid bits in saddr */ ++ u_char ex_masklen; /* and the smask length */ ++ char *ex_indexfile; /* index file for WebNFS URLs */ ++}; ++ ++/* ++ * Structure holding information for a publicly exported filesystem ++ * (WebNFS). Currently the specs allow just for one such filesystem. ++ */ ++struct nfs_public { ++ int np_valid; /* Do we hold valid information */ ++ fhandle_t np_handle; /* Filehandle for pub fs (internal) */ ++ struct mount *np_mount; /* Mountpoint of exported fs */ ++ char *np_index; /* Index file */ ++}; ++ ++/* ++ * Filesystem configuration information. One of these exists for each ++ * type of filesystem supported by the kernel. These are searched at ++ * mount time to identify the requested filesystem. ++ * ++ * XXX: Never change the first two arguments! ++ */ ++struct vfsconf { ++ u_int vfc_version; /* ABI version number */ ++ char vfc_name[MFSNAMELEN]; /* filesystem type name */ ++ struct vfsops *vfc_vfsops; /* filesystem operations vector */ ++ int vfc_typenum; /* historic filesystem type number */ ++ int vfc_refcount; /* number mounted of this type */ ++ int vfc_flags; /* permanent flags */ ++ struct vfsoptdecl *vfc_opts; /* mount options */ ++ TAILQ_ENTRY(vfsconf) vfc_list; /* list of vfscons */ ++}; ++ ++/* Userland version of the struct vfsconf. */ ++struct xvfsconf { ++ struct vfsops *vfc_vfsops; /* filesystem operations vector */ ++ char vfc_name[MFSNAMELEN]; /* filesystem type name */ ++ int vfc_typenum; /* historic filesystem type number */ ++ int vfc_refcount; /* number mounted of this type */ ++ int vfc_flags; /* permanent flags */ ++ struct vfsconf *vfc_next; /* next in list */ ++}; ++ ++#ifndef BURN_BRIDGES ++struct ovfsconf { ++ void *vfc_vfsops; ++ char vfc_name[32]; ++ int vfc_index; ++ int vfc_refcount; ++ int vfc_flags; ++}; ++#endif ++ ++/* ++ * NB: these flags refer to IMPLEMENTATION properties, not properties of ++ * any actual mounts; i.e., it does not make sense to change the flags. ++ */ ++#define VFCF_STATIC 0x00010000 /* statically compiled into kernel */ ++#define VFCF_NETWORK 0x00020000 /* may get data over the network */ ++#define VFCF_READONLY 0x00040000 /* writes are not implemented */ ++#define VFCF_SYNTHETIC 0x00080000 /* data does not represent real files */ ++#define VFCF_LOOPBACK 0x00100000 /* aliases some other mounted FS */ ++#define VFCF_UNICODE 0x00200000 /* stores file names as Unicode*/ ++ ++typedef u_int32_t fsctlop_t; ++ ++struct vfsidctl { ++ int vc_vers; /* should be VFSIDCTL_VERS1 (below) */ ++ fsid_t vc_fsid; /* fsid to operate on. */ ++ char vc_fstypename[MFSNAMELEN]; ++ /* type of fs 'nfs' or '*' */ ++ fsctlop_t vc_op; /* operation VFS_CTL_* (below) */ ++ void *vc_ptr; /* pointer to data structure. */ ++ size_t vc_len; /* sizeof said structure. */ ++ u_int32_t vc_spare[12]; /* spare (must be zero). */ ++}; ++ ++/* vfsidctl API version. */ ++#define VFS_CTL_VERS1 0x01 ++ ++/* ++ * New style VFS sysctls, do not reuse/conflict with the namespace for ++ * private sysctls. ++ * All "global" sysctl ops have the 33rd bit set: ++ * 0x...1.... ++ * Private sysctl ops should have the 33rd bit unset. ++ */ ++#define VFS_CTL_QUERY 0x00010001 /* anything wrong? (vfsquery) */ ++#define VFS_CTL_TIMEO 0x00010002 /* set timeout for vfs notification */ ++#define VFS_CTL_NOLOCKS 0x00010003 /* disable file locking */ ++ ++struct vfsquery { ++ u_int32_t vq_flags; ++ u_int32_t vq_spare[31]; ++}; ++ ++/* vfsquery flags */ ++#define VQ_NOTRESP 0x0001 /* server down */ ++#define VQ_NEEDAUTH 0x0002 /* server bad auth */ ++#define VQ_LOWDISK 0x0004 /* we're low on space */ ++#define VQ_MOUNT 0x0008 /* new filesystem arrived */ ++#define VQ_UNMOUNT 0x0010 /* filesystem has left */ ++#define VQ_DEAD 0x0020 /* filesystem is dead, needs force unmount */ ++#define VQ_ASSIST 0x0040 /* filesystem needs assistance from external ++ program */ ++#define VQ_NOTRESPLOCK 0x0080 /* server lockd down */ ++#define VQ_FLAG0100 0x0100 /* placeholder */ ++#define VQ_FLAG0200 0x0200 /* placeholder */ ++#define VQ_FLAG0400 0x0400 /* placeholder */ ++#define VQ_FLAG0800 0x0800 /* placeholder */ ++#define VQ_FLAG1000 0x1000 /* placeholder */ ++#define VQ_FLAG2000 0x2000 /* placeholder */ ++#define VQ_FLAG4000 0x4000 /* placeholder */ ++#define VQ_FLAG8000 0x8000 /* placeholder */ ++ ++ ++struct iovec; ++struct uio; ++ ++ ++#include ++ ++struct stat; ++ ++__BEGIN_DECLS ++ ++/* Mounting and unmounting filesystems. */ ++int fhopen(const struct fhandle *, int); ++int fhstat(const struct fhandle *, struct stat *); ++int fhstatfs(const struct fhandle *, struct statfs *); ++int fstatfs(int, struct statfs *); ++int getfh(const char *, fhandle_t *); ++int getfsstat(struct statfs *, long, int); ++int getmntinfo(struct statfs **, int); ++int lgetfh(const char *, fhandle_t *); ++int mount(const char *, const char *, int, void *); ++int nmount(struct iovec *, unsigned int, int); ++int statfs(const char *, struct statfs *); ++int unmount(const char *, int); ++ ++/* C library stuff */ ++int getvfsbyname(const char *, struct xvfsconf *); ++ ++/* getfsstat() appears in BSD 4.4. A variant of this API is found on OSF/1, ++ but on that system the user also needs to include . */ ++ ++#ifndef __USE_FILE_OFFSET64 ++extern int getfsstat (struct statfs *__buf, long __bufsize, ++ int __flags) __THROW; ++#else ++# ifdef __REDIRECT ++extern int __REDIRECT (getfsstat, ++ (struct statfs *__buf, long __bufsize, int __flags), ++ getfsstat64); ++# else ++# define getfsstat getfsstat64 ++# endif ++#endif ++#ifdef __USE_LARGEFILE64 ++extern int getfsstat64 (struct statfs64 *__buf, long __bufsize, ++ int __flags) __THROW; ++#endif ++ ++#ifdef _LIBC ++extern int __getfsstat (struct statfs *__buf, long __bufsize, int __flags); ++extern int __getfsstat64 (struct statfs64 *__buf, long __bufsize, int __flags); ++#endif ++ ++/* getmntinfo() appears in BSD 4.4. */ ++ ++#ifndef __USE_FILE_OFFSET64 ++extern int getmntinfo (struct statfs **__mntbufp, int __flags) __THROW; ++#else ++# ifdef __REDIRECT ++extern int __REDIRECT (getmntinfo, ++ (struct statfs **__mntbufp, int __flags), ++ getmntinfo64); ++# else ++# define getmntinfo getmntinfo64 ++# endif ++#endif ++#ifdef __USE_LARGEFILE64 ++extern int getmntinfo64 (struct statfs64 **__mntbufp, int __flags) __THROW; ++#endif ++ ++#ifdef _LIBC ++extern int __getmntinfo (struct statfs **__mntbufp, int __flags); ++#endif ++ ++__END_DECLS ++ ++ ++/* Opening files on specified mounted filesystems. ++ These system calls are reserved to the superuser, for security reasons. */ ++ ++#include ++ ++__BEGIN_DECLS ++ ++/* Return in *FHP the file handle corresponding to the file or directory ++ PATH. */ ++extern int getfh (__const char *__path, fhandle_t *__fhp) __THROW; ++ ++/* Open a file handle *FHP, using the open() like FLAGS. Return the ++ new file descriptor. */ ++extern int fhopen (__const fhandle_t *__fhp, int __flags) __THROW; ++ ++/* Get file attributes for the file whose handle is *FHP, and return them ++ in *BUF. Like fhopen + fstat + close. */ ++#ifndef __USE_FILE_OFFSET64 ++extern int fhstat (__const fhandle_t *__fhp, struct stat *__buf) __THROW; ++#else ++# ifdef __REDIRECT ++extern int __REDIRECT (fhstat, ++ (__const fhandle_t *__fhp, struct stat *__buf), ++ fhstat64); ++# else ++# define fhstat fhstat64 ++# endif ++#endif ++#ifdef __USE_LARGEFILE64 ++extern int fhstat64 (__const fhandle_t *__fhp, struct stat64 *__buf) __THROW; ++#endif ++ ++/* Return information about the filesystem on which the file resides whose ++ handle is *FHP. Like fhopen + fstatfs + close. */ ++#ifndef __USE_FILE_OFFSET64 ++extern int fhstatfs (__const fhandle_t *__fhp, struct statfs *__buf) __THROW; ++#else ++# ifdef __REDIRECT ++extern int __REDIRECT (fhstatfs, ++ (__const fhandle_t *__fhp, struct statfs *__buf), ++ fhstatfs64); ++# else ++# define fhstatfs fhstatfs64 ++# endif ++#endif ++#ifdef __USE_LARGEFILE64 ++extern int fhstatfs64 (__const fhandle_t *__fhp, ++ struct statfs64 *__buf) __THROW; ++#endif ++ ++__END_DECLS ++ ++#endif /* _SYS_MOUNT_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/param.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/param.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/param.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/param.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,236 @@ ++/* Copyright (C) 1995,1996,1997,2000,2001,2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_PARAM_H ++#define _SYS_PARAM_H 1 ++ ++#include ++#include ++ ++#ifndef NULL ++#define NULL 0 ++#endif ++ ++/* ++ * __FreeBSD_version numbers are documented in the Porter's Handbook. ++ * If you bump the version for any reason, you should update the documentation ++ * there. ++ * Currently this lives here: ++ * ++ * doc/en_US.ISO8859-1/books/porters-handbook/book.sgml ++ * ++ * scheme is: <0 if release branch, otherwise 1>xx ++ */ ++#include ++ ++/* Some inet code expects that this file defines the 'u_int32_t' type. */ ++#include ++ ++/* ++ * Machine-independent constants (some used in following include files). ++ * Redefined constants are from POSIX 1003.1 limits file. ++ * ++ * MAXCOMLEN should be >= sizeof(ac_comm) (see ) ++ * MAXLOGNAME should be == UT_NAMESIZE+1 (see ) ++ */ ++ ++#define MAXCOMLEN 19 /* max command name remembered */ ++#define MAXINTERP 32 /* max interpreter file name length */ ++#define MAXLOGNAME 17 /* max login name length (incl. NUL) */ ++#define MAXUPRC CHILD_MAX /* max simultaneous processes */ ++#define NCARGS ARG_MAX /* max bytes for an exec function */ ++#define NGROUPS NGROUPS_MAX /* max number groups */ ++#define NOGROUP 65535 /* marker for empty group set member */ ++#define MAXHOSTNAMELEN 256 /* max hostname size */ ++#define SPECNAMELEN 63 /* max length of devicename */ ++ ++/* BSD names for some values. */ ++ ++#define NBBY CHAR_BIT ++#ifndef NGROUPS ++# define NGROUPS NGROUPS_MAX ++#endif ++#define MAXSYMLINKS 32 ++#define CANBSIZ MAX_CANON ++#define NCARGS ARG_MAX ++#define MAXPATHLEN PATH_MAX ++ ++/* The following is not really correct but it is a value we used for a ++ long time and which seems to be usable. People should not use NOFILE ++ anyway. */ ++#define NOFILE OPEN_MAX ++ ++/* Bit map related macros. */ ++#define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY)) ++#define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY))) ++#define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY))) ++#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0) ++ ++/* Macros for counting and rounding. */ ++#ifndef howmany ++# define howmany(x, y) (((x) + ((y) - 1)) / (y)) ++#endif ++#ifdef __GNUC__ ++# define roundup(x, y) (__builtin_constant_p (y) && powerof2 (y) \ ++ ? (((x) + (y) - 1) & ~((y) - 1)) \ ++ : ((((x) + ((y) - 1)) / (y)) * (y))) ++#else ++# define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) ++#endif ++#define powerof2(x) ((((x) - 1) & (x)) == 0) ++ ++/* Macros for min/max. */ ++#define MIN(a,b) (((a)<(b))?(a):(b)) ++#define MAX(a,b) (((a)>(b))?(a):(b)) ++ ++/* Machine type dependent parameters. */ ++#include ++ ++#ifndef DEV_BSHIFT ++#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ ++#endif ++#define DEV_BSIZE (1<>PAGE_SHIFT) ++#endif ++ ++/* ++ * btodb() is messy and perhaps slow because `bytes' may be an off_t. We ++ * want to shift an unsigned type to avoid sign extension and we don't ++ * want to widen `bytes' unnecessarily. Assume that the result fits in ++ * a daddr_t. ++ */ ++#ifndef btodb ++#define btodb(bytes) /* calculates (bytes / DEV_BSIZE) */ \ ++ (sizeof (bytes) > sizeof(long) \ ++ ? (daddr_t)((unsigned long long)(bytes) >> DEV_BSHIFT) \ ++ : (daddr_t)((unsigned long)(bytes) >> DEV_BSHIFT)) ++#endif ++ ++#ifndef dbtob ++#define dbtob(db) /* calculates (db * DEV_BSIZE) */ \ ++ ((off_t)(db) << DEV_BSHIFT) ++#endif ++ ++#endif /* _NO_NAMESPACE_POLLUTION */ ++ ++#define PRIMASK 0x0ff ++#define PCATCH 0x100 /* OR'd with pri for tsleep to check signals */ ++#define PDROP 0x200 /* OR'd with pri to stop re-entry of interlock mutex */ ++ ++#define NBPW sizeof(int) /* number of bytes per word (integer) */ ++ ++#define CMASK 022 /* default file mask: S_IWGRP|S_IWOTH */ ++ ++#define NODEV (dev_t)(-1) /* non-existent device */ ++ ++#define CBLOCK 128 /* Clist block size, must be a power of 2. */ ++#define CBQSIZE (CBLOCK/NBBY) /* Quote bytes/cblock - can do better. */ ++ /* Data chars/clist. */ ++#define CBSIZE (CBLOCK - sizeof(struct cblock *) - CBQSIZE) ++#define CROUND (CBLOCK - 1) /* Clist rounding. */ ++ ++/* ++ * File system parameters and macros. ++ * ++ * MAXBSIZE - Filesystems are made out of blocks of at most MAXBSIZE bytes ++ * per block. MAXBSIZE may be made larger without effecting ++ * any existing filesystems as long as it does not exceed MAXPHYS, ++ * and may be made smaller at the risk of not being able to use ++ * filesystems which require a block size exceeding MAXBSIZE. ++ * ++ * BKVASIZE - Nominal buffer space per buffer, in bytes. BKVASIZE is the ++ * minimum KVM memory reservation the kernel is willing to make. ++ * Filesystems can of course request smaller chunks. Actual ++ * backing memory uses a chunk size of a page (PAGE_SIZE). ++ * ++ * If you make BKVASIZE too small you risk seriously fragmenting ++ * the buffer KVM map which may slow things down a bit. If you ++ * make it too big the kernel will not be able to optimally use ++ * the KVM memory reserved for the buffer cache and will wind ++ * up with too-few buffers. ++ * ++ * The default is 16384, roughly 2x the block size used by a ++ * normal UFS filesystem. ++ */ ++#define MAXBSIZE 65536 /* must be power of 2 */ ++#define BKVASIZE 16384 /* must be power of 2 */ ++#define BKVAMASK (BKVASIZE-1) ++ ++/* ++ * Scale factor for scaled integers used to count %cpu time and load avgs. ++ * ++ * The number of CPU `tick's that map to a unique `%age' can be expressed ++ * by the formula (1 / (2 ^ (FSHIFT - 11))). The maximum load average that ++ * can be calculated (assuming 32 bits) can be closely approximated using ++ * the formula (2 ^ (2 * (16 - FSHIFT))) for (FSHIFT < 15). ++ * ++ * For the scheduler to maintain a 1:1 mapping of CPU `tick' to `%age', ++ * FSHIFT must be at least 11; this gives us a maximum load avg of ~1024. ++ */ ++#define FSHIFT 11 /* bits to right of fixed binary point */ ++#define FSCALE (1<> (PAGE_SHIFT - DEV_BSHIFT)) ++ ++#define ctodb(db) /* calculates pages to devblks */ \ ++ ((db) << (PAGE_SHIFT - DEV_BSHIFT)) ++ ++#endif /* _SYS_PARAM_H_ */ ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/ptrace.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ptrace.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/ptrace.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ptrace.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,132 @@ ++/* `ptrace' debugger support interface. FreeBSD version. ++ Copyright (C) 1996-1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_PTRACE_H ++#define _SYS_PTRACE_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++/* Type of the REQUEST argument to `ptrace.' */ ++enum __ptrace_request ++{ ++ /* Indicate that the process making this request should be traced. ++ All signals received by this process can be intercepted by its ++ parent, and its parent can use the other `ptrace' requests. */ ++ PTRACE_TRACEME = 0, ++#define PT_TRACE_ME PTRACE_TRACEME ++ ++ /* Return the word in the process's text space at address ADDR. */ ++ PTRACE_PEEKTEXT = 1, ++#define PT_READ_I PTRACE_PEEKTEXT ++ ++ /* Return the word in the process's data space at address ADDR. */ ++ PTRACE_PEEKDATA = 2, ++#define PT_READ_D PTRACE_PEEKDATA ++ ++#if 1 /* NB: removed in FreeBSD 4.6 */ ++ /* Return the word in the process's user area at offset ADDR. */ ++ PTRACE_PEEKUSER = 3, ++#define PT_READ_U PTRACE_PEEKUSER ++#endif ++ ++ /* Write the word DATA into the process's text space at address ADDR. */ ++ PTRACE_POKETEXT = 4, ++#define PT_WRITE_I PTRACE_POKETEXT ++ ++ /* Write the word DATA into the process's data space at address ADDR. */ ++ PTRACE_POKEDATA = 5, ++#define PT_WRITE_D PTRACE_POKEDATA ++ ++#if 1 /* NB: removed in FreeBSD 4.6 */ ++ /* Write the word DATA into the process's user area at offset ADDR. */ ++ PTRACE_POKEUSER = 6, ++#define PT_WRITE_U PTRACE_POKEUSER ++#endif ++ ++ /* Continue the process. */ ++ PTRACE_CONT = 7, ++#define PT_CONTINUE PTRACE_CONT ++ ++ /* Kill the process. */ ++ PTRACE_KILL = 8, ++#define PT_KILL PTRACE_KILL ++ ++ /* Single step the process. ++ This is not supported on all machines. */ ++ PTRACE_SINGLESTEP = 9, ++#define PT_STEP PTRACE_SINGLESTEP ++ ++ /* Attach to a process that is already running. */ ++ PTRACE_ATTACH = 10, ++#define PT_ATTACH PTRACE_ATTACH ++ ++ /* Detach from a process attached to with PTRACE_ATTACH. */ ++ PTRACE_DETACH = 11, ++#define PT_DETACH PTRACE_DETACH ++ ++ /* CPU specific requests start here. */ ++ __PTRACE_FIRSTMACH = 32, ++ ++ /* Get all general purpose registers used by a processes. ++ This is not supported on all machines. */ ++ PTRACE_GETREGS, ++#define PT_GETREGS PTRACE_GETREGS ++ ++ /* Set all general purpose registers used by a processes. ++ This is not supported on all machines. */ ++ PTRACE_SETREGS, ++#define PT_SETREGS PTRACE_SETREGS ++ ++ /* Get all floating point registers used by a processes. ++ This is not supported on all machines. */ ++ PTRACE_GETFPREGS, ++#define PT_GETFPREGS PTRACE_GETFPREGS ++ ++ /* Set all floating point registers used by a processes. ++ This is not supported on all machines. */ ++ PTRACE_SETFPREGS, ++#define PT_SETFPREGS PTRACE_SETFPREGS ++ ++ /* Get all debug registers used by a processes. ++ This is not supported on all machines. */ ++ PTRACE_GETDBREGS, ++#define PT_GETDBREGS PTRACE_GETDBREGS ++ ++ /* Set all debug registers used by a processes. ++ This is not supported on all machines. */ ++ PTRACE_SETDBREGS ++#define PT_SETDBREGS PTRACE_SETDBREGS ++}; ++ ++/* Perform process tracing functions. REQUEST is one of the values ++ above, and determines the action to be taken. ++ For all requests except PTRACE_TRACEME, PID specifies the process to be ++ traced. ++ ++ PID and the other arguments described above for the various requests should ++ appear (those that are used for the particular request) as: ++ pid_t PID, void *ADDR, int DATA, void *ADDR2 ++ after REQUEST. */ ++extern int ptrace (enum __ptrace_request __request, ...) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_PTRACE_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/rfork.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/rfork.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/rfork.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/rfork.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,91 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Copyright (c) 1989, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)unistd.h 8.2 (Berkeley) 1/7/94 ++ * $FreeBSD: src/sys/sys/unistd.h,v 1.22.2.1 2000/03/18 23:20:12 jasone Exp $ ++ */ ++ ++#ifndef _SYS_RFORK_H ++#define _SYS_RFORK_H ++ ++#include ++ ++/* ++ * rfork() options. ++ * ++ * XXX currently, operations without RFPROC set are not supported. ++ */ ++#define RFNAMEG (1<<0) /* UNIMPL new plan9 `name space' */ ++#define RFENVG (1<<1) /* UNIMPL copy plan9 `env space' */ ++#define RFFDG (1<<2) /* copy fd table */ ++#define RFNOTEG (1<<3) /* UNIMPL create new plan9 `note group' */ ++#define RFPROC (1<<4) /* change child (else changes curproc) */ ++#define RFMEM (1<<5) /* share `address space' */ ++#define RFNOWAIT (1<<6) /* parent need not wait() on child */ ++#define RFCNAMEG (1<<10) /* UNIMPL zero plan9 `name space' */ ++#define RFCENVG (1<<11) /* UNIMPL zero plan9 `env space' */ ++#define RFCFDG (1<<12) /* zero fd table */ ++#define RFTHREAD (1<<13) /* enable kernel thread support */ ++#define RFSIGSHARE (1<<14) /* share signal handlers */ ++#define RFLINUXTHPN (1<<16) /* do linux clone exit parent notification */ ++#define RFPPWAIT (1<<31) /* parent sleeps until child exits (vfork) */ ++ ++#define RFTHPNSHIFT 24 /* reserve bits 24-30 */ ++#define RFTHPNMASK 0x7F /* for compatibility with linuxthreads/clone() */ ++ /* allow to specify "clone exit parent notification" signal */ ++#define RFTHPNSIGNUM(flags) (((flags) >> RFTHPNSHIFT) & RFTHPNMASK) ++ ++__BEGIN_DECLS ++ ++extern int rfork (int __flags) __THROW; ++ ++#ifdef _LIBC ++extern int __rfork (int __flags); ++#endif ++ ++__END_DECLS ++ ++#endif /* _SYS_RFORK_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/swap.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/swap.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/swap.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/swap.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,34 @@ ++/* Calls to enable swapping on specified locations. FreeBSD version. ++ Copyright (C) 1996-1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef __SYS_SWAP_H ++ ++#define __SYS_SWAP_H 1 ++#include ++ ++ ++__BEGIN_DECLS ++ ++/* Make the block special device PATH available to the system for swapping. ++ This call is restricted to the super-user. */ ++extern int swapon (__const char *__path) __THROW; ++ ++__END_DECLS ++ ++#endif /* sys/swap.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/syscall.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/syscall.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/syscall.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/syscall.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,377 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYSCALL_H ++#define _SYSCALL_H 1 ++ ++#define SYS_syscall 0 ++#define SYS_exit 1 ++#define SYS_fork 2 ++#define SYS_read 3 ++#define SYS_write 4 ++#define SYS_open 5 ++#define SYS_close 6 ++#define SYS_wait4 7 ++ /* 8 is old creat */ ++#define SYS_link 9 ++#define SYS_unlink 10 ++ /* 11 is obsolete execv */ ++#define SYS_chdir 12 ++#define SYS_fchdir 13 ++#define SYS_mknod 14 ++#define SYS_chmod 15 ++#define SYS_chown 16 ++#define SYS_obreak 17 ++ /* 18 is old getfsstat */ ++ /* 19 is old lseek */ ++#define SYS_getpid 20 ++#define SYS_mount 21 ++#define SYS_unmount 22 ++#define SYS_setuid 23 ++#define SYS_getuid 24 ++#define SYS_geteuid 25 ++#define SYS_ptrace 26 ++#define SYS_recvmsg 27 ++#define SYS_sendmsg 28 ++#define SYS_recvfrom 29 ++#define SYS_accept 30 ++#define SYS_getpeername 31 ++#define SYS_getsockname 32 ++#define SYS_access 33 ++#define SYS_chflags 34 ++#define SYS_fchflags 35 ++#define SYS_sync 36 ++#define SYS_kill 37 ++ /* 38 is old stat */ ++#define SYS_getppid 39 ++ /* 40 is old lstat */ ++#define SYS_dup 41 ++#define SYS_pipe 42 ++#define SYS_getegid 43 ++#define SYS_profil 44 ++#define SYS_ktrace 45 ++ /* 46 is old sigaction */ ++#define SYS_getgid 47 ++ /* 48 is old sigprocmask */ ++#define SYS_getlogin 49 ++#define SYS_setlogin 50 ++#define SYS_acct 51 ++ /* 52 is old sigpending */ ++#define SYS_sigaltstack 53 ++#define SYS_ioctl 54 ++#define SYS_reboot 55 ++#define SYS_revoke 56 ++#define SYS_symlink 57 ++#define SYS_readlink 58 ++#define SYS_execve 59 ++#define SYS_umask 60 ++#define SYS_chroot 61 ++ /* 62 is old fstat */ ++ /* 63 is old getkerninfo */ ++ /* 64 is old getpagesize */ ++#define SYS_msync 65 ++#define SYS_vfork 66 ++ /* 67 is obsolete vread */ ++ /* 68 is obsolete vwrite */ ++#define SYS_sbrk 69 ++#define SYS_sstk 70 ++ /* 71 is old mmap */ ++#define SYS_vadvise 72 ++#define SYS_munmap 73 ++#define SYS_mprotect 74 ++#define SYS_madvise 75 ++ /* 76 is obsolete vhangup */ ++ /* 77 is obsolete vlimit */ ++#define SYS_mincore 78 ++#define SYS_getgroups 79 ++#define SYS_setgroups 80 ++#define SYS_getpgrp 81 ++#define SYS_setpgid 82 ++#define SYS_setitimer 83 ++ /* 84 is old wait */ ++#define SYS_swapon 85 ++#define SYS_getitimer 86 ++ /* 87 is old gethostname */ ++ /* 88 is old sethostname */ ++#define SYS_getdtablesize 89 ++#define SYS_dup2 90 ++#define SYS_fcntl 92 ++#define SYS_select 93 ++#define SYS_fsync 95 ++#define SYS_setpriority 96 ++#define SYS_socket 97 ++#define SYS_connect 98 ++ /* 99 is old accept */ ++#define SYS_getpriority 100 ++ /* 101 is old send */ ++ /* 102 is old recv */ ++ /* 103 is old sigreturn */ ++#define SYS_bind 104 ++#define SYS_setsockopt 105 ++#define SYS_listen 106 ++ /* 107 is obsolete vtimes */ ++ /* 108 is old sigvec */ ++ /* 109 is old sigblock */ ++ /* 110 is old sigsetmask */ ++ /* 111 is old sigsuspend */ ++ /* 112 is old sigstack */ ++ /* 113 is old recvmsg */ ++ /* 114 is old sendmsg */ ++ /* 115 is obsolete vtrace */ ++#define SYS_gettimeofday 116 ++#define SYS_getrusage 117 ++#define SYS_getsockopt 118 ++#define SYS_readv 120 ++#define SYS_writev 121 ++#define SYS_settimeofday 122 ++#define SYS_fchown 123 ++#define SYS_fchmod 124 ++ /* 125 is old recvfrom */ ++#define SYS_setreuid 126 ++#define SYS_setregid 127 ++#define SYS_rename 128 ++ /* 129 is old truncate */ ++ /* 130 is old ftruncate */ ++#define SYS_flock 131 ++#define SYS_mkfifo 132 ++#define SYS_sendto 133 ++#define SYS_shutdown 134 ++#define SYS_socketpair 135 ++#define SYS_mkdir 136 ++#define SYS_rmdir 137 ++#define SYS_utimes 138 ++ /* 139 is obsolete 4.2 sigreturn */ ++#define SYS_adjtime 140 ++ /* 141 is old getpeername */ ++ /* 142 is old gethostid */ ++ /* 143 is old sethostid */ ++ /* 144 is old getrlimit */ ++ /* 145 is old setrlimit */ ++ /* 146 is old killpg */ ++#define SYS_setsid 147 ++#define SYS_quotactl 148 ++ /* 149 is old quota */ ++ /* 150 is old getsockname */ ++#define SYS_nfssvc 155 ++ /* 156 is old getdirentries */ ++ /* 157 is old statfs */ ++ /* 158 is old fstatfs */ ++#define SYS_lgetfh 160 ++#define SYS_getfh 161 ++#define SYS_getdomainname 162 ++#define SYS_setdomainname 163 ++#define SYS_uname 164 ++#define SYS_sysarch 165 ++#define SYS_rtprio 166 ++#define SYS_semsys 169 ++#define SYS_msgsys 170 ++#define SYS_shmsys 171 ++#define SYS_pread 173 ++#define SYS_pwrite 174 ++#define SYS_ntp_adjtime 176 ++#define SYS_setgid 181 ++#define SYS_setegid 182 ++#define SYS_seteuid 183 ++#define SYS_stat 188 ++#define SYS_fstat 189 ++#define SYS_lstat 190 ++#define SYS_pathconf 191 ++#define SYS_fpathconf 192 ++#define SYS_getrlimit 194 ++#define SYS_setrlimit 195 ++#define SYS_getdirentries 196 ++#define SYS_mmap 197 ++#define SYS___syscall 198 ++#define SYS_lseek 199 ++#define SYS_truncate 200 ++#define SYS_ftruncate 201 ++#define SYS_sysctl 202 ++#define SYS_mlock 203 ++#define SYS_munlock 204 ++#define SYS_undelete 205 ++#define SYS_futimes 206 ++#define SYS_getpgid 207 ++#define SYS_poll 209 ++#define SYS_semctl 220 ++#define SYS_semget 221 ++#define SYS_semop 222 ++#define SYS_msgctl 224 ++#define SYS_msgget 225 ++#define SYS_msgsnd 226 ++#define SYS_msgrcv 227 ++#define SYS_shmat 228 ++#define SYS_shmctl 229 ++#define SYS_shmdt 230 ++#define SYS_shmget 231 ++#define SYS_clock_gettime 232 ++#define SYS_clock_settime 233 ++#define SYS_clock_getres 234 ++#define SYS_nanosleep 240 ++#define SYS_minherit 250 ++#define SYS_rfork 251 ++#define SYS_openbsd_poll 252 ++#define SYS_issetugid 253 ++#define SYS_lchown 254 ++#define SYS_getdents 272 ++#define SYS_lchmod 274 ++#define SYS_netbsd_lchown 275 ++#define SYS_lutimes 276 ++#define SYS_netbsd_msync 277 ++#define SYS_nstat 278 ++#define SYS_nfstat 279 ++#define SYS_nlstat 280 ++#define SYS_preadv 289 ++#define SYS_pwritev 290 ++ /* 297 is old fhstatfs */ ++#define SYS_fhopen 298 ++#define SYS_fhstat 299 ++#define SYS_modnext 300 ++#define SYS_modstat 301 ++#define SYS_modfnext 302 ++#define SYS_modfind 303 ++#define SYS_kldload 304 ++#define SYS_kldunload 305 ++#define SYS_kldfind 306 ++#define SYS_kldnext 307 ++#define SYS_kldstat 308 ++#define SYS_kldfirstmod 309 ++#define SYS_getsid 310 ++#define SYS_setresuid 311 ++#define SYS_setresgid 312 ++ /* 313 is obsolete signanosleep */ ++#define SYS_aio_return 314 ++#define SYS_aio_suspend 315 ++#define SYS_aio_cancel 316 ++#define SYS_aio_error 317 ++#define SYS_aio_read 318 ++#define SYS_aio_write 319 ++#define SYS_lio_listio 320 ++#define SYS_yield 321 ++ /* 322 is obsolete thr_sleep */ ++ /* 323 is obsolete thr_wakeup */ ++#define SYS_mlockall 324 ++#define SYS_munlockall 325 ++#define SYS_getcwd 326 ++#define SYS_sched_setparam 327 ++#define SYS_sched_getparam 328 ++#define SYS_sched_setscheduler 329 ++#define SYS_sched_getscheduler 330 ++#define SYS_sched_yield 331 ++#define SYS_sched_get_priority_max 332 ++#define SYS_sched_get_priority_min 333 ++#define SYS_sched_rr_get_interval 334 ++#define SYS_utrace 335 ++ /* 336 is old sendfile */ ++#define SYS_kldsym 337 ++#define SYS_jail 338 ++#define SYS_sigprocmask 340 ++#define SYS_sigsuspend 341 ++ /* 342 is old sigaction */ ++#define SYS_sigpending 343 ++ /* 344 is old sigreturn */ ++#define SYS_sigtimedwait 345 ++#define SYS_sigwaitinfo 346 ++#define SYS_acl_get_file 347 ++#define SYS_acl_set_file 348 ++#define SYS_acl_get_fd 349 ++#define SYS_acl_set_fd 350 ++#define SYS_acl_delete_file 351 ++#define SYS_acl_delete_fd 352 ++#define SYS_acl_aclcheck_file 353 ++#define SYS_acl_aclcheck_fd 354 ++#define SYS_extattrctl 355 ++#define SYS_extattr_set_file 356 ++#define SYS_extattr_get_file 357 ++#define SYS_extattr_delete_file 358 ++#define SYS_aio_waitcomplete 359 ++#define SYS_getresuid 360 ++#define SYS_getresgid 361 ++#define SYS_kqueue 362 ++#define SYS_kevent 363 ++#define SYS_extattr_set_fd 371 ++#define SYS_extattr_get_fd 372 ++#define SYS_extattr_delete_fd 373 ++#define SYS_setugid 374 ++#define SYS_nfsclnt 375 ++#define SYS_eaccess 376 ++#define SYS_nmount 378 ++#define SYS_kse_exit 379 ++#define SYS_kse_wakeup 380 ++#define SYS_kse_create 381 ++#define SYS_kse_thr_interrupt 382 ++#define SYS_kse_release 383 ++#define SYS_mac_get_proc 384 ++#define SYS_mac_set_proc 385 ++#define SYS_mac_get_fd 386 ++#define SYS_mac_get_file 387 ++#define SYS_mac_set_fd 388 ++#define SYS_mac_set_file 389 ++#define SYS_kenv 390 ++#define SYS_lchflags 391 ++#define SYS_uuidgen 392 ++#define SYS_sendfile 393 ++#define SYS_mac_syscall 394 ++#define SYS_getfsstat 395 ++#define SYS_statfs 396 ++#define SYS_fstatfs 397 ++#define SYS_fhstatfs 398 ++#define SYS_ksem_close 400 ++#define SYS_ksem_post 401 ++#define SYS_ksem_wait 402 ++#define SYS_ksem_trywait 403 ++#define SYS_ksem_init 404 ++#define SYS_ksem_open 405 ++#define SYS_ksem_unlink 406 ++#define SYS_ksem_getvalue 407 ++#define SYS_ksem_destroy 408 ++#define SYS_mac_get_pid 409 ++#define SYS_mac_get_link 410 ++#define SYS_mac_set_link 411 ++#define SYS_extattr_set_link 412 ++#define SYS_extattr_get_link 413 ++#define SYS_extattr_delete_link 414 ++#define SYS_mac_execve 415 ++#define SYS_sigaction 416 ++#define SYS_sigreturn 417 ++#define SYS_getcontext 421 ++#define SYS_setcontext 422 ++#define SYS_swapcontext 423 ++#define SYS_swapoff 424 ++#define SYS_acl_get_link 425 ++#define SYS_acl_set_link 426 ++#define SYS_acl_delete_link 427 ++#define SYS_acl_aclcheck_link 428 ++#define SYS_sigwait 429 ++#define SYS_thr_create 430 ++#define SYS_thr_exit 431 ++#define SYS_thr_self 432 ++#define SYS_thr_kill 433 ++#define SYS__umtx_lock 434 ++#define SYS__umtx_unlock 435 ++#define SYS_jail_attach 436 ++#define SYS_extattr_list_fd 437 ++#define SYS_extattr_list_file 438 ++#define SYS_extattr_list_link 439 ++#define SYS_kse_switchin 440 ++#define SYS_ksem_timedwait 441 ++#define SYS_thr_suspend 442 ++#define SYS_thr_wake 443 ++#define SYS_kldunloadf 444 ++#define SYS_MAXSYSCALL 445 ++ ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/sysmacros.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/sysmacros.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/sysmacros.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/sysmacros.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,31 @@ ++/* Definitions of macros to access `dev_t' values. FreeBSD version. ++ Copyright (C) 1996-1997, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_SYSMACROS_H ++#define _SYS_SYSMACROS_H 1 ++ ++/* For compatibility we provide alternative names. ++ ++ The problem here is that compilers other than GCC probably don't ++ have the `long long' type and so `dev_t' is actually an array. */ ++#define major(dev) ((int)(((unsigned int) (dev) >> 8) & 0xff)) ++#define minor(dev) ((int)((dev) & 0xffff00ff)) ++#define makedev(major, minor) (((major) << 8) | (minor)) ++ ++#endif /* sys/sysmacros.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/ttydefaults.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ttydefaults.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/ttydefaults.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ttydefaults.h 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,96 @@ ++/*- ++ * Copyright (c) 1982, 1986, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * (c) UNIX System Laboratories, Inc. ++ * All or some portions of this file are derived from material licensed ++ * to the University of California by American Telephone and Telegraph ++ * Co. or Unix System Laboratories, Inc. and are reproduced herein with ++ * the permission of UNIX System Laboratories, Inc. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)ttydefaults.h 8.4 (Berkeley) 1/21/94 ++ */ ++ ++/* ++ * System wide defaults for terminal state. FreeBSD version. ++ */ ++#ifndef _SYS_TTYDEFAULTS_H_ ++#define _SYS_TTYDEFAULTS_H_ ++ ++/* ++ * Defaults on "first" open. ++ */ ++#define TTYDEF_IFLAG (BRKINT | ICRNL | IMAXBEL | IXON | IXANY) ++#define TTYDEF_OFLAG (OPOST | ONLCR) ++#define TTYDEF_LFLAG (ECHO | ICANON | ISIG | IEXTEN | ECHOE|ECHOKE|ECHOCTL) ++#define TTYDEF_CFLAG (CREAD | CS8 | HUPCL) ++#define TTYDEF_SPEED (B9600) ++ ++/* ++ * Control Character Defaults ++ */ ++#define CTRL(x) (x&037) ++#define CEOF CTRL('d') ++#ifdef _POSIX_VDISABLE ++# define CEOL _POSIX_VDISABLE ++#else ++# define CEOL ((unsigned char)'\377') /* XXX avoid _POSIX_VDISABLE */ ++#endif ++#define CERASE 0177 ++#define CINTR CTRL('c') ++#define CSTATUS CTRL('t') ++#define CKILL CTRL('u') ++#define CMIN 1 ++#define CQUIT 034 /* FS, ^\ */ ++#define CSUSP CTRL('z') ++#define CTIME 0 ++#define CDSUSP CTRL('y') ++#define CSTART CTRL('q') ++#define CSTOP CTRL('s') ++#define CLNEXT CTRL('v') ++#define CDISCARD CTRL('o') ++#define CWERASE CTRL('w') ++#define CREPRINT CTRL('r') ++#define CEOT CEOF ++/* compat */ ++#define CBRK CEOL ++#define CRPRNT CREPRINT ++#define CFLUSH CDISCARD ++ ++/* PROTECTED INCLUSION ENDS HERE */ ++#endif /* !_SYS_TTYDEFAULTS_H_ */ ++ ++/* ++ * #define TTYDEFCHARS to include an array of default control characters. ++ */ ++#ifdef TTYDEFCHARS ++cc_t ttydefchars[NCCS] = { ++ CEOF, CEOL, CEOL, CERASE, CWERASE, CKILL, CREPRINT, ++ _POSIX_VDISABLE, CINTR, CQUIT, CSUSP, CDSUSP, CSTART, CSTOP, CLNEXT, ++ CDISCARD, CMIN, CTIME, CSTATUS, _POSIX_VDISABLE ++}; ++#undef TTYDEFCHARS ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sys/ucontext.h sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ucontext.h +--- null/unix/bsd/bsd4.4/kfreebsd/sys/ucontext.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ucontext.h 2006-01-17 16:38:57.000000000 +0100 +@@ -0,0 +1,48 @@ ++/* Data structures for user-level context switching. Generic version. ++ Copyright (C) 1997-1999, 2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* This file's definitions suffice for any platform where all ++ the machine-specific state is described in `struct sigcontext'. */ ++ ++#ifndef _SYS_UCONTEXT_H ++#define _SYS_UCONTEXT_H 1 ++ ++#include ++#include ++ ++/* We need the signal context definitions even if they are not used ++ included in . */ ++#include ++ ++/* This include file defines the type 'mcontext_t'. */ ++#include ++ ++/* Userlevel context. */ ++typedef struct ucontext ++ { ++ __sigset_t uc_sigmask; ++ mcontext_t uc_mcontext; ++ struct ucontext *uc_link; ++ stack_t uc_stack; ++ int uc_flags; ++#define UCF_SWAPPED 0x00000001 /* Used by swapcontext(3). */ ++ int __unused1[4]; ++ } ucontext_t; ++ ++#endif /* sys/ucontext.h */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/syscalls-inline.h sysdeps/unix/bsd/bsd4.4/kfreebsd/syscalls-inline.h +--- null/unix/bsd/bsd4.4/kfreebsd/syscalls-inline.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/syscalls-inline.h 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,39 @@ ++/* prototypes of generally used "inline syscalls" ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 KFREEBSD_INLINE_SYSCALLS_H ++#define KFREEBSD_INLINE_SYSCALLS_H ++ ++#include ++ ++struct iovec; ++struct rusage; ++ ++int __syscall_open(const char *path, int flags, ...); ++int __syscall_close(int fd); ++ ++ssize_t __syscall_read(int fd, void *buf, size_t nbyte); ++ssize_t __syscall_write(int fd, const void *buf, size_t nbyte); ++ssize_t __syscall_writev(int fd, const struct iovec *iovp, int iovcnt); ++ ++int __syscall_fcntl(int fd, int cmd, ...); ++int __syscall_fork(void); ++int __syscall_wait4(int pid, int *status, int options, struct rusage *rusage); ++ ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/syscalls.list sysdeps/unix/bsd/bsd4.4/kfreebsd/syscalls.list +--- null/unix/bsd/bsd4.4/kfreebsd/syscalls.list 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/syscalls.list 2006-03-20 09:32:48.000000000 +0100 +@@ -0,0 +1,151 @@ ++# File name Caller Syscall name # args Strong name Weak names ++ ++acl_aclcheck_fd - acl_aclcheck_fd i:iip __acl_aclcheck_fd ++acl_aclcheck_file - acl_aclcheck_file i:sip __acl_aclcheck_file ++acl_delete_fd - acl_delete_fd i:ii __acl_delete_fd ++acl_delete_file - acl_delete_file i:si __acl_delete_file ++acl_get_fd - acl_get_fd i:iip __acl_get_fd ++acl_get_file - acl_get_file i:sip __acl_get_file ++acl_set_fd - acl_set_fd i:iip __acl_set_fd ++acl_set_file - acl_set_file i:sip __acl_set_file ++sys_aio_cancel - aio_cancel i:ip __syscall_aio_cancel ++sys_aio_error - aio_error i:p __syscall_aio_error ++sys_aio_read - aio_read i:p __syscall_aio_read ++sys_aio_return - aio_return i:p __syscall_aio_return ++sys_aio_suspend - aio_suspend i:bnP __syscall_aio_suspend ++sys_aio_waitcomplete - aio_waitcomplete i:pp __syscall_aio_waitcomplete ++sys_aio_write - aio_write i:p __syscall_aio_write ++sys_clock_getres - clock_getres i:ip __syscall_clock_getres ++sys_clock_gettime - clock_gettime i:ip __syscall_clock_gettime ++sys_clock_settime - clock_settime i:ip __syscall_clock_settime ++sys_execve - execve i:ppp __syscall_execve ++extattrctl - extattrctl i:sisI extattrctl ++extattr_delete_file - extattr_delete_file i:ss extattr_delete_file ++extattr_get_file - extattr_get_file i:ssbn extattr_get_file ++extattr_set_file - extattr_set_file i:ssbn extattr_set_file ++fhopen - fhopen i:pi fhopen ++sys_fork - fork i: __syscall_fork fork ++sys_fhstat - fhstat i:pp __syscall_fhstat ++sys_getfsstat - getfsstat i:pii __syscall_getfsstat ++sys_statfs - statfs i:sp __syscall_statfs ++sys_fstatfs - fstatfs i:ip __syscall_fstatfs ++sys_fhstatfs - fhstatfs i:pp __syscall_fhstatfs ++sys_fstat - fstat i:ip __syscall_fstat ++sys_ftruncate - ftruncate i:iii __syscall_ftruncate ++futimes - futimes i:ip __futimes futimes ++sys_getcwd - getcwd i:bn __syscall_getcwd ++sys_getdents - getdents i:ibn __syscall_getdents ++sys_getdirentries - getdirentries i:ibnP __syscall_getdirentries ++getfh - getfh i:sp getfh ++sys_getlogin - getlogin i:bn __syscall_getlogin ++getpgid - getpgid i:i __getpgid __getpgid_internal getpgid ++getpgrp - getpgrp i: getpgrp ++getresgid - getresgid i:ppp getresgid ++getresuid - getresuid i:ppp getresuid ++getrlimit - getrlimit i:ip __getrlimit getrlimit getrlimit64 ++getsid - getsid i:i getsid ++issetugid - issetugid i: issetugid ++jail - jail i:p jail ++kldfind - kldfind i:s kldfind ++kldfirstmod - kldfirstmod i:i kldfirstmod ++kldload - kldload i:s kldload ++kldnext - kldnext i:i kldnext ++kldstat - kldstat i:ip kldstat ++kldsym - kldsym i:iip kldsym ++kldunload - kldunload i:i kldunload ++kldunloadf - kldunloadf i:ii kldunloadf ++ktrace - ktrace i:siii ktrace ++lchmod - lchmod i:si lchmod ++lchown - lchown i:sii __lchown lchown ++sys_lio_listio - lio_listio i:ibnP __syscall_lio_listio ++sys_lseek - lseek i:iiii __syscall_lseek ++sys_lstat - lstat i:sp __syscall_lstat ++lutimes - lutimes i:sp __lutimes lutimes ++posix_madvise - madvise i:pii posix_madvise ++minherit - minherit i:aii minherit ++mincore - mincore i:anV mincore ++mlock - mlock i:bn mlock ++mlockall - mlockall i:i mlockall ++mkfifo - mkfifo i:si __mkfifo mkfifo ++sys_mknod - mknod i:sii __syscall_mknod ++sys_mmap - mmap b:aniiiii __syscall_mmap ++sys_munmap munmap munmap i:pi __syscall_munmap ++modfind - modfind i:s modfind ++modfnext - modfnext i:i modfnext ++modnext - modnext i:i modnext ++modstat - modstat i:ip modstat ++mount - mount i:ssiP mount ++msgctl - msgctl i:iip msgctl ++msgget - msgget i:ii msgget ++msgrcv - msgrcv Ci:ibnii __libc_msgrcv msgrcv ++msgsnd - msgsnd Ci:ibni __libc_msgsnd msgsnd ++munlock - munlock i:ai munlock ++munlockall - munlockall i: munlockall ++nanosleep - nanosleep Ci:pp __libc_nanosleep __nanosleep nanosleep ++nmount - nmount i:pii nmount ++sys_nfstat - nfstat i:ip __syscall_nfstat ++sys_nlstat - nlstat i:sp __syscall_nlstat ++sys_nstat - nstat i:sp __syscall_nstat ++ntp_adjtime - ntp_adjtime i:p ntp_adjtime ++obreak - obreak i:a __syscall_obreak ++sys_open - open i:siv __syscall_open ++poll - poll Ci:pii __poll poll ++sys_pread - pread i:ibnii __syscall_pread ++sys_ptrace - ptrace i:iipi __syscall_ptrace ++sys_pwrite - pwrite i:ibnii __syscall_pwrite ++quotactl - quotactl i:siip quotactl ++sys_readv - readv i:ipi __syscall_readv ++rfork - rfork i:i __rfork rfork ++rtprio - rtprio i:iip __rtprio rtprio ++sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler ++sched_primax - sched_get_priority_max i:i __sched_get_priority_max sched_get_priority_max ++sched_primin - sched_get_priority_min i:i __sched_get_priority_min sched_get_priority_min ++sched_rr_gi - sched_rr_get_interval i:ip __sched_rr_get_interval sched_rr_get_interval ++sched_setp - sched_setparam i:ip __sched_setparam sched_setparam ++sched_sets - sched_setscheduler i:iip __sched_setscheduler sched_setscheduler ++sched_yield - sched_yield i: __sched_yield sched_yield ++semget - semget i:iii semget ++semop - semop i:ipi semop ++bsd_sendfile - sendfile i:iiiippi bsd_sendfile ++setegid - setegid i:i setegid ++seteuid - seteuid i:i seteuid ++setgid - setgid i:i __setgid setgid ++sys_setlogin - setlogin i:s __syscall_setlogin ++setpgid - setpgid i:ii __setpgid setpgid ++setresgid - setresgid i:iii setresgid ++setresuid - setresuid i:iii setresuid ++setrlimit - setrlimit i:ip __setrlimit setrlimit setrlimit64 ++setsid - setsid i: __setsid setsid ++setuid - setuid i:i __setuid setuid ++shmat - shmat i:iai shmat ++shmctl - shmctl i:iip shmctl ++shmdt - shmdt i:a shmdt ++shmget - shmget i:iii shmget ++sys_sigaction - sigaction i:ipp __syscall_sigaction ++sigpending - sigpending i:p sigpending ++sigprocmask - sigprocmask i:iPP __sigprocmask sigprocmask ++sigsuspend - sigsuspend Ci:p __sigsuspend sigsuspend ++sigwaitinfo - sigwaitinfo Ci:pp __sigwaitinfo sigwaitinfo ++sigtimedwait - sigtimedwait Ci:ppP __sigtimedwait sigtimedwait ++sys_stat - stat i:sp __syscall_stat ++sysarch - sysarch i:ip __sysarch sysarch ++sysctl - sysctl i:pibNbn __sysctl sysctl ++sys_truncate - truncate i:sii __syscall_truncate ++undelete - undelete i:s undelete ++unmount - unmount i:si unmount ++utrace - utrace i:bn utrace ++sys_writev - writev i:ipi __syscall_writev ++yield - yield i: __syscall_yield ++wait4 - wait4 i:iWiP __syscall_wait4 __wait4 wait4 ++sys_close - close i:i __syscall_close ++sys_fcntl - fcntl i:iiF __syscall_fcntl ++sys_write - write i:ibn __syscall_write ++sys_read - read i:ibn __syscall_read ++sys_connect - connect i:ipi __syscall_connect ++sys_bind - bind i:ipi __syscall_bind ++sys_sendto - sendto i:ibnibn __syscall_sendto ++swapcontext - swapcontext i:pp __swapcontext swapcontext ++swapon - swapon i:s swapon ++swapoff - swapoff i:s swapoff ++getcontext - getcontext i:p __getcontext getcontext ++setcontext - setcontext i:p __setcontext setcontext +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sysconf.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sysconf.c +--- null/unix/bsd/bsd4.4/kfreebsd/sysconf.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sysconf.c 2006-01-16 01:49:07.000000000 +0100 +@@ -0,0 +1,50 @@ ++/* Get file-specific information about a file. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++static long int posix_sysconf (int name); ++ ++/* Get the value of the system variable NAME. */ ++long int ++__sysconf (int name) ++{ ++ if (name == _SC_CPUTIME || name == _SC_THREAD_CPUTIME) ++ { ++#if HP_TIMING_AVAIL ++ // XXX We can add here test for machines which cannot support a ++ // XXX usable TSC. ++ return 200112L; ++#else ++ return -1; ++#endif ++ } ++ return posix_sysconf (name); ++} ++ ++/* Now the POSIX version. */ ++#undef __sysconf ++#define __sysconf static posix_sysconf ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/sysctlbyname.c sysdeps/unix/bsd/bsd4.4/kfreebsd/sysctlbyname.c +--- null/unix/bsd/bsd4.4/kfreebsd/sysctlbyname.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sysctlbyname.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,44 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Read or write system parameters. */ ++int ++__sysctlbyname (const char *name, void *oldval, size_t *oldlenp, void *newval, size_t newlen) ++{ ++ int request[CTL_MAXNAME]; ++ size_t requestlen = sizeof (request); ++ ++ /* Convert the string NAME to a binary encoded request. The kernel ++ contains a routine for doing this, called "name2oid". But the way ++ to call it is a little bit strange. */ ++ int name2oid_request[2] = { 0, 3 }; ++ if (__sysctl (name2oid_request, 2, request, &requestlen, ++ (void *) name, strlen (name)) ++ < 0) ++ return -1; ++ ++ /* Now call sysctl using the binary encoded request. */ ++ return __sysctl (request, requestlen / sizeof (int), ++ oldval, oldlenp, newval, newlen); ++} ++ ++weak_alias (__sysctlbyname, sysctlbyname) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/tcdrain.c sysdeps/unix/bsd/bsd4.4/kfreebsd/tcdrain.c +--- null/unix/bsd/bsd4.4/kfreebsd/tcdrain.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/tcdrain.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,41 @@ ++/* Copyright (C) 1995, 1996, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* Wait for pending output to be written on FD. */ ++int ++__libc_tcdrain (int fd) ++{ ++ if (SINGLE_THREAD_P) ++ return __ioctl (fd, TIOCDRAIN); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ++ int result = __ioctl (fd, TIOCDRAIN); ++ ++ LIBC_CANCEL_RESET (oldtype); ++ ++ return result; ++} ++weak_alias (__libc_tcdrain, tcdrain) ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/telldir.c sysdeps/unix/bsd/bsd4.4/kfreebsd/telldir.c +--- null/unix/bsd/bsd4.4/kfreebsd/telldir.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/telldir.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,2 @@ ++/* Avoid , which doesn't pass the testsuite. */ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/truncate64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/truncate64.c +--- null/unix/bsd/bsd4.4/kfreebsd/truncate64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/truncate64.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1 @@ ++/* 'truncate64' is the same as 'truncate', because __off64_t == __off_t. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/truncate.c sysdeps/unix/bsd/bsd4.4/kfreebsd/truncate.c +--- null/unix/bsd/bsd4.4/kfreebsd/truncate.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/truncate.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* The real system call has a word of padding before the 64-bit off_t ++ argument. */ ++extern int __syscall_truncate (const char *__file, int __unused1, ++ __off_t __length) __THROW; ++ ++int ++__truncate (const char *file, __off_t length) ++{ ++ /* We pass 2 arguments in 4 words. */ ++ return INLINE_SYSCALL (truncate, 2, file, 0, length); ++} ++ ++weak_alias (__truncate, truncate) ++ ++/* 'truncate64' is the same as 'truncate', because __off64_t == __off_t. */ ++strong_alias (__truncate, __truncate64) ++weak_alias (__truncate64, truncate64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/uname.c sysdeps/unix/bsd/bsd4.4/kfreebsd/uname.c +--- null/unix/bsd/bsd4.4/kfreebsd/uname.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/uname.c 2006-03-01 20:13:16.000000000 +0100 +@@ -0,0 +1,110 @@ ++/* Copyright (C) 2002, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible . ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 SYSNAME "GNU/kFreeBSD" ++#define SYSNAME_LEN 13 ++ ++/* Check for bounds in pre-processor */ ++#if SYSNAME_LEN > _UTSNAME_SYSNAME_LENGTH ++#error ++#endif ++ ++/* Put information about the system in NAME. */ ++int ++__uname (struct utsname *name) ++{ ++ int request[2] = { CTL_KERN }; ++ size_t len; ++ ++ /* Fill sysname: "uname -s". */ ++ strcpy (name->sysname, SYSNAME); ++ ++ /* Fill nodename: "uname -n". Fetch sysctl "kern.hostname". */ ++ request[1] = KERN_HOSTNAME; ++ len = sizeof (name->nodename); ++ if (__sysctl (request, 2, name->nodename, &len, NULL, 0) >= 0) ++ { ++ if (len < sizeof (name->nodename)) ++ name->nodename[len] = '\0'; ++ } ++ ++ /* Fill release: "uname -r". Fetch sysctl "kern.osrelease". */ ++ request[1] = KERN_OSRELEASE; ++ len = sizeof (name->release); ++ if (__sysctl (request, 2, name->release, &len, NULL, 0) >= 0) ++ { ++ if (len < sizeof (name->release)) ++ name->release[len] = '\0'; ++ } ++ ++ /* Fill version: "uname -v". Fetch sysctl "kern.version". */ ++ request[1] = KERN_VERSION; ++ len = sizeof (name->version); ++ if (__sysctl (request, 2, name->version, &len, NULL, 0) >= 0) ++ { ++ if (len < sizeof (name->version)) ++ name->version[len] = '\0'; ++ } ++ ++ /* Remove trailing whitespace. Turn non-trailing whitespace to ++ spaces. */ ++ { ++ char *p0 = name->version; ++ char *p = p0 + __strnlen (p0, sizeof (name->version)); ++ ++ while (p > p0 && (p[-1] == '\t' || p[-1] == '\n' || p[-1] == ' ')) ++ *--p = '\0'; ++ ++ while (p > p0) ++ { ++ --p; ++ if (*p == '\t' || *p == '\n') ++ *p = ' '; ++ } ++ } ++ ++#ifdef __x86_64__ ++ /* Check for bounds in pre-processor */ ++# if 7 > _UTSNAME_MACHINE_LENGTH ++# error ++# endif ++ /* Pristine FreeBSD kernel would return "amd64". Avoid that. */ ++ strcpy (name->machine, "x86_64"); ++#else ++ /* Fill machine: "uname -m". Fetch sysctl "hw.machine". */ ++ request[0] = CTL_HW; ++ request[1] = HW_MACHINE; ++ len = sizeof (name->machine); ++ if (__sysctl (request, 2, name->machine, &len, NULL, 0) >= 0) ++ { ++ if (len < sizeof (name->machine)) ++ name->machine[len] = '\0'; ++ } ++#endif ++ ++ return 0; ++} ++libc_hidden_def (__uname) ++weak_alias (__uname, uname) ++libc_hidden_def (uname) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/usleep.c sysdeps/unix/bsd/bsd4.4/kfreebsd/usleep.c +--- null/unix/bsd/bsd4.4/kfreebsd/usleep.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/usleep.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,53 @@ ++/* Implementation of the BSD usleep function using nanosleep. ++ Copyright (C) 1996-1997, 1999, 2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++extern int __nanosleep (const struct timespec *requested_time, ++ struct timespec *remaining); ++ ++int ++usleep (useconds_t useconds) ++{ ++ unsigned int sec; ++ unsigned int usec; ++ struct timespec ts; ++ ++ /* POSIX:2001 says that useconds >= 1000000 is invalid; nevertheless let's ++ be forgiving. */ ++ if (__builtin_expect (useconds < 1000000, 1)) ++ { ++ sec = 0; ++ usec = useconds; ++ } ++ else ++ { ++ sec = useconds / 1000000; ++ usec = useconds % 1000000; ++ } ++ ++ ts.tv_sec = sec; ++ ts.tv_nsec = usec * 1000; /* Multiply as 32-bit integers. */ ++ ++ /* Note the usleep() is a cancellation point. But since we call ++ nanosleep() which itself is a cancellation point we do not have ++ to do anything here. */ ++ return __nanosleep (&ts, NULL); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/ustat.c sysdeps/unix/bsd/bsd4.4/kfreebsd/ustat.c +--- null/unix/bsd/bsd4.4/kfreebsd/ustat.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/ustat.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,70 @@ ++/* Return info on filesystem. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++int ++ustat (dev_t dev, struct ustat *ubuf) ++{ ++ int mntcount; ++ struct statfs *mntlist; ++ ++ /* Search for the device among the f_mntfromname fields of all mounted ++ filesystems. */ ++ mntcount = __getmntinfo (&mntlist, 0); ++ if (mntcount == 0 && errno != 0) ++ return -1; ++ if (mntcount > 0) ++ { ++ int i; ++ ++ for (i = 0; i < mntcount; i++) ++ { ++ struct statfs *mnt = &mntlist[i]; ++ struct stat statbuf; ++ ++ if ((__strnlen (mnt->f_mntfromname, sizeof (mnt->f_mntfromname)) ++ < sizeof (mnt->f_mntfromname)) ++ && __xstat (_STAT_VER, mnt->f_mntfromname, &statbuf) >= 0 ++ && S_ISBLK (statbuf.st_mode) ++ && statbuf.st_rdev == dev) ++ { ++ /* Found the device. Now produce the result. */ ++ memset (ubuf, '\0', sizeof (struct ustat)); ++ ubuf->f_tfree = mnt->f_bfree; ++ ubuf->f_tinode = mnt->f_ffree; ++ ++ free (mntlist); ++ return 0; ++ } ++ } ++ ++ free (mntlist); ++ } ++ ++ /* DEV is not among the mounted devices. */ ++ __set_errno (EINVAL); ++ return -1; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/bits/utmp.h sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/bits/utmp.h +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/bits/utmp.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/bits/utmp.h 2006-01-03 23:18:02.000000000 +0100 +@@ -0,0 +1,50 @@ ++/* The `struct utmp' type, describing entries in the utmp file. For FreeBSD. ++ Copyright (C) 1993, 1996-1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _UTMP_H ++# error "Never include directly; use instead." ++#endif ++ ++#include ++#include ++ ++ ++#define UT_NAMESIZE 16 ++#define UT_LINESIZE 8 ++#define UT_HOSTSIZE 16 ++ ++ ++struct lastlog ++ { ++ time_t ll_time; ++ char ll_line[UT_LINESIZE]; ++ char ll_host[UT_HOSTSIZE]; ++ }; ++ ++struct utmp ++ { ++ char ut_line[UT_LINESIZE]; ++ char ut_user[UT_NAMESIZE]; ++#define ut_name ut_user ++ char ut_host[UT_HOSTSIZE]; ++ __time_t ut_time; ++ }; ++ ++ ++#define _HAVE_UT_HOST 1 /* We have the ut_host field. */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutmp.c sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutmp.c +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutmp.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutmp.c 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,31 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __utmpx_to_utmp (const struct utmpx *, struct utmp *); ++ ++/* Copy the information in UTMPX to UTMP. */ ++void ++getutmp (const struct utmpx *utmpx, struct utmp *utmp) ++{ ++ if (__utmpx_to_utmp (utmpx, utmp) < 0) ++ memset (utmp, '\0', sizeof (struct utmp)); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutmpx.c sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutmpx.c +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutmpx.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutmpx.c 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,31 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __utmp_to_utmpx (const struct utmp *, struct utmpx *); ++ ++/* Copy the information in UTMP to UTMPX. */ ++void ++getutmpx (const struct utmp *utmp, struct utmpx *utmpx) ++{ ++ if (__utmp_to_utmpx (utmp, utmpx) < 0) ++ memset (utmpx, '\0', sizeof (struct utmpx)); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxent.c sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxent.c +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxent.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxent.c 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,46 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __utmp_to_utmpx (const struct utmp *, struct utmpx *); ++ ++/* Static buffer to store the result. */ ++static struct utmpx buffer; ++ ++struct utmpx * ++__getutxent (void) ++{ ++ for (;;) ++ { ++ struct utmp *tmp = __getutent (); ++ ++ if (tmp == NULL) ++ return NULL; ++ ++ if (__utmp_to_utmpx (tmp, &buffer) >= 0) ++ return &buffer; ++ ++ /* Skip entries that cannot be converted to utmpx. */ ++ } ++} ++ ++weak_alias (__getutxent, getutxent) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxid.c sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxid.c +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxid.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxid.c 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,68 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern struct utmpx *__getutxent (void); ++ ++struct utmpx * ++getutxid (const struct utmpx *id) ++{ ++ switch (id->ut_type) ++ { ++ case INIT_PROCESS: ++ case LOGIN_PROCESS: ++ case USER_PROCESS: ++ case DEAD_PROCESS: ++ for (;;) ++ { ++ struct utmpx *next = __getutxent (); ++ ++ if (next == NULL) ++ return NULL; ++ ++ switch (next->ut_type) ++ { ++ case INIT_PROCESS: ++ case LOGIN_PROCESS: ++ case USER_PROCESS: ++ case DEAD_PROCESS: ++ if (strncmp (next->ut_id, id->ut_id, sizeof (id->ut_id)) == 0) ++ return next; ++ break; ++ default: ++ break; ++ } ++ } ++ ++ default: ++ for (;;) ++ { ++ struct utmpx *next = __getutxent (); ++ ++ if (next == NULL) ++ return NULL; ++ ++ if (next->ut_type == id->ut_type) ++ return next; ++ } ++ } ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxline.c sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxline.c +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxline.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxline.c 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern struct utmpx *__getutxent (void); ++ ++struct utmpx * ++getutxline (const struct utmpx *line) ++{ ++ for (;;) ++ { ++ struct utmpx *next = __getutxent (); ++ ++ if (next == NULL) ++ return NULL; ++ ++ if ((next->ut_type == LOGIN_PROCESS || next->ut_type == USER_PROCESS) ++ && strncmp (next->ut_line, line->ut_line, __UT_LINESIZE) == 0) ++ return next; ++ } ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/Makefile sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/Makefile +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/Makefile 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,6 @@ ++# Additional functions: ++ ++ifeq ($(subdir),login) ++# For . ++sysdep_routines += utmpconv ++endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/pututxline.c sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/pututxline.c +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/pututxline.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/pututxline.c 2006-01-03 23:16:40.000000000 +0100 +@@ -0,0 +1,50 @@ ++/* Copyright (C) 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __utmp_to_utmpx (const struct utmp *, struct utmpx *); ++extern int __utmpx_to_utmp (const struct utmpx *, struct utmp *); ++ ++/* Static buffer to store the result. */ ++static struct utmpx buffer; ++ ++struct utmpx * ++pututxline (const struct utmpx *utmpx) ++{ ++ struct utmp tmp; ++ ++ if (__utmpx_to_utmp (utmpx, &tmp) >= 0) ++ { ++ struct utmp *tmpres = __pututline (&tmp); ++ ++ if (tmpres != NULL) ++ { ++ if (__utmp_to_utmpx (tmpres, &buffer) >= 0) ++ return &buffer; ++ ++ /* Hmm. We wrote a 'struct utmp' that we cannot convert back ++ to 'struct utmpx'. Shouldn't happen that often. */ ++ return NULL; ++ } ++ } ++ return NULL; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/updwtmpx.c sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/updwtmpx.c +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/updwtmpx.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/updwtmpx.c 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,31 @@ ++/* Copyright (C) 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++extern int __utmpx_to_utmp (const struct utmpx *, struct utmp *); ++ ++void ++updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx) ++{ ++ struct utmp tmp; ++ ++ if (__utmpx_to_utmp (utmpx, &tmp) >= 0) ++ __updwtmp (wtmpx_file, &tmp); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmpconv.c sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmpconv.c +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmpconv.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmpconv.c 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1,227 @@ ++/* Convert between 'struct utmp' and 'struct utmx'. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* We reuse the 'struct utmp' file format also for 'struct utmpx' records. ++ The mapping from 'struct utmp' to 'struct utmpx' is injective; the ++ reverse mapping succeeds only when common conventions are respected. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* Compare two 'struct utmpx' records. */ ++int ++__utmpx_equal (const struct utmpx *u1, const struct utmpx *u2) ++{ ++ return (u1->ut_type == u2->ut_type) ++ && (u1->ut_pid == u2->ut_pid) ++ && (strncmp (u1->ut_line, u2->ut_line, __UT_LINESIZE) == 0) ++ && (strncmp (u1->ut_id, u2->ut_id, sizeof (u1->ut_id)) == 0) ++ && (strncmp (u1->ut_user, u2->ut_user, __UT_NAMESIZE) == 0) ++ && (strncmp (u1->ut_host, u2->ut_host, __UT_HOSTSIZE) == 0) ++ && (u1->ut_exit.e_termination == u2->ut_exit.e_termination) ++ && (u1->ut_exit.e_exit == u2->ut_exit.e_exit) ++ && (u1->ut_session == u2->ut_session) ++ && (u1->ut_tv.tv_sec == u2->ut_tv.tv_sec) ++ && (u1->ut_tv.tv_usec == u2->ut_tv.tv_usec) ++ && (memcmp (u1->ut_addr_v6, u2->ut_addr_v6, sizeof (u1->ut_addr_v6)) ++ == 0); ++} ++ ++int ++__utmp_to_utmpx (const struct utmp *u, struct utmpx *ux) ++{ ++ memset (ux, '\0', sizeof (struct utmpx)); ++ ++ if (u->ut_line[0] == '\0' && u->ut_name[0] == '\0' && u->ut_host[0] == '\0') ++ { ++ ux->ut_type = EMPTY; ++ } ++ else ++ { ++ if (u->ut_line[0] == '~' && u->ut_line[1] == '\0') ++ { ++ if (strncmp (u->ut_name, "runlevel", UT_NAMESIZE) == 0) ++ ux->ut_type = RUN_LVL; ++ else if (strncmp (u->ut_name, "reboot", UT_NAMESIZE) == 0) ++ ux->ut_type = BOOT_TIME; ++ else if (strncmp (u->ut_name, "acct", UT_NAMESIZE) == 0) ++ ux->ut_type = ACCOUNTING; ++ else ++ return -1; ++ } ++ else if (u->ut_line[0] == '{' && u->ut_line[1] == '\0') ++ { ++ if (strncmp (u->ut_name, "date", UT_NAMESIZE) == 0) ++ ux->ut_type = NEW_TIME; ++ else ++ return -1; ++ } ++ else if (u->ut_line[0] == '|' && u->ut_line[1] == '\0') ++ { ++ if (strncmp (u->ut_name, "date", UT_NAMESIZE) == 0) ++ ux->ut_type = OLD_TIME; ++ else ++ return -1; ++ } ++ else ++ { ++ if (strncmp (u->ut_name, "INIT", UT_NAMESIZE) == 0) ++ ux->ut_type = INIT_PROCESS; ++ else if (strncmp (u->ut_name, "LOGIN", UT_NAMESIZE) == 0) ++ ux->ut_type = LOGIN_PROCESS; ++ else if (strncmp (u->ut_name, "", UT_NAMESIZE) == 0) ++ ux->ut_type = DEAD_PROCESS; ++ else ++ ux->ut_type = USER_PROCESS; ++ ++ if (ux->ut_type == LOGIN_PROCESS || ux->ut_type == USER_PROCESS) ++ strncpy (ux->ut_user, u->ut_name, UT_NAMESIZE); ++ ++ if (strncmp (u->ut_line, "tty", 3) == 0) ++ { ++ strncpy (ux->ut_line, u->ut_line, UT_LINESIZE); ++ strncpy (ux->ut_id, u->ut_line + 3, sizeof (ux->ut_id)); ++ } ++ else ++ { ++ strncpy (ux->ut_id, u->ut_line, sizeof (ux->ut_id)); ++ } ++ } ++ ++ strncpy (ux->ut_host, u->ut_host, UT_HOSTSIZE); ++ ++ /* Hack: Recover the ut_pid from the hidden place after the host. */ ++ if (__strnlen (u->ut_host, UT_HOSTSIZE) < UT_HOSTSIZE - 2) ++ { ++ const char *hidden = u->ut_host + strlen (u->ut_host) + 1; ++ ++ if (hidden[0] != '\0') ++ { ++ size_t n = UT_HOSTSIZE - strlen (u->ut_host) - 1; ++ char buf[UT_HOSTSIZE]; ++ unsigned long pid; ++ char *endp; ++ ++ strncpy (buf, hidden, n); ++ buf[n] = '\0'; ++ ++ pid = strtoul (buf, &endp, 10); ++ if (endp != buf && *endp == '\0') ++ ux->ut_pid = pid; ++ } ++ } ++ ++ ux->ut_tv.tv_sec = u->ut_time; ++ ux->ut_tv.tv_usec = 0; ++ } ++ ++ return 0; ++} ++ ++int ++__utmpx_to_utmp (const struct utmpx *ux, struct utmp *u) ++{ ++ char buf[10+1]; ++ ++ switch (ux->ut_type) ++ { ++ case EMPTY: ++ strncpy (u->ut_line, "", UT_LINESIZE); ++ strncpy (u->ut_name, "", UT_NAMESIZE); ++ strncpy (u->ut_host, "", UT_HOSTSIZE); ++ break; ++ ++ case RUN_LVL: ++ strncpy (u->ut_line, "~", UT_LINESIZE); ++ strncpy (u->ut_name, "runlevel", UT_NAMESIZE); ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ case BOOT_TIME: ++ strncpy (u->ut_line, "~", UT_LINESIZE); ++ strncpy (u->ut_name, "reboot", UT_NAMESIZE); ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ case NEW_TIME: ++ strncpy (u->ut_line, "{", UT_LINESIZE); ++ strncpy (u->ut_name, "date", UT_NAMESIZE); ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ case OLD_TIME: ++ strncpy (u->ut_line, "|", UT_LINESIZE); ++ strncpy (u->ut_name, "date", UT_NAMESIZE); ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ case INIT_PROCESS: ++ case LOGIN_PROCESS: ++ case USER_PROCESS: ++ case DEAD_PROCESS: ++ if (ux->ut_line[0] != '\0') ++ strncpy (u->ut_line, ux->ut_line, UT_LINESIZE); ++ else ++ strncpy (u->ut_line, ux->ut_id, sizeof (ux->ut_id)); ++ switch (ux->ut_type) ++ { ++ case INIT_PROCESS: ++ strncpy (u->ut_name, "INIT", UT_NAMESIZE); ++ break; ++ case LOGIN_PROCESS: ++ strncpy (u->ut_name, "LOGIN", UT_NAMESIZE); ++ break; ++ case USER_PROCESS: ++ strncpy (u->ut_name, ux->ut_user, UT_NAMESIZE); ++ break; ++ case DEAD_PROCESS: ++ strncpy (u->ut_name, "", UT_NAMESIZE); ++ break; ++ } ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ case ACCOUNTING: ++ strncpy (u->ut_line, "~", UT_LINESIZE); ++ strncpy (u->ut_name, "acct", UT_NAMESIZE); ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ default: ++ return -1; ++ } ++ ++ u->ut_time = ux->ut_tv.tv_sec; ++ ++ /* Hack: Put the ut_pid at a hidden place where there is likely room. */ ++ if (ux->ut_pid != 0) ++ { ++ size_t room = UT_HOSTSIZE - strlen (u->ut_host) - 1; ++ ++ sprintf (buf, "%lu", (unsigned long) ux->ut_pid); ++ if (strlen (buf) <= room) ++ strncpy (u->ut_host + strlen (u->ut_host) + 1, buf, room); ++ } ++ ++ return 0; ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp-equal.h sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp-equal.h +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp-equal.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp-equal.h 2006-02-08 16:21:06.000000000 +0100 +@@ -0,0 +1,50 @@ ++/* Copyright (C) 1996-1999,2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include ++ ++/* Test whether two entries match. */ ++static int ++__utmp_equal (const struct utmp *entry, const struct utmp *match) ++{ ++ /* This implementation is consistent with the __utmp_to_utmpx function. */ ++ return ++ (!((entry->ut_line[0] == '\0' && entry->ut_name[0] == '\0' ++ && entry->ut_host[0] == '\0') ++ || ((entry->ut_line[0] == '~' || entry->ut_line[0] == '{' ++ || entry->ut_line[0] == '|') ++ && entry->ut_line[1] == '\0')) ++ && ++ !((match->ut_line[0] == '\0' && match->ut_name[0] == '\0' ++ && match->ut_host[0] == '\0') ++ || ((match->ut_line[0] == '~' || match->ut_line[0] == '{' ++ || match->ut_line[0] == '|') ++ && match->ut_line[1] == '\0')) ++ && ++#if _HAVE_UT_ID - 0 ++ (entry->ut_id[0] && match->ut_id[0] ++ ? strncmp (entry->ut_id, match->ut_id, sizeof match->ut_id) == 0 ++ : strncmp (entry->ut_line, match->ut_line, sizeof match->ut_line) == 0) ++#else ++ strncmp (entry->ut_line, match->ut_line, sizeof match->ut_line) == 0 ++#endif ++ ); ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp_file.c sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp_file.c +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp_file.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp_file.c 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/utmp-utmpx/utmp_file.c sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-utmpx/utmp_file.c +--- null/unix/bsd/bsd4.4/kfreebsd/utmp-utmpx/utmp_file.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-utmpx/utmp_file.c 2006-01-02 19:10:54.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/Versions sysdeps/unix/bsd/bsd4.4/kfreebsd/Versions +--- null/unix/bsd/bsd4.4/kfreebsd/Versions 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/Versions 2006-03-20 09:32:48.000000000 +0100 +@@ -0,0 +1,102 @@ ++libc { ++ # The comment lines with "#errlist-compat" are magic; see errlist-compat.awk. ++ # When you get an error from errlist-compat.awk, you need to add a new ++ # version here. Don't do this blindly, since this means changing the ABI ++ # for all GNU/kFreeBSD configurations. ++ ++ GLIBC_2.2.6 { ++ # c* ++ clone; ++ ++ # e* ++ extattrctl; extattr_delete_file; extattr_get_file; extattr_set_file; ++ ++ # f* ++ fhopen; fhstat; fhstatfs; futimes; ++ ++ # g* ++ getdents; getfh; getfsstat; getfsstat64; getmntinfo; getmntinfo64; ++ getresgid; getresuid; ++ ++ # i* ++ issetugid; ++ ++ # j* ++ jail; ++ ++ # k* ++ kldfind; kldfirstmod; kldload; kldnext; kldstat; kldsym; kldunload; kldunloadf; ++ ktrace; ++ ++ # l* ++ lchmod; lutimes; ++ ++ # m* ++ minherit; modfind; modfnext; modnext; modstat; mount; ++ ++ # n* ++ nmount; ntp_adjtime; ntp_gettime; ++ ++ # q* ++ quotactl; ++ ++ # r* ++ rfork; rtprio; ++ ++ # s* ++ sendfile; setresgid; setresuid; swapoff; swapon; sysarch; sysctl; sysctlbyname; ++ ++ # u* ++ undelete; unmount; utrace; ++ ++ # see . ++ __acl_aclcheck_fd; __acl_aclcheck_file; __acl_delete_fd; __acl_delete_file; ++ __acl_get_fd; __acl_get_file; __acl_set_fd; __acl_set_file; ++ ++ # see . ++ __errno_location; ++ ++ # see . ++ __sysctl; ++ ++ # Questionable system calls. These functions may be removed at any moment. ++ __syscall_aio_cancel; __syscall_aio_error; __syscall_aio_read; ++ __syscall_aio_return; __syscall_aio_suspend; __syscall_aio_waitcomplete; ++ __syscall_aio_write; __syscall_lio_listio; ++ __syscall_obreak; ++ __syscall_yield; ++ } ++ GLIBC_2.3 { ++ #errlist-compat 87 ++ _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; ++ } ++ GLIBC_2.3.4 { ++ # f* ++ fhstat64; fhstatfs64; ++ ++ #errlist-compat 93 ++ _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; ++ ++ # functions used in inline functions or macros ++ __libc_sa_len; ++ } ++ GLIBC_PRIVATE { ++ # needed by libpthread. ++ __clone; __libc_fork; __libc_sigaction; ++ # needed by libpthread as INLINE_SYSCALL: ++ __syscall_fork; __syscall_execve; ++ __syscall_open; __syscall_close; ++ __syscall_read; __syscall_write; ++ __syscall_writev; ++ __syscall_wait4; __syscall_fcntl; ++ # needed by librt as INLINE_SYSCALL: ++ __syscall_clock_getres; __syscall_clock_gettime; __syscall_clock_settime; ++ # misc fixes for FreeBSD: ++ __syscall_lseek; __syscall_pread; __syscall_pwrite; ++ __syscall_sigaction; __syscall_fcntl; ++ __syscall_bind; __syscall_connect; __syscall_sendto; ++ __sigprocmask; __futimes; __ioctl; ++ # global variable used in brk() ++ _end; ++ } ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/wait3.c sysdeps/unix/bsd/bsd4.4/kfreebsd/wait3.c +--- null/unix/bsd/bsd4.4/kfreebsd/wait3.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/wait3.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/wait.c sysdeps/unix/bsd/bsd4.4/kfreebsd/wait.c +--- null/unix/bsd/bsd4.4/kfreebsd/wait.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/wait.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/waitpid.c sysdeps/unix/bsd/bsd4.4/kfreebsd/waitpid.c +--- null/unix/bsd/bsd4.4/kfreebsd/waitpid.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/waitpid.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,56 @@ ++/* Copyright (C) 1991,95,96,97,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* Wait for a child matching PID to die. ++ If PID is greater than 0, match any process whose process ID is PID. ++ If PID is (pid_t) -1, match any process. ++ If PID is (pid_t) 0, match any process with the ++ same process group as the current process. ++ If PID is less than -1, match any process whose ++ process group is the absolute value of PID. ++ If the WNOHANG bit is set in OPTIONS, and that child ++ is not already dead, return (pid_t) 0. If successful, ++ return PID and store the dead child's status in STAT_LOC. ++ Return (pid_t) -1 for errors. If the WUNTRACED bit is set in OPTIONS, ++ return status for stopped children; otherwise don't. */ ++pid_t ++__libc_waitpid (pid_t pid, int *stat_loc, int options) ++{ ++ if (SINGLE_THREAD_P) ++ { ++ return INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL); ++ } ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ++ int result = INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL); ++ ++ LIBC_CANCEL_RESET (oldtype); ++ ++ return result; ++} ++ ++weak_alias (__libc_waitpid, __waitpid) ++libc_hidden_weak (__waitpid) ++weak_alias (__libc_waitpid, waitpid) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/writev.c sysdeps/unix/bsd/bsd4.4/kfreebsd/writev.c +--- null/unix/bsd/bsd4.4/kfreebsd/writev.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/writev.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,57 @@ ++/* writev for FreeBSD. ++ Copyright (C) 1997-1998, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++extern ssize_t __syscall_writev (int, const struct iovec *__unbounded, int); ++ ++static ssize_t __atomic_writev_replacement (int, const struct iovec *, ++ int) internal_function; ++ ++ssize_t ++__libc_writev (int fd, const struct iovec *vector, int count) ++{ ++ if (count <= UIO_MAXIOV) ++ { ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ssize_t result = INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++ ++ } ++ else ++ return __atomic_writev_replacement (fd, vector, count); ++} ++strong_alias (__libc_writev, __writev) ++weak_alias (__libc_writev, writev) ++ ++#define __libc_writev static internal_function __atomic_writev_replacement ++#include ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/mcontext.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/mcontext.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/mcontext.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/mcontext.h 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,101 @@ ++/* Machine-dependent processor state structure for FreeBSD. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++/*- ++ * Copyright (c) 2003 Peter Wemm ++ * Copyright (c) 1999 Marcel Moolenaar ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer ++ * in this position and unchanged. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ * based on $FreeBSD: src/sys/amd64/include/ucontext.h,v 1.18 2003/11/08 04:39:22 peter Exp $ ++ */ ++ ++typedef struct { ++ /* ++ * The first 20 fields must match the definition of ++ * sigcontext. So that we can support sigcontext ++ * and ucontext_t at the same time. ++ */ ++ long mc_onstack; /* XXX - sigcontext compat. */ ++ long mc_rdi; /* machine state (struct trapframe) */ ++ long mc_rsi; ++ long mc_rdx; ++ long mc_rcx; ++ long mc_r8; ++ long mc_r9; ++ long mc_rax; ++ long mc_rbx; ++ long mc_rbp; ++ long mc_r10; ++ long mc_r11; ++ long mc_r12; ++ long mc_r13; ++ long mc_r14; ++ long mc_r15; ++ long mc_trapno; ++ long mc_addr; ++ long mc_flags; ++ long mc_err; ++ long mc_rip; ++ long mc_cs; ++ long mc_rflags; ++ long mc_rsp; ++ long mc_ss; ++ ++ long mc_len; /* sizeof(mcontext_t) */ ++#define _MC_FPFMT_NODEV 0x10000 /* device not present or configured */ ++#define _MC_FPFMT_XMM 0x10002 ++ long mc_fpformat; ++#define _MC_FPOWNED_NONE 0x20000 /* FP state not used */ ++#define _MC_FPOWNED_FPU 0x20001 /* FP state came from FPU */ ++#define _MC_FPOWNED_PCB 0x20002 /* FP state came from PCB */ ++ long mc_ownedfp; ++ /* ++ * See for the internals of mc_fpstate[]. ++ */ ++ long mc_fpstate[64] __attribute__((aligned(16))); ++ long mc_spare[8]; ++} mcontext_t; ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/sigcontext.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/sigcontext.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/sigcontext.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/sigcontext.h 2006-01-22 22:10:19.000000000 +0100 +@@ -0,0 +1,161 @@ ++/* Machine-dependent signal context structure for FreeBSD. i386 version. ++ Copyright (C) 1991-1992,1994,1997,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++#ifndef _BITS_SIGCONTEXT_H ++#define _BITS_SIGCONTEXT_H 1 ++ ++#ifdef __i386__ ++ ++/* State of this thread when the signal was taken. ++ The unions below are for compatibility with Linux (whose sigcontext ++ components don't have sc_ prefix) */ ++struct sigcontext ++ { ++ __sigset_t sc_mask; /* Blocked signals to restore. */ ++ int sc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* Segment registers. */ ++ union { int sc_gs; int gs; }; ++ union { int sc_fs; int fs; }; ++ union { int sc_es; int es; }; ++ union { int sc_ds; int ds; }; ++ ++ /* "General" registers. These members are in the order that the i386 ++ `pusha' and `popa' instructions use (`popa' ignores %esp). */ ++ union { int sc_edi; int edi; }; ++ union { int sc_esi; int esi; }; ++ union { int sc_ebp; int ebp; }; ++ union { int sc_isp; int isp; }; /* Not used; sc_esp is used instead. */ ++ union { int sc_ebx; int ebx; }; ++ union { int sc_edx; int edx; }; ++ union { int sc_ecx; int ecx; }; ++ union { int sc_eax; int eax; }; ++ ++ union { int sc_trapno; int trapno; }; ++ union { int sc_err; int err; }; ++ ++ union { int sc_eip; int eip; }; /* Instruction pointer. */ ++ union { int sc_cs; int cs; }; /* Code segment register. */ ++ ++ int sc_efl; /* Processor flags. */ ++ ++ union { int sc_esp; int esp; }; /* This stack pointer is used. */ ++ union { int sc_ss; int ss; }; /* Stack segment register. */ ++ ++ int sc_len; /* sizeof(mcontext_t) */ ++ /* ++ * XXX - See and for ++ * the following fields. ++ */ ++ int sc_fpformat; ++ int sc_ownedfp; ++ int sc_spare1[1]; ++ int sc_fpstate[128] __attribute__((aligned(16))); ++ int sc_spare2[8]; ++ }; ++ ++/* Traditional BSD names for some members. */ ++#define sc_sp sc_esp /* Stack pointer. */ ++#define sc_fp sc_ebp /* Frame pointer. */ ++#define sc_pc sc_eip /* Process counter. */ ++#define sc_ps sc_efl ++#define sc_eflags sc_efl ++#define eflags sc_efl /* Linux-style name. */ ++ ++ ++/* Codes for SIGFPE. */ ++#define FPE_INTDIV 1 /* integer divide by zero */ ++#define FPE_INTOVF 2 /* integer overflow */ ++ ++#if 1 /* FIXME: These need verification. */ ++ ++#define FPE_FLTDIV 3 /* floating divide by zero */ ++#define FPE_FLTOVF 4 /* floating overflow */ ++#define FPE_FLTUND 5 /* floating underflow */ ++#define FPE_FLTINX 6 /* floating loss of precision */ ++#define FPE_SUBRNG_FAULT 0x7 /* BOUNDS instruction failed */ ++#define FPE_FLTDNR_FAULT 0x8 /* denormalized operand */ ++#define FPE_EMERR_FAULT 0xa /* mysterious emulation error 33 */ ++#define FPE_EMBND_FAULT 0xb /* emulation BOUNDS instruction failed */ ++ ++/* Codes for SIGILL. */ ++#define ILL_PRIVIN_FAULT 1 ++#define ILL_ALIGN_FAULT 14 ++#define ILL_FPOP_FAULT 24 ++ ++/* Codes for SIGBUS. */ ++#define BUS_PAGE_FAULT 12 ++#define BUS_SEGNP_FAULT 26 ++#define BUS_STK_FAULT 27 ++#define BUS_SEGM_FAULT 29 ++ ++#endif ++ ++#else ++ ++struct sigcontext { ++ __sigset_t sc_mask; /* signal mask to restore */ ++ long sc_onstack; /* sigstack state to restore */ ++ union { long sc_rdi; long rdi;}; ++ union { long sc_rsi; long rsi;}; ++ union { long sc_rdx; long rdx;}; ++ union { long sc_rcx; long rcx;}; ++ union { long sc_r8; long r8;}; ++ union { long sc_r9; long r9;}; ++ union { long sc_rax; long rax;}; ++ union { long sc_rbx; long rbx;}; ++ union { long sc_rbp; long rbp;}; ++ union { long sc_r10; long r10;}; ++ union { long sc_r11; long r11;}; ++ union { long sc_r12; long r12;}; ++ union { long sc_r13; long r13;}; ++ union { long sc_r14; long r14;}; ++ union { long sc_r15; long r15;}; ++ union { long sc_trapno; long trapno;}; ++ union { long sc_addr; long addr;}; ++ union { long sc_flags; long flags;}; ++ union { long sc_err; long err;}; ++ union { long sc_rip; long rip;}; ++ union { long sc_cs; long cs;}; ++ union { long sc_rflags; long rflags;}; ++ union { long sc_rsp; long rsp;}; ++ union { long sc_ss; long ss;}; ++ long sc_len; /* sizeof(mcontext_t) */ ++ /* ++ * XXX - See and for ++ * the following fields. ++ */ ++ long sc_fpformat; ++ long sc_ownedfp; ++ long sc_fpstate[64] __attribute__((aligned(16))); ++ long sc_spare[8]; ++}; ++ ++/* Traditional BSD names for some members. */ ++#define sc_sp sc_rsp /* Stack pointer. */ ++#define sc_fp sc_rbp /* Frame pointer. */ ++#define sc_pc sc_rip /* Process counter. */ ++ ++#endif ++ ++#endif /* _BITS_SIGCONTEXT_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/time.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/time.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/time.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/time.h 2006-02-23 19:25:25.000000000 +0100 +@@ -0,0 +1,83 @@ ++/* System-dependent timing definitions. FreeBSD version. ++ Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Never include this file directly; use instead. ++ */ ++ ++#ifndef __need_timeval ++# ifndef _BITS_TIME_H ++# define _BITS_TIME_H 1 ++ ++/* ISO/IEC 9899:1990 7.12.1: ++ The macro `CLOCKS_PER_SEC' is the number per second of the value ++ returned by the `clock' function. */ ++/* CAE XSH, Issue 4, Version 2: ++ The value of CLOCKS_PER_SEC is required to be 1 million on all ++ XSI-conformant systems. */ ++# define CLOCKS_PER_SEC 1000000l ++ ++# ifdef __USE_POSIX199309 ++/* Identifier for system-wide realtime clock. */ ++# define CLOCK_REALTIME 0 ++/* High-resolution timer from the CPU. */ ++# define CLOCK_PROCESS_CPUTIME_ID 2 ++/* Thread-specific CPU-time clock. */ ++# define CLOCK_THREAD_CPUTIME_ID 3 ++/* Monotonic system-wide clock. */ ++# define CLOCK_MONOTONIC 4 ++/* These are BSD specific clocks. */ ++# ifdef __USE_BSD ++# define CLOCK_VIRTUAL 1 ++# define CLOCK_PROF 2 ++# endif ++ ++/* Flag to indicate time is absolute. */ ++# define TIMER_ABSTIME 1 ++# endif ++ ++ ++/* Getkerninfo clock information structure */ ++struct clockinfo ++ { ++ int hz; /* clock frequency */ ++ int tick; /* micro-seconds per hz tick */ ++ int spare; ++ int stathz; /* statistics clock frequency */ ++ int profhz; /* profiling clock frequency */ ++ }; ++ ++# endif /* bits/time.h */ ++#endif ++ ++#ifdef __need_timeval ++# undef __need_timeval ++# ifndef _STRUCT_TIMEVAL ++# define _STRUCT_TIMEVAL 1 ++# include ++ ++/* A time value that is accurate to the nearest ++ microsecond but also has a range of years. */ ++struct timeval ++ { ++ __time_t tv_sec; /* Seconds. */ ++ __suseconds_t tv_usec; /* Microseconds. */ ++ }; ++# endif /* struct timeval */ ++#endif /* need timeval */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-machine.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-machine.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-machine.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-machine.h 2006-03-01 20:13:16.000000000 +0100 +@@ -0,0 +1,80 @@ ++/* Machine-dependent ELF dynamic relocation inline functions. FreeBSD/amd64 version. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 dl_machine_h ++#include_next ++#else ++#include_next ++ ++#undef RTLD_START ++ ++/* Initial entry point code for the dynamic linker. ++ The C function `_dl_start' is the real entry point; ++ its return value is the user program's entry point. */ ++#define RTLD_START asm ("\n\ ++.text\n\ ++ .align 16\n\ ++.globl _start\n\ ++# we dont use it: .globl _dl_start_user\n\ ++_start:\n\ ++ # align stack.\n\ ++ andq $-16, %rsp\n\ ++ # save argument pointer.\n\ ++ movq %rdi, %r13\n\ ++ call _dl_start\n\ ++# we dont use it: _dl_start_user:\n\ ++ # Save the user entry point address in %r12.\n\ ++ movq %rax, %r12\n\ ++ # See if we were run as a command with the executable file\n\ ++ # name as an extra leading argument.\n\ ++ movl _dl_skip_args(%rip), %eax\n\ ++ # get the original argument count.\n\ ++ movq 0(%r13), %rdx\n\ ++ # Adjust the pointer to skip _dl_skip_args words.\n\ ++ leaq (%r13,%rax,8), %r13\n\ ++ # Subtract _dl_skip_args from argc.\n\ ++ subl %eax, %edx\n\ ++ # Put argc on adjusted place\n\ ++ movq %rdx, 0(%r13)\n\ ++ # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\ ++ # argc -> rsi\n\ ++ movq %rdx, %rsi\n\ ++ # _dl_loaded -> rdi\n\ ++ movq _rtld_local(%rip), %rdi\n\ ++ # env -> rcx\n\ ++ leaq 16(%r13,%rdx,8), %rcx\n\ ++ # argv -> rdx\n\ ++ leaq 8(%r13), %rdx\n\ ++ # Clear %rbp to mark outermost frame obviously even for constructors.\n\ ++ xorl %ebp, %ebp\n\ ++ # Call the function to run the initializers.\n\ ++ call _dl_init_internal@PLT\n\ ++ # Pass our finalizer function to the user in %rdx, as per ELF ABI draft.\n\ ++ leaq _dl_fini(%rip), %rdx\n\ ++ # And make sure %rdi points to argc stored on the stack.\n\ ++ movq %r13, %rdi\n\ ++ # Pass finalizer function also in %rsi, as per C calling convention.\n\ ++ movq %rdx, %rsi\n\ ++ # Jump to the user's entry point.\n\ ++ jmp *%r12\n\ ++.previous\n\ ++"); ++ ++#endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-procinfo.c sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-procinfo.c +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-procinfo.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-procinfo.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-procinfo.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-procinfo.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-procinfo.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-procinfo.h 2006-01-13 15:56:49.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/elf/start.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/elf/start.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/elf/start.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/elf/start.S 2006-03-01 20:13:16.000000000 +0100 +@@ -0,0 +1,143 @@ ++/* Startup code for FreeBSD/amd64 ABI. ++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Andreas Jaeger , 2001. ++ FreeBSD modification by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ 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 GNU 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.) ++ ++ Note that people who make modified versions of this file are not ++ obligated to grant this special exception for their modified ++ versions; it is their choice whether to do so. The GNU Lesser ++ General Public License gives permission to release a modified ++ version without this exception; this exception also makes it ++ possible to release a modified version which carries forward this ++ exception. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 canonical entry point, usually the first thing in the text ++ segment. The SVR4/i386 ABI (pages 3-31, 3-32) says that when the entry ++ point runs, most registers' values are unspecified, except for a few. ++ Blindly applied on amd64: ++ ++ %rdx Contains a function pointer to be registered with `atexit'. ++ This is how the dynamic linker arranges to have DT_FINI ++ functions called for shared libraries that have been loaded ++ before this code runs. ++ ++ %rsp The stack contains the arguments and environment: ++ 0(%rsp) argc ++ 8(%rsp) argv[0] ++ ... ++ (8*argc)(%rsp) NULL ++ (8*(argc+1))(%rsp) envp[0] ++ ... ++ NULL ++ ++ But on amd64 %rsp also have to be 16-byte aligned, ++ standard C calling convention already passes arguments in registers. ++ ++ FreeBSD uses %edi as pointer to arguments and environment, %rsp is passed aligned. ++ On entry from kernel, %rsp=%rdi or %rsp=%rdi-8, ++ on entry from ld.so, glibc might set up it slightly differently. ++ ++ On FreeBSD, we use %rsi for passing function pointer to rtld_fini(). ++ On entry from FreeBSD kernel, %rsi is cleared, %rdx is not cleared, ++ on entry from ld.so, glibc sets both %rsi and %rdx to point to rtld_fini(). ++ ++ Used interface (via %rdi, %rsi) is equal to standard C calling interface for ++ ++ void _start(void *arg, void *rtld_fini()); ++ ++*/ ++ ++#include "bp-sym.h" ++ ++ .text ++ .globl _start ++ .type _start,@function ++_start: ++ /* Clear the frame pointer. The ABI suggests this be done, to mark ++ the outermost frame obviously. */ ++ xorl %ebp, %ebp /* zero extending clears whole rbp */ ++ ++ /* Extract the arguments as encoded on the stack and set up ++ the arguments for __libc_start_main (int (*main) (int, char **, char **), ++ int argc, char *argv, ++ void (*init) (void), void (*fini) (void), ++ void (*rtld_fini) (void), void *stack_end). ++ The arguments are passed via registers and on the stack: ++ main: %rdi ++ argc: %rsi ++ argv: %rdx ++ init: %rcx ++ fini: %r8 ++ rtld_fini: %r9 ++ stack_end: stack. */ ++ ++ movq %rsi, %r9 /* Address of the shared library termination ++ function. */ ++ movq 0(%rdi), %rsi /* argument count. */ ++ leaq 8(%rdi), %rdx /* argv starts just at above argc. */ ++ ++ /* Align the stack to a 16 byte boundary to follow the ABI. */ ++ andq $~15, %rsp ++ ++ pushq %rax /* Push garbage because we push 8 more bytes. */ ++ ++ /* Provide the highest stack address to the user code (for stacks ++ which grow downwards). */ ++ pushq %rsp ++ ++#ifdef SHARED ++ /* Pass address of our own entry points to .fini and .init. */ ++ movq __libc_csu_fini@GOTPCREL(%rip), %r8 ++ movq __libc_csu_init@GOTPCREL(%rip), %rcx ++ ++ movq BP_SYM (main)@GOTPCREL(%rip), %rdi ++ ++ /* Call the user's main function, and exit with its value. ++ But let the libc call main. */ ++ call BP_SYM (__libc_start_main)@PLT ++#else ++ /* Pass address of our own entry points to .fini and .init. */ ++ movq $__libc_csu_fini, %r8 ++ movq $__libc_csu_init, %rcx ++ ++ movq $BP_SYM (main), %rdi ++ ++ /* Call the user's main function, and exit with its value. ++ But let the libc call main. */ ++ call BP_SYM (__libc_start_main) ++#endif ++ ++ hlt /* Crash if somehow `exit' does return. */ ++ ++/* Define a symbol for the first piece of initialized data. */ ++ .data ++ .globl __data_start ++__data_start: ++ .long 0 ++ .weak data_start ++ data_start = __data_start +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/get_clockfreq.c sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/get_clockfreq.c +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/get_clockfreq.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/get_clockfreq.c 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1 @@ ++#include "../i386/get_clockfreq.c" +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/getcontext.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/getcontext.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/getcontext.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/getcontext.S 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Save current context. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text ++ENTRY(__getcontext) ++ clc ++ movq 0(%rsp), %rsi /* save the return PC value */ ++ ++ DO_CALL (getcontext, 1) ++ jb SYSCALL_ERROR_LABEL ++ ++ addq $8, %rsp /* remove stale return address */ ++ jmp *%rsi ++ ++L(pseudo_end): ++ ret ++ ++PSEUDO_END(__getcontext) ++ ++weak_alias(__getcontext, getcontext) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/iopl.c sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/iopl.c +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/iopl.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/iopl.c 2006-04-10 23:30:44.000000000 +0200 +@@ -0,0 +1 @@ ++#include "../i386/iopl.c" +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/makecontext.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/makecontext.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/makecontext.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/makecontext.S 2006-03-01 20:13:16.000000000 +0100 +@@ -0,0 +1,146 @@ ++/* makecontext() for FreeBSD/amd64. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++/* ++ void makecontext(ucontext_t *ucp, void *func(), int argc, ...); ++ ++ ++ input parameters: ++ ++ rdi ucp ++ rsi func ++ edx argc ++ rcx arg1 -> ucp.rdi ++ r8 arg2 -> ucp.rsi ++ r9 arg3 -> ucp.rdx ++ 8(%rsp) arg4 -> ucp.rcx ++ 16(%rsp) arg5 -> ucp.r8 ++ 24(%rsp) arg6 -> ucp.r9 ++ i*8+24(%rsp) arg(6+i)-> future stack ++ ++*/ ++ ++ENTRY(__makecontext) ++ ++ /* Compute the address of the stack. ++ The information comes from us_stack element. */ ++ movq oSS_SP(%rdi), %rax ++ addq oSS_SIZE(%rdi), %rax ++ ++ /* Put start addr into ucp */ ++ movq %rsi, oRIP(%rdi) ++ ++ /* properly align future stack */ ++ andq $-16, %rax ++ subq $8, %rax ++ ++ /* Put the next context into preserved ucp.rbx ++ (from the uc_link element). */ ++ movq oLINK(%rdi), %rsi ++ movq %rsi, oRBX(%rdi) ++ ++ /* save future registers arguments */ ++ ++ orl %edx, %edx ++ jz L(param_done) ++ ++ decl %edx ++ movq %rcx, oRDI(%rdi) ++ jz L(param_done) ++ ++ decl %edx ++ movq %r8, oRSI(%rdi) ++ jz L(param_done) ++ ++ decl %edx ++ movq %r9, oRDX(%rdi) ++ jz L(param_done) ++ ++ movq 8(%rsp), %rsi ++ decl %edx ++ movq %rsi, oRCX(%rdi) ++ jz L(param_done) ++ ++ movq 16(%rsp), %rcx ++ decl %edx ++ movq %rcx, oR8(%rdi) ++ jz L(param_done) ++ ++ movq 24(%rsp), %rsi ++ decl %edx ++ movq %rsi, oR9(%rdi) ++ jz L(param_done) ++ ++ /* we have to copy some arguments also on the future stack */ ++ movl %edx, %ecx ++ negq %rdx ++ leaq -16(%rax,%rdx,8), %rax /* we a litle bit waste stack space */ ++ orq $8, %rax ++ ++1: movq 24(%rsp,%rcx,8), %rsi ++ movq %rsi,(%rax,%rcx,8) ++ loop 1b ++ ++L(param_done): ++ ++ /* Store the future stack pointer and chain helper code. */ ++ leaq L(exitcode)(%rip), %rdx ++ movq %rax, oRSP(%rdi) ++ movq %rdx, (%rax) ++ ++ /* 'makecontext' returns no value. */ ++ ret ++ ++/***************************************************************************/ ++ ++ /* This is the helper code which gets called if a function which ++ is registered with 'makecontext' returns. In this case we ++ have to install the context listed in the uc_link element of ++ the context 'makecontext' manipulated at the time of the ++ 'makecontext' call. If the pointer is NULL the process must ++ terminate. */ ++ ++L(exitcode): ++ /* we don't bother with extra arguments left on the stack ++ - more than 6 arguments is rare ++ - setcontext changes stacks immediately ++ - exit will call _exit in near future ++ */ ++ ++ testq %rbx, %rbx /* If it is zero exit. */ ++ jz 2f ++ ++ movq %rbx, %rdi ++ call JUMPTARGET(__setcontext) ++ /* If this returns (which can happen if the syscall fails) we'll ++ exit the program with the return error value (-1). */ ++ ++2: movq %rax, %rdi ++ call HIDDEN_JUMPTARGET(exit) ++ /* The 'exit' call should never return. In case it does cause ++ the process to terminate. */ ++ hlt ++END(__makecontext) ++ ++weak_alias(__makecontext, makecontext) ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/Makefile sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/Makefile +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/Makefile 2006-04-10 23:30:44.000000000 +0200 +@@ -0,0 +1,7 @@ ++32bit-predefine = __i386__ ++64bit-predefine = __x86_64__ ++ ++ifeq ($(subdir),misc) ++sysdep_routines += iopl ++sysdep_headers += sys/perm.h sys/io.h ++endif +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/pipe.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/pipe.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/pipe.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/pipe.S 2006-03-18 17:31:11.000000000 +0100 +@@ -0,0 +1,32 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text ++ENTRY (__pipe) ++ DO_CALL (pipe, 1) ++ jb SYSCALL_ERROR_LABEL ++ movl %eax, 0(%rdi) ++ movl %edx, 4(%rdi) ++ xorl %eax, %eax ++L(pseudo_end): ++ ret ++PSEUDO_END (__pipe) ++libc_hidden_def (__pipe) ++weak_alias (__pipe, pipe) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/rfork.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/rfork.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/rfork.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/rfork.S 2006-01-06 21:26:14.000000000 +0100 +@@ -0,0 +1,44 @@ ++/* Copyright (C) 1991-1992, 1994-1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text; ++ENTRY (__rfork) ++ /* save the return PC value into RSI */ ++ movq 0(%rsp), %rsi; ++ DO_CALL (rfork, 1) ++ jb SYSCALL_ERROR_LABEL; ++ /* R1 is now 0 for the parent and 1 for the child. Decrement it to ++ make it -1 (all bits set) for the parent, and 0 (no bits set) ++ for the child. Then AND it with R0, so the parent gets ++ R0&-1==R0, and the child gets R0&0==0. */ ++ decq %rdx ++ andq %rdx, %rax ++ ++ popq %rdx ++ cfi_adjust_cfa_offset(-8) ++ ++ jmp *%rsi ++ ++L(pseudo_end): ++ ret ++PSEUDO_END (__rfork) ++ ++weak_alias (__rfork, rfork) ++ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/sigcontextinfo.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sigcontextinfo.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/sigcontextinfo.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sigcontextinfo.h 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,25 @@ ++/* Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define SIGCONTEXT int _code, struct sigcontext * ++#define SIGCONTEXT_EXTRA_ARGS _code, ++#define GET_PC(ctx) ((void *) (ctx)->sc_rip) ++#define GET_FRAME(ctx) ((void *) (ctx)->sc_rbp) ++#define GET_STACK(ctx) ((void *) (ctx)->sc_rsp) ++#define CALL_SIGHANDLER(handler, signo, ctx) \ ++ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/start_thread.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/start_thread.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/start_thread.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/start_thread.S 2006-03-18 17:31:11.000000000 +0100 +@@ -0,0 +1,196 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ Modification for amd64 contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* __start_thread (flags, stack, func, arg) ++ calls __rfork (flags), and in the child sets the stack pointer and then ++ calls _exit (func (arg)). ++ It cannot be done in portable C. */ ++ ++/* ++ The parameters are passed in registers: ++ rdi: flags for rfork ++ rsi: child_stack ++ rdx: func ++ rcx: arg ++*/ ++ ++#include ++#include ++ ++#define SIG_SETMASK 3 ++ ++/* There is a window of a few instructions, right after the rfork ++ system call, where the handling of a signal would write garbage ++ into the stack shared by the parent and the child (assuming ++ RFMEM is set in flags). To solve this: 1. We block all signals ++ around the rfork system call and unblock them afterwards in ++ the parent and in the child (but only after changing the stack ++ pointer). 2. The child accesses only values passed in registers ++ and on its own stack. This way, if the parent is scheduled to ++ run first, and handles a signal, it will not affect the child; ++ and if the child runs first, and handles a signal, it will use ++ the child's stack and not affect the parent. ++*/ ++ ++ .text ++ENTRY (__start_thread) ++ ++ /* Insert the argument onto the new aligned stack. */ ++ andq $-16,%rsi ++ subq $16,%rsi ++ movq %rcx,8(%rsi) ++ ++ /* Save the function pointer. It will be popped off in the child */ ++ movq %rdx,0(%rsi) ++ ++ testq $32, %rdi /* flags & RFMEM */ ++ jnz L(complex) ++ ++ /* Do the system call. */ ++ movl $SYS_ify(rfork),%eax ++ /* End FDE now, because in the child the unwind info will be ++ wrong. */ ++ cfi_endproc; ++ syscall /* rdi and rsi are extra preserved */ ++ ++ jb SYSCALL_ERROR_LABEL ++ ++ testq %rdx,%rdx /* 0 for the parent and 1 for the child */ ++ jz L(pseudo_end) /* just return in parent */ ++ ++L(thread_start): ++ ++ /* set up stack */ ++ movq %rsi, %rsp ++ ++ /* Clear the frame pointer. The ABI suggests this be done, to mark ++ the outermost frame obviously. */ ++ xorl %ebp, %ebp ++ ++L(thread_start2): ++ ++ /* Set up arguments for the function call. */ ++ popq %rax /* Function to call. */ ++ popq %rdi /* Argument. */ ++ call *%rax ++ ++ /* Call exit with return value from function call. */ ++ movq %rax, %rdi ++ call HIDDEN_JUMPTARGET (_exit) ++ ++ ++/****************************************************************************************************** ++ * ++ * and now the complex one ... ++ * ++ ******************************************************************************************************/ ++ ++L(complex): ++ ++ subq $32, %rsp ++ ++ /* save arguments - flags and stack */ ++ movq %rdi,0(%rsp) ++ movq %rsi,8(%rsp) ++ ++ /* Block all signals. */ ++ orq $-1, %rax ++ movq %rax, 16(%rsp) ++ movq %rax, 24(%rsp) ++ ++ leaq 16(%rsp), %rsi ++ movl $SIG_SETMASK, %edi ++ movq %rsi,%rdx ++ DO_CALL (sigprocmask, 3) ++ jb L(error) ++ ++ /* restore arguments - flags and stack */ ++ movq 0(%rsp),%rdi ++ movq 8(%rsp),%rsi ++ ++ /* Copy mask info into the child's stack. */ ++ ++ subq $16,%rsi ++ movq 16(%rsp),%rcx ++ movq 24(%rsp),%rdx ++ movq %rcx, 0(%rsi) ++ movq %rdx, 8(%rsi) ++ ++ /* Perform the rfork system call. */ ++ DO_CALL (rfork, 1) ++ jb L(error_unmask) ++ ++ /* %rdx is now 0 for the parent and 1 for the child. */ ++ testq %rdx, %rdx ++ jnz L(child) ++ ++ /* Save the child pid, currently in %rax. */ ++ movq %rax, 0(%rsp) ++ ++ /* Restore the previous signal mask. */ ++ movl $SIG_SETMASK, %edi ++ leaq 16(%rsp), %rsi ++ xorl %edx,%edx ++ DO_CALL (sigprocmask, 3) ++ ++ /* Return the child pid, saved on stack. */ ++ movq 0(%rsp), %rax ++ addq $32, %rsp ++L(pseudo_end): ++ ret ++ ++L(error_unmask): ++ ++ /* Save the error code, currently in %rax. */ ++ movq %rax, 0(%rsp) ++ ++ /* Restore the previous signal mask. */ ++ movq $SIG_SETMASK, %rdi ++ leaq 16(%rsp), %rsi ++ xorl %edx,%edx ++ DO_CALL (sigprocmask, 3) ++ ++ /* load saved error code */ ++ movq 0(%rsp), %rax ++ ++L(error): ++ addq $32, %rsp ++ jmp SYSCALL_ERROR_LABEL ++ ++L(child):/* Here we are in the child thread. */ ++ ++ /* set up stack */ ++ movq %rsi, %rsp ++ ++ /* Clear the frame pointer. The ABI suggests this be done, to mark ++ the outermost frame obviously. */ ++ xorl %ebp, %ebp ++ ++ /* Restore the previous signal mask. */ ++ movq $SIG_SETMASK, %rdi ++ xorl %edx,%edx ++ DO_CALL (sigprocmask, 3) ++ ++ addq $16, %rsp ++ jmp L(thread_start2) ++ ++ cfi_startproc; ++ ++PSEUDO_END (__start_thread) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/swapcontext.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/swapcontext.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/swapcontext.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/swapcontext.S 2006-01-21 00:13:28.000000000 +0100 +@@ -0,0 +1,32 @@ ++/* swap current context. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text ++ENTRY(__swapcontext) ++ clc ++ DO_CALL (swapcontext, 2) ++ jb SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++ ++PSEUDO_END(__swapcontext) ++ ++weak_alias(__swapcontext, swapcontext) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/sys/io.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sys/io.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/sys/io.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sys/io.h 2006-04-10 23:30:44.000000000 +0200 +@@ -0,0 +1,180 @@ ++/* Copyright (C) 1996, 2000, 2002, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_IO_H ++#define _SYS_IO_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++/* If TURN_ON is TRUE, request for permission to do direct i/o on the ++ port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O ++ permission off for that range. This call requires root privileges. ++ ++ Portability note: not all kFreeBSD platforms support this call. Most ++ platforms based on the PC I/O architecture probably will, however. */ ++extern int ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to ++ access any I/O port is granted. This call requires root ++ privileges. */ ++extern int iopl (int __level) __THROW; ++ ++#if defined __GNUC__ && __GNUC__ >= 2 ++ ++static __inline unsigned char ++inb (unsigned short int port) ++{ ++ unsigned char _v; ++ ++ __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned char ++inb_p (unsigned short int port) ++{ ++ unsigned char _v; ++ ++ __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned short int ++inw (unsigned short int port) ++{ ++ unsigned short _v; ++ ++ __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned short int ++inw_p (unsigned short int port) ++{ ++ unsigned short int _v; ++ ++ __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned int ++inl (unsigned short int port) ++{ ++ unsigned int _v; ++ ++ __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned int ++inl_p (unsigned short int port) ++{ ++ unsigned int _v; ++ __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline void ++outb (unsigned char value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outb %b0,%w1": :"a" (value), "Nd" (port)); ++} ++ ++static __inline void ++outb_p (unsigned char value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++outw (unsigned short int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outw %w0,%w1": :"a" (value), "Nd" (port)); ++ ++} ++ ++static __inline void ++outw_p (unsigned short int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++outl (unsigned int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outl %0,%w1": :"a" (value), "Nd" (port)); ++} ++ ++static __inline void ++outl_p (unsigned int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++insb (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insb":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++insw (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insw":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++insl (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insl":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsb (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsw (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsl (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++#endif /* GNU C */ ++ ++__END_DECLS ++#endif /* _SYS_IO_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/sys/perm.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sys/perm.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/sys/perm.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sys/perm.h 2006-04-11 09:22:14.000000000 +0200 +@@ -0,0 +1,43 @@ ++/* Copyright (C) 1996, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_PERM_H ++#define _SYS_PERM_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++/* Set port input/output permissions. */ ++extern int ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++ ++/* Change I/O privilege level. */ ++extern int iopl (int __level) __THROW; ++ ++extern int i386_set_ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++/* Retrieve a contiguous range of port input/output permissions. */ ++extern int i386_get_ioperm (unsigned long int __from, unsigned long int *__num, ++ int *__turned_on) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_PERM_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/sysarch.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysarch.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/sysarch.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysarch.h 2006-01-06 21:26:14.000000000 +0100 +@@ -0,0 +1,48 @@ ++/* Parameters for the architecture specific system call. amd64 version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYSARCH_H ++#define _SYSARCH_H 1 ++ ++#include ++ ++/* Function that can be used as first argument to 'sysarch'. */ ++ ++#define I386_GET_FSBASE 7 ++#define I386_SET_FSBASE 8 ++#define I386_GET_GSBASE 9 ++#define I386_SET_GSBASE 10 ++ ++/* Leave space for 0-127 for to avoid translating syscalls */ ++#define AMD64_GET_FSBASE 128 ++#define AMD64_SET_FSBASE 129 ++#define AMD64_GET_GSBASE 130 ++#define AMD64_SET_GSBASE 131 ++ ++__BEGIN_DECLS ++ ++extern int sysarch (int __cmd, void *__arg); ++ ++#ifdef _LIBC ++extern int __sysarch (int __cmd, void *__arg); ++#endif ++ ++__END_DECLS ++ ++#endif /* _SYSARCH_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/syscall.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/syscall.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/syscall.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/syscall.S 2006-03-18 17:31:11.000000000 +0100 +@@ -0,0 +1,30 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Modification for FreeBSD contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++ .text ++ENTRY (syscall) ++ movq %rcx, %r10 ++ movl $SYS_ify (syscall), %eax ++ syscall ++ jb SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++PSEUDO_END (syscall) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep.h 2006-03-18 17:31:11.000000000 +0100 +@@ -0,0 +1,193 @@ ++/* Copyright (C) 2001,02,03,04 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Modification for FreeBSD contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 _KFREEBSD_X86_64_SYSDEP_H ++#define _KFREEBSD_X86_64_SYSDEP_H 1 ++ ++/* There is some commonality. */ ++#include ++#include ++#include ++#include ++ ++#ifdef IS_IN_rtld ++# include /* Defines RTLD_PRIVATE_ERRNO. */ ++#endif ++ ++ ++#ifdef __ASSEMBLER__ ++ ++/* We don't want the label for the error handle to be global when we define ++ it here. */ ++#ifdef PIC ++# define SYSCALL_ERROR_LABEL 0f ++#else ++# define SYSCALL_ERROR_LABEL syscall_error ++#endif ++ ++#undef PSEUDO ++#define PSEUDO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args); \ ++ jb SYSCALL_ERROR_LABEL; \ ++ L(pseudo_end): ++ ++#undef PSEUDO_END ++#define PSEUDO_END(name) \ ++ SYSCALL_ERROR_HANDLER \ ++ END (name) ++ ++#undef PSEUDO_NOERRNO ++#define PSEUDO_NOERRNO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args) ++ ++#undef PSEUDO_END_NOERRNO ++#define PSEUDO_END_NOERRNO(name) \ ++ END (name) ++ ++#define ret_NOERRNO ret ++ ++#undef PSEUDO_ERRVAL ++#define PSEUDO_ERRVAL(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args); \ ++ ++#undef PSEUDO_END_ERRVAL ++#define PSEUDO_END_ERRVAL(name) \ ++ END (name) ++ ++#define ret_ERRVAL ret ++ ++#ifndef PIC ++#define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */ ++#elif RTLD_PRIVATE_ERRNO ++# define SYSCALL_ERROR_HANDLER \ ++0: \ ++ leaq rtld_errno(%rip), %rcx; \ ++ movl %eax, (%rcx); \ ++ orq $-1, %rax; \ ++ jmp L(pseudo_end); ++#elif USE___THREAD ++# ifndef NOT_IN_libc ++# define SYSCALL_ERROR_ERRNO __libc_errno ++# else ++# define SYSCALL_ERROR_ERRNO errno ++# endif ++# define SYSCALL_ERROR_HANDLER \ ++0: \ ++ movq SYSCALL_ERROR_ERRNO@GOTTPOFF(%rip), %rcx;\ ++ movl %eax, %fs:(%rcx); \ ++ orq $-1, %rax; \ ++ jmp L(pseudo_end); ++#elif defined _LIBC_REENTRANT ++/* Store (%eax) into errno through the GOT. ++ Note that errno occupies only 4 bytes. */ ++# define SYSCALL_ERROR_HANDLER \ ++0: \ ++ pushq %rax; \ ++ cfi_adjust_cfa_offset(8); \ ++ PUSH_ERRNO_LOCATION_RETURN; \ ++ call BP_SYM (__errno_location)@PLT; \ ++ POP_ERRNO_LOCATION_RETURN; \ ++ popq %rdx; \ ++ cfi_adjust_cfa_offset(-8); \ ++ movl %edx, (%rax); \ ++ orq $-1, %rax; \ ++ jmp L(pseudo_end); ++ ++/* A quick note: it is assumed that the call to `__errno_location' does ++ not modify the stack! */ ++#else /* Not _LIBC_REENTRANT. */ ++# define SYSCALL_ERROR_HANDLER \ ++0:movq errno@GOTPCREL(%RIP), %rcx; \ ++ movl %eax, (%rcx); \ ++ orq $-1, %rax; \ ++ jmp L(pseudo_end); ++#endif /* PIC */ ++ ++/* The FreeBSD/amd64 kernel expects the system call parameters in ++ registers according to the following table: ++ ++ syscall number rax ++ arg 1 rdi ++ arg 2 rsi ++ arg 3 rdx ++ arg 4 r10 ++ arg 5 r8 ++ arg 6 r9 ++ ++ The FreeBSD kernel internal syscall usage of registers: ++ ++ preserved: ++ stack pointer rsp ++ C preserved rbx, rbp, r12-r15 ++ some input params rdi, rsi ++ ++ destroyed: ++ return value(s) rax, rdx, eflags ++ return address from syscall rcx ++ eflags from syscall r11 ++ used internally r8-r10 ++ ++ Normal function call, including calls to the system call stub ++ functions in the libc, get the first six parameters passed in ++ registers and the seventh parameter and later on the stack. The ++ register use is as follows: ++ ++ system call number in the DO_CALL macro ++ arg 1 rdi ++ arg 2 rsi ++ arg 3 rdx ++ arg 4 rcx ++ arg 5 r8 ++ arg 6 r9 ++ ++ We have to take care that the stack is aligned to 16 bytes. When ++ called the stack is not aligned since the return address has just ++ been pushed. ++ ++*/ ++ ++#undef DO_CALL ++#define DO_CALL(syscall_name, args) \ ++ DOARGS_##args \ ++ movl $SYS_ify (syscall_name), %eax; \ ++ syscall; ++ ++#define DOARGS_0 /* nothing */ ++#define DOARGS_1 /* nothing */ ++#define DOARGS_2 /* nothing */ ++#define DOARGS_3 /* nothing */ ++#define DOARGS_4 movq %rcx, %r10; ++#define DOARGS_5 DOARGS_4 ++#define DOARGS_6 DOARGS_5 ++#define DOARGS_7 DOARGS_6 ++#define DOARGS_8 DOARGS_7 ++ ++#else /* !__ASSEMBLER__ */ ++ ++#include ++ ++#endif /* __ASSEMBLER__ */ ++ ++#endif /* _KFREEBSD_X86_64_SYSDEP_H */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep.S 2006-01-06 21:26:14.000000000 +0100 +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* The following code is only used in the shared library when we ++ compile the reentrant version. Otherwise each system call defines ++ each own version. */ ++ ++#ifndef PIC ++ ++/* The syscall stubs jump here when they detect an error. ++ The code for Linux is almost identical to the canonical Unix ++ code, except that the error number in %rax is negated. */ ++ ++#undef CALL_MCOUNT ++#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %rax. */ ++ ++ .text ++ENTRY (__syscall_error) ++ ++#define __syscall_error __syscall_error_1 ++#include ++ ++#endif /* !PIC */ +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/sys_fork.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sys_fork.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/sys_fork.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sys_fork.S 2006-01-06 21:26:14.000000000 +0100 +@@ -0,0 +1,35 @@ ++/* Copyright (C) 1991-1992, 1994-1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text; ++ENTRY (__syscall_fork) ++ DO_CALL (fork, 0) ++ jb SYSCALL_ERROR_LABEL; ++ /* R1 is now 0 for the parent and 1 for the child. Decrement it to ++ make it -1 (all bits set) for the parent, and 0 (no bits set) ++ for the child. Then AND it with R0, so the parent gets ++ R0&-1==R0, and the child gets R0&0==0. */ ++ ++ decq %rdx ++ andq %rdx, %rax ++ ++L(pseudo_end): ++ ret ++PSEUDO_END (__syscall_fork) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/ucontext_i.h sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/ucontext_i.h +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/ucontext_i.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/ucontext_i.h 2006-03-01 20:13:16.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Offsets needed in the makecontext() function implementation. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Offsets of the fields in the ucontext_t structure. */ ++ ++#define oRDI 24 ++#define oRSI 32 ++#define oRDX 40 ++#define oRCX 48 ++#define oR8 56 ++#define oR9 64 ++ ++#define oRAX 72 ++#define oRBX 80 ++#define oRBP 88 ++ ++#define oRIP 176 ++#define oRSP 200 ++ ++#define oLINK 816 ++#define oSS_SP 824 ++#define oSS_SIZE 832 +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/Versions sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/Versions +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/Versions 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/Versions 2006-04-12 09:42:30.000000000 +0200 +@@ -0,0 +1,5 @@ ++libc { ++ GLIBC_2.3.4 { ++ iopl; ++ } ++} +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/x86_64/vfork.S sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/vfork.S +--- null/unix/bsd/bsd4.4/kfreebsd/x86_64/vfork.S 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/vfork.S 2006-01-06 21:26:14.000000000 +0100 +@@ -0,0 +1,58 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++ ++ /* Pop the return PC value into ESI. */ ++ popq %rsi ++ cfi_adjust_cfa_offset(-8) ++ ++ /* Perform the system call. */ ++ DO_CALL (vfork, 0) ++ jb L(error) /* Branch forward if it failed. */ ++ ++ /* In the parent process, %rdx == 0, %rax == child pid. */ ++ /* In the child process, %rdx == 1, %rax == parent pid. */ ++ ++ /* Change %rax to be 0 in the child process. */ ++ decq %rdx ++ andq %rdx, %rax ++ ++ /* Jump to the return PC. */ ++ jmp *%rsi ++ ++L(error): ++ /* Push back the return PC. */ ++ pushq %rsi ++ cfi_adjust_cfa_offset(8) ++ ++ /* Branch to the error handler, hidden in PSEUDO_END. */ ++ jmp SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++PSEUDO_END (__vfork) ++libc_hidden_def (__vfork) ++ ++weak_alias (__vfork, vfork) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/xmknod.c sysdeps/unix/bsd/bsd4.4/kfreebsd/xmknod.c +--- null/unix/bsd/bsd4.4/kfreebsd/xmknod.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/xmknod.c 2006-01-02 19:10:55.000000000 +0100 +@@ -0,0 +1,48 @@ ++/* xmknod call using old-style Unix mknod and mkfifo system calls. ++ Copyright (C) 1991, 1993, 1995-1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_mknod (const char *, mode_t, dev_t); ++extern int __mkfifo (const char *, mode_t); ++ ++/* Create a device file named PATH, with permission and special bits MODE ++ and device number DEV (which can be constructed from major and minor ++ device numbers with the `makedev' macro above). */ ++int ++__xmknod (int vers, const char *path, mode_t mode, dev_t *dev) ++{ ++ if (vers != _MKNOD_VER) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ /* The FreeBSD mknod() system call cannot be used to create FIFOs; we ++ must use the mkfifo() system call for this purpose. */ ++ if (S_ISFIFO (mode)) ++ return __mkfifo (path, mode & ~S_IFMT); ++ ++ return __syscall_mknod (path, mode, *dev); ++} ++libc_hidden_def (__xmknod) ++ ++weak_alias (__xmknod, _xmknod) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/xstat64.c sysdeps/unix/bsd/bsd4.4/kfreebsd/xstat64.c +--- null/unix/bsd/bsd4.4/kfreebsd/xstat64.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/xstat64.c 2006-01-27 05:39:47.000000000 +0100 +@@ -0,0 +1,44 @@ ++/* xstat using FreeBSD stat, nstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__xstat64 (int vers, const char *file, struct stat64 *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_stat (CHECK_STRING (file), __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat64 (&buf16, buf); ++ return result; ++ } ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__xstat64) +diff -x .svn -Nurd null/unix/bsd/bsd4.4/kfreebsd/xstat.c sysdeps/unix/bsd/bsd4.4/kfreebsd/xstat.c +--- null/unix/bsd/bsd4.4/kfreebsd/xstat.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/xstat.c 2006-01-27 05:39:47.000000000 +0100 +@@ -0,0 +1,49 @@ ++/* xstat using FreeBSD stat, nstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__xstat (int vers, const char *file, struct stat *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_stat (CHECK_STRING (file), __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat (&buf16, buf); ++ return result; ++ } ++ else if (__builtin_expect (vers == _STAT_VER_stat, 1)) ++ return __syscall_stat (CHECK_STRING (file), ++ CHECK_1 ((struct stat16 *) buf)); ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__xstat) ++ ++weak_alias (__xstat, _xstat) +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/allocrtsig.c linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/allocrtsig.c +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/allocrtsig.c 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/allocrtsig.c 2005-12-19 21:20:00.000000000 +0100 +@@ -0,0 +1,4 @@ ++#include ++strong_alias (__libc_current_sigrtmin, __libc_current_sigrtmin_private); ++strong_alias (__libc_current_sigrtmax, __libc_current_sigrtmax_private); ++strong_alias (__libc_allocate_rtsig, __libc_allocate_rtsig_private); +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/local_lim.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/local_lim.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/local_lim.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/local_lim.h 2005-12-16 14:31:51.000000000 +0100 +@@ -0,0 +1,48 @@ ++/* Minimum guaranteed maximum values for system limits. FreeBSD version. ++ Copyright (C) 1993-1998, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 number of data keys per process. */ ++#define _POSIX_THREAD_KEYS_MAX 128 ++/* This is the value this implementation supports. */ ++#define PTHREAD_KEYS_MAX 1024 ++ ++/* Controlling the iterations of destructors for thread-specific data. */ ++#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 ++/* Number of iterations this implementation does. */ ++#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS ++ ++/* The number of threads per process. */ ++#define _POSIX_THREAD_THREADS_MAX 64 ++/* This is the value this implementation supports. */ ++#define PTHREAD_THREADS_MAX 1024 ++ ++/* Maximum amount by which a process can descrease its asynchronous I/O ++ priority level. */ ++#define AIO_PRIO_DELTA_MAX 20 ++ ++/* Minimum size for a thread. We are free to choose a reasonable value. */ ++#define PTHREAD_STACK_MIN 16384 ++ ++/* Maximum number of POSIX timers available. */ ++#define TIMER_MAX 256 ++ ++/* Maximum number of timer expiration overruns. */ ++#define DELAYTIMER_MAX 2147483647 +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/posix_opt.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/posix_opt.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/posix_opt.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/posix_opt.h 2006-01-16 01:49:07.000000000 +0100 +@@ -0,0 +1,190 @@ ++/* Define POSIX options for FreeBSD. ++ Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Never include this file directly; use instead. ++ */ ++ ++#ifndef _BITS_POSIX_OPT_H ++#define _BITS_POSIX_OPT_H 1 ++ ++/* Job control is supported. */ ++#define _POSIX_JOB_CONTROL 1 ++ ++/* Processes have a saved set-user-ID and a saved set-group-ID. */ ++#define _POSIX_SAVED_IDS 1 ++ ++/* Priority scheduling is supported. */ ++#define _POSIX_PRIORITY_SCHEDULING 200112L ++ ++/* Synchronizing file data is supported. */ ++#define _POSIX_SYNCHRONIZED_IO 200112L ++ ++/* The fsync function is present. */ ++#define _POSIX_FSYNC 200112L ++ ++/* Mapping of files to memory is supported. */ ++#define _POSIX_MAPPED_FILES 200112L ++ ++/* Locking of all memory is supported. */ ++#define _POSIX_MEMLOCK 200112L ++ ++/* Locking of ranges of memory is supported. */ ++#define _POSIX_MEMLOCK_RANGE 200112L ++ ++/* Setting of memory protections is supported. */ ++#define _POSIX_MEMORY_PROTECTION 200112L ++ ++/* Only root can change owner of file. */ ++#define _POSIX_CHOWN_RESTRICTED 1 ++ ++/* `c_cc' member of 'struct termios' structure can be disabled by ++ using the value _POSIX_VDISABLE. */ ++#define _POSIX_VDISABLE ((unsigned char)'\377') ++ ++/* Filenames are not silently truncated. */ ++#define _POSIX_NO_TRUNC 1 ++/* X/Open realtime support is only partially available. */ ++#define _XOPEN_REALTIME -1 ++ ++/* X/Open realtime thread support is only partially available. */ ++#define _XOPEN_REALTIME_THREADS -1 ++ ++/* Implementation supports `poll' function. */ ++#define _POSIX_POLL 1 ++ ++/* Implementation supports `select' and `pselect' functions. */ ++#define _POSIX_SELECT 1 ++ ++/* XPG4.2 shared memory is supported. */ ++#define _XOPEN_SHM 1 ++ ++/* Tell we have POSIX threads. */ ++#define _POSIX_THREADS 200112L ++ ++/* We have the reentrant functions described in POSIX. */ ++#define _POSIX_REENTRANT_FUNCTIONS 1 ++#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L ++ ++/* We provide priority scheduling for threads. */ ++#define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L ++ ++/* We support user-defined stack sizes. */ ++#define _POSIX_THREAD_ATTR_STACKSIZE 200112L ++ ++/* We support user-defined stacks. */ ++#define _POSIX_THREAD_ATTR_STACKADDR 200112L ++ ++/* We support POSIX.1b semaphores, but only the non-shared form for now. */ ++#define _POSIX_SEMAPHORES 200112L ++ ++/* Real-time signals are not available. */ ++#define _POSIX_REALTIME_SIGNALS -1 ++ ++/* We support asynchronous I/O. */ ++#define _POSIX_ASYNCHRONOUS_IO 200112L ++#define _POSIX_ASYNC_IO 1 ++/* Alternative name for Unix98. */ ++#define _LFS_ASYNCHRONOUS_IO 1 ++/* Support for prioritization is not available. */ ++#define _POSIX_PRIORITIZED_IO -1 ++ ++/* The LFS support in asynchronous I/O is also available. */ ++#define _LFS64_ASYNCHRONOUS_IO 1 ++ ++/* The rest of the LFS is also available. */ ++#define _LFS_LARGEFILE 1 ++#define _LFS64_LARGEFILE 1 ++#define _LFS64_STDIO 1 ++ ++/* POSIX shared memory objects are implemented. */ ++#define _POSIX_SHARED_MEMORY_OBJECTS 200112L ++ ++/* CPU-time clocks somewhere supported. */ ++#define _POSIX_CPUTIME 0 ++ ++/* We support somewhere the clock also in threads. */ ++#define _POSIX_THREAD_CPUTIME 0 ++ ++/* GNU libc provides regular expression handling. */ ++#define _POSIX_REGEXP 1 ++ ++/* Reader/Writer locks are available. */ ++#define _POSIX_READER_WRITER_LOCKS 200112L ++ ++/* We have a POSIX shell. */ ++#define _POSIX_SHELL 1 ++ ++/* We support the Timeouts option. */ ++#define _POSIX_TIMEOUTS 200112L ++ ++/* We support spinlocks. */ ++#define _POSIX_SPIN_LOCKS 200112L ++ ++/* The `spawn' function family is supported. */ ++#define _POSIX_SPAWN 200112L ++ ++/* We have POSIX timers. */ ++#define _POSIX_TIMERS 200112L ++ ++/* The barrier functions are available. */ ++#define _POSIX_BARRIERS 200112L ++ ++/* POSIX message queues are not available. */ ++#define _POSIX_MESSAGE_PASSING -1 ++ ++/* Thread process-shared synchronization is not supported. */ ++#define _POSIX_THREAD_PROCESS_SHARED -1 ++ ++/* The monotonic clock is available. */ ++#define _POSIX_MONOTONIC_CLOCK 200112L ++ ++/* The clock selection interfaces are not available. */ ++#define _POSIX_CLOCK_SELECTION -1 ++ ++/* Advisory information interfaces are not available. */ ++#define _POSIX_ADVISORY_INFO -1 ++ ++/* IPv6 support is available. */ ++#define _POSIX_IPV6 200112L ++ ++/* Raw socket support is available. */ ++#define _POSIX_RAW_SOCKETS 200112L ++ ++/* We have at least one terminal. */ ++#define _POSIX2_CHAR_TERM 200112L ++ ++/* Neither process nor thread sporadic server interfaces is available. */ ++#define _POSIX_SPORADIC_SERVER -1 ++#define _POSIX_THREAD_SPORADIC_SERVER -1 ++ ++/* trace.h is not available. */ ++#define _POSIX_TRACE -1 ++#define _POSIX_TRACE_EVENT_FILTER -1 ++#define _POSIX_TRACE_INHERIT -1 ++#define _POSIX_TRACE_LOG -1 ++ ++/* Typed memory objects are not available. */ ++#define _POSIX_TYPED_MEMORY_OBJECTS -1 ++ ++/* No support for priority inheritance or protection. */ ++#define _POSIX_THREAD_PRIO_INHERIT -1 ++#define _POSIX_THREAD_PRIO_PROTECT -1 ++ ++#endif /* bits/posix_opt.h */ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigthread.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigthread.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigthread.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigthread.h 2005-12-16 14:31:51.000000000 +0100 +@@ -0,0 +1,38 @@ ++/* Signal handling function for threaded programs. ++ Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_SIGTHREAD_H ++#define _BITS_SIGTHREAD_H 1 ++ ++#if !defined _SIGNAL_H && !defined _PTHREAD_H ++# error "Never include this file directly. Use instead" ++#endif ++ ++/* Functions for handling signals. */ ++ ++/* Modify the signal mask for the calling thread. The arguments have ++ the same meaning as for sigprocmask(2). */ ++extern int pthread_sigmask (int __how, ++ __const __sigset_t *__restrict __newmask, ++ __sigset_t *__restrict __oldmask) __THROW; ++ ++/* Send signal SIGNO to the given thread. */ ++extern int pthread_kill (pthread_t __threadid, int __signo) __THROW; ++ ++#endif /* bits/sigthread.h */ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/typesizes.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/typesizes.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/typesizes.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/typesizes.h 2005-12-21 18:45:04.000000000 +0100 +@@ -0,0 +1,66 @@ ++/* bits/typesizes.h -- underlying types for *_t. kFreeBSD version. ++ Copyright (C) 2002, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_TYPES_H ++# error "Never include directly; use instead." ++#endif ++ ++#ifndef _BITS_TYPESIZES_H ++#define _BITS_TYPESIZES_H 1 ++ ++/* See for the meaning of these macros. This file exists so ++ that need not vary across different GNU platforms. */ ++ ++#define __DEV_T_TYPE __U32_TYPE ++#define __UID_T_TYPE __U32_TYPE ++#define __GID_T_TYPE __U32_TYPE ++#define __INO_T_TYPE __U32_TYPE ++#define __INO64_T_TYPE __UQUAD_TYPE ++#define __MODE_T_TYPE __U16_TYPE ++#define __NLINK_T_TYPE __U16_TYPE ++#define __OFF_T_TYPE __SQUAD_TYPE ++#define __OFF64_T_TYPE __SQUAD_TYPE ++#define __PID_T_TYPE __S32_TYPE ++#define __RLIM_T_TYPE __SQUAD_TYPE ++#define __RLIM64_T_TYPE __SQUAD_TYPE ++#define __BLKCNT_T_TYPE __SQUAD_TYPE ++#define __BLKCNT64_T_TYPE __SQUAD_TYPE ++#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE ++#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE ++#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE ++#define __FSFILCNT64_T_TYPE __UQUAD_TYPE ++#define __ID_T_TYPE __U32_TYPE ++#define __CLOCK_T_TYPE __S32_TYPE ++#define __TIME_T_TYPE __SLONGWORD_TYPE ++#define __USECONDS_T_TYPE __U32_TYPE ++#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE ++#define __DADDR_T_TYPE __S32_TYPE ++#define __SWBLK_T_TYPE __S32_TYPE ++#define __KEY_T_TYPE __SLONGWORD_TYPE ++#define __CLOCKID_T_TYPE __S32_TYPE ++#define __TIMER_T_TYPE __S32_TYPE ++#define __BLKSIZE_T_TYPE __U32_TYPE ++#define __FSID_T_TYPE struct { int __val[2]; } ++#define __SSIZE_T_TYPE __SWORD_TYPE ++ ++/* Number of descriptors that can fit in an `fd_set'. */ ++#define __FD_SETSIZE 1024 ++ ++ ++#endif /* bits/typesizes.h */ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/execve.c linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/execve.c +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/execve.c 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/execve.c 2005-12-18 01:14:10.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/fork.c linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/fork.c +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/fork.c 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/fork.c 2005-12-18 01:14:10.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/fork.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/fork.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/fork.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/fork.h 2005-12-18 01:14:10.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i486/pt-machine.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i486/pt-machine.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i486/pt-machine.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i486/pt-machine.h 2005-12-19 21:20:00.000000000 +0100 +@@ -0,0 +1,8 @@ ++ ++/* i486+ is almost same as plain i386 version */ ++#include_next ++ ++/* but compare-and-swap is always available */ ++ ++#undef TEST_FOR_COMPARE_AND_SWAP ++ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i586/pt-machine.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i586/pt-machine.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i586/pt-machine.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i586/pt-machine.h 2006-01-12 14:44:32.000000000 +0100 +@@ -0,0 +1,8 @@ ++ ++/* i486+ is almost same as plain i386 version */ ++#include_next ++ ++/* but compare-and-swap is always available */ ++ ++#undef TEST_FOR_COMPARE_AND_SWAP ++ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i686/pt-machine.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i686/pt-machine.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i686/pt-machine.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i686/pt-machine.h 2006-01-12 14:44:32.000000000 +0100 +@@ -0,0 +1,8 @@ ++ ++/* i486+ is almost same as plain i386 version */ ++#include_next ++ ++/* but compare-and-swap is always available */ ++ ++#undef TEST_FOR_COMPARE_AND_SWAP ++ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/pt-machine.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/pt-machine.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/pt-machine.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/pt-machine.h 2006-01-06 21:26:14.000000000 +0100 +@@ -0,0 +1,76 @@ ++/* Machine-dependent pthreads configuration and inline functions. ++ ix86 version for FreeBSD. ++ Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public License as ++ published by the Free Software Foundation; either version 2.1 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _FREEBSD_PT_MACHINE_H ++#define _FREEBSD_PT_MACHINE_H 1 ++ ++/* ++ some parts are common with linux/i386 version ++ ++ linux specific parts should be in ++ linuxthreads/sysdeps/unix/sysv/linux/i386/ ++ but they are included directly in ++ linuxthreads/sysdeps/i386/ ++ ++ so include them ++ ++ */ ++ ++#include ++#include ++ ++/* hack them */ ++ ++#ifndef __ASSEMBLER__ ++ ++#undef INIT_THREAD_SELF ++#undef FREE_THREAD ++ ++/* The P4 and above really want some help to prevent overheating. */ ++#define BUSY_WAIT_NOP __asm__ ("rep; nop") ++ ++/* and add few FreeBSD specifics */ ++ ++#include ++ ++/* Initialize the thread-unique value. */ ++ ++#define INIT_THREAD_SELF(descr, nr) \ ++{ \ ++ long tmp; \ ++ tmp = (long) descr; \ ++ if (sysarch(I386_SET_GSBASE, &tmp) != 0) \ ++ { \ ++ abort(); \ ++ } \ ++} ++ ++#define FREE_THREAD(descr, nr) do { } while (0) ++ ++#endif /* __ASSEMBLER__ */ ++ ++/* We want the OS to assign stack addresses. */ ++#define FLOATING_STACKS 1 ++ ++/* Maximum size of the stack if the rlimit is unlimited. */ ++#define ARCH_STACK_MAX_SIZE 8*1024*1024 ++ ++#endif /* _FREEBSD_PT_MACHINE_H */ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep-cancel.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep-cancel.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep-cancel.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep-cancel.h 2006-05-25 21:43:09.000000000 +0200 +@@ -0,0 +1,149 @@ ++/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Jakub Jelinek , 2002. ++ Modification for FreeBSD by Petr Salinger, 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++#ifndef __ASSEMBLER__ ++# include ++#endif ++ ++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt ++ ++# undef PSEUDO ++# define PSEUDO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ SINGLE_THREAD_P; \ ++ jne L(pseudo_cancel); \ ++ DO_CALL (syscall_name, args); \ ++ jb SYSCALL_ERROR_LABEL; \ ++ ret; \ ++ L(pseudo_cancel): \ ++ CENABLE \ ++ movl %eax, %ecx; \ ++ movl $SYS_ify (syscall_name), %eax; \ ++ int $0x80; \ ++ PUSHRESULT; \ ++ movl %ecx, %eax; \ ++ CDISABLE; \ ++ POPRESULT; \ ++ jb SYSCALL_ERROR_LABEL; \ ++ L(pseudo_end): ++ ++/* ++ on FreeBSD some syscalls return result in pair edx+eax, ++ therefore proper way would be ++ ++# define PUSHRESULT pushl %edx; pushl %eax; pushfl ++# define POPRESULT popfl; popl %eax; popl %edx ++ ++ for FreeBSD 5.4 affected syscalls are ++ ++ lseek() ++ fork() ++ vfork() ++ rfork() ++ ++ none of them is cancelable, therefore ++*/ ++ ++# define PUSHRESULT pushl %eax; pushfl ++# define POPRESULT popfl; popl %eax ++ ++# ifdef IS_IN_libpthread ++# define CENABLE call __pthread_enable_asynccancel; ++# define CDISABLE call __pthread_disable_asynccancel ++# elif defined IS_IN_librt ++# ifdef PIC ++# define CENABLE pushl %ebx; \ ++ call __i686.get_pc_thunk.bx; \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ ++ call __librt_enable_asynccancel@PLT; \ ++ popl %ebx; ++# define CDISABLE pushl %ebx; \ ++ call __i686.get_pc_thunk.bx; \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ ++ call __librt_disable_asynccancel@PLT; \ ++ popl %ebx; ++# else ++# define CENABLE call __librt_enable_asynccancel; ++# define CDISABLE call __librt_disable_asynccancel ++# endif ++# else ++# define CENABLE call __libc_enable_asynccancel; ++# define CDISABLE call __libc_disable_asynccancel ++# endif ++ ++#if !defined NOT_IN_libc ++# define __local_multiple_threads __libc_multiple_threads ++#elif defined IS_IN_libpthread ++# define __local_multiple_threads __pthread_multiple_threads ++#else ++# define __local_multiple_threads __librt_multiple_threads ++#endif ++ ++# ifndef __ASSEMBLER__ ++# if defined FLOATING_STACKS && USE___THREAD && defined PIC ++# define SINGLE_THREAD_P \ ++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ ++ p_header.data.multiple_threads) == 0, 1) ++# else ++extern int __local_multiple_threads ++# if !defined NOT_IN_libc || defined IS_IN_libpthread ++ attribute_hidden; ++# else ++ ; ++# endif ++# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) ++# endif ++# else ++# if !defined PIC ++# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads ++# elif defined FLOATING_STACKS && USE___THREAD ++# define SINGLE_THREAD_P cmpl $0, %gs:MULTIPLE_THREADS_OFFSET ++# else ++# if !defined NOT_IN_libc || defined IS_IN_libpthread ++# define __SINGLE_THREAD_CMP cmpl $0, __local_multiple_threads@GOTOFF(%ecx) ++# else ++# define __SINGLE_THREAD_CMP \ ++ movl __local_multiple_threads@GOT(%ecx), %ecx;\ ++ cmpl $0, (%ecx) ++# endif ++# if !defined HAVE_HIDDEN || !USE___THREAD ++# define SINGLE_THREAD_P \ ++ SETUP_PIC_REG (cx); \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ ++ __SINGLE_THREAD_CMP ++# else ++# define SINGLE_THREAD_P \ ++ call __i686.get_pc_thunk.cx; \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ ++ __SINGLE_THREAD_CMP ++# endif ++# endif ++# endif ++ ++#elif !defined __ASSEMBLER__ ++ ++/* This code should never be used but we define it anyhow. */ ++# define SINGLE_THREAD_P (1) ++ ++#endif +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/tls.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/tls.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/tls.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/tls.h 2005-12-20 23:45:10.000000000 +0100 +@@ -0,0 +1,93 @@ ++/* Definition for thread-local data handling. linuxthreads/i386 version. ++ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Modification for FreeBSD by Petr Salinger, 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 _FREEBSD_TLS_H ++#define _FREEBSD_TLS_H ++ ++#include ++ ++/* We can support TLS only if the floating-stack support is available. ++ To avoid bothering with the TLS support code at all, ++ use configure --without-tls. ++ ++ We need USE_TLS to be consistently defined, for ldsodefs.h conditionals. ++ But some of the code below can cause problems in building libpthread ++*/ ++ ++#if defined HAVE_TLS_SUPPORT \ ++ && (defined FLOATING_STACKS || !defined IS_IN_libpthread) ++ ++# ifndef __ASSEMBLER__ ++ ++#undef TLS_INIT_TP ++#undef TLS_SETUP_GS_SEGMENT ++ ++#include ++#include ++ ++ ++/* Code to initially initialize the thread pointer. This might need ++ special attention since 'errno' is not yet available and if the ++ operation can cause a failure 'errno' must not be touched. */ ++ ++# define TLS_DO_SET_GSBASE(descr) \ ++({ \ ++ long base = (long) descr; \ ++ int result; \ ++ asm volatile ( \ ++ "pushl %3\n\t" \ ++ "pushl %2\n\t" \ ++ "pushl %1\n\t" \ ++ "int $0x80\n\t" \ ++ "popl %3\n\t" \ ++ "popl %3\n\t" \ ++ "popl %3\n\t" \ ++ : "=a" (result) \ ++ : "0" (SYS_sysarch), \ ++ "i" (I386_SET_GSBASE), \ ++ "d" (&base) \ ++ : "cc" ); \ ++ result; \ ++}) ++ ++# define TLS_SETUP_GS_SEGMENT(descr, secondcall) \ ++ (TLS_DO_SET_GSBASE(descr) \ ++ ? "set_thread_area failed when setting up thread-local storage\n" : NULL) ++ ++/* The value of this macro is null if successful, or an error string. */ ++ ++# define TLS_INIT_TP(descr, secondcall) \ ++ ({ \ ++ void *_descr = (descr); \ ++ tcbhead_t *head = _descr; \ ++ \ ++ head->tcb = _descr; \ ++ /* For now the thread descriptor is at the same address. */ \ ++ head->self = _descr; \ ++ \ ++ INIT_SYSINFO; \ ++ TLS_SETUP_GS_SEGMENT (_descr, secondcall); \ ++ }) ++ ++# endif /* __ASSEMBLER__ */ ++ ++#endif /* HAVE_TLS_SUPPORT && (FLOATING_STACKS || !IS_IN_libpthread) */ ++ ++#endif /* _FREEBSD_TLS_H */ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/Implies linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/Implies +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/Implies 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/Implies 2005-12-16 14:31:51.000000000 +0100 +@@ -0,0 +1 @@ ++pthread +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/jmp-unwind.c linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/jmp-unwind.c +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/jmp-unwind.c 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/jmp-unwind.c 2005-12-28 19:44:56.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/Makefile linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/Makefile +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/Makefile 2005-12-16 16:54:18.000000000 +0100 +@@ -0,0 +1,3 @@ ++ifeq ($(subdir),linuxthreads) ++sysdep_routines += register-atfork unregister-atfork ++endif +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/pthread_sig.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/pthread_sig.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/pthread_sig.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/pthread_sig.h 2006-01-17 15:02:29.000000000 +0100 +@@ -0,0 +1,6 @@ ++/* Signal numbers used for the communication. */ ++ ++int __pthread_sig_restart = 32; ++int __pthread_sig_cancel = 33; ++int __pthread_sig_debug = 34; ++ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/pt-sigsuspend.S linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/pt-sigsuspend.S +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/pt-sigsuspend.S 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/pt-sigsuspend.S 2006-01-10 15:22:18.000000000 +0100 +@@ -0,0 +1,25 @@ ++/* Internal sigsuspend system call for LinuxThreads. FreeBSD version. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++ ++PSEUDO_NOERRNO(__pthread_sigsuspend, sigsuspend, 1) ++ ret_NOERRNO ++PSEUDO_END_NOERRNO(__pthread_sigsuspend) +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/raise.c linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/raise.c +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/raise.c 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/raise.c 2005-12-19 21:20:00.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/register-atfork.c linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/register-atfork.c +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/register-atfork.c 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/register-atfork.c 2005-12-19 21:20:00.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/smp.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/smp.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/smp.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/smp.h 2005-12-16 14:31:51.000000000 +0100 +@@ -0,0 +1,36 @@ ++/* Determine whether the host has multiple processors. FreeBSD version. ++ Copyright (C) 1996, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++ ++/* Test whether the machine has more than one processor. */ ++static inline int ++is_smp_system (void) ++{ ++ /* Fetch sysctl value of "hw.ncpu". */ ++ int request[] = { CTL_HW, HW_NCPU }; ++ int result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ /* Dummy result. */ ++ return 0; ++ ++ return (result > 1); ++} +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/unregister-atfork.c linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/unregister-atfork.c +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/unregister-atfork.c 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/unregister-atfork.c 2005-12-19 21:20:00.000000000 +0100 +@@ -0,0 +1 @@ ++#include +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/Versions linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/Versions +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/Versions 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/Versions 2005-12-16 16:54:18.000000000 +0100 +@@ -0,0 +1,5 @@ ++libc { ++ GLIBC_2.3.2 { ++ __register_atfork; ++ } ++} +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/asm/prctl.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/asm/prctl.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/asm/prctl.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/asm/prctl.h 2006-01-21 00:13:27.000000000 +0100 +@@ -0,0 +1 @@ ++/* placeholder to make linuxthreads/sysdeps/x86_64/pt-machine.h happy */ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/Makefile linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/Makefile +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/Makefile 2006-01-21 00:13:27.000000000 +0100 +@@ -0,0 +1,4 @@ ++ifeq ($(subdir),linuxthreads) ++CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions \ ++ -fno-asynchronous-unwind-tables $(fno-unit-at-a-time) ++endif +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/pt-machine.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/pt-machine.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/pt-machine.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/pt-machine.h 2006-01-06 21:26:14.000000000 +0100 +@@ -0,0 +1,51 @@ ++/* Machine-dependent pthreads configuration and inline functions. ++ x86-64 FreeBSD version. ++ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 _FREEBSD_PT_MACHINE_H ++#define _FREEBSD_PT_MACHINE_H 1 ++ ++/* ++ almost all parts are common with linux version ++ */ ++ ++#include ++ ++#ifndef __ASSEMBLER__ ++ ++/* and only one FreeBSD specifics */ ++ ++#include ++ ++/* Initialize the thread-unique value. */ ++ ++#undef INIT_THREAD_SELF ++#define INIT_THREAD_SELF(descr, nr) \ ++{ \ ++ long tmp; \ ++ tmp = (long) descr; \ ++ if (sysarch(AMD64_SET_FSBASE, &tmp) != 0) \ ++ { \ ++ abort(); \ ++ } \ ++} ++ ++#endif /* !__ASSEMBLER__ */ ++ ++#endif /* pt-machine.h */ +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep-cancel.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep-cancel.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep-cancel.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep-cancel.h 2006-03-18 17:31:12.000000000 +0100 +@@ -0,0 +1,138 @@ ++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Jakub Jelinek , 2002. ++ Modification for FreeBSD contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++#ifndef __ASSEMBLER__ ++# include ++#endif ++ ++/* Syscalls with more than 6 arguments are not supported here. */ ++ ++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt ++ ++# undef PSEUDO ++# define PSEUDO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ SINGLE_THREAD_P; \ ++ jne L(pseudo_cancel); \ ++ DO_CALL (syscall_name, args); \ ++ jb SYSCALL_ERROR_LABEL; \ ++ ret; \ ++ L(pseudo_cancel): \ ++ /* Save registers that might get destroyed. */ \ ++ SAVESTK_##args \ ++ PUSHARGS_##args \ ++ CENABLE \ ++ /* Restore registers. */ \ ++ POPARGS_##args \ ++ RESTSTK_##args \ ++ /* The return value from CENABLE is argument for CDISABLE. */ \ ++ movq %rax, (%rsp); \ ++ movl $SYS_ify (syscall_name), %eax; \ ++ syscall; \ ++ popq %rdi; cfi_adjust_cfa_offset(-8); \ ++ pushfq; cfi_adjust_cfa_offset(8); \ ++ /* Save %rax since it's the return/error code from the syscall. */ \ ++ movq %rax, 8(%rsp); \ ++ CDISABLE \ ++ popfq; cfi_adjust_cfa_offset(-8); \ ++ /* fetch the error code from the syscall. */ \ ++ popq %rax; cfi_adjust_cfa_offset(-8); \ ++ /* adjust rsp, do not change flags */ \ ++ popq %rdx; cfi_adjust_cfa_offset(-8); \ ++ jb SYSCALL_ERROR_LABEL; \ ++ L(pseudo_end): ++ ++# define PUSHARGS_0 /* Nothing. */ ++# define PUSHARGS_1 PUSHARGS_0 movq %rdi, 8(%rsp); ++# define PUSHARGS_2 PUSHARGS_1 movq %rsi, 16(%rsp); ++# define PUSHARGS_3 PUSHARGS_2 movq %rdx, 24(%rsp); ++# define PUSHARGS_4 PUSHARGS_3 movq %rcx, 32(%rsp); ++# define PUSHARGS_5 PUSHARGS_4 movq %r8, 40(%rsp); ++# define PUSHARGS_6 PUSHARGS_5 movq %r9, 48(%rsp); ++ ++# define POPARGS_0 /* Nothing. */ ++# define POPARGS_1 POPARGS_0 movq 8(%rsp), %rdi; ++# define POPARGS_2 POPARGS_1 movq 16(%rsp), %rsi; ++# define POPARGS_3 POPARGS_2 movq 24(%rsp), %rdx; ++# define POPARGS_4 POPARGS_3 movq 32(%rsp), %r10; ++# define POPARGS_5 POPARGS_4 movq 40(%rsp), %r8; ++# define POPARGS_6 POPARGS_5 movq 48(%rsp), %r9; ++ ++/* We always have to align the stack before calling a function. */ ++# define SAVESTK_0 subq $24, %rsp;cfi_adjust_cfa_offset(24); ++# define SAVESTK_1 SAVESTK_0 ++# define SAVESTK_2 SAVESTK_1 ++# define SAVESTK_3 subq $40, %rsp;cfi_adjust_cfa_offset(40); ++# define SAVESTK_4 SAVESTK_3 ++# define SAVESTK_5 subq $56, %rsp;cfi_adjust_cfa_offset(56); ++# define SAVESTK_6 SAVESTK_5 ++ ++# define RESTSTK_0 /* Nothing. */ ++# define RESTSTK_1 RESTSTK_0 ++# define RESTSTK_2 RESTSTK_1 ++# define RESTSTK_3 addq $16, %rsp;cfi_adjust_cfa_offset(-16); ++# define RESTSTK_4 RESTSTK_3 ++# define RESTSTK_5 addq $32, %rsp;cfi_adjust_cfa_offset(-32); ++# define RESTSTK_6 RESTSTK_5 ++ ++# ifdef IS_IN_libpthread ++# define CENABLE call __pthread_enable_asynccancel; ++# define CDISABLE call __pthread_disable_asynccancel; ++# define __local_multiple_threads __pthread_multiple_threads ++# elif !defined NOT_IN_libc ++# define CENABLE call __libc_enable_asynccancel; ++# define CDISABLE call __libc_disable_asynccancel; ++# define __local_multiple_threads __libc_multiple_threads ++# else ++# define CENABLE call __librt_enable_asynccancel@plt; ++# define CDISABLE call __librt_disable_asynccancel@plt; ++# endif ++ ++# if defined IS_IN_libpthread || !defined NOT_IN_libc ++# ifndef __ASSEMBLER__ ++extern int __local_multiple_threads attribute_hidden; ++# define SINGLE_THREAD_P \ ++ __builtin_expect (__local_multiple_threads == 0, 1) ++# else ++# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads(%rip) ++# endif ++ ++# else ++ ++# ifndef __ASSEMBLER__ ++# define SINGLE_THREAD_P \ ++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ ++ p_header.data.multiple_threads) == 0, 1) ++# else ++# define SINGLE_THREAD_P cmpl $0, %fs:MULTIPLE_THREADS_OFFSET ++# endif ++ ++# endif ++ ++#elif !defined __ASSEMBLER__ ++ ++/* This code should never be used but we define it anyhow. */ ++# define SINGLE_THREAD_P (1) ++ ++#endif +diff -x .svn -Nurd null/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/tls.h linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/tls.h +--- null/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/tls.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/tls.h 2006-01-21 00:13:27.000000000 +0100 +@@ -0,0 +1,62 @@ ++/* Definitions for thread-local data handling. linuxthreads/x86-64 version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Modification for FreeBSD by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 _FREEBSD_TLS_H ++#define _FREEBSD_TLS_H ++ ++#include ++ ++#ifdef HAVE_TLS_SUPPORT ++ ++# ifndef __ASSEMBLER__ ++ ++#include ++#include ++ ++/* Code to initially initialize the thread pointer. This might need ++ special attention since 'errno' is not yet available and if the ++ operation can cause a failure 'errno' must not be touched. */ ++ ++# undef TLS_INIT_TP ++# define TLS_INIT_TP(descr, secondcall) \ ++ ({ \ ++ void *_descr = (descr); \ ++ tcbhead_t *head = _descr; \ ++ long int _result; \ ++ \ ++ head->tcb = _descr; \ ++ /* For now the thread descriptor is at the same address. */ \ ++ head->self = _descr; \ ++ \ ++ asm volatile ("syscall" \ ++ : "=a" (_result) \ ++ : "0" ((unsigned long int) SYS_sysarch), \ ++ "D" ((unsigned long int) AMD64_SET_FSBASE), \ ++ "S" (&_descr) \ ++ : "memory", "cc", "cx", "dx", "r8", "r9", "r10", "r11"); \ ++ \ ++ _result ? "cannot set %fs base address for thread-local storage" : 0; \ ++ }) ++ ++ ++# endif /* HAVE_TLS_SUPPORT */ ++#endif /* __ASSEMBLER__ */ ++ ++#endif /* tls.h */ --- glibc-2.4.orig/debian/patches/kfreebsd/local-readdir_r.diff +++ glibc-2.4/debian/patches/kfreebsd/local-readdir_r.diff @@ -0,0 +1,39 @@ +--- sysdeps/unix/readdir_r.c.orig 2002-08-28 07:52:06.000000000 +0200 ++++ sysdeps/unix/readdir_r.c 2003-07-03 16:43:05.000000000 +0200 +@@ -113,7 +113,35 @@ + while (dp->d_ino == 0); + + if (dp != NULL) +- *result = memcpy (entry, dp, reclen); ++ { ++ /* The required size of *entry, according to POSIX, is ++ offsetof (DIRENT_TYPE, d_name[0]) + NAME_MAX + 1. ++ We must not write beyond the end of *entry. On some operating ++ systems, dp->d_reclen may be larger; in this case, copy only as ++ many bytes as needed. Also give an error if d_name is too long. */ ++#ifdef _DIRENT_HAVE_D_RECLEN ++ /* DIRENT_TYPE is of variable size, with d_name as its last entry. */ ++ size_t namelen; ++# ifdef _DIRENT_HAVE_D_NAMLEN ++ namelen = dp->d_namlen; ++# else ++ namelen = strlen (dp->d_name); ++# endif ++ ++ if (namelen <= NAME_MAX) ++ *result = memcpy (entry, dp, ++ offsetof (DIRENT_TYPE, d_name[0]) + namelen + 1); ++ else ++ { ++ errno = EOVERFLOW; ++ dp = NULL; ++ *result = NULL; ++ } ++#else ++ /* DIRENT_TYPE is of fixed size. */ ++ *result = memcpy (entry, dp, reclen); ++#endif ++ } + else + *result = NULL; + --- glibc-2.4.orig/debian/patches/kfreebsd/local-sysdeps-2.4.diff +++ glibc-2.4/debian/patches/kfreebsd/local-sysdeps-2.4.diff @@ -0,0 +1,250 @@ +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/socket.h.orig 2006-05-30 00:26:45.000000000 +0200 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/socket.h 2006-05-30 00:27:00.000000000 +0200 +@@ -192,7 +192,7 @@ + MSG_COMPAT = 0x8000,/* Used in sendit(). */ + #define MSG_COMPAT MSG_COMPAT + MSG_NOSIGNAL = 0x20000 /* do not generate SIGPIPE on EOF */ +-#if 0 /* available since FreeBSD 6.0 */ ++#if 1 /* available since FreeBSD 6.0 */ + #define MSG_NOSIGNAL MSG_NOSIGNAL + #endif + }; +--- linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/allocrtsig.c 2005-12-19 08:43:29.000000000 +0100 ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/allocrtsig.c 2006-03-02 10:34:13.000000000 +0100 +@@ -1,4 +1,4 @@ +-#include ++#include + strong_alias (__libc_current_sigrtmin, __libc_current_sigrtmin_private); + strong_alias (__libc_current_sigrtmax, __libc_current_sigrtmax_private); + strong_alias (__libc_allocate_rtsig, __libc_allocate_rtsig_private); +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/kernel-posix-cpu-timers.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/kernel-posix-cpu-timers.h 2006-03-02 14:04:19.000000000 +0100 +@@ -0,0 +1 @@ ++/* placeholder */ +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/fcntl.h 2005-12-16 16:29:14.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/fcntl.h 2006-03-02 11:24:01.000000000 +0100 +@@ -43,6 +43,8 @@ + #define O_NOFOLLOW 0x0100 /* Don't follow symlinks. */ + #endif + ++enum { O_DIRECTORY = 0 }; ++ + /* File status flags for `open' and `fcntl'. */ + #define O_APPEND 0x0008 /* Writes append to the file. */ + #define O_NONBLOCK 0x0004 /* Non-blocking I/O. */ +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/check_fds.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/check_fds.c 2006-03-02 10:30:14.000000000 +0100 +@@ -0,0 +1 @@ ++void __libc_check_standard_fds (void) {;} +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/check_pf.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/check_pf.c 2006-03-02 10:39:53.000000000 +0100 +@@ -0,0 +1 @@ ++#include +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-osinfo.h 2006-02-14 18:12:55.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-osinfo.h 2006-03-02 11:24:32.000000000 +0100 +@@ -97,3 +97,24 @@ + } \ + } \ + } while (0) ++ ++static inline uintptr_t __attribute__ ((always_inline)) ++_dl_setup_stack_chk_guard (void) ++{ ++ uintptr_t ret; ++#ifdef ENABLE_STACKGUARD_RANDOMIZE ++ int fd = __open ("/dev/urandom", O_RDONLY); ++ if (fd >= 0) ++ { ++ ssize_t reslen = __read (fd, &ret, sizeof (ret)); ++ __close (fd); ++ if (reslen == (ssize_t) sizeof (ret)) ++ return ret; ++ } ++#endif ++ ret = 0; ++ unsigned char *p = (unsigned char *) &ret; ++ p[sizeof (ret) - 1] = 255; ++ p[sizeof (ret) - 2] = '\n'; ++ return ret; ++} +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/glob.c 2006-01-23 11:02:39.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/glob.c 2006-03-02 10:37:07.000000000 +0100 +@@ -1,3 +1,3 @@ + /* 'glob64' is different from 'glob', because + 'struct stat64' != 'struct stat'. */ +-#include ++#include +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.h 2006-01-19 14:02:55.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.h 2006-03-02 10:31:06.000000000 +0100 +@@ -81,27 +81,6 @@ + # define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */ + #else + +-# ifndef HAVE_HIDDEN +-# define SETUP_PIC_REG(reg) \ +- call 1f; \ +- .subsection 1; \ +-1:movl (%esp), %e##reg; \ +- ret; \ +- .previous +-# else +-# define SETUP_PIC_REG(reg) \ +- .section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax",@progbits; \ +- .globl __i686.get_pc_thunk.reg; \ +- .hidden __i686.get_pc_thunk.reg; \ +- .type __i686.get_pc_thunk.reg,@function; \ +-__i686.get_pc_thunk.reg: \ +- movl (%esp), %e##reg; \ +- ret; \ +- .size __i686.get_pc_thunk.reg, . - __i686.get_pc_thunk.reg; \ +- .previous; \ +- call __i686.get_pc_thunk.reg +-# endif +- + # if RTLD_PRIVATE_ERRNO + # define SYSCALL_ERROR_HANDLER \ + 0:SETUP_PIC_REG(cx); \ +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/sbrk.c 1970-01-01 01:00:00.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sbrk.c 2006-03-02 10:39:38.000000000 +0100 +@@ -0,0 +1 @@ ++#include +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/sigreturn.c 2005-12-16 13:27:58.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/sigreturn.c 2006-03-02 10:38:02.000000000 +0100 +@@ -1,3 +1,3 @@ + /* The sigreturn syscall cannot be explicitly called on FreeBSD, only + implicitly by returning from a signal handler. */ +-#include ++#include +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp_file.c 2005-12-16 13:27:58.000000000 +0100 ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp_file.c 2006-03-02 10:36:08.000000000 +0100 +@@ -1 +1 @@ +-#include ++#include +--- linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep-cancel.h (revision 1568) ++++ linuxthreads/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep-cancel.h (revision 1570) +@@ -61,12 +61,13 @@ + fork() + vfork() + rfork() ++ pipe() + + none of them is cancelable, therefore + */ + +-# define PUSHRESULT pushl %eax; pushfl +-# define POPRESULT popfl; popl %eax ++# define PUSHRESULT pushl %eax; cfi_adjust_cfa_offset (4); pushfl; cfi_adjust_cfa_offset (4) ++# define POPRESULT popfl; cfi_adjust_cfa_offset (-4); popl %eax; cfi_adjust_cfa_offset (-4) + + # ifdef IS_IN_libpthread + # define CENABLE call __pthread_enable_asynccancel; +@@ -74,15 +75,23 @@ + # elif defined IS_IN_librt + # ifdef PIC + # define CENABLE pushl %ebx; \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (ebx, 0); \ + call __i686.get_pc_thunk.bx; \ + addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ + call __librt_enable_asynccancel@PLT; \ +- popl %ebx; ++ popl %ebx; \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (ebx); + # define CDISABLE pushl %ebx; \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (ebx, 0); \ + call __i686.get_pc_thunk.bx; \ + addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ + call __librt_disable_asynccancel@PLT; \ +- popl %ebx; ++ popl %ebx; \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (ebx); + # else + # define CENABLE call __librt_enable_asynccancel; + # define CDISABLE call __librt_disable_asynccancel +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/rfork.S (revision 1568) ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/rfork.S (revision 1570) +@@ -33,6 +33,7 @@ + andl %edx, %eax + + popl %edx ++ cfi_adjust_cfa_offset(-4) + jmp *%ecx + + L(pseudo_end): +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/start_thread.S (revision 1568) ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/start_thread.S (revision 1570) +@@ -28,6 +28,10 @@ + + .text + ENTRY (__start_thread) ++ /* End FDE now, because in the child the unwind info will be ++ wrong. */ ++ cfi_endproc ++ + /* There is a window of a few instructions, right after the rfork + system call, where the handling of a signal would write garbage + into the stack shared by the parent and the child (assuming +@@ -199,4 +203,5 @@ + popl %ebx + popl %ebp + jmp SYSCALL_ERROR_LABEL ++ cfi_startproc + PSEUDO_END (__start_thread) +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/vfork.S (revision 1568) ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/vfork.S (revision 1570) +@@ -27,6 +27,7 @@ + + /* Pop the return PC value into ECX. */ + popl %ecx ++ cfi_adjust_cfa_offset(-4) + + /* Perform the system call. */ + DO_CALL (vfork, 0) +@@ -45,6 +46,7 @@ + L(error): + /* Push back the return PC. */ + pushl %ecx ++ cfi_adjust_cfa_offset(4) + + /* Branch to the error handler, hidden in PSEUDO_END. */ + jmp SYSCALL_ERROR_LABEL +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.h (revision 1568) ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.h (revision 1570) +@@ -136,14 +136,20 @@ + # else + # define SYSCALL_ERROR_HANDLER \ + 0:pushl %ebx; \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (ebx, 0); \ + SETUP_PIC_REG (bx); \ + addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ + pushl %eax; \ ++ cfi_adjust_cfa_offset (4); \ + PUSH_ERRNO_LOCATION_RETURN; \ + call BP_SYM (__errno_location)@PLT; \ + POP_ERRNO_LOCATION_RETURN; \ + popl %ecx; \ ++ cfi_adjust_cfa_offset (-4); \ + popl %ebx; \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (ebx); \ + movl %ecx, (%eax); \ + orl $-1, %eax; \ + jmp L(pseudo_end); +--- sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/syscall.S (revision 1568) ++++ sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/syscall.S (revision 1570) +@@ -21,9 +21,11 @@ + .text; + ENTRY (syscall) + popl %ecx /* Pop return address into %ecx. */ ++ cfi_adjust_cfa_offset (-4) + movl 0(%esp), %eax /* Load syscall number into %eax. */ + int $0x80 /* Do the system call. */ + pushl %ecx /* Push back return address. */ ++ cfi_adjust_cfa_offset (4) + jb SYSCALL_ERROR_LABEL; /* Jump to error handler if error. */ + + L(pseudo_end): --- glibc-2.4.orig/debian/patches/kfreebsd/submitted-thread_signals.diff +++ glibc-2.4/debian/patches/kfreebsd/submitted-thread_signals.diff @@ -0,0 +1,142 @@ + +Status: submitted upstream + see http://sourceware.org/bugzilla/show_bug.cgi?id=2383 + +diff -urN linuxthreads/pthread.c linuxthreads/pthread.c +--- linuxthreads/pthread.c 2006-01-17 13:28:26.000000000 +0100 ++++ linuxthreads/pthread.c 2006-01-17 13:26:42.000000000 +0100 +@@ -35,11 +35,7 @@ + #include + #include + #include +- +-/* Sanity check. */ +-#if !defined __SIGRTMIN || (__SIGRTMAX - __SIGRTMIN) < 3 +-# error "This must not happen" +-#endif ++#include + + #if !(USE_TLS && HAVE___THREAD) + /* These variables are used by the setup code. */ +@@ -176,44 +172,6 @@ + static void pthread_handle_sigrestart(int sig); + static void pthread_handle_sigdebug(int sig); + +-/* Signal numbers used for the communication. +- In these variables we keep track of the used variables. If the +- platform does not support any real-time signals we will define the +- values to some unreasonable value which will signal failing of all +- the functions below. */ +-int __pthread_sig_restart = __SIGRTMIN; +-int __pthread_sig_cancel = __SIGRTMIN + 1; +-int __pthread_sig_debug = __SIGRTMIN + 2; +- +-extern int __libc_current_sigrtmin_private (void); +- +-#if !__ASSUME_REALTIME_SIGNALS +-static int rtsigs_initialized; +- +-static void +-init_rtsigs (void) +-{ +- if (rtsigs_initialized) +- return; +- +- if (__libc_current_sigrtmin_private () == -1) +- { +- __pthread_sig_restart = SIGUSR1; +- __pthread_sig_cancel = SIGUSR2; +- __pthread_sig_debug = 0; +- } +- else +- { +- __pthread_restart = __pthread_restart_new; +- __pthread_suspend = __pthread_wait_for_restart_signal; +- __pthread_timedsuspend = __pthread_timedsuspend_new; +- } +- +- rtsigs_initialized = 1; +-} +-#endif +- +- + /* Initialize the pthread library. + Initialization is split in two functions: + - a constructor function that blocks the __pthread_sig_restart signal +@@ -548,9 +506,10 @@ + /* Likewise for the resolver state _res. */ + __pthread_initial_thread.p_resp = &_res; + #endif +-#if !__ASSUME_REALTIME_SIGNALS ++ ++#ifdef INIT_RTSIGS + /* Initialize real-time signals. */ +- init_rtsigs (); ++ INIT_RTSIGS; + #endif + /* Setup signal handlers for the initial thread. + Since signal handlers are shared between threads, these settings +diff -urN linuxthreads/sysdeps/unix/sysv/linux/pthread_sig.h linuxthreads/sysdeps/unix/sysv/linux/pthread_sig.h +--- linuxthreads/sysdeps/unix/sysv/linux/pthread_sig.h 1970-01-01 01:00:00.000000000 +0100 ++++ linuxthreads/sysdeps/unix/sysv/linux/pthread_sig.h 2006-01-17 13:24:51.000000000 +0100 +@@ -0,0 +1,60 @@ ++/* Linuxthreads - a simple clone()-based implementation of Posix */ ++/* threads for Linux. */ ++/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */ ++/* */ ++/* This program is free software; you can redistribute it and/or */ ++/* modify it under the terms of the GNU Library General Public License */ ++/* as published by the Free Software Foundation; either version 2 */ ++/* of the License, 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 Library General Public License for more details. */ ++ ++/* Sanity check. */ ++#if !defined __SIGRTMIN || (__SIGRTMAX - __SIGRTMIN) < 3 ++# error "This must not happen" ++#endif ++ ++/* Signal numbers used for the communication. ++ In these variables we keep track of the used variables. If the ++ platform does not support any real-time signals we will define the ++ values to some unreasonable value which will signal failing of all ++ the functions below. */ ++ ++int __pthread_sig_restart = __SIGRTMIN; ++int __pthread_sig_cancel = __SIGRTMIN + 1; ++int __pthread_sig_debug = __SIGRTMIN + 2; ++ ++extern int __libc_current_sigrtmin_private (void); ++ ++#if !__ASSUME_REALTIME_SIGNALS ++ ++#define INIT_RTSIGS init_rtsigs() ++ ++static int rtsigs_initialized; ++ ++static void ++init_rtsigs (void) ++{ ++ if (rtsigs_initialized) ++ return; ++ ++ if (__libc_current_sigrtmin_private () == -1) ++ { ++ __pthread_sig_restart = SIGUSR1; ++ __pthread_sig_cancel = SIGUSR2; ++ __pthread_sig_debug = 0; ++ } ++ else ++ { ++ __pthread_restart = __pthread_restart_new; ++ __pthread_suspend = __pthread_wait_for_restart_signal; ++ __pthread_timedsuspend = __pthread_timedsuspend_new; ++ } ++ ++ rtsigs_initialized = 1; ++} ++#endif ++ --- glibc-2.4.orig/debian/patches/kfreebsd/local-undef-glibc.diff +++ glibc-2.4/debian/patches/kfreebsd/local-undef-glibc.diff @@ -0,0 +1,14 @@ +Description: #undef __GLIBC__ before defining it +Author: rmh +Upstream status: REJECTED. DO NOT SUBMIT. (send to debian instead) + +--- include/features.h.orig 2005-02-18 01:08:56.000000000 +0100 ++++ include/features.h 2005-07-17 22:18:23.000000000 +0200 +@@ -288,6 +288,7 @@ + + /* Major and minor version number of the GNU C library package. Use + these macros to test for features in specific releases. */ ++#undef __GLIBC__ + #define __GLIBC__ 2 + #define __GLIBC_MINOR__ 3 + --- glibc-2.4.orig/debian/patches/alpha/submitted-pic.diff +++ glibc-2.4/debian/patches/alpha/submitted-pic.diff @@ -0,0 +1,24 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix errno for secondary threads on Alpha +# DP: Author: Daniel Jacobowitz +# DP: Upstream status: Pending +# DP: Status Details: Submitted Jan 8, 2003 +# DP: Date: Jan 8, 2003, updated 2003-03-23 by gotom. + +--- sysdeps/unix/alpha/sysdep.S 2003-03-23 16:01:02.000000000 +0900 ++++ sysdeps/unix/alpha/sysdep.S.new 2003-03-23 16:02:50.000000000 +0900 +@@ -95,14 +95,10 @@ + PROLOGUE + + /* Find our per-thread errno address */ +-#ifdef PIC +- bsr ra, __errno_location !samegp +-#else + jsr ra, __errno_location + #ifndef GPSAVEREG + ldgp gp, 0(ra) + #endif +-#endif + + /* Store the error value. */ + ldq t0, 8(sp) --- glibc-2.4.orig/debian/patches/alpha/submitted-xstat.diff +++ glibc-2.4/debian/patches/alpha/submitted-xstat.diff @@ -0,0 +1,258 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix alpha compile failure when kernel header < 2.6.4 is used. +# DP: Related bugs: +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: GOTO Masanori +# DP: Upstream status: Submitting +# DP: Status Details: Submitting +# DP: Date: 2005-03-03 + +Subject: [PATCH] alpha compilation fix with the kernel header < 2.6.4. + +This patch fixes alpha compilation fix when kernel header (< 2.6.4) is +used. Note that I unfold the original "fail:" part because enclosing +only "fail:" with #ifdef __ASSUME_STAT64_SYSCALL and __NR_*stat64 looks +unseemly. + +Regards, +-- gotom + +2005-02-18 GOTO Masanori + + * sysdeps/unix/sysv/linux/alpha/fxstat.c: Check + __ASSUME_STAT64_SYSCALL. + * sysdeps/unix/sysv/linux/alpha/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/xstatconv.c: Don't define + __libc_missing_axp_stat64 when it's not needed. + * sysdeps/unix/sysv/linux/alpha/xstatconv.h: Likewise. + +Index: sysdeps/unix/sysv/linux/alpha/fxstat.c +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/fxstat.c,v +retrieving revision 1.1 +diff -u -p -r1.1 fxstat.c +--- sysdeps/unix/sysv/linux/alpha/fxstat.c 11 Mar 2004 02:58:44 -0000 1.1 ++++ sysdeps/unix/sysv/linux/alpha/fxstat.c 18 Feb 2005 06:21:10 -0000 +@@ -1,5 +1,5 @@ + /* fxstat using old-style Unix stat system call. +- Copyright (C) 2004 Free Software Foundation, Inc. ++ Copyright (C) 2004, 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -35,27 +35,39 @@ int + __fxstat (int vers, int fd, struct stat *buf) + { + INTERNAL_SYSCALL_DECL (err); +- int result, errno_out; ++ int result; + struct kernel_stat kbuf; + ++#if __ASSUME_STAT64_SYSCALL > 0 ++ if (vers == _STAT_VER_KERNEL64) ++ { ++ result = INTERNAL_SYSCALL (fstat64, err, 2, fd, buf); ++ if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) ++ return result; ++ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); ++ return -1; ++ } ++#elif defined __NR_fstat64 + if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64) + { ++ int errno_out; + result = INTERNAL_SYSCALL (fstat64, err, 2, fd, buf); + if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) + return result; + errno_out = INTERNAL_SYSCALL_ERRNO (result, err); + if (errno_out != ENOSYS) +- goto fail; ++ { ++ __set_errno (errno_out); ++ return -1; ++ } + __libc_missing_axp_stat64 = 1; + } ++#endif + + result = INTERNAL_SYSCALL (fstat, err, 2, fd, &kbuf); + if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) + return __xstat_conv (vers, &kbuf, buf); +- errno_out = INTERNAL_SYSCALL_ERRNO (result, err); +- +- fail: +- __set_errno (errno_out); ++ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); + return -1; + } + hidden_def (__fxstat) +Index: sysdeps/unix/sysv/linux/alpha/lxstat.c +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/lxstat.c,v +retrieving revision 1.1 +diff -u -p -r1.1 lxstat.c +--- sysdeps/unix/sysv/linux/alpha/lxstat.c 11 Mar 2004 02:58:44 -0000 1.1 ++++ sysdeps/unix/sysv/linux/alpha/lxstat.c 18 Feb 2005 06:21:10 -0000 +@@ -1,5 +1,5 @@ + /* lxstat using old-style Unix stat system call. +- Copyright (C) 2004 Free Software Foundation, Inc. ++ Copyright (C) 2004, 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -35,27 +35,39 @@ int + __lxstat (int vers, const char *name, struct stat *buf) + { + INTERNAL_SYSCALL_DECL (err); +- int result, errno_out; ++ int result; + struct kernel_stat kbuf; + ++#if __ASSUME_STAT64_SYSCALL > 0 ++ if (vers == _STAT_VER_KERNEL64) ++ { ++ result = INTERNAL_SYSCALL (lstat64, err, 2, name, buf); ++ if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) ++ return result; ++ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); ++ return -1; ++ } ++#elif defined __NR_lstat64 + if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64) + { ++ int errno_out; + result = INTERNAL_SYSCALL (lstat64, err, 2, name, buf); + if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) + return result; + errno_out = INTERNAL_SYSCALL_ERRNO (result, err); + if (errno_out != ENOSYS) +- goto fail; ++ { ++ __set_errno (errno_out); ++ return -1; ++ } + __libc_missing_axp_stat64 = 1; + } ++#endif + + result = INTERNAL_SYSCALL (lstat, err, 2, name, &kbuf); + if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) + return __xstat_conv (vers, &kbuf, buf); +- errno_out = INTERNAL_SYSCALL_ERRNO (result, err); +- +- fail: +- __set_errno (errno_out); ++ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); + return -1; + } + hidden_def (__lxstat) +Index: sysdeps/unix/sysv/linux/alpha/xstat.c +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/xstat.c,v +retrieving revision 1.1 +diff -u -p -r1.1 xstat.c +--- sysdeps/unix/sysv/linux/alpha/xstat.c 11 Mar 2004 02:58:44 -0000 1.1 ++++ sysdeps/unix/sysv/linux/alpha/xstat.c 18 Feb 2005 06:21:10 -0000 +@@ -1,5 +1,5 @@ + /* xstat using old-style Unix stat system call. +- Copyright (C) 2004 Free Software Foundation, Inc. ++ Copyright (C) 2004, 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -35,27 +35,39 @@ int + __xstat (int vers, const char *name, struct stat *buf) + { + INTERNAL_SYSCALL_DECL (err); +- int result, errno_out; ++ int result; + struct kernel_stat kbuf; + ++#if __ASSUME_STAT64_SYSCALL > 0 ++ if (vers == _STAT_VER_KERNEL64) ++ { ++ result = INTERNAL_SYSCALL (stat64, err, 2, name, buf); ++ if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) ++ return result; ++ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); ++ return -1; ++ } ++#elif defined __NR_stat64 + if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64) + { ++ int errno_out; + result = INTERNAL_SYSCALL (stat64, err, 2, name, buf); + if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) + return result; + errno_out = INTERNAL_SYSCALL_ERRNO (result, err); + if (errno_out != ENOSYS) +- goto fail; ++ { ++ __set_errno (errno_out); ++ return -1; ++ } + __libc_missing_axp_stat64 = 1; + } ++#endif + + result = INTERNAL_SYSCALL (stat, err, 2, name, &kbuf); + if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) + return __xstat_conv (vers, &kbuf, buf); +- errno_out = INTERNAL_SYSCALL_ERRNO (result, err); +- +- fail: +- __set_errno (errno_out); ++ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); + return -1; + } + hidden_def (__xstat) +Index: sysdeps/unix/sysv/linux/alpha/xstatconv.c +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/xstatconv.c,v +retrieving revision 1.6 +diff -u -p -r1.6 xstatconv.c +--- sysdeps/unix/sysv/linux/alpha/xstatconv.c 11 Mar 2004 02:58:44 -0000 1.6 ++++ sysdeps/unix/sysv/linux/alpha/xstatconv.c 26 Feb 2005 13:58:07 -0000 +@@ -1,5 +1,5 @@ + /* Convert between the kernel's `struct stat' format, and libc's. +- Copyright (C) 1997, 2003, 2004 Free Software Foundation, Inc. ++ Copyright (C) 1997, 2003, 2004, 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -22,9 +22,14 @@ + #include + #include + #include ++#include + + ++#ifdef __NR_stat64 ++# if __ASSUME_STAT64_SYSCALL == 0 + int __libc_missing_axp_stat64; ++# endif ++#endif + + int + __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf) +Index: sysdeps/unix/sysv/linux/alpha/xstatconv.h +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/xstatconv.h,v +retrieving revision 1.1 +diff -u -p -r1.1 xstatconv.h +--- sysdeps/unix/sysv/linux/alpha/xstatconv.h 11 Mar 2004 02:58:44 -0000 1.1 ++++ sysdeps/unix/sysv/linux/alpha/xstatconv.h 26 Feb 2005 13:58:07 -0000 +@@ -18,7 +18,12 @@ + 02111-1307 USA. */ + + #include ++#include + ++#ifdef __NR_stat64 ++# if __ASSUME_STAT64_SYSCALL == 0 + extern int __libc_missing_axp_stat64 attribute_hidden; ++# endif ++#endif + extern int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf) + attribute_hidden; --- glibc-2.4.orig/debian/patches/alpha/local-gcc4.1.diff +++ glibc-2.4/debian/patches/alpha/local-gcc4.1.diff @@ -0,0 +1,51 @@ +2006-05-30 Falk Hueffner + + * sysdeps/unix/sysv/linux/alpha/ioperm.c: force the architecture + to ev6 in assembly code. + +{standard input}: Assembler messages: +{standard input}:341: Error: macro requires $at register while noat in effect +{standard input}:374: Error: macro requires $at register while noat in effect +{standard input}:438: Error: macro requires $at register while noat in effect +{standard input}:471: Error: macro requires $at register while noat in effect +make[3]: *** [/tmp/buildd/glibc-2.3.6/build-tree/alpha-libc/misc/ioperm.o] Error 1 + +Hrm. gcc puts .arch ev4 into the .s, and this overrides -mev6 for as. +I cannot really think of anything better than + +--- sysdeps/unix/sysv/linux/alpha/ioperm.c 2001-07-06 06:56:13.000000000 +0200 ++++ sysdeps/unix/sysv/linux/alpha/ioperm.c 2006-05-30 21:22:54.000000000 +0200 +@@ -173,13 +173,13 @@ + static inline void + stb_mb(unsigned char val, unsigned long addr) + { +- __asm__("stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val)); ++ __asm__(".arch ev6; stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val)); + } + + static inline void + stw_mb(unsigned short val, unsigned long addr) + { +- __asm__("stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val)); ++ __asm__(".arch ev6; stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val)); + } + + static inline void +@@ -351,7 +351,7 @@ + unsigned long int addr = dense_port_to_cpu_addr (port); + unsigned char r; + +- __asm__ ("ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr)); ++ __asm__ (".arch ev6; ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr)); + return r; + } + +@@ -361,7 +361,7 @@ + unsigned long int addr = dense_port_to_cpu_addr (port); + unsigned short r; + +- __asm__ ("ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr)); ++ __asm__ (".arch ev6; ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr)); + return r; + } + --- glibc-2.4.orig/debian/patches/any/local-ldconfig-tls.diff +++ glibc-2.4/debian/patches/any/local-ldconfig-tls.diff @@ -0,0 +1,27 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Make ldconfig prefer TLS-capable directories. +# DP: Author: Daniel Jacobowitz +# DP: Upstream status: Not submitted +# DP: Status Details: This is too much a hack to submit, but it's an +# improvement. +# DP: Date: 2003-10-24 + +--- glibc-2.3.2/elf/cache.c.orig 2003-10-24 19:57:55.000000000 -0400 ++++ glibc-2.3.2/elf/cache.c 2003-10-24 20:06:06.000000000 -0400 +@@ -246,6 +246,16 @@ int compare (const struct cache_entry *e + return 1; + else if (e1->flags > e2->flags) + return -1; ++#ifdef USE_TLS ++ /* ld.so doesn't sort by "most specific hwcap". It searches based on ++ the numbering of the bits, and TLS takes precedence. This still ++ doesn't bring us in line with ld.so, but it does bring us closer - ++ close enough for Debian's current needs. */ ++ else if ((e2->hwcap & (1ULL << 63)) && ! (e1->hwcap & (1ULL << 63))) ++ return 1; ++ else if ((e1->hwcap & (1ULL << 63)) && ! (e2->hwcap & (1ULL << 63))) ++ return -1; ++#endif + /* Sort by most specific hwcap. */ + else if (e2->bits_hwcap > e1->bits_hwcap) + return 1; --- glibc-2.4.orig/debian/patches/any/cvs-getcwd_c.diff +++ glibc-2.4/debian/patches/any/cvs-getcwd_c.diff @@ -0,0 +1,19 @@ +Use larger of PATH_MAX and page size when allocating buffer. +See BZ2418 +Note: CVS 1.24 does not build, MAX macro is undefined + +Index: glibc-2.3.6/sysdeps/unix/sysv/linux/getcwd.c +=================================================================== +--- glibc-2.3.6.orig/sysdeps/unix/sysv/linux/getcwd.c ++++ glibc-2.3.6/sysdeps/unix/sysv/linux/getcwd.c +@@ -86,7 +86,9 @@ + return NULL; + } + +- alloc_size = PATH_MAX; ++ alloc_size = __getpagesize (); ++ if (alloc_size < PATH_MAX) ++ alloc_size = PATH_MAX; + } + + if (buf == NULL) --- glibc-2.4.orig/debian/patches/any/local-ldconfig.diff +++ glibc-2.4/debian/patches/any/local-ldconfig.diff @@ -0,0 +1,71 @@ +# DP: Make it so that a missing /etc/ld.so.conf does not cause an error +# DP: message, unless --verbose is enabled. This keeps the debian +# DP: installer from barfing during bootstrap of the system. +# DP: +# DP: Updated by gotom, the previous one seems being wrong because it supresses +# DP: _all_ warnings about "can't open configuration file". otoh, I introduce +# DP: newer patches. it should be checked using chroot and should be contacted +# DP: to the upstream. +# DP: Date: (Updated 2005-01-02 gotom) + +2004-10-25 GOTO Masanori + + * elf/ldconfig.c: Don't print error when default ld.so.conf + is not existed. + +Index: elf/ldconfig.c +=================================================================== +RCS file: /cvs/glibc/libc/elf/ldconfig.c,v +retrieving revision 1.47 +diff -u -r1.47 ldconfig.c +--- elf/ldconfig.c 10 Aug 2004 04:04:32 -0000 1.47 ++++ elf/ldconfig.c 2 Jan 2005 08:46:26 -0000 +@@ -972,7 +972,8 @@ + + if (file == NULL) + { +- error (0, errno, _("Can't open configuration file %s"), canon); ++ if (strcmp(canon, LD_SO_CONF) != 0 || opt_verbose) ++ error (0, errno, _("Can't open configuration file %s"), canon); + if (canon != filename) + free ((char *) canon); + return; + +# previous patch. +#--- elf/ldconfig.c 2003-07-08 23:26:27.000000000 +0900 +#+++ elf/ldconfig.c.debian 2003-07-08 23:29:43.000000000 +0900 +#@@ -920,26 +920,24 @@ +# { +# FILE *file = NULL; +# char *line = NULL; +#- const char *canon; +#+ const char *canon = filename; +# size_t len = 0; +#+ int file_fd; +# +# if (opt_chroot) +# { +# canon = chroot_canon (opt_chroot, filename); +#- if (canon) +#- file = fopen (canon, "r"); +#- else +#+ if (!canon) +# canon = filename; +# } +#- else +#- { +#- canon = filename; +#- file = fopen (filename, "r"); +#- } +#+ +#+ if ((file_fd = open(canon, O_RDONLY | O_EXCL, 0022)) != -1) +#+ file = fdopen (file_fd, "r"); +# +# if (file == NULL) +# { +#- error (0, errno, _("Can't open configuration file %s"), canon); +#+ if (opt_verbose) +#+ error (0, errno, _("Can't open configuration file %s"), canon); +# if (canon != filename) +# free ((char *) canon); +# return; --- glibc-2.4.orig/debian/patches/any/local-fhs-linux-paths.diff +++ glibc-2.4/debian/patches/any/local-fhs-linux-paths.diff @@ -0,0 +1,17 @@ +# DP: Description: Correct linux paths for FHS +# DP: Author: Unknown +# DP: Upstream status: Debian-Specific +# DP: Status Details: GNU doesn't follow the FHS. +# DP: Date: Unknown + +--- glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h~ Thu May 27 13:16:33 1999 ++++ glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h Thu May 27 13:17:55 1999 +@@ -71,7 +71,7 @@ + /* Provide trailing slash, since mostly used for building pathnames. */ + #define _PATH_DEV "/dev/" + #define _PATH_TMP "/tmp/" +-#define _PATH_VARDB "/var/db/" ++#define _PATH_VARDB "/var/lib/misc/" + #define _PATH_VARRUN "/var/run/" + #define _PATH_VARTMP "/var/tmp/" + --- glibc-2.4.orig/debian/patches/any/local-ld-multiarch.diff +++ glibc-2.4/debian/patches/any/local-ld-multiarch.diff @@ -0,0 +1,29 @@ +2005-01-20 Tollef Fog Heen + + * Makeconfig: add multiarch support + +--- glibc-2.3.6/Makeconfig 2006-02-22 12:44:52.424091146 +0100 ++++ glibc-2.3.6/Makeconfig 2006-02-22 12:45:52.161604171 +0100 +@@ -176,6 +176,11 @@ + endif + inst_libdir = $(install_root)$(libdir) + ++# Extra places to look for libraries ++ifndef extra_libdir ++extra_libdir = /lib/$(config-machine)-$(config-os):$(exec_prefix)/lib/$(config-machine)-$(config-os) ++endif ++ + # Where to install the shared library and dynamic linker. + ifndef slibdir + slibdir = $(exec_prefix)/lib +@@ -479,6 +484,10 @@ + default-rpath = $(libdir) + endif + ++ifdef extra_libdir ++default-rpath += :$(extra_libdir) ++endif ++ + ifndef link-extra-libs + link-extra-libs = $(LDLIBS-$(@F)) + link-extra-libs-static = $(link-extra-libs) --- glibc-2.4.orig/debian/patches/any/local-ttyname-devfs.diff +++ glibc-2.4/debian/patches/any/local-ttyname-devfs.diff @@ -0,0 +1,228 @@ +# DP: Fixes ttyname and ttyname_r in the case of being used in a setuid +# DP: application on a devfs system. + +--- sysdeps/unix/sysv/linux/ttyname_r.c~ 2001/07/06 04:56:13 1.14 ++++ sysdeps/unix/sysv/linux/ttyname_r.c 2002/01/06 02:27:48 +@@ -28,21 +28,24 @@ + + #include + +-static int getttyname_r (char *buf, size_t buflen, +- dev_t mydev, ino64_t myino, int save, ++static int getttyname_r (const char *prefix, char *buf, size_t buflen, ++ struct stat64 *mystat, int save, + int *dostat) internal_function; + + static int + internal_function +-getttyname_r (char *buf, size_t buflen, dev_t mydev, ino64_t myino, ++getttyname_r (const char *prefix, char *buf, size_t buflen, struct stat64 *mystat, + int save, int *dostat) + { + struct stat64 st; + DIR *dirstream; + struct dirent64 *d; +- size_t devlen = strlen (buf); ++ size_t devlen = strlen (prefix); + +- dirstream = __opendir (buf); ++ memcpy (buf, prefix, devlen); ++ buflen -= devlen; ++ ++ dirstream = __opendir (prefix); + if (dirstream == NULL) + { + *dostat = -1; +@@ -50,7 +53,7 @@ + } + + while ((d = __readdir64 (dirstream)) != NULL) +- if ((d->d_fileno == myino || *dostat) ++ if ((d->d_fileno == mystat->st_ino || *dostat) + && strcmp (d->d_name, "stdin") + && strcmp (d->d_name, "stdout") + && strcmp (d->d_name, "stderr")) +@@ -71,9 +74,9 @@ + + if (__xstat64 (_STAT_VER, buf, &st) == 0 + #ifdef _STATBUF_ST_RDEV +- && S_ISCHR (st.st_mode) && st.st_rdev == mydev ++ && S_ISCHR (st.st_mode) && st.st_rdev == mystat->st_rdev + #else +- && d->d_fileno == myino && st.st_dev == mydev ++ && d->d_fileno == mystat->st_ino && st.st_dev == mystat->st_dev + #endif + ) + { +@@ -99,7 +102,8 @@ + struct stat64 st, st1; + int dostat = 0; + int save = errno; +- int ret; ++ int ret, i; ++ const char *dirs[] = { "/dev/pts/", "/dev/vc/", "/dev/tts/", 0 }; + + /* Test for the absolute minimal size. This makes life easier inside + the loop. */ +@@ -139,50 +143,24 @@ + if (__fxstat64 (_STAT_VER, fd, &st) < 0) + return errno; + +- /* Prepare the result buffer. */ +- memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/")); +- buflen -= sizeof ("/dev/pts/") - 1; ++ ret = ENOTTY; + +- if (__xstat64 (_STAT_VER, buf, &st1) == 0 && S_ISDIR (st1.st_mode)) +- { +-#ifdef _STATBUF_ST_RDEV +- ret = getttyname_r (buf, buflen, st.st_rdev, st.st_ino, save, +- &dostat); +-#else +- ret = getttyname_r (buf, buflen, st.st_dev, st.st_ino, save, +- &dostat); +-#endif +- } +- else ++ for (i = 0; ret && dirs[i]; i++) + { +- __set_errno (save); +- ret = ENOENT; ++ if (__xstat64 (_STAT_VER, dirs[i], &st1) == 0 && S_ISDIR (st1.st_mode)) ++ ret = getttyname_r (dirs[i], buf, buflen, &st, save, &dostat); ++ else ++ __set_errno (save); + } + ++ + if (ret && dostat != -1) +- { +- buf[sizeof ("/dev/") - 1] = '\0'; +- buflen += sizeof ("pts/") - 1; +-#ifdef _STATBUF_ST_RDEV +- ret = getttyname_r (buf, buflen, st.st_rdev, st.st_ino, save, +- &dostat); +-#else +- ret = getttyname_r (buf, buflen, st.st_dev, st.st_ino, save, +- &dostat); +-#endif +- } ++ ret = getttyname_r ("/dev/", buf, buflen, &st, save, &dostat); + + if (ret && dostat != -1) + { +- buf[sizeof ("/dev/") - 1] = '\0'; + dostat = 1; +-#ifdef _STATBUF_ST_RDEV +- ret = getttyname_r (buf, buflen, st.st_rdev, st.st_ino, +- save, &dostat); +-#else +- ret = getttyname_r (buf, buflen, st.st_dev, st.st_ino, +- save, &dostat); +-#endif ++ ret = getttyname_r ("/dev/", buf, buflen, &st, save, &dostat); + } + + return ret; +--- sysdeps/unix/sysv/linux/ttyname.c~ 2001/07/06 04:56:13 1.16 ++++ sysdeps/unix/sysv/linux/ttyname.c 2002/01/06 02:27:48 +@@ -30,8 +30,8 @@ + + char *__ttyname; + +-static char *getttyname (const char *dev, dev_t mydev, +- ino64_t myino, int save, int *dostat) ++static char *getttyname (const char *dev, struct stat64 *mystat, ++ int save, int *dostat) + internal_function; + + +@@ -39,7 +39,7 @@ + + static char * + internal_function +-getttyname (const char *dev, dev_t mydev, ino64_t myino, int save, int *dostat) ++getttyname (const char *dev, struct stat64 *mystat, int save, int *dostat) + { + static size_t namelen; + struct stat64 st; +@@ -55,7 +55,7 @@ + } + + while ((d = __readdir64 (dirstream)) != NULL) +- if ((d->d_fileno == myino || *dostat) ++ if ((d->d_fileno == mystat->st_ino || *dostat) + && strcmp (d->d_name, "stdin") + && strcmp (d->d_name, "stdout") + && strcmp (d->d_name, "stderr")) +@@ -78,9 +78,9 @@ + memcpy (&getttyname_name[devlen], d->d_name, dlen); + if (__xstat64 (_STAT_VER, getttyname_name, &st) == 0 + #ifdef _STATBUF_ST_RDEV +- && S_ISCHR (st.st_mode) && st.st_rdev == mydev ++ && S_ISCHR (st.st_mode) && st.st_rdev == mystat->st_rdev + #else +- && d->d_fileno == myino && st.st_dev == mydev ++ && d->d_fileno == mystat->st_ino && st.st_dev == mystat->st_dev + #endif + ) + { +@@ -110,9 +110,10 @@ + char procname[30]; + struct stat64 st, st1; + int dostat = 0; +- char *name; ++ char *name = NULL; + int save = errno; +- int len; ++ int len, i; ++ const char *dirs[] = { "/dev/pts", "/dev/vc", "/dev/tts", 0 }; + + if (!__isatty (fd)) + return NULL; +@@ -146,37 +147,21 @@ + if (__fxstat64 (_STAT_VER, fd, &st) < 0) + return NULL; + +- if (__xstat64 (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode)) ++ for (i = 0; !name && dirs[i]; i++) + { +-#ifdef _STATBUF_ST_RDEV +- name = getttyname ("/dev/pts", st.st_rdev, st.st_ino, save, &dostat); +-#else +- name = getttyname ("/dev/pts", st.st_dev, st.st_ino, save, &dostat); +-#endif ++ if (__xstat64 (_STAT_VER, dirs[i], &st1) == 0 && S_ISDIR (st1.st_mode)) ++ name = getttyname (dirs[i], &st, save, &dostat); ++ else ++ __set_errno (save); + } +- else +- { +- __set_errno (save); +- name = NULL; +- } +- ++ + if (!name && dostat != -1) +- { +-#ifdef _STATBUF_ST_RDEV +- name = getttyname ("/dev", st.st_rdev, st.st_ino, save, &dostat); +-#else +- name = getttyname ("/dev", st.st_dev, st.st_ino, save, &dostat); +-#endif +- } ++ name = getttyname ("/dev", &st, save, &dostat); + + if (!name && dostat != -1) + { + dostat = 1; +-#ifdef _STATBUF_ST_RDEV +- name = getttyname ("/dev", st.st_rdev, st.st_ino, save, &dostat); +-#else +- name = getttyname ("/dev", st.st_dev, st.st_ino, save, &dostat); +-#endif ++ name = getttyname ("/dev", &st, save, &dostat); + } + + return name; --- glibc-2.4.orig/debian/patches/any/local-libgcc-compat-main.diff +++ glibc-2.4/debian/patches/any/local-libgcc-compat-main.diff @@ -0,0 +1,965 @@ +# DP: Description: libgcc-compat symbols for i386, sparc, +# alpha, ia64 (derived from RedHat's), s390 +# DP: Author: Guido Guenther, GOTO Masanori +# DP: Upstream status: Not submitted +# DP: Date: 2002-10-13, updated 2006-05-28 + +--- /dev/null Sat Mar 16 18:32:44 2002 ++++ sysdeps/i386/libgcc-compat.c Sun Feb 16 01:43:47 2003 +@@ -0,0 +1,75 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Guido Guenther ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++ ++extern int64_t __fixunsdfdi (double); ++int64_t __fixunsdfdi_internal (double d) ++{ ++ return __fixunsdfdi (d); ++} ++symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0); ++ ++extern int64_t __fixunssfdi (float); ++int64_t __fixunssfdi_internal (float d) ++{ ++ return __fixunssfdi (d); ++} ++ ++symbol_version (__fixunsfdi_internal, __fixunsfdi, GLIBC_2.0); ++ ++typedef float XFtype __attribute__ ((mode (XF))); ++ ++extern int64_t __fixunsxfdi (XFtype); ++int64_t __fixunsxfdi_internal (XFtype d) ++{ ++ return __fixunsxfdi (d); ++} ++ ++symbol_version (__fixunsxfdi_internal, __fixunsxfdi, GLIBC_2.0); ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++#endif +Index: sysdeps/i386/Makefile +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/i386/Makefile,v +retrieving revision 1.14 +diff -u -u -r1.14 Makefile +--- sysdeps/i386/Makefile 19 Sep 2002 06:46:06 -0000 1.14 ++++ sysdeps/i386/Makefile 16 Feb 2003 11:33:41 -0000 +@@ -9,6 +9,11 @@ + # On i686 we must avoid generating the trampoline functions generated + # to get the GOT pointer. + CFLAGS-initfini.s += -march=i386 -mtune=i386 ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif + endif + + ifeq ($(subdir),gmon) +Index: sysdeps/i386/Versions +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/i386/Versions,v +retrieving revision 1.3 +diff -u -u -r1.3 Versions +--- sysdeps/i386/Versions 17 May 1999 17:23:56 -0000 1.3 ++++ sysdeps/i386/Versions 16 Feb 2003 11:34:17 -0000 +@@ -2,6 +2,9 @@ + GLIBC_2.0 { + # Functions from libgcc. + __divdi3; __moddi3; __udivdi3; __umoddi3; ++ __cmpdi2; __ucmpdi2; ++ __fixunsdfdi; __fixunssfdi; __fixunsxfdi; ++ __floatdidf; + } + GLIBC_2.1 { + # global variable +--- /dev/null Sat Mar 16 18:32:44 2002 ++++ sysdeps/sparc/sparc32/libgcc-compat.c Fri Feb 7 00:29:23 2003 +@@ -0,0 +1,121 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Guido Guenther ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int64_t __ashldi3 (int64_t, int32_t); ++int64_t __ashldi3_internal (int64_t u, int32_t b) ++{ ++ return __ashldi3 (u, b); ++} ++symbol_version (__ashldi3_internal, __ashldi3, GLIBC_2.0); ++ ++ ++extern int64_t __ashrdi3 (int64_t, int32_t); ++int64_t __ashrdi3_internal (int64_t u, int32_t b) ++{ ++ return __ashrdi3 (u, b); ++} ++symbol_version (__ashrdi3_internal, __ashrdi3, GLIBC_2.0); ++ ++ ++extern int64_t __lshrdi3 (int64_t, int32_t); ++int64_t __lshrdi3_internal (int64_t u, int32_t b) ++{ ++ return __lshrdi3 (u, b); ++} ++symbol_version (__lshrdi3_internal, __lshrdi3, GLIBC_2.0); ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++ ++extern int64_t __fixsfdi (float); ++int64_t __fixsfdi_internal (float d) ++{ ++ return __fixsfdi (d); ++} ++symbol_version (__fixsfdi_internal, __fixsfdi, GLIBC_2.0); ++ ++ ++extern int64_t __fixunsdfdi (double); ++int64_t __fixunsdfdi_internal (double d) ++{ ++ return __fixunsdfdi (d); ++} ++symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0); ++ ++extern int64_t __fixunssfdi (float); ++int64_t __fixunssfdi_internal (float d) ++{ ++ return __fixunssfdi (d); ++} ++ ++symbol_version (__fixunssfdi_internal, __fixunssfdi, GLIBC_2.0); ++ ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++ ++extern float floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++ ++extern int64_t __muldi3 (int64_t, int64_t); ++int64_t __muldi3_internal (int64_t u, int64_t v) ++{ ++ return __muldi3 (u, v); ++} ++symbol_version (__muldi3_internal, __muldi3, GLIBC_2.0); ++ ++#endif +--- sysdeps/sparc/sparc32/Makefile 6 Jul 2001 04:56:04 -0000 1.5 ++++ sysdeps/sparc/sparc32/Makefile 6 Feb 2003 23:32:15 -0000 +@@ -20,6 +20,14 @@ + sysdep_routines = dotmul umul $(divrem) alloca + endif # gnulib + ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif ++ + # We distribute these files, even though they are generated, + # so as to avoid the need for a functioning m4 to build the library. + divrem := sdiv udiv rem urem +--- sysdeps/sparc/sparc32/Versions 2003-02-07 07:46:20.000000000 -0500 ++++ sysdeps/sparc/sparc32/Versions 2003-02-07 07:46:58.000000000 -0500 +@@ -1,5 +1,9 @@ + libc { + GLIBC_2.0 { + .div; .mul; .rem; .udiv; .umul; .urem; ++ __divdi3; __moddi3; __udivdi3; __umoddi3; __muldi3; ++ __ashldi3; __ashrdi3; __lshrdi3; __cmpdi2; __ucmpdi2; ++ __fixdfdi; __fixsfdi; __fixunsdfdi; __fixunssfdi; ++ __floatdidf; __floatdisf; + } + } + GLIBC_2.1 { + # global variable +--- /dev/null Sat Mar 16 18:32:44 2002 ++++ sysdeps/alpha/libgcc-compat.c Sat Mar 1 21:19:36 2003 +@@ -0,0 +1,35 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Guido Guenther ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++typedef int int128_t __attribute__((__mode__(TI))); ++ ++extern int128_t __multi3 (int128_t, int128_t); ++int128_t INTUSE (__multi3) (int128_t x, int128_t y) ++{ ++ return __multi3 (x, y); ++} ++symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.0); ++ ++#endif +Index: sysdeps/alpha/Versions +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/alpha/Versions,v +retrieving revision 1.2 +diff -u -u -r1.2 Versions +--- sysdeps/alpha/Versions 20 Jan 1999 09:23:32 -0000 1.2 ++++ sysdeps/alpha/Versions 1 Mar 2003 21:11:25 -0000 +@@ -3,6 +3,8 @@ + # functions with special/multiple interfaces + __divqu; __remqu; __divqs; __remqs; __divlu; __remlu; __divls; + __remls; __divl; __reml; __divq; __remq; __divqu; __remqu; ++ # libgcc-compat ++ __multi3; + } + } + libm { +Index: sysdeps/alpha/Makefile +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/alpha/Makefile,v +retrieving revision 1.18 +diff -u -u -r1.18 Makefile +--- sysdeps/alpha/Makefile 29 Jan 2002 03:53:32 -0000 1.18 ++++ sysdeps/alpha/Makefile 2 Mar 2003 12:20:58 -0000 +@@ -47,3 +47,11 @@ + # libc.so requires about 16k for the small data area, which is well + # below the 64k maximum. + pic-ccflag = -fpic ++ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +diff -Nuar sysdeps/ia64/Makefile sysdeps/ia64/Makefile +--- sysdeps/ia64/Makefile 2002-05-15 05:46:15.000000000 +0900 ++++ sysdeps/ia64/Makefile 2003-03-04 00:51:34.000000000 +0900 +@@ -12,8 +12,8 @@ + + ifeq (yes,$(build-shared)) + # Compatibility +-sysdep_routines += ia64libgcc +-shared-only-routines += ia64libgcc ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat + endif + endif + +diff -Nuar sysdeps/ia64/Versions sysdeps/ia64/Versions +--- sysdeps/ia64/Versions 2002-05-03 16:00:46.000000000 +0900 ++++ sysdeps/ia64/Versions 2003-03-04 01:14:39.000000000 +0900 +@@ -10,6 +10,10 @@ + # Functions from libgcc. + __divtf3; __divdf3; __divsf3; __divdi3; __moddi3; __udivdi3; __umoddi3; + __multi3; ++ __divsi3; ++ __modsi3; ++ __udivsi3; ++ __umodsi3; + } + } + libm { +diff -Nuar sysdeps/ia64/ia64libgcc.S sysdeps/ia64/ia64libgcc.S +--- sysdeps/ia64/ia64libgcc.S 2002-05-15 05:46:15.000000000 +0900 ++++ sysdeps/ia64/ia64libgcc.S 2003-03-04 00:51:34.000000000 +0900 +@@ -1,350 +0,0 @@ +-/* From the Intel IA-64 Optimization Guide, choose the minimum latency +- alternative. */ +- +-#include +-#undef ret +- +-#include +- +-#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) +- +-/* __divtf3 +- Compute a 80-bit IEEE double-extended quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divtf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fnma.s1 f11 = farg1, f10, f1 +-(p6) fma.s1 f12 = farg0, f10, f0 +- ;; +-(p6) fma.s1 f13 = f11, f11, f0 +-(p6) fma.s1 f14 = f11, f11, f11 +- ;; +-(p6) fma.s1 f11 = f13, f13, f11 +-(p6) fma.s1 f13 = f14, f10, f10 +- ;; +-(p6) fma.s1 f10 = f13, f11, f10 +-(p6) fnma.s1 f11 = farg1, f12, farg0 +- ;; +-(p6) fma.s1 f11 = f11, f10, f12 +-(p6) fnma.s1 f12 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f10 = f12, f10, f10 +-(p6) fnma.s1 f12 = farg1, f11, farg0 +- ;; +-(p6) fma.s0 fret0 = f12, f10, f11 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +-END(___divtf3) +- .symver ___divtf3, __divtf3@GLIBC_2.2 +- +-/* __divdf3 +- Compute a 64-bit IEEE double quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divdf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fmpy.s1 f11 = farg0, f10 +-(p6) fnma.s1 f12 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f11 = f12, f11, f11 +-(p6) fmpy.s1 f13 = f12, f12 +- ;; +-(p6) fma.s1 f10 = f12, f10, f10 +-(p6) fma.s1 f11 = f13, f11, f11 +- ;; +-(p6) fmpy.s1 f12 = f13, f13 +-(p6) fma.s1 f10 = f13, f10, f10 +- ;; +-(p6) fma.d.s1 f11 = f12, f11, f11 +-(p6) fma.s1 f10 = f12, f10, f10 +- ;; +-(p6) fnma.d.s1 f8 = farg1, f11, farg0 +- ;; +-(p6) fma.d fret0 = f8, f10, f11 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divdf3) +- .symver ___divdf3, __divdf3@GLIBC_2.2 +- +-/* __divsf3 +- Compute a 32-bit IEEE float quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divsf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fmpy.s1 f8 = farg0, f10 +-(p6) fnma.s1 f9 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f8 = f9, f8, f8 +-(p6) fmpy.s1 f9 = f9, f9 +- ;; +-(p6) fma.s1 f8 = f9, f8, f8 +-(p6) fmpy.s1 f9 = f9, f9 +- ;; +-(p6) fma.d.s1 f10 = f9, f8, f8 +- ;; +-(p6) fnorm.s.s0 fret0 = f10 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divsf3) +- .symver ___divsf3, __divsf3@GLIBC_2.2 +- +-/* __divdi3 +- Compute a 64-bit integer quotient. +- in0 holds the dividend. in1 holds the divisor. */ +- +-ENTRY(___divdi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f8 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, so that they won't be treated as +- unsigned. */ +- fcvt.xf f8 = f8 +- fcvt.xf f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fnma.s1 f11 = f9, f10, f1 +-(p6) fmpy.s1 f12 = f8, f10 +- ;; +-(p6) fmpy.s1 f13 = f11, f11 +-(p6) fma.s1 f12 = f11, f12, f12 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an integer. */ +- fcvt.fx.trunc.s1 f10 = f10 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divdi3) +- .symver ___divdi3, __divdi3@GLIBC_2.2 +- +-/* __moddi3 +- Compute a 64-bit integer modulus. +- in0 holds the dividend (a). in1 holds the divisor (b). */ +- +-ENTRY(___moddi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f14 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, so that they won't be treated as +- unsigned. */ +- fcvt.xf f8 = f14 +- fcvt.xf f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fmpy.s1 f12 = f8, f10 +-(p6) fnma.s1 f11 = f9, f10, f1 +- ;; +-(p6) fma.s1 f12 = f11, f12, f12 +-(p6) fmpy.s1 f13 = f11, f11 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +- sub in1 = r0, in1 +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +- setf.sig f9 = in1 +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- fcvt.fx.trunc.s1 f10 = f10 +- ;; +- /* r = q * (-b) + a */ +- xma.l f10 = f10, f9, f14 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___moddi3) +- .symver ___moddi3, __moddi3@GLIBC_2.2 +- +-/* __udivdi3 +- Compute a 64-bit unsigned integer quotient. +- in0 holds the dividend. in1 holds the divisor. */ +- +-ENTRY(___udivdi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f8 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, to avoid FP software-assist faults. */ +- fcvt.xuf.s1 f8 = f8 +- fcvt.xuf.s1 f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fnma.s1 f11 = f9, f10, f1 +-(p6) fmpy.s1 f12 = f8, f10 +- ;; +-(p6) fmpy.s1 f13 = f11, f11 +-(p6) fma.s1 f12 = f11, f12, f12 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an unsigned integer. */ +- fcvt.fxu.trunc.s1 f10 = f10 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___udivdi3) +- .symver ___udivdi3, __udivdi3@GLIBC_2.2 +- +-/* __umoddi3 +- Compute a 64-bit unsigned integer modulus. +- in0 holds the dividend (a). in1 holds the divisor (b). */ +- +-ENTRY(___umoddi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f14 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, to avoid FP software assist faults. */ +- fcvt.xuf.s1 f8 = f14 +- fcvt.xuf.s1 f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fmpy.s1 f12 = f8, f10 +-(p6) fnma.s1 f11 = f9, f10, f1 +- ;; +-(p6) fma.s1 f12 = f11, f12, f12 +-(p6) fmpy.s1 f13 = f11, f11 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +- sub in1 = r0, in1 +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +- setf.sig f9 = in1 +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an unsigned integer. */ +- fcvt.fxu.trunc.s1 f10 = f10 +- ;; +- /* r = q * (-b) + a */ +- xma.l f10 = f10, f9, f14 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___umoddi3) +- .symver ___umoddi3, __umoddi3@GLIBC_2.2 +- +-/* __multi3 +- Compute a 128-bit multiply of 128-bit multiplicands. +- in0/in1 holds one multiplicand (a), in2/in3 holds the other one (b). */ +- +-ENTRY(___multi3) +- .regstk 4,0,0,0 +- setf.sig f6 = in1 +- movl r19 = 0xffffffff +- setf.sig f7 = in2 +- ;; +- and r14 = r19, in0 +- ;; +- setf.sig f10 = r14 +- and r14 = r19, in2 +- xmpy.l f9 = f6, f7 +- ;; +- setf.sig f6 = r14 +- shr.u r14 = in0, 32 +- ;; +- setf.sig f7 = r14 +- shr.u r14 = in2, 32 +- ;; +- setf.sig f8 = r14 +- xmpy.l f11 = f10, f6 +- xmpy.l f6 = f7, f6 +- ;; +- getf.sig r16 = f11 +- xmpy.l f7 = f7, f8 +- ;; +- shr.u r14 = r16, 32 +- and r16 = r19, r16 +- getf.sig r17 = f6 +- setf.sig f6 = in0 +- ;; +- setf.sig f11 = r14 +- getf.sig r21 = f7 +- setf.sig f7 = in3 +- ;; +- xma.l f11 = f10, f8, f11 +- xma.l f6 = f6, f7, f9 +- ;; +- getf.sig r18 = f11 +- ;; +- add r18 = r18, r17 +- ;; +- and r15 = r19, r18 +- cmp.ltu p7, p6 = r18, r17 +- ;; +- getf.sig r22 = f6 +-(p7) adds r14 = 1, r19 +- ;; +-(p7) add r21 = r21, r14 +- shr.u r14 = r18, 32 +- shl r15 = r15, 32 +- ;; +- add r20 = r21, r14 +- ;; +- add ret0 = r15, r16 +- add ret1 = r22, r20 +- br.ret.sptk rp +- ;; +-END(___multi3) +- .symver ___multi3, __multi3@GLIBC_2.2 +- +-#endif +diff -Nuar sysdeps/ia64/libgcc-compat.c sysdeps/ia64/libgcc-compat.c +--- sysdeps/ia64/libgcc-compat.c 1970-01-01 09:00:00.000000000 +0900 ++++ sysdeps/ia64/libgcc-compat.c 2003-03-04 02:24:15.000000000 +0900 +@@ -0,0 +1,112 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++#include ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) ++ ++typedef int int128_t __attribute__((__mode__(TI))); ++ ++extern long double __divtf3 (long double, long double) attribute_hidden; ++long double INTUSE (__divtf3) (long double x, long double y) ++{ ++ return __divtf3 (x, y); ++} ++symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2); ++ ++extern double __divdf3 (double, double) attribute_hidden; ++double INTUSE (__divdf3) (double x, double y) ++{ ++ return __divdf3 (x, y); ++} ++symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2); ++ ++extern float __divsf3 (float, float) attribute_hidden; ++float INTUSE (__divsf3) (float x, float y) ++{ ++ return __divsf3 (x, y); ++} ++symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2); ++ ++extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__divdi3) (int64_t x, int64_t y) ++{ ++ return __divdi3 (x, y); ++} ++symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2); ++ ++extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__moddi3) (int64_t x, int64_t y) ++{ ++ return __moddi3 (x, y); ++} ++symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2); ++ ++extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y) ++{ ++ return __udivdi3 (x, y); ++} ++symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2); ++ ++extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y) ++{ ++ return __umoddi3 (x, y); ++} ++symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2); ++ ++extern int128_t __multi3 (int128_t, int128_t) attribute_hidden; ++int128_t INTUSE (__multi3) (int128_t x, int128_t y) ++{ ++ return __multi3 (x, y); ++} ++symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2); ++ ++extern int64_t __divsi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__divsi3) (int64_t x, int64_t y) ++{ ++ return __divsi3 (x, y); ++} ++symbol_version (INTUSE (__divsi3), __divsi3, GLIBC_2.2); ++ ++extern int64_t __modsi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__modsi3) (int64_t x, int64_t y) ++{ ++ return __modsi3 (x, y); ++} ++symbol_version (INTUSE (__modsi3), __modsi3, GLIBC_2.2); ++ ++extern uint64_t __udivsi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__udivsi3) (uint64_t x, uint64_t y) ++{ ++ return __udivsi3 (x, y); ++} ++symbol_version (INTUSE (__udivsi3), __udivsi3, GLIBC_2.2); ++ ++extern uint64_t __umodsi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__umodsi3) (uint64_t x, uint64_t y) ++{ ++ return __umodsi3 (x, y); ++} ++symbol_version (INTUSE (__umodsi3), __umodsi3, GLIBC_2.2); ++ ++#endif +diff -Nuar sysdeps/s390/s390-32/Makefile sysdeps/s390/s390-32/Makefile +--- sysdeps/s390/s390-32/Makefile 2002-09-19 15:42:09.000000000 +0900 ++++ sysdeps/s390/s390-32/Makefile 2003-03-02 11:09:11.000000000 +0900 +@@ -9,3 +9,11 @@ + CFLAGS-dl-load.c += -Wno-unused + CFLAGS-dl-reloc.c += -Wno-unused + endif ++ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +diff -Nuar sysdeps/s390/s390-32/Versions sysdeps/s390/s390-32/Versions +--- sysdeps/s390/s390-32/Versions 2001-03-16 17:15:07.000000000 +0900 ++++ sysdeps/s390/s390-32/Versions 2003-03-02 11:08:03.000000000 +0900 +@@ -2,5 +2,13 @@ + GLIBC_2.0 { + # Functions from libgcc. + __divdi3; __moddi3; __udivdi3; __umoddi3; ++ __cmpdi2; ++ __fixdfdi; ++ __fixsfdi; ++ __fixunsdfdi; ++ __fixunssfdi; ++ __floatdidf; ++ __floatdisf; ++ __ucmpdi2; + } + } +diff -Nuar sysdeps/s390/s390-32/libgcc-compat.c sysdeps/s390/s390-32/libgcc-compat.c +--- sysdeps/s390/s390-32/libgcc-compat.c 1970-01-01 09:00:00.000000000 +0900 ++++ sysdeps/s390/s390-32/libgcc-compat.c 2003-03-02 19:42:19.000000000 +0900 +@@ -0,0 +1,83 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by GOTO Masanori ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++extern int64_t __fixsfdi (float); ++int64_t __fixsfdi_internal (float d) ++{ ++ return __fixsfdi (d); ++} ++symbol_version (__fixsfdi_internal, __fixsfdi, GLIBC_2.0); ++ ++extern int64_t __fixunsdfdi (double); ++int64_t __fixunsdfdi_internal (double d) ++{ ++ return __fixunsdfdi (d); ++} ++symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0); ++ ++extern int64_t __fixunssfdi (float); ++int64_t __fixunssfdi_internal (float d) ++{ ++ return __fixunssfdi (d); ++} ++symbol_version (__fixunssfdi_internal, __fixunssfdi, GLIBC_2.0); ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++extern float __floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++#endif --- glibc-2.4.orig/debian/patches/any/local-nss-upgrade.diff +++ glibc-2.4/debian/patches/any/local-nss-upgrade.diff @@ -0,0 +1,29 @@ +# DP: This patch makes future upgrades easier. It resolves problems with +# DP: running daemons having NSS modules upgraded out from under them. + +--- glibc22/nss/nsswitch.c~ Fri Mar 31 15:38:32 2000 ++++ glibc22/nss/nsswitch.c Thu Nov 9 17:28:45 2000 +@@ -333,9 +333,20 @@ + ni->library->lib_handle = __libc_dlopen (shlib_name); + if (ni->library->lib_handle == NULL) + { +- /* Failed to load the library. */ +- ni->library->lib_handle = (void *) -1l; +- __set_errno (saved_errno); ++ /* Failed to load the library. Try a fallback. */ ++ int n = __snprintf(shlib_name, shlen, "libnss_%s.so.%d.%d", ++ ni->library->name, __GLIBC__, __GLIBC_MINOR__); ++ if (n >= shlen) ++ ni->library->lib_handle = NULL; ++ else ++ ni->library->lib_handle = __libc_dlopen (shlib_name); ++ ++ if (ni->library->lib_handle == NULL) ++ { ++ /* Ok, really fail now. */ ++ ni->library->lib_handle = (void *) -1l; ++ __set_errno (saved_errno); ++ } + } + } + --- glibc-2.4.orig/debian/patches/any/local-localedef-fix-trampoline.diff +++ glibc-2.4/debian/patches/any/local-localedef-fix-trampoline.diff @@ -0,0 +1,53 @@ +# DP: Description: Fix localedef segfault when run under exec-shield, +# PaX or similar. (#231438, #198099) +# DP: Dpatch Author: James Troup +# DP: Patch Author: (probably) Jakub Jelinek +# DP: Upstream status: Unknown +# DP: Status Details: Unknown +# DP: Date: 2004-03-16 + +--- glibc-2.3.3-net/locale/programs/3level.h 16 Jun 2003 07:19:09 -0000 1.1.1.5 ++++ glibc-2.3.3-redhat/locale/programs/3level.h 16 Jun 2003 09:32:40 -0000 1.4 +@@ -204,6 +204,42 @@ CONCAT(TABLE,_iterate) (struct TABLE *t, + } + } + } ++ ++/* GCC ATM seems to do a poor job with pointers to nested functions passed ++ to inlined functions. Help it a little bit with this hack. */ ++#define wchead_table_iterate(tp, fn) \ ++do \ ++ { \ ++ struct wchead_table *t = (tp); \ ++ uint32_t index1; \ ++ for (index1 = 0; index1 < t->level1_size; index1++) \ ++ { \ ++ uint32_t lookup1 = t->level1[index1]; \ ++ if (lookup1 != ((uint32_t) ~0)) \ ++ { \ ++ uint32_t lookup1_shifted = lookup1 << t->q; \ ++ uint32_t index2; \ ++ for (index2 = 0; index2 < (1 << t->q); index2++) \ ++ { \ ++ uint32_t lookup2 = t->level2[index2 + lookup1_shifted]; \ ++ if (lookup2 != ((uint32_t) ~0)) \ ++ { \ ++ uint32_t lookup2_shifted = lookup2 << t->p; \ ++ uint32_t index3; \ ++ for (index3 = 0; index3 < (1 << t->p); index3++) \ ++ { \ ++ struct element_t *lookup3 \ ++ = t->level3[index3 + lookup2_shifted]; \ ++ if (lookup3 != NULL) \ ++ fn ((((index1 << t->q) + index2) << t->p) + index3, \ ++ lookup3); \ ++ } \ ++ } \ ++ } \ ++ } \ ++ } \ ++ } while (0) ++ + #endif + + #ifndef NO_FINALIZE --- glibc-2.4.orig/debian/patches/any/local-linuxthreads-sizefix.diff +++ glibc-2.4/debian/patches/any/local-linuxthreads-sizefix.diff @@ -0,0 +1,426 @@ +# DP: Description: Align TLS_PRE_TCB_SIZE between linuxthreads and nptl. +# The patch is based on fedora-20031105. +# DP: Related bugs: #292673 +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: Jakub Jelinek +# DP: Upstream status: Debian-Specific +# DP: Status Details: Currently IA-64 part is applied. +# DP: Date: 2005-04-09, 2005-04-16 updated by gotom + +2003-09-02 Jakub Jelinek + + * sysdeps/sparc/tls.h (TLS_TCB_SIZE): If in ld.so and NPTL struct + pthread is bigger than struct _pthread_descr_struct, use NPTL struct + pthread size. + +2003-07-22 Jakub Jelinek + + * sysdeps/alpha/tls.h (TLS_INIT_TCB_SIZE, TLS_TCB_SIZE): Change to 0. + (TLS_INIT_TCB_ALIGN, TLS_TCB_ALIGN): Alignment of struct + _pthread_descr_struct. + (TLS_PRE_TCB_SIZE): Add sizeof (tcbhead_t) and pad to align. + If in ld.so and NPTL struct pthread is bigger than struct + _pthread_descr_struct, use NPTL struct pthread size. + (TLS_TCB_OFFSET): Define. + (INSTALL_DTV, INSTALL_NEW_DTV, GET_DTV, TLS_INIT_TP, THREAD_DTV, + THREAD_SELF, INIT_THREAD_SELF): Changed to match NPTL tls.h + definitions. + * sysdeps/i386/tls.h (TLS_TCB_SIZE): If in ld.so and NPTL struct + pthread is bigger than struct _pthread_descr_struct, use NPTL struct + pthread size. + * sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): Likewise. + * sysdeps/powerpc/tls.h (TLS_PRE_TCB_SIZE): Likewise. + * sysdeps/s390/tls.h (TLS_TCB_SIZE): Likewise. + * sysdeps/sh/tls.h (TLS_PRE_TCB_SIZE): Likewise. + * sysdeps/x86_64/tls.h (TLS_TCB_SIZE): Likewise. + * sysdeps/pthread/Makefile (gen-as-const-headers): Add + nptl-struct-pthread.sym if nptl tree is present. + (before-compile): Add $(common-objpfx)nptl-struct-pthread.h + if nptl tree is not present. + (common-generated): Add nptl-struct-pthread.h. + ($(common-objpfx)nptl-struct-pthread.h): New rule. + * sysdeps/pthread/nptl-struct-pthread.sym: New file. + +2003-07-22 Jakub Jelinek + + * descr.h: Don't include lowlevellock.h, pthreaddef.h and dl-sysdep.h + if __need_struct_pthread_size, instead define lll_lock_t. + + +Index: glibc-2.4/linuxthreads/Makefile +=================================================================== +--- glibc-2.4.orig/linuxthreads/Makefile 2006-02-28 02:13:34.000000000 -0500 ++++ glibc-2.4/linuxthreads/Makefile 2006-03-11 01:00:38.000000000 -0500 +@@ -242,15 +242,18 @@ + $(filter-out $(tests-static) $(tests-reverse) unload, \ + $(tests) $(test-srcs))): $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a +-# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, ++# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, + # since otherwise libpthread.so comes before libc.so when linking. + $(addprefix $(objpfx), $(tests-reverse)): \ +- $(objpfx)../libc.so $(objpfx)libpthread.so \ ++ $(objpfx)linklibc.so $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)../libc.so: $(common-objpfx)libc.so ; + $(addprefix $(objpfx),$(librt-tests)): $(common-objpfx)rt/librt.so + $(objpfx)unload: $(common-objpfx)dlfcn/libdl.so + $(objpfx)unload.out: $(objpfx)libpthread.so $(objpfx)libpthread_nonshared.a ++$(objpfx)linklibc.so: $(common-objpfx)libc.so ++ ln -s ../libc.so $@ ++generated += libclink.so + else + $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a + $(addprefix $(objpfx),$(librt-tests)): $(common-objpfx)rt/librt.a +Index: glibc-2.4/linuxthreads/sysdeps/alpha/tls.h +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/alpha/tls.h 2005-01-09 15:01:12.000000000 -0500 ++++ glibc-2.4/linuxthreads/sysdeps/alpha/tls.h 2006-03-11 01:00:38.000000000 -0500 +@@ -58,54 +58,76 @@ + # include + + /* This is the size of the initial TCB. */ +-# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t) ++# define TLS_INIT_TCB_SIZE 0 + + /* Alignment requirements for the initial TCB. */ +-# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) ++# define TLS_INIT_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) + + /* This is the size of the TCB. */ +-# define TLS_TCB_SIZE sizeof (tcbhead_t) ++# define TLS_TCB_SIZE 0 + + /* Alignment requirements for the TCB. */ +-# define TLS_TCB_ALIGN __alignof__ (tcbhead_t) ++# define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) + + /* This is the size we need before TCB. */ +-# define TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# ifndef IS_IN_rtld ++# define TLS_PRE_TCB_SIZE \ ++ (sizeof (struct _pthread_descr_struct) \ ++ + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1))) ++# else ++# include ++# define TLS_PRE_TCB_SIZE \ ++ ((sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE \ ++ ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE) \ ++ + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1))) ++# endif + + /* The DTV is allocated at the TP; the TCB is placed elsewhere. */ + # define TLS_DTV_AT_TP 1 + ++/* The following assumes that TP (R2 or R13) points to the end of the ++ TCB + 0x7000 (per the ABI). This implies that TCB address is ++ TP - 0x7000. As we define TLS_DTV_AT_TP we can ++ assume that the pthread struct is allocated immediately ahead of the ++ TCB. This implies that the pthread_descr address is ++ TP - (TLS_PRE_TCB_SIZE + 0x7000). */ ++/* ??? PPC uses offset 0x7000; seems like a good idea for alpha too, ++ but binutils not yet changed to match. */ ++# define TLS_TCB_OFFSET 0 ++ + /* Install the dtv pointer. The pointer passed is to the element with + index -1 which contain the length. */ + # define INSTALL_DTV(TCBP, DTVP) \ +- (((tcbhead_t *) (TCBP))->dtv = (DTVP) + 1) ++ (((tcbhead_t *) (TCBP))[-1].dtv = (DTVP) + 1) + + /* Install new dtv for current thread. */ + # define INSTALL_NEW_DTV(DTV) \ +- (((tcbhead_t *)__builtin_thread_pointer ())->dtv = (DTV)) ++ (THREAD_DTV() = (DTV)) + + /* Return dtv of given thread descriptor. */ + # define GET_DTV(TCBP) \ +- (((tcbhead_t *) (TCBP))->dtv) ++ (((tcbhead_t *) (TCBP))[-1].dtv) + + /* Code to initially initialize the thread pointer. This might need + special attention since 'errno' is not yet available and if the + operation can cause a failure 'errno' must not be touched. */ + # define TLS_INIT_TP(TCBP, SECONDCALL) \ +- (__builtin_set_thread_pointer (TCBP), 0) ++ (__builtin_set_thread_pointer ((void *) (TCBP) + TLS_TCB_OFFSET), NULL) + + /* Return the address of the dtv for the current thread. */ + # define THREAD_DTV() \ +- (((tcbhead_t *)__builtin_thread_pointer ())->dtv) ++ (((tcbhead_t *) (__builtin_thread_pointer () - TLS_TCB_OFFSET))[-1].dtv) + + /* Return the thread descriptor for the current thread. */ + # undef THREAD_SELF + # define THREAD_SELF \ +- ((pthread_descr)__builtin_thread_pointer () - 1) ++ ((pthread_descr) (__builtin_thread_pointer () \ ++ - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)) + + # undef INIT_THREAD_SELF + # define INIT_THREAD_SELF(DESCR, NR) \ +- __builtin_set_thread_pointer ((struct _pthread_descr_struct *)(DESCR) + 1) ++ __builtin_set_thread_pointer ((char *)(DESCR) \ ++ + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE) + + /* Get the thread descriptor definition. */ + # include +Index: glibc-2.4/linuxthreads/sysdeps/i386/tls.h +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/i386/tls.h 2005-01-09 15:01:13.000000000 -0500 ++++ glibc-2.4/linuxthreads/sysdeps/i386/tls.h 2006-03-11 01:00:38.000000000 -0500 +@@ -86,7 +86,14 @@ + # define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) + + /* This is the size of the TCB. */ +-# define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# ifndef IS_IN_rtld ++# define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# else ++# include ++# define TLS_TCB_SIZE \ ++ (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE \ ++ ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE) ++# endif + + /* Alignment requirements for the TCB. */ + # define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) +Index: glibc-2.4/linuxthreads/sysdeps/ia64/tls.h +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/ia64/tls.h 2005-01-09 15:01:13.000000000 -0500 ++++ glibc-2.4/linuxthreads/sysdeps/ia64/tls.h 2006-03-11 01:00:38.000000000 -0500 +@@ -69,13 +69,22 @@ + If there is not any room for uintptr_t stack_guard and + uintptr_t pointer_guard in struct pthread's final padding, + we need to put struct pthread 16 byte slower. */ +-# define TLS_PRE_TCB_SIZE \ ++# define TLS_PRE_TCB_SIZE_LT \ + (sizeof (struct pthread) \ + + (PTHREAD_STRUCT_END_PADDING < 2 * sizeof (uintptr_t) \ + ? ((2 * sizeof (uintptr_t) + __alignof__ (struct pthread) - 1) \ + & ~(__alignof__ (struct pthread) - 1)) \ + : 0)) + ++# ifndef IS_IN_rtld ++# define TLS_TCB_SIZE TLS_PRE_TCB_SIZE_LT ++# else ++# include ++# define TLS_TCB_SIZE \ ++ (TLS_PRE_TCB_SIZE_LT > NPTL_STRUCT_PTHREAD_SIZE \ ++ ? TLS_PRE_TCB_SIZE_LT : NPTL_STRUCT_PTHREAD_SIZE) ++# endif ++ + /* Alignment requirements for the TCB. */ + # define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) + +Index: glibc-2.4/linuxthreads/sysdeps/powerpc/tls.h +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/powerpc/tls.h 2005-01-09 15:01:14.000000000 -0500 ++++ glibc-2.4/linuxthreads/sysdeps/powerpc/tls.h 2006-03-11 01:00:38.000000000 -0500 +@@ -69,11 +69,19 @@ + # define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) + + /* This is the size we need before TCB. */ +-# define TLS_PRE_TCB_SIZE \ ++# ifndef IS_IN_rtld ++# define TLS_PRE_TCB_SIZE \ + (sizeof (struct _pthread_descr_struct) \ + + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1))) ++# else ++# include ++# define TLS_PRE_TCB_SIZE \ ++ ((sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE \ ++ ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE) \ ++ + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1))) ++# endif + +-/* The following assumes that TP (R2 or R13) is points to the end of the ++/* The following assumes that TP (R2 or R13) points to the end of the + TCB + 0x7000 (per the ABI). This implies that TCB address is + TP - 0x7000. As we define TLS_DTV_AT_TP we can + assume that the pthread_descr is allocated immediately ahead of the +Index: glibc-2.4/linuxthreads/sysdeps/pthread/Makefile +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/pthread/Makefile 2003-08-13 20:14:22.000000000 -0400 ++++ glibc-2.4/linuxthreads/sysdeps/pthread/Makefile 2006-03-11 01:00:38.000000000 -0500 +@@ -12,3 +12,15 @@ + ifeq ($(subdir),posix) + CFLAGS-confstr.c += -DLIBPTHREAD_VERSION="\"$(shell sed 's/\(.*\) by .*/\1/' ../linuxthreads/Banner)\"" + endif ++ ++ifeq ($(subdir),csu) ++# Find out the size of NPTL struct pthread ++ifneq (,$(wildcard $(..)nptl/descr.h)) ++gen-as-const-headers += nptl-struct-pthread.sym ++else ++before-compile += $(common-objpfx)nptl-struct-pthread.h ++common-generated += nptl-struct-pthread.h ++$(common-objpfx)nptl-struct-pthread.h: ++ @echo '#define NPTL_STRUCT_PTHREAD_SIZE 0' > $@ ++endif ++endif +Index: glibc-2.4/linuxthreads/sysdeps/pthread/nptl-struct-pthread.sym +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.4/linuxthreads/sysdeps/pthread/nptl-struct-pthread.sym 2006-03-11 01:00:38.000000000 -0500 +@@ -0,0 +1,13 @@ ++#ifdef HAVE_TLS_SUPPORT ++# ifndef HAVE_FORCED_UNWIND ++# define HAVE_FORCED_UNWIND 1 ++# endif ++# define __need_struct_pthread_size ++# include ++#endif ++ ++-- ++ ++#ifdef HAVE_TLS_SUPPORT ++NPTL_STRUCT_PTHREAD_SIZE sizeof (struct pthread) ++#endif +Index: glibc-2.4/linuxthreads/sysdeps/s390/tls.h +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/s390/tls.h 2005-01-09 15:01:14.000000000 -0500 ++++ glibc-2.4/linuxthreads/sysdeps/s390/tls.h 2006-03-11 01:00:38.000000000 -0500 +@@ -77,7 +77,14 @@ + # define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) + + /* This is the size of the TCB. */ +-# define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# ifndef IS_IN_rtld ++# define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# else ++# include ++# define TLS_TCB_SIZE \ ++ (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE \ ++ ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE) ++# endif + + /* Alignment requirements for the TCB. */ + # define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) +Index: glibc-2.4/linuxthreads/sysdeps/sh/tls.h +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/sh/tls.h 2005-11-11 19:49:59.000000000 -0500 ++++ glibc-2.4/linuxthreads/sysdeps/sh/tls.h 2006-03-11 01:00:38.000000000 -0500 +@@ -76,7 +76,14 @@ + # define TLS_TCB_SIZE sizeof (tcbhead_t) + + /* This is the size we need before TCB. */ +-# define TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# ifndef IS_IN_rtld ++# define TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# else ++# include ++# define TLS_PRE_TCB_SIZE \ ++ (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE \ ++ ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE) ++# endif + + /* Alignment requirements for the TCB. */ + # define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) +Index: glibc-2.4/linuxthreads/sysdeps/sparc/tls.h +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/sparc/tls.h 2005-01-09 15:01:15.000000000 -0500 ++++ glibc-2.4/linuxthreads/sysdeps/sparc/tls.h 2006-03-11 01:00:38.000000000 -0500 +@@ -69,7 +69,14 @@ + # define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) + + /* This is the size of the TCB. */ +-# define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# ifndef IS_IN_rtld ++# define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# else ++# include ++# define TLS_TCB_SIZE \ ++ (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE \ ++ ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE) ++# endif + + /* Alignment requirements for the TCB. */ + # define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) +Index: glibc-2.4/linuxthreads/sysdeps/x86_64/tls.h +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/x86_64/tls.h 2005-01-09 15:01:15.000000000 -0500 ++++ glibc-2.4/linuxthreads/sysdeps/x86_64/tls.h 2006-03-11 01:00:38.000000000 -0500 +@@ -71,7 +71,14 @@ + # define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) + + /* This is the size of the TCB. */ +-# define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# ifndef IS_IN_rtld ++# define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) ++# else ++# include ++# define TLS_TCB_SIZE \ ++ (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE \ ++ ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE) ++# endif + + /* Alignment requirements for the TCB. */ + # define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) +Index: glibc-2.4/nptl/Makefile +=================================================================== +--- glibc-2.4.orig/nptl/Makefile 2006-02-28 04:36:05.000000000 -0500 ++++ glibc-2.4/nptl/Makefile 2006-03-11 01:00:38.000000000 -0500 +@@ -519,15 +519,19 @@ + $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so +-# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, ++# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, + # since otherwise libpthread.so comes before libc.so when linking. + $(addprefix $(objpfx), $(tests-reverse)): \ +- $(objpfx)../libc.so $(objpfx)libpthread.so \ ++ $(objpfx)linklibc.so $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)../libc.so: $(common-objpfx)libc.so ; + $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a + + $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so ++ ++$(objpfx)linklibc.so: $(common-objpfx)libc.so ++ ln -s ../libc.so $@ ++generated += libclink.so + else + $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a + endif +Index: glibc-2.4/nptl/descr.h +=================================================================== +--- glibc-2.4.orig/nptl/descr.h 2006-02-24 02:28:57.000000000 -0500 ++++ glibc-2.4/nptl/descr.h 2006-03-11 01:00:38.000000000 -0500 +@@ -27,9 +27,13 @@ + #include + #include + #include ++#ifdef __need_struct_pthread_size ++#define lll_lock_t int ++#else + #include + #include + #include ++#endif + #include "../nptl_db/thread_db.h" + #include + #ifdef HAVE_FORCED_UNWIND +Index: glibc-2.4/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2006-03-11 01:05:57.000000000 -0500 ++++ glibc-2.4/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2006-03-11 01:10:02.000000000 -0500 +@@ -149,4 +149,18 @@ + /* Thread identifiers */ + typedef unsigned long int pthread_t; + ++#if __WORDSIZE == 64 ++#define __PTHREAD_MUTEX_HAVE_PREV 1 ++typedef struct __pthread_internal_list ++{ ++ struct __pthread_internal_list *__prev; ++ struct __pthread_internal_list *__next; ++} __pthread_list_t; ++#else ++typedef struct __pthread_internal_slist ++{ ++ struct __pthread_internal_slist *__next; ++} __pthread_slist_t; ++#endif ++ + #endif /* bits/pthreadtypes.h */ --- glibc-2.4.orig/debian/patches/any/local-version-sanity.diff +++ glibc-2.4/debian/patches/any/local-version-sanity.diff @@ -0,0 +1,24 @@ +# DP: Description: Only parse three parts of a kernel version number. +# DP: Related bugs: 218546 +# DP: Author: Daniel Jacobowitz +# DP: Upstream status: Debian-specic +# DP: Status details: Rejected by Ulrich, needed for Debian. +# DP: http://sources.redhat.com/ml/libc-alpha/2003-11/msg00025.html +# DP: Date: 2003-11-01 + +2003-11-01 Daniel Jacobowitz + + * sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Don't + parse more than three parts of the version number. + +--- glibc-2.3.2/sysdeps/unix/sysv/linux/dl-osinfo.h.orig 2003-11-01 14:20:45.000000000 -0500 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/dl-osinfo.h 2003-11-01 14:21:32.000000000 -0500 +@@ -127,7 +127,7 @@ + version <<= 8; + version |= here; + +- if (*cp++ != '.') ++ if (*cp++ != '.' || parts == 3) + /* Another part following? */ + break; + } --- glibc-2.4.orig/debian/patches/any/submitted-nis-netgrp.diff +++ glibc-2.4/debian/patches/any/submitted-nis-netgrp.diff @@ -0,0 +1,27 @@ +This assertion breaks applications if they redefine malloc/free functions, +malloc_usable_size may then report wrong values. This is true for instance +with bash, whereas bash-static works fine because it does not use its own +wrapper functions. See #322011 and merged bugs. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: BZ692 +# DP: Date: 2006-01-12 + + +Index: glibc-2.3.5/nis/nss_nis/nis-netgrp.c +=================================================================== +--- glibc-2.3.5.orig/nis/nss_nis/nis-netgrp.c ++++ glibc-2.3.5/nis/nss_nis/nis-netgrp.c +@@ -71,7 +71,10 @@ + and the last byte is filled with NUL. So we can simply + use that buffer. */ + assert (len >= 0); +- assert (malloc_usable_size (netgrp->data) >= len + 1); ++ /* Call to malloc_usable_size disabled, this breaks if applications ++ redefine malloc/free with a different implementation. ++ This assert is always true, see yp_match. */ ++ /* assert (malloc_usable_size (netgrp->data) >= len + 1); */ + assert (netgrp->data[len] == '\0'); + + netgrp->data_size = len; --- glibc-2.4.orig/debian/patches/any/submitted-strfmon.diff +++ glibc-2.4/debian/patches/any/submitted-strfmon.diff @@ -0,0 +1,56 @@ +# DP: current locale defines sign_posn == 4 (as in de_CH) and +# DP: format argument contains the ! modifier. +# DP: Note: upstream will fix indentation when applying this patch, +# DP: it has intentionnally been kept this way for readability. +# DP: Related bugs: BZ2420 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: +# DP: Status Details: + +Index: glibc-2.3.6/stdlib/strfmon_l.c +=================================================================== +--- glibc-2.3.6.orig/stdlib/strfmon_l.c ++++ glibc-2.3.6/stdlib/strfmon_l.c +@@ -491,12 +491,11 @@ + } + + if (print_curr_symbol) +- { +- out_string (currency_symbol); ++ out_string (currency_symbol); + + if (sign_posn == 4) + { +- if (sep_by_space == 2) ++ if (sep_by_space == 2 && print_curr_symbol) + out_char (space_char); + out_string (sign_string); + if (sep_by_space == 1) +@@ -505,9 +504,8 @@ + out_char (' '); + } + else +- if (sep_by_space == 1) ++ if (sep_by_space == 1 && print_curr_symbol) + out_char (space_char); +- } + } + else + if (sign_posn != 0 && sign_posn != 2 && sign_posn != 3 +@@ -583,13 +581,13 @@ + || (sign_posn == 0 && sep_by_space == 1)) + out_char (space_char); + out_nstring (currency_symbol, currency_symbol_len); ++ } + if (sign_posn == 4) + { +- if (sep_by_space == 2) ++ if (sep_by_space == 2 && print_curr_symbol) + out_char (' '); + out_string (sign_string); + } +- } + } + + if (sign_posn == 2) --- glibc-2.4.orig/debian/patches/any/local-asserth-decls.diff +++ glibc-2.4/debian/patches/any/local-asserth-decls.diff @@ -0,0 +1,32 @@ +# DP: Description: /usr/include/assert.h +# DP: One must be allowed to include multiple times with different +# DP: values for NDEBUG, so the file is not protected against multiple +# DP: inclusions. Unfortunately this means that the declarations for +# DP: __assert_fail() and the like may occur multiple times in a compilation +# DP: unit, causing gcc to issue a batch of warnings. +# DP: I believe this can be fixed by protecting the declarations (but only +# DP: those declarations) against repetition. +# DP: Author: Jeroen T. Vermeulen +# DP: Upstream status: Not submitted +# DP: Status Details: Plan to submit +# DP: Date: 2003-01-01 + +--- assert/assert.h 2002-10-13 15:24:18.000000000 +0200 ++++ assert/assert.h 2002-10-13 15:23:57.000000000 +0200 +@@ -62,6 +62,8 @@ + + #else /* Not NDEBUG. */ + ++#ifndef _ASSERT_H_DECLS ++#define _ASSERT_H_DECLS + __BEGIN_DECLS + + /* This prints an "Assertion failed" message and aborts. */ +@@ -83,6 +85,7 @@ + + + __END_DECLS ++#endif /* Not _ASSERT_H_DECLS */ + + # define assert(expr) \ + (__ASSERT_VOID_CAST ((expr) ? 0 : \ --- glibc-2.4.orig/debian/patches/any/cvs-argp_h.diff +++ glibc-2.4/debian/patches/any/cvs-argp_h.diff @@ -0,0 +1,21 @@ +2005-10-13 Ulrich Drepper + + [BZ #1373] + * argp/argp.h: Remove __NTH for __argp_usage inline function. + +=================================================================== +RCS file: /cvs/glibc/libc/argp/argp.h,v +retrieving revision 1.30 +retrieving revision 1.31 +diff -u -r1.30 -r1.31 +--- libc/argp/argp.h 2004/09/07 22:23:45 1.30 ++++ libc/argp/argp.h 2005/10/14 05:53:47 1.31 +@@ -561,7 +561,7 @@ + # endif + + ARGP_EI void +-__NTH (__argp_usage (__const struct argp_state *__state)) ++__argp_usage (__const struct argp_state *__state) + { + __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); + } --- glibc-2.4.orig/debian/patches/any/local-ldso-disable-hwcap.diff +++ glibc-2.4/debian/patches/any/local-ldso-disable-hwcap.diff @@ -0,0 +1,81 @@ +# DP: Allow hwcap's to be disabled with the existence of a file. This +# DP: makes it easier to do upgrades with optimized (hwcap) library +# DP: packages. +# DP: Author: Rewritten by Daniel Jacobowitz +# DP: Upstream status: Debian-Specific +# DP: Status Details: This isn't going to be acceptable upstream, we +# DP: only need it because we support in-place upgrades. +# DP: Date: 2003-10-28, (Updated 2005-01-02 gotom) + +Index: elf/dl-sysdep.c +=================================================================== +RCS file: /cvs/glibc/libc/elf/dl-sysdep.c,v +retrieving revision 1.113 +diff -u -r1.113 dl-sysdep.c +--- elf/dl-sysdep.c 6 Nov 2004 00:24:47 -0000 1.113 ++++ elf/dl-sysdep.c 2 Jan 2005 10:24:13 -0000 +@@ -408,7 +408,11 @@ + #ifdef USE_TLS + /* For TLS enabled builds always add 'tls'. */ + ++cnt; +-#else ++#endif ++ ++ if (__access ("/etc/ld.so.nohwcap", F_OK) == 0) ++ cnt = 0; ++ + if (cnt == 0) + { + /* If we no have platform name and no important capability we only +@@ -423,7 +427,6 @@ + *sz = 1; + return result; + } +-#endif + + /* Create temporary data structure to generate result table. */ + temp = (struct r_strlenpair *) alloca (cnt * sizeof (*temp)); +@@ -488,9 +491,7 @@ + result = (struct r_strlenpair *) malloc (*sz * sizeof (*result) + total); + if (result == NULL) + { +-#ifndef USE_TLS + no_memory: +-#endif + _dl_signal_error (ENOMEM, NULL, NULL, + N_("cannot create capability list")); + } +Index: elf/dl-cache.c +=================================================================== +RCS file: /cvs/glibc/libc/elf/dl-cache.c,v +retrieving revision 1.46 +diff -u -r1.46 dl-cache.c +--- elf/dl-cache.c 19 Mar 2004 00:36:32 -0000 1.46 ++++ elf/dl-cache.c 2 Jan 2005 10:23:42 -0000 +@@ -244,6 +244,7 @@ + if (cache_new != (void *) -1) + { + uint64_t platform; ++ int disable_hwcap = 0; + + /* This is where the strings start. */ + cache_data = (const char *) cache_new; +@@ -255,6 +256,9 @@ + if (platform != (uint64_t) -1) + platform = 1ULL << platform; + ++ if (__access ("/etc/ld.so.nohwcap", F_OK) == 0) ++ disable_hwcap = 1; ++ + /* Only accept hwcap if it's for the right platform. */ + #ifdef USE_TLS + # define _DL_HWCAP_TLS_MASK (1LL << 63) +@@ -264,6 +268,8 @@ + #define HWCAP_CHECK \ + if (GLRO(dl_osversion) && lib->osversion > GLRO(dl_osversion)) \ + continue; \ ++ if (disable_hwcap && lib->hwcap != 0) \ ++ continue; \ + if (_DL_PLATFORMS_COUNT && platform != -1 \ + && (lib->hwcap & _DL_HWCAP_PLATFORM) != 0 \ + && (lib->hwcap & _DL_HWCAP_PLATFORM) != platform) \ --- glibc-2.4.orig/debian/patches/any/local-ldd.diff +++ glibc-2.4/debian/patches/any/local-ldd.diff @@ -0,0 +1,49 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Make ldd handle non-executable shared objects +# DP: +# DP: Updated by gotom, it's nice to merge to the upstream after my review. +# Date: (Updated 2004-01-02 gotom) + +Index: elf/ldd.bash.in +=================================================================== +RCS file: /cvs/glibc/libc/elf/ldd.bash.in,v +retrieving revision 1.33 +diff -u -r1.33 ldd.bash.in +--- elf/ldd.bash.in 8 Dec 2004 22:08:47 -0000 1.33 ++++ elf/ldd.bash.in 2 Jan 2005 09:03:01 -0000 +@@ -31,6 +31,7 @@ + warn= + bind_now= + verbose= ++filename_magic_regex="((^|/)lib|.so$)" + + while test $# -gt 0; do + case "$1" in +@@ -148,8 +149,11 @@ + echo "ldd: ${file}:" $"No such file or directory" >&2 + result=1 + elif test -r "$file"; then +- test -x "$file" || echo 'ldd:' $"\ +-warning: you do not have execution permission for" "\`$file'" >&2 ++ if test ! -x "$file" && eval echo "$file" \ ++ | egrep -v "$filename_magic_regex" > /dev/null; then ++ echo 'ldd:' $"warning: you do not have execution permission for"\ ++ "\`$file'" >&2 ++ fi + RTLD= + for rtld in ${RTLDLIST}; do + if test -x $rtld; then +@@ -171,7 +175,12 @@ + # If the program exits with exit code 5, it means the process has been + # invoked with __libc_enable_secure. Fall back to running it through + # the dynamic linker. +- try_trace "$file" ++ if [ ! -x "$file" ] && eval file -L "$file" 2>/dev/null \ ++ | sed 10q | egrep "$file_magic_regex" > /dev/null; then ++ try_trace "${RTLD}" "$file" ++ else ++ try_trace "$file" ++ fi + rc=$? + if [ $rc = 5 ]; then + try_trace "$RTLD" "$file" --- glibc-2.4.orig/debian/patches/any/local-__thread.diff +++ glibc-2.4/debian/patches/any/local-__thread.diff @@ -0,0 +1,30 @@ +# DP: Description: Fix build when __thread is not available. +# DP: Dpatch author: Michael Banck +# DP: Patch author: Thomas Schwinge +# DP: Upstream status: Rejected +# DP: Date: 2005-08-28 + +2005-08-28 Thomas Schwinge + + malloc/memusage.c: Only use __thread if USE___THREAD. + + +Index: malloc/memusage.c +=================================================================== +RCS file: /cvs/glibc/libc/malloc/memusage.c,v +retrieving revision 1.12 +diff -u -r1.12 memusage.c +--- malloc/memusage.c 20 Aug 2005 01:12:37 -0000 1.12 ++++ malloc/memusage.c 27 Aug 2005 23:43:02 -0000 +@@ -83,7 +83,11 @@ + static memusage_cntr_t decreasing_mremap; + static memusage_size_t current_heap; + static memusage_size_t peak_use[3]; ++#if USE___THREAD + static __thread uintptr_t start_sp; ++#else ++static uintptr_t start_sp; ++#endif + + /* A few macros to make the source more readable. */ + #define peak_heap peak_use[0] --- glibc-2.4.orig/debian/patches/any/local-forward-backward-collation.diff +++ glibc-2.4/debian/patches/any/local-forward-backward-collation.diff @@ -0,0 +1,63 @@ +# DP: Description: Fix segfault when strings contain a mix of forward +# and backward rules. +# DP: Related bugs: #310635 BZ645 +# DP: Dpatch Author: Denis Barbier +# DP: Patch Author: Denis Barbier +# DP: Upstream status: not yet submitted. +# DP: Test case: the following command segfaults in en_US.UTF-8 locale +# DP: when BZ645 is fixed: +# DP: echo 2d d194 0a 2d d194 0a | xxd -r -p | sort +# DP: Date: 2006-03-17 + +Index: glibc-2.3.6/string/strcoll_l.c +=================================================================== +--- glibc-2.3.6.orig/string/strcoll_l.c ++++ glibc-2.3.6/string/strcoll_l.c +@@ -186,7 +186,10 @@ + /* The last pushed character was handled. Continue + with forward characters. */ + if (idx1cnt < idx1max) +- idx1now = idx1cnt; ++ { ++ idx1now = idx1cnt; ++ backw1_stop = ~0ul; ++ } + else + /* Nothing anymore. The backward sequence ended with + the last sequence in the string. Note that seq1len +@@ -245,7 +248,10 @@ + /* The last pushed character was handled. Continue + with forward characters. */ + if (idx2cnt < idx2max) +- idx2now = idx2cnt; ++ { ++ idx2now = idx2cnt; ++ backw2_stop = ~0ul; ++ } + else + /* Nothing anymore. The backward sequence ended with + the last sequence in the string. Note that seq2len +@@ -370,7 +376,10 @@ + /* The last pushed character was handled. Continue + with forward characters. */ + if (idx1cnt < idx1max) +- idx1now = idx1cnt; ++ { ++ idx1now = idx1cnt; ++ backw1_stop = ~0ul; ++ } + else + { + /* Nothing anymore. The backward sequence +@@ -426,7 +435,10 @@ + /* The last pushed character was handled. Continue + with forward characters. */ + if (idx2cnt < idx2max) +- idx2now = idx2cnt; ++ { ++ idx2now = idx2cnt; ++ backw2_stop = ~0ul; ++ } + else + { + /* Nothing anymore. The backward sequence --- glibc-2.4.orig/debian/patches/any/local-makeconfig.diff +++ glibc-2.4/debian/patches/any/local-makeconfig.diff @@ -0,0 +1,19 @@ +# DP: Carried over from glibc2.2, need to figure out why it's here. +# DP: (Probably has something to do with fakeroot) +# DP: Date: (Updated 2005-01-02 gotom) + +--- Makeconfig 15 Dec 2004 18:51:47 -0000 1.302 ++++ Makeconfig 2 Jan 2005 08:36:24 -0000 +@@ -541,10 +541,11 @@ + $(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\ + $(filter -Wl$(comma)-rpath-link=%,\ + $(sysdep-LDFLAGS))))) ++ld_envlib_path = $(shell test x$$LD_LIBRARY_PATH = x || echo -n :$$LD_LIBRARY_PATH) + run-program-prefix = $(if $(filter $(notdir $(built-program-file)),\ + $(tests-static) $(xtests-static)),, \ + $(elf-objpfx)$(rtld-installed-name) \ +- --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path))) ++ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path))$(ld_envlib_path)) + else + run-program-prefix = + endif --- glibc-2.4.orig/debian/patches/any/local-gcc4-wcstol_l.diff +++ glibc-2.4/debian/patches/any/local-gcc4-wcstol_l.diff @@ -0,0 +1,46 @@ +# DP: Description: Make glibc-2.3.5 compile with gcc-4.0 on 64bit archs. +# DP: Related bugs: +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: Jakub Jelinek +# DP: Upstream status: Debian-Specific +# DP: Status Details: +# DP: Date: 2005-07-14 + +https://www.redhat.com/archives/fedora-cvs-commits/2005-March/msg00408.html + + * sysdeps/wordsize-64/strtol_l.c: Don't add aliases if UNSIGNED. + * sysdeps/wordsize-64/wcstol_l.c: Likewise. + +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/wordsize-64/strtol_l.c,v +retrieving revision 1.4 +retrieving revision 1.4.2.1 +diff -u -r1.4 -r1.4.2.1 +--- libc/sysdeps/wordsize-64/strtol_l.c 2003/03/03 09:45:12 1.4 ++++ libc/sysdeps/wordsize-64/strtol_l.c 2005/03/25 11:59:01 1.4.2.1 +@@ -8,7 +8,9 @@ + #undef ____strtoll_l_internal + #undef __strtoll_l + #undef strtoll_l ++#if !UNSIGNED + strong_alias (____strtol_l_internal, ____strtoll_l_internal) + libc_hidden_ver (____strtol_l_internal, ____strtoll_l_internal) + weak_alias (__strtol_l, __strtoll_l) + weak_alias (__strtol_l, strtoll_l) ++#endif +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/wordsize-64/wcstol_l.c,v +retrieving revision 1.4 +retrieving revision 1.4.2.1 +diff -u -r1.4 -r1.4.2.1 +--- libc/sysdeps/wordsize-64/wcstol_l.c 2002/08/08 11:44:51 1.4 ++++ libc/sysdeps/wordsize-64/wcstol_l.c 2005/03/25 11:59:01 1.4.2.1 +@@ -8,6 +8,8 @@ + #undef ____wcstoll_l_internal + #undef __wcstoll_l + #undef wcstoll_l ++#if !UNSIGNED + strong_alias (____wcstol_l_internal, ____wcstoll_l_internal) + weak_alias (__wcstol_l, __wcstoll_l) + weak_alias (__wcstol_l, wcstoll_l) ++#endif --- glibc-2.4.orig/debian/patches/any/local-rtld.diff +++ glibc-2.4/debian/patches/any/local-rtld.diff @@ -0,0 +1,43 @@ +2006-01-21 Aurelien Jarno + + * Makeconfig: new configuration variable rtlddir to change the + dynamic linker in the ELF binaries, which defaults to slibdir + +2005-08-30 Andreas Jochen + * Makeconfig: use rtlddir instead of slibdir + * elf/Makefile: likewise + +--- glibc-2.3.6/Makeconfig 2005-08-30 17:48:26.000000000 +0000 ++++ glibc-2.3.6/Makeconfig 2005-08-30 18:38:37.000000000 +0000 +@@ -187,6 +187,11 @@ + endif + inst_slibdir = $(install_root)$(slibdir) + ++# Directory of the dynamic linker in the ELF binaries ++ifndef rtlddir ++rtlddir := $(slibdir) ++endif ++ + # Prefix to put on files installed in $(libdir). For libraries `libNAME.a', + # the prefix is spliced between `lib' and the name, so the linker switch + # `-l$(libprefix)NAME' finds the library; for other files the prefix is +@@ -438,7 +443,7 @@ + endif + ifndef config-LDFLAGS + ifeq (yesyes,$(build-shared)$(elf)) +-config-LDFLAGS = -Wl,-dynamic-linker=$(slibdir)/$(rtld-installed-name) ++config-LDFLAGS = -Wl,-dynamic-linker=$(rtlddir)/$(rtld-installed-name) + endif + endif + ifndef link-libc +--- glibc-2.3.6/elf/Makefile 2005-08-30 17:48:26.000000000 +0000 ++++ glibc-2.3.6/elf/Makefile 2005-08-30 18:38:37.000000000 +0000 +@@ -296,7 +296,7 @@ + rm -f $@.lds + + # interp.c exists just to get this string into the libraries. +-CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \ ++CFLAGS-interp.c = -D'RUNTIME_LINKER="$(rtlddir)/$(rtld-installed-name)"' \ + -DNOT_IN_libc=1 + $(objpfx)interp.os: $(common-objpfx)config.make + --- glibc-2.4.orig/debian/patches/any/local-dl-execstack.diff +++ glibc-2.4/debian/patches/any/local-dl-execstack.diff @@ -0,0 +1,33 @@ +# DP: Description: Support libraries that has execstack on <= 2.4.18 kernels. +# DP: Related bugs: #321718 +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: GOTO Masanori +# DP: Upstream status: Not submitted +# DP: Status Details: Will be submitted +# DP: Date: 2005-08-19 + +2005-08-19 GOTO Masanori + + * sysdeps/unix/sysv/linux/dl-execstack.c: Check not only ENOMEM but + also EFAULT for pre 2.4.19 kernels. + +--- sysdeps/unix/sysv/linux/dl-execstack.c.old 2006-01-28 22:25:42.000000000 -0500 ++++ sysdeps/unix/sysv/linux/dl-execstack.c 2006-01-28 22:26:06.000000000 -0500 +@@ -89,7 +89,7 @@ + page -= size; + else + { +- if (errno != ENOMEM) /* Unexpected failure mode. */ ++ if (errno != ENOMEM && errno != EFAULT) /* Unexpected failure mode. */ + { + result = errno; + goto out; +@@ -115,7 +115,7 @@ + page += size; + else + { +- if (errno != ENOMEM) /* Unexpected failure mode. */ ++ if (errno != ENOMEM && errno != EFAULT) /* Unexpected failure mode. */ + { + result = errno; + goto out; --- glibc-2.4.orig/debian/patches/any/local-globfree-clear.diff +++ glibc-2.4/debian/patches/any/local-globfree-clear.diff @@ -0,0 +1,24 @@ +# DP: Description: Workaround patch to make globfree() clear pglob->gl_pathc +# DP: Related bugs: #264884 +# DP: Dpatch author: Jeff Licquia +# DP: Patch author: Jeff Licquia +# DP: Upstream status: Not submitted +# DP: Status Details: (gotom) I think it's harmless, but I doubt it's sanity. +# It's applied for sarge LFS conformance. +# However my test does not show any problems. Moreover, +# if gl_pathv is not cleared after GLOB_ABORTED under +# gl_pathc == 0, it's glob() bug. +# This patch should be reconsidered to apply after sarge. +# DP: Date: 2004-07-22 + +--- glibc-2.3.2-old/sysdeps/generic/glob.c 2004-07-26 17:49:07.000000000 -0400 ++++ glibc-2.3.2/sysdeps/generic/glob.c 2004-07-26 17:51:14.000000000 -0400 +@@ -1105,6 +1105,8 @@ + if (pglob->gl_pathv[pglob->gl_offs + i] != NULL) + free ((__ptr_t) pglob->gl_pathv[pglob->gl_offs + i]); + free ((__ptr_t) pglob->gl_pathv); ++ pglob->gl_pathc = 0; ++ pglob->gl_pathv = NULL; + } + } + #if defined _LIBC && !defined globfree --- glibc-2.4.orig/debian/patches/any/local-bashisms.diff +++ glibc-2.4/debian/patches/any/local-bashisms.diff @@ -0,0 +1,13 @@ +Index: glibc-2.4/iconvdata/run-iconv-test.sh +=================================================================== +--- glibc-2.4.orig/iconvdata/run-iconv-test.sh 2006-04-21 19:34:19.000000000 -0400 ++++ glibc-2.4/iconvdata/run-iconv-test.sh 2006-04-21 19:34:58.000000000 -0400 +@@ -128,7 +128,7 @@ + done + fi + +- if test "$subset" == N; then ++ if test "$subset" = N; then + echo $ac_n " suntzu: ASCII -> $to -> ASCII $ac_c" + $PROG -f ASCII -t $to testdata/suntzus | + $PROG -f $to -t ASCII > $temp1 || --- glibc-2.4.orig/debian/patches/any/local-libgcc-compat-ports.diff +++ glibc-2.4/debian/patches/any/local-libgcc-compat-ports.diff @@ -0,0 +1,370 @@ +# DP: Description: libgcc-compat symbols for mips, arm, m68k +# DP: Author: Guido Guenther, GOTO Masanori +# DP: Upstream status: Not submitted +# DP: Date: 2002-10-13, updated 2006-05-28 + +--- ports/sysdeps/mips/Makefile.orig Sun Oct 13 14:45:56 2002 ++++ ports/sysdeps/mips/Makefile Sun Oct 13 14:51:20 2002 +@@ -10,3 +10,11 @@ + ifeq ($(subdir),rt) + librt-sysdep_routines += rt-sysdep + endif ++ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +--- /dev/null Sat Mar 16 18:32:44 2002 ++++ ports/sysdeps/mips/libgcc-compat.c Sun Oct 20 17:11:59 2002 +@@ -0,0 +1,66 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Guido Guenther ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++ ++extern float floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++#endif +--- /dev/null Sat Mar 16 18:32:44 2002 ++++ ports/sysdeps/mips/Versions Sun Oct 20 17:12:00 2002 +@@ -0,0 +1,8 @@ ++libc { ++ GLIBC_2.0 { ++ # Functions from libgcc. ++ __cmpdi2; __ucmpdi2; ++ __divdi3; __moddi3; __udivdi3; __umoddi3; ++ __fixdfdi; __floatdidf; __floatdisf; ++ } ++} +diff -Nuar sysdeps/arm/Makefile sysdeps/arm/Makefile +--- ports/sysdeps/arm/Makefile 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/arm/Makefile 2003-03-01 00:29:42.000000000 +0900 +@@ -0,0 +1,7 @@ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +diff -Nuar sysdeps/arm/Versions sysdeps/arm/Versions +--- ports/sysdeps/arm/Versions 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/arm/Versions 2003-03-01 18:22:10.000000000 +0900 +@@ -0,0 +1,16 @@ ++libc { ++ GLIBC_2.0 { ++ # Functions from libgcc. ++ __ashldi3; __ashrdi3; ++ __cmpdi2; ++ __divsi3; ++ __fixdfdi; ++ __floatdidf; ++ __floatdisf; ++ __modsi3; ++ __muldi3; ++ __ucmpdi2; ++ __udivsi3; ++ __umodsi3; ++ } ++} +diff -Nuar sysdeps/arm/libgcc-compat.c sysdeps/arm/libgcc-compat.c +--- ports/sysdeps/arm/libgcc-compat.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/arm/libgcc-compat.c 2003-03-02 19:40:20.000000000 +0900 +@@ -0,0 +1,111 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by GOTO Masanori ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int64_t __ashldi3 (int64_t, int32_t); ++int64_t __ashldi3_internal (int64_t u, int32_t b) ++{ ++ return __ashldi3 (u, b); ++} ++symbol_version (__ashldi3_internal, __ashldi3, GLIBC_2.0); ++ ++extern int64_t __ashrdi3 (int64_t, int32_t); ++int32_t __ashrdi3_internal (int64_t u, int32_t b) ++{ ++ return __ashrdi3 (u, b); ++} ++symbol_version (__ashrdi3_internal, __ashrdi3, GLIBC_2.0); ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++extern int32_t __divsi3 (int32_t, int32_t); ++int32_t __divsi3_internal (int32_t u, int32_t v) ++{ ++ return __divsi3 (u, v); ++} ++symbol_version (__divsi3_internal, __divsi3, GLIBC_2.0); ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++extern float __floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++extern int32_t __modsi3 (int32_t, int32_t); ++int32_t __modsi3_internal (int32_t u, int32_t v) ++{ ++ return __modsi3 (u, v); ++} ++symbol_version (__modsi3_internal, __modsi3, GLIBC_2.0); ++ ++extern int64_t __muldi3 (int64_t, int64_t); ++int64_t __muldi3_internal (int64_t u, int64_t v) ++{ ++ return __muldi3 (u, v); ++} ++symbol_version (__muldi3_internal, __muldi3, GLIBC_2.0); ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++extern int32_t __udivsi3 (int32_t, int32_t); ++int32_t __udivsi3_internal (int32_t u, int32_t v) ++{ ++ return __udivsi3 (u, v); ++} ++symbol_version (__udivsi3_internal, __udivsi3, GLIBC_2.0); ++ ++extern int32_t __umodsi3 (int32_t, int32_t); ++int32_t __umodsi3_internal (int32_t u, int32_t v) ++{ ++ return __umodsi3 (u, v); ++} ++symbol_version (__umodsi3_internal, __umodsi3, GLIBC_2.0); ++ ++#endif +diff -Nuar sysdeps/m68k/Deps sysdeps/m68k/Deps +--- ports/sysdeps/m68k/Deps 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m68k/Deps 2003-03-01 00:29:42.000000000 +0900 +@@ -0,0 +1 @@ ++libgcc-compat.c +diff -Nuar sysdeps/m68k/Makefile sysdeps/m68k/Makefile +--- ports/sysdeps/m68k/Makefile 2003-02-27 19:29:49.000000000 +0900 ++++ ports/sysdeps/m68k/Makefile 2003-03-01 00:29:42.000000000 +0900 +@@ -40,3 +40,11 @@ + # Build objects in libc_nonshared.a with -fPIC (instead of -fpic) to avoid + # possible linkage problems. + CFLAGS-.oS += -fPIC ++ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +diff -Nuar sysdeps/m68k/Versions sysdeps/m68k/Versions +--- ports/sysdeps/m68k/Versions 2000-06-15 15:54:28.000000000 +0900 ++++ ports/sysdeps/m68k/Versions 2003-03-02 01:12:58.000000000 +0900 +@@ -2,6 +2,14 @@ + GLIBC_2.0 { + # Functions from libgcc. + __divdi3; __moddi3; __udivdi3; __umoddi3; ++ __ashldi3; ++ __ashrdi3; ++ __fixdfdi; ++ __fixsfdi; ++ __fixunsdfdi; ++ __fixunssfdi; ++ __floatdidf; ++ __floatdisf; + } + } + libm { +diff -Nuar sysdeps/m68k/libgcc-compat.c sysdeps/m68k/libgcc-compat.c +--- ports/sysdeps/m68k/libgcc-compat.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m68k/libgcc-compat.c 2003-03-02 13:26:49.000000000 +0900 +@@ -0,0 +1,83 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by GOTO Masanori ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int64_t __ashldi3 (int64_t, int32_t); ++int64_t __ashldi3_internal (int64_t u, int32_t b) ++{ ++ return __ashldi3 (u, b); ++} ++symbol_version (__ashldi3_internal, __ashldi3, GLIBC_2.0); ++ ++extern int64_t __ashrdi3 (int64_t, int32_t); ++int64_t __ashrdi3_internal (int64_t u, int32_t b) ++{ ++ return __ashrdi3 (u, b); ++} ++symbol_version (__ashrdi3_internal, __ashrdi3, GLIBC_2.0); ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++extern int64_t __fixsfdi (float); ++int64_t __fixsfdi_internal (float d) ++{ ++ return __fixsfdi (d); ++} ++symbol_version (__fixsfdi_internal, __fixsfdi, GLIBC_2.0); ++ ++extern int64_t __fixunsdfdi (double); ++int64_t __fixunsdfdi_internal (double d) ++{ ++ return __fixunsdfdi (d); ++} ++symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0); ++ ++extern int64_t __fixunssfdi (float); ++int64_t __fixunssfdi_internal (float d) ++{ ++ return __fixunssfdi (d); ++} ++symbol_version (__fixunssfdi_internal, __fixunssfdi, GLIBC_2.0); ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++extern float __floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++#endif --- glibc-2.4.orig/debian/patches/any/local-base.diff +++ glibc-2.4/debian/patches/any/local-base.diff @@ -0,0 +1,64 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: hjl libc-base patch + +2003-05-15 + + * elf/do-lookup.h (FCT): Try the base version, the first + version and then the default version, in that order, for + the old unversioned reference. + +--- elf/do-lookup.h.base 2003-05-15 09:29:25.000000000 -0700 ++++ elf/do-lookup.h 2003-05-15 09:24:24.000000000 -0700 +@@ -52,7 +52,8 @@ FCT (const char *undef_name, unsigned lo + const ElfW(Sym) *sym; + #if ! VERSIONED + int num_versions = 0; +- const ElfW(Sym) *versioned_sym = NULL; ++ const ElfW(Sym) *default_version = NULL; ++ const ElfW(Sym) *first_version = NULL; + #endif + + map = list[i]; +@@ -155,16 +156,29 @@ FCT (const char *undef_name, unsigned lo + public interface should be returned. */ + if (verstab != NULL) + { +- if ((verstab[symidx] & 0x7fff) +- >= ((flags & DL_LOOKUP_RETURN_NEWEST) ? 2 : 3)) ++ ElfW(Half) ndx = verstab[symidx] & 0x7fff; ++ if (ndx >= ((flags & DL_LOOKUP_RETURN_NEWEST) ? 2 : 3)) + { + /* Don't accept hidden symbols. */ + if ((verstab[symidx] & 0x8000) == 0 && num_versions++ == 0) + /* No version so far. */ +- versioned_sym = sym; ++ default_version = sym; + + continue; + } ++ if ((flags & DL_LOOKUP_RETURN_NEWEST) == 0 && ndx != 0) ++ { ++ /* ndx == 1 is the base version. We will use it for ++ old unversioned application. */ ++ if (ndx != 1) ++ { ++ /* We remember the first version and keep looking ++ for the base version. */ ++ if (ndx == 2) ++ first_version = sym; ++ continue; ++ } ++ } + } + #endif + +@@ -179,7 +193,8 @@ FCT (const char *undef_name, unsigned lo + #if VERSIONED + sym = NULL; + #else +- sym = num_versions == 1 ? versioned_sym : NULL; ++ sym = first_version ?: (num_versions == 1 ++ ? default_version : NULL); + #endif + + if (sym != NULL) --- glibc-2.4.orig/debian/patches/any/local-stringh.diff +++ glibc-2.4/debian/patches/any/local-stringh.diff @@ -0,0 +1,20 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Surround expression in () to keep expansion happy +# DP: Related bugs: Ubuntu 12864 +# DP: Dpatch author: Jeff Bailey +# DP: Patch author: Matthias Klose +# DP: Upstream status: Not submitted +# DP: Status Details: +# DP: Date: 2005-09-01 + +--- string/bits/string2.h 2005-09-01 20:55:50.000000000 -0400 ++++ string/bits/string2.h 2005-09-01 20:56:09.000000000 -0400 +@@ -107,7 +107,7 @@ __STRING2_COPY_TYPE (8); + : memset (s, c, n)))) + + # define __memset_1(s, c) ({ void *__s = (s); \ +- *((__uint8_t *) __s) = (__uint8_t) c; __s; }) ++ *((__uint8_t *) __s) = (__uint8_t) (c); __s; }) + + # define __memset_gc(s, c, n) \ + ({ void *__s = (s); \ --- glibc-2.4.orig/debian/patches/any/local-tcsetaddr.diff +++ glibc-2.4/debian/patches/any/local-tcsetaddr.diff @@ -0,0 +1,80 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: tcsetattr sanity check on PARENB/CREAD/CSIZE for ptys +# DP: Related bugs: 218131 +# DP: Author: Jeff Licquia +# DP: Upstream status: [In CVS | Debian-Specific | Pending | Not submitted ] +# DP: Status Details: +# DP: Date: 2003-10-29 + +diff --recursive --unified --new-file glibc-2.3.2-old/sysdeps/unix/sysv/linux/tcsetattr.c glibc-2.3.2/sysdeps/unix/sysv/linux/tcsetattr.c +--- glibc-2.3.2-old/sysdeps/unix/sysv/linux/tcsetattr.c 2003-02-20 19:09:12.000000000 -0500 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/tcsetattr.c 2003-10-31 13:43:43.000000000 -0500 +@@ -55,7 +55,12 @@ + const struct termios *termios_p; + { + struct __kernel_termios k_termios; ++ struct __kernel_termios k_termios_old; + unsigned long int cmd; ++ int retval, old_retval; ++ ++ /* Preserve the previous termios state if we can. */ ++ old_retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios_old); + + switch (optional_actions) + { +@@ -87,6 +92,54 @@ + memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], + __KERNEL_NCCS * sizeof (cc_t)); + +- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ ++ /* The Linux kernel silently ignores the invalid c_cflag on pty. ++ We have to check it here, and return an error. But if some other ++ setting was successfully changed, POSIX requires us to report ++ success. */ ++ if ((retval == 0) && (old_retval == 0)) ++ { ++ int save = errno; ++ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); ++ if (retval) ++ { ++ /* We cannot verify if the setting is ok. We don't return ++ an error (?). */ ++ __set_errno (save); ++ retval = 0; ++ } ++ else if ((k_termios_old.c_oflag != k_termios.c_oflag) || ++ (k_termios_old.c_lflag != k_termios.c_lflag) || ++ (k_termios_old.c_line != k_termios.c_line) || ++ ((k_termios_old.c_iflag | IBAUD0) != (k_termios.c_iflag | IBAUD0))) ++ { ++ /* Some other setting was successfully changed, which ++ means we should not return an error. */ ++ __set_errno (save); ++ retval = 0; ++ } ++ else if ((k_termios_old.c_cflag | (PARENB & CREAD & CSIZE)) != ++ (k_termios.c_cflag | (PARENB & CREAD & CSIZE))) ++ { ++ /* Some other c_cflag setting was successfully changed, which ++ means we should not return an error. */ ++ __set_errno (save); ++ retval = 0; ++ } ++ else if ((termios_p->c_cflag & (PARENB | CREAD)) ++ != (k_termios.c_cflag & (PARENB | CREAD)) ++ || ((termios_p->c_cflag & CSIZE) ++ && (termios_p->c_cflag & CSIZE) ++ != (k_termios.c_cflag & CSIZE))) ++ { ++ /* It looks like the Linux kernel silently changed the ++ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an ++ error. */ ++ __set_errno (EINVAL); ++ retval = -1; ++ } ++ } ++ return retval; + } + libc_hidden_def (tcsetattr) --- glibc-2.4.orig/debian/patches/hppa/submitted-sysdeps.diff +++ glibc-2.4/debian/patches/hppa/submitted-sysdeps.diff @@ -0,0 +1,932 @@ +# DP: Description: Make glibc-2.3.5 compile to enable hppa sysdeps +# and linuxthreads correctly again. +# DP: Related bugs: +# DP: Dpatch author: Jeff Bailey +# DP: Patch author: Carlos O'Donell +# DP: Upstream status: Pending +# DP: Status Details: +# DP: Date: 2005-07-17 + +--- elf/dl-sysdep.c 2004-12-14 15:30:41.000000000 -0500 ++++ elf/dl-sysdep.c 2004-12-14 15:30:29.000000000 -0500 +@@ -89,7 +89,7 @@ + #else + uid_t uid = 0; + gid_t gid = 0; +- unsigned int seen = 0; ++ int seen = 0; + # define set_seen_secure() (seen = -1) + # ifdef HAVE_AUX_XID + # define set_seen(tag) (tag) /* Evaluate for the side effects. */ +--- ports/sysdeps/hppa/atomicity.h 1969-12-31 19:00:00.000000000 -0500 ++++ ports/sysdeps/hppa/atomicity.h 2003-12-08 21:25:00.000000000 -0500 +@@ -0,0 +1,55 @@ ++/* Low-level functions for atomic operations. HP-PARISC version. ++ 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 Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _ATOMICITY_H ++#define _ATOMICITY_H 1 ++ ++#include ++ ++#warning stub atomicity functions are not atomic ++#warning CAO This will get implemented soon ++ ++static inline int ++__attribute__ ((unused)) ++exchange_and_add (volatile uint32_t *mem, int val) ++{ ++ int result = *mem; ++ *mem += val; ++ return result; ++} ++ ++static inline void ++__attribute__ ((unused)) ++atomic_add (volatile uint32_t *mem, int val) ++{ ++ *mem += val; ++} ++ ++static inline int ++__attribute__ ((unused)) ++compare_and_swap (volatile long int *p, long int oldval, long int newval) ++{ ++ if (*p != oldval) ++ return 0; ++ ++ *p = newval; ++ return 1; ++} ++ ++#endif /* atomicity.h */ +--- ports/sysdeps/hppa/bits/link.h 2005-01-28 14:39:49.000000000 -0500 ++++ ports/sysdeps/hppa/bits/link.h 2005-03-01 13:42:58.000000000 -0500 +@@ -0,0 +1,63 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along 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 ++# error "Never include directly; use instead." ++#endif ++ ++/* Registers for entry into PLT on hppa. */ ++typedef struct La_hppa_regs ++{ ++ uint32_t lr_r8; ++ uint32_t lr_r9; ++ uint32_t lr_r10; ++ uint32_t lr_r11; ++ uint32_t lr_gr [8]; ++ double lr_fr [8]; ++ uint32_t lr_unat; ++ uint32_t lr_sp; ++} La_hppa_regs; ++ ++/* Return values for calls from PLT on hppa. */ ++typedef struct La_hppa_retval ++{ ++ uint32_t lrv_r8; ++ uint32_t lrv_r9; ++ uint32_t lrv_r10; ++ uint32_t lrv_r11; ++ double lr_fr [8]; ++} La_hppa_retval; ++ ++ ++__BEGIN_DECLS ++ ++extern Elf32_Addr la_hppa_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx, ++ uintptr_t *__refcook, ++ uintptr_t *__defcook, ++ La_hppa_regs *__regs, ++ unsigned int *__flags, ++ const char *__symname, ++ long int *__framesizep); ++extern unsigned int la_hppa_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx, ++ uintptr_t *__refcook, ++ uintptr_t *__defcook, ++ const La_hppa_regs *__inregs, ++ La_hppa_retval *__outregs, ++ const char *symname); ++ ++__END_DECLS +--- ports/sysdeps/hppa/dl-trampoline.S 1969-12-31 19:00:00.000000000 -0500 ++++ ports/sysdeps/hppa/dl-trampoline.S 2005-04-05 15:51:55.000000000 -0400 +@@ -0,0 +1,194 @@ ++/* PLT trampolines. hppa version. ++ Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* This code gets called via the .plt stub, and is used in ++ dl-runtime.c to call the `_dl_fixup' function and then redirect ++ to the address it returns. `_dl_fixup' takes two ++ arguments, however `_dl_profile_fixup' takes a number of ++ parameters for use with library auditing (LA). ++ ++ WARNING: This template is also used by gcc's __cffc, and expects ++ that the "bl" for _dl_runtime_resolve exist at a particular offset. ++ Do not change this template without changing gcc, while the prefix ++ "bl" should fix everything so gcc finds the right spot, it will ++ slow down __cffc when it attempts to call fixup to resolve function ++ descriptor references. Please refer to gcc/gcc/config/pa/fptr.c ++ ++ Enter with r19 = reloc offset, r20 = got-8, r21 = fixup ltp. */ ++ ++ /* FAKE bl to provide gcc's __cffc with fixup loc. */ ++ .text ++ bl _dl_fixup, %r2 ++ .text ++ .align 4 ++ .global _dl_runtime_resolve ++ .type _dl_runtime_resolve,@function ++_dl_runtime_resolve: ++ .PROC ++ .CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=3 ++ .ENTRY ++ /* SAVE_RP says we do */ ++ stw %rp, -20(%sp) ++ ++ /* Save static link register */ ++ stw %r29,-16(%sp) ++ /* Save argument registers in the call stack frame. */ ++ stw %r26,-36(%sp) ++ stw %r25,-40(%sp) ++ stw %r24,-44(%sp) ++ stw %r23,-48(%sp) ++ ++ /* Build a call frame, and save structure pointer. */ ++ copy %sp, %r26 /* Copy previous sp */ ++ /* Save function result address (on entry) */ ++ stwm %r28,128(%sp) ++ ++ /* Save floating point argument registers */ ++ ldo -56(%sp),%r26 ++ fstd,ma %fr4,-8(%r26) ++ fstd,ma %fr5,-8(%r26) ++ fstd,ma %fr6,-8(%r26) ++ fstd %fr7,0(%r26) ++ ++ /* Fillin some frame info to follow ABI */ ++ stw %r21,-32(%sp) /* PIC register value */ ++ stw %r26,-4(%sp) /* Previous sp */ ++ ++ /* Set up args to fixup func, needs only two arguments */ ++ ldw 8+4(%r20),%r26 /* (1) got[1] == struct link_map */ ++ copy %r19,%r25 /* (2) reloc offset */ ++ ++ /* Call the real address resolver. */ ++ bl _dl_fixup,%rp ++ copy %r21,%r19 /* set fixup func ltp */ ++ ++ /* Load up the returned func descriptor */ ++ copy %ret0, %r22 ++ copy %ret1, %r19 ++ ++ /* Reload arguments fp args */ ++ ldo -80(%sp),%r26 ++ fldd,ma 8(%r26),%fr7 ++ fldd,ma 8(%r26),%fr6 ++ fldd,ma 8(%r26),%fr5 ++ fldd 0(%r26),%fr4 ++ ++ /* Adjust sp, and restore function result address*/ ++ ldwm -128(%sp),%r28 ++ ++ /* Reload static link register */ ++ ldw -16(%sp),%r29 ++ /* Reload general args */ ++ ldw -36(%sp),%r26 ++ ldw -40(%sp),%r25 ++ ldw -44(%sp),%r24 ++ ldw -48(%sp),%r23 ++ ++ /* Jump to new function, but return to previous function */ ++ bv %r0(%r22) ++ ldw -20(%sp),%rp ++ .EXIT ++ .PROCEND ++ .size _dl_runtime_resolve, . - _dl_runtime_resolve ++ ++ ++ /* FIXME: ++ Need to largely rewrite the bottom half of ++ this code in order to save and restore the ++ LA struct from the stack along with ++ interpreted parameters. ++ */ ++ .text ++ .align 4 ++ .global _dl_runtime_profile ++ .type _dl_runtime_profile,@function ++_dl_runtime_profile: ++ .PROC ++ .CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=3 ++ .ENTRY ++ ++ /* SAVE_RP says we do */ ++ stw %rp, -20(%sp) ++ ++ /* Save static link register */ ++ stw %r29,-16(%sp) ++ /* Save argument registers in the call stack frame. */ ++ stw %r26,-36(%sp) ++ stw %r25,-40(%sp) ++ stw %r24,-44(%sp) ++ stw %r23,-48(%sp) ++ ++ /* Build a call frame, and save structure pointer. */ ++ copy %sp, %r26 /* Copy previous sp */ ++ /* Save function result address (on entry) */ ++ stwm %r28,128(%sp) ++ ++ /* Save floating point argument registers */ ++ ldo -56(%sp),%r26 ++ fstd,ma %fr4,-8(%r26) ++ fstd,ma %fr5,-8(%r26) ++ fstd,ma %fr6,-8(%r26) ++ fstd %fr7,0(%r26) ++ ++ /* Fillin some frame info to follow ABI */ ++ stw %r21,-32(%sp) /* PIC register value */ ++ stw %r26,-4(%sp) /* Previous sp */ ++ ++ /* Set up args to fixup func, needs three arguments */ ++ ldw 8+4(%r20),%r26 /* (1) got[1] == struct link_map */ ++ copy %r19,%r25 /* (2) reloc offset */ ++ copy %rp,%r24 /* (3) profile_fixup needs rp */ ++ ++ /* Call the real address resolver. */ ++ bl _dl_profile_fixup,%rp ++ copy %r21,%r19 /* set fixup func ltp */ ++ ++ /* Load up the returned func descriptor */ ++ copy %ret0, %r22 ++ copy %ret1, %r19 ++ ++ /* Reload arguments fp args */ ++ ldo -80(%sp),%r26 ++ fldd,ma 8(%r26),%fr7 ++ fldd,ma 8(%r26),%fr6 ++ fldd,ma 8(%r26),%fr5 ++ fldd 0(%r26),%fr4 ++ ++ /* Adjust sp, and restore function result address*/ ++ ldwm -128(%sp),%r28 ++ ++ /* Reload static link register */ ++ ldw -16(%sp),%r29 ++ /* Reload general args */ ++ ldw -36(%sp),%r26 ++ ldw -40(%sp),%r25 ++ ldw -44(%sp),%r24 ++ ldw -48(%sp),%r23 ++ ++ /* Jump to new function, but return to previous function */ ++ bv %r0(%r22) ++ ldw -20(%sp),%rp ++ .EXIT ++ .PROCEND ++ .size _dl_runtime_profile, . - _dl_runtime_profile ++ ++ ++ +--- ports/sysdeps/hppa/fpu/libm-test-ulps 2003-03-22 19:52:10.000000000 -0500 ++++ ports/sysdeps/hppa/fpu/libm-test-ulps 2004-09-29 23:50:16.000000000 -0400 +@@ -1,6 +1,9 @@ + # Begin of automatic generation + + # atan2 ++Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994380": ++float: 6 ++ifloat: 6 + Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025": + float: 3 + ifloat: 3 +@@ -258,9 +261,6 @@ + ifloat: 1 + + # ctan +-Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": +-double: 1 +-idouble: 1 + Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": + double: 1 + idouble: 1 +@@ -479,6 +479,11 @@ + float: 1 + ifloat: 1 + ++# lround ++Test "lround (1071930.0008) == 1071930": ++double: -214511494 ++idouble: -214511494 ++ + # sincos + Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": + double: 1 +@@ -640,8 +645,8 @@ + + # Maximal error of functions: + Function: "atan2": +-float: 3 +-ifloat: 3 ++float: 6 ++ifloat: 6 + + Function: "atanh": + float: 1 +@@ -777,10 +782,6 @@ + float: 1 + ifloat: 1 + +-Function: Real part of "ctan": +-double: 1 +-idouble: 1 +- + Function: Imaginary part of "ctan": + double: 1 + idouble: 1 +--- ports/sysdeps/hppa/sysdep.h 2003-10-15 01:31:42.000000000 -0400 ++++ ports/sysdeps/hppa/sysdep.h 2004-11-01 01:51:58.000000000 -0500 +@@ -22,9 +22,8 @@ + #include + #include "config.h" + +-#ifndef ASM_LINE_SEP +-#define ASM_LINE_SEP ; +-#endif ++#undef ASM_LINE_SEP ++#define ASM_LINE_SEP ! + + #ifdef __ASSEMBLER__ + +@@ -51,13 +50,9 @@ + #define END(name) \ + .PROCEND + +- +-/* If compiled for profiling, call `mcount' at the start of each function. */ ++/* GCC does everything for us. */ + #ifdef PROF +-/* The mcount code relies on a normal frame pointer being on the stack +- to locate our caller, so push one just for its benefit. */ +-#define CALL_MCOUNT \ +- XXX ASM_LINE_SEP ++#define CALL_MCOUNT + #else + #define CALL_MCOUNT /* Do nothing. */ + #endif +--- ports/sysdeps/unix/sysv/linux/hppa/sysdep.c 2003-10-15 01:45:16.000000000 -0400 ++++ ports/sysdeps/unix/sysv/linux/hppa/sysdep.c 2004-09-20 14:04:24.000000000 -0400 +@@ -46,13 +46,13 @@ + { + register unsigned long int __res asm("r28"); + LOAD_ARGS_6 (arg0, arg1, arg2, arg3, arg4, arg5) +- asm volatile (STW_ASM_PIC ++ asm volatile (SAVE_ASM_PIC + " ble 0x100(%%sr2, %%r0) \n" + " copy %1, %%r20 \n" +- LDW_ASM_PIC ++ LOAD_ASM_PIC + : "=r" (__res) + : "r" (sysnum) ASM_ARGS_6 +- : CALL_CLOB_REGS CLOB_ARGS_6); ++ : "memory", CALL_CLOB_REGS CLOB_ARGS_6); + __sys_res = __res; + } + if ((unsigned long int) __sys_res >= (unsigned long int) -4095) +--- ports/sysdeps/unix/sysv/linux/hppa/sysdep.h 2003-11-03 12:18:38.000000000 -0500 ++++ ports/sysdeps/unix/sysv/linux/hppa/sysdep.h 2005-04-05 03:40:47.000000000 -0400 +@@ -24,26 +24,33 @@ + #include + #include "config.h" + +-#ifndef ASM_LINE_SEP +-# define ASM_LINE_SEP ; +-#endif ++#undef ASM_LINE_SEP ++#define ASM_LINE_SEP ! + + #undef SYS_ify + #define SYS_ify(syscall_name) (__NR_##syscall_name) + ++/* WARNING: TREG must be a callee saves register so ++ that it doesn't have to be restored after a call ++ to another function */ + #ifdef PIC +-/* WARNING: CANNOT BE USED IN A NOP! */ +-# define STW_PIC stw %r19, -32(%sr0, %sp) ASM_LINE_SEP +-# define LDW_PIC ldw -32(%sr0, %sp), %r19 ASM_LINE_SEP +-# define STW_ASM_PIC " copy %%r19, %%r4\n" +-# define LDW_ASM_PIC " copy %%r4, %%r19\n" +-# define USING_GR4 "%r4", ++# define TREG %r3 ++# define SAVE_PIC(SREG) copy %r19, SREG ASM_LINE_SEP ++# define LOAD_PIC(LREG) copy LREG, %r19 ASM_LINE_SEP ++/* Inline assembly defines */ ++# define TREG_ASM "%r4" /* Cant clobber r3, it holds framemarker */ ++# define SAVE_ASM_PIC " copy %%r19, %" TREG_ASM "\n" ++# define LOAD_ASM_PIC " copy %" TREG_ASM ", %%r19\n" ++# define USING_TREG TREG_ASM, + #else +-# define STW_PIC ASM_LINE_SEP +-# define LDW_PIC ASM_LINE_SEP +-# define STW_ASM_PIC " \n" +-# define LDW_ASM_PIC " \n" +-# define USING_GR4 ++# define TREG %r3 ++# define SAVE_PIC(SREG) nop ASM_LINE_SEP ++# define LOAD_PIC(LREG) nop ASM_LINE_SEP ++/* Inline assembly defines */ ++# define TREG_ASM ++# define SAVE_ASM_PIC "nop \n" ++# define LOAD_ASM_PIC "nop \n" ++# define USING_TREG + #endif + + #ifdef __ASSEMBLER__ +@@ -76,31 +83,73 @@ + + /* We don't want the label for the error handle to be global when we define + it here. */ +-#ifdef PIC ++/*#ifdef PIC + # define SYSCALL_ERROR_LABEL 0f + #else + # define SYSCALL_ERROR_LABEL syscall_error +-#endif ++#endif*/ ++ ++/* Argument manipulation from the stack for preparing to ++ make a syscall */ ++ ++#define DOARGS_0 /* nothing */ ++#define DOARGS_1 /* nothing */ ++#define DOARGS_2 /* nothing */ ++#define DOARGS_3 /* nothing */ ++#define DOARGS_4 /* nothing */ ++#define DOARGS_5 ldw -52(%sp), %r22 ASM_LINE_SEP ++#define DOARGS_6 DOARGS_5 ldw -56(%sp), %r21 ASM_LINE_SEP ++ ++#define UNDOARGS_0 /* nothing */ ++#define UNDOARGS_1 /* nothing */ ++#define UNDOARGS_2 /* nothing */ ++#define UNDOARGS_3 /* nothing */ ++#define UNDOARGS_4 /* nothing */ ++#define UNDOARGS_5 /* nothing */ ++#define UNDOARGS_6 /* nothing */ + + /* Define an entry point visible from C. + + There is currently a bug in gdb which prevents us from specifying + incomplete stabs information. Fake some entries here which specify + the current source file. */ +-#define ENTRY(name) \ +- .text ASM_LINE_SEP \ +- .export C_SYMBOL_NAME(name) ASM_LINE_SEP \ +- .type C_SYMBOL_NAME(name),@function ASM_LINE_SEP \ +- C_LABEL(name) ASM_LINE_SEP \ +- CALL_MCOUNT ASM_LINE_SEP ++#define ENTRY(name) \ ++ .text ASM_LINE_SEP \ ++ .align ALIGNARG(4) ASM_LINE_SEP \ ++ .export C_SYMBOL_NAME(name) ASM_LINE_SEP \ ++ .type C_SYMBOL_NAME(name),@function ASM_LINE_SEP \ ++ C_LABEL(name) ASM_LINE_SEP \ ++ .PROC ASM_LINE_SEP \ ++ .CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=3 ASM_LINE_SEP \ ++ .ENTRY ASM_LINE_SEP \ ++ /* SAVE_RP says we do */ ASM_LINE_SEP \ ++ stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \ ++ /*FIXME: Call mcount? (carefull with stack!) */ ++ ++/* Some syscall wrappers do not call other functions, and ++ hence are classified as leaf, so add NO_CALLS for gdb */ ++#define ENTRY_LEAF(name) \ ++ .text ASM_LINE_SEP \ ++ .align ALIGNARG(4) ASM_LINE_SEP \ ++ .export C_SYMBOL_NAME(name) ASM_LINE_SEP \ ++ .type C_SYMBOL_NAME(name),@function ASM_LINE_SEP \ ++ C_LABEL(name) ASM_LINE_SEP \ ++ .PROC ASM_LINE_SEP \ ++ .CALLINFO FRAME=64,NO_CALLS,SAVE_RP,ENTRY_GR=3 ASM_LINE_SEP \ ++ .ENTRY ASM_LINE_SEP \ ++ /* SAVE_RP says we do */ ASM_LINE_SEP \ ++ stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \ ++ /*FIXME: Call mcount? (carefull with stack!) */ + + #undef END + #define END(name) \ +-1: ASM_LINE_SEP \ +-.size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name) ASM_LINE_SEP +- +-/* If compiled for profiling, call `mcount' at the start of each function. */ +-/* No, don't bother. gcc will put the call in for us. */ ++ .EXIT ASM_LINE_SEP \ ++ .PROCEND ASM_LINE_SEP \ ++.size C_SYMBOL_NAME(name), .-C_SYMBOL_NAME(name) ASM_LINE_SEP ++ ++/* If compiled for profiling, call `mcount' at the start ++ of each function. No, don't bother. gcc will put the ++ call in for us. */ + #define CALL_MCOUNT /* Do nothing. */ + + /* syscall wrappers consist of +@@ -118,14 +167,16 @@ + */ + + #define PSEUDO(name, syscall_name, args) \ +- ENTRY (name) \ +- DO_CALL(syscall_name, args) ASM_LINE_SEP \ ++ ENTRY (name) ASM_LINE_SEP \ ++ /* If necc. load args from stack */ ASM_LINE_SEP \ ++ DOARGS_##args ASM_LINE_SEP \ ++ DO_CALL (syscall_name, args) ASM_LINE_SEP \ ++ UNDOARGS_##args ASM_LINE_SEP \ + nop ASM_LINE_SEP + + #define ret \ +- /* Return value set by ERRNO code */ ASM_LINE_SEP \ +- bv 0(2) ASM_LINE_SEP \ +- nop ASM_LINE_SEP ++ /* Return value set by ERRNO code */ ASM_LINE_SEP \ ++ bv,n 0(2) ASM_LINE_SEP + + #undef PSEUDO_END + #define PSEUDO_END(name) \ +@@ -133,8 +184,10 @@ + + /* We don't set the errno on the return from the syscall */ + #define PSEUDO_NOERRNO(name, syscall_name, args) \ +- ENTRY (name) \ +- DO_CALL_NOERRNO(syscall_name, args) ASM_LINE_SEP \ ++ ENTRY_LEAF (name) ASM_LINE_SEP \ ++ DOARGS_##args ASM_LINE_SEP \ ++ DO_CALL_NOERRNO (syscall_name, args) ASM_LINE_SEP \ ++ UNDOARGS_##args ASM_LINE_SEP \ + nop ASM_LINE_SEP + + #define ret_NOERRNO ret +@@ -146,9 +199,11 @@ + /* This has to return the error value */ + #undef PSEUDO_ERRVAL + #define PSEUDO_ERRVAL(name, syscall_name, args) \ +- ENTRY(name) \ +- DO_CALL_ERRVAL(syscall_name, args) ASM_LINE_SEP \ +- nop ASM_LINE_SEP ++ ENTRY_LEAF (name) ASM_LINE_SEP \ ++ DOARGS_##args ASM_LINE_SEP \ ++ DO_CALL_ERRVAL (syscall_name, args) ASM_LINE_SEP \ ++ UNDOARGS_##args ASM_LINE_SEP \ ++ nop ASM_LINE_SEP + + #define ret_ERRVAL ret + +@@ -161,7 +216,8 @@ + #define SYSCALL_PIC_SETUP /* Nothing. */ + + +-/* All the syscall assembly macros rely on finding the approriate ++/* FIXME: This comment is not true. ++ * All the syscall assembly macros rely on finding the approriate + SYSCALL_ERROR_LABEL or rather HANDLER. */ + + /* int * __errno_location(void) so you have to store your value +@@ -209,8 +265,8 @@ + arg 2 gr25 + arg 3 gr24 + arg 4 gr23 +- arg 5 -52(gr30) +- arg 6 -56(gr30) ++ arg 5 -52(sp) ++ arg 6 -56(sp) + + gr22 and gr21 are caller-saves, so we can just load the arguments + there and generally be happy. */ +@@ -219,46 +275,48 @@ + * is intended to mimic the if (__sys_res...) + * code inside INLINE_SYSCALL + */ ++#define NO_ERROR -0x1000 + + #undef DO_CALL + #define DO_CALL(syscall_name, args) \ +- DOARGS_##args ASM_LINE_SEP \ +- STW_PIC ASM_LINE_SEP \ ++ copy TREG,%r1 ASM_LINE_SEP \ ++ copy %sp,TREG ASM_LINE_SEP \ ++ /* Create a frame */ ASM_LINE_SEP \ ++ stwm %r1, 64(%sp) ASM_LINE_SEP \ ++ stw %rp, -20(%sp) ASM_LINE_SEP \ ++ stw TREG, -4(%sp) ASM_LINE_SEP \ ++ /* Save r19 */ ASM_LINE_SEP \ ++ SAVE_PIC(TREG) ASM_LINE_SEP \ + /* Do syscall, delay loads # */ ASM_LINE_SEP \ + ble 0x100(%sr2,%r0) ASM_LINE_SEP \ + ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \ +- ldi -0x1000,%r1 ASM_LINE_SEP \ +- cmpb,>>=,n %r1,%ret0,0f ASM_LINE_SEP \ +- /* save rp or we get lost */ ASM_LINE_SEP \ +- stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \ +- /* Restore r19 from frame */ ASM_LINE_SEP \ +- LDW_PIC ASM_LINE_SEP \ +- stw %ret0, -24(%sr0,%sp) ASM_LINE_SEP \ ++ ldi NO_ERROR,%r1 ASM_LINE_SEP \ ++ cmpb,>>=,n %r1,%ret0,L(pre_end) ASM_LINE_SEP \ ++ /* Restore r19 from TREG */ ASM_LINE_SEP \ ++ LOAD_PIC(TREG) /* delay */ ASM_LINE_SEP \ + SYSCALL_ERROR_HANDLER ASM_LINE_SEP \ +- /* create frame */ ASM_LINE_SEP \ +- ldo 64(%sp), %sp ASM_LINE_SEP \ +- ldo -64(%sp), %sp ASM_LINE_SEP \ ++ /* Use TREG for temp storage */ ASM_LINE_SEP \ ++ copy %ret0, TREG /* delay */ ASM_LINE_SEP \ + /* OPTIMIZE: Don't reload r19 */ ASM_LINE_SEP \ + /* do a -1*syscall_ret0 */ ASM_LINE_SEP \ +- ldw -24(%sr0,%sp), %r26 ASM_LINE_SEP \ +- sub %r0, %r26, %r26 ASM_LINE_SEP \ ++ sub %r0, TREG, TREG ASM_LINE_SEP \ + /* Store into errno location */ ASM_LINE_SEP \ +- stw %r26, 0(%sr0,%ret0) ASM_LINE_SEP \ ++ stw TREG, 0(%sr0,%ret0) ASM_LINE_SEP \ + /* return -1 as error */ ASM_LINE_SEP \ + ldo -1(%r0), %ret0 ASM_LINE_SEP \ +- ldw -20(%sr0,%sp), %rp ASM_LINE_SEP \ +-0: ASM_LINE_SEP \ +- UNDOARGS_##args ASM_LINE_SEP ++L(pre_end): ASM_LINE_SEP \ ++ /* Restore return pointer */ ASM_LINE_SEP \ ++ ldw -84(%sp),%rp ASM_LINE_SEP \ ++ /* Restore our frame, restoring TREG */ ASM_LINE_SEP \ ++ ldwm -64(%sp), TREG ASM_LINE_SEP + + /* We do nothing with the return, except hand it back to someone else */ + #undef DO_CALL_NOERRNO + #define DO_CALL_NOERRNO(syscall_name, args) \ +- DOARGS_##args \ + /* No need to store r19 */ ASM_LINE_SEP \ + ble 0x100(%sr2,%r0) ASM_LINE_SEP \ + ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \ +- /* Caller will restore r19 */ ASM_LINE_SEP \ +- UNDOARGS_##args ++ /* Caller will restore r19 */ ASM_LINE_SEP + + /* Here, we return the ERRVAL in assembly, note we don't call the + error handler function, but we do 'negate' the return _IF_ +@@ -266,34 +324,15 @@ + + #undef DO_CALL_ERRVAL + #define DO_CALL_ERRVAL(syscall_name, args) \ +- DOARGS_##args ASM_LINE_SEP \ + /* No need to store r19 */ ASM_LINE_SEP \ + ble 0x100(%sr2,%r0) ASM_LINE_SEP \ + ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \ + /* Caller will restore r19 */ ASM_LINE_SEP \ +- ldi -0x1000,%r1 ASM_LINE_SEP \ ++ ldi NO_ERROR,%r1 ASM_LINE_SEP \ + cmpb,>>=,n %r1,%ret0,0f ASM_LINE_SEP \ + sub %r0, %ret0, %ret0 ASM_LINE_SEP \ +-0: ASM_LINE_SEP \ +- UNDOARGS_##args ASM_LINE_SEP ++0: ASM_LINE_SEP + +-#define DOARGS_0 /* nothing */ +-#define DOARGS_1 /* nothing */ +-#define DOARGS_2 /* nothing */ +-#define DOARGS_3 /* nothing */ +-#define DOARGS_4 /* nothing */ +-#define DOARGS_5 ldw -52(%r30), %r22 ASM_LINE_SEP +-#define DOARGS_6 ldw -52(%r30), %r22 ASM_LINE_SEP \ +- ldw -56(%r30), %r21 ASM_LINE_SEP +- +- +-#define UNDOARGS_0 /* nothing */ +-#define UNDOARGS_1 /* nothing */ +-#define UNDOARGS_2 /* nothing */ +-#define UNDOARGS_3 /* nothing */ +-#define UNDOARGS_4 /* nothing */ +-#define UNDOARGS_5 /* nothing */ +-#define UNDOARGS_6 /* nothing */ + + #else + +@@ -305,27 +344,28 @@ + registers r20 -> r26 will conflict with the list so they + are treated specially. Although r19 is clobbered by the syscall + we cannot say this because it would violate ABI, thus we say +- r4 is clobbered and use that register to save/restore r19 ++ TREG is clobbered and use that register to save/restore r19 + across the syscall. */ + +-#define CALL_CLOB_REGS "%r1", "%r2", USING_GR4 \ ++#define CALL_CLOB_REGS "%r1", "%r2", USING_TREG \ + "%r20", "%r29", "%r31" + + #undef INLINE_SYSCALL +-#define INLINE_SYSCALL(name, nr, args...) ({ \ ++#define INLINE_SYSCALL(name, nr, args...) \ ++({ \ + long __sys_res; \ + { \ + register unsigned long __res asm("r28"); \ + LOAD_ARGS_##nr(args) \ +- /* FIXME: HACK stw/ldw r19 around syscall */ \ ++ /* FIXME: HACK save/load r19 around syscall */ \ + asm volatile( \ +- STW_ASM_PIC \ ++ SAVE_ASM_PIC \ + " ble 0x100(%%sr2, %%r0)\n" \ + " ldi %1, %%r20\n" \ +- LDW_ASM_PIC \ ++ LOAD_ASM_PIC \ + : "=r" (__res) \ + : "i" (SYS_ify(name)) ASM_ARGS_##nr \ +- : CALL_CLOB_REGS CLOB_ARGS_##nr \ ++ : "memory", CALL_CLOB_REGS CLOB_ARGS_##nr \ + ); \ + __sys_res = (long)__res; \ + } \ +@@ -339,8 +379,8 @@ + /* INTERNAL_SYSCALL_DECL - Allows us to setup some function static + value to use within the context of the syscall + INTERNAL_SYSCALL_ERROR_P - Returns 0 if it wasn't an error, 1 otherwise +- You are allowed to use the syscall result (val) and the DECL error variable +- to determine what went wrong. ++ You are allowed to use the syscall result (val) and the DECL error ++ variable to determine what went wrong. + INTERLAL_SYSCALL_ERRNO - Munges the val/err pair into the error number. + In our case we just flip the sign. */ + +@@ -357,46 +397,46 @@ + + /* Similar to INLINE_SYSCALL but we don't set errno */ + #undef INTERNAL_SYSCALL +-#define INTERNAL_SYSCALL(name, err, nr, args...) \ +-({ \ +- long __sys_res; \ +- { \ +- register unsigned long __res asm("r28"); \ +- LOAD_ARGS_##nr(args) \ +- /* FIXME: HACK stw/ldw r19 around syscall */ \ +- asm volatile( \ +- STW_ASM_PIC \ +- " ble 0x100(%%sr2, %%r0)\n" \ +- " ldi %1, %%r20\n" \ +- LDW_ASM_PIC \ +- : "=r" (__res) \ +- : "i" (SYS_ify(name)) ASM_ARGS_##nr \ +- : CALL_CLOB_REGS CLOB_ARGS_##nr \ +- ); \ +- __sys_res = (long)__res; \ +- } \ +- __sys_res; \ ++#define INTERNAL_SYSCALL(name, err, nr, args...) \ ++({ \ ++ long __sys_res; \ ++ { \ ++ register unsigned long __res asm("r28"); \ ++ LOAD_ARGS_##nr(args) \ ++ /* FIXME: HACK save/load r19 around syscall */ \ ++ asm volatile( \ ++ SAVE_ASM_PIC \ ++ " ble 0x100(%%sr2, %%r0)\n" \ ++ " ldi %1, %%r20\n" \ ++ LOAD_ASM_PIC \ ++ : "=r" (__res) \ ++ : "i" (SYS_ify(name)) ASM_ARGS_##nr \ ++ : "memory", CALL_CLOB_REGS CLOB_ARGS_##nr \ ++ ); \ ++ __sys_res = (long)__res; \ ++ } \ ++ __sys_res; \ + }) + + #define LOAD_ARGS_0() +-#define LOAD_ARGS_1(r26) \ +- register unsigned long __r26 __asm__("r26") = (unsigned long)(r26); \ +- LOAD_ARGS_0() +-#define LOAD_ARGS_2(r26,r25) \ +- register unsigned long __r25 __asm__("r25") = (unsigned long)(r25); \ +- LOAD_ARGS_1(r26) +-#define LOAD_ARGS_3(r26,r25,r24) \ +- register unsigned long __r24 __asm__("r24") = (unsigned long)(r24); \ +- LOAD_ARGS_2(r26,r25) +-#define LOAD_ARGS_4(r26,r25,r24,r23) \ +- register unsigned long __r23 __asm__("r23") = (unsigned long)(r23); \ +- LOAD_ARGS_3(r26,r25,r24) +-#define LOAD_ARGS_5(r26,r25,r24,r23,r22) \ +- register unsigned long __r22 __asm__("r22") = (unsigned long)(r22); \ +- LOAD_ARGS_4(r26,r25,r24,r23) +-#define LOAD_ARGS_6(r26,r25,r24,r23,r22,r21) \ +- register unsigned long __r21 __asm__("r21") = (unsigned long)(r21); \ +- LOAD_ARGS_5(r26,r25,r24,r23,r22) ++#define LOAD_ARGS_1(r26) \ ++ register unsigned long __r26 __asm__("r26") = (unsigned long)(r26); \ ++ LOAD_ARGS_0() ++#define LOAD_ARGS_2(r26,r25) \ ++ register unsigned long __r25 __asm__("r25") = (unsigned long)(r25); \ ++ LOAD_ARGS_1(r26) ++#define LOAD_ARGS_3(r26,r25,r24) \ ++ register unsigned long __r24 __asm__("r24") = (unsigned long)(r24); \ ++ LOAD_ARGS_2(r26,r25) ++#define LOAD_ARGS_4(r26,r25,r24,r23) \ ++ register unsigned long __r23 __asm__("r23") = (unsigned long)(r23); \ ++ LOAD_ARGS_3(r26,r25,r24) ++#define LOAD_ARGS_5(r26,r25,r24,r23,r22) \ ++ register unsigned long __r22 __asm__("r22") = (unsigned long)(r22); \ ++ LOAD_ARGS_4(r26,r25,r24,r23) ++#define LOAD_ARGS_6(r26,r25,r24,r23,r22,r21) \ ++ register unsigned long __r21 __asm__("r21") = (unsigned long)(r21); \ ++ LOAD_ARGS_5(r26,r25,r24,r23,r22) + + /* Even with zero args we use r20 for the syscall number */ + #define ASM_ARGS_0 +--- sysdeps/unix/sysv/linux/posix_fadvise.c 2003-08-16 20:36:22.000000000 -0400 ++++ sysdeps/unix/sysv/linux/posix_fadvise.c 2004-09-26 22:45:33.000000000 -0400 +@@ -35,6 +35,19 @@ + return INTERNAL_SYSCALL_ERRNO (ret, err); + return 0; + #else ++# ifdef __NR_fadvise64_64 ++ INTERNAL_SYSCALL_DECL (err); ++ int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, ++ __LONG_LONG_PAIR ((long) (offset >> 31), ++ (long) offset), ++ __LONG_LONG_PAIR ((long) (len >> 31), ++ (long) len), ++ advise); ++ if (INTERNAL_SYSCALL_ERROR_P (ret, err)) ++ return INTERNAL_SYSCALL_ERRNO (ret, err); ++ return 0; ++# else + return ENOSYS; ++# endif + #endif + } +--- ports/sysdeps/hppa/dl-lookupcfg.h 2005-05-15 20:36:10.383193082 -0600 ++++ ports/sysdeps/hppa/dl-lookupcfg.h 2005-05-15 21:44:07.543952666 -0600 +@@ -63,3 +63,15 @@ + ((Elf32_Addr)(addr) & 2 ? (addr) : DL_AUTO_FUNCTION_ADDRESS (map, addr)) + #define DL_DT_FINI_ADDRESS(map, addr) \ + ((Elf32_Addr)(addr) & 2 ? (addr) : DL_AUTO_FUNCTION_ADDRESS (map, addr)) ++ ++/* The type of the return value of fixup/profile_fixup */ ++#define DL_FIXUP_VALUE_TYPE struct fdesc ++ ++/* Construct a fixup value from the address and linkmap */ ++#define DL_FIXUP_MAKE_VALUE(map, addr) \ ++ ((struct fdesc) { (addr), (map)->l_info[DT_PLTGOT]->d_un.d_ptr }) ++ ++/* Extract the code address from a fixup value */ ++#define DL_FIXUP_VALUE_CODE_ADDR(value) ((value).ip) ++#define DL_FIXUP_VALUE_ADDR(value) ((uintptr_t) &(value)) ++#define DL_FIXUP_ADDR_VALUE(addr) (*(struct fdesc *) (addr)) --- glibc-2.4.orig/debian/patches/hppa/cvs-no-ldbl-128.diff +++ glibc-2.4/debian/patches/hppa/cvs-no-ldbl-128.diff @@ -0,0 +1,20 @@ +We do not have a 128-bit long double implementation for PA, so do +not imply that we need the 128-bit long double support in glibc. +We will likely define long double equivalent to double. + +2005-06-18 Carlos O'Donell + + * sysdeps/hppa/hppa1.1/Implies: Remove ldbl-128. + +=================================================================== +RCS file: /var/lib/cvs/glibc/sysdeps/hppa/hppa1.1/Implies,v +retrieving revision 1.2 +retrieving revision 1.3 +diff -u -r1.2 -r1.3 +--- ports/sysdeps/hppa/hppa1.1/Implies 2005/06/08 20:32:10 1.2 ++++ ports/sysdeps/hppa/hppa1.1/Implies 2005/07/18 04:32:31 1.3 +@@ -1,4 +1,3 @@ + wordsize-32 + ieee754/flt-32 + ieee754/dbl-64 +-ieee754/ldbl-128 --- glibc-2.4.orig/debian/patches/hppa/submitted-fpu.diff +++ glibc-2.4/debian/patches/hppa/submitted-fpu.diff @@ -0,0 +1,76 @@ +# DP: Description: hppa floating point exception handling fix +# DP: Related bugs: Debian #342545 +# DP: Dpatch author: Randolph Chung +# DP: Patch author: Randolph Chung +# DP: Upstream status: Pending +# DP: Status Details: to be merged by Carlos +# DP: Date: Sun, 15 Jan 2006 + +diff -uNr ports/sysdeps/hppa/fpu.orig/fegetenv.c ports/sysdeps/hppa/fpu/fegetenv.c +--- ports/sysdeps/hppa/fpu.orig/fegetenv.c 2006-01-14 10:17:19.000000000 -0800 ++++ ports/sysdeps/hppa/fpu/fegetenv.c 2006-01-14 10:19:08.000000000 -0800 +@@ -27,10 +27,7 @@ + unsigned long long buf[4], *bufptr = buf; + + __asm__ ( +- "fstd,ma %%fr0,8(%1)\n" +- "fstd,ma %%fr1,8(%1)\n" +- "fstd,ma %%fr2,8(%1)\n" +- "fstd %%fr3,0(%1)\n" ++ "fstd %%fr0,0(%1)\n" + : "=m" (buf), "+r" (bufptr)); + memcpy (envp, buf, sizeof (*envp)); + return 0; +diff -uNr ports/sysdeps/hppa/fpu.orig/feholdexcpt.c ports/sysdeps/hppa/fpu/feholdexcpt.c +--- ports/sysdeps/hppa/fpu.orig/feholdexcpt.c 2006-01-14 10:17:19.000000000 -0800 ++++ ports/sysdeps/hppa/fpu/feholdexcpt.c 2006-01-14 10:20:21.000000000 -0800 +@@ -30,10 +30,7 @@ + /* Store the environment. */ + bufptr = clear.buf; + __asm__ ( +- "fstd,ma %%fr0,8(%1)\n" +- "fstd,ma %%fr1,8(%1)\n" +- "fstd,ma %%fr2,8(%1)\n" +- "fstd %%fr3,0(%1)\n" ++ "fstd %%fr0,0(%1)\n" + : "=m" (clear), "+r" (bufptr)); + memcpy (envp, &clear.env, sizeof (fenv_t)); + +@@ -47,10 +44,7 @@ + /* Load the new environment. */ + bufptr = clear.buf; + __asm__ ( +- "fldd,ma 8(%0),%%fr0\n" +- "fldd,ma 8(%0),%%fr1\n" +- "fldd,ma 8(%0),%%fr2\n" +- "fldd 0(%0),%%fr3\n" ++ "fldd 0(%0),%%fr0\n" + : : "r" (bufptr), "m" (clear)); + + return 0; +diff -uNr ports/sysdeps/hppa/fpu.orig/fesetenv.c ports/sysdeps/hppa/fpu/fesetenv.c +--- ports/sysdeps/hppa/fpu.orig/fesetenv.c 2006-01-14 10:17:19.000000000 -0800 ++++ ports/sysdeps/hppa/fpu/fesetenv.c 2006-01-14 10:20:44.000000000 -0800 +@@ -34,10 +34,7 @@ + we want to use from the environment specified by the parameter. */ + bufptr = temp.buf; + __asm__ ( +- "fstd,ma %%fr0,8(%1)\n" +- "fstd,ma %%fr1,8(%1)\n" +- "fstd,ma %%fr2,8(%1)\n" +- "fstd %%fr3,0(%1)\n" ++ "fstd %%fr0,0(%1)\n" + : "=m" (temp), "+r" (bufptr)); + + temp.env.__status_word &= ~(FE_ALL_EXCEPT +@@ -56,9 +53,6 @@ + /* Load the new environment. */ + bufptr = temp.buf; + __asm__ ( +- "fldd,ma -8(%1),%%fr3\n" +- "fldd,ma -8(%1),%%fr2\n" +- "fldd,ma -8(%1),%%fr1\n" + "fldd 0(%1),%%fr0\n" + : "=m" (temp), "+r" (bufptr)); + + --- glibc-2.4.orig/debian/patches/hppa/local-remove-mallocdef.diff +++ glibc-2.4/debian/patches/hppa/local-remove-mallocdef.diff @@ -0,0 +1,85 @@ +# DP: Description: malloc-machine.h should be removed until spinlock ldcw +# fix is applied. workaround for compilation. +# DP: Related bugs: +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: GOTO Masanori +# DP: Upstream status: Debian-Specific +# DP: Status Details: +# DP: Date: 2005-03-09 + +--- linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h 15 Oct 2003 04:40:10 -0000 1.1 ++++ /dev/null 9 Mar 2005 06:45:46 -0000 +@@ -1,73 +0,0 @@ +-/* HP-PARISC macro definitions for mutexes, thread-specific data +- and parameters for malloc. +- Copyright (C) 2003 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Carlos O'Donell , 2003. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#ifndef _MALLOC_MACHINE_H +-#define _MALLOC_MACHINE_H +- +-#undef thread_atfork_static +- +-#include +-#include +- +-__libc_lock_define (typedef, mutex_t) +- +-/* Since our lock structure does not tolerate being initialized to zero, we must +- modify the standard function calls made by malloc */ +-# define mutex_init(m) \ +- __libc_maybe_call (__pthread_mutex_init, (m, NULL), \ +- (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT),(*(int *)(m))) ) +-# define mutex_lock(m) \ +- __libc_maybe_call (__pthread_mutex_lock, (m), \ +- (__load_and_clear(&((m)->__m_lock.__spinlock)), 0)) +-# define mutex_trylock(m) \ +- __libc_maybe_call (__pthread_mutex_trylock, (m), \ +- (*(int *)(m) ? 1 : (__load_and_clear(&((m)->__m_lock.__spinlock)), 0))) +-# define mutex_unlock(m) \ +- __libc_maybe_call (__pthread_mutex_unlock, (m), \ +- (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT), (*(int *)(m))) ) +- +-/* This is defined by newer gcc version unique for each module. */ +-extern void *__dso_handle __attribute__ ((__weak__)); +- +-#include +- +-#ifdef SHARED +-# define thread_atfork(prepare, parent, child) \ +- __register_atfork (prepare, parent, child, __dso_handle) +-#else +-# define thread_atfork(prepare, parent, child) \ +- __register_atfork (prepare, parent, child, \ +- &__dso_handle == NULL ? NULL : __dso_handle) +-#endif +- +-/* thread specific data for glibc */ +- +-#include +- +-typedef int tsd_key_t[1]; /* no key data structure, libc magic does it */ +-__libc_tsd_define (static, MALLOC) /* declaration/common definition */ +-#define tsd_key_create(key, destr) ((void) (key)) +-#define tsd_setspecific(key, data) __libc_tsd_set (MALLOC, (data)) +-#define tsd_getspecific(key, vptr) ((vptr) = __libc_tsd_get (MALLOC)) +- +-#include +- +-#endif /* !defined(_MALLOC_MACHINE_H) */ --- glibc-2.4.orig/debian/patches/hppa/cvs-pie-relocs.diff +++ glibc-2.4/debian/patches/hppa/cvs-pie-relocs.diff @@ -0,0 +1,120 @@ +2005-06-10 Randolph Chung + + * elf/elf.h (R_PARISC_PLABEL21L, R_PARISC_PLABEL14R): Define. + * sysdeps/hppa/dl-machine.h (reassemble_21, reassemble_14): Define. + (elf_machine_rela): Handle R_PARISC_DIR21L/14R and + R_PARISC_PLABEL21L/14R relocations. + +=================================================================== +RCS file: /var/lib/cvs/glibc/elf/elf.h,v +retrieving revision 1.3 +retrieving revision 1.4 +diff -u -r1.3 -r1.4 +--- elf/elf.h 2005/06/09 01:14:04 1.3 ++++ elf/elf.h 2005/06/10 23:41:20 1.4 +@@ -1703,6 +1703,8 @@ + #define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */ + #define R_PARISC_FPTR64 64 /* 64 bits function address. */ + #define R_PARISC_PLABEL32 65 /* 32 bits function address. */ ++#define R_PARISC_PLABEL21L 66 /* Left 21 bits of fct ptr. */ ++#define R_PARISC_PLABEL14R 70 /* Left 21 bits of fct ptr. */ + #define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */ + #define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */ + #define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */ + +=================================================================== +RCS file: /var/lib/cvs/glibc/sysdeps/hppa/dl-machine.h,v +retrieving revision 1.3 +retrieving revision 1.4 +diff -u -r1.3 -r1.4 +--- ports/sysdeps/hppa/dl-machine.h 2005/06/09 04:27:13 1.3 ++++ ports/sysdeps/hppa/dl-machine.h 2005/06/10 23:41:20 1.4 +@@ -236,7 +236,8 @@ + } + else + { +- if (_dl_name_match_p (GLRO(dl_profile), l)) ++ if (GLRO(dl_profile) != NULL ++ && _dl_name_match_p (GLRO(dl_profile), l)) + { + /* This is the object we are looking for. Say that + we really want profiling and the timers are +@@ -579,6 +580,18 @@ + /* These are only actually used where RESOLVE_MAP is defined, anyway. */ + #ifdef RESOLVE_MAP + ++ ++#define reassemble_21(as21) \ ++ ( (((as21) & 0x100000) >> 20) \ ++ | (((as21) & 0x0ffe00) >> 8) \ ++ | (((as21) & 0x000180) << 7) \ ++ | (((as21) & 0x00007c) << 14) \ ++ | (((as21) & 0x000003) << 12)) ++ ++#define reassemble_14(as14) \ ++ ( (((as14) & 0x1fff) << 1) \ ++ | (((as14) & 0x2000) >> 13)) ++ + auto void __attribute__((always_inline)) + elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, + const Elf32_Sym *sym, const struct r_found_version *version, +@@ -635,6 +648,27 @@ + } + break; + ++ case R_PARISC_DIR21L: ++ { ++ unsigned int insn = *(unsigned int *)reloc_addr; ++ value = sym_map->l_addr + sym->st_value ++ + ((reloc->r_addend + 0x1000) & -0x2000); ++ value = value >> 11; ++ insn = (insn &~ 0x1fffff) | reassemble_21 (value); ++ *(unsigned int *)reloc_addr = insn; ++ } ++ return; ++ ++ case R_PARISC_DIR14R: ++ { ++ unsigned int insn = *(unsigned int *)reloc_addr; ++ value = ((sym_map->l_addr + sym->st_value) & 0x7ff) ++ + (((reloc->r_addend & 0x1fff) ^ 0x1000) - 0x1000); ++ insn = (insn &~ 0x3fff) | reassemble_14 (value); ++ *(unsigned int *)reloc_addr = insn; ++ } ++ return; ++ + case R_PARISC_PLABEL32: + /* Easy rule: If there is a symbol and it is global, then we + need to make a dynamic function descriptor. Otherwise we +@@ -653,6 +687,31 @@ + value = (Elf32_Addr)((unsigned int)_dl_make_fptr (sym_map, sym, value) | 2); + break; + ++ case R_PARISC_PLABEL21L: ++ case R_PARISC_PLABEL14R: ++ { ++ unsigned int insn = *(unsigned int *)reloc_addr; ++ ++ if (__builtin_expect (sym == NULL, 0)) ++ break; ++ ++ value = (Elf32_Addr)((unsigned int)_dl_make_fptr (sym_map, sym, value) | 2); ++ ++ if (r_type == R_PARISC_PLABEL21L) ++ { ++ value >>= 11; ++ insn = (insn &~ 0x1fffff) | reassemble_21 (value); ++ } ++ else ++ { ++ value &= 0x7ff; ++ insn = (insn &~ 0x3fff) | reassemble_14 (value); ++ } ++ ++ *(unsigned int *)reloc_addr = insn; ++ } ++ return; ++ + case R_PARISC_IPLT: + if (__builtin_expect (sym_map != NULL, 1)) + { --- glibc-2.4.orig/debian/patches/hppa/submitted-lt.diff +++ glibc-2.4/debian/patches/hppa/submitted-lt.diff @@ -0,0 +1,485 @@ +# DP: Description: Make glibc-2.3.5 compile to enable hppa linuxthreads +# correctly again. +# DP: Related bugs: +# DP: Dpatch author: Jeff Bailey +# DP: Patch author: Carlos O'Donell +# DP: Upstream status: Pending +# DP: Status Details: +# DP: Date: 2005-07-17 + +--- libc-orig/linuxthreads/descr.h 2005-02-16 10:14:12.000000000 -0500 ++++ libc/linuxthreads/descr.h 2005-02-16 10:11:09.000000000 -0500 +@@ -71,7 +71,7 @@ + /* Atomic counter made possible by compare_and_swap */ + struct pthread_atomic { + long p_count; +- int p_spinlock; ++ __atomic_lock_t p_spinlock; + }; + + +--- libc-orig/linuxthreads/oldsemaphore.c 2004-04-25 23:01:18.000000000 -0400 ++++ libc/linuxthreads/oldsemaphore.c 2004-04-25 22:51:35.000000000 -0400 +@@ -31,7 +31,7 @@ + + typedef struct { + long int sem_status; +- int sem_spinlock; ++ __atomic_lock_t sem_spinlock; + } old_sem_t; + + extern int __old_sem_init (old_sem_t *__sem, int __pshared, unsigned int __value); +--- libc-orig/linuxthreads/pt-machine.c 2002-08-26 18:39:45.000000000 -0400 ++++ libc/linuxthreads/pt-machine.c 2003-12-08 21:24:59.000000000 -0500 +@@ -19,7 +19,9 @@ + + #define PT_EI + +-extern long int testandset (int *spinlock); ++#include ++ ++extern long int testandset (__atomic_lock_t *spinlock); + extern int __compare_and_swap (long int *p, long int oldval, long int newval); + + #include +--- libc-orig/linuxthreads/pthread.c 2005-01-28 14:39:43.000000000 -0500 ++++ libc/linuxthreads/pthread.c 2005-01-28 14:15:29.000000000 -0500 +@@ -301,7 +301,7 @@ + pthread_descr self; + + /* First of all init __pthread_handles[0] and [1] if needed. */ +-# if __LT_SPINLOCK_INIT != 0 ++# ifdef __LT_INITIALIZER_NOT_ZERO + __pthread_handles[0].h_lock = __LOCK_INITIALIZER; + __pthread_handles[1].h_lock = __LOCK_INITIALIZER; + # endif +@@ -371,7 +371,7 @@ + # endif + /* self->p_start_args need not be initialized, it's all zero. */ + self->p_userstack = 1; +-# if __LT_SPINLOCK_INIT != 0 ++# ifdef __LT_INITIALIZER_NOT_ZERO + self->p_resume_count = (struct pthread_atomic) __ATOMIC_INITIALIZER; + # endif + self->p_alloca_cutoff = __MAX_ALLOCA_CUTOFF; +@@ -385,7 +385,7 @@ + #else /* USE_TLS */ + + /* First of all init __pthread_handles[0] and [1]. */ +-# if __LT_SPINLOCK_INIT != 0 ++# ifdef __LT_INITIALIZER_NOT_ZERO + __pthread_handles[0].h_lock = __LOCK_INITIALIZER; + __pthread_handles[1].h_lock = __LOCK_INITIALIZER; + # endif +@@ -688,7 +688,7 @@ + # endif + mgr->p_start_args = (struct pthread_start_args) PTHREAD_START_ARGS_INITIALIZER(__pthread_manager); + mgr->p_nr = 1; +-# if __LT_SPINLOCK_INIT != 0 ++# ifdef __LT_INITIALIZER_NOT_ZERO + self->p_resume_count = (struct pthread_atomic) __ATOMIC_INITIALIZER; + # endif + mgr->p_alloca_cutoff = PTHREAD_STACK_MIN / 4; +--- libc-orig/linuxthreads/spinlock.c 2004-01-30 14:13:45.000000000 -0500 ++++ libc/linuxthreads/spinlock.c 2004-01-30 10:47:31.000000000 -0500 +@@ -24,9 +24,9 @@ + #include "spinlock.h" + #include "restart.h" + +-static void __pthread_acquire(int * spinlock); ++static void __pthread_acquire(__atomic_lock_t * spinlock); + +-static inline void __pthread_release(int * spinlock) ++static inline void __pthread_release(__atomic_lock_t * spinlock) + { + WRITE_MEMORY_BARRIER(); + *spinlock = __LT_SPINLOCK_INIT; +@@ -269,11 +269,11 @@ + struct wait_node { + struct wait_node *next; /* Next node in null terminated linked list */ + pthread_descr thr; /* The thread waiting with this node */ +- int abandoned; /* Atomic flag */ ++ __atomic_lock_t abandoned; /* Atomic flag */ + }; + + static long wait_node_free_list; +-static int wait_node_free_list_spinlock; ++__pthread_lock_define_initialized(static, wait_node_free_list_spinlock); + + /* Allocate a new node from the head of the free list using an atomic + operation, or else using malloc if that list is empty. A fundamental +@@ -376,7 +376,7 @@ + if (self == NULL) + self = thread_self(); + +- wait_node.abandoned = 0; ++ wait_node.abandoned = __LT_SPINLOCK_INIT; + wait_node.next = (struct wait_node *) lock->__status; + wait_node.thr = self; + lock->__status = (long) &wait_node; +@@ -402,7 +402,7 @@ + wait_node.thr = self; + newstatus = (long) &wait_node; + } +- wait_node.abandoned = 0; ++ wait_node.abandoned = __LT_SPINLOCK_INIT; + wait_node.next = (struct wait_node *) oldstatus; + /* Make sure the store in wait_node.next completes before performing + the compare-and-swap */ +@@ -451,7 +451,7 @@ + if (self == NULL) + self = thread_self(); + +- p_wait_node->abandoned = 0; ++ p_wait_node->abandoned = __LT_SPINLOCK_INIT; + p_wait_node->next = (struct wait_node *) lock->__status; + p_wait_node->thr = self; + lock->__status = (long) p_wait_node; +@@ -474,7 +474,7 @@ + p_wait_node->thr = self; + newstatus = (long) p_wait_node; + } +- p_wait_node->abandoned = 0; ++ p_wait_node->abandoned = __LT_SPINLOCK_INIT; + p_wait_node->next = (struct wait_node *) oldstatus; + /* Make sure the store in wait_node.next completes before performing + the compare-and-swap */ +@@ -574,7 +574,7 @@ + while (p_node != (struct wait_node *) 1) { + int prio; + +- if (p_node->abandoned) { ++ if (lock_held(&p_node->abandoned)) { + /* Remove abandoned node. */ + #if defined TEST_FOR_COMPARE_AND_SWAP + if (!__pthread_has_cas) +@@ -662,7 +662,7 @@ + #if !defined HAS_COMPARE_AND_SWAP || defined TEST_FOR_COMPARE_AND_SWAP + + int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + int res; + +@@ -699,7 +699,7 @@ + - When nanosleep() returns, we try again, doing MAX_SPIN_COUNT + sched_yield(), then sleeping again if needed. */ + +-static void __pthread_acquire(int * spinlock) ++static void __pthread_acquire(__atomic_lock_t * spinlock) + { + int cnt = 0; + struct timespec tm; +--- libc-orig/linuxthreads/spinlock.h 2003-07-31 15:16:04.000000000 -0400 ++++ libc/linuxthreads/spinlock.h 2003-12-08 21:24:59.000000000 -0500 +@@ -33,14 +33,28 @@ + #endif + #endif + ++/* Define lock_held for all arches that don't need a modified copy. */ ++#ifndef __LT_INITIALIZER_NOT_ZERO ++# define lock_held(p) *(p) ++#endif ++ ++/* Initliazers for possibly complex structures */ ++#ifdef __LT_INITIALIZER_NOT_ZERO ++# define __pthread_lock_define_initialized(CLASS,NAME) \ ++ CLASS __atomic_lock_t NAME = __LT_SPINLOCK_ALT_INIT ++#else ++# define __pthread_lock_define_initialized(CLASS,NAME) \ ++ CLASS __atomic_lock_t NAME ++#endif ++ + #if defined(TEST_FOR_COMPARE_AND_SWAP) + + extern int __pthread_has_cas; + extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock); ++ __atomic_lock_t * spinlock); + + static inline int compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + if (__builtin_expect (__pthread_has_cas, 1)) + return __compare_and_swap(ptr, oldval, newval); +@@ -58,7 +72,7 @@ + + static inline int + compare_and_swap_with_release_semantics (long * ptr, long oldval, +- long newval, int * spinlock) ++ long newval, __atomic_lock_t * spinlock) + { + return __compare_and_swap_with_release_semantics (ptr, oldval, + newval); +@@ -67,7 +81,7 @@ + #endif + + static inline int compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + return __compare_and_swap(ptr, oldval, newval); + } +@@ -75,10 +89,10 @@ + #else + + extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock); ++ __atomic_lock_t * spinlock); + + static inline int compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + return __pthread_compare_and_swap(ptr, oldval, newval, spinlock); + } +--- libc-orig/linuxthreads/sysdeps/pthread/bits/initspin.h 2002-08-26 18:39:44.000000000 -0400 ++++ libc/linuxthreads/sysdeps/pthread/bits/initspin.h 2004-02-23 09:36:18.000000000 -0500 +@@ -23,6 +23,7 @@ + #define __LT_SPINLOCK_INIT 0 + + /* Macros for lock initializers, using the above definition. */ +-#define __LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } ++#define __LOCK_INITIALIZER ((struct _pthread_fastlock){ 0, __LT_SPINLOCK_INIT }) ++#define __LOCK_ALT_INITIALIZER { 0, __LT_SPINLOCK_INIT } + #define __ALT_LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } + #define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_INIT } +--- libc-orig/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-09-23 00:33:20.000000000 -0400 ++++ libc/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-12-08 21:25:00.000000000 -0500 +@@ -71,12 +71,12 @@ + initialized locks must be set to one due to the lack of normal + atomic operations.) */ + +-#if __LT_SPINLOCK_INIT == 0 ++#ifdef __LT_INITIALIZER_NOT_ZERO + # define __libc_lock_define_initialized(CLASS,NAME) \ +- CLASS __libc_lock_t NAME; ++ CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; + #else + # define __libc_lock_define_initialized(CLASS,NAME) \ +- CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; ++ CLASS __libc_lock_t NAME; + #endif + + #define __libc_rwlock_define_initialized(CLASS,NAME) \ +--- libc-orig/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2004-09-17 12:24:47.000000000 -0400 ++++ libc/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2004-09-17 12:24:19.000000000 -0400 +@@ -22,12 +22,14 @@ + #define __need_schedparam + #include + ++typedef int __atomic_lock_t; ++ + /* Fast locks (not abstract because mutexes and conditions aren't abstract). */ + struct _pthread_fastlock + { +- long int __status; /* "Free" or "taken" or head of waiting list */ +- int __spinlock; /* Used by compare_and_swap emulation. Also, +- adaptive SMP lock stores spin count here. */ ++ long int __status; /* "Free" or "taken" or head of waiting list */ ++ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also, ++ adaptive SMP lock stores spin count here. */ + }; + + #ifndef _PTHREAD_DESCR_DEFINED +--- libc-orig/linuxthreads/sysdeps/pthread/pthread.h 2004-09-21 17:55:20.000000000 -0400 ++++ libc/linuxthreads/sysdeps/pthread/pthread.h 2004-09-21 17:55:03.000000000 -0400 +@@ -31,26 +31,26 @@ + /* Initializers. */ + + #define PTHREAD_MUTEX_INITIALIZER \ +- {0, 0, 0, PTHREAD_MUTEX_TIMED_NP, __LOCK_INITIALIZER} ++ {0, 0, 0, PTHREAD_MUTEX_TIMED_NP, __LOCK_ALT_INITIALIZER} + #ifdef __USE_GNU + # define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \ +- {0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, __LOCK_INITIALIZER} ++ {0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, __LOCK_ALT_INITIALIZER} + # define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \ +- {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, __LOCK_INITIALIZER} ++ {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, __LOCK_ALT_INITIALIZER} + # define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ +- {0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __LOCK_INITIALIZER} ++ {0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __LOCK_ALT_INITIALIZER} + #endif + +-#define PTHREAD_COND_INITIALIZER {__LOCK_INITIALIZER, 0, "", 0} ++#define PTHREAD_COND_INITIALIZER {__LOCK_ALT_INITIALIZER, 0, "", 0} + + #if defined __USE_UNIX98 || defined __USE_XOPEN2K + # define PTHREAD_RWLOCK_INITIALIZER \ +- { __LOCK_INITIALIZER, 0, NULL, NULL, NULL, \ ++ { __LOCK_ALT_INITIALIZER, 0, NULL, NULL, NULL, \ + PTHREAD_RWLOCK_DEFAULT_NP, PTHREAD_PROCESS_PRIVATE } + #endif + #ifdef __USE_GNU + # define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ +- { __LOCK_INITIALIZER, 0, NULL, NULL, NULL, \ ++ { __LOCK_ALT_INITIALIZER, 0, NULL, NULL, NULL, \ + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, PTHREAD_PROCESS_PRIVATE } + #endif + +--- libc-orig/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h 1969-12-31 19:00:00.000000000 -0500 ++++ libc/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h 2003-12-08 21:25:00.000000000 -0500 +@@ -0,0 +1,160 @@ ++/* Linuxthreads - a simple clone()-based implementation of Posix */ ++/* threads for Linux. */ ++/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */ ++/* */ ++/* This program is free software; you can redistribute it and/or */ ++/* modify it under the terms of the GNU Library General Public License */ ++/* as published by the Free Software Foundation; either version 2 */ ++/* of the License, 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 Library General Public License for more details. */ ++ ++#if !defined _BITS_TYPES_H && !defined _PTHREAD_H ++# error "Never include directly; use instead." ++#endif ++ ++#ifndef _BITS_PTHREADTYPES_H ++#define _BITS_PTHREADTYPES_H 1 ++ ++#define __need_schedparam ++#include ++ ++/* We need 128-bit alignment for the ldcw semaphore. At most, we are ++ assured of 64-bit alignment for stack locals and malloc'd data. Thus, ++ we use a struct with four ints for the atomic lock type. The locking ++ code will figure out which of the four to use for the ldcw semaphore. */ ++typedef volatile struct { ++ int lock[4]; ++} __attribute__ ((aligned(16))) __atomic_lock_t; ++ ++/* Fast locks (not abstract because mutexes and conditions aren't abstract). */ ++struct _pthread_fastlock ++{ ++ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also, ++ adaptive SMP lock stores spin count here. */ ++ long int __status; /* "Free" or "taken" or head of waiting list */ ++}; ++ ++#ifndef _PTHREAD_DESCR_DEFINED ++/* Thread descriptors */ ++typedef struct _pthread_descr_struct *_pthread_descr; ++# define _PTHREAD_DESCR_DEFINED ++#endif ++ ++ ++/* Attributes for threads. */ ++typedef struct __pthread_attr_s ++{ ++ int __detachstate; ++ int __schedpolicy; ++ struct __sched_param __schedparam; ++ int __inheritsched; ++ int __scope; ++ size_t __guardsize; ++ int __stackaddr_set; ++ void *__stackaddr; ++ size_t __stacksize; ++} pthread_attr_t; ++ ++ ++/* Conditions (not abstract because of PTHREAD_COND_INITIALIZER */ ++ ++#ifdef __GLIBC_HAVE_LONG_LONG ++__extension__ typedef long long __pthread_cond_align_t; ++#else ++typedef long __pthread_cond_align_t; ++#endif ++ ++typedef struct ++{ ++ struct _pthread_fastlock __c_lock; /* Protect against concurrent access */ ++ _pthread_descr __c_waiting; /* Threads waiting on this condition */ ++ char __padding[48 - sizeof (struct _pthread_fastlock) ++ - sizeof (_pthread_descr) - sizeof (__pthread_cond_align_t)]; ++ __pthread_cond_align_t __align; ++} pthread_cond_t; ++ ++ ++/* Attribute for conditionally variables. */ ++typedef struct ++{ ++ int __dummy; ++} pthread_condattr_t; ++ ++/* Keys for thread-specific data */ ++typedef unsigned int pthread_key_t; ++ ++ ++/* Mutexes (not abstract because of PTHREAD_MUTEX_INITIALIZER). */ ++/* (The layout is unnatural to maintain binary compatibility ++ with earlier releases of LinuxThreads.) */ ++typedef struct ++{ ++ int __m_reserved; /* Reserved for future use */ ++ int __m_count; /* Depth of recursive locking */ ++ _pthread_descr __m_owner; /* Owner thread (if recursive or errcheck) */ ++ int __m_kind; /* Mutex kind: fast, recursive or errcheck */ ++ struct _pthread_fastlock __m_lock; /* Underlying fast lock */ ++} pthread_mutex_t; ++ ++ ++/* Attribute for mutex. */ ++typedef struct ++{ ++ int __mutexkind; ++} pthread_mutexattr_t; ++ ++ ++/* Once-only execution */ ++typedef int pthread_once_t; ++ ++ ++#ifdef __USE_UNIX98 ++/* Read-write locks. */ ++typedef struct _pthread_rwlock_t ++{ ++ struct _pthread_fastlock __rw_lock; /* Lock to guarantee mutual exclusion */ ++ int __rw_readers; /* Number of readers */ ++ _pthread_descr __rw_writer; /* Identity of writer, or NULL if none */ ++ _pthread_descr __rw_read_waiting; /* Threads waiting for reading */ ++ _pthread_descr __rw_write_waiting; /* Threads waiting for writing */ ++ int __rw_kind; /* Reader/Writer preference selection */ ++ int __rw_pshared; /* Shared between processes or not */ ++} pthread_rwlock_t; ++ ++ ++/* Attribute for read-write locks. */ ++typedef struct ++{ ++ int __lockkind; ++ int __pshared; ++} pthread_rwlockattr_t; ++#endif ++ ++#ifdef __USE_XOPEN2K ++/* POSIX spinlock data type. */ ++typedef __atomic_lock_t pthread_spinlock_t; ++ ++/* POSIX barrier. */ ++typedef struct { ++ struct _pthread_fastlock __ba_lock; /* Lock to guarantee mutual exclusion */ ++ int __ba_required; /* Threads needed for completion */ ++ int __ba_present; /* Threads waiting */ ++ _pthread_descr __ba_waiting; /* Queue of waiting threads */ ++} pthread_barrier_t; ++ ++/* barrier attribute */ ++typedef struct { ++ int __pshared; ++} pthread_barrierattr_t; ++ ++#endif ++ ++ ++/* Thread identifiers */ ++typedef unsigned long int pthread_t; ++ ++#endif /* bits/pthreadtypes.h */ --- glibc-2.4.orig/debian/patches/hppa/submitted-full-nptl-2003-10-22.diff +++ glibc-2.4/debian/patches/hppa/submitted-full-nptl-2003-10-22.diff @@ -0,0 +1,2813 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: HP-PARISC GNU/Libc Fixes 2003-10-22 +# DP: Related bugs: +# DP: Author: Carlos O'Donell +# DP: Upstream status: Submitted and pending. +# DP: Status Details: Waiting on upstream to review patches +# DP: Date: 2003-10-22 + +# Patched with: +# +# Linuxthread fixes: +# patches-2003-10-14/glibc23-00.a-noarch-pthreads +# patches-2003-10-14/glibc23-00.a1-noarch-sgu +# patches-2003-10-14/glibc23-00.b-noarch-sysdeps-pthreads +# patches-2003-10-14/glibc23-00.c2-hppa-pthreads +# patches-2003-10-14/glibc23-01d-hppa-dl-machine +# +# libgcc compat fixes: +# patches-2003-10-14/glibc23-02-hppa-compat +# +# Introduce atomicity warnings: +# patches-2003-10-14/glibc23-03-hppa-atomicity +# +# Don't align all mallocs at 16: +# patches-2003-10-14/glibc23-04-hppa-malloc8 +# +# Sysdep updates including cancellation: +# patches-2003-10-14/glibc23-05n-hppa-sysdep +# patches-2003-10-14/glibc23-06r-hppa-sysdep-cancel +# patches-2003-10-14/glibc23-07b-hppa-sysdep2 +# = Patched 2003-10-20 to remove load offset typo +# Elf entry fix for ld, removes kernel hack: +# patches-2003-10-14/glibc23-09-hppa-entry +# +# Patch to use new atomic structure: +# patches-2003-10-14/glibc23-12-hppa-oldsemaphore +# +# We have sjlj exceptions but compat code was for dwarf: +# patches-2003-10-14/glibc23-13-hppa-framestatefor +# +# Fix function pointer resolving (needs to move to new generic method): +# patches-2003-10-14/glibc23-14-hppa-dlfptr +# +# Fixes getaddrinfo from upstream: +# patches-2003-10-14/glibc23-15-generic-getaddrinfo +# +# Include new pthreadtypes for hppa: +# patches-2003-10-14/glibc23-17b-hppa-pthreadtypes +# +# Fix warnings: +# patches-2003-10-14/glibc23-18-generic-sysctlh +# +# Add semtimedop for hppa: +# patches-2003-10-14/glibc23-19-hppa-semtimedop +# +# Fix symbol resolution issues: +# patches-2003-10-14/glibc23-20c-hppa-ptmachine +# +# Make the kernelstat 64-bit uncompatible: +# patches-2003-10-14/glibc23-21-hppa-kernelstat +# +# Fixup C version of syscalls: +# patches-2003-10-14/glibc23-22c-hppa-sysdepc +# +# Fixes for sjlj versus dwarf compat code: +# patches-2003-10-14/glibc23-23-hppa-unwind-dw2 +# +# Allow hppa to get at the linkmap: +# patches-2003-10-14/glibc23-25b-dynamic-link +# +# Fix all of the assembly for hppa fpu code: +# patches-2003-10-14/glibc23-26e-fpu +# = Patched 2003-10-20 to fix FE_INEXACT failures +# +# Add small amount of debugging code to make locale +# generation easier to understand: +# patches-2003-10-14/glibc23-27-debug-gen-locale +# +# Fixup clone to save/restore pic register: +# patches-2003-10-14/glibc23-28c-hppa-clone +# +# Fixup prototype warnings: +# patches-2003-10-14/glibc23-29-hppa-prototypes +# +# Fixup bad cats: +# patches-2003-10-14/glibc23-30-hppa-casts +# +# Fixup warning: +# patches-2003-10-14/glibc23-31-generic-unix-Makefile +# +# Implement proper non-linuxthread locking: +# patches-2003-10-14/glibc23-32-hppa-thread-m +# patches-2003-10-14/glibc23-32a-hppa-thread-m +# +# Fixup warnings: +# patches-2003-10-14/glibc23-33-generic-internals +# +# These patches generate rejects, and those rejects were then dealt +# with on a per patch basis. Some were discarded others merged. +# + +diff -urN glibc-2.3.2-orig-debian/elf/dynamic-link.h glibc-2.3.2/elf/dynamic-link.h +--- glibc-2.3.2-orig-debian/elf/dynamic-link.h 2003-10-22 01:06:09.000000000 -0400 ++++ glibc-2.3.2/elf/dynamic-link.h 2003-10-22 01:11:53.000000000 -0400 +@@ -39,12 +39,21 @@ + elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, + const ElfW(Sym) *sym, const struct r_found_version *version, + void *const reloc_addr); ++# if ELF_MACHINE_REL_RELATIVE_NEEDSLINKMAP ++auto void __attribute__((always_inline)) ++elf_machine_rel_relative (struct link_map *map, ElfW(Addr) l_addr, const ElfW(Rel) *reloc, ++ void *const reloc_addr); ++auto void __attribute__((always_inline)) ++elf_machine_rela_relative (struct link_map *map, ElfW(Addr) l_addr, const ElfW(Rela) *reloc, ++ void *const reloc_addr); ++# else + auto void __attribute__((always_inline)) + elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, + void *const reloc_addr); + auto void __attribute__((always_inline)) + elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, + void *const reloc_addr); ++# endif + # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL + auto void __attribute__((always_inline)) + elf_machine_lazy_rel (struct link_map *map, +diff -urN glibc-2.3.2-orig-debian/linuxthreads/attr.c glibc-2.3.2/linuxthreads/attr.c +--- glibc-2.3.2-orig-debian/linuxthreads/attr.c 2003-10-22 01:06:10.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/attr.c 2003-10-22 01:07:38.000000000 -0400 +@@ -450,12 +450,19 @@ + { + /* Found the entry. Now we have the info we need. */ + attr->__stacksize = rl.rlim_cur; ++#ifdef _STACK_GROWS_DOWN + attr->__stackaddr = (void *) to; +- ++#else ++ attr->__stackaddr = (void *) from; ++#endif + /* The limit might be too high. This is a bogus + situation but try to avoid making it worse. */ + if ((size_t) attr->__stacksize > (size_t) attr->__stackaddr) ++#ifdef _STACK_GROWS_DOWN + attr->__stacksize = (size_t) attr->__stackaddr; ++#else ++ attr->__stacksize = (size_t)(to - from); ++#endif + + /* We succeed and no need to look further. */ + ret = 0; +diff -urN glibc-2.3.2-orig-debian/linuxthreads/descr.h glibc-2.3.2/linuxthreads/descr.h +--- glibc-2.3.2-orig-debian/linuxthreads/descr.h 2003-10-22 01:06:10.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/descr.h 2003-10-22 01:07:38.000000000 -0400 +@@ -71,7 +71,7 @@ + /* Atomic counter made possible by compare_and_swap */ + struct pthread_atomic { + long p_count; +- int p_spinlock; ++ __atomic_lock_t p_spinlock; + }; + + +diff -urN glibc-2.3.2-orig-debian/linuxthreads/manager.c glibc-2.3.2/linuxthreads/manager.c +--- glibc-2.3.2-orig-debian/linuxthreads/manager.c 2003-10-22 01:06:10.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/manager.c 2003-10-22 01:07:38.000000000 -0400 +@@ -70,8 +70,13 @@ + #else + static inline pthread_descr thread_segment(int seg) + { ++# ifdef _STACK_GROWS_UP ++ return (pthread_descr)(THREAD_STACK_START_ADDRESS + (seg - 1) * STACK_SIZE) ++ + 1; ++# else + return (pthread_descr)(THREAD_STACK_START_ADDRESS - (seg - 1) * STACK_SIZE) + - 1; ++# endif + } + #endif + +diff -urN glibc-2.3.2-orig-debian/linuxthreads/oldsemaphore.c glibc-2.3.2/linuxthreads/oldsemaphore.c +--- glibc-2.3.2-orig-debian/linuxthreads/oldsemaphore.c 2003-10-22 01:03:57.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/oldsemaphore.c 2003-10-22 01:07:38.000000000 -0400 +@@ -31,7 +31,7 @@ + + typedef struct { + long int sem_status; +- int sem_spinlock; ++ __atomic_lock_t sem_spinlock; + } old_sem_t; + + extern int __old_sem_init (old_sem_t *__sem, int __pshared, unsigned int __value); +diff -urN glibc-2.3.2-orig-debian/linuxthreads/pt-machine.c glibc-2.3.2/linuxthreads/pt-machine.c +--- glibc-2.3.2-orig-debian/linuxthreads/pt-machine.c 2003-10-22 01:03:57.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/pt-machine.c 2003-10-22 01:07:38.000000000 -0400 +@@ -19,7 +19,9 @@ + + #define PT_EI + +-extern long int testandset (int *spinlock); ++#include ++ ++extern long int testandset (__atomic_lock_t *spinlock); + extern int __compare_and_swap (long int *p, long int oldval, long int newval); + + #include +diff -urN glibc-2.3.2-orig-debian/linuxthreads/pthread.c glibc-2.3.2/linuxthreads/pthread.c +--- glibc-2.3.2-orig-debian/linuxthreads/pthread.c 2003-10-22 01:06:16.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/pthread.c 2003-10-22 01:07:38.000000000 -0400 +@@ -300,9 +300,9 @@ + pthread_descr self; + + /* First of all init __pthread_handles[0] and [1] if needed. */ +-# if __LT_SPINLOCK_INIT != 0 +- __pthread_handles[0].h_lock = __LOCK_INITIALIZER; +- __pthread_handles[1].h_lock = __LOCK_INITIALIZER; ++# ifdef __LT_INITIALIZER_NOT_ZERO ++ __pthread_handles[0].h_lock = __LOCK_ALT_INITIALIZER; ++ __pthread_handles[1].h_lock = __LOCK_ALT_INITIALIZER; + # endif + # ifndef SHARED + /* Unlike in the dynamically linked case the dynamic linker has not +@@ -370,7 +370,7 @@ + # endif + /* self->p_start_args need not be initialized, it's all zero. */ + self->p_userstack = 1; +-# if __LT_SPINLOCK_INIT != 0 ++# ifdef __LT_INITIALIZER_NOT_ZERO + self->p_resume_count = (struct pthread_atomic) __ATOMIC_INITIALIZER; + # endif + self->p_alloca_cutoff = __MAX_ALLOCA_CUTOFF; +@@ -384,9 +384,9 @@ + #else /* USE_TLS */ + + /* First of all init __pthread_handles[0] and [1]. */ +-# if __LT_SPINLOCK_INIT != 0 +- __pthread_handles[0].h_lock = __LOCK_INITIALIZER; +- __pthread_handles[1].h_lock = __LOCK_INITIALIZER; ++# ifdef __LT_INITIALIZER_NOT_ZERO ++ __pthread_handles[0].h_lock = __LOCK_ALT_INITIALIZER; ++ __pthread_handles[1].h_lock = __LOCK_ALT_INITIALIZER; + # endif + __pthread_handles[0].h_descr = &__pthread_initial_thread; + __pthread_handles[1].h_descr = &__pthread_manager_thread; +@@ -893,7 +893,11 @@ + /* __pthread_handles[0] is the initial thread, __pthread_handles[1] is + the manager threads handled specially in thread_self(), so start at 2 */ + h = __pthread_handles + 2; ++# ifdef _STACK_GROWS_UP ++ while (! (sp >= (char *) h->h_descr && sp < h->h_descr->p_guardaddr)) h++; ++# else + while (! (sp <= (char *) h->h_descr && sp >= h->h_bottom)) h++; ++# endif + return h->h_descr; + } + +@@ -908,11 +912,22 @@ + return manager_thread; + h = __pthread_handles + 2; + # ifdef USE_TLS ++# ifdef _STACK_GROWS_UP ++ while (h->h_descr == NULL ++ || ! (sp >= h->h_descr->p_stackaddr && ++ sp < h->h_descr->p_guardaddr)) ++# else + while (h->h_descr == NULL +- || ! (sp <= (char *) h->h_descr->p_stackaddr && sp >= h->h_bottom)) ++ || ! (sp <= h->h_descr->p_stackaddr && ++ sp >= h->h_bottom)) ++# endif + h++; + # else ++# ifdef _STACK_GROWS_UP ++ while (! (sp >= (char *) h->h_descr && sp < h->h_descr->p_guardaddr)) ++# else + while (! (sp <= (char *) h->h_descr && sp >= h->h_bottom)) ++# endif + h++; + # endif + return h->h_descr; +diff -urN glibc-2.3.2-orig-debian/linuxthreads/spinlock.c glibc-2.3.2/linuxthreads/spinlock.c +--- glibc-2.3.2-orig-debian/linuxthreads/spinlock.c 2003-10-22 01:03:57.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/spinlock.c 2003-10-22 01:07:38.000000000 -0400 +@@ -24,9 +24,9 @@ + #include "spinlock.h" + #include "restart.h" + +-static void __pthread_acquire(int * spinlock); ++static void __pthread_acquire(__atomic_lock_t * spinlock); + +-static inline void __pthread_release(int * spinlock) ++static inline void __pthread_release(__atomic_lock_t * spinlock) + { + WRITE_MEMORY_BARRIER(); + *spinlock = __LT_SPINLOCK_INIT; +@@ -269,11 +269,11 @@ + struct wait_node { + struct wait_node *next; /* Next node in null terminated linked list */ + pthread_descr thr; /* The thread waiting with this node */ +- int abandoned; /* Atomic flag */ ++ __atomic_lock_t abandoned; /* Atomic flag */ + }; + + static long wait_node_free_list; +-static int wait_node_free_list_spinlock; ++__pthread_lock_define_initialized(static, wait_node_free_list_spinlock); + + /* Allocate a new node from the head of the free list using an atomic + operation, or else using malloc if that list is empty. A fundamental +@@ -376,7 +376,7 @@ + if (self == NULL) + self = thread_self(); + +- wait_node.abandoned = 0; ++ wait_node.abandoned = __LT_SPINLOCK_INIT; + wait_node.next = (struct wait_node *) lock->__status; + wait_node.thr = self; + lock->__status = (long) &wait_node; +@@ -402,7 +402,7 @@ + wait_node.thr = self; + newstatus = (long) &wait_node; + } +- wait_node.abandoned = 0; ++ wait_node.abandoned = __LT_SPINLOCK_INIT; + wait_node.next = (struct wait_node *) oldstatus; + /* Make sure the store in wait_node.next completes before performing + the compare-and-swap */ +@@ -451,7 +451,7 @@ + if (self == NULL) + self = thread_self(); + +- p_wait_node->abandoned = 0; ++ p_wait_node->abandoned = __LT_SPINLOCK_INIT; + p_wait_node->next = (struct wait_node *) lock->__status; + p_wait_node->thr = self; + lock->__status = (long) p_wait_node; +@@ -474,7 +474,7 @@ + p_wait_node->thr = self; + newstatus = (long) p_wait_node; + } +- p_wait_node->abandoned = 0; ++ p_wait_node->abandoned = __LT_SPINLOCK_INIT; + p_wait_node->next = (struct wait_node *) oldstatus; + /* Make sure the store in wait_node.next completes before performing + the compare-and-swap */ +@@ -574,7 +574,7 @@ + while (p_node != (struct wait_node *) 1) { + int prio; + +- if (p_node->abandoned) { ++ if (lock_held(&p_node->abandoned)) { + /* Remove abandoned node. */ + #if defined TEST_FOR_COMPARE_AND_SWAP + if (!__pthread_has_cas) +@@ -662,7 +662,7 @@ + #if !defined HAS_COMPARE_AND_SWAP || defined TEST_FOR_COMPARE_AND_SWAP + + int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + int res; + +@@ -699,7 +699,7 @@ + - When nanosleep() returns, we try again, doing MAX_SPIN_COUNT + sched_yield(), then sleeping again if needed. */ + +-static void __pthread_acquire(int * spinlock) ++static void __pthread_acquire(__atomic_lock_t * spinlock) + { + int cnt = 0; + struct timespec tm; +diff -urN glibc-2.3.2-orig-debian/linuxthreads/spinlock.h glibc-2.3.2/linuxthreads/spinlock.h +--- glibc-2.3.2-orig-debian/linuxthreads/spinlock.h 2003-10-22 01:06:10.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/spinlock.h 2003-10-22 01:07:38.000000000 -0400 +@@ -33,14 +33,28 @@ + #endif + #endif + ++/* Define lock_held for all arches that don't need a modified copy. */ ++#ifndef __LT_INITIALIZER_NOT_ZERO ++# define lock_held(p) *(p) ++#endif ++ ++/* Initliazers for possibly complex structures */ ++#ifdef __LT_INITIALIZER_NOT_ZERO ++# define __pthread_lock_define_initialized(CLASS,NAME) \ ++ CLASS __atomic_lock_t NAME = __LT_SPINLOCK_ALT_INIT ++#else ++# define __pthread_lock_define_initialized(CLASS,NAME) \ ++ CLASS __atomic_lock_t NAME ++#endif ++ + #if defined(TEST_FOR_COMPARE_AND_SWAP) + + extern int __pthread_has_cas; + extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock); ++ __atomic_lock_t * spinlock); + + static inline int compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + if (__builtin_expect (__pthread_has_cas, 1)) + return __compare_and_swap(ptr, oldval, newval); +@@ -58,7 +72,7 @@ + + static inline int + compare_and_swap_with_release_semantics (long * ptr, long oldval, +- long newval, int * spinlock) ++ long newval, __atomic_lock_t * spinlock) + { + return __compare_and_swap_with_release_semantics (ptr, oldval, + newval); +@@ -67,7 +81,7 @@ + #endif + + static inline int compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + return __compare_and_swap(ptr, oldval, newval); + } +@@ -75,10 +89,10 @@ + #else + + extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock); ++ __atomic_lock_t * spinlock); + + static inline int compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + return __pthread_compare_and_swap(ptr, oldval, newval, spinlock); + } +diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pspinlock.c glibc-2.3.2/linuxthreads/sysdeps/hppa/pspinlock.c +--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pspinlock.c 2003-10-22 01:03:57.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pspinlock.c 2003-10-22 01:07:38.000000000 -0400 +@@ -24,13 +24,10 @@ + int + __pthread_spin_lock (pthread_spinlock_t *lock) + { +- unsigned int val; ++ volatile unsigned int *addr = __ldcw_align (lock); + +- do +- asm volatile ("ldcw %1,%0" +- : "=r" (val), "=m" (*lock) +- : "m" (*lock)); +- while (!val); ++ while (__ldcw (addr) == 0) ++ while (*addr == 0) ; + + return 0; + } +@@ -40,13 +37,9 @@ + int + __pthread_spin_trylock (pthread_spinlock_t *lock) + { +- unsigned int val; ++ volatile unsigned int *a = __ldcw_align (lock); + +- asm volatile ("ldcw %1,%0" +- : "=r" (val), "=m" (*lock) +- : "m" (*lock)); +- +- return val ? 0 : EBUSY; ++ return __ldcw (a) ? 0 : EBUSY; + } + weak_alias (__pthread_spin_trylock, pthread_spin_trylock) + +@@ -54,7 +47,9 @@ + int + __pthread_spin_unlock (pthread_spinlock_t *lock) + { +- *lock = 1; ++ volatile unsigned int *a = __ldcw_align (lock); ++ ++ *a = 1; + return 0; + } + weak_alias (__pthread_spin_unlock, pthread_spin_unlock) +@@ -66,7 +61,9 @@ + /* We can ignore the `pshared' parameter. Since we are busy-waiting + all processes which can access the memory location `lock' points + to can use the spinlock. */ +- *lock = 1; ++ volatile unsigned int *a = __ldcw_align (lock); ++ ++ *a = 1; + return 0; + } + weak_alias (__pthread_spin_init, pthread_spin_init) +diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pt-machine.h glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h +--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pt-machine.h 2003-10-22 01:06:10.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h 2003-10-22 01:12:51.000000000 -0400 +@@ -22,41 +22,97 @@ + #ifndef _PT_MACHINE_H + #define _PT_MACHINE_H 1 + ++#include + #include + + #ifndef PT_EI + # define PT_EI extern inline __attribute__ ((always_inline)) + #endif + +-extern long int testandset (int *spinlock); +-extern int __compare_and_swap (long int *p, long int oldval, long int newval); ++extern inline long int testandset (__atomic_lock_t *spinlock); ++extern inline int __compare_and_swap (long int *p, long int oldval, long int newval); ++extern inline int lock_held (__atomic_lock_t *spinlock); ++extern inline int __load_and_clear (__atomic_lock_t *spinlock); + + /* Get some notion of the current stack. Need not be exactly the top + of the stack, just something somewhere in the current frame. */ + #define CURRENT_STACK_FRAME stack_pointer + register char * stack_pointer __asm__ ("%r30"); + ++/* Get/Set thread-specific pointer. We have to call into the kernel to ++ * modify it, but we can read it in user mode. */ ++ ++#define THREAD_SELF __get_cr27() ++ ++static inline struct _pthread_descr_struct * __get_cr27(void) ++{ ++ long cr27; ++ asm("mfctl %%cr27, %0" : "=r" (cr27) : ); ++ return (struct _pthread_descr_struct *) cr27; ++} ++ ++#define INIT_THREAD_SELF(descr, nr) __set_cr27(descr) ++ ++static inline void __set_cr27(struct _pthread_descr_struct * cr27) ++{ ++ asm( ++ "ble 0xe0(%%sr2, %%r0)\n\t" ++ "copy %0, %%r26" ++ : : "r" (cr27) : "r26" ); ++} ++ ++/* We want the OS to assign stack addresses. */ ++#define FLOATING_STACKS 1 ++#define ARCH_STACK_MAX_SIZE 8*1024*1024 + + /* The hppa only has one atomic read and modify memory operation, + load and clear, so hppa spinlocks must use zero to signify that +- someone is holding the lock. */ ++ someone is holding the lock. The address used for the ldcw ++ semaphore must be 16-byte aligned. */ ++#define __ldcw(a) ({ \ ++ unsigned int __ret; \ ++ __asm__ __volatile__("ldcw 0(%2),%0" \ ++ : "=r" (__ret), "=m" (*(a)) : "r" (a)); \ ++ __ret; \ ++}) ++ ++/* Because malloc only guarantees 8-byte alignment for malloc'd data, ++ and GCC only guarantees 8-byte alignment for stack locals, we can't ++ be assured of 16-byte alignment for atomic lock data even if we ++ specify "__attribute ((aligned(16)))" in the type declaration. So, ++ we use a struct containing an array of four ints for the atomic lock ++ type and dynamically select the 16-byte aligned int from the array ++ for the semaphore. */ ++#define __PA_LDCW_ALIGNMENT 16 ++#define __ldcw_align(a) ({ \ ++ volatile unsigned int __ret = (unsigned int) a; \ ++ if ((__ret & ~(__PA_LDCW_ALIGNMENT - 1)) < (unsigned int) a) \ ++ __ret = (__ret & ~(__PA_LDCW_ALIGNMENT - 1)) + __PA_LDCW_ALIGNMENT; \ ++ (unsigned int *) __ret; \ ++}) + +-#define xstr(s) str(s) +-#define str(s) #s + /* Spinlock implementation; required. */ +-PT_EI long int +-testandset (int *spinlock) ++PT_EI int ++__load_and_clear (__atomic_lock_t *spinlock) + { +- int ret; ++ volatile unsigned int *a = __ldcw_align (spinlock); + +- __asm__ __volatile__( +- "ldcw 0(%2),%0" +- : "=r"(ret), "=m"(*spinlock) +- : "r"(spinlock)); ++ return __ldcw (a); ++} + +- return ret == 0; ++/* Emulate testandset */ ++PT_EI long int ++testandset (__atomic_lock_t *spinlock) ++{ ++ return (__load_and_clear(spinlock) == 0); + } +-#undef str +-#undef xstr + ++PT_EI int ++lock_held (__atomic_lock_t *spinlock) ++{ ++ volatile unsigned int *a = __ldcw_align (spinlock); ++ ++ return *a == 0; ++} ++ + #endif /* pt-machine.h */ +diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pt-machine.h.rej glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h.rej +--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pt-machine.h.rej 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h.rej 2003-10-22 01:07:38.000000000 -0400 +@@ -0,0 +1,153 @@ ++*************** ++*** 1,6 **** ++ /* Machine-dependent pthreads configuration and inline functions. ++ hppa version. ++- Copyright (C) 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Richard Henderson . ++ ++--- 1,6 ---- ++ /* Machine-dependent pthreads configuration and inline functions. ++ hppa version. +++ Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Richard Henderson . ++ ++*************** ++*** 22,62 **** ++ #ifndef _PT_MACHINE_H ++ #define _PT_MACHINE_H 1 ++ ++ #include ++ ++ #ifndef PT_EI ++ # define PT_EI extern inline ++ #endif ++ ++- extern long int testandset (int *spinlock); ++- extern int __compare_and_swap (long int *p, long int oldval, long int newval); ++ ++ /* Get some notion of the current stack. Need not be exactly the top ++ of the stack, just something somewhere in the current frame. */ ++ #define CURRENT_STACK_FRAME stack_pointer ++ register char * stack_pointer __asm__ ("%r30"); ++ ++- ++ /* The hppa only has one atomic read and modify memory operation, ++ load and clear, so hppa spinlocks must use zero to signify that ++- someone is holding the lock. */ ++- ++- #define xstr(s) str(s) ++- #define str(s) #s ++ /* Spinlock implementation; required. */ ++ PT_EI long int ++- testandset (int *spinlock) ++ { ++- int ret; ++- ++- __asm__ __volatile__( ++- "ldcw 0(%2),%0" ++- : "=r"(ret), "=m"(*spinlock) ++- : "r"(spinlock)); ++- ++- return ret == 0; ++ } ++- #undef str ++- #undef xstr ++- ++ #endif /* pt-machine.h */ ++--- 22,115 ---- ++ #ifndef _PT_MACHINE_H ++ #define _PT_MACHINE_H 1 ++ +++ #include ++ #include ++ ++ #ifndef PT_EI ++ # define PT_EI extern inline ++ #endif ++ +++ extern inline long int testandset (__atomic_lock_t *spinlock); +++ extern inline int __compare_and_swap (long int *p, long int oldval, long int newval); +++ extern inline int lock_held (__atomic_lock_t *spinlock); +++ extern inline int __load_and_clear (__atomic_lock_t *spinlock); ++ ++ /* Get some notion of the current stack. Need not be exactly the top ++ of the stack, just something somewhere in the current frame. */ ++ #define CURRENT_STACK_FRAME stack_pointer ++ register char * stack_pointer __asm__ ("%r30"); ++ +++ /* Get/Set thread-specific pointer. We have to call into the kernel to +++ modify it, but we can read it in user mode. */ +++ +++ #define THREAD_SELF __get_cr27() +++ +++ static inline struct _pthread_descr_struct * __get_cr27(void) +++ { +++ long cr27; +++ asm("mfctl %%cr27, %0" : "=r" (cr27) : ); +++ return (struct _pthread_descr_struct *) cr27; +++ } +++ +++ #define INIT_THREAD_SELF(descr, nr) __set_cr27(descr) +++ +++ static inline void __set_cr27(struct _pthread_descr_struct * cr27) +++ { +++ asm( " ble 0xe0(%%sr2, %%r0)\n" +++ " copy %0,%%r26" +++ : : "r" (cr27) : "r26" ); +++ } +++ +++ /* We want the OS to assign stack addresses. */ +++ #define FLOATING_STACKS 1 +++ #define ARCH_STACK_MAX_SIZE 8*1024*1024 +++ ++ /* The hppa only has one atomic read and modify memory operation, ++ load and clear, so hppa spinlocks must use zero to signify that +++ someone is holding the lock. The address used for the ldcw +++ semaphore must be 16-byte aligned. */ +++ #define __ldcw(a) ({ \ +++ unsigned int __ret; \ +++ __asm__ __volatile__("ldcw 0(%2),%0" \ +++ : "=r" (__ret), "=m" (*(a)) : "r" (a)); \ +++ __ret; \ +++ }) +++ +++ /* Because malloc only guarantees 8-byte alignment for malloc'd data, +++ and GCC only guarantees 8-byte alignment for stack locals, we can't +++ be assured of 16-byte alignment for atomic lock data even if we +++ specify "__attribute ((aligned(16)))" in the type declaration. So, +++ we use a struct containing an array of four ints for the atomic lock +++ type and dynamically select the 16-byte aligned int from the array +++ for the semaphore. */ +++ #define __PA_LDCW_ALIGNMENT 16 +++ #define __ldcw_align(a) ({ \ +++ volatile unsigned int __ret = (unsigned int) a; \ +++ if ((__ret & ~(__PA_LDCW_ALIGNMENT - 1)) < (unsigned int) a) \ +++ __ret = (__ret & ~(__PA_LDCW_ALIGNMENT - 1)) + __PA_LDCW_ALIGNMENT; \ +++ (unsigned int *) __ret; \ +++ }) +++ ++ /* Spinlock implementation; required. */ +++ PT_EI int +++ __load_and_clear (__atomic_lock_t *spinlock) +++ { +++ volatile unsigned int *a = __ldcw_align (spinlock); +++ return __ldcw (a); +++ } +++ +++ /* Emulate testandset */ ++ PT_EI long int +++ testandset (__atomic_lock_t *spinlock) ++ { +++ return (__load_and_clear(spinlock) == 0); ++ } +++ +++ PT_EI int +++ lock_held (__atomic_lock_t *spinlock) +++ { +++ volatile unsigned int *a = __ldcw_align (spinlock); +++ return *a == 0; +++ } +++ ++ #endif /* pt-machine.h */ +diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/pthread/bits/libc-lock.h glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h +--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-10-22 01:06:16.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-10-22 01:07:38.000000000 -0400 +@@ -71,12 +71,12 @@ + initialized locks must be set to one due to the lack of normal + atomic operations.) */ + +-#if __LT_SPINLOCK_INIT == 0 ++#ifdef __LT_INITIALIZER_NOT_ZERO + # define __libc_lock_define_initialized(CLASS,NAME) \ +- CLASS __libc_lock_t NAME; ++ CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; + #else + # define __libc_lock_define_initialized(CLASS,NAME) \ +- CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; ++ CLASS __libc_lock_t NAME; + #endif + + #define __libc_rwlock_define_initialized(CLASS,NAME) \ +diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h +--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2003-10-22 01:03:57.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2003-10-22 01:07:38.000000000 -0400 +@@ -22,12 +22,14 @@ + #define __need_schedparam + #include + ++typedef int __atomic_lock_t; ++ + /* Fast locks (not abstract because mutexes and conditions aren't abstract). */ + struct _pthread_fastlock + { +- long int __status; /* "Free" or "taken" or head of waiting list */ +- int __spinlock; /* Used by compare_and_swap emulation. Also, +- adaptive SMP lock stores spin count here. */ ++ long int __status; /* "Free" or "taken" or head of waiting list */ ++ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also, ++ adaptive SMP lock stores spin count here. */ + }; + + #ifndef _PTHREAD_DESCR_DEFINED +diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h +--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2003-10-22 01:03:57.000000000 -0400 ++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2003-10-22 01:07:38.000000000 -0400 +@@ -19,9 +19,23 @@ + + /* Initial value of a spinlock. PA-RISC only implements atomic load + and clear so this must be non-zero. */ +-#define __LT_SPINLOCK_INIT 1 ++#define __LT_SPINLOCK_INIT ((__atomic_lock_t) { { 1, 1, 1, 1 } }) ++ ++/* Initialize global spinlocks without cast, generally macro wrapped */ ++#define __LT_SPINLOCK_ALT_INIT { { 1, 1, 1, 1 } } ++ ++/* Macros for lock initializers, not using the above definition. ++ The above definition is not used in the case that static initializers ++ use this value. */ ++#define __LOCK_INITIALIZER { __LT_SPINLOCK_ALT_INIT, 0 } ++ ++/* Used to initialize _pthread_fastlock's in non-static case */ ++#define __LOCK_ALT_INITIALIZER ((struct _pthread_fastlock){ __LT_SPINLOCK_INIT, 0 }) ++ ++/* Used in pthread_atomic initialization */ ++#define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_ALT_INIT } ++ ++/* Tell the rest of the code that the initializer is non-zero without ++ explaining it's internal structure */ ++#define __LT_INITIALIZER_NOT_ZERO + +-/* Macros for lock initializers, using the above definition. */ +-#define __LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } +-#define __ALT_LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } +-#define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_INIT } +diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h +--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h 2003-10-22 01:07:38.000000000 -0400 +@@ -0,0 +1,160 @@ ++/* Linuxthreads - a simple clone()-based implementation of Posix */ ++/* threads for Linux. */ ++/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */ ++/* */ ++/* This program is free software; you can redistribute it and/or */ ++/* modify it under the terms of the GNU Library General Public License */ ++/* as published by the Free Software Foundation; either version 2 */ ++/* of the License, 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 Library General Public License for more details. */ ++ ++#if !defined _BITS_TYPES_H && !defined _PTHREAD_H ++# error "Never include directly; use instead." ++#endif ++ ++#ifndef _BITS_PTHREADTYPES_H ++#define _BITS_PTHREADTYPES_H 1 ++ ++#define __need_schedparam ++#include ++ ++/* We need 128-bit alignment for the ldcw semaphore. At most, we are ++ assured of 64-bit alignment for stack locals and malloc'd data. Thus, ++ we use a struct with four ints for the atomic lock type. The locking ++ code will figure out which of the four to use for the ldcw semaphore. */ ++typedef volatile struct { ++ int lock[4]; ++} __attribute__ ((aligned(16))) __atomic_lock_t; ++ ++/* Fast locks (not abstract because mutexes and conditions aren't abstract). */ ++struct _pthread_fastlock ++{ ++ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also, ++ adaptive SMP lock stores spin count here. */ ++ long int __status; /* "Free" or "taken" or head of waiting list */ ++}; ++ ++#ifndef _PTHREAD_DESCR_DEFINED ++/* Thread descriptors */ ++typedef struct _pthread_descr_struct *_pthread_descr; ++# define _PTHREAD_DESCR_DEFINED ++#endif ++ ++ ++/* Attributes for threads. */ ++typedef struct __pthread_attr_s ++{ ++ int __detachstate; ++ int __schedpolicy; ++ struct __sched_param __schedparam; ++ int __inheritsched; ++ int __scope; ++ size_t __guardsize; ++ int __stackaddr_set; ++ void *__stackaddr; ++ size_t __stacksize; ++} pthread_attr_t; ++ ++ ++/* Conditions (not abstract because of PTHREAD_COND_INITIALIZER */ ++ ++#ifdef __GLIBC_HAVE_LONG_LONG ++__extension__ typedef long long __pthread_cond_align_t; ++#else ++typedef long __pthread_cond_align_t; ++#endif ++ ++typedef struct ++{ ++ struct _pthread_fastlock __c_lock; /* Protect against concurrent access */ ++ _pthread_descr __c_waiting; /* Threads waiting on this condition */ ++ char __padding[48 - sizeof (struct _pthread_fastlock) ++ - sizeof (_pthread_descr) - sizeof (__pthread_cond_align_t)]; ++ __pthread_cond_align_t __align; ++} pthread_cond_t; ++ ++ ++/* Attribute for conditionally variables. */ ++typedef struct ++{ ++ int __dummy; ++} pthread_condattr_t; ++ ++/* Keys for thread-specific data */ ++typedef unsigned int pthread_key_t; ++ ++ ++/* Mutexes (not abstract because of PTHREAD_MUTEX_INITIALIZER). */ ++/* (The layout is unnatural to maintain binary compatibility ++ with earlier releases of LinuxThreads.) */ ++typedef struct ++{ ++ int __m_reserved; /* Reserved for future use */ ++ int __m_count; /* Depth of recursive locking */ ++ _pthread_descr __m_owner; /* Owner thread (if recursive or errcheck) */ ++ int __m_kind; /* Mutex kind: fast, recursive or errcheck */ ++ struct _pthread_fastlock __m_lock; /* Underlying fast lock */ ++} pthread_mutex_t; ++ ++ ++/* Attribute for mutex. */ ++typedef struct ++{ ++ int __mutexkind; ++} pthread_mutexattr_t; ++ ++ ++/* Once-only execution */ ++typedef int pthread_once_t; ++ ++ ++#ifdef __USE_UNIX98 ++/* Read-write locks. */ ++typedef struct _pthread_rwlock_t ++{ ++ struct _pthread_fastlock __rw_lock; /* Lock to guarantee mutual exclusion */ ++ int __rw_readers; /* Number of readers */ ++ _pthread_descr __rw_writer; /* Identity of writer, or NULL if none */ ++ _pthread_descr __rw_read_waiting; /* Threads waiting for reading */ ++ _pthread_descr __rw_write_waiting; /* Threads waiting for writing */ ++ int __rw_kind; /* Reader/Writer preference selection */ ++ int __rw_pshared; /* Shared between processes or not */ ++} pthread_rwlock_t; ++ ++ ++/* Attribute for read-write locks. */ ++typedef struct ++{ ++ int __lockkind; ++ int __pshared; ++} pthread_rwlockattr_t; ++#endif ++ ++#ifdef __USE_XOPEN2K ++/* POSIX spinlock data type. */ ++typedef __atomic_lock_t pthread_spinlock_t; ++ ++/* POSIX barrier. */ ++typedef struct { ++ struct _pthread_fastlock __ba_lock; /* Lock to guarantee mutual exclusion */ ++ int __ba_required; /* Threads needed for completion */ ++ int __ba_present; /* Threads waiting */ ++ _pthread_descr __ba_waiting; /* Queue of waiting threads */ ++} pthread_barrier_t; ++ ++/* barrier attribute */ ++typedef struct { ++ int __pshared; ++} pthread_barrierattr_t; ++ ++#endif ++ ++ ++/* Thread identifiers */ ++typedef unsigned long int pthread_t; ++ ++#endif /* bits/pthreadtypes.h */ +diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h +--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h 2003-10-22 01:07:38.000000000 -0400 +@@ -0,0 +1,73 @@ ++/* HP-PARISC macro definitions for mutexes, thread-specific data ++ and parameters for malloc. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Carlos O'Donell , 2003. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _MALLOC_MACHINE_H ++#define _MALLOC_MACHINE_H ++ ++#undef thread_atfork_static ++ ++#include ++#include ++ ++__libc_lock_define (typedef, mutex_t) ++ ++/* Since our lock structure does not tolerate being initialized to zero, we must ++ modify the standard function calls made by malloc */ ++# define mutex_init(m) \ ++ __libc_maybe_call (__pthread_mutex_init, (m, NULL), \ ++ (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT),(*(int *)(m))) ) ++# define mutex_lock(m) \ ++ __libc_maybe_call (__pthread_mutex_lock, (m), \ ++ (__load_and_clear(&((m)->__m_lock.__spinlock)), 0)) ++# define mutex_trylock(m) \ ++ __libc_maybe_call (__pthread_mutex_trylock, (m), \ ++ (*(int *)(m) ? 1 : (__load_and_clear(&((m)->__m_lock.__spinlock)), 0))) ++# define mutex_unlock(m) \ ++ __libc_maybe_call (__pthread_mutex_unlock, (m), \ ++ (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT), (*(int *)(m))) ) ++ ++/* This is defined by newer gcc version unique for each module. */ ++extern void *__dso_handle __attribute__ ((__weak__)); ++ ++#include ++ ++#ifdef SHARED ++# define thread_atfork(prepare, parent, child) \ ++ __register_atfork (prepare, parent, child, __dso_handle) ++#else ++# define thread_atfork(prepare, parent, child) \ ++ __register_atfork (prepare, parent, child, \ ++ &__dso_handle == NULL ? NULL : __dso_handle) ++#endif ++ ++/* thread specific data for glibc */ ++ ++#include ++ ++typedef int tsd_key_t[1]; /* no key data structure, libc magic does it */ ++__libc_tsd_define (static, MALLOC) /* declaration/common definition */ ++#define tsd_key_create(key, destr) ((void) (key)) ++#define tsd_setspecific(key, data) __libc_tsd_set (MALLOC, (data)) ++#define tsd_getspecific(key, vptr) ((vptr) = __libc_tsd_get (MALLOC)) ++ ++#include ++ ++#endif /* !defined(_MALLOC_MACHINE_H) */ +diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h +--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h 2003-10-22 01:07:38.000000000 -0400 +@@ -0,0 +1,190 @@ ++/* Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Carlos O'Donell , 2003. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#ifndef __ASSEMBLER__ ++# include ++#endif ++ ++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt ++ ++# ifndef NO_ERROR ++# define NO_ERROR -0x1000 ++# endif ++ ++# undef PSEUDO ++# define PSEUDO(name, syscall_name, args) \ ++ ENTRY (name) \ ++ SINGLE_THREAD_P ASM_LINE_SEP \ ++ cmpib,<> 0,%ret0,Lpseudo_cancel ASM_LINE_SEP \ ++ nop ASM_LINE_SEP \ ++ DO_CALL(syscall_name, args) ASM_LINE_SEP \ ++ /* DONE! */ ASM_LINE_SEP \ ++ bv 0(2) ASM_LINE_SEP \ ++ nop ASM_LINE_SEP \ ++ Lpseudo_cancel: ASM_LINE_SEP \ ++ /* store return ptr */ ASM_LINE_SEP \ ++ stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \ ++ /* save syscall args */ ASM_LINE_SEP \ ++ PUSHARGS_##args /* MACRO */ ASM_LINE_SEP \ ++ STW_PIC ASM_LINE_SEP \ ++ CENABLE /* FUNC CALL */ ASM_LINE_SEP \ ++ ldo 64(%sp), %sp ASM_LINE_SEP \ ++ ldo -64(%sp), %sp ASM_LINE_SEP \ ++ LDW_PIC ASM_LINE_SEP \ ++ /* restore syscall args */ ASM_LINE_SEP \ ++ POPARGS_##args ASM_LINE_SEP \ ++ /* save r4 in arg0 stack slot */ ASM_LINE_SEP \ ++ stw %r4, -36(%sr0,%sp) ASM_LINE_SEP \ ++ /* save mask from cenable */ ASM_LINE_SEP \ ++ copy %ret0, %r4 ASM_LINE_SEP \ ++ ble 0x100(%sr2,%r0) ASM_LINE_SEP \ ++ ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \ ++ LDW_PIC ASM_LINE_SEP \ ++ /* pass mask as arg0 to cdisable */ ASM_LINE_SEP \ ++ copy %r4, %r26 ASM_LINE_SEP \ ++ copy %ret0, %r4 ASM_LINE_SEP \ ++ CDISABLE ASM_LINE_SEP \ ++ ldo 64(%sp), %sp ASM_LINE_SEP \ ++ ldo -64(%sp), %sp ASM_LINE_SEP \ ++ LDW_PIC ASM_LINE_SEP \ ++ /* compare error */ ASM_LINE_SEP \ ++ ldi NO_ERROR,%r1 ASM_LINE_SEP \ ++ /* branch if no error */ ASM_LINE_SEP \ ++ cmpb,>>=,n %r1,%r4,Lpre_end ASM_LINE_SEP \ ++ nop ASM_LINE_SEP \ ++ SYSCALL_ERROR_HANDLER ASM_LINE_SEP \ ++ ldo 64(%sp), %sp ASM_LINE_SEP \ ++ ldo -64(%sp), %sp ASM_LINE_SEP \ ++ /* No need to LDW_PIC */ ASM_LINE_SEP \ ++ /* make syscall res value positive */ ASM_LINE_SEP \ ++ sub %r0, %r4, %r4 ASM_LINE_SEP \ ++ /* store into errno location */ ASM_LINE_SEP \ ++ stw %r4, 0(%sr0,%ret0) ASM_LINE_SEP \ ++ /* return -1 */ ASM_LINE_SEP \ ++ ldo -1(%r0), %ret0 ASM_LINE_SEP \ ++ Lpre_end: ASM_LINE_SEP \ ++ ldw -20(%sr0,%sp), %rp ASM_LINE_SEP \ ++ /* No need to LDW_PIC */ ASM_LINE_SEP \ ++ ldw -36(%sr0,%sp), %r4 ASM_LINE_SEP ++ ++/* Save arguments into our frame */ ++# define PUSHARGS_0 /* nothing to do */ ++# define PUSHARGS_1 PUSHARGS_0 stw %r26, -36(%sr0,%sp) ASM_LINE_SEP ++# define PUSHARGS_2 PUSHARGS_1 stw %r25, -40(%sr0,%sp) ASM_LINE_SEP ++# define PUSHARGS_3 PUSHARGS_2 stw %r24, -44(%sr0,%sp) ASM_LINE_SEP ++# define PUSHARGS_4 PUSHARGS_3 stw %r23, -48(%sr0,%sp) ASM_LINE_SEP ++# define PUSHARGS_5 PUSHARGS_4 /* Args are on the stack... */ ++# define PUSHARGS_6 PUSHARGS_5 ++ ++/* Bring them back from the stack */ ++# define POPARGS_0 /* nothing to do */ ++# define POPARGS_1 POPARGS_0 ldw -36(%sr0,%sp), %r26 ASM_LINE_SEP ++# define POPARGS_2 POPARGS_1 ldw -40(%sr0,%sp), %r25 ASM_LINE_SEP ++# define POPARGS_3 POPARGS_2 ldw -44(%sr0,%sp), %r24 ASM_LINE_SEP ++# define POPARGS_4 POPARGS_3 ldw -48(%sr0,%sp), %r23 ASM_LINE_SEP ++# define POPARGS_5 POPARGS_4 ldw -52(%sr0,%sp), %r22 ASM_LINE_SEP ++# define POPARGS_6 POPARGS_5 ldw -56(%sr0,%sp), %r21 ASM_LINE_SEP ++ ++# ifdef IS_IN_libpthread ++# ifdef PIC ++# define CENABLE .import __pthread_enable_asynccancel,code ASM_LINE_SEP \ ++ bl __pthread_enable_asynccancel,%r2 ASM_LINE_SEP ++# define CDISABLE .import __pthread_disable_asynccancel,code ASM_LINE_SEP \ ++ bl __pthread_disable_asynccancel,%r2 ASM_LINE_SEP ++# else ++# define CENABLE .import __pthread_enable_asynccancel,code ASM_LINE_SEP \ ++ bl __pthread_enable_asynccancel,%r2 ASM_LINE_SEP ++# define CDISABLE .import __pthread_disable_asynccancel,code ASM_LINE_SEP \ ++ bl __pthread_disable_asynccancel,%r2 ASM_LINE_SEP ++# endif ++# elif !defined NOT_IN_libc ++# ifdef PIC ++# define CENABLE .import __libc_enable_asynccancel,code ASM_LINE_SEP \ ++ bl __libc_enable_asynccancel,%r2 ASM_LINE_SEP ++# define CDISABLE .import __libc_disable_asynccancel,code ASM_LINE_SEP \ ++ bl __libc_disable_asynccancel,%r2 ASM_LINE_SEP ++# else ++# define CENABLE .import __libc_enable_asynccancel,code ASM_LINE_SEP \ ++ bl __libc_enable_asynccancel,%r2 ASM_LINE_SEP ++# define CDISABLE .import __libc_disable_asynccancel,code ASM_LINE_SEP \ ++ bl __libc_disable_asynccancel,%r2 ASM_LINE_SEP ++# endif ++# else ++# ifdef PIC ++# define CENABLE .import __librt_enable_asynccancel,code ASM_LINE_SEP \ ++ bl __librt_enable_asynccancel,%r2 ASM_LINE_SEP ++# define CDISABLE .import __librt_disable_asynccancel,code ASM_LINE_SEP \ ++ bl __librt_disable_asynccancel,%r2 ASM_LINE_SEP ++# else ++# define CENABLE .import __librt_enable_asynccancel,code ASM_LINE_SEP \ ++ bl __librt_enable_asynccancel,%r2 ASM_LINE_SEP ++# define CDISABLE .import __librt_disable_asynccancel,code ASM_LINE_SEP \ ++ bl __librt_disable_asynccancel,%r2 ASM_LINE_SEP ++# endif ++# endif ++ ++/* p_header.multiple_threads is +12 from the pthread_descr struct start, ++ We could have called __get_cr27() but we really want less overhead */ ++# define MULTIPLE_THREADS_OFFSET 0xC ++ ++/* cr27 has been initialized to 0x0 by kernel */ ++# define NO_THREAD_CR27 0x0 ++ ++# ifdef IS_IN_libpthread ++# define __local_multiple_threads __pthread_multiple_threads ++# elif !defined NOT_IN_libc ++# define __local_multiple_threads __libc_multiple_threads ++# else ++# define __local_multiple_threads __librt_multiple_threads ++# endif ++ ++# ifndef __ASSEMBLER__ ++ extern int __local_multiple_threads attribute_hidden; ++# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) ++# else ++/* This ALT version requires newer kernel support */ ++# define SINGLE_THREAD_P_MFCTL \ ++ mfctl %cr27, %ret0 ASM_LINE_SEP \ ++ cmpib,= NO_THREAD_CR27,%ret0,Lstp ASM_LINE_SEP \ ++ nop ASM_LINE_SEP \ ++ ldw MULTIPLE_THREADS_OFFSET(%sr0,%ret0),%ret0 ASM_LINE_SEP \ ++ Lstp: ASM_LINE_SEP ++# ifdef PIC ++/* Slower version uses GOT to get value of __local_multiple_threads */ ++# define SINGLE_THREAD_P \ ++ addil LT%__local_multiple_threads, %r19 ASM_LINE_SEP \ ++ ldw RT%__local_multiple_threads(%sr0,%r1), %ret0 ASM_LINE_SEP \ ++ ldw 0(%sr0,%ret0), %ret0 ASM_LINE_SEP ++# else ++ /* Slow non-pic version using DP */ ++# define SINGLE_THREAD_P \ ++ addil LR%__local_multiple_threads-$global$,%r27 ASM_LINE_SEP \ ++ ldw RR%__local_multiple_threads-$global$(%sr0,%r1),%ret0 ASM_LINE_SEP ++# endif ++# endif ++#elif !defined __ASSEMBLER__ ++ ++/* This code should never be used but we define it anyhow. */ ++# define SINGLE_THREAD_P (1) ++ ++#endif ++/* !defined NOT_IN_libc || defined IS_IN_libpthread */ ++ ++ +diff -urN glibc-2.3.2-orig-debian/localedata/gen-locale.sh glibc-2.3.2/localedata/gen-locale.sh +--- glibc-2.3.2-orig-debian/localedata/gen-locale.sh 2003-10-22 01:03:54.000000000 -0400 ++++ glibc-2.3.2/localedata/gen-locale.sh 2003-10-22 01:07:38.000000000 -0400 +@@ -47,6 +47,7 @@ + locale=`echo $locfile|sed 's|\([^.]*\)[.].*/LC_CTYPE|\1|'` + charmap=`echo $locfile|sed 's|[^.]*[.]\(.*\)/LC_CTYPE|\1|'` + ++echo "Running \"$0 $common_objpfx $localedef $locfile\"" + echo "Generating locale $locale.$charmap: this might take a while..." + generate_locale `echo $charmap | sed -e s/SJIS/SHIFT_JIS/` $locale \ + $locale.$charmap +diff -urN glibc-2.3.2-orig-debian/malloc/thread-m.h glibc-2.3.2/malloc/thread-m.h +--- glibc-2.3.2-orig-debian/malloc/thread-m.h 2003-10-22 01:06:10.000000000 -0400 ++++ glibc-2.3.2/malloc/thread-m.h 2003-10-22 01:07:38.000000000 -0400 +@@ -59,6 +59,28 @@ + #define mutex_unlock(m) \ + __libc_maybe_call2 (pthread_mutex_unlock, (m), (*(int *)(m) = 0)) + ++# if(defined __hppa__) ++/* Since our lock structure does not tolerate being initialized to zero, we must ++ modify the standard function calls made by malloc */ ++# undef mutex_init ++# undef mutex_lock ++# undef mutex_trylock ++# undef mutex_unlock ++# define mutex_init(m) \ ++ __libc_maybe_call (__pthread_mutex_init, (m, NULL), \ ++ (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT),(*(int *)(m))) ) ++# define mutex_lock(m) \ ++ __libc_maybe_call (__pthread_mutex_lock, (m), \ ++ (__load_and_clear(&((m)->__m_lock.__spinlock)), 0)) ++# define mutex_trylock(m) \ ++ __libc_maybe_call (__pthread_mutex_trylock, (m), \ ++ (*(int *)(m) ? 1 : (__load_and_clear(&((m)->__m_lock.__spinlock)), 0))) ++# define mutex_unlock(m) \ ++ __libc_maybe_call (__pthread_mutex_unlock, (m), \ ++ (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT), (*(int *)(m))) ) ++# endif ++/* if(defined __hppa__) */ ++ + #else + + #define mutex_init(m) \ +diff -urN glibc-2.3.2-orig-debian/sysdeps/generic/framestate.c glibc-2.3.2/sysdeps/generic/framestate.c +--- glibc-2.3.2-orig-debian/sysdeps/generic/framestate.c 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/generic/framestate.c 2003-10-22 01:07:38.000000000 -0400 +@@ -41,7 +41,11 @@ + if (handle == NULL + || (frame_state_for + = (framesf) __libc_dlsym (handle, "__frame_state_for")) == NULL) ++#ifndef __USING_SJLJ_EXCEPTIONS__ + frame_state_for = fallback_frame_state_for; ++#else ++ frame_state_for = abort; ++#endif + } + + return frame_state_for (pc, frame_state); +diff -urN glibc-2.3.2-orig-debian/sysdeps/generic/unwind-dw2.c glibc-2.3.2/sysdeps/generic/unwind-dw2.c +--- glibc-2.3.2-orig-debian/sysdeps/generic/unwind-dw2.c 2003-10-22 01:06:11.000000000 -0400 ++++ glibc-2.3.2/sysdeps/generic/unwind-dw2.c 2003-10-22 01:08:07.000000000 -0400 +@@ -39,7 +39,6 @@ + #endif + + +-#ifndef __USING_SJLJ_EXCEPTIONS__ + + #ifndef STACK_GROWS_DOWNWARD + #define STACK_GROWS_DOWNWARD 0 +@@ -1287,4 +1286,3 @@ + #include "unwind.inc" + + #endif /* _LIBC */ +-#endif /* !USING_SJLJ_EXCEPTIONS */ +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/Dist glibc-2.3.2/sysdeps/hppa/Dist +--- glibc-2.3.2-orig-debian/sysdeps/hppa/Dist 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/Dist 2003-10-22 01:07:38.000000000 -0400 +@@ -1,2 +1,3 @@ ++libgcc-compat.c + dl-symaddr.c + dl-fptr.c +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/Makefile glibc-2.3.2/sysdeps/hppa/Makefile +--- glibc-2.3.2-orig-debian/sysdeps/hppa/Makefile 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/Makefile 2003-10-22 01:07:38.000000000 -0400 +@@ -22,12 +22,19 @@ + # CFLAGS-.os += -ffunction-sections + LDFLAGS-c_pic.os += -Wl,--unique=.text* + +-ifeq ($(subdir),malloc) +-CFLAGS-malloc.c += -DMALLOC_ALIGNMENT=16 +-endif +- + ifeq ($(subdir),elf) + CFLAGS-rtld.c += -mdisable-fpregs + dl-routines += dl-symaddr dl-fptr + rtld-routines += dl-symaddr dl-fptr + endif ++ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++ifeq (yes,$(have-protected)) ++CPPFLAGS-libgcc-compat.c = -DHAVE_DOT_HIDDEN ++endif ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/Versions glibc-2.3.2/sysdeps/hppa/Versions +--- glibc-2.3.2-orig-debian/sysdeps/hppa/Versions 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/Versions 2003-10-22 01:07:38.000000000 -0400 +@@ -5,3 +5,8 @@ + _dl_function_address; + } + } ++libc { ++ GLIBC_2.2 { ++ __clz_tab; ++ } ++} +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/atomicity.h glibc-2.3.2/sysdeps/hppa/atomicity.h +--- glibc-2.3.2-orig-debian/sysdeps/hppa/atomicity.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.3.2/sysdeps/hppa/atomicity.h 2003-10-22 01:07:38.000000000 -0400 +@@ -0,0 +1,55 @@ ++/* Low-level functions for atomic operations. HP-PARISC version. ++ 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 Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _ATOMICITY_H ++#define _ATOMICITY_H 1 ++ ++#include ++ ++#warning stub atomicity functions are not atomic ++#warning CAO This will get implemented soon ++ ++static inline int ++__attribute__ ((unused)) ++exchange_and_add (volatile uint32_t *mem, int val) ++{ ++ int result = *mem; ++ *mem += val; ++ return result; ++} ++ ++static inline void ++__attribute__ ((unused)) ++atomic_add (volatile uint32_t *mem, int val) ++{ ++ *mem += val; ++} ++ ++static inline int ++__attribute__ ((unused)) ++compare_and_swap (volatile long int *p, long int oldval, long int newval) ++{ ++ if (*p != oldval) ++ return 0; ++ ++ *p = newval; ++ return 1; ++} ++ ++#endif /* atomicity.h */ +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/dl-fptr.c glibc-2.3.2/sysdeps/hppa/dl-fptr.c +--- glibc-2.3.2-orig-debian/sysdeps/hppa/dl-fptr.c 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/dl-fptr.c 2003-10-22 01:07:38.000000000 -0400 +@@ -30,7 +30,7 @@ + # include + + /* Remember, we use 0 to mean that a lock is taken on PA-RISC. */ +-static int __hppa_fptr_lock = 1; ++static __atomic_lock_t __hppa_fptr_lock = __LT_SPINLOCK_ALT_INIT; + #endif + + /* Because ld.so is now versioned, these functions can be in their own +@@ -127,7 +127,7 @@ + #ifdef _LIBC_REENTRANT + /* Release the lock. Again, remember, zero means the lock is taken! */ + if (mem == NULL) +- __hppa_fptr_lock = 1; ++ __hppa_fptr_lock = __LT_SPINLOCK_INIT; + #endif + + /* Set bit 30 to indicate to $$dyncall that this is a PLABEL. */ +@@ -180,7 +180,7 @@ + + #ifdef _LIBC_REENTRANT + /* Release the lock. */ +- __hppa_fptr_lock = 1; ++ __hppa_fptr_lock = __LT_SPINLOCK_INIT; + #endif + } + +@@ -190,6 +190,8 @@ + Elf32_Addr addr = (Elf32_Addr) address; + struct hppa_fptr *f; + ++ address = (void *)((unsigned long)address &~ 3); /* Clear the bottom two bits. See make_fptr. */ ++ + #ifdef _LIBC_REENTRANT + /* Make sure we are alone. */ + while (testandset (&__hppa_fptr_lock)); +@@ -204,7 +206,7 @@ + + #ifdef _LIBC_REENTRANT + /* Release the lock. */ +- __hppa_fptr_lock = 1; ++ __hppa_fptr_lock = __LT_SPINLOCK_INIT; + #endif + + return addr; +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/dl-machine.h glibc-2.3.2/sysdeps/hppa/dl-machine.h +--- glibc-2.3.2-orig-debian/sysdeps/hppa/dl-machine.h 2003-10-22 01:06:11.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/dl-machine.h 2003-10-22 01:10:26.000000000 -0400 +@@ -1,5 +1,5 @@ + /* Machine-dependent ELF dynamic relocation inline functions. PA-RISC version. +- Copyright (C) 1995-1997,1999,2000,2001,2002, 2003 ++ Copyright (C) 1995-1997,1999-2003 + Free Software Foundation, Inc. + Contributed by David Huggins-Daines + This file is part of the GNU C Library. +@@ -29,8 +29,15 @@ + #include + #include + ++# define VALID_ELF_OSABI(osabi) ((osabi == ELFOSABI_SYSV) || (osabi == ELFOSABI_LINUX)) ++# define VALID_ELF_ABIVERSION(ver) (ver == 0) ++# define VALID_ELF_HEADER(hdr,exp,size) \ ++ memcmp (hdr,exp,size-2) == 0 \ ++ && VALID_ELF_OSABI (hdr[EI_OSABI]) \ ++ && VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION]) ++ + /* These must match the definition of the stub in bfd/elf32-hppa.c. */ +-#define SIZEOF_PLT_STUB (4*4) ++#define SIZEOF_PLT_STUB (7*4) + #define GOT_FROM_PLT_STUB (4*4) + + /* A PLABEL is a function descriptor. Properly they consist of just +@@ -67,45 +74,41 @@ + return ehdr->e_machine == EM_PARISC; + } + +- + /* Return the link-time address of _DYNAMIC. */ + static inline Elf32_Addr ++elf_machine_dynamic (void) __attribute__ ((const)); ++ ++static inline Elf32_Addr + elf_machine_dynamic (void) + { + Elf32_Addr dynamic; + +-#if 0 +- /* Use this method if GOT address not yet set up. */ +- asm ( +-" b,l 1f,%0\n" ++ asm ("b,l 1f,%0\n" + " depi 0,31,2,%0\n" + "1: addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 8),%0\n" + " ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 12)(%%r1),%0\n" +- : "=r" (dynamic) : : "r1"); +-#else +- /* This works because we already have our GOT address available. */ +- dynamic = (Elf32_Addr) &_DYNAMIC; +-#endif ++ : "=r" (dynamic) : : "r1"); + + return dynamic; + } + + /* Return the run-time load address of the shared object. */ + static inline Elf32_Addr ++elf_machine_load_address (void) __attribute__ ((const)); ++ ++static inline Elf32_Addr + elf_machine_load_address (void) + { +- Elf32_Addr dynamic, dynamic_linkaddress; ++ Elf32_Addr dynamic; + + asm ( + " b,l 1f,%0\n" + " depi 0,31,2,%0\n" + "1: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8),%0\n" +-" ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%%r1),%1\n" +-" addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 16),%0\n" +-" ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 20)(%%r1),%0\n" +- : "=r" (dynamic_linkaddress), "=r" (dynamic) : : "r1"); ++" ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%%r1),%0\n" ++ : "=r" (dynamic) : : "r1"); + +- return dynamic - dynamic_linkaddress; ++ return dynamic - elf_machine_dynamic (); + } + + /* Fixup a PLT entry to bounce directly to the function at VALUE. */ +@@ -168,41 +171,39 @@ + fptr = (struct hppa_fptr *) (reloc->r_offset + l_addr); + if (r_sym != 0) + { +- /* Relocate the pointer to the stub. */ +- fptr->func += l_addr; +- /* Instead of the LTP value, we put the reloc offset +- here. The trampoline code will load the proper +- LTP and pass the reloc offset to the fixup +- function. */ +- fptr->gp = iplt - jmprel; + if (!got) + { + static union { + unsigned char c[8]; + Elf32_Addr i[2]; + } sig = {{0x00,0xc0,0xff,0xee, 0xde,0xad,0xbe,0xef}}; ++ const Elf32_Rela *last_rel; ++ ++ last_rel = (const Elf32_Rela *) end_jmprel - 1; ++ ++ /* The stub is immediately after the last .plt ++ entry. Rely on .plt relocs being ordered. */ ++ if (last_rel->r_offset == 0) ++ return 0; + + /* Find our .got section. It's right after the + stub. */ +- got = (Elf32_Addr *) (fptr->func + GOT_FROM_PLT_STUB); ++ got = (Elf32_Addr *) (last_rel->r_offset + l_addr ++ + 8 + SIZEOF_PLT_STUB); + +- /* Sanity check to see if the address we are +- going to check below is within a reasonable +- approximation of the bounds of the PLT (or, +- at least, is at an address that won't fault +- on read). Then check for the magic signature +- above. */ +- if (fptr->func < (Elf32_Addr) fptr + sizeof(*fptr)) +- return 0; +- if (fptr->func > +- ((Elf32_Addr) fptr +- + SIZEOF_PLT_STUB +- + ((l->l_info[DT_PLTRELSZ]->d_un.d_val / sizeof (Elf32_Rela)) +- * 8))) +- return 0; ++ /* Check the magic signature. */ + if (got[-2] != sig.i[0] || got[-1] != sig.i[1]) + return 0; /* No lazy linking for you! */ + } ++ ++ /* Relocate the pointer to the stub. */ ++ fptr->func = (Elf32_Addr) got - GOT_FROM_PLT_STUB; ++ ++ /* Instead of the LTP value, we put the reloc offset ++ here. The trampoline code will load the proper ++ LTP and pass the reloc offset to the fixup ++ function. */ ++ fptr->gp = iplt - jmprel; + } + else + { +@@ -272,22 +273,24 @@ + " stw %r25,-40(%sp)\n" /* argc */ \ + " stw %r24,-44(%sp)\n" /* argv */ \ + \ +- /* We need the LTP, and we need it now. */ \ +- /* $PIC_pcrel$0 points 8 bytes past the current instruction, \ +- just like a branch reloc. This sequence gets us the runtime \ +- address of _DYNAMIC. */ \ ++ /* We need the LTP, and we need it now. \ ++ $PIC_pcrel$0 points 8 bytes past the current instruction, \ ++ just like a branch reloc. This sequence gets us the \ ++ runtime address of _DYNAMIC. */ \ + " bl 0f,%r19\n" \ + " depi 0,31,2,%r19\n" /* clear priviledge bits */ \ + "0: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8),%r19\n" \ + " ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%r1),%r26\n" \ + \ +- /* Also get the link time address from the first entry of the GOT. */ \ ++ /* The link time address is stored in the first entry of the \ ++ GOT. */ \ + " addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 16),%r19\n" \ + " ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 20)(%r1),%r20\n" \ + \ + " sub %r26,%r20,%r20\n" /* Calculate load offset */ \ + \ +- /* Rummage through the dynamic entries, looking for DT_PLTGOT. */ \ ++ /* Rummage through the dynamic entries, looking for \ ++ DT_PLTGOT. */ \ + " ldw,ma 8(%r26),%r19\n" \ + "1: cmpib,=,n 3,%r19,2f\n" /* tag == DT_PLTGOT? */ \ + " cmpib,<>,n 0,%r19,1b\n" \ +@@ -307,8 +310,8 @@ + | 32 bytes of magic | \ + |---------------------------------| \ + | 32 bytes argument/sp save area | \ +- |---------------------------------| ((current->mm->env_end) + 63 & ~63) \ +- | N bytes of slack | \ ++ |---------------------------------| ((current->mm->env_end) \ ++ | N bytes of slack | + 63 & ~63) \ + |---------------------------------| \ + | envvar and arg strings | \ + |---------------------------------| \ +@@ -376,7 +379,7 @@ + " bl _dl_init_internal,%r2\n" \ + " ldo 4(%r23),%r23\n" /* delay slot */ \ + \ +- /* Reload argc, argv to the registers start.S expects them in (feh) */ \ ++ /* Reload argc, argv to the registers start.S expects. */ \ + " ldw -40(%sp),%r25\n" \ + " ldw -44(%sp),%r24\n" \ + \ +@@ -388,8 +391,8 @@ + " .word 0xdeadbeef\n" \ + " .previous\n" \ + \ +- /* %r3 contains a function pointer, we need to mask out the lower \ +- * bits and load the gp and jump address. */ \ ++ /* %r3 contains a function pointer, we need to mask out the \ ++ lower bits and load the gp and jump address. */ \ + " depi 0,31,2,%r3\n" \ + " ldw 0(%r3),%r2\n" \ + " addil LT'__dl_fini_plabel,%r19\n" \ +@@ -407,43 +410,41 @@ + Enter with r19 = reloc offset, r20 = got-8, r21 = fixup ltp. */ + #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \ + extern void tramp_name (void); \ +- asm ( "\ +- /* Trampoline for " #tramp_name " */ \n\ +- .globl " #tramp_name " \n\ +- .type " #tramp_name ",@function \n\ +-" #tramp_name ": \n\ +- /* Save return pointer */ \n\ +- stw %r2,-20(%sp) \n\ +- /* Save argument registers in the call stack frame. */ \n\ +- stw %r26,-36(%sp) \n\ +- stw %r25,-40(%sp) \n\ +- stw %r24,-44(%sp) \n\ +- stw %r23,-48(%sp) \n\ +- /* Build a call frame. */ \n\ +- stwm %sp,64(%sp) \n\ +- \n\ +- /* Set up args to fixup func. */ \n\ +- ldw 8+4(%r20),%r26 /* got[1] == struct link_map * */ \n\ +- copy %r19,%r25 /* reloc offset */ \n\ +- \n\ +- /* Call the real address resolver. */ \n\ +- bl " #fixup_name ",%r2 \n\ +- copy %r21,%r19 /* delay slot, set fixup func ltp */ \n\ +- \n\ +- ldwm -64(%sp),%sp \n\ +- /* Arguments. */ \n\ +- ldw -36(%sp),%r26 \n\ +- ldw -40(%sp),%r25 \n\ +- ldw -44(%sp),%r24 \n\ +- ldw -48(%sp),%r23 \n\ +- /* Return pointer. */ \n\ +- ldw -20(%sp),%r2 \n\ +- /* Call the real function. */ \n\ +- ldw 0(%r28),%r22 \n\ +- bv %r0(%r22) \n\ +- ldw 4(%r28),%r19 \n\ +-"); +- ++ asm (".globl " #tramp_name "\n" \ ++ " .type " #tramp_name ",@function\n" \ ++ #tramp_name ":\n" \ ++ /* Save return pointer */ \ ++ " stw %r2,-20(%sp)\n" \ ++ /* Save argument registers in the call stack frame. */ \ ++ " stw %r26,-36(%sp)\n" \ ++ " stw %r25,-40(%sp)\n" \ ++ " stw %r24,-44(%sp)\n" \ ++ " stw %r23,-48(%sp)\n" \ ++ /* Build a call frame, and save structure pointer. */ \ ++ " stwm %r28,64(%sp)\n" \ ++ \ ++ /* Set up args to fixup func. */ \ ++ " ldw 8+4(%r20),%r26\n" /* got[1] == struct link_map * */ \ ++ " copy %r19,%r25\n" /* reloc offset */ \ ++ \ ++ /* Call the real address resolver. */ \ ++ " bl " #fixup_name ",%r2\n" \ ++ " copy %r21,%r19\n" /* delay slot, set fixup func ltp */ \ ++ \ ++ " ldw 0(%r28),%r22\n" /* load up the returned func ptr */ \ ++ " ldw 4(%r28),%r19\n" \ ++ " ldwm -64(%sp),%r28\n" \ ++ /* Arguments. */ \ ++ " ldw -36(%sp),%r26\n" \ ++ " ldw -40(%sp),%r25\n" \ ++ " ldw -44(%sp),%r24\n" \ ++ " ldw -48(%sp),%r23\n" \ ++ /* Call the real function. */ \ ++ " bv %r0(%r22)\n" \ ++ /* Return pointer. */ \ ++ " ldw -20(%sp),%r2\n" \ ++ ); ++ + #ifndef PROF + #define ELF_MACHINE_RUNTIME_TRAMPOLINE \ + TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup); \ +@@ -470,16 +471,32 @@ + /* We only use RELA. */ + #define ELF_MACHINE_NO_REL 1 + ++/* Tell dynamic-link that PA needs the extra link_map structure */ ++#define ELF_MACHINE_REL_RELATIVE_NEEDSLINKMAP 1 ++#define ELF_MACHINE_RELA_RELATIVE_NEEDSLINKMAP 1 ++ + /* Return the address of the entry point. */ + #define ELF_MACHINE_START_ADDRESS(map, start) \ + DL_FUNCTION_ADDRESS (map, start) + ++/* We define an initialization functions. This is called very early in ++ * _dl_sysdep_start. */ ++#define DL_PLATFORM_INIT dl_platform_init () ++ ++static inline void __attribute__ ((unused)) ++dl_platform_init (void) ++{ ++ if (GL(dl_platform) != NULL && *GL(dl_platform) == '\0') ++ /* Avoid an empty string which would disturb us. */ ++ GL(dl_platform) = NULL; ++} ++ + #endif /* !dl_machine_h */ + + /* These are only actually used where RESOLVE_MAP is defined, anyway. */ + #ifdef RESOLVE_MAP + +-static inline void ++auto void __attribute__((always_inline)) + elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, + const Elf32_Sym *sym, const struct r_found_version *version, + void *const reloc_addr_arg) +@@ -569,15 +586,15 @@ + probably haven't relocated the necessary values by this + point so we have to find them ourselves. */ + +- asm ("bl 0f,%0 \n\ +- depi 0,31,2,%0 \n\ +-0: addil L'__boot_ldso_fptr - ($PIC_pcrel$0 - 8),%0 \n\ +- ldo R'__boot_ldso_fptr - ($PIC_pcrel$0 - 12)(%%r1),%1 \n\ +- addil L'__fptr_root - ($PIC_pcrel$0 - 16),%0 \n\ +- ldo R'__fptr_root - ($PIC_pcrel$0 - 20)(%%r1),%2 \n\ +- addil L'__fptr_count - ($PIC_pcrel$0 - 24),%0 \n\ +- ldo R'__fptr_count - ($PIC_pcrel$0 - 28)(%%r1),%3" +- : ++ asm ("bl 0f,%0\n\t" ++ "depi 0,31,2,%0\n\t" ++ "0:\taddil L'__boot_ldso_fptr - ($PIC_pcrel$0 - 8),%0\n\t" ++ "ldo R'__boot_ldso_fptr - ($PIC_pcrel$0 - 12)(%%r1),%1\n\t" ++ "addil L'__fptr_root - ($PIC_pcrel$0 - 16),%0\n\t" ++ "ldo R'__fptr_root - ($PIC_pcrel$0 - 20)(%%r1),%2\n\t" ++ "addil L'__fptr_count - ($PIC_pcrel$0 - 24),%0\n\t" ++ "ldo R'__fptr_count - ($PIC_pcrel$0 - 28)(%%r1),%3" ++ : + "=r" (dot), + "=r" (p_boot_ldso_fptr), + "=r" (p_fptr_root), +@@ -636,7 +653,7 @@ + + /* hppa doesn't have an R_PARISC_RELATIVE reloc, but uses relocs with + ELF32_R_SYM (info) == 0 for a similar purpose. */ +-static inline void ++auto void __attribute__((always_inline)) + elf_machine_rela_relative (struct link_map *map, Elf32_Addr l_addr, + const Elf32_Rela *reloc, + void *const reloc_addr_arg) +@@ -682,7 +699,7 @@ + *reloc_addr = value; + } + +-static inline void ++auto void __attribute__((always_inline)) + elf_machine_lazy_rel (struct link_map *map, + Elf32_Addr l_addr, const Elf32_Rela *reloc) + { +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/elf/entry.h glibc-2.3.2/sysdeps/hppa/elf/entry.h +--- glibc-2.3.2-orig-debian/sysdeps/hppa/elf/entry.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.3.2/sysdeps/hppa/elf/entry.h 2003-10-22 01:07:38.000000000 -0400 +@@ -0,0 +1,10 @@ ++#ifndef __ASSEMBLY__ ++extern void _start (void); ++#endif ++ ++/* The function's entry point is stored in the first word of the ++ function descriptor (plabel) of _start(). */ ++#define ENTRY_POINT ({long int *tmp = (long int *)((long)_start & ~2); tmp[0];}) ++ ++/* We have to provide a special declaration. */ ++#define ENTRY_POINT_DECL(class) class void _start (void); +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fclrexcpt.c glibc-2.3.2/sysdeps/hppa/fpu/fclrexcpt.c +--- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fclrexcpt.c 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/fpu/fclrexcpt.c 2003-10-22 01:07:38.000000000 -0400 +@@ -29,7 +29,7 @@ + __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); + + /* Clear all the relevant bits. */ +- sw[0] &= ~(excepts & FE_ALL_EXCEPT) << 27; ++ sw[0] &= ~((excepts & FE_ALL_EXCEPT) << 27); + __asm__ ("fldd 0(%0),%%fr0" : : "r" (sw)); + + /* Success. */ +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fegetenv.c glibc-2.3.2/sysdeps/hppa/fpu/fegetenv.c +--- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fegetenv.c 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/fpu/fegetenv.c 2003-10-22 01:07:38.000000000 -0400 +@@ -23,11 +23,12 @@ + int + fegetenv (fenv_t *envp) + { +- __asm__ ( +- "fstd %%fr0,0(%2)\n" +- "fstd,ma %%fr1,8(%2)\n" +- "fstd,ma %%fr2,8(%2)\n" +- "fstd %%fr3,0(%2)\n" +- : "=m" (*envp), "=r" (envp) : "1" (envp)); ++ fenv_t *temp = envp; ++ __asm__ ( "fstd,ma %%fr0,8(%1)\n" ++ "fstd,ma %%fr1,8(%1)\n" ++ "fstd,ma %%fr2,8(%1)\n" ++ "fstd %%fr3,0(%1)\n" ++ : "=m" (*temp), "+r" (temp) ++ ); + return 0; + } +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/feholdexcpt.c glibc-2.3.2/sysdeps/hppa/fpu/feholdexcpt.c +--- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/feholdexcpt.c 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/fpu/feholdexcpt.c 2003-10-22 01:07:38.000000000 -0400 +@@ -25,36 +25,29 @@ + feholdexcept (fenv_t *envp) + { + fenv_t clear; ++ fenv_t * _regs = envp; + + /* Store the environment. */ +- { +- fenv_t * _regs = envp; +- __asm__ ( +- "fstd %%fr0,0(%2)\n" +- "fstd,ma %%fr1,8(%2)\n" +- "fstd,ma %%fr2,8(%2)\n" +- "fstd %%fr3,0(%2)\n" +- : "=m" (*_regs), "=r" (_regs) : "1" (_regs)); +- memcpy (&clear, envp, sizeof (clear)); +- } ++ __asm__ ( "fstd,ma %%fr0,8(%1)\n" ++ "fstd,ma %%fr1,8(%1)\n" ++ "fstd,ma %%fr2,8(%1)\n" ++ "fstd %%fr3,0(%1)\n" ++ : "=m" (*_regs), "+r" (_regs) ++ ); ++ ++ memcpy (&clear, envp, sizeof (clear)); + +- /* Now clear all exceptions. */ +- clear.__status_word &= ~(FE_ALL_EXCEPT << 27); ++ /* Now clear all exceptions (Enable bits and flags) */ ++ clear.__status_word &= ~((FE_ALL_EXCEPT << 27) | FE_ALL_EXCEPT); + memset (clear.__exception, 0, sizeof (clear.__exception)); + +- /* And set all exceptions to non-stop. */ +- clear.__status_word &= ~FE_ALL_EXCEPT; +- + /* Load the new environment. */ +- { +- fenv_t * _regs = &clear + 1; +- __asm__ ( +- "fldd,mb -8(%2),%%fr3\n" +- "fldd,mb -8(%2),%%fr2\n" +- "fldd,mb -8(%2),%%fr1\n" +- "fldd -8(%2),%%fr0\n" +- : "=m" (*_regs), "=r" (_regs) : "1" (_regs)); +- } ++ __asm__ ( "fldd,ma -8(%1),%%fr3\n" ++ "fldd,ma -8(%1),%%fr2\n" ++ "fldd,ma -8(%1),%%fr1\n" ++ "fldd 0(%1),%%fr0\n" ++ : "=m" (*_regs), "+r" (_regs) ++ ); + + return 0; + } +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fesetenv.c glibc-2.3.2/sysdeps/hppa/fpu/fesetenv.c +--- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fesetenv.c 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/fpu/fesetenv.c 2003-10-22 01:07:38.000000000 -0400 +@@ -26,24 +26,23 @@ + fesetenv (const fenv_t *envp) + { + fenv_t temp; ++ fenv_t * _regs = &temp; + + /* Install the environment specified by ENVP. But there are a few + values which we do not want to come from the saved environment. + Therefore, we get the current environment and replace the values + we want to use from the environment specified by the parameter. */ +- { +- fenv_t * _regs = &temp; +- __asm__ ( +- "fstd %%fr0,0(%2)\n" +- "fstd,ma %%fr1,8(%2)\n" +- "fstd,ma %%fr2,8(%2)\n" +- "fstd %%fr3,0(%2)\n" +- : "=m" (*_regs), "=r" (_regs) : "1" (_regs)); +- } + +- temp.__status_word &= ~(FE_ALL_EXCEPT +- | (FE_ALL_EXCEPT << 27) +- | FE_DOWNWARD); ++ __asm__ ( "fstd,ma %%fr0,8(%1)\n" ++ "fstd,ma %%fr1,8(%1)\n" ++ "fstd,ma %%fr2,8(%1)\n" ++ "fstd %%fr3,0(%1)\n" ++ : "=m" (*_regs), "+r" (_regs) ++ ); ++ ++ temp.__status_word &= ~((FE_ALL_EXCEPT << 27) ++ | FE_DOWNWARD ++ | FE_ALL_EXCEPT); + if (envp == FE_DFL_ENV) + ; + else if (envp == FE_NOMASK_ENV) +@@ -55,16 +54,13 @@ + | (FE_ALL_EXCEPT << 27))); + + /* Load the new environment. */ +- { +- fenv_t * _regs = &temp + 1; +- __asm__ ( +- "fldd,mb -8(%2),%%fr3\n" +- "fldd,mb -8(%2),%%fr2\n" +- "fldd,mb -8(%2),%%fr1\n" +- "fldd -8(%2),%%fr0\n" +- : "=m" (*_regs), "=r" (_regs) : "1" (_regs)); +- } +- ++ __asm__ ( "fldd,ma -8(%1),%%fr3\n" ++ "fldd,ma -8(%1),%%fr2\n" ++ "fldd,ma -8(%1),%%fr1\n" ++ "fldd 0(%2),%%fr0\n" ++ : "=m" (*_regs), "+r" (_regs) ++ ); ++ + /* Success. */ + return 0; + } +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/feupdateenv.c glibc-2.3.2/sysdeps/hppa/fpu/feupdateenv.c +--- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/feupdateenv.c 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/fpu/feupdateenv.c 2003-10-22 01:07:38.000000000 -0400 +@@ -27,14 +27,12 @@ + + /* Get the current exception status. */ + __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); +- sw[0] &= (FE_ALL_EXCEPT << 27); +- ++ sw[0] &= FE_ALL_EXCEPT; ++ envp->__status_word = envp->__status_word | sw[0]; ++ + /* Install new environment. */ + fesetenv (envp); + +- /* Raise the saved exception. */ +- feraiseexcept (sw[0] >> 27); +- + /* Success. */ + return 0; + } +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fraiseexcpt.c glibc-2.3.2/sysdeps/hppa/fpu/fraiseexcpt.c +--- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fraiseexcpt.c 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/fpu/fraiseexcpt.c 2003-10-22 01:07:38.000000000 -0400 +@@ -22,6 +22,9 @@ + #include + #include + ++/* Please see section 10, ++ page 10-5 "Delayed Trapping" in the PA-RISC 2.0 Architecture manual */ ++ + int + feraiseexcept (int excepts) + { +@@ -33,56 +36,64 @@ + + /* We do these bits in assembly to be certain GCC doesn't optimize + away something important, and so we can force delayed traps to +- occur. */ +- +- /* FIXME: These all need verification! */ ++ occur. */ + +- /* First: invalid exception. */ ++ /* We use "fldd 0(%%sr0,%%sp),%0" to flush the delayed exception */ ++ ++ /* First: Invalid exception. */ + if (excepts & FE_INVALID) + { + /* One example of a invalid operation is 0 * Infinity. */ + double d = HUGE_VAL; +- __asm__ __volatile__ ("fmpy,dbl %1,%%fr0,%0\n\t" +- /* FIXME: is this a proper trap barrier? */ +- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d)); ++ __asm__ __volatile__ ( ++ " fcpy,dbl %%fr0,%%fr22\n" ++ " fmpy,dbl %0,%%fr22,%0\n" ++ " fldd 0(%%sr0,%%sp),%0" ++ : "+f" (d) : : "%fr22" ); + } + +- /* Next: division by zero. */ ++ /* Second: Division by zero. */ + if (excepts & FE_DIVBYZERO) + { + double d = 1.0; +- __asm__ __volatile__ ("fdiv,dbl %1,%%fr0,%0\n\t" +- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d)); ++ __asm__ __volatile__ ( ++ " fcpy,dbl %%fr0,%%fr22\n" ++ " fdiv,dbl %0,%%fr22,%0\n" ++ " fldd 0(%%sr0,%%sp),%0" ++ : "+f" (d) : : "%fr22" ); + } + +- /* Next: overflow. */ +- /* FIXME: Compare with IA-64 - do we have the same problem? */ ++ /* Third: Overflow. */ + if (excepts & FE_OVERFLOW) + { + double d = DBL_MAX; +- +- __asm__ __volatile__ ("fmpy,dbl %1,%1,%0\n\t" +- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d)); ++ __asm__ __volatile__ ( ++ " fadd,dbl %0,%0,%0\n" ++ " fldd 0(%%sr0,%%sp),%0" ++ : "+f" (d) ); + } + +- /* Next: underflow. */ ++ /* Fourth: Underflow. */ + if (excepts & FE_UNDERFLOW) + { + double d = DBL_MIN; +- double e = 69.69; +- +- __asm__ __volatile__ ("fdiv,dbl %1,%2,%0\n\t" +- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d), "f" (e)); ++ double e = 3.0; ++ __asm__ __volatile__ ( ++ " fdiv,dbl %0,%1,%0\n" ++ " fldd 0(%%sr0,%%sp),%0" ++ : "+f" (d) : "f" (e) ); + } + +- /* Last: inexact. */ ++ /* Fifth: Inexact */ + if (excepts & FE_INEXACT) + { +- double d = 1.0; +- double e = M_PI; +- +- __asm__ __volatile__ ("fdiv,dbl %1,%2,%0\n\t" +- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d), "f" (e)); ++ double d = M_PI; ++ double e = 69.69; ++ __asm__ __volatile__ ( ++ " fdiv,dbl %0,%1,%%fr22\n" ++ " fcnvfxt,dbl,sgl %%fr22,%%fr22L\n" ++ " fldd 0(%%sr0,%%sp),%%fr22" ++ : : "f" (d), "f" (e) : "%fr22" ); + } + + /* Success. */ +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fsetexcptflg.c glibc-2.3.2/sysdeps/hppa/fpu/fsetexcptflg.c +--- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fsetexcptflg.c 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/fpu/fsetexcptflg.c 2003-10-22 01:07:38.000000000 -0400 +@@ -29,8 +29,7 @@ + /* Get the current status word. */ + __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); + +- /* Install the new exception flags bits. */ +- sw[0] &= ~(excepts & (FE_ALL_EXCEPT >> 27)); ++ /* Clear exception flags, and install new neable trap bits */ + sw[0] |= (*flagp & excepts & FE_ALL_EXCEPT) << 27; + + /* Store the new status word. */ +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/libgcc-compat.c glibc-2.3.2/sysdeps/hppa/libgcc-compat.c +--- glibc-2.3.2-orig-debian/sysdeps/hppa/libgcc-compat.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.3.2/sysdeps/hppa/libgcc-compat.c 2003-10-22 01:07:38.000000000 -0400 +@@ -0,0 +1,43 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Randolph Chung ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++symbol_version (__clz_tab_internal, __clz_tab, GLIBC_2.2); ++ ++typedef unsigned int UQItype __attribute__ ((mode (QI))); ++ ++const UQItype __clz_tab_internal[] = ++{ ++ 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, ++ 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, ++ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, ++ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, ++ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ++ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ++ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ++ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ++}; ++ ++#endif +diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/sysdep.h glibc-2.3.2/sysdeps/hppa/sysdep.h +--- glibc-2.3.2-orig-debian/sysdeps/hppa/sysdep.h 2003-10-22 01:03:47.000000000 -0400 ++++ glibc-2.3.2/sysdeps/hppa/sysdep.h 2003-10-22 01:07:38.000000000 -0400 +@@ -70,6 +70,7 @@ + #define PSEUDO_END(name) \ + END (name) + ++#undef JUMPTARGET + #define JUMPTARGET(name) name + #define SYSCALL_PIC_SETUP /* Nothing. */ + +diff -urN glibc-2.3.2-orig-debian/sysdeps/posix/getaddrinfo.c glibc-2.3.2/sysdeps/posix/getaddrinfo.c +--- glibc-2.3.2-orig-debian/sysdeps/posix/getaddrinfo.c 2003-10-22 01:06:12.000000000 -0400 ++++ glibc-2.3.2/sysdeps/posix/getaddrinfo.c 2003-10-22 01:07:38.000000000 -0400 +@@ -53,6 +53,7 @@ + #include + #include + #include ++#include + + #define GAIH_OKIFUNSPEC 0x0100 + #define GAIH_EAI ~(GAIH_OKIFUNSPEC) +diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/Makefile glibc-2.3.2/sysdeps/unix/Makefile +--- glibc-2.3.2-orig-debian/sysdeps/unix/Makefile 2003-10-22 01:06:12.000000000 -0400 ++++ glibc-2.3.2/sysdeps/unix/Makefile 2003-10-22 01:07:38.000000000 -0400 +@@ -295,6 +295,7 @@ + $(..)sysdeps/unix/Makefile + $(make-target-directory) + (echo '#include '; \ ++ echo 'extern long int _no_syscall(void);'; \ + echo 'long int _no_syscall (void)'; \ + echo '{ __set_errno (ENOSYS); return -1L; }'; \ + for call in $(unix-stub-syscalls); do \ +diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/clone.S glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/clone.S +--- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/clone.S 2003-10-22 01:03:48.000000000 -0400 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/clone.S 2003-10-22 01:07:38.000000000 -0400 +@@ -28,6 +28,8 @@ + + /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */ + ++#warning CAO: __clone needs verification ++ + .text + ENTRY(__clone) + /* FIXME: I have no idea how profiling works on hppa. */ +@@ -42,6 +44,11 @@ + stwm %arg0,64(%arg1) + stw %arg3,-60(%arg1) + ++ /* Save the PIC register. */ ++#ifdef PIC ++ stw %r19,-32(%sr0, %sp) /* parent */ ++#endif ++ + /* Do the system call */ + copy %arg2,%arg0 + ble 0x100(%sr2,%r0) +@@ -53,19 +60,31 @@ + + comib,=,n 0,%ret0,thread_start + +- /* Successful return from the parent */ ++ /* Successful return from the parent ++ No need to restore the PIC register, ++ since we return immediately. */ ++ + bv %r0(%rp) + nop + + /* Something bad happened -- no child created */ + .Lerror: ++ ++ /* Restore the PIC register on error */ ++#ifdef PIC ++ ldw -32(%sr0, %sp), %r19 /* parent */ ++#endif ++ + b __syscall_error + sub %r0,%ret0,%arg0 + + thread_start: ++ + /* Load up the arguments. */ +- ldw -60(%sp),%arg0 +- ldw -64(%sp),%r22 ++ ldw -60(%sr0, %sp),%arg0 ++ ldw -64(%sr0, %sp),%r22 ++ ++ /* FIXME: Don't touch the childs PIC register? */ + + /* Call the user's function */ + bl $$dyncall,%r31 +diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/kernel_stat.h glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/kernel_stat.h +--- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/kernel_stat.h 2003-10-22 01:03:48.000000000 -0400 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/kernel_stat.h 2003-10-22 01:07:38.000000000 -0400 +@@ -1,30 +1,30 @@ +-/* definition of "struct stat" from the kernel */ ++/* Definition of 'struct stat' taken from kernel, please keep up to date */ + struct kernel_stat { +- unsigned long st_dev; /* dev_t is 32 bits on parisc */ +- unsigned long st_ino; /* 32 bits */ ++ unsigned int st_dev; /* dev_t is 32 bits on parisc */ ++ unsigned int st_ino; /* 32 bits */ + unsigned short st_mode; /* 16 bits */ + unsigned short st_nlink; /* 16 bits */ + unsigned short st_reserved1; /* old st_uid */ + unsigned short st_reserved2; /* old st_gid */ +- unsigned long st_rdev; +- unsigned long st_size; ++ unsigned int st_rdev; ++ unsigned int st_size; + struct timespec st_atim; +- struct timespec st_mtim; +- struct timespec st_ctim; +- long st_blksize; +- long st_blocks; +- unsigned long __unused1; /* ACL stuff */ +- unsigned long __unused2; /* network */ +- unsigned long __unused3; /* network */ +- unsigned long __unused4; /* cnodes */ ++ struct timespec st_mtim; ++ struct timespec st_ctim; ++ int st_blksize; ++ int st_blocks; ++ unsigned int __unused1; /* ACL stuff */ ++ unsigned int __unused2; /* network */ ++ unsigned int __unused3; /* network */ ++ unsigned int __unused4; /* cnodes */ + unsigned short __unused5; /* netsite */ + short st_fstype; +- unsigned long st_realdev; ++ unsigned int st_realdev; + unsigned short st_basemode; + unsigned short st_spareshort; +- unsigned long st_uid; +- unsigned long st_gid; +- unsigned long st_spare4[3]; ++ unsigned int st_uid; ++ unsigned int st_gid; ++ unsigned int st_spare4[3]; + }; + + #define _HAVE_STAT_NSEC +diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/mmap.c glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/mmap.c +--- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/mmap.c 2003-10-22 01:03:48.000000000 -0400 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/mmap.c 2003-10-22 01:07:38.000000000 -0400 +@@ -37,7 +37,7 @@ + + __ptr_t ret; + +- ret = INLINE_SYSCALL(mmap, 6, addr, len, prot, flags, fd, offset); ++ ret = (__ptr_t)INLINE_SYSCALL(mmap, 6, addr, len, prot, flags, fd, offset); + + /* check if it's really a negative number */ + if(((unsigned long)ret & 0xfffff000) == 0xfffff000) +diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/sysdep.c glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.c +--- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/sysdep.c 2003-10-22 01:03:48.000000000 -0400 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.c 2003-10-22 01:07:38.000000000 -0400 +@@ -19,6 +19,10 @@ + #include + #include + ++extern int __syscall_error(int err_no); ++extern int syscall (int sysnum, int arg0, int arg1, int arg2, ++ int arg3, int arg4, int arg5); ++ + /* This routine is jumped to by all the syscall handlers, to stash + an error number into errno. */ + int +@@ -30,25 +34,31 @@ + + + /* HPPA implements syscall() in 'C'; the assembler version would +- typically be in syscall.S. */ +- ++ typically be in syscall.S. Also note that we have INLINE_SYSCALL, ++ INTERNAL_SYSCALL, and all the generated pure assembly syscall wrappers. ++ How often the function is used is unknown. */ + int + syscall (int sysnum, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) + { +- long __sys_res; +- { +- register unsigned long __res asm("r28"); +- LOAD_ARGS_6(arg0, arg1, arg2, arg3, arg4, arg5) +- asm volatile ("ble 0x100(%%sr2, %%r0)\n\t" +- "copy %1, %%r20" +- : "=r" (__res) +- : "r" (sysnum) ASM_ARGS_6); +- __sys_res = __res; +- } +- if ((unsigned long) __sys_res >= (unsigned long)-4095) +- { +- __set_errno(-__sys_res); +- __sys_res = -1; +- } +- return __sys_res; ++ /* FIXME: Keep this matching INLINE_SYSCALL for hppa */ ++ long __sys_res; ++ { ++ register unsigned long __res asm("r28"); ++ LOAD_ARGS_6(arg0, arg1, arg2, arg3, arg4, arg5) ++ asm volatile ( ++ STW_ASM_PIC ++ " ble 0x100(%%sr2, %%r0) \n" ++ " copy %1, %%r20 \n" ++ LDW_ASM_PIC ++ : "=r" (__res) ++ : "r" (sysnum) ASM_ARGS_6 ++ : CALL_CLOB_REGS CLOB_ARGS_6 ++ ); ++ __sys_res = __res; ++ } ++ if ((unsigned long) __sys_res >= (unsigned long)-4095){ ++ __set_errno(-__sys_res); ++ __sys_res = -1; ++ } ++ return __sys_res; + } +diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/sysdep.h glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h +--- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/sysdep.h 2003-10-22 01:06:12.000000000 -0400 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h 2003-10-22 01:07:38.000000000 -0400 +@@ -31,6 +31,26 @@ + #undef SYS_ify + #define SYS_ify(syscall_name) (__NR_##syscall_name) + ++/* Included for older kernels whose headers ++ are missing the define */ ++#ifndef __NR_semtimedop ++# define __NR_semtimedop 228 ++#endif ++ ++# ifdef PIC ++/* WARNING: CANNOT BE USED IN A NOP! */ ++# define STW_PIC stw %r19, -32(%sr0, %sp) ASM_LINE_SEP ++# define LDW_PIC ldw -32(%sr0, %sp), %r19 ASM_LINE_SEP ++# define STW_ASM_PIC " copy %%r19, %%r4\n" ++# define LDW_ASM_PIC " copy %%r4, %%r19\n" ++# define USING_GR4 "%r4", ++# else ++# define STW_PIC ASM_LINE_SEP ++# define LDW_PIC ASM_LINE_SEP ++# define STW_ASM_PIC " \n" ++# define LDW_ASM_PIC " \n" ++# define USING_GR4 ++# endif + + #ifdef __ASSEMBLER__ + +@@ -77,20 +97,13 @@ + .text ASM_LINE_SEP \ + .export C_SYMBOL_NAME(name) ASM_LINE_SEP \ + .type C_SYMBOL_NAME(name),@function ASM_LINE_SEP \ +- C_LABEL(name) \ +- CALL_MCOUNT +- +-#define ret \ +- bv 0(2) ASM_LINE_SEP \ +- nop +- +-#define ret_NOERRNO \ +- bv 0(2) ASM_LINE_SEP \ +- nop ++ C_LABEL(name) ASM_LINE_SEP \ ++ CALL_MCOUNT ASM_LINE_SEP + + #undef END +-#define END(name) \ +-1: .size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name) ++#define END(name) \ ++1: ASM_LINE_SEP \ ++.size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name) ASM_LINE_SEP \ + + /* If compiled for profiling, call `mcount' at the start of each function. */ + /* No, don't bother. gcc will put the call in for us. */ +@@ -110,27 +123,83 @@ + nop + */ + +-#define PSEUDO(name, syscall_name, args) \ +- ENTRY (name) \ +- DO_CALL(syscall_name, args) ASM_LINE_SEP \ +- nop ++#define PSEUDO(name, syscall_name, args) \ ++ ENTRY (name) \ ++ DO_CALL(syscall_name, args) ASM_LINE_SEP \ ++ nop ASM_LINE_SEP ++ ++#define ret \ ++ /* Return value set by ERRNO code */ ASM_LINE_SEP \ ++ bv 0(2) ASM_LINE_SEP \ ++ nop ASM_LINE_SEP + + #undef PSEUDO_END +-#define PSEUDO_END(name) \ ++#define PSEUDO_END(name) \ + END (name) + +-#define PSEUDO_NOERRNO(name, syscall_name, args) \ +- ENTRY (name) \ +- DO_CALL(syscall_name, args) ASM_LINE_SEP \ +- nop ++/* We don't set the errno on the return from the syscall */ ++#define PSEUDO_NOERRNO(name, syscall_name, args) \ ++ ENTRY (name) \ ++ DO_CALL_NOERRNO(syscall_name, args) ASM_LINE_SEP \ ++ nop ASM_LINE_SEP + ++#define ret_NOERRNO ret ++ + #undef PSEUDO_END_NOERRNO +-#define PSEUDO_END_NOERRNO(name) \ ++#define PSEUDO_END_NOERRNO(name) \ + END (name) + ++/* This has to return the error value */ ++#undef PSEUDO_ERRVAL ++#define PSEUDO_ERRVAL(name, syscall_name, args) \ ++ ENTRY(name) \ ++ DO_CALL_ERRVAL(syscall_name, args) ASM_LINE_SEP \ ++ nop ASM_LINE_SEP ++ ++#define ret_ERRVAL ret ++ ++#undef PSEUDO_END_ERRVAL ++#define PSEUDO_END_ERRVAL(name) \ ++ END(name) ++ ++#undef JUMPTARGET + #define JUMPTARGET(name) name + #define SYSCALL_PIC_SETUP /* Nothing. */ + ++ ++/* All the syscall assembly macros rely on finding the approriate ++ SYSCALL_ERROR_LABEL or rather HANDLER. */ ++ ++/* int * __errno_location(void) so you have to store your value ++ into the return address! */ ++#define DEFAULT_SYSCALL_ERROR_HANDLER \ ++ .import __errno_location,code ASM_LINE_SEP \ ++ /* branch to errno handler */ ASM_LINE_SEP \ ++ bl __errno_location,%rp ASM_LINE_SEP ++ ++/* Here are the myriad of configuration options that the above can ++ work for... what we've done is provide the framework for future ++ changes if required to each section */ ++ ++#ifdef PIC ++# if RTLD_PRIVATE_ERRNO ++# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER ++# else /* !RTLD_PRIVATE_ERRNO */ ++# if defined _LIBC_REENTRANT ++# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER ++# else /* !_LIBC_REENTRANT */ ++# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER ++# endif /* _LIBC_REENTRANT */ ++# endif /* RTLD_PRIVATE_ERRNO */ ++#else ++# ifndef _LIBC_REENTRANT ++# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER ++# else ++# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER ++# endif ++#endif ++ ++ + /* Linux takes system call arguments in registers: + syscall number gr20 + arg 1 gr26 +@@ -159,25 +228,61 @@ + + #undef DO_CALL + #define DO_CALL(syscall_name, args) \ +- DOARGS_##args \ ++ DOARGS_##args ASM_LINE_SEP \ ++ STW_PIC ASM_LINE_SEP \ ++ /* Do syscall, delay loads # */ ASM_LINE_SEP \ + ble 0x100(%sr2,%r0) ASM_LINE_SEP \ + ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \ + ldi -0x1000,%r1 ASM_LINE_SEP \ + cmpb,>>=,n %r1,%ret0,0f ASM_LINE_SEP \ +- stw %rp, -20(%sr0,%r30) ASM_LINE_SEP \ +- stw %ret0, -24(%sr0,%r30) ASM_LINE_SEP \ +- .import __errno_location,code ASM_LINE_SEP \ +- bl __errno_location,%rp ASM_LINE_SEP \ +- ldo 64(%r30), %r30 ASM_LINE_SEP \ +- ldo -64(%r30), %r30 ASM_LINE_SEP \ +- ldw -24(%r30), %r26 ASM_LINE_SEP \ ++ /* save rp or we get lost */ ASM_LINE_SEP \ ++ stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \ ++ /* Restore r19 from frame */ ASM_LINE_SEP \ ++ LDW_PIC ASM_LINE_SEP \ ++ stw %ret0, -24(%sr0,%sp) ASM_LINE_SEP \ ++ SYSCALL_ERROR_HANDLER ASM_LINE_SEP \ ++ /* create frame */ ASM_LINE_SEP \ ++ ldo 64(%sp), %sp ASM_LINE_SEP \ ++ ldo -64(%sp), %sp ASM_LINE_SEP \ ++ /* OPTIMIZE: Don't reload r19 */ ASM_LINE_SEP \ ++ /* do a -1*syscall_ret0 */ ASM_LINE_SEP \ ++ ldw -24(%sr0,%sp), %r26 ASM_LINE_SEP \ + sub %r0, %r26, %r26 ASM_LINE_SEP \ ++ /* Store into errno location */ ASM_LINE_SEP \ + stw %r26, 0(%sr0,%ret0) ASM_LINE_SEP \ ++ /* return -1 as error */ ASM_LINE_SEP \ + ldo -1(%r0), %ret0 ASM_LINE_SEP \ +- ldw -20(%r30), %rp ASM_LINE_SEP \ ++ ldw -20(%sr0,%sp), %rp ASM_LINE_SEP \ + 0: ASM_LINE_SEP \ ++ UNDOARGS_##args ASM_LINE_SEP ++ ++/* We do nothing with the return, except hand it back to someone else */ ++#undef DO_CALL_NOERRNO ++#define DO_CALL_NOERRNO(syscall_name, args) \ ++ DOARGS_##args \ ++ /* No need to store r19 */ ASM_LINE_SEP \ ++ ble 0x100(%sr2,%r0) ASM_LINE_SEP \ ++ ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \ ++ /* Caller will restore r19 */ ASM_LINE_SEP \ + UNDOARGS_##args + ++/* Here, we return the ERRVAL in assembly, note we don't call the ++ error handler function, but we do 'negate' the return _IF_ ++ it's an error. Not sure if this is the right semantic. */ ++ ++#undef DO_CALL_ERRVAL ++#define DO_CALL_ERRVAL(syscall_name, args) \ ++ DOARGS_##args ASM_LINE_SEP \ ++ /* No need to store r19 */ ASM_LINE_SEP \ ++ ble 0x100(%sr2,%r0) ASM_LINE_SEP \ ++ ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \ ++ /* Caller will restore r19 */ ASM_LINE_SEP \ ++ ldi -0x1000,%r1 ASM_LINE_SEP \ ++ cmpb,>>=,n %r1,%ret0,0f ASM_LINE_SEP \ ++ sub %r0, %ret0, %ret0 ASM_LINE_SEP \ ++0: ASM_LINE_SEP \ ++ UNDOARGS_##args ASM_LINE_SEP ++ + #define DOARGS_0 /* nothing */ + #define DOARGS_1 /* nothing */ + #define DOARGS_2 /* nothing */ +@@ -198,26 +303,87 @@ + + #else + ++/* GCC has to be warned that a syscall may clobber all the ABI ++ registers listed as "caller-saves", see page 8, Table 2 ++ in section 2.2.6 of the PA-RISC RUN-TIME architecture ++ document. However! r28 is the result and will conflict with ++ the clobber list so it is left out. Also the input arguments ++ registers r20 -> r26 will conflict with the list so they ++ are treated specially. Although r19 is clobbered by the syscall ++ we cannot say this because it would violate ABI, thus we say ++ r4 is clobbered and use that register to save/restore r19 ++ across the syscall. */ ++ ++#define CALL_CLOB_REGS "%r1", "%r2", USING_GR4 \ ++ "%r20", "%r29", "%r31" ++ + #undef INLINE_SYSCALL +-#define INLINE_SYSCALL(name, nr, args...) ({ \ ++#define INLINE_SYSCALL(name, nr, args...) ({ \ ++ long __sys_res; \ ++ { \ ++ register unsigned long __res asm("r28"); \ ++ LOAD_ARGS_##nr(args) \ ++ /* FIXME: HACK stw/ldw r19 around syscall */ \ ++ asm volatile( \ ++ STW_ASM_PIC \ ++ " ble 0x100(%%sr2, %%r0)\n" \ ++ " ldi %1, %%r20\n" \ ++ LDW_ASM_PIC \ ++ : "=r" (__res) \ ++ : "i" (SYS_ify(name)) ASM_ARGS_##nr \ ++ : CALL_CLOB_REGS CLOB_ARGS_##nr \ ++ ); \ ++ __sys_res = (long)__res; \ ++ } \ ++ if ( (unsigned long)__sys_res >= (unsigned long)-4095 ){ \ ++ __set_errno(-__sys_res); \ ++ __sys_res = -1; \ ++ } \ ++ __sys_res; \ ++}) ++ ++/* INTERNAL_SYSCALL_DECL - Allows us to setup some function static ++ value to use within the context of the syscall ++ INTERNAL_SYSCALL_ERROR_P - Returns 0 if it wasn't an error, 1 otherwise ++ You are allowed to use the syscall result (val) and the DECL error variable ++ to determine what went wrong. ++ INTERLAL_SYSCALL_ERRNO - Munges the val/err pair into the error number. ++ In our case we just flip the sign. */ ++ ++#undef INTERNAL_SYSCALL_DECL ++#define INTERNAL_SYSCALL_DECL(err) do { } while (0) ++ ++/* Equivalent to (val < 0)&&(val > -4095) which is what we want */ ++#undef INTERNAL_SYSCALL_ERROR_P ++#define INTERNAL_SYSCALL_ERROR_P(val, err) \ ++ ((unsigned long)val >= (unsigned long)-4095) ++ ++#undef INTERNAL_SYSCALL_ERRNO ++#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) ++ ++/* Similar to INLINE_SYSCALL but we don't set errno */ ++#undef INTERNAL_SYSCALL ++#define INTERNAL_SYSCALL(name, err, nr, args...) \ ++({ \ + long __sys_res; \ + { \ + register unsigned long __res asm("r28"); \ + LOAD_ARGS_##nr(args) \ ++ /* FIXME: HACK stw/ldw r19 around syscall */ \ + asm volatile( \ +- "ble 0x100(%%sr2, %%r0)\n\t" \ +- " ldi %1, %%r20" \ ++ STW_ASM_PIC \ ++ " ble 0x100(%%sr2, %%r0)\n" \ ++ " ldi %1, %%r20\n" \ ++ LDW_ASM_PIC \ + : "=r" (__res) \ + : "i" (SYS_ify(name)) ASM_ARGS_##nr \ +- ); \ +- __sys_res = __res; \ +- } \ +- if ((unsigned long)__sys_res >= (unsigned long)-4095) { \ +- __set_errno(-__sys_res); \ +- __sys_res = -1; \ ++ : CALL_CLOB_REGS CLOB_ARGS_##nr \ ++ ); \ ++ __sys_res = (long)__res; \ + } \ + __sys_res; \ +-}) ++ }) ++ + + #define LOAD_ARGS_0() + #define LOAD_ARGS_1(r26) \ +@@ -239,12 +405,22 @@ + register unsigned long __r21 __asm__("r21") = (unsigned long)r21; \ + LOAD_ARGS_5(r26,r25,r24,r23,r22) + +-#define ASM_ARGS_0 +-#define ASM_ARGS_1 , "r" (__r26) +-#define ASM_ARGS_2 , "r" (__r26), "r" (__r25) +-#define ASM_ARGS_3 , "r" (__r26), "r" (__r25), "r" (__r24) +-#define ASM_ARGS_4 , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23) +-#define ASM_ARGS_5 , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23), "r" (__r22) +-#define ASM_ARGS_6 , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23), "r" (__r22), "r" (__r21) +- ++/* Even with zero args we use r20 for the syscall number */ ++#define ASM_ARGS_0 ++#define ASM_ARGS_1 ASM_ARGS_0, "r" (__r26) ++#define ASM_ARGS_2 ASM_ARGS_1, "r" (__r25) ++#define ASM_ARGS_3 ASM_ARGS_2, "r" (__r24) ++#define ASM_ARGS_4 ASM_ARGS_3, "r" (__r23) ++#define ASM_ARGS_5 ASM_ARGS_4, "r" (__r22) ++#define ASM_ARGS_6 ASM_ARGS_5, "r" (__r21) ++ ++/* The registers not listed as inputs but clobbered */ ++#define CLOB_ARGS_6 ++#define CLOB_ARGS_5 CLOB_ARGS_6, "%r21" ++#define CLOB_ARGS_4 CLOB_ARGS_5, "%r22" ++#define CLOB_ARGS_3 CLOB_ARGS_4, "%r23" ++#define CLOB_ARGS_2 CLOB_ARGS_3, "%r24" ++#define CLOB_ARGS_1 CLOB_ARGS_2, "%r25" ++#define CLOB_ARGS_0 CLOB_ARGS_1, "%r26" ++ + #endif /* __ASSEMBLER__ */ +diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/umount.c glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/umount.c +--- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/umount.c 2003-10-22 01:03:48.000000000 -0400 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/umount.c 2003-10-22 01:07:38.000000000 -0400 +@@ -21,6 +21,7 @@ + does down here. */ + + extern long int __umount2 (const char *name, int flags); ++extern long int __umount (const char * name); + + long int + __umount (const char *name) +diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/sys/sysctl.h glibc-2.3.2/sysdeps/unix/sysv/linux/sys/sysctl.h +--- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/sys/sysctl.h 2003-10-22 01:06:13.000000000 -0400 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sys/sysctl.h 2003-10-22 01:07:38.000000000 -0400 +@@ -24,7 +24,9 @@ + #include + /* Prevent more kernel headers than necessary to be included. */ + #define _LINUX_KERNEL_H 1 +-#define _LINUX_TYPES_H 1 ++#ifndef _LINUX_TYPES_H ++# define _LINUX_TYPES_H 1 ++#endif + #define _LINUX_LIST_H 1 + /* We do need this one for the declarations in , + since we've elided the inclusion of that gets them. */ --- glibc-2.4.orig/debian/patches/hppa/submitted-full-nptl-2004-12-20.diff +++ glibc-2.4/debian/patches/hppa/submitted-full-nptl-2004-12-20.diff @@ -0,0 +1,1183 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: parisc patches based on 50_glibc232-hppa-full-nptl-2003-10-22. +# This dpatch excepts (1) patches applied already in cvs +# (2) hppa ldcw spinlock fix. (2) should be merged in future. +# DP: Related bugs: +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: Carlos O'Donell +# DP: Upstream status: Pending +# DP: Status Details: +# DP: Date: 2005-03-14 + +# Patched with: +# +# Linuxthread fixes: +# patches-2003-10-14/glibc23-00.a-noarch-pthreads +# patches-2003-10-14/glibc23-00.a1-noarch-sgu +# patches-2003-10-14/glibc23-00.b-noarch-sysdeps-pthreads +# patches-2003-10-14/glibc23-00.c2-hppa-pthreads +# patches-2003-10-14/glibc23-01d-hppa-dl-machine +# +# libgcc compat fixes: +# patches-2003-10-14/glibc23-02-hppa-compat +# +# Introduce atomicity warnings: +# patches-2003-10-14/glibc23-03-hppa-atomicity +# +# Don't align all mallocs at 16: +# patches-2003-10-14/glibc23-04-hppa-malloc8 +# +# Sysdep updates including cancellation: +# patches-2003-10-14/glibc23-05n-hppa-sysdep +# patches-2003-10-14/glibc23-06r-hppa-sysdep-cancel +# patches-2003-10-14/glibc23-07b-hppa-sysdep2 +# = Patched 2003-10-20 to remove load offset typo +# Elf entry fix for ld, removes kernel hack: +# patches-2003-10-14/glibc23-09-hppa-entry +# +# Patch to use new atomic structure: +# patches-2003-10-14/glibc23-12-hppa-oldsemaphore +# +# We have sjlj exceptions but compat code was for dwarf: +# patches-2003-10-14/glibc23-13-hppa-framestatefor +# +# Fix function pointer resolving (needs to move to new generic method): +# patches-2003-10-14/glibc23-14-hppa-dlfptr +# +# Fixes getaddrinfo from upstream: +# patches-2003-10-14/glibc23-15-generic-getaddrinfo +# +# Include new pthreadtypes for hppa: +# patches-2003-10-14/glibc23-17b-hppa-pthreadtypes +# +# Fix warnings: +# patches-2003-10-14/glibc23-18-generic-sysctlh +# +# Add semtimedop for hppa: +# patches-2003-10-14/glibc23-19-hppa-semtimedop +# +# Fix symbol resolution issues: +# patches-2003-10-14/glibc23-20c-hppa-ptmachine +# +# Make the kernelstat 64-bit uncompatible: +# patches-2003-10-14/glibc23-21-hppa-kernelstat +# +# Fixup C version of syscalls: +# patches-2003-10-14/glibc23-22c-hppa-sysdepc +# +# Fixes for sjlj versus dwarf compat code: +# patches-2003-10-14/glibc23-23-hppa-unwind-dw2 +# +# Allow hppa to get at the linkmap: +# patches-2003-10-14/glibc23-25b-dynamic-link +# +# Fix all of the assembly for hppa fpu code: +# patches-2003-10-14/glibc23-26e-fpu +# = Patched 2003-10-20 to fix FE_INEXACT failures +# +# Add small amount of debugging code to make locale +# generation easier to understand: +# patches-2003-10-14/glibc23-27-debug-gen-locale +# +# Fixup clone to save/restore pic register: +# patches-2003-10-14/glibc23-28c-hppa-clone +# +# Fixup prototype warnings: +# patches-2003-10-14/glibc23-29-hppa-prototypes +# +# Fixup bad cats: +# patches-2003-10-14/glibc23-30-hppa-casts +# +# Fixup warning: +# patches-2003-10-14/glibc23-31-generic-unix-Makefile +# +# Implement proper non-linuxthread locking: +# patches-2003-10-14/glibc23-32-hppa-thread-m +# patches-2003-10-14/glibc23-32a-hppa-thread-m +# +# Fixup warnings: +# patches-2003-10-14/glibc23-33-generic-internals +# +# These patches generate rejects, and those rejects were then dealt +# with on a per patch basis. Some were discarded others merged. +# +# append the patch here and adjust the -p? flag in the patch calls. + + +# +# it seems we do not need it... +# +#diff -urN glibc-2.3.2-orig-debian/elf/dynamic-link.h glibc-2.3.2/elf/dynamic-link.h +#--- glibc-2.3.2-orig-debian/elf/dynamic-link.h 2003-10-22 01:06:09.000000000 -0400 +#+++ glibc-2.3.2/elf/dynamic-link.h 2003-10-22 01:11:53.000000000 -0400 +#@@ -39,12 +39,21 @@ +# elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, +# const ElfW(Sym) *sym, const struct r_found_version *version, +# void *const reloc_addr); +#+# if ELF_MACHINE_REL_RELATIVE_NEEDSLINKMAP +#+auto void __attribute__((always_inline)) +#+elf_machine_rel_relative (struct link_map *map, ElfW(Addr) l_addr, const ElfW(Rel) *reloc, +#+ void *const reloc_addr); +#+auto void __attribute__((always_inline)) +#+elf_machine_rela_relative (struct link_map *map, ElfW(Addr) l_addr, const ElfW(Rela) *reloc, +#+ void *const reloc_addr); +#+# else +# auto void __attribute__((always_inline)) +# elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, +# void *const reloc_addr); +# auto void __attribute__((always_inline)) +# elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, +# void *const reloc_addr); +#+# endif +# # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL +# auto void __attribute__((always_inline)) +# elf_machine_lazy_rel (struct link_map *map, + + +# +# no, it's not applied yet. it may be needed... we need investigation. +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/attr.c glibc-2.3.2/linuxthreads/attr.c +#--- glibc-2.3.2-orig-debian/linuxthreads/attr.c 2003-10-22 01:06:10.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/attr.c 2003-10-22 01:07:38.000000000 -0400 +#@@ -450,12 +450,19 @@ +# { +# /* Found the entry. Now we have the info we need. */ +# attr->__stacksize = rl.rlim_cur; +#+#ifdef _STACK_GROWS_DOWN +# attr->__stackaddr = (void *) to; +#- +#+#else +#+ attr->__stackaddr = (void *) from; +#+#endif +# /* The limit might be too high. This is a bogus +# situation but try to avoid making it worse. */ +# if ((size_t) attr->__stacksize > (size_t) attr->__stackaddr) +#+#ifdef _STACK_GROWS_DOWN +# attr->__stacksize = (size_t) attr->__stackaddr; +#+#else +#+ attr->__stacksize = (size_t)(to - from); +#+#endif +# +# /* We succeed and no need to look further. */ +# ret = 0; + + +# +# no, not applied yet. (lock change) +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/descr.h glibc-2.3.2/linuxthreads/descr.h +#--- glibc-2.3.2-orig-debian/linuxthreads/descr.h 2003-10-22 01:06:10.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/descr.h 2003-10-22 01:07:38.000000000 -0400 +#@@ -71,7 +71,7 @@ +# /* Atomic counter made possible by compare_and_swap */ +# struct pthread_atomic { +# long p_count; +#- int p_spinlock; +#+ __atomic_lock_t p_spinlock; +# }; + + + +# +# not applied yet. (lock change) +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/oldsemaphore.c glibc-2.3.2/linuxthreads/oldsemaphore.c +#--- glibc-2.3.2-orig-debian/linuxthreads/oldsemaphore.c 2003-10-22 01:03:57.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/oldsemaphore.c 2003-10-22 01:07:38.000000000 -0400 +#@@ -31,7 +31,7 @@ +# +# typedef struct { +# long int sem_status; +#- int sem_spinlock; +#+ __atomic_lock_t sem_spinlock; +# } old_sem_t; +# +# extern int __old_sem_init (old_sem_t *__sem, int __pshared, unsigned int __value); + + +# +# not applied yet. (I don't know why it's needed, but lock change?) +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/pt-machine.c glibc-2.3.2/linuxthreads/pt-machine.c +#--- glibc-2.3.2-orig-debian/linuxthreads/pt-machine.c 2003-10-22 01:03:57.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/pt-machine.c 2003-10-22 01:07:38.000000000 -0400 +#@@ -19,7 +19,9 @@ +# +# #define PT_EI +# +#-extern long int testandset (int *spinlock); +#+#include +#+ +#+extern long int testandset (__atomic_lock_t *spinlock); +# extern int __compare_and_swap (long int *p, long int oldval, long int newval); +# +# #include + + +# +# partially applied: 893, 908. but not for SPINLOCK (lock change). +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/pthread.c glibc-2.3.2/linuxthreads/pthread.c +#--- glibc-2.3.2-orig-debian/linuxthreads/pthread.c 2003-10-22 01:06:16.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/pthread.c 2003-10-22 01:07:38.000000000 -0400 +#@@ -300,9 +300,9 @@ +# pthread_descr self; +# +# /* First of all init __pthread_handles[0] and [1] if needed. */ +#-# if __LT_SPINLOCK_INIT != 0 +#- __pthread_handles[0].h_lock = __LOCK_INITIALIZER; +#- __pthread_handles[1].h_lock = __LOCK_INITIALIZER; +#+# ifdef __LT_INITIALIZER_NOT_ZERO +#+ __pthread_handles[0].h_lock = __LOCK_ALT_INITIALIZER; +#+ __pthread_handles[1].h_lock = __LOCK_ALT_INITIALIZER; +# # endif +# # ifndef SHARED +# /* Unlike in the dynamically linked case the dynamic linker has not +#@@ -370,7 +370,7 @@ +# # endif +# /* self->p_start_args need not be initialized, it's all zero. */ +# self->p_userstack = 1; +#-# if __LT_SPINLOCK_INIT != 0 +#+# ifdef __LT_INITIALIZER_NOT_ZERO +# self->p_resume_count = (struct pthread_atomic) __ATOMIC_INITIALIZER; +# # endif +# self->p_alloca_cutoff = __MAX_ALLOCA_CUTOFF; +#@@ -384,9 +384,9 @@ +# #else /* USE_TLS */ +# +# /* First of all init __pthread_handles[0] and [1]. */ +#-# if __LT_SPINLOCK_INIT != 0 +#- __pthread_handles[0].h_lock = __LOCK_INITIALIZER; +#- __pthread_handles[1].h_lock = __LOCK_INITIALIZER; +#+# ifdef __LT_INITIALIZER_NOT_ZERO +#+ __pthread_handles[0].h_lock = __LOCK_ALT_INITIALIZER; +#+ __pthread_handles[1].h_lock = __LOCK_ALT_INITIALIZER; +# # endif +# __pthread_handles[0].h_descr = &__pthread_initial_thread; +# __pthread_handles[1].h_descr = &__pthread_manager_thread; +#@@ -893,7 +893,11 @@ +# /* __pthread_handles[0] is the initial thread, __pthread_handles[1] is +# the manager threads handled specially in thread_self(), so start at 2 */ +# h = __pthread_handles + 2; +#+# ifdef _STACK_GROWS_UP +#+ while (! (sp >= (char *) h->h_descr && sp < h->h_descr->p_guardaddr)) h++; +#+# else +# while (! (sp <= (char *) h->h_descr && sp >= h->h_bottom)) h++; +#+# endif +# return h->h_descr; +# } +# +#@@ -908,11 +912,22 @@ +# return manager_thread; +# h = __pthread_handles + 2; +# # ifdef USE_TLS +#+# ifdef _STACK_GROWS_UP +#+ while (h->h_descr == NULL +#+ || ! (sp >= h->h_descr->p_stackaddr && +#+ sp < h->h_descr->p_guardaddr)) +#+# else +# while (h->h_descr == NULL +#- || ! (sp <= (char *) h->h_descr->p_stackaddr && sp >= h->h_bottom)) +#+ || ! (sp <= h->h_descr->p_stackaddr && +#+ sp >= h->h_bottom)) +#+# endif +# h++; +# # else +#+# ifdef _STACK_GROWS_UP +#+ while (! (sp >= (char *) h->h_descr && sp < h->h_descr->p_guardaddr)) +#+# else +# while (! (sp <= (char *) h->h_descr && sp >= h->h_bottom)) +#+# endif +# h++; +# # endif +# return h->h_descr; + + +# +# not (lock change) +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/spinlock.c glibc-2.3.2/linuxthreads/spinlock.c +#--- glibc-2.3.2-orig-debian/linuxthreads/spinlock.c 2003-10-22 01:03:57.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/spinlock.c 2003-10-22 01:07:38.000000000 -0400 +#@@ -24,9 +24,9 @@ +# #include "spinlock.h" +# #include "restart.h" +# +#-static void __pthread_acquire(int * spinlock); +#+static void __pthread_acquire(__atomic_lock_t * spinlock); +# +#-static inline void __pthread_release(int * spinlock) +#+static inline void __pthread_release(__atomic_lock_t * spinlock) +# { +# WRITE_MEMORY_BARRIER(); +# *spinlock = __LT_SPINLOCK_INIT; +#@@ -269,11 +269,11 @@ +# struct wait_node { +# struct wait_node *next; /* Next node in null terminated linked list */ +# pthread_descr thr; /* The thread waiting with this node */ +#- int abandoned; /* Atomic flag */ +#+ __atomic_lock_t abandoned; /* Atomic flag */ +# }; +# +# static long wait_node_free_list; +#-static int wait_node_free_list_spinlock; +#+__pthread_lock_define_initialized(static, wait_node_free_list_spinlock); +# +# /* Allocate a new node from the head of the free list using an atomic +# operation, or else using malloc if that list is empty. A fundamental +#@@ -376,7 +376,7 @@ +# if (self == NULL) +# self = thread_self(); +# +#- wait_node.abandoned = 0; +#+ wait_node.abandoned = __LT_SPINLOCK_INIT; +# wait_node.next = (struct wait_node *) lock->__status; +# wait_node.thr = self; +# lock->__status = (long) &wait_node; +#@@ -402,7 +402,7 @@ +# wait_node.thr = self; +# newstatus = (long) &wait_node; +# } +#- wait_node.abandoned = 0; +#+ wait_node.abandoned = __LT_SPINLOCK_INIT; +# wait_node.next = (struct wait_node *) oldstatus; +# /* Make sure the store in wait_node.next completes before performing +# the compare-and-swap */ +#@@ -451,7 +451,7 @@ +# if (self == NULL) +# self = thread_self(); +# +#- p_wait_node->abandoned = 0; +#+ p_wait_node->abandoned = __LT_SPINLOCK_INIT; +# p_wait_node->next = (struct wait_node *) lock->__status; +# p_wait_node->thr = self; +# lock->__status = (long) p_wait_node; +#@@ -474,7 +474,7 @@ +# p_wait_node->thr = self; +# newstatus = (long) p_wait_node; +# } +#- p_wait_node->abandoned = 0; +#+ p_wait_node->abandoned = __LT_SPINLOCK_INIT; +# p_wait_node->next = (struct wait_node *) oldstatus; +# /* Make sure the store in wait_node.next completes before performing +# the compare-and-swap */ +#@@ -574,7 +574,7 @@ +# while (p_node != (struct wait_node *) 1) { +# int prio; +# +#- if (p_node->abandoned) { +#+ if (lock_held(&p_node->abandoned)) { +# /* Remove abandoned node. */ +# #if defined TEST_FOR_COMPARE_AND_SWAP +# if (!__pthread_has_cas) +#@@ -662,7 +662,7 @@ +# #if !defined HAS_COMPARE_AND_SWAP || defined TEST_FOR_COMPARE_AND_SWAP +# +# int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +#- int * spinlock) +#+ __atomic_lock_t * spinlock) +# { +# int res; +# +#@@ -699,7 +699,7 @@ +# - When nanosleep() returns, we try again, doing MAX_SPIN_COUNT +# sched_yield(), then sleeping again if needed. */ +# +#-static void __pthread_acquire(int * spinlock) +#+static void __pthread_acquire(__atomic_lock_t * spinlock) +# { +# int cnt = 0; +# struct timespec tm; + + +# +# not (lock change) +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/spinlock.h glibc-2.3.2/linuxthreads/spinlock.h +#--- glibc-2.3.2-orig-debian/linuxthreads/spinlock.h 2003-10-22 01:06:10.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/spinlock.h 2003-10-22 01:07:38.000000000 -0400 +#@@ -33,14 +33,28 @@ +# #endif +# #endif +# +#+/* Define lock_held for all arches that don't need a modified copy. */ +#+#ifndef __LT_INITIALIZER_NOT_ZERO +#+# define lock_held(p) *(p) +#+#endif +#+ +#+/* Initliazers for possibly complex structures */ +#+#ifdef __LT_INITIALIZER_NOT_ZERO +#+# define __pthread_lock_define_initialized(CLASS,NAME) \ +#+ CLASS __atomic_lock_t NAME = __LT_SPINLOCK_ALT_INIT +#+#else +#+# define __pthread_lock_define_initialized(CLASS,NAME) \ +#+ CLASS __atomic_lock_t NAME +#+#endif +#+ +# #if defined(TEST_FOR_COMPARE_AND_SWAP) +# +# extern int __pthread_has_cas; +# extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +#- int * spinlock); +#+ __atomic_lock_t * spinlock); +# +# static inline int compare_and_swap(long * ptr, long oldval, long newval, +#- int * spinlock) +#+ __atomic_lock_t * spinlock) +# { +# if (__builtin_expect (__pthread_has_cas, 1)) +# return __compare_and_swap(ptr, oldval, newval); +#@@ -58,7 +72,7 @@ +# +# static inline int +# compare_and_swap_with_release_semantics (long * ptr, long oldval, +#- long newval, int * spinlock) +#+ long newval, __atomic_lock_t * spinlock) +# { +# return __compare_and_swap_with_release_semantics (ptr, oldval, +# newval); +#@@ -67,7 +81,7 @@ +# #endif +# +# static inline int compare_and_swap(long * ptr, long oldval, long newval, +#- int * spinlock) +#+ __atomic_lock_t * spinlock) +# { +# return __compare_and_swap(ptr, oldval, newval); +# } +#@@ -75,10 +89,10 @@ +# #else +# +# extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +#- int * spinlock); +#+ __atomic_lock_t * spinlock); +# +# static inline int compare_and_swap(long * ptr, long oldval, long newval, +#- int * spinlock) +#+ __atomic_lock_t * spinlock) +# { +# return __pthread_compare_and_swap(ptr, oldval, newval, spinlock); +# } + + +# +# not applied (lock change) +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pspinlock.c glibc-2.3.2/linuxthreads/sysdeps/hppa/pspinlock.c +#--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pspinlock.c 2003-10-22 01:03:57.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pspinlock.c 2003-10-22 01:07:38.000000000 -0400 +#@@ -24,13 +24,10 @@ +# int +# __pthread_spin_lock (pthread_spinlock_t *lock) +# { +#- unsigned int val; +#+ volatile unsigned int *addr = __ldcw_align (lock); +# +#- do +#- asm volatile ("ldcw %1,%0" +#- : "=r" (val), "=m" (*lock) +#- : "m" (*lock)); +#- while (!val); +#+ while (__ldcw (addr) == 0) +#+ while (*addr == 0) ; +# +# return 0; +# } +#@@ -40,13 +37,9 @@ +# int +# __pthread_spin_trylock (pthread_spinlock_t *lock) +# { +#- unsigned int val; +#+ volatile unsigned int *a = __ldcw_align (lock); +# +#- asm volatile ("ldcw %1,%0" +#- : "=r" (val), "=m" (*lock) +#- : "m" (*lock)); +#- +#- return val ? 0 : EBUSY; +#+ return __ldcw (a) ? 0 : EBUSY; +# } +# weak_alias (__pthread_spin_trylock, pthread_spin_trylock) +# +#@@ -54,7 +47,9 @@ +# int +# __pthread_spin_unlock (pthread_spinlock_t *lock) +# { +#- *lock = 1; +#+ volatile unsigned int *a = __ldcw_align (lock); +#+ +#+ *a = 1; +# return 0; +# } +# weak_alias (__pthread_spin_unlock, pthread_spin_unlock) +#@@ -66,7 +61,9 @@ +# /* We can ignore the `pshared' parameter. Since we are busy-waiting +# all processes which can access the memory location `lock' points +# to can use the spinlock. */ +#- *lock = 1; +#+ volatile unsigned int *a = __ldcw_align (lock); +#+ +#+ *a = 1; +# return 0; +# } +# weak_alias (__pthread_spin_init, pthread_spin_init) + + +# +# not applied (lock change) +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pt-machine.h glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h +#--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pt-machine.h 2003-10-22 01:06:10.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h 2003-10-22 01:12:51.000000000 -0400 +#@@ -22,41 +22,97 @@ +# #ifndef _PT_MACHINE_H +# #define _PT_MACHINE_H 1 +# +#+#include +# #include +# +# #ifndef PT_EI +# # define PT_EI extern inline __attribute__ ((always_inline)) +# #endif +# +#-extern long int testandset (int *spinlock); +#-extern int __compare_and_swap (long int *p, long int oldval, long int newval); +#+extern inline long int testandset (__atomic_lock_t *spinlock); +#+extern inline int __compare_and_swap (long int *p, long int oldval, long int newval); +#+extern inline int lock_held (__atomic_lock_t *spinlock); +#+extern inline int __load_and_clear (__atomic_lock_t *spinlock); +# +# /* Get some notion of the current stack. Need not be exactly the top +# of the stack, just something somewhere in the current frame. */ +# #define CURRENT_STACK_FRAME stack_pointer +# register char * stack_pointer __asm__ ("%r30"); +# +#+/* Get/Set thread-specific pointer. We have to call into the kernel to +#+ * modify it, but we can read it in user mode. */ +#+ +#+#define THREAD_SELF __get_cr27() +#+ +#+static inline struct _pthread_descr_struct * __get_cr27(void) +#+{ +#+ long cr27; +#+ asm("mfctl %%cr27, %0" : "=r" (cr27) : ); +#+ return (struct _pthread_descr_struct *) cr27; +#+} +#+ +#+#define INIT_THREAD_SELF(descr, nr) __set_cr27(descr) +#+ +#+static inline void __set_cr27(struct _pthread_descr_struct * cr27) +#+{ +#+ asm( +#+ "ble 0xe0(%%sr2, %%r0)\n\t" +#+ "copy %0, %%r26" +#+ : : "r" (cr27) : "r26" ); +#+} +#+ +#+/* We want the OS to assign stack addresses. */ +#+#define FLOATING_STACKS 1 +#+#define ARCH_STACK_MAX_SIZE 8*1024*1024 +# +# /* The hppa only has one atomic read and modify memory operation, +# load and clear, so hppa spinlocks must use zero to signify that +#- someone is holding the lock. */ +#+ someone is holding the lock. The address used for the ldcw +#+ semaphore must be 16-byte aligned. */ +#+#define __ldcw(a) ({ \ +#+ unsigned int __ret; \ +#+ __asm__ __volatile__("ldcw 0(%2),%0" \ +#+ : "=r" (__ret), "=m" (*(a)) : "r" (a)); \ +#+ __ret; \ +#+}) +#+ +#+/* Because malloc only guarantees 8-byte alignment for malloc'd data, +#+ and GCC only guarantees 8-byte alignment for stack locals, we can't +#+ be assured of 16-byte alignment for atomic lock data even if we +#+ specify "__attribute ((aligned(16)))" in the type declaration. So, +#+ we use a struct containing an array of four ints for the atomic lock +#+ type and dynamically select the 16-byte aligned int from the array +#+ for the semaphore. */ +#+#define __PA_LDCW_ALIGNMENT 16 +#+#define __ldcw_align(a) ({ \ +#+ volatile unsigned int __ret = (unsigned int) a; \ +#+ if ((__ret & ~(__PA_LDCW_ALIGNMENT - 1)) < (unsigned int) a) \ +#+ __ret = (__ret & ~(__PA_LDCW_ALIGNMENT - 1)) + __PA_LDCW_ALIGNMENT; \ +#+ (unsigned int *) __ret; \ +#+}) +# +#-#define xstr(s) str(s) +#-#define str(s) #s +# /* Spinlock implementation; required. */ +#-PT_EI long int +#-testandset (int *spinlock) +#+PT_EI int +#+__load_and_clear (__atomic_lock_t *spinlock) +# { +#- int ret; +#+ volatile unsigned int *a = __ldcw_align (spinlock); +# +#- __asm__ __volatile__( +#- "ldcw 0(%2),%0" +#- : "=r"(ret), "=m"(*spinlock) +#- : "r"(spinlock)); +#+ return __ldcw (a); +#+} +# +#- return ret == 0; +#+/* Emulate testandset */ +#+PT_EI long int +#+testandset (__atomic_lock_t *spinlock) +#+{ +#+ return (__load_and_clear(spinlock) == 0); +# } +#-#undef str +#-#undef xstr +# +#+PT_EI int +#+lock_held (__atomic_lock_t *spinlock) +#+{ +#+ volatile unsigned int *a = __ldcw_align (spinlock); +#+ +#+ return *a == 0; +#+} +#+ +# #endif /* pt-machine.h */ + + + +# +# not (lock change). +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/pthread/bits/libc-lock.h glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h +#--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-10-22 01:06:16.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-10-22 01:07:38.000000000 -0400 +#@@ -71,12 +71,12 @@ +# initialized locks must be set to one due to the lack of normal +# atomic operations.) */ +# +#-#if __LT_SPINLOCK_INIT == 0 +#+#ifdef __LT_INITIALIZER_NOT_ZERO +# # define __libc_lock_define_initialized(CLASS,NAME) \ +#- CLASS __libc_lock_t NAME; +#+ CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; +# #else +# # define __libc_lock_define_initialized(CLASS,NAME) \ +#- CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; +#+ CLASS __libc_lock_t NAME; +# #endif +# +# #define __libc_rwlock_define_initialized(CLASS,NAME) \ + + +# +# not. (lock change) +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h +#--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2003-10-22 01:03:57.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2003-10-22 01:07:38.000000000 -0400 +#@@ -22,12 +22,14 @@ +# #define __need_schedparam +# #include +# +#+typedef int __atomic_lock_t; +#+ +# /* Fast locks (not abstract because mutexes and conditions aren't abstract). */ +# struct _pthread_fastlock +# { +#- long int __status; /* "Free" or "taken" or head of waiting list */ +#- int __spinlock; /* Used by compare_and_swap emulation. Also, +#- adaptive SMP lock stores spin count here. */ +#+ long int __status; /* "Free" or "taken" or head of waiting list */ +#+ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also, +#+ adaptive SMP lock stores spin count here. */ +# }; +# +# #ifndef _PTHREAD_DESCR_DEFINED + + + +# +# not (lock change) +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h +#--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2003-10-22 01:03:57.000000000 -0400 +#+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2003-10-22 01:07:38.000000000 -0400 +#@@ -19,9 +19,23 @@ +# +# /* Initial value of a spinlock. PA-RISC only implements atomic load +# and clear so this must be non-zero. */ +#-#define __LT_SPINLOCK_INIT 1 +#+#define __LT_SPINLOCK_INIT ((__atomic_lock_t) { { 1, 1, 1, 1 } }) +#+ +#+/* Initialize global spinlocks without cast, generally macro wrapped */ +#+#define __LT_SPINLOCK_ALT_INIT { { 1, 1, 1, 1 } } +#+ +#+/* Macros for lock initializers, not using the above definition. +#+ The above definition is not used in the case that static initializers +#+ use this value. */ +#+#define __LOCK_INITIALIZER { __LT_SPINLOCK_ALT_INIT, 0 } +#+ +#+/* Used to initialize _pthread_fastlock's in non-static case */ +#+#define __LOCK_ALT_INITIALIZER ((struct _pthread_fastlock){ __LT_SPINLOCK_INIT, 0 }) +#+ +#+/* Used in pthread_atomic initialization */ +#+#define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_ALT_INIT } +#+ +#+/* Tell the rest of the code that the initializer is non-zero without +#+ explaining it's internal structure */ +#+#define __LT_INITIALIZER_NOT_ZERO +# +#-/* Macros for lock initializers, using the above definition. */ +#-#define __LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } +#-#define __ALT_LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } +#-#define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_INIT } + + + +# +# not (lock change) +# +#diff -urN glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h +#--- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h 1969-12-31 19:00:00.000000000 -0500 +#+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h 2003-10-22 01:07:38.000000000 -0400 +#@@ -0,0 +1,160 @@ +#+/* Linuxthreads - a simple clone()-based implementation of Posix */ +#+/* threads for Linux. */ +#+/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */ +#+/* */ +#+/* This program is free software; you can redistribute it and/or */ +#+/* modify it under the terms of the GNU Library General Public License */ +#+/* as published by the Free Software Foundation; either version 2 */ +#+/* of the License, 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 Library General Public License for more details. */ +#+ +#+#if !defined _BITS_TYPES_H && !defined _PTHREAD_H +#+# error "Never include directly; use instead." +#+#endif +#+ +#+#ifndef _BITS_PTHREADTYPES_H +#+#define _BITS_PTHREADTYPES_H 1 +#+ +#+#define __need_schedparam +#+#include +#+ +#+/* We need 128-bit alignment for the ldcw semaphore. At most, we are +#+ assured of 64-bit alignment for stack locals and malloc'd data. Thus, +#+ we use a struct with four ints for the atomic lock type. The locking +#+ code will figure out which of the four to use for the ldcw semaphore. */ +#+typedef volatile struct { +#+ int lock[4]; +#+} __attribute__ ((aligned(16))) __atomic_lock_t; +#+ +#+/* Fast locks (not abstract because mutexes and conditions aren't abstract). */ +#+struct _pthread_fastlock +#+{ +#+ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also, +#+ adaptive SMP lock stores spin count here. */ +#+ long int __status; /* "Free" or "taken" or head of waiting list */ +#+}; +#+ +#+#ifndef _PTHREAD_DESCR_DEFINED +#+/* Thread descriptors */ +#+typedef struct _pthread_descr_struct *_pthread_descr; +#+# define _PTHREAD_DESCR_DEFINED +#+#endif +#+ +#+ +#+/* Attributes for threads. */ +#+typedef struct __pthread_attr_s +#+{ +#+ int __detachstate; +#+ int __schedpolicy; +#+ struct __sched_param __schedparam; +#+ int __inheritsched; +#+ int __scope; +#+ size_t __guardsize; +#+ int __stackaddr_set; +#+ void *__stackaddr; +#+ size_t __stacksize; +#+} pthread_attr_t; +#+ +#+ +#+/* Conditions (not abstract because of PTHREAD_COND_INITIALIZER */ +#+ +#+#ifdef __GLIBC_HAVE_LONG_LONG +#+__extension__ typedef long long __pthread_cond_align_t; +#+#else +#+typedef long __pthread_cond_align_t; +#+#endif +#+ +#+typedef struct +#+{ +#+ struct _pthread_fastlock __c_lock; /* Protect against concurrent access */ +#+ _pthread_descr __c_waiting; /* Threads waiting on this condition */ +#+ char __padding[48 - sizeof (struct _pthread_fastlock) +#+ - sizeof (_pthread_descr) - sizeof (__pthread_cond_align_t)]; +#+ __pthread_cond_align_t __align; +#+} pthread_cond_t; +#+ +#+ +#+/* Attribute for conditionally variables. */ +#+typedef struct +#+{ +#+ int __dummy; +#+} pthread_condattr_t; +#+ +#+/* Keys for thread-specific data */ +#+typedef unsigned int pthread_key_t; +#+ +#+ +#+/* Mutexes (not abstract because of PTHREAD_MUTEX_INITIALIZER). */ +#+/* (The layout is unnatural to maintain binary compatibility +#+ with earlier releases of LinuxThreads.) */ +#+typedef struct +#+{ +#+ int __m_reserved; /* Reserved for future use */ +#+ int __m_count; /* Depth of recursive locking */ +#+ _pthread_descr __m_owner; /* Owner thread (if recursive or errcheck) */ +#+ int __m_kind; /* Mutex kind: fast, recursive or errcheck */ +#+ struct _pthread_fastlock __m_lock; /* Underlying fast lock */ +#+} pthread_mutex_t; +#+ +#+ +#+/* Attribute for mutex. */ +#+typedef struct +#+{ +#+ int __mutexkind; +#+} pthread_mutexattr_t; +#+ +#+ +#+/* Once-only execution */ +#+typedef int pthread_once_t; +#+ +#+ +#+#ifdef __USE_UNIX98 +#+/* Read-write locks. */ +#+typedef struct _pthread_rwlock_t +#+{ +#+ struct _pthread_fastlock __rw_lock; /* Lock to guarantee mutual exclusion */ +#+ int __rw_readers; /* Number of readers */ +#+ _pthread_descr __rw_writer; /* Identity of writer, or NULL if none */ +#+ _pthread_descr __rw_read_waiting; /* Threads waiting for reading */ +#+ _pthread_descr __rw_write_waiting; /* Threads waiting for writing */ +#+ int __rw_kind; /* Reader/Writer preference selection */ +#+ int __rw_pshared; /* Shared between processes or not */ +#+} pthread_rwlock_t; +#+ +#+ +#+/* Attribute for read-write locks. */ +#+typedef struct +#+{ +#+ int __lockkind; +#+ int __pshared; +#+} pthread_rwlockattr_t; +#+#endif +#+ +#+#ifdef __USE_XOPEN2K +#+/* POSIX spinlock data type. */ +#+typedef __atomic_lock_t pthread_spinlock_t; +#+ +#+/* POSIX barrier. */ +#+typedef struct { +#+ struct _pthread_fastlock __ba_lock; /* Lock to guarantee mutual exclusion */ +#+ int __ba_required; /* Threads needed for completion */ +#+ int __ba_present; /* Threads waiting */ +#+ _pthread_descr __ba_waiting; /* Queue of waiting threads */ +#+} pthread_barrier_t; +#+ +#+/* barrier attribute */ +#+typedef struct { +#+ int __pshared; +#+} pthread_barrierattr_t; +#+ +#+#endif +#+ +#+ +#+/* Thread identifiers */ +#+typedef unsigned long int pthread_t; +#+ +#+#endif /* bits/pthreadtypes.h */ + + + +# +# I don't know why it's needed... I think we can drop it. +# +#diff -urN glibc-2.3.2-orig-debian/localedata/gen-locale.sh glibc-2.3.2/localedata/gen-locale.sh +#--- glibc-2.3.2-orig-debian/localedata/gen-locale.sh 2003-10-22 01:03:54.000000000 -0400 +#+++ glibc-2.3.2/localedata/gen-locale.sh 2003-10-22 01:07:38.000000000 -0400 +#@@ -47,6 +47,7 @@ +# locale=`echo $locfile|sed 's|\([^.]*\)[.].*/LC_CTYPE|\1|'` +# charmap=`echo $locfile|sed 's|[^.]*[.]\(.*\)/LC_CTYPE|\1|'` +# +#+echo "Running \"$0 $common_objpfx $localedef $locfile\"" +# echo "Generating locale $locale.$charmap: this might take a while..." +# generate_locale `echo $charmap | sed -e s/SJIS/SHIFT_JIS/` $locale \ +# $locale.$charmap + + +# +# the file is already removed. (lock change) +# +#diff -urN glibc-2.3.2-orig-debian/malloc/thread-m.h glibc-2.3.2/malloc/thread-m.h +#--- glibc-2.3.2-orig-debian/malloc/thread-m.h 2003-10-22 01:06:10.000000000 -0400 +#+++ glibc-2.3.2/malloc/thread-m.h 2003-10-22 01:07:38.000000000 -0400 +#@@ -59,6 +59,28 @@ +# #define mutex_unlock(m) \ +# __libc_maybe_call2 (pthread_mutex_unlock, (m), (*(int *)(m) = 0)) +# +#+# if(defined __hppa__) +#+/* Since our lock structure does not tolerate being initialized to zero, we must +#+ modify the standard function calls made by malloc */ +#+# undef mutex_init +#+# undef mutex_lock +#+# undef mutex_trylock +#+# undef mutex_unlock +#+# define mutex_init(m) \ +#+ __libc_maybe_call (__pthread_mutex_init, (m, NULL), \ +#+ (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT),(*(int *)(m))) ) +#+# define mutex_lock(m) \ +#+ __libc_maybe_call (__pthread_mutex_lock, (m), \ +#+ (__load_and_clear(&((m)->__m_lock.__spinlock)), 0)) +#+# define mutex_trylock(m) \ +#+ __libc_maybe_call (__pthread_mutex_trylock, (m), \ +#+ (*(int *)(m) ? 1 : (__load_and_clear(&((m)->__m_lock.__spinlock)), 0))) +#+# define mutex_unlock(m) \ +#+ __libc_maybe_call (__pthread_mutex_unlock, (m), \ +#+ (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT), (*(int *)(m))) ) +#+# endif +#+/* if(defined __hppa__) */ +#+ +# #else +# +# #define mutex_init(m) \ + + +# +# not in cvs. +# +#diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/atomicity.h glibc-2.3.2/sysdeps/hppa/atomicity.h +#--- glibc-2.3.2-orig-debian/sysdeps/hppa/atomicity.h 1969-12-31 19:00:00.000000000 -0500 +#+++ glibc-2.3.2/sysdeps/hppa/atomicity.h 2003-10-22 01:07:38.000000000 -0400 +#@@ -0,0 +1,55 @@ +#+/* Low-level functions for atomic operations. HP-PARISC version. +#+ 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 Lesser General Public +#+ License as published by the Free Software Foundation; either +#+ version 2.1 of the License, or (at your option) any later version. +#+ +#+ The GNU C Library is distributed in the hope that it will be useful, +#+ but WITHOUT ANY WARRANTY; without even the implied warranty of +#+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#+ Lesser General Public License for more details. +#+ +#+ You should have received a copy of the GNU Lesser General Public +#+ License along with the GNU C Library; if not, write to the Free +#+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +#+ 02111-1307 USA. */ +#+ +#+#ifndef _ATOMICITY_H +#+#define _ATOMICITY_H 1 +#+ +#+#include +#+ +#+#warning stub atomicity functions are not atomic +#+#warning CAO This will get implemented soon +#+ +#+static inline int +#+__attribute__ ((unused)) +#+exchange_and_add (volatile uint32_t *mem, int val) +#+{ +#+ int result = *mem; +#+ *mem += val; +#+ return result; +#+} +#+ +#+static inline void +#+__attribute__ ((unused)) +#+atomic_add (volatile uint32_t *mem, int val) +#+{ +#+ *mem += val; +#+} +#+ +#+static inline int +#+__attribute__ ((unused)) +#+compare_and_swap (volatile long int *p, long int oldval, long int newval) +#+{ +#+ if (*p != oldval) +#+ return 0; +#+ +#+ *p = newval; +#+ return 1; +#+} +#+ +#+#endif /* atomicity.h */ + + +# +# this file is removed. but it may not be needed. +# +#diff -urN glibc-2.3.2-orig-debian/sysdeps/hppa/dl-fptr.c glibc-2.3.2/sysdeps/hppa/dl-fptr.c +#--- glibc-2.3.2-orig-debian/sysdeps/hppa/dl-fptr.c 2003-10-22 01:03:47.000000000 -0400 +#+++ glibc-2.3.2/sysdeps/hppa/dl-fptr.c 2003-10-22 01:07:38.000000000 -0400 +#@@ -30,7 +30,7 @@ +# # include +# +# /* Remember, we use 0 to mean that a lock is taken on PA-RISC. */ +#-static int __hppa_fptr_lock = 1; +#+static __atomic_lock_t __hppa_fptr_lock = __LT_SPINLOCK_ALT_INIT; +# #endif +# +# /* Because ld.so is now versioned, these functions can be in their own +#@@ -127,7 +127,7 @@ +# #ifdef _LIBC_REENTRANT +# /* Release the lock. Again, remember, zero means the lock is taken! */ +# if (mem == NULL) +#- __hppa_fptr_lock = 1; +#+ __hppa_fptr_lock = __LT_SPINLOCK_INIT; +# #endif +# +# /* Set bit 30 to indicate to $$dyncall that this is a PLABEL. */ +#@@ -180,7 +180,7 @@ +# +# #ifdef _LIBC_REENTRANT +# /* Release the lock. */ +#- __hppa_fptr_lock = 1; +#+ __hppa_fptr_lock = __LT_SPINLOCK_INIT; +# #endif +# } +# +#@@ -190,6 +190,8 @@ +# Elf32_Addr addr = (Elf32_Addr) address; +# struct hppa_fptr *f; +# +#+ address = (void *)((unsigned long)address &~ 3); /* Clear the bottom two bits. See make_fptr. */ +#+ +# #ifdef _LIBC_REENTRANT +# /* Make sure we are alone. */ +# while (testandset (&__hppa_fptr_lock)); +#@@ -204,7 +206,7 @@ +# +# #ifdef _LIBC_REENTRANT +# /* Release the lock. */ +#- __hppa_fptr_lock = 1; +#+ __hppa_fptr_lock = __LT_SPINLOCK_INIT; +# #endif +# +# return addr; + + +# +# not in cvs - I don't know it's needed. +# +#diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/Makefile glibc-2.3.2/sysdeps/unix/Makefile +#--- glibc-2.3.2-orig-debian/sysdeps/unix/Makefile 2003-10-22 01:06:12.000000000 -0400 +#+++ glibc-2.3.2/sysdeps/unix/Makefile 2003-10-22 01:07:38.000000000 -0400 +#@@ -295,6 +295,7 @@ +# $(..)sysdeps/unix/Makefile +# $(make-target-directory) +# (echo '#include '; \ +#+ echo 'extern long int _no_syscall(void);'; \ +# echo 'long int _no_syscall (void)'; \ +# echo '{ __set_errno (ENOSYS); return -1L; }'; \ +# for call in $(unix-stub-syscalls); do \ + + + +# +# It should be put in. +# +diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/kernel_stat.h glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/kernel_stat.h +--- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/kernel_stat.h 2003-10-22 01:03:48.000000000 -0400 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/kernel_stat.h 2003-10-22 01:07:38.000000000 -0400 +@@ -1,30 +1,30 @@ +-/* definition of "struct stat" from the kernel */ ++/* Definition of 'struct stat' taken from kernel, please keep up to date */ + struct kernel_stat { +- unsigned long st_dev; /* dev_t is 32 bits on parisc */ +- unsigned long st_ino; /* 32 bits */ ++ unsigned int st_dev; /* dev_t is 32 bits on parisc */ ++ unsigned int st_ino; /* 32 bits */ + unsigned short st_mode; /* 16 bits */ + unsigned short st_nlink; /* 16 bits */ + unsigned short st_reserved1; /* old st_uid */ + unsigned short st_reserved2; /* old st_gid */ +- unsigned long st_rdev; +- unsigned long st_size; ++ unsigned int st_rdev; ++ unsigned int st_size; + struct timespec st_atim; +- struct timespec st_mtim; +- struct timespec st_ctim; +- long st_blksize; +- long st_blocks; +- unsigned long __unused1; /* ACL stuff */ +- unsigned long __unused2; /* network */ +- unsigned long __unused3; /* network */ +- unsigned long __unused4; /* cnodes */ ++ struct timespec st_mtim; ++ struct timespec st_ctim; ++ int st_blksize; ++ int st_blocks; ++ unsigned int __unused1; /* ACL stuff */ ++ unsigned int __unused2; /* network */ ++ unsigned int __unused3; /* network */ ++ unsigned int __unused4; /* cnodes */ + unsigned short __unused5; /* netsite */ + short st_fstype; +- unsigned long st_realdev; ++ unsigned int st_realdev; + unsigned short st_basemode; + unsigned short st_spareshort; +- unsigned long st_uid; +- unsigned long st_gid; +- unsigned long st_spare4[3]; ++ unsigned int st_uid; ++ unsigned int st_gid; ++ unsigned int st_spare4[3]; + }; + + #define _HAVE_STAT_NSEC + + + +# +# It's OK to put. +# +diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/mmap.c glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/mmap.c +--- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/mmap.c 2003-10-22 01:03:48.000000000 -0400 ++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/mmap.c 2003-10-22 01:07:38.000000000 -0400 +@@ -37,7 +37,7 @@ + + __ptr_t ret; + +- ret = INLINE_SYSCALL(mmap, 6, addr, len, prot, flags, fd, offset); ++ ret = (__ptr_t)INLINE_SYSCALL(mmap, 6, addr, len, prot, flags, fd, offset); + + /* check if it's really a negative number */ + if(((unsigned long)ret & 0xfffff000) == 0xfffff000) + + + +# +# I don't know it's needed or not +# +#diff -urN glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/umount.c glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/umount.c +#--- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/umount.c 2003-10-22 01:03:48.000000000 -0400 +#+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/umount.c 2003-10-22 01:07:38.000000000 -0400 +#@@ -21,6 +21,7 @@ +# does down here. */ +# +# extern long int __umount2 (const char *name, int flags); +#+extern long int __umount (const char * name); +# +# long int +# __umount (const char *name) --- glibc-2.4.orig/debian/patches/hppa/local-Rminkernel.diff +++ glibc-2.4/debian/patches/hppa/local-Rminkernel.diff @@ -0,0 +1,46 @@ +# DP: Description: Relax glibc kernel version requirement. +# DP: Author: Carlos O'Donell +# DP: Upstream status: Debian-Specific +# DP: Status Details: Overrides upstream requirement of 2.4.19 +# DP: Date: December 5th, 2002, updated 2003-03-23 by gotom + +# +# Comments from Carlos: +# +# Our users come first, and I've changed this back after seeing +# some people get burned by not having new kernels. We also +# shouldn't be forcing people to use new kernels. Rather they should +# be upgrading after seeing the quantifiable failures and choosing +# to go for a new kernel :) It's an empowerment issue. +# +# If you complain of random segfaults in libc or other programs because +# you have an old kernel without a fixed unaligned handler... the first +# thing I'm going to ask is that you try upgrading to 2.4.19/20 :} +# +# When 2.4.19 on hppa becomes the defacto stable kernel, we can remove +# the patch and let the upstream requirement be used. At which point +# the preinst patch needs to be modified or removed. +# + +--- sysdeps/unix/sysv/linux/configure.in 2003-03-23 16:18:07.000000000 +0900 ++++ sysdeps/unix/sysv/linux/configure.in.new 2003-03-23 16:19:08.000000000 +0900 +@@ -65,7 +65,7 @@ + ;; + hppa*) + libc_cv_gcc_unwind_find_fde=yes +- arch_minimum_kernel=2.4.19 ++ arch_minimum_kernel=2.4.17 + ;; + m68k*) + arch_minimum_kernel=2.0.10 +--- sysdeps/unix/sysv/linux/configure 2003-03-23 16:15:05.000000000 +0900 ++++ sysdeps/unix/sysv/linux/configure.new 2003-03-23 16:21:47.000000000 +0900 +@@ -106,7 +106,7 @@ + ;; + hppa*) + libc_cv_gcc_unwind_find_fde=yes +- arch_minimum_kernel=2.4.19 ++ arch_minimum_kernel=2.4.17 + ;; + m68k*) + arch_minimum_kernel=2.0.10 --- glibc-2.4.orig/debian/patches/hppa/local-inlining.diff +++ glibc-2.4/debian/patches/hppa/local-inlining.diff @@ -0,0 +1,14 @@ +Increase the maximal overall growth of the compilation unit caused +by inlining for dl-reloc.c on hppa. This remove some warnings and +strangely it reduces the size of the final binary. + +--- ports/sysdeps/hppa/Makefile 2006-02-14 17:28:55.000000000 +0100 ++++ ports/sysdeps/hppa/Makefile 2006-02-14 17:29:29.000000000 +0100 +@@ -24,6 +24,7 @@ + + ifeq ($(subdir),elf) + CFLAGS-rtld.c += -mdisable-fpregs ++CFLAGS-dl-reloc.c += --param inline-unit-growth=100 + sysdep-dl-routines += dl-symaddr dl-fptr + sysdep_routines += $(sysdep-dl-routines) + sysdep-rtld-routines += $(sysdep-dl-routines) --- glibc-2.4.orig/debian/patches/hppa/submitted-iitlbp.diff +++ glibc-2.4/debian/patches/hppa/submitted-iitlbp.diff @@ -0,0 +1,52 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Update iitlbp instructions to satisfy stricter binutils. +# DP: Dpatch author: Daniel Jacobowitz +# DP: Patch author: Daniel Jacobowitz +# DP: Upstream status: Not submitted +# DP: Date: 2005-10-14 + +Index: ports/sysdeps/hppa/abort-instr.h +=================================================================== +RCS file: /big/fsf/rsync/gports-cvs/ports/sysdeps/hppa/abort-instr.h,v +retrieving revision 1.1 +diff -u -p -r1.1 abort-instr.h +--- ports/sysdeps/hppa/abort-instr.h 23 Sep 2002 03:30:34 -0000 1.1 ++++ ports/sysdeps/hppa/abort-instr.h 14 Oct 2005 14:25:52 -0000 +@@ -3,4 +3,4 @@ + We go with iitlbp because it has a history of being used to crash + programs. */ + +-#define ABORT_INSTRUCTION asm ("iitlbp %r0,(%r0)") ++#define ABORT_INSTRUCTION asm ("iitlbp %r0,(%sr0,%r0)") +Index: ports/sysdeps/hppa/dl-machine.h +=================================================================== +RCS file: /big/fsf/rsync/gports-cvs/ports/sysdeps/hppa/dl-machine.h,v +retrieving revision 1.21 +diff -u -p -r1.21 dl-machine.h +--- ports/sysdeps/hppa/dl-machine.h 19 Nov 2004 00:01:25 -0000 1.21 ++++ ports/sysdeps/hppa/dl-machine.h 14 Oct 2005 14:57:02 -0000 +@@ -367,7 +367,7 @@ asm ( \ + " ldw,ma 8(%r26),%r19\n" \ + \ + /* Uh oh! We didn't find one. Abort. */ \ +-" iitlbp %r0,(%r0)\n" \ ++" iitlbp %r0,(%sr0,%r0)\n" \ + \ + "2: ldw -4(%r26),%r19\n" /* Found it, load value. */ \ + " add %r19,%r20,%r19\n" /* And add the load offset. */ \ +Index: ports/sysdeps/unix/sysv/linux/hppa/clone.S +=================================================================== +RCS file: /big/fsf/rsync/gports-cvs/ports/sysdeps/unix/sysv/linux/hppa/clone.S,v +retrieving revision 1.4 +diff -u -p -r1.4 clone.S +--- ports/sysdeps/unix/sysv/linux/hppa/clone.S 18 Dec 2003 06:05:03 -0000 1.4 ++++ ports/sysdeps/unix/sysv/linux/hppa/clone.S 14 Oct 2005 14:40:59 -0000 +@@ -92,7 +92,7 @@ thread_start: + copy %ret0,%arg0 + + /* Die horribly. */ +- iitlbp %r0,(%r0) ++ iitlbp %r0,(%sr0,%r0) + + PSEUDO_END(__clone) + --- glibc-2.4.orig/debian/patches/hppa/local-gcc-4-profile.diff +++ glibc-2.4/debian/patches/hppa/local-gcc-4-profile.diff @@ -0,0 +1,25 @@ +# DP: Description: Make glibc-2.3.5 compile with gcc-4.0 on hppa fixed by +# removing strong_alias. +# DP: Related bugs: +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: GOTO Masanori +# DP: Upstream status: Debian-Specific +# DP: Status Details: +# DP: Date: 2005-08-03 + +2005-08-03 GOTO Masanori + + * sysdeps/hppa/dl-machine.h: Remove strong_alias. + +--- ports/sysdeps/hppa/dl-machine.h.gotom 2005-08-04 23:43:40.000000000 +0900 ++++ ports/sysdeps/hppa/dl-machine.h 2005-08-04 23:47:35.000000000 +0900 +@@ -538,8 +538,7 @@ + TRAMPOLINE_TEMPLATE (_dl_runtime_profile, profile_fixup); + #else + #define ELF_MACHINE_RUNTIME_TRAMPOLINE \ +- TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup); \ +- strong_alias (_dl_runtime_resolve, _dl_runtime_profile); ++ TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup); + #endif + + /* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so --- glibc-2.4.orig/debian/patches/hppa/submitted-fenv-align.diff +++ glibc-2.4/debian/patches/hppa/submitted-fenv-align.diff @@ -0,0 +1,353 @@ +# DP: Description: Use temporary, 8-byte-aligned buffers for doubleword transfer. +# DP: Dpatch author: Daniel Jacobowitz +# DP: Patch author: Daniel Jacobowitz +# DP: Upstream status: Not submitted (yet) +# DP: Date: 2005-10-14 + +diff -ur ports/sysdeps/hppa.bak/fpu/fclrexcpt.c ports/sysdeps/hppa/fpu/fclrexcpt.c +--- ports/sysdeps/hppa.bak/fpu/fclrexcpt.c 2003-12-18 03:56:15.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/fclrexcpt.c 2005-10-14 17:44:33.000000000 +0000 +@@ -23,14 +23,14 @@ + int + feclearexcept (int excepts) + { +- unsigned int sw[2]; ++ union { unsigned long long l; unsigned int sw[2]; } s; + + /* Get the current status word. */ +- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); ++ __asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l)); + + /* Clear all the relevant bits. */ +- sw[0] &= ~((excepts & FE_ALL_EXCEPT) << 27); +- __asm__ ("fldd 0(%0),%%fr0" : : "r" (sw)); ++ s.sw[0] &= ~((excepts & FE_ALL_EXCEPT) << 27); ++ __asm__ ("fldd 0(%0),%%fr0" : : "r" (&s.l), "m" (s.l)); + + /* Success. */ + return 0; +diff -ur ports/sysdeps/hppa.bak/fpu/fedisblxcpt.c ports/sysdeps/hppa/fpu/fedisblxcpt.c +--- ports/sysdeps/hppa.bak/fpu/fedisblxcpt.c 2001-07-06 04:55:52.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/fedisblxcpt.c 2005-10-14 17:48:10.000000000 +0000 +@@ -23,15 +23,16 @@ + int + fedisableexcept (int excepts) + { +- unsigned int sw[2], old_exc; ++ union { unsigned long long l; unsigned int sw[2]; } s; ++ unsigned int old_exc; + + /* Get the current status word. */ +- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); ++ __asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l)); + +- old_exc = sw[0] & FE_ALL_EXCEPT; ++ old_exc = s.sw[0] & FE_ALL_EXCEPT; + +- sw[0] &= ~(excepts & FE_ALL_EXCEPT); +- __asm__ ("fldd 0(%0),%%fr0" : : "r" (sw)); ++ s.sw[0] &= ~(excepts & FE_ALL_EXCEPT); ++ __asm__ ("fldd 0(%0),%%fr0" : : "r" (&s.l), "m" (s.l)); + + return old_exc; + } +diff -ur ports/sysdeps/hppa.bak/fpu/feenablxcpt.c ports/sysdeps/hppa/fpu/feenablxcpt.c +--- ports/sysdeps/hppa.bak/fpu/feenablxcpt.c 2001-07-06 04:55:52.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/feenablxcpt.c 2005-10-14 17:48:46.000000000 +0000 +@@ -23,15 +23,16 @@ + int + feenableexcept (int excepts) + { +- unsigned int sw[2], old_exc; ++ union { unsigned long long l; unsigned int sw[2]; } s; ++ unsigned int old_exc; + + /* Get the current status word. */ +- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); ++ __asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l)); + +- old_exc = sw[0] & FE_ALL_EXCEPT; ++ old_exc = s.sw[0] & FE_ALL_EXCEPT; + +- sw[0] |= (excepts & FE_ALL_EXCEPT); +- __asm__ ("fldd 0(%0),%%fr0" : : "r" (sw)); ++ s.sw[0] |= (excepts & FE_ALL_EXCEPT); ++ __asm__ ("fldd 0(%0),%%fr0" : : "r" (&s.l), "m" (s.l)); + + return old_exc; + } +diff -ur ports/sysdeps/hppa.bak/fpu/fegetenv.c ports/sysdeps/hppa/fpu/fegetenv.c +--- ports/sysdeps/hppa.bak/fpu/fegetenv.c 2003-12-18 03:56:50.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/fegetenv.c 2005-10-14 18:10:42.000000000 +0000 +@@ -19,15 +19,19 @@ + 02111-1307 USA. */ + + #include ++#include + + int + fegetenv (fenv_t *envp) + { ++ unsigned long long buf[4], *bufptr = buf; ++ + __asm__ ( + "fstd,ma %%fr0,8(%1)\n" + "fstd,ma %%fr1,8(%1)\n" + "fstd,ma %%fr2,8(%1)\n" + "fstd %%fr3,0(%1)\n" +- : "=m" (*envp), "+r" (envp)); ++ : "=m" (buf), "+r" (bufptr)); ++ memcpy (envp, buf, sizeof (*envp)); + return 0; + } +diff -ur ports/sysdeps/hppa.bak/fpu/fegetexcept.c ports/sysdeps/hppa/fpu/fegetexcept.c +--- ports/sysdeps/hppa.bak/fpu/fegetexcept.c 2001-07-06 04:55:52.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/fegetexcept.c 2005-10-14 17:49:08.000000000 +0000 +@@ -23,10 +23,10 @@ + int + fegetexcept (void) + { +- unsigned int sw[2]; ++ union { unsigned long long l; unsigned int sw[2]; } s; + + /* Get the current status word. */ +- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); ++ __asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l)); + +- return sw[0] & FE_ALL_EXCEPT; ++ return s.sw[0] & FE_ALL_EXCEPT; + } +diff -ur ports/sysdeps/hppa.bak/fpu/fegetround.c ports/sysdeps/hppa/fpu/fegetround.c +--- ports/sysdeps/hppa.bak/fpu/fegetround.c 2001-07-06 04:55:52.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/fegetround.c 2005-10-14 17:49:28.000000000 +0000 +@@ -23,10 +23,10 @@ + int + fegetround (void) + { +- unsigned int sw[2]; ++ union { unsigned long long l; unsigned int sw[2]; } s; + + /* Get the current status word. */ +- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); ++ __asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l)); + +- return sw[0] & FE_DOWNWARD; ++ return s.sw[0] & FE_DOWNWARD; + } +diff -ur ports/sysdeps/hppa.bak/fpu/feholdexcpt.c ports/sysdeps/hppa/fpu/feholdexcpt.c +--- ports/sysdeps/hppa.bak/fpu/feholdexcpt.c 2004-02-21 02:10:01.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/feholdexcpt.c 2005-10-14 18:14:13.000000000 +0000 +@@ -24,33 +24,34 @@ + int + feholdexcept (fenv_t *envp) + { +- fenv_t clear; +- fenv_t * _regs = envp; ++ union { unsigned long long buf[4]; fenv_t env; } clear; ++ unsigned long long *bufptr; + + /* Store the environment. */ ++ bufptr = clear.buf; + __asm__ ( + "fstd,ma %%fr0,8(%1)\n" + "fstd,ma %%fr1,8(%1)\n" + "fstd,ma %%fr2,8(%1)\n" + "fstd %%fr3,0(%1)\n" +- : "=m" (*_regs), "+r" (_regs)); +- memcpy (&clear, envp, sizeof (clear)); ++ : "=m" (clear), "+r" (bufptr)); ++ memcpy (envp, &clear.env, sizeof (fenv_t)); + + /* Now clear all exceptions. */ +- clear.__status_word &= ~(FE_ALL_EXCEPT << 27); +- memset (clear.__exception, 0, sizeof (clear.__exception)); ++ clear.env.__status_word &= ~(FE_ALL_EXCEPT << 27); ++ memset (clear.env.__exception, 0, sizeof (clear.env.__exception)); + + /* And set all exceptions to non-stop. */ +- clear.__status_word &= ~FE_ALL_EXCEPT; ++ clear.env.__status_word &= ~FE_ALL_EXCEPT; + + /* Load the new environment. */ +- _regs = &clear; ++ bufptr = clear.buf; + __asm__ ( + "fldd,ma 8(%0),%%fr0\n" + "fldd,ma 8(%0),%%fr1\n" + "fldd,ma 8(%0),%%fr2\n" + "fldd 0(%0),%%fr3\n" +- : : "r" (_regs)); ++ : : "r" (bufptr), "m" (clear)); + + return 0; + } +diff -ur ports/sysdeps/hppa.bak/fpu/fesetenv.c ports/sysdeps/hppa/fpu/fesetenv.c +--- ports/sysdeps/hppa.bak/fpu/fesetenv.c 2003-12-18 03:57:31.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/fesetenv.c 2005-10-14 18:14:21.000000000 +0000 +@@ -25,40 +25,42 @@ + int + fesetenv (const fenv_t *envp) + { +- fenv_t temp; +- fenv_t * _regs = &temp; ++ union { unsigned long long buf[4]; fenv_t env; } temp; ++ unsigned long long *bufptr; + + /* Install the environment specified by ENVP. But there are a few + values which we do not want to come from the saved environment. + Therefore, we get the current environment and replace the values + we want to use from the environment specified by the parameter. */ ++ bufptr = temp.buf; + __asm__ ( + "fstd,ma %%fr0,8(%1)\n" + "fstd,ma %%fr1,8(%1)\n" + "fstd,ma %%fr2,8(%1)\n" + "fstd %%fr3,0(%1)\n" +- : "=m" (*_regs), "+r" (_regs)); ++ : "=m" (temp), "+r" (bufptr)); + +- temp.__status_word &= ~(FE_ALL_EXCEPT +- | (FE_ALL_EXCEPT << 27) +- | FE_DOWNWARD); ++ temp.env.__status_word &= ~(FE_ALL_EXCEPT ++ | (FE_ALL_EXCEPT << 27) ++ | FE_DOWNWARD); + if (envp == FE_DFL_ENV) + ; + else if (envp == FE_NOMASK_ENV) +- temp.__status_word |= FE_ALL_EXCEPT; ++ temp.env.__status_word |= FE_ALL_EXCEPT; + else +- temp.__status_word |= (envp->__status_word +- & (FE_ALL_EXCEPT +- | FE_DOWNWARD +- | (FE_ALL_EXCEPT << 27))); ++ temp.env.__status_word |= (envp->__status_word ++ & (FE_ALL_EXCEPT ++ | FE_DOWNWARD ++ | (FE_ALL_EXCEPT << 27))); + + /* Load the new environment. */ ++ bufptr = temp.buf; + __asm__ ( + "fldd,ma -8(%1),%%fr3\n" + "fldd,ma -8(%1),%%fr2\n" + "fldd,ma -8(%1),%%fr1\n" + "fldd 0(%1),%%fr0\n" +- : "=m" (*_regs), "+r" (_regs)); ++ : "=m" (temp), "+r" (bufptr)); + + /* Success. */ + return 0; +diff -ur ports/sysdeps/hppa.bak/fpu/fesetround.c ports/sysdeps/hppa/fpu/fesetround.c +--- ports/sysdeps/hppa.bak/fpu/fesetround.c 2002-12-03 02:50:52.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/fesetround.c 2005-10-14 17:58:24.000000000 +0000 +@@ -23,17 +23,17 @@ + int + fesetround (int round) + { +- unsigned int sw[2]; ++ union { unsigned long long l; unsigned int sw[2]; } s; + + if (round & ~FE_DOWNWARD) + /* ROUND is not a valid rounding mode. */ + return 1; + + /* Get the current status word. */ +- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); +- sw[0] &= ~FE_DOWNWARD; +- sw[0] |= round; +- __asm__ ("fldd 0(%0),%%fr0" : : "r" (sw)); ++ __asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l)); ++ s.sw[0] &= ~FE_DOWNWARD; ++ s.sw[0] |= round; ++ __asm__ ("fldd 0(%0),%%fr0" : : "r" (&s.l), "m" (s.l)); + + return 0; + } +diff -ur ports/sysdeps/hppa.bak/fpu/feupdateenv.c ports/sysdeps/hppa/fpu/feupdateenv.c +--- ports/sysdeps/hppa.bak/fpu/feupdateenv.c 2004-04-17 22:51:43.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/feupdateenv.c 2005-10-14 18:10:40.000000000 +0000 +@@ -19,18 +19,19 @@ + 02111-1307 USA. */ + + #include ++#include + + int + feupdateenv (const fenv_t *envp) + { +- unsigned int sw[2]; ++ union { unsigned long long l; unsigned int sw[2]; } s; + + /* Get the current exception status. */ +- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); ++ __asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l)); + /* Install new environment. */ + fesetenv (envp); + /* Raise the saved exceptions */ +- feraiseexcept(sw[0] & FE_ALL_EXCEPT); ++ feraiseexcept(s.sw[0] & FE_ALL_EXCEPT); + + /* Success. */ + return 0; +diff -ur ports/sysdeps/hppa.bak/fpu/fgetexcptflg.c ports/sysdeps/hppa/fpu/fgetexcptflg.c +--- ports/sysdeps/hppa.bak/fpu/fgetexcptflg.c 2001-07-06 04:55:52.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/fgetexcptflg.c 2005-10-14 17:57:37.000000000 +0000 +@@ -23,12 +23,12 @@ + int + fegetexceptflag (fexcept_t *flagp, int excepts) + { +- unsigned int sw[2]; ++ union { unsigned long long l; unsigned int sw[2]; } s; + + /* Get the current status word. */ +- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); ++ __asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l)); + +- *flagp = (sw[0] >> 27) & excepts & FE_ALL_EXCEPT; ++ *flagp = (s.sw[0] >> 27) & excepts & FE_ALL_EXCEPT; + + /* Success. */ + return 0; +diff -ur ports/sysdeps/hppa.bak/fpu/fsetexcptflg.c ports/sysdeps/hppa/fpu/fsetexcptflg.c +--- ports/sysdeps/hppa.bak/fpu/fsetexcptflg.c 2003-12-18 03:58:26.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/fsetexcptflg.c 2005-10-14 17:57:28.000000000 +0000 +@@ -24,16 +24,16 @@ + int + fesetexceptflag (const fexcept_t *flagp, int excepts) + { +- unsigned int sw[2]; ++ union { unsigned long long l; unsigned int sw[2]; } s; + + /* Get the current status word. */ +- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); ++ __asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l)); + + /* Install new enable trap bits */ +- sw[0] |= (*flagp & excepts & FE_ALL_EXCEPT) << 27; ++ s.sw[0] |= (*flagp & excepts & FE_ALL_EXCEPT) << 27; + + /* Store the new status word. */ +- __asm__ ("fldd 0(%0),%%fr0" : : "r" (sw)); ++ __asm__ ("fldd 0(%0),%%fr0" : : "r" (&s.l), "m" (s.l)); + + /* Success. */ + return 0; +diff -ur ports/sysdeps/hppa.bak/fpu/ftestexcept.c ports/sysdeps/hppa/fpu/ftestexcept.c +--- ports/sysdeps/hppa.bak/fpu/ftestexcept.c 2001-07-06 04:55:52.000000000 +0000 ++++ ports/sysdeps/hppa/fpu/ftestexcept.c 2005-10-14 18:10:05.000000000 +0000 +@@ -23,10 +23,10 @@ + int + fetestexcept (int excepts) + { +- unsigned int sw[2]; ++ union { unsigned long long l; unsigned int sw[2]; } s; + + /* Get the current status word. */ +- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw)); ++ __asm__ ("fstd %%fr0,0(%1)" : "=m" (s.l) : "r" (&s.l)); + +- return (sw[0] >> 27) & excepts & FE_ALL_EXCEPT; ++ return (s.sw[0] >> 27) & excepts & FE_ALL_EXCEPT; + } --- glibc-2.4.orig/debian/patches/hppa/submitted-drop-utimes.diff +++ glibc-2.4/debian/patches/hppa/submitted-drop-utimes.diff @@ -0,0 +1,33 @@ +# DP: Description: Don't define __ASSUME_UTIMES for hppa +# DP: Related bugs: #284449 +# DP: Dpatch author: Randolph Chung +# DP: Patch author: Randolph Chung +# DP: Upstream status: Pending +# DP: Status Details: +# DP: Date: Thu, 09 Dec 2004 12:01:12 -0800, (Updated 2005-01-02 gotom) + +2005-01-02 GOTO Masanori + + * sysdeps/unix/sysv/linux/kernel-features.h: Regenerated. + +2004-12-09 Randolph Chung + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_UTIMES): Don't + define for hppa, which doesn't support this syscall. + +Index: sysdeps/unix/sysv/linux/kernel-features.h +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/kernel-features.h,v +retrieving revision 1.81 +diff -u -r1.81 kernel-features.h +--- glibc-20041227/sysdeps/unix/sysv/linux/kernel-features.h 24 Nov 2004 04:36:11 -0000 1.81 ++++ glibc-20041227/sysdeps/unix/sysv/linux/kernel-features.h 2 Jan 2005 12:19:13 -0000 +@@ -359,7 +359,7 @@ + /* The utimes syscall has been available for some architectures + forever. For x86 it was introduced after 2.5.75, for x86-64, + ppc, and ppc64 it was introduced in 2.6.0-test3. */ +-#if defined __alpha__ || defined __ia64__ || defined __hppa__ \ ++#if defined __alpha__ || defined __ia64__ \ + || defined __sparc__ \ + || (__LINUX_KERNEL_VERSION > 132427 && defined __i386__) \ + || (__LINUX_KERNEL_VERSION > 132609 && defined __x86_64__) \ --- glibc-2.4.orig/debian/patches/localedata/tailor-iso14651_t1.diff +++ glibc-2.4/debian/patches/localedata/tailor-iso14651_t1.diff @@ -0,0 +1,32294 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Rewrite collation rules to include iso14651_t1 +# DP: es_ES: BZ664, by Pablo Saratxaga +# DP: ca_ES da_DK en_CA es_US fi_FI nb_NO: BZ672, by Denis Barbier +# DP: ar_SA cs_CZ et_EE hr_HR hsb_DE lt_LT pl_PL sl_SI tr_TR: not +# DP: submitted yet. +# DP: Related bugs: BZ664 BZ672 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier, Pablo Saratxaga +# DP: Upstream status: BZ664 BZ672 +# DP: Date: 2006-01-18 + +2005-01-16 Denis Barbier + + [BZ #672] + * locales/ca_ES: Replace current collation rules by including + iso14651_t1 and adding extra rules if needed. There should be + no noticeable changes in sorted text. only ligatures and + ignoreable characters have modified weights. + * locales/da_DK: Likewise. + * locales/en_CA: Likewise. + * locales/es_US: Likewise. + * locales/fi_FI: Likewise. + * locales/nb_NO: Likewise. + +Index: localedata/locales/ca_ES +=================================================================== +--- localedata/locales/ca_ES.orig ++++ localedata/locales/ca_ES +@@ -46,2067 +46,20 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++collating-symbol + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script ++reorder-after ++ + +-% collating symbols ++reorder-after ++ ;;;IGNORE + +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. ++reorder-after ++ ;;;IGNORE + +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/da_DK +=================================================================== +--- localedata/locales/da_DK.orig ++++ localedata/locales/da_DK +@@ -55,2082 +55,78 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" ++ + collating-element from "" + collating-element from "" + collating-element from "" + collating-element from "" ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++ ++ ++reorder-after ++ ++ ++ + +-% Base collation scheme: 1994-03-22 +- +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- + % and are treated as in Danish +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ + % is a separate letter in Danish +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + % is a separate letter in Danish +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + % is a separate letter in Danish +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++% Present in iso14651_t1, but these definitions seem to have been ++% removed from latest iso14651 tables. ++reorder-after ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + ++reorder-end + END LC_COLLATE + + LC_CTYPE +Index: localedata/locales/en_CA +=================================================================== +--- localedata/locales/en_CA.orig ++++ localedata/locales/en_CA +@@ -49,2067 +49,20 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++reorder-after ++ + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script ++% Present in iso14651_t1, but these definitions seem to have been ++% removed from latest iso14651 tables. ++reorder-after ++ "";"";"";IGNORE + +-% collating symbols ++reorder-after ++ "";"";"";IGNORE + +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/es_ES +=================================================================== +--- localedata/locales/es_ES.orig ++++ localedata/locales/es_ES +@@ -11,8 +11,8 @@ + % Fax: +45 - 33256543 + % Language: es + % Territory: ES +-% Revision: 4.4 +-% Date: 1997-03-18 ++% Revision: 4.5 ++% Date: 2004-06-23 + % Application: general + % Users: general + % Repertoiremap: mnemonic.ds +@@ -48,2067 +48,19 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++collating-symbol + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana ++reorder-after ++ + +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE + +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/es_US +=================================================================== +--- localedata/locales/es_US.orig ++++ localedata/locales/es_US +@@ -48,6 +48,8 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" ++ + collating-element from "" + collating-element from "" + collating-element from "" +@@ -57,2074 +59,49 @@ + collating-element from "" + collating-element from "" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol ++ ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/fi_FI +=================================================================== +--- localedata/locales/fi_FI.orig ++++ localedata/locales/fi_FI +@@ -52,2068 +52,74 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++% Present in iso14651_t1, but these definitions seem to have been ++% removed from latest iso14651 tables. ++reorder-after ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +-% before letters +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/nb_NO +=================================================================== +--- localedata/locales/nb_NO.orig ++++ localedata/locales/nb_NO +@@ -48,2078 +48,74 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" ++ + collating-element from "" + collating-element from "" + collating-element from "" + collating-element from "" ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++ ++ ++reorder-after ++ ++ ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++% Present in iso14651_t1, but these definitions seem to have been ++% removed from latest iso14651 tables. ++reorder-after ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + +-% Base collation scheme: 1994-03-22 +- +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +-% before letters +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE %LATIN CAPITAL LETTER ETH (Icelandic) +- ;;;IGNORE %LATIN SMALL LETTER ETH (Icelandic) +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/ar_SA +=================================================================== +--- localedata/locales/ar_SA.orig ++++ localedata/locales/ar_SA +@@ -43,223 +43,8 @@ + % Set up the LC_COLLATE category + + LC_COLLATE +- +- +-order_start forward; forward +- +- +- +- +- +- +- +- +- +- +- +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- IGNORE +- IGNORE +- IGNORE +- IGNORE +- IGNORE +- IGNORE +- IGNORE +- IGNORE +- IGNORE +-order_end +- +- ++% Copy the template from ISO/IEC 14651 ++copy "iso14651_t1" + END LC_COLLATE + + +Index: localedata/locales/cs_CZ +=================================================================== +--- localedata/locales/cs_CZ.orig ++++ localedata/locales/cs_CZ +@@ -136,2166 +136,89 @@ + + LC_COLLATE + +-% Base collation scheme: 1994-03-22 ++define UPPERCASE_FIRST ++define LATIN_FORWARD ++copy "iso14651_t1" + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before letters, +-% numbers after letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +- +-% Definice písmene ch ++collating-symbol + + collating-element from "" + collating-element from "" + collating-element from "" + ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + +-% letter;accent;case;specials +- +-%order_start forward;forward;forward;forward +-order_start forward;forward;forward;forward +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +-% Poøadí akcentù: nahoøe, dole, vzadu, vpøedu, uvnitø nebo pøes písmeno +-% pokud toto nerozhodne zále¾í na poètu a tvaru +- +- +-% nahoøe +- % Teèka +- % Vodorovná èárka nahoøe +- % Èárka ' (napø: á) +- % Zpìtná èárka ` +- % Støí¹ka ^ (napø: â) +- % Háèek +- % Tilda (~) +- % Dolní pùlkrou¾ek (vypadá jako sjednocení) +-% Horní pùlkrou¾ek (vypadá jako prùnik) +- % Krou¾ek +- % netu¹ím jaké diakritické znaménko to je, pøedpokládám je nahoøe +- % netu¹ím jaké diakritické znaménko to je, pøedpokládám je nahoøe +- +- % Dvì teèky +- +- % Dvì èárky +- % Dvì zpìtné èárky +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +-% nahoøe a dole +- % Zde si nejsem jist jak je to mínìno, zda obì pod +- % nebo pouze to druhé +- +- +- +- +- +- +- +- +-% nahoøe a uprostøed +- +- +-% dole +- +- +- +- +- % Zobáèek pod písmenem vypadá skoro jako s (º) +- % Zobáèek pod písmenem obrácený k pøedchozímu (jako c)(ê) +- +-% za +-% pøed +- +-% uprostøed +- % ©krtnutí písmene v prostøedku (polské ³) +- +- +- +- +- +- +- +- +- +- +- ;;; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-% Zde jsou v¹echna latinská písmena s diakritikou +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- ;;; +- ;;; +- +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- "";"";"";"" +- "";"";"";"" +- +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- ;;; +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- "";"";"";"" +- "";"";"";"" +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- "";"";"";"" +- "";"";"";"" +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- "";"";"";"" +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- "";"";"";"" +- "";"";"";IGNORE +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- "";"";"";"" +- "";"";"";"" +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- +- +- ;;; +- ;;; +- +- +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-% Èíslice +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +- +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-% V¹echny speciální znaky (sna¾il jsem se to seøadit podle normy, ale moc se +-% mi nedaøilo) +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +-% znaménka +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-% Uvozovky +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +-% ustálené znaèky +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +-% grafické znaèky a obrazce lineární +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +-% grafické znaèky a obrazce plo¹né +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +-% Akcenty, nevím kam je zaøadit (nìkteré jsou brány jako uvozovky) +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-% IGNORE;IGNORE;IGNORE; % pøemístìn do uvozovek +-% IGNORE;IGNORE;IGNORE; % pøemístìn do obrazcù lineárních +- IGNORE;IGNORE;IGNORE; +-% tilda +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +-% Neseøazeno +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE;IGNORE +- +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-% Zbytek vìcí z unikodu +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- ;IGNORE;IGNORE; +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- +- IGNORE;IGNORE;; +- IGNORE;IGNORE;; +- IGNORE;IGNORE;; +- IGNORE;IGNORE;; +- IGNORE;IGNORE;; +- IGNORE;IGNORE;; +- IGNORE;IGNORE;; +- IGNORE;IGNORE;; +- IGNORE;IGNORE;; +- +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- "";"";"";"" +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- ;;IGNORE; +- +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/et_EE +=================================================================== +--- localedata/locales/et_EE.orig ++++ localedata/locales/et_EE +@@ -55,2067 +55,46 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++define UPPERCASE_FIRST ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++ ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/hr_HR +=================================================================== +--- localedata/locales/hr_HR.orig ++++ localedata/locales/hr_HR +@@ -48,10 +48,25 @@ + END LC_IDENTIFICATION + + LC_COLLATE +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" ++copy "iso14651_t1" ++ ++collating-symbol ++collating-symbol ++ ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++collating-symbol ++collating-symbol ++collating-symbol ++ ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" + collating-element from "" + collating-element from "" + collating-element from "" +@@ -61,2078 +76,65 @@ + collating-element from "" + collating-element from "" + +-% Base collation scheme: 1994-03-22 +- +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/hsb_DE +=================================================================== +--- localedata/locales/hsb_DE.orig ++++ localedata/locales/hsb_DE +@@ -34,7 +34,14 @@ + + END LC_IDENTIFICATION + ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ + LC_COLLATE ++% Copy the template from ISO/IEC 14651 ++copy "iso14651_t1" ++ + collating-element from "" + collating-element from "" + collating-element from "" +@@ -44,2081 +51,111 @@ + collating-element from "" + collating-element from "" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++% Is oacute really used? ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +-LC_CTYPE +-copy "i18n" +-END LC_CTYPE +- + LC_MESSAGES + yesexpr "" + noexpr "" +Index: localedata/locales/iso14651_t1 +=================================================================== +--- localedata/locales/iso14651_t1.orig ++++ localedata/locales/iso14651_t1 +@@ -261,7 +261,11 @@ + # SYMB. N° + # + ++ifdef UPPERCASE_FIRST ++ ++else + ++endif + # forme de base (bas de casse, arabe intrinsèque, + # hébreu intrinsèque, etc. + # basic form (lower case, intrinsic Arabic +@@ -280,14 +284,21 @@ + # medial/mdian + # 6 + # ++ifdef UPPERCASE_FIRST ++ # 7 ++ # 8 ++ # 9 ++ # 10 ++ # 11 ++ # 12 ++else + # 7 + # 8 + # 9 + # 10 + # 11 +- +-#alternate lower case/ +-# 12 ++ # 12 alternate lower case ++endif + # + #minuscules spéciales après majuscules + # / +@@ -761,7 +772,11 @@ + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; + ++ifdef LATIN_FORWARD ++order_start ;forward;forward;forward;forward,position ++else + order_start ;forward;backward;forward;forward,position ++endif + # + ;;;IGNORE # 170 + # +Index: localedata/locales/lt_LT +=================================================================== +--- localedata/locales/lt_LT.orig ++++ localedata/locales/lt_LT +@@ -58,2067 +58,13 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++define UPPERCASE_FIRST ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++reorder-after ++ + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/pl_PL +=================================================================== +--- localedata/locales/pl_PL.orig ++++ localedata/locales/pl_PL +@@ -48,2067 +48,78 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/sl_SI +=================================================================== +--- localedata/locales/sl_SI.orig ++++ localedata/locales/sl_SI +@@ -48,2067 +48,34 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script ++reorder-after ++ + +-% collating symbols ++reorder-after ++ + +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. ++reorder-after ++ + +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +Index: localedata/locales/tr_TR +=================================================================== +--- localedata/locales/tr_TR.orig ++++ localedata/locales/tr_TR +@@ -61,2067 +61,62 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++define UPPERCASE_FIRST ++% Copy the template from ISO/IEC 14651 ++copy "iso14651_t1" ++ ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + +-% Base collation scheme: 1994-03-22 +- +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + --- glibc-2.4.orig/debian/patches/localedata/fo_FO-date_fmt.diff +++ glibc-2.4/debian/patches/localedata/fo_FO-date_fmt.diff @@ -0,0 +1,35 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix d_t_fmt and date_fmt in fo_FO +# DP: Related bugs: #307194 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Jacob Sparre Andersen +# DP: Upstream status: not submitted +# DP: Date: 2006-01-10 + +Index: glibc-2.3.5/localedata/locales/fo_FO +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/fo_FO ++++ glibc-2.3.5/localedata/locales/fo_FO +@@ -95,14 +95,18 @@ + "";/ + "";/ + "" +-d_t_fmt "" ++d_t_fmt "/ ++/ ++" + d_fmt "" + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++/ ++" + END LC_TIME + + LC_MESSAGES --- glibc-2.4.orig/debian/patches/localedata/dz_BT-collation.diff +++ glibc-2.4/debian/patches/localedata/dz_BT-collation.diff @@ -0,0 +1,2407 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Enhance collation rules for dz_BT. These rules have +# DP: been written by Pema Geyleg and Denis Barbier, based on +# DP: C. Fynn's chart. +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Pema Geyleg and Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-30 + +Index: glibc-2.3.6/localedata/locales/dz_BT +=================================================================== +--- glibc-2.3.6.orig/localedata/locales/dz_BT ++++ glibc-2.3.6/localedata/locales/dz_BT +@@ -52,7 +52,30 @@ + LC_COLLATE + copy "iso14651_t1" + +-script ++% Collation rules written by Pema Geyleg, Pablo Saratxaga and Denis ++% Barbier, based on Dzongkha collation chart provided by Christopher J Fynn ++% at http://www.btinternet.com/~c.fynn/misc/DZ_bt/dzongkha-collate.html ++ ++% Third level ++ ++% Nominal, subjoined or variant forms ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++% Tibetan signs ++collating-symbol ++collating-symbol ++collating-symbol ++ ++% Second level ++collating-symbol ++collating-symbol ++collating-symbol ++ ++% Primary level ++collating-symbol + + % 30 base letters + collating-symbol +@@ -92,669 +115,736 @@ + collating-symbol + collating-symbol + +-% pre-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% nominal, subjoined or variant forms +-collating-symbol +-collating-symbol +-collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++% ++collating-symbol ++% ++collating-symbol ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++% ++collating-symbol ++collating-symbol ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol + +-% ka-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% kha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% ga-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the ga-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% nga-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the nga-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% ca-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% cha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% ja-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% nya-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% ta-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% tha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% da-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the da-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% na-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the na-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% pa-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the pa-radical +-% itself, and the following letter. +-collating-symbol % ambiguous in Dzongkha +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% pha-radicals +-collating-symbol +-collating-element from "" +- +-% ba-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the ba-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% ma-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the ma-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% tsa-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% tsha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% dza-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% zha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% za-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% ya-radicals +-collating-symbol +-collating-element from "" +- +-% ra-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the ra-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-element from "" +- +-% sha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% sa-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the sa-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% ha-radicals +-collating-symbol +-collating-element from "" +- +-% generic definitions +-reorder-after ++reorder-after + + ++ ++ ++ ++ ++ ++ + + reorder-after +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++reorder-after ++ + +-% a better place than after cyrillic ya should be defined + reorder-after ++ + +- +- +- +- +- +- +- +- +- +- ++ ++ ++ + +- +- +- +- +- +- +- +- +- ++ + +- +- +- +- +- +- +- ++ + +- +- +- +- ++ + +- +- ++ + +- +- +- +- +- ++ + +- +- +- +- +- +- ++ + +- +- +- +- +- +- +- +- ++ + +- +- ++ + +- +- +- +- +- +- +- +- +- +- ++ + +- +- +- +- +- +- ++ + +- +- +- ++ + +- ++ + +- +- +- +- +- ++ + +- +- +- ++ + +- +- +- +- +- +- ++ + +- +- ++ + +- +- +- +- ++ + ++ + +- +- ++ + +- +- ++ + ++ + +- ++ + +- ++ + ++ + +- +- ++ + +- +- ++ + +- ++ + ++ ++ + + + + + +-%order_start ;forward;forward;forward;forward,position ++ + +-% specific definitions +-reorder-after +-% digits ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++reorder-end ++ ++script ++ ++order_start ;forward;forward;forward;forward,position + <0>;;IGNORE;IGNORE + <0>;;IGNORE;IGNORE + <1>;;IGNORE;IGNORE +@@ -776,430 +866,580 @@ + <9>;;IGNORE;IGNORE + <9>;;IGNORE;IGNORE + +-% letters +- ;;;IGNORE % ka +- ;;;IGNORE +- "";"";"";IGNORE % kssa +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % kha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ga +- ;;;IGNORE +- "";"";"";IGNORE % gha +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % nga +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ca +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % cha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ja +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % nya +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ta +- ;;;IGNORE +- ;;;IGNORE % tta +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % tha +- ;;;IGNORE +- ;;;IGNORE % ttha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % da +- ;;;IGNORE +- ;;;IGNORE % dda +- ;;;IGNORE +- "";"";"";IGNORE % dha +- "";"";"";IGNORE +- "";"";"";IGNORE % ddha +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % na +- ;;;IGNORE +- ;;;IGNORE % nna +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % pa +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % pha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ba +- ;;;IGNORE +- "";"";"";IGNORE % bha +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ma +- ;;;IGNORE +- ;;;IGNORE % +- ;;;IGNORE % +- ;;;IGNORE % +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % tsa +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % tsha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % dza +- ;;;IGNORE +- "";"";"";IGNORE % dzha +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % wa +- ;;;IGNORE +- ;;;IGNORE % fixed wa +- ;;;IGNORE % zha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % za +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % -a +- ;;;IGNORE +- ;;;IGNORE % ya +- ;;;IGNORE +- ;;;IGNORE % fixed ya +- ;;;IGNORE +- ;;;IGNORE % ra +- ;;;IGNORE +- ;;;IGNORE % fixed ra +- ;;;IGNORE +- ;;;IGNORE % vocalic r +-% FIXME; which of the two? +- ;;;IGNORE % vocalic rr +-% "";";";IGNORE % vocalic rr +- "";"";"";IGNORE +- ;;;IGNORE % la +- ;;;IGNORE +- ;;;IGNORE % vocalic l +-% FIXME; which of the two? +- ;;;IGNORE % vocalic ll +-% "";";";IGNORE % vocalic ll +- ;;;IGNORE % sha +- ;;;IGNORE +- ;;;IGNORE % ssa +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % sa +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE % ha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % a +- ;;;IGNORE +- +-% explicit vowels +- IGNORE;;IGNORE;IGNORE % long vowel mark % FIXME +- ;;;IGNORE % i +- ;;;IGNORE % reversed i +- ;;;IGNORE % ii +- ;;;IGNORE % reversed ii +- ;;;IGNORE % u +- ;;;IGNORE % uu +- ;;;IGNORE % e +- ;;;IGNORE % ee +- ;;;IGNORE % o +- ;;;IGNORE % oo +- +-% FIXME: 0F39, 0F7F, 0F84, 0F85, 0F86, 0F87, +- +-% FIXME: 0F88, UF89, UF8A, 0F8B +- IGNORE;;IGNORE;IGNORE +- IGNORE;;IGNORE;IGNORE +- IGNORE;;IGNORE;IGNORE +- IGNORE;;IGNORE;IGNORE ++ ;IGNORE;IGNORE;IGNORE + +-reorder-end ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++order_end + + END LC_COLLATE + --- glibc-2.4.orig/debian/patches/localedata/new-valencian-locale.diff +++ glibc-2.4/debian/patches/localedata/new-valencian-locale.diff @@ -0,0 +1,116 @@ +Submitted upstream: BZ2522 + +Index: glibc-2.3.6/localedata/locales/ca_ES@valencia +=================================================================== +--- /dev/null ++++ glibc-2.3.6/localedata/locales/ca_ES@valencia +@@ -0,0 +1,96 @@ ++comment_char % ++escape_char / ++% ++% Valencian (southern Catalan) locale for Spain with Euro ++% ++% Note that this locale is almost the same as ca_ES@euro. The point of having ++% a separate locale is only for PO translations, which have a lot of social ++% support and are very appreciated by the Valencian-speaking community. ++% ++% Contact: Jordi Mallach ++% Email: jordi@gnu.org ++% Tel: ++% Fax: ++% Language: ca ++% Territory: ES ++% Option: euro ++% Revision: 1.0 ++% Date: 2006-04-06 ++% Application: general ++% Users: general ++% Repertoiremap: mnemonic,ds ++% Charset: ISO-8859-15 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Valencian (southern Catalan) locale for Spain with Euro" ++source "" ++address "" ++contact "Jordi Mallach" ++email "jordi@gnu.org" ++tel "" ++fax "" ++language "Catalan" ++territory "Spain" ++revision "1.0" ++date "2006-04-06" ++% ++category "ca_ES@valencia:2006";LC_IDENTIFICATION ++category "ca_ES@valencia:2006";LC_CTYPE ++category "ca_ES@valencia:2006";LC_COLLATE ++category "ca_ES@valencia:2006";LC_MONETARY ++category "ca_ES@valencia:2006";LC_NUMERIC ++category "ca_ES@valencia:2006";LC_TIME ++category "ca_ES@valencia:2006";LC_MESSAGES ++category "ca_ES@valencia:2006";LC_PAPER ++category "ca_ES@valencia:2006";LC_NAME ++category "ca_ES@valencia:2006";LC_ADDRESS ++category "ca_ES@valencia:2006";LC_TELEPHONE ++category "ca_ES@valencia:2006";LC_MEASUREMENT ++ ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_COLLATE ++copy "ca_ES" ++END LC_COLLATE ++ ++LC_MONETARY ++copy "ca_ES" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "ca_ES" ++END LC_NUMERIC ++ ++LC_TIME ++copy "ca_ES" ++END LC_TIME ++ ++LC_MESSAGES ++copy "ca_ES" ++END LC_MESSAGES ++ ++LC_PAPER ++copy "ca_ES" ++END LC_PAPER ++ ++LC_NAME ++copy "ca_ES" ++END LC_NAME ++ ++LC_ADDRESS ++copy "ca_ES" ++END LC_ADDRESS ++ ++LC_TELEPHONE ++copy "ca_ES" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "ca_ES" ++END LC_MEASUREMENT +Index: glibc-2.3.6/localedata/SUPPORTED +=================================================================== +--- glibc-2.3.6.orig/localedata/SUPPORTED ++++ glibc-2.3.6/localedata/SUPPORTED +@@ -65,6 +65,8 @@ + ca_ES.UTF-8/UTF-8 \ + ca_ES/ISO-8859-1 \ + ca_ES@euro/ISO-8859-15 \ ++ca_ES.UTF-8@valencia/UTF-8 \ ++ca_ES@valencia/ISO-8859-15 \ + ca_FR.UTF-8/UTF-8 \ + ca_FR/ISO-8859-15 \ + ca_IT.UTF-8/UTF-8 \ --- glibc-2.4.orig/debian/patches/localedata/locale-sa_IN.diff +++ glibc-2.4/debian/patches/localedata/locale-sa_IN.diff @@ -0,0 +1,267 @@ +Index: localedata/locales/sa_IN +=================================================================== +--- /dev/null ++++ localedata/locales/sa_IN +@@ -0,0 +1,250 @@ ++comment_char % ++escape_char / ++% Sanskrit language locale for India. ++% Contributed by Vidya Ayer ++% and Christian Perrier ++ ++LC_IDENTIFICATION ++title "Sanskrit language locale for India" ++source "The Debian project" ++address "" ++contact "Christian Perrier" ++email "bubulle@debian.org" ++tel "" ++fax "" ++language "Sanskrit" ++territory "India" ++revision "1.0" ++date "2005-09-25" ++% ++category "sa_IN:2000";LC_IDENTIFICATION ++category "sa_IN:2000";LC_CTYPE ++category "sa_IN:2000";LC_COLLATE ++category "sa_IN:2000";LC_TIME ++category "sa_IN:2000";LC_NUMERIC ++category "sa_IN:2000";LC_MONETARY ++category "sa_IN:2000";LC_MESSAGES ++category "sa_IN:2000";LC_PAPER ++category "sa_IN:2000";LC_NAME ++category "sa_IN:2000";LC_ADDRESS ++category "sa_IN:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_COLLATE ++ ++% Copy the template from ISO/IEC 14651 ++copy "iso14651_t1" ++ ++END LC_COLLATE ++ ++LC_MONETARY ++% This is the POSIX Locale definition the LC_MONETARY category. ++% These are generated based on XML base Locale difintion file ++% for IBM Class for Unicode/Java ++% ++int_curr_symbol "" ++currency_symbol "" ++mon_decimal_point "" ++mon_thousands_sep "" ++mon_grouping 3 ++positive_sign "" ++negative_sign "" ++int_frac_digits 2 ++frac_digits 2 ++p_cs_precedes 1 ++p_sep_by_space 1 ++n_cs_precedes 1 ++n_sep_by_space 1 ++p_sign_posn 1 ++n_sign_posn 1 ++% ++END LC_MONETARY ++ ++ ++LC_NUMERIC ++% This is the POSIX Locale definition for the LC_NUMERIC category. ++% ++decimal_point "" ++thousands_sep "" ++grouping 3 ++% ++END LC_NUMERIC ++ ++ ++LC_TIME ++% This is the POSIX Locale definition for the LC_TIME category. ++% These are generated based on XML base Locale difintion file ++% for IBM Class for Unicode/Java ++% ++% Abbreviated weekday names (%a) ++% ravih,somah,mangalah,budhah,brhaspatih,shukra,shanih ++abday "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% ++% Full weekday names (%A) ++% ravivasarah, somavasarah, mangalavasarah, budhavasarah, brhaspativasarah, shukravasarah, shanivasarah ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% ++% Abbreviated month names (%b) ++% Below comes from hi_IN. ++% Sanskrit uses a lunar calendar. When gregorian month names ++% are needed, the names are the same names than those used ++% by Hindi ++% names for gregorian month names: ++abmon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% ++% Full month names (%B) ++% Sanskrit uses a lunar calendar. When gregorian month names ++% are needed, the names are the same names than those used ++% by Hindi ++% Lunar calendar month names: ++% Chaitra March 22 ++% Vaisakha April 29 ++% jyeshthah May 22 ++% ashadah June 22 ++% shravanah July 23 ++% bhadrapadah August 23 ++% ashvinah September 23 ++% kartikah October 23 ++% margashirsah November 22 ++% paushah December 22 ++% maghah January 29 ++% phalgunah February 20 ++% names for gregorian month names: ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% ++% Equivalent of AM PM ++am_pm "";/ ++ "" ++% ++% Appropriate date and time representation ++% %A %d %b %Y%I:%M:%S %Z ++d_t_fmt "/ ++/ ++" ++% ++% Appropriate date representation ++% %A %d %b %Y ++d_fmt "/ ++" ++% ++% Appropriate time representation ++% %I:%M:%S %Z ++t_fmt "/ ++" ++% ++% Appropriate 12 h time representation (%r) ++t_fmt_ampm "/ ++" ++% ++date_fmt "/ ++/ ++" ++END LC_TIME ++ ++ ++LC_MESSAGES ++% "^[aAyY].*" ++% "^[nN].*" ++yesexpr "" ++noexpr "" ++END LC_MESSAGES ++ ++ ++LC_PAPER ++% This is the ISO_IEC TR14652 Locale definition for the LC_PAPER category ++% generated by IBM Basic CountryPack Transformer. ++height 297 ++width 210 ++ ++END LC_PAPER ++ ++ ++LC_NAME ++% This is the ISO_IEC TR14652 Locale definition for the ++% LC_NAME category. ++% ++name_fmt "/ ++" ++name_gen "" ++% ++% shri ++name_mr "" ++% For boys under 18, this is "kumar" ++% but locales are sexist and do not even imagine ++% that some language may have different forms for MEN too ++% name_mr "" ++% shrimati ++name_mrs "" ++% kumari ++name_miss "" ++% shrimati ++name_ms "" ++ ++END LC_NAME ++ ++ ++LC_ADDRESS ++% This is the ISO_IEC TR14652 Locale definition for the ++% LC_ADDRESS ++postal_fmt "/ ++" ++ ++country_ab2 "" ++country_ab3 "" ++country_num 356 ++END LC_ADDRESS ++ ++ ++LC_TELEPHONE ++% This is the ISO_IEC TR14652 Locale definition for the LC_TELEPHONE ++% generated by IBM Basic CountryPack Transformer. ++tel_int_fmt "" ++int_prefix "" ++int_select "" ++END LC_TELEPHONE ++ ++ ++LC_MEASUREMENT ++% This is the ISO_IEC TR14652 Locale definition for the LC_MEASUREMENT ++% category generated by IBM Basic CountryPack Transformer. ++measurement 1 ++END LC_MEASUREMENT +Index: localedata/SUPPORTED +=================================================================== +--- localedata/SUPPORTED.orig ++++ localedata/SUPPORTED +@@ -291,6 +291,7 @@ + ru_UA.UTF-8/UTF-8 \ + ru_UA/KOI8-U \ + rw_RW/UTF-8 \ ++sa_IN/UTF-8 \ + se_NO/UTF-8 \ + si_LK/UTF-8 \ + sid_ET/UTF-8 \ --- glibc-2.4.orig/debian/patches/localedata/locale-ia.diff +++ glibc-2.4/debian/patches/localedata/locale-ia.diff @@ -0,0 +1,162 @@ +Locale definition for the interlingua locale, submitted by +Alberto Mardegan in #224756. +Ulrich Drepper claimed that he will not accept artificial +languages (like interlingua and esperanto), this locale +will thus not be submitted upstream. + +Index: glibc-2.3.6/localedata/locales/ia +=================================================================== +--- /dev/null ++++ glibc-2.3.6/localedata/locales/ia +@@ -0,0 +1,139 @@ ++comment_char % ++escape_char / ++% ++% Interlingua Language Locale ++ ++LC_IDENTIFICATION ++title "Interlingua locale" ++source "" ++address "" ++contact "" ++email "mardy@despammed.com" ++tel "" ++fax "" ++language "Interlingua" ++territory "" ++revision "1.0" ++date "2003-11-25" ++% ++category "ia:2000";LC_IDENTIFICATION ++category "ia:2000";LC_CTYPE ++category "ia:2000";LC_COLLATE ++category "ia:2000";LC_TIME ++category "ia:2000";LC_NUMERIC ++category "ia:2000";LC_MONETARY ++category "ia:2000";LC_MESSAGES ++category "ia:2000";LC_PAPER ++category "ia:2000";LC_NAME ++category "ia:2000";LC_ADDRESS ++category "ia:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_MESSAGES ++yesexpr "" ++noexpr "" ++END LC_MESSAGES ++ ++LC_MONETARY ++int_curr_symbol "" ++currency_symbol "" ++mon_decimal_point "" ++mon_thousands_sep "" ++mon_grouping 3;3 ++positive_sign "" ++negative_sign "" ++int_frac_digits 2 ++frac_digits 2 ++p_cs_precedes 1 ++p_sep_by_space 1 ++n_cs_precedes 1 ++n_sep_by_space 1 ++p_sign_posn 1 ++n_sign_posn 1 ++END LC_MONETARY ++ ++LC_NUMERIC ++decimal_point "" ++thousands_sep "" ++grouping 0;0 ++END LC_NUMERIC ++ ++LC_TIME ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++d_t_fmt "" ++d_fmt "" ++t_fmt "" ++am_pm "";"" ++t_fmt_ampm "" ++date_fmt "/ ++/ ++" ++END LC_TIME ++ ++LC_PAPER ++% FIXME ++height 297 ++% FIXME ++width 210 ++END LC_PAPER ++ ++LC_TELEPHONE ++tel_int_fmt "/ ++" ++int_select "" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++% FIXME ++measurement 1 ++END LC_MEASUREMENT ++ ++LC_NAME ++name_fmt "/ ++" ++END LC_NAME ++ ++LC_ADDRESS ++postal_fmt "/ ++/ ++/ ++/ ++" ++END LC_ADDRESS +Index: glibc-2.3.6/localedata/SUPPORTED +=================================================================== +--- glibc-2.3.6.orig/localedata/SUPPORTED ++++ glibc-2.3.6/localedata/SUPPORTED +@@ -221,6 +221,7 @@ + hu_HU.UTF-8/UTF-8 \ + hu_HU/ISO-8859-2 \ + hy_AM.UTF-8/UTF-8 \ ++ia/UTF-8 \ + id_ID.UTF-8/UTF-8 \ + id_ID/ISO-8859-1 \ + is_IS.UTF-8/UTF-8 \ --- glibc-2.4.orig/debian/patches/localedata/locale-hy_AM.diff +++ glibc-2.4/debian/patches/localedata/locale-hy_AM.diff @@ -0,0 +1,193 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Various fixes for hy_AM +# DP: Apply patch#13 from BZ68. +# DP: Thanks to patches/locale/LC_COLLATE-keywords-ordering.diff, +# DP: the limitations explained in this bugreport do not apply and +# DP: collation rules can be defined the right way. +# DP: This locale has never been supported, it is not clear whether +# DP: ARMSCII-8 encoding will be accepted as the default, thus +# DP: define hy_AM.UTF-8 until it is accepted upstream. +# DP: Related bugs: BZ68 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Pablo Saratxaga, Ani +# DP: Upstream status: BZ68 +# DP: Date: 2006-01-15 + +Index: glibc-2.3.5/localedata/locales/hy_AM +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/hy_AM ++++ glibc-2.3.5/localedata/locales/hy_AM +@@ -1,16 +1,16 @@ + escape_char / + comment_char % +-% charset "ARMSCII-8" ++% Charset: UTF-8 + % Distribution and use is free, also for commercial purposes. + + LC_IDENTIFICATION + title "Armenian language locale for Armenia" +-source "http://moon.yerphi.am/~hovik/ArmSCII/ArmCS-005.html" ++source "http://www.freenet.am/armscii" + % Eugene Sevinian completed + % LC_MONETARY and LC_TIME + address "" + contact "Pablo Saratxaga" +-email "srtxg@chanae.alphanet.ch" ++email "pablo@mandrakesoft.com" + tel "" + fax "" + language "Armenian" +@@ -18,17 +18,17 @@ + revision "0.4" + date "2001-01-26" + +-category hy_AM:2000;LC_IDENTIFICATION +-category hy_AM:2000;LC_COLLATE +-category hy_AM:2000;LC_CTYPE +-category hy_AM:2000;LC_MESSAGES +-category hy_AM:2000;LC_MONETARY +-category hy_AM:2000;LC_NUMERIC +-category hy_AM:2000;LC_TIME +-category hy_AM:2000;LC_PAPER +-category hy_AM:2000;LC_MEASUREMENT +-category hy_AM:2000;LC_TELEPHONE +-category hy_AM:2000;LC_ADDRESS ++category "hy_AM:2000";LC_IDENTIFICATION ++category "hy_AM:2000";LC_COLLATE ++category "hy_AM:2000";LC_CTYPE ++category "hy_AM:2000";LC_MESSAGES ++category "hy_AM:2000";LC_MONETARY ++category "hy_AM:2000";LC_NUMERIC ++category "hy_AM:2000";LC_TIME ++category "hy_AM:2000";LC_PAPER ++category "hy_AM:2000";LC_MEASUREMENT ++category "hy_AM:2000";LC_TELEPHONE ++category "hy_AM:2000";LC_ADDRESS + + % ISO/IEC 14652: Converted comments to LC_IDENTIFICATION + % added LC_PAPER, LC_MEASUREMENT, LC_TELEPHONE +@@ -67,16 +67,15 @@ + %%%%%%%%%%%% + + LC_COLLATE +- +-% Armenian sorting is not yet on iso14651_t1 +- +-script ++copy "iso14651_t1" + + collating-symbol + collating-symbol ++collating-symbol + collating-symbol +-collating-symbol + collating-symbol ++collating-symbol ++collating-symbol + collating-symbol + collating-symbol + collating-symbol +@@ -111,8 +110,50 @@ + collating-symbol + collating-symbol + ++reorder-after ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++reorder-end + +-copy "iso14651_t1" ++script + + order_start ;forward;forward;forward;forward,position + ;;;IGNORE +@@ -277,8 +318,8 @@ + LC_MESSAGES + yesstr "" + nostr "" +-yesexpr "" +-noexpr "" ++yesexpr "" ++noexpr "" + END LC_MESSAGES + + % Metric Measurement system (ISO 1000) +@@ -303,20 +344,23 @@ + postal_fmt "/ + / + " +-% FIXME country_name "Armenia" in Armenian ++country_name "" + % FIXME country_post for Armenia? + country_ab2 "" + country_ab3 "" + country_num 51 +-% FIXME country_car for Armenia ? ++country_car "" + country_isbn "" +-% FIXME lang_name Armenian in Armenian ++lang_name "" + lang_ab "" + lang_term "" + lang_lib "" + END LC_ADDRESS + + LC_NAME +-% FIXME +-name_fmt "???" ++name_fmt "/ ++" ++name_miss "" ++name_mr "" ++name_mrs "" + END LC_NAME +Index: glibc-2.3.5/localedata/SUPPORTED +=================================================================== +--- glibc-2.3.5.orig/localedata/SUPPORTED ++++ glibc-2.3.5/localedata/SUPPORTED +@@ -213,6 +213,7 @@ + hsb_DE.UTF-8/UTF-8 \ + hu_HU.UTF-8/UTF-8 \ + hu_HU/ISO-8859-2 \ ++hy_AM.UTF-8/UTF-8 \ + id_ID.UTF-8/UTF-8 \ + id_ID/ISO-8859-1 \ + is_IS.UTF-8/UTF-8 \ --- glibc-2.4.orig/debian/patches/localedata/locales_GB.diff +++ glibc-2.4/debian/patches/localedata/locales_GB.diff @@ -0,0 +1,42 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Add AM/PM strings to cy_GB and en_GB. +# DP: This patch has been rejected upstream but is in fedora-branch. +# DP: Related bugs: #240901 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: taken from Fedora +# DP: Upstream status: not submitted +# DP: Date: 2006-02-16 + +Index: localedata/locales/cy_GB +=================================================================== +--- localedata/locales/cy_GB.orig ++++ localedata/locales/cy_GB +@@ -248,8 +248,11 @@ + d_t_fmt "" + d_fmt "" + t_fmt "" +-am_pm "";"" +-t_fmt_ampm "" ++am_pm "";"" ++t_fmt_ampm "" ++date_fmt "/ ++/ ++" + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/en_GB +=================================================================== +--- localedata/locales/en_GB.orig ++++ localedata/locales/en_GB +@@ -112,8 +112,8 @@ + d_t_fmt "" + d_fmt "" + t_fmt "" +-am_pm "";"" +-t_fmt_ampm "" ++am_pm "";"" ++t_fmt_ampm "" + date_fmt "/ + / + " --- glibc-2.4.orig/debian/patches/localedata/locale-eu_FR.diff +++ glibc-2.4/debian/patches/localedata/locale-eu_FR.diff @@ -0,0 +1,211 @@ +#! /bin/sh -e + +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: #257840: locales: Please add the eu_FR locale +# DP: Related bugs: #257840 +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: Christian Perrier +# DP: Upstream status: Not submitted +# DP: Status Details: sending upstream +# DP: Date: 2004-07-31 + +PATCHLEVEL=0 + +if [ $# -ne 2 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -d "$2" -f --no-backup-if-mismatch -p$PATCHLEVEL < $0;; + -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p$PATCHLEVEL < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. +--- localedata/locales/eu_FR 2004-06-26 20:05:20.000000000 +0900 ++++ localedata/locales/eu_FR 2004-07-31 17:14:20.000000000 +0900 +@@ -0,0 +1,83 @@ ++comment_char % ++escape_char / ++% ++% Basque Language Locale for France ++% Language: eu ++% Territory: FR ++% Revision: 1.0 ++% Date: 2004-06-24 ++% Users: general ++% Charset: ISO-8859-1 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Basque locale for France" ++source "Christian Perrier and the Debian Project" ++address "" ++contact "Christian Perrier" ++email "bubulle@debian.org" ++tel "" ++fax "" ++language "Basque" ++territory "France" ++revision "1.0" ++date "2004-06-24" ++% ++category "eu_FR:2000";LC_IDENTIFICATION ++category "eu_FR:2000";LC_CTYPE ++category "eu_FR:2000";LC_COLLATE ++category "eu_FR:2000";LC_TIME ++category "eu_FR:2000";LC_NUMERIC ++category "eu_FR:2000";LC_MONETARY ++category "eu_FR:2000";LC_MESSAGES ++category "eu_FR:2000";LC_PAPER ++category "eu_FR:2000";LC_NAME ++category "eu_FR:2000";LC_ADDRESS ++category "eu_FR:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_MESSAGES ++copy "eu_ES" ++END LC_MESSAGES ++ ++LC_MONETARY ++copy "fr_FR" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "fr_FR" ++END LC_NUMERIC ++ ++LC_TIME ++copy "eu_ES" ++END LC_TIME ++ ++LC_PAPER ++copy "fr_FR" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "fr_FR" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "fr_FR" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "eu_ES" ++END LC_NAME ++ ++LC_ADDRESS ++copy "fr_FR" ++END LC_ADDRESS +--- localedata/SUPPORTED 2004-07-31 17:32:45.000000000 +0900 ++++ localedata/SUPPORTED 2004-07-31 17:34:45.000000000 +0900 +@@ -166,6 +166,9 @@ + eu_ES.UTF-8@euro/UTF-8 \ + eu_ES/ISO-8859-1 \ + eu_ES@euro/ISO-8859-15 \ ++eu_FR.UTF-8/UTF-8 \ ++eu_FR/ISO-8859-1 \ ++eu_FR@euro/ISO-8859-15 \ + fa_IR/UTF-8 \ + fi_FI.UTF-8/UTF-8 \ + fi_FI.UTF-8@euro/UTF-8 \ +--- localedata/locales/eu_FR@euro 2004-06-26 20:05:20.000000000 +0900 ++++ localedata/locales/eu_FR@euro 2004-07-31 23:55:16.000000000 +0900 +@@ -0,0 +1,83 @@ ++comment_char % ++escape_char / ++% ++% Basque Language Locale for France ++% Language: eu ++% Territory: FR ++% Revision: 1.0 ++% Date: 2004-06-24 ++% Users: general ++% Charset: ISO-8859-15 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Basque locale for France" ++source "Christian Perrier and the Debian Project" ++address "" ++contact "Christian Perrier" ++email "bubulle@debian.org" ++tel "" ++fax "" ++language "Basque" ++territory "France" ++revision "1.0" ++date "2004-06-24" ++% ++category "eu_FR:2000";LC_IDENTIFICATION ++category "eu_FR:2000";LC_CTYPE ++category "eu_FR:2000";LC_COLLATE ++category "eu_FR:2000";LC_TIME ++category "eu_FR:2000";LC_NUMERIC ++category "eu_FR:2000";LC_MONETARY ++category "eu_FR:2000";LC_MESSAGES ++category "eu_FR:2000";LC_PAPER ++category "eu_FR:2000";LC_NAME ++category "eu_FR:2000";LC_ADDRESS ++category "eu_FR:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_MESSAGES ++copy "eu_ES" ++END LC_MESSAGES ++ ++LC_MONETARY ++copy "fr_FR" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "fr_FR" ++END LC_NUMERIC ++ ++LC_TIME ++copy "eu_ES" ++END LC_TIME ++ ++LC_PAPER ++copy "fr_FR" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "fr_FR" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "fr_FR" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "eu_ES" ++END LC_NAME ++ ++LC_ADDRESS ++copy "fr_FR" ++END LC_ADDRESS --- glibc-2.4.orig/debian/patches/localedata/locales_CH.diff +++ glibc-2.4/debian/patches/localedata/locales_CH.diff @@ -0,0 +1,45 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: thousand separator for Swiss locales is ' +# DP: Related bugs: #345481 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-02-16 + +Index: glibc-2.3.6/localedata/locales/de_CH +=================================================================== +--- glibc-2.3.6.orig/localedata/locales/de_CH ++++ glibc-2.3.6/localedata/locales/de_CH +@@ -62,7 +62,7 @@ + int_curr_symbol "" + currency_symbol "" + mon_decimal_point "" +-mon_thousands_sep "" ++mon_thousands_sep "" + mon_grouping 3;3 + positive_sign "" + negative_sign "" +@@ -78,7 +78,7 @@ + + LC_NUMERIC + decimal_point "" +-thousands_sep "" ++thousands_sep "" + grouping 3;3 + END LC_NUMERIC + +Index: glibc-2.3.6/localedata/locales/it_CH +=================================================================== +--- glibc-2.3.6.orig/localedata/locales/it_CH ++++ glibc-2.3.6/localedata/locales/it_CH +@@ -57,9 +57,7 @@ + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 3;3 ++copy "de_CH" + END LC_NUMERIC + + LC_TIME --- glibc-2.4.orig/debian/patches/localedata/fix-unknown-symbols.diff +++ glibc-2.4/debian/patches/localedata/fix-unknown-symbols.diff @@ -0,0 +1,175 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix unknown symbols in collation rules. These symbols +# DP: are trapped by locale/check-unknown-symbols.diff +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-19 + +Index: glibc-2.3.5/localedata/locales/da_DK +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/da_DK ++++ glibc-2.3.5/localedata/locales/da_DK +@@ -66,6 +66,7 @@ + collating-symbol + collating-symbol + collating-symbol ++collating-symbol + + reorder-after + +Index: glibc-2.3.5/localedata/locales/fa_IR +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/fa_IR ++++ glibc-2.3.5/localedata/locales/fa_IR +@@ -97,6 +97,7 @@ + collating-symbol + + collating-element from "" ++collating-element from "" + collating-element from "" + collating-element from "" + collating-element from "" +Index: glibc-2.3.5/localedata/locales/is_IS +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/is_IS ++++ glibc-2.3.5/localedata/locales/is_IS +@@ -947,7 +947,6 @@ + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; +@@ -956,8 +955,6 @@ + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; + UNDEFINED IGNORE;IGNORE;IGNORE + + ;;IGNORE;IGNORE +Index: glibc-2.3.5/localedata/locales/lo_LA +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/lo_LA ++++ glibc-2.3.5/localedata/locales/lo_LA +@@ -230,6 +230,7 @@ + collating-element from "" + collating-element from "" + ++collating-element from "" + collating-element from "" + collating-element from "" + collating-element from "" +@@ -601,10 +602,10 @@ + + ;;; % Lao CHARACTER HHOr + "";;; +- "";;; +- "";;; +- "";;; +- "";;; ++ "";;; ++ "";;; ++ "";;; ++ "";;; + + + % order of Lao vowels +Index: glibc-2.3.5/localedata/locales/lv_LV +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/lv_LV ++++ glibc-2.3.5/localedata/locales/lv_LV +@@ -919,7 +919,6 @@ + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; + IGNORE;IGNORE;IGNORE; +Index: glibc-2.3.5/localedata/locales/nb_NO +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/nb_NO ++++ glibc-2.3.5/localedata/locales/nb_NO +@@ -59,6 +59,7 @@ + collating-symbol + collating-symbol + collating-symbol ++collating-symbol + + reorder-after + +Index: glibc-2.3.5/localedata/locales/sr_CS +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/sr_CS ++++ glibc-2.3.5/localedata/locales/sr_CS +@@ -137,6 +137,21 @@ + + copy "iso14651_t1" + ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++ ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++ ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++ + collating-symbol + collating-symbol + collating-symbol +@@ -179,35 +194,35 @@ + + reorder-after + ;;;IGNORE +- ;;;IGNORE ++ ;;;IGNORE + ;;;IGNORE + ;;;IGNORE + reorder-after + ;;;IGNORE +- ;;;IGNORE ++ ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE ++ ;;;IGNORE + ;;;IGNORE + + reorder-after + ;;;IGNORE +- ;;;IGNORE ++ ;;;IGNORE + ;;;IGNORE + reorder-after + ;;;IGNORE +- ;;;IGNORE ++ ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE ++ ;;;IGNORE + + reorder-after + ;;;IGNORE +- ;;;IGNORE ++ ;;;IGNORE + ;;;IGNORE + reorder-after + ;;;IGNORE +- ;;;IGNORE ++ ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE ++ ;;;IGNORE + + reorder-after + ;;;IGNORE --- glibc-2.4.orig/debian/patches/localedata/locale-csb_PL.diff +++ glibc-2.4/debian/patches/localedata/locale-csb_PL.diff @@ -0,0 +1,232 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: New csb_PL locale file +# DP: Related bugs: BZ548 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Andrzej Krzysztofowicz +# DP: Upstream status: BZ548 +# DP: Detailed status: Modified collation rules to tailor iso14651_t1 +# DP: Date: 2006-01-18 + +Index: glibc-2.3.5/localedata/locales/csb_PL +=================================================================== +--- /dev/null ++++ glibc-2.3.5/localedata/locales/csb_PL +@@ -0,0 +1,206 @@ ++comment_char % ++escape_char / ++% ++% Kashubian Language Locale for Poland ++% by Andrzej Krzysztofowicz ++% Source: information from Leszek Lubecki ++% ++% Distribution and use is free, also for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Kashubian locale for Poland" ++source "Information from Leszek Lubecki" ++address "" ++contact "Andrzej Krzysztofowicz" ++email "ankry@mif.pg.gda.pl" ++tel "" ++fax "" ++language "Kashubian" ++territory "Poland" ++revision "0.2" ++date "2004-09-10" ++% ++category i18n:1997;LC_IDENTIFICATION ++category i18n:1997;LC_CTYPE ++category i18n:1997;LC_COLLATE ++category i18n:1997;LC_MONETARY ++category i18n:1997;LC_NUMERIC ++category i18n:1997;LC_TIME ++category i18n:1997;LC_MESSAGES ++category i18n:1997;LC_PAPER ++category i18n:1997;LC_NAME ++category i18n:1997;LC_ADDRESS ++category i18n:1997;LC_TELEPHONE ++category i18n:1997;LC_MEASUREMENT ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_COLLATE ++copy "iso14651_t1" ++ ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-end ++ ++END LC_COLLATE ++ ++LC_MONETARY ++copy "pl_PL" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "pl_PL" ++END LC_NUMERIC ++ ++LC_TIME ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++d_t_fmt "" ++d_fmt "" ++t_fmt "" ++am_pm "";"" ++t_fmt_ampm "" ++date_fmt "/ ++/ ++" ++END LC_TIME ++ ++LC_MESSAGES ++copy "pl_PL" ++END LC_MESSAGES ++ ++LC_PAPER ++copy "pl_PL" ++END LC_PAPER ++ ++LC_NAME ++copy "pl_PL" ++END LC_NAME ++ ++LC_ADDRESS ++postal_fmt "/ ++/ ++/ ++/ ++" ++country_num 616 ++country_name "" ++country_ab2 "" ++country_ab3 "" ++country_post "" ++country_car "" ++country_isbn "" ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" ++END LC_ADDRESS ++ ++LC_TELEPHONE ++copy "pl_PL" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "pl_PL" ++END LC_MEASUREMENT +Index: glibc-2.3.5/localedata/SUPPORTED +=================================================================== +--- glibc-2.3.5.orig/localedata/SUPPORTED ++++ glibc-2.3.5/localedata/SUPPORTED +@@ -71,6 +71,7 @@ + ca_IT/ISO-8859-15 \ + cs_CZ.UTF-8/UTF-8 \ + cs_CZ/ISO-8859-2 \ ++csb_PL/UTF-8 \ + cy_GB.UTF-8/UTF-8 \ + cy_GB/ISO-8859-14 \ + da_DK.UTF-8/UTF-8 \ --- glibc-2.4.orig/debian/patches/localedata/locale-de_CH.diff +++ glibc-2.4/debian/patches/localedata/locale-de_CH.diff @@ -0,0 +1,39 @@ +#! /bin/sh -e + +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Changing d_fmt from "%Y-%m-%d" to "%d.%m.%Y" +# DP: Related bugs: #27397 +# DP: Dpatch author: +# DP: Patch author: Alastair McKinstry +# DP: Upstream status: +# DP: Status Details: +# DP: Date: 2002-02-11 + +if [ $# -ne 2 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +# append the patch here and adjust the -p? flag in the patch calls. +diff -urN glibc-2.2.5.orig/localedata/locales/de_CH glibc-2.2.5/localedata/locales/de_CH +--- glibc-2.2.5.orig/localedata/locales/de_CH Thu Dec 20 10:51:20 2001 ++++ glibc-2.2.5/localedata/locales/de_CH Sun Mar 10 23:00:09 2002 +@@ -114,7 +114,7 @@ + "";/ + "" + d_t_fmt "" +-d_fmt "" ++d_fmt "" + t_fmt "" + am_pm "";"" + t_fmt_ampm "" + --- glibc-2.4.orig/debian/patches/localedata/first_weekday.diff +++ glibc-2.4/debian/patches/localedata/first_weekday.diff @@ -0,0 +1,2186 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Add first_weekday, most come from OpenOffice through CLDR +# DP: This patch applies the following conventions: +# DP: 1=Sunday...7=Saturday +# DP: The week keyword is removed from all locales. +# DP: Normally GTK apps should work with these settings, as well as +# DP: other apps. +# DP: Related bugs: #343885 347323 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-10 + +Index: localedata/locales/aa_DJ +=================================================================== +--- localedata/locales/aa_DJ.orig ++++ localedata/locales/aa_DJ +@@ -269,5 +269,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/aa_ER +=================================================================== +--- localedata/locales/aa_ER.orig ++++ localedata/locales/aa_ER +@@ -223,5 +223,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/aa_ER@saaho +=================================================================== +--- localedata/locales/aa_ER@saaho.orig ++++ localedata/locales/aa_ER@saaho +@@ -207,5 +207,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/aa_ET +=================================================================== +--- localedata/locales/aa_ET.orig ++++ localedata/locales/aa_ET +@@ -226,5 +226,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/af_ZA +=================================================================== +--- localedata/locales/af_ZA.orig ++++ localedata/locales/af_ZA +@@ -155,6 +155,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/am_ET +=================================================================== +--- localedata/locales/am_ET.orig ++++ localedata/locales/am_ET +@@ -1562,5 +1562,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/ar_AE +=================================================================== +--- localedata/locales/ar_AE.orig ++++ localedata/locales/ar_AE +@@ -141,6 +141,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_BH +=================================================================== +--- localedata/locales/ar_BH.orig ++++ localedata/locales/ar_BH +@@ -145,6 +145,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_DZ +=================================================================== +--- localedata/locales/ar_DZ.orig ++++ localedata/locales/ar_DZ +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_EG +=================================================================== +--- localedata/locales/ar_EG.orig ++++ localedata/locales/ar_EG +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_IN +=================================================================== +--- localedata/locales/ar_IN.orig ++++ localedata/locales/ar_IN +@@ -127,6 +127,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: copied from other *_IN locales ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/ar_IQ +=================================================================== +--- localedata/locales/ar_IQ.orig ++++ localedata/locales/ar_IQ +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_JO +=================================================================== +--- localedata/locales/ar_JO.orig ++++ localedata/locales/ar_JO +@@ -162,6 +162,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_KW +=================================================================== +--- localedata/locales/ar_KW.orig ++++ localedata/locales/ar_KW +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_LB +=================================================================== +--- localedata/locales/ar_LB.orig ++++ localedata/locales/ar_LB +@@ -161,6 +161,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_LY +=================================================================== +--- localedata/locales/ar_LY.orig ++++ localedata/locales/ar_LY +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_MA +=================================================================== +--- localedata/locales/ar_MA.orig ++++ localedata/locales/ar_MA +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_OM +=================================================================== +--- localedata/locales/ar_OM.orig ++++ localedata/locales/ar_OM +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_QA +=================================================================== +--- localedata/locales/ar_QA.orig ++++ localedata/locales/ar_QA +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_SA +=================================================================== +--- localedata/locales/ar_SA.orig ++++ localedata/locales/ar_SA +@@ -132,6 +132,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_SD +=================================================================== +--- localedata/locales/ar_SD.orig ++++ localedata/locales/ar_SD +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_SY +=================================================================== +--- localedata/locales/ar_SY.orig ++++ localedata/locales/ar_SY +@@ -161,6 +161,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 5 + END LC_TIME + + +Index: localedata/locales/ar_TN +=================================================================== +--- localedata/locales/ar_TN.orig ++++ localedata/locales/ar_TN +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/ar_YE +=================================================================== +--- localedata/locales/ar_YE.orig ++++ localedata/locales/ar_YE +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +Index: localedata/locales/az_AZ +=================================================================== +--- localedata/locales/az_AZ.orig ++++ localedata/locales/az_AZ +@@ -276,6 +276,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/be_BY +=================================================================== +--- localedata/locales/be_BY.orig ++++ localedata/locales/be_BY +@@ -141,6 +141,9 @@ + date_fmt "/ + / + " ++% Copied from be_BY@alternative ++first_weekday 2 ++first_workday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/be_BY@latin +=================================================================== +--- localedata/locales/be_BY@latin.orig ++++ localedata/locales/be_BY@latin +@@ -102,6 +102,9 @@ + date_fmt "/ + / + " ++% Copied from be_BY@alternative ++first_weekday 2 ++first_workday 2 + END LC_TIME + + LC_COLLATE +Index: localedata/locales/bn_IN +=================================================================== +--- localedata/locales/bn_IN.orig ++++ localedata/locales/bn_IN +@@ -146,6 +146,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/br_FR +=================================================================== +--- localedata/locales/br_FR.orig ++++ localedata/locales/br_FR +@@ -141,6 +141,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/bs_BA +=================================================================== +--- localedata/locales/bs_BA.orig ++++ localedata/locales/bs_BA +@@ -208,6 +208,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/byn_ER +=================================================================== +--- localedata/locales/byn_ER.orig ++++ localedata/locales/byn_ER +@@ -218,5 +218,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/ca_ES +=================================================================== +--- localedata/locales/ca_ES.orig ++++ localedata/locales/ca_ES +@@ -134,6 +134,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/cs_CZ +=================================================================== +--- localedata/locales/cs_CZ.orig ++++ localedata/locales/cs_CZ +@@ -372,6 +372,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + + END LC_TIME + +Index: localedata/locales/csb_PL +=================================================================== +--- localedata/locales/csb_PL.orig ++++ localedata/locales/csb_PL +@@ -164,6 +164,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/cy_GB +=================================================================== +--- localedata/locales/cy_GB.orig ++++ localedata/locales/cy_GB +@@ -253,6 +253,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/da_DK +=================================================================== +--- localedata/locales/da_DK.orig ++++ localedata/locales/da_DK +@@ -209,6 +209,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/de_AT +=================================================================== +--- localedata/locales/de_AT.orig ++++ localedata/locales/de_AT +@@ -121,6 +121,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/de_BE +=================================================================== +--- localedata/locales/de_BE.orig ++++ localedata/locales/de_BE +@@ -119,6 +119,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/de_CH +=================================================================== +--- localedata/locales/de_CH.orig ++++ localedata/locales/de_CH +@@ -121,6 +121,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/de_DE +=================================================================== +--- localedata/locales/de_DE.orig ++++ localedata/locales/de_DE +@@ -118,7 +118,7 @@ + "";/ + "";/ + "" +-week 7;19971201;4 ++% week 7;19971201;4 + abmon "";"";/ + "";"";/ + "";"";/ +@@ -153,6 +153,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/de_LU +=================================================================== +--- localedata/locales/de_LU.orig ++++ localedata/locales/de_LU +@@ -119,6 +119,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/dz_BT +=================================================================== +--- localedata/locales/dz_BT.orig ++++ localedata/locales/dz_BT +@@ -1540,7 +1540,8 @@ + %I/ + %M%S %p" + +- ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/el_GR +=================================================================== +--- localedata/locales/el_GR.orig ++++ localedata/locales/el_GR +@@ -135,6 +135,8 @@ + % + % Appropriate date representation (date(1)) "%a %d %b %Y %r %Z" + date_fmt "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/en_AU +=================================================================== +--- localedata/locales/en_AU.orig ++++ localedata/locales/en_AU +@@ -117,6 +117,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/en_CA +=================================================================== +--- localedata/locales/en_CA.orig ++++ localedata/locales/en_CA +@@ -132,6 +132,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/en_DK +=================================================================== +--- localedata/locales/en_DK.orig ++++ localedata/locales/en_DK +@@ -106,6 +106,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/en_GB +=================================================================== +--- localedata/locales/en_GB.orig ++++ localedata/locales/en_GB +@@ -117,6 +117,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/en_HK +=================================================================== +--- localedata/locales/en_HK.orig ++++ localedata/locales/en_HK +@@ -133,6 +133,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/en_IE +=================================================================== +--- localedata/locales/en_IE.orig ++++ localedata/locales/en_IE +@@ -115,6 +115,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/en_IN +=================================================================== +--- localedata/locales/en_IN.orig ++++ localedata/locales/en_IN +@@ -132,6 +132,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/en_NZ +=================================================================== +--- localedata/locales/en_NZ.orig ++++ localedata/locales/en_NZ +@@ -116,6 +116,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/en_PH +=================================================================== +--- localedata/locales/en_PH.orig ++++ localedata/locales/en_PH +@@ -133,6 +133,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/en_SG +=================================================================== +--- localedata/locales/en_SG.orig ++++ localedata/locales/en_SG +@@ -131,6 +131,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/en_US +=================================================================== +--- localedata/locales/en_US.orig ++++ localedata/locales/en_US +@@ -81,7 +81,7 @@ + "";/ + "" + +-week 7;19971201;4 ++% week 7;19971201;4 + abmon "";"";/ + "";"";/ + "";"";/ +@@ -125,6 +125,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/en_ZA +=================================================================== +--- localedata/locales/en_ZA.orig ++++ localedata/locales/en_ZA +@@ -199,6 +199,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/es_AR +=================================================================== +--- localedata/locales/es_AR.orig ++++ localedata/locales/es_AR +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_BO +=================================================================== +--- localedata/locales/es_BO.orig ++++ localedata/locales/es_BO +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_CL +=================================================================== +--- localedata/locales/es_CL.orig ++++ localedata/locales/es_CL +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_CO +=================================================================== +--- localedata/locales/es_CO.orig ++++ localedata/locales/es_CO +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_CR +=================================================================== +--- localedata/locales/es_CR.orig ++++ localedata/locales/es_CR +@@ -113,6 +113,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_DO +=================================================================== +--- localedata/locales/es_DO.orig ++++ localedata/locales/es_DO +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_EC +=================================================================== +--- localedata/locales/es_EC.orig ++++ localedata/locales/es_EC +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_ES +=================================================================== +--- localedata/locales/es_ES.orig ++++ localedata/locales/es_ES +@@ -135,6 +135,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_GT +=================================================================== +--- localedata/locales/es_GT.orig ++++ localedata/locales/es_GT +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_HN +=================================================================== +--- localedata/locales/es_HN.orig ++++ localedata/locales/es_HN +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_MX +=================================================================== +--- localedata/locales/es_MX.orig ++++ localedata/locales/es_MX +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_NI +=================================================================== +--- localedata/locales/es_NI.orig ++++ localedata/locales/es_NI +@@ -113,6 +113,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_PA +=================================================================== +--- localedata/locales/es_PA.orig ++++ localedata/locales/es_PA +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_PE +=================================================================== +--- localedata/locales/es_PE.orig ++++ localedata/locales/es_PE +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_PR +=================================================================== +--- localedata/locales/es_PR.orig ++++ localedata/locales/es_PR +@@ -113,6 +113,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_PY +=================================================================== +--- localedata/locales/es_PY.orig ++++ localedata/locales/es_PY +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_SV +=================================================================== +--- localedata/locales/es_SV.orig ++++ localedata/locales/es_SV +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_US +=================================================================== +--- localedata/locales/es_US.orig ++++ localedata/locales/es_US +@@ -174,6 +174,8 @@ + date_fmt "/ + / + " ++% FIXME ++first_weekday 1 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_UY +=================================================================== +--- localedata/locales/es_UY.orig ++++ localedata/locales/es_UY +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/es_VE +=================================================================== +--- localedata/locales/es_VE.orig ++++ localedata/locales/es_VE +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/et_EE +=================================================================== +--- localedata/locales/et_EE.orig ++++ localedata/locales/et_EE +@@ -171,6 +171,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/eu_ES +=================================================================== +--- localedata/locales/eu_ES.orig ++++ localedata/locales/eu_ES +@@ -131,6 +131,7 @@ + date_fmt "/ + / + " ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/fr_BE +=================================================================== +--- localedata/locales/fr_BE.orig ++++ localedata/locales/fr_BE +@@ -122,6 +122,7 @@ + / + / + " ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/fr_CA +=================================================================== +--- localedata/locales/fr_CA.orig ++++ localedata/locales/fr_CA +@@ -123,6 +123,7 @@ + / + / + " ++first_weekday 1 + END LC_TIME + + LC_PAPER +Index: localedata/locales/fr_CH +=================================================================== +--- localedata/locales/fr_CH.orig ++++ localedata/locales/fr_CH +@@ -107,6 +107,7 @@ + / + / + " ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/fr_FR +=================================================================== +--- localedata/locales/fr_FR.orig ++++ localedata/locales/fr_FR +@@ -131,6 +131,7 @@ + / + / + " ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/fr_LU +=================================================================== +--- localedata/locales/fr_LU.orig ++++ localedata/locales/fr_LU +@@ -122,6 +122,7 @@ + / + / + " ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/ga_IE +=================================================================== +--- localedata/locales/ga_IE.orig ++++ localedata/locales/ga_IE +@@ -113,6 +113,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/gd_GB +=================================================================== +--- localedata/locales/gd_GB.orig ++++ localedata/locales/gd_GB +@@ -122,6 +122,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/gez_ER +=================================================================== +--- localedata/locales/gez_ER.orig ++++ localedata/locales/gez_ER +@@ -214,5 +214,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/gez_ET +=================================================================== +--- localedata/locales/gez_ET.orig ++++ localedata/locales/gez_ET +@@ -215,5 +215,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/gl_ES +=================================================================== +--- localedata/locales/gl_ES.orig ++++ localedata/locales/gl_ES +@@ -121,6 +121,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/gu_IN +=================================================================== +--- localedata/locales/gu_IN.orig ++++ localedata/locales/gu_IN +@@ -157,6 +157,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/gv_GB +=================================================================== +--- localedata/locales/gv_GB.orig ++++ localedata/locales/gv_GB +@@ -127,6 +127,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/he_IL +=================================================================== +--- localedata/locales/he_IL.orig ++++ localedata/locales/he_IL +@@ -119,6 +119,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/hi_IN +=================================================================== +--- localedata/locales/hi_IN.orig ++++ localedata/locales/hi_IN +@@ -152,6 +152,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/hr_HR +=================================================================== +--- localedata/locales/hr_HR.orig ++++ localedata/locales/hr_HR +@@ -210,6 +210,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/hsb_DE +=================================================================== +--- localedata/locales/hsb_DE.orig ++++ localedata/locales/hsb_DE +@@ -209,6 +209,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/hu_HU +=================================================================== +--- localedata/locales/hu_HU.orig ++++ localedata/locales/hu_HU +@@ -553,7 +553,9 @@ + t_fmt_ampm "" + date_fmt "/ + " +-week 7;19971201;4 ++% week 7;19971201;4 ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/hy_AM +=================================================================== +--- localedata/locales/hy_AM.orig ++++ localedata/locales/hy_AM +@@ -313,6 +313,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/id_ID +=================================================================== +--- localedata/locales/id_ID.orig ++++ localedata/locales/id_ID +@@ -116,6 +116,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/is_IS +=================================================================== +--- localedata/locales/is_IS.orig ++++ localedata/locales/is_IS +@@ -2219,6 +2219,8 @@ + date_fmt "/ + / + " ++% FIXME: found in Java ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/it_CH +=================================================================== +--- localedata/locales/it_CH.orig ++++ localedata/locales/it_CH +@@ -98,6 +98,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/it_IT +=================================================================== +--- localedata/locales/it_IT.orig ++++ localedata/locales/it_IT +@@ -120,6 +120,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/ja_JP +=================================================================== +--- localedata/locales/ja_JP.orig ++++ localedata/locales/ja_JP +@@ -15005,6 +15005,8 @@ + "";"";/ + "";"";/ + "";"" ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/kk_KZ +=================================================================== +--- localedata/locales/kk_KZ.orig ++++ localedata/locales/kk_KZ +@@ -228,6 +228,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/km_KH +=================================================================== +--- localedata/locales/km_KH.orig ++++ localedata/locales/km_KH +@@ -1841,6 +1841,8 @@ + % ICT-7ICT-7 + %timezone "" + ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/kn_IN +=================================================================== +--- localedata/locales/kn_IN.orig ++++ localedata/locales/kn_IN +@@ -161,6 +161,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/ko_KR +=================================================================== +--- localedata/locales/ko_KR.orig ++++ localedata/locales/ko_KR +@@ -6188,6 +6188,8 @@ + / + / + " ++% FIXME: found in CLDR ++first_weekday 1 + + END LC_TIME + +Index: localedata/locales/ku_TR +=================================================================== +--- localedata/locales/ku_TR.orig ++++ localedata/locales/ku_TR +@@ -149,6 +149,8 @@ + t_fmt_ampm "" + % format: %A %d %B %Y + date_fmt "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/kw_GB +=================================================================== +--- localedata/locales/kw_GB.orig ++++ localedata/locales/kw_GB +@@ -119,6 +119,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/lo_LA +=================================================================== +--- localedata/locales/lo_LA.orig ++++ localedata/locales/lo_LA +@@ -718,6 +718,8 @@ + " + % ICT-7ICT-7 + timezone "" ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/lt_LT +=================================================================== +--- localedata/locales/lt_LT.orig ++++ localedata/locales/lt_LT +@@ -133,6 +133,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/lv_LV +=================================================================== +--- localedata/locales/lv_LV.orig ++++ localedata/locales/lv_LV +@@ -2179,6 +2179,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/mk_MK +=================================================================== +--- localedata/locales/mk_MK.orig ++++ localedata/locales/mk_MK +@@ -81,6 +81,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MONETARY +Index: localedata/locales/ml_IN +=================================================================== +--- localedata/locales/ml_IN.orig ++++ localedata/locales/ml_IN +@@ -145,6 +145,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME ++first_weekday 1 + END LC_TIME + % + LC_MESSAGES +Index: localedata/locales/mn_MN +=================================================================== +--- localedata/locales/mn_MN.orig ++++ localedata/locales/mn_MN +@@ -220,6 +220,8 @@ + % "%Z %Y ony %B %e, %a %H:%M:%S" + date_fmt "/ + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/mr_IN +=================================================================== +--- localedata/locales/mr_IN.orig ++++ localedata/locales/mr_IN +@@ -149,6 +149,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/ms_MY +=================================================================== +--- localedata/locales/ms_MY.orig ++++ localedata/locales/ms_MY +@@ -135,6 +135,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + +Index: localedata/locales/nb_NO +=================================================================== +--- localedata/locales/nb_NO.orig ++++ localedata/locales/nb_NO +@@ -187,6 +187,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/ne_NP +=================================================================== +--- localedata/locales/ne_NP.orig ++++ localedata/locales/ne_NP +@@ -149,6 +149,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/nl_BE +=================================================================== +--- localedata/locales/nl_BE.orig ++++ localedata/locales/nl_BE +@@ -104,6 +104,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/nl_NL +=================================================================== +--- localedata/locales/nl_NL.orig ++++ localedata/locales/nl_NL +@@ -119,6 +119,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/nn_NO +=================================================================== +--- localedata/locales/nn_NO.orig ++++ localedata/locales/nn_NO +@@ -141,6 +141,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + +Index: localedata/locales/nr_ZA +=================================================================== +--- localedata/locales/nr_ZA.orig ++++ localedata/locales/nr_ZA +@@ -158,6 +158,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/nso_ZA +=================================================================== +--- localedata/locales/nso_ZA.orig ++++ localedata/locales/nso_ZA +@@ -157,6 +157,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/oc_FR +=================================================================== +--- localedata/locales/oc_FR.orig ++++ localedata/locales/oc_FR +@@ -123,6 +123,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_NAME +Index: localedata/locales/om_ET +=================================================================== +--- localedata/locales/om_ET.orig ++++ localedata/locales/om_ET +@@ -233,5 +233,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/pa_IN +=================================================================== +--- localedata/locales/pa_IN.orig ++++ localedata/locales/pa_IN +@@ -149,6 +149,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/pl_PL +=================================================================== +--- localedata/locales/pl_PL.orig ++++ localedata/locales/pl_PL +@@ -194,6 +194,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/pt_BR +=================================================================== +--- localedata/locales/pt_BR.orig ++++ localedata/locales/pt_BR +@@ -121,6 +121,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/pt_PT +=================================================================== +--- localedata/locales/pt_PT.orig ++++ localedata/locales/pt_PT +@@ -120,6 +120,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/ru_RU +=================================================================== +--- localedata/locales/ru_RU.orig ++++ localedata/locales/ru_RU +@@ -145,6 +145,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/rw_RW +=================================================================== +--- localedata/locales/rw_RW.orig ++++ localedata/locales/rw_RW +@@ -105,6 +105,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/sa_IN +=================================================================== +--- localedata/locales/sa_IN.orig ++++ localedata/locales/sa_IN +@@ -178,6 +178,8 @@ + date_fmt "/ + / + " ++% FIXME: copied from other *_IN locales ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/se_NO +=================================================================== +--- localedata/locales/se_NO.orig ++++ localedata/locales/se_NO +@@ -272,6 +272,8 @@ + " + + % %a %b-%e %H:%M:%S %Z %Y søn jan-31 21:15:11 CET 2001 ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/sid_ET +=================================================================== +--- localedata/locales/sid_ET.orig ++++ localedata/locales/sid_ET +@@ -222,5 +222,7 @@ + % + date_fmt "/ + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/sk_SK +=================================================================== +--- localedata/locales/sk_SK.orig ++++ localedata/locales/sk_SK +@@ -179,6 +179,9 @@ + / + " + ++% FIXME: found in CLDR ++first_weekday 2 ++ + END LC_TIME + + %% END OF LOCALIZATION FILE for sk_SK.ISO-8859-2 +Index: localedata/locales/sl_SI +=================================================================== +--- localedata/locales/sl_SI.orig ++++ localedata/locales/sl_SI +@@ -150,6 +150,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/so_DJ +=================================================================== +--- localedata/locales/so_DJ.orig ++++ localedata/locales/so_DJ +@@ -222,5 +222,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/so_ET +=================================================================== +--- localedata/locales/so_ET.orig ++++ localedata/locales/so_ET +@@ -219,5 +219,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/so_KE +=================================================================== +--- localedata/locales/so_KE.orig ++++ localedata/locales/so_KE +@@ -218,5 +218,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/so_SO +=================================================================== +--- localedata/locales/so_SO.orig ++++ localedata/locales/so_SO +@@ -274,5 +274,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/sq_AL +=================================================================== +--- localedata/locales/sq_AL.orig ++++ localedata/locales/sq_AL +@@ -286,6 +286,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + +Index: localedata/locales/sr_CS +=================================================================== +--- localedata/locales/sr_CS.orig ++++ localedata/locales/sr_CS +@@ -304,7 +304,7 @@ + date_fmt "/ + / + " +-week 7;19971201;4 ++% week 7;19971201;4 + first_weekday 2 + first_workday 2 + END LC_TIME +Index: localedata/locales/ss_ZA +=================================================================== +--- localedata/locales/ss_ZA.orig ++++ localedata/locales/ss_ZA +@@ -163,6 +163,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/st_ZA +=================================================================== +--- localedata/locales/st_ZA.orig ++++ localedata/locales/st_ZA +@@ -160,6 +160,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/sv_FI +=================================================================== +--- localedata/locales/sv_FI.orig ++++ localedata/locales/sv_FI +@@ -105,6 +105,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/ta_IN +=================================================================== +--- localedata/locales/ta_IN.orig ++++ localedata/locales/ta_IN +@@ -226,6 +226,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/te_IN +=================================================================== +--- localedata/locales/te_IN.orig ++++ localedata/locales/te_IN +@@ -135,6 +135,8 @@ + % %p%I.%M.%S %Z + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/th_TH +=================================================================== +--- localedata/locales/th_TH.orig ++++ localedata/locales/th_TH +@@ -909,6 +909,8 @@ + " + % ICT-7ICT-7 + timezone "" ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/ti_ER +=================================================================== +--- localedata/locales/ti_ER.orig ++++ localedata/locales/ti_ER +@@ -270,5 +270,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/ti_ET +=================================================================== +--- localedata/locales/ti_ET.orig ++++ localedata/locales/ti_ET +@@ -1070,5 +1070,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/tig_ER +=================================================================== +--- localedata/locales/tig_ER.orig ++++ localedata/locales/tig_ER +@@ -218,5 +218,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/tn_ZA +=================================================================== +--- localedata/locales/tn_ZA.orig ++++ localedata/locales/tn_ZA +@@ -165,6 +165,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/tr_TR +=================================================================== +--- localedata/locales/tr_TR.orig ++++ localedata/locales/tr_TR +@@ -1532,6 +1532,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/ts_ZA +=================================================================== +--- localedata/locales/ts_ZA.orig ++++ localedata/locales/ts_ZA +@@ -160,6 +160,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/tt_RU +=================================================================== +--- localedata/locales/tt_RU.orig ++++ localedata/locales/tt_RU +@@ -293,6 +293,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/uk_UA +=================================================================== +--- localedata/locales/uk_UA.orig ++++ localedata/locales/uk_UA +@@ -154,6 +154,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +Index: localedata/locales/uz_UZ +=================================================================== +--- localedata/locales/uz_UZ.orig ++++ localedata/locales/uz_UZ +@@ -260,6 +260,8 @@ + am_pm "";"" + t_fmt_ampm "" + date_fmt "" ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/uz_UZ@cyrillic +=================================================================== +--- localedata/locales/uz_UZ@cyrillic.orig ++++ localedata/locales/uz_UZ@cyrillic +@@ -263,6 +263,8 @@ + am_pm "";"" + t_fmt_ampm "" + date_fmt "" ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/ve_ZA +=================================================================== +--- localedata/locales/ve_ZA.orig ++++ localedata/locales/ve_ZA +@@ -162,6 +162,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/vi_VN +=================================================================== +--- localedata/locales/vi_VN.orig ++++ localedata/locales/vi_VN +@@ -294,6 +294,8 @@ + am_pm "";"" + t_fmt_ampm "" + date_fmt "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + % yes: Va^ng / Da. +Index: localedata/locales/wa_BE +=================================================================== +--- localedata/locales/wa_BE.orig ++++ localedata/locales/wa_BE +@@ -163,7 +163,8 @@ + am_pm "";"" + t_fmt_ampm "" + % prumî djoû del samwinne (1=londi) +-first_weekday 1 ++% FIXME No, 2=lundi ++first_weekday 2 + END LC_TIME + + LC_NAME +Index: localedata/locales/wal_ET +=================================================================== +--- localedata/locales/wal_ET.orig ++++ localedata/locales/wal_ET +@@ -232,5 +232,7 @@ + / + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +Index: localedata/locales/xh_ZA +=================================================================== +--- localedata/locales/xh_ZA.orig ++++ localedata/locales/xh_ZA +@@ -160,6 +160,8 @@ + % time-zone name, + % year with century as a decimal number,e.g. 2001. + % ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/yi_US +=================================================================== +--- localedata/locales/yi_US.orig ++++ localedata/locales/yi_US +@@ -186,6 +186,8 @@ + am_pm "";"" + t_fmt_ampm "" + cal_direction 3 ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/zh_CN +=================================================================== +--- localedata/locales/zh_CN.orig ++++ localedata/locales/zh_CN +@@ -131,6 +131,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/zh_HK +=================================================================== +--- localedata/locales/zh_HK.orig ++++ localedata/locales/zh_HK +@@ -141,6 +141,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +Index: localedata/locales/zh_SG +=================================================================== +--- localedata/locales/zh_SG.orig ++++ localedata/locales/zh_SG +@@ -130,6 +130,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + +Index: localedata/locales/zh_TW +=================================================================== +--- localedata/locales/zh_TW.orig ++++ localedata/locales/zh_TW +@@ -128,6 +128,9 @@ + / + " + ++% FIXME: found in CLDR ++first_weekday 1 ++ + END LC_TIME + + LC_MESSAGES +Index: localedata/locales/zu_ZA +=================================================================== +--- localedata/locales/zu_ZA.orig ++++ localedata/locales/zu_ZA +@@ -166,6 +166,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES --- glibc-2.4.orig/debian/patches/localedata/fix-lang.diff +++ glibc-2.4/debian/patches/localedata/fix-lang.diff @@ -0,0 +1,63 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix lang_* fields in LC_ADDRESS +# DP: Related bugs: +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: Not submitted +# DP: Status Details: +# DP: Date: 2006-01-20 + +Index: glibc-2.3.5/localedata/locales/gez_ER +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/gez_ER ++++ glibc-2.3.5/localedata/locales/gez_ER +@@ -110,7 +110,6 @@ + % country_car unknown + % country_isbn unknown, Need ISO 2108 + lang_name "" +-lang_ab "" + lang_term "" + % + % Petter Reinholdtsen reports uncommenting the below breaks compilation +Index: glibc-2.3.5/localedata/locales/gez_ET +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/gez_ET ++++ glibc-2.3.5/localedata/locales/gez_ET +@@ -110,7 +110,6 @@ + % country_car unknown + % country_isbn unknown, Need ISO 2108 + lang_name "" +-lang_ab "" + lang_term "" + % + % Petter Reinholdtsen reports uncommenting the below breaks compilation +Index: glibc-2.3.5/localedata/locales/tr_TR +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/tr_TR ++++ glibc-2.3.5/localedata/locales/tr_TR +@@ -1583,10 +1583,10 @@ + country_ab3 "" + % Turkish + lang_name "" +-% tr ++% tur + lang_term "" ++% tur ++lang_lib "" + % tr +-lang_lib "" +-%tr + lang_ab "" + END LC_ADDRESS +Index: glibc-2.3.5/localedata/locales/wal_ET +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/wal_ET ++++ glibc-2.3.5/localedata/locales/wal_ET +@@ -110,7 +110,6 @@ + % country_car unknown + % country_isbn unknown, Need ISO 2108 + lang_name "" +-lang_ab "" + lang_term "" + lang_lib "" + --- glibc-2.4.orig/debian/patches/localedata/locale-no_NO.diff +++ glibc-2.4/debian/patches/localedata/locale-no_NO.diff @@ -0,0 +1,129 @@ +#! /bin/sh -e + +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Keep no_NO around during transition to nb_NO +# DP: Related bugs: +# DP: Dpatch author: Jeff Bailey +# DP: Patch author: Petter Reinholdtsen +# DP: Upstream status: Debian-Specific +# DP: Status Details: +# DP: Date: Wed Mar 24 10:35:44 EST 2004, (Updated 2005-01-02 gotom) + +PATCHLEVEL=0 + +if [ $# -ne 2 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -d "$2" -f --no-backup-if-mismatch -p$PATCHLEVEL < $0;; + -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p$PATCHLEVEL < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. +2005-01-02 GOTO Masanori + + * intl/locale.alias: Dropped. + +Index: localedata/locales/no_NO +=================================================================== +--- /dev/null ++++ localedata/locales/no_NO +@@ -0,0 +1,93 @@ ++escape_char / ++comment_char % ++ ++% This is NOT the Norwegian language locale for Norway ++% You really want nb_NO instead. ++% Source: Norsk Standardiseringsforbund ++% Address: University Library, ++% Drammensveien 41, N-9242 Oslo, Norge ++% Contact: Kolbjoern Aamboe ++% Tel: +47 - 22859109 ++% Fax: +47 - 22434497 ++% Email: kolbjorn.aambo@usit.uio.no ++% Language: no ++% Territory: NO ++% Revision: 4.3 ++% Date: 1996-10-15 ++% Application: general ++% Users: general ++% Repertoiremap: mnemonic.ds ++% Charset: ISO-8859-1 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Norwegian (Bokmal) locale for Norway" ++source "Norsk Standardiseringsforbund" ++address "University Library,, Drammensveien 41, N-9242 Oslo, Norge" ++contact "" ++email "bug-glibc@gnu.org" ++tel "" ++fax "" ++language "Norwegian Bokml" ++territory "Norway" ++revision "1.0" ++date "2000-06-29" ++% ++category "nb_NO:2000";LC_IDENTIFICATION ++category "nb_NO:2000";LC_CTYPE ++category "nb_NO:2000";LC_COLLATE ++category "nb_NO:2000";LC_TIME ++category "nb_NO:2000";LC_NUMERIC ++category "nb_NO:2000";LC_MONETARY ++category "nb_NO:2000";LC_MESSAGES ++category "nb_NO:2000";LC_PAPER ++category "nb_NO:2000";LC_NAME ++category "nb_NO:2000";LC_ADDRESS ++category "nb_NO:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "nb_NO" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "nb_NO" ++END LC_CTYPE ++ ++LC_MONETARY ++copy "nb_NO" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "nb_NO" ++END LC_NUMERIC ++ ++LC_TIME ++copy "nb_NO" ++END LC_TIME ++ ++LC_MESSAGES ++copy "nb_NO" ++END LC_MESSAGES ++ ++LC_PAPER ++copy "nb_NO" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "nb_NO" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "nb_NO" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "nb_NO" ++END LC_NAME ++ ++LC_ADDRESS ++copy "nb_NO" ++END LC_ADDRESS --- glibc-2.4.orig/debian/patches/localedata/locale-nr_ZA.diff +++ glibc-2.4/debian/patches/localedata/locale-nr_ZA.diff @@ -0,0 +1,306 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: New nr_ZA locale +# DP: Related bugs: BZ1782 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Dwayne Bailey +# DP: Upstream status: BZ1782 +# DP: Date: 2006-01-21 + +Index: glibc-2.3.5/localedata/locales/nr_ZA +=================================================================== +--- /dev/null ++++ glibc-2.3.5/localedata/locales/nr_ZA +@@ -0,0 +1,281 @@ ++escape_char / ++comment_char % ++ ++% Charset: UTF-8 ++ ++% ChangeLog ++% 0.3 (2005-10-13): ++% 2005-10-12 Dwayne Bailey ++% - Added 'Charset: UTF-8' information ++% - Update contact information ++% - Allign spellings of month and weekday names with Dept. of ++% Art and Culture's: Multilingual Mathematics Dictionary ++% 0.2 (2004-11-09): ++% 2004-11-09 Dwayne Bailey ++% - escape everything ++% - Update all contact information ++% - Change %d to %-e for d_t_fmt and date_fmt ++% - Reset yes/noexpr to English ++% - set all abmon, mon, abday, day to English until correct defintions ++% are available. ++% 2004-03-30 Dwayne Bailey ++% - Added country_ab2/3, country_num ++% 2004-02-27 Dwayne Bailey ++% - Correct capatilisation of lang_name ++% 0.1 (2004-02-24): ++% - Initial Southern Ndebele locale for South Africa ++% by Zuza Software Foundation ++ ++LC_IDENTIFICATION ++title "Southern Ndebele locale for South Africa" ++source "Zuza Software Foundation (Translate.org.za)" ++address "PO Box 28364, Sunnyside, 0132, South Africa" ++contact "Dwayne Bailey" ++email "dwayne@translate.org.za" ++tel "+27 12 460 1095" ++fax "+27 12 460 1095" ++language "Southern Ndebele" ++territory "South Africa" ++revision "0.3" ++date "2005-10-13" ++% ++category "nr_ZA:2004";LC_IDENTIFICATION ++category "nr_ZA:2004";LC_CTYPE ++category "nr_ZA:2004";LC_COLLATE ++category "nr_ZA:2004";LC_TIME ++category "nr_ZA:2004";LC_NUMERIC ++category "nr_ZA:2004";LC_MONETARY ++category "nr_ZA:2004";LC_MESSAGES ++category "nr_ZA:2004";LC_PAPER ++category "nr_ZA:2004";LC_NAME ++category "nr_ZA:2004";LC_ADDRESS ++category "nr_ZA:2004";LC_TELEPHONE ++category "nr_ZA:2004";LC_MEASUREMENT ++ ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++% Use the characters described in the charmap file "i18n.tgz" ++copy "i18n" ++END LC_CTYPE ++ ++LC_COLLATE ++% Copy the template from ISO/IEC 14651 i.e. ++% use the rules there when making ordered lists of words. ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_MONETARY ++copy "en_ZA" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "en_ZA" ++END LC_NUMERIC ++ ++LC_TIME ++ ++% abday - The abbreviations for the week days: ++% - Son, Mvu, Bil, Tha, Ne, Hla, Gqi ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++ ++% day - The full names of the week days: ++% - uSonto, uMvulo, uLesibili, lesithathu, uLesine, ngoLesihlanu, umGqibelo ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++% abmon - The abbreviations for the months ++% - Jan, Feb, Mat, Apr, Mey, Jun, Jul, Arh, Sep, Okt, Usi, Dis ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" ++ ++% mon - The full names of the months - ++% - Janabari, uFeberbari, uMatjhi, u-Apreli, Meyi, Juni ++% Julayi, Arhostosi, Septemba, Oktoba, Usinyikhaba, Disemba ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++% Abreviated date and time representation to be referenced by the "%c" field descriptor - ++d_t_fmt "" ++% ++% "%a" (short weekday name), ++% "%-e" (day of month as a decimal number), ++% "%b" (short month name), ++% "%Y" (year with century as a decimal number), ++% "%T" (24-hour clock time in format HH:MM:SS), ++% "%Z" (Time zone name) ++ ++% Date representation to be referenced by the "%x" field descriptor - ++d_fmt "" ++% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000). ++ ++% Time representation to be referenced by the "%X" field descriptor - ++t_fmt "" ++% "%T" (24-hour clock time in format HH:MM:SS) ++ ++% Define representation of ante meridiem and post meridiem strings - ++am_pm "";"" ++% The "" mean 'default to "AM" and "PM". ++ ++% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r" ++t_fmt_ampm "" ++% The "" means that this format is not supported. ++ ++% Date representation not described in ISO/IEC 14652. Comes out as - ++% "%a %b %-e %H:%M:%S %Z %Y" which is default "date" command output ++date_fmt "/ ++/ ++" ++% ++% %a - abbreviated weekday name, ++% %b - abreviated month name, ++% %-e - day of month as a decimal number with leading space (1 to 31), ++% %H - hour (24-hour clock) as a decimal number (00 to 23), ++% %M - minute as a decimal number (00 to 59), ++% %S - seconds as a decimal number (00 to 59), ++% %Z - time-zone name, ++% %Y - year with century as a decimal number,e.g. 2001. ++ ++END LC_TIME ++ ++LC_MESSAGES ++% FIXME: Check both of these ++% The affirmative response - TODO ++% "^[yY]" ++yesexpr "" ++ ++% The negative response - TODO ++% "^[nN]" ++noexpr "" ++END LC_MESSAGES ++ ++LC_PAPER ++copy "en_ZA" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "en_ZA" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "en_ZA" ++END LC_MEASUREMENT ++ ++LC_NAME ++% Format for addressing a person. ++name_fmt "/ ++" ++% "%d%t%g%t%m%t%f" ++% "Salutation", ++% "Empty string, or ", ++% "First given name", ++% "Empty string, or ", ++% "Middle names", ++% "Empty string, or ", ++% "Clan names" ++ ++% FIXME - define all the following name_* ++% General salutation for any sex ++% name_gen "" ++ ++% Salutation for unmarried females - "" ++% name_miss "" ++ ++% Salutation for males - "" ++% name_mr "" ++ ++% Salutation for married females - "" ++% name_mrs "" ++ ++% Salutation valid for all females - "" (no term) ++% name_ms "" ++ ++END LC_NAME ++ ++LC_ADDRESS ++% Country name in Southern Ndebele - "iSewula Afrika" ++country_name "" ++ ++% Abbreviated country postal name - "ZA" ++country_post "" ++ ++% UN Geneve 1949:68 Distinguishing signs of vehicles in international traffic ++% http://www.unece.org/trans/conventn/disting-signs-5-2001.pdf ++% "ZA" ++country_car "" ++ ++% FIXME define the following correctly ++% country_isbn "" ++% country_num ++ ++% Language name in Southern Ndebele - "IsiNdebele" ++lang_name "" ++ ++% ISO 639 two and three letter language names ++% see http://www.loc.gov/standards/iso639-2/englangn.html ++% "nr", "nbl" ++lang_ab "" ++lang_term "" ++ ++% Representation of postal addresses (minus the addressee's name) in South ++% Africa. (Ignored for now) ++postal_fmt "/ ++/ ++/ ++/ ++" ++% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives - ++% "firm name", ++% "end of line", ++% "C/O address", ++% "end of line", ++% "department name", ++% "Building name", ++% "end of line", ++% "street or block name", ++% "space", ++% "house number or designation", ++% "space", ++% "floor number", ++% "space", ++% "room number, door designation", ++% "end of line", ++% "postal code", ++% "space", ++% "town, city", ++% "end of line", ++% "country designation for the keyword", ++% "end of line ++% ++ ++% ISO 3166 country number and 2 and 3 letter abreviations ++% http://www.unicode.org/onlinedat/countries.html ++% "ZA", "ZAF" ++country_num 710 ++country_ab2 "" ++country_ab3 "" ++ ++END LC_ADDRESS ++ +Index: glibc-2.3.5/localedata/SUPPORTED +=================================================================== +--- glibc-2.3.5.orig/localedata/SUPPORTED ++++ glibc-2.3.5/localedata/SUPPORTED +@@ -282,6 +282,7 @@ + nn_NO/ISO-8859-1 \ + no_NO.UTF-8/UTF-8 \ + no_NO/ISO-8859-1 \ ++nr_ZA/UTF-8 \ + nso_ZA/UTF-8 \ + oc_FR.UTF-8/UTF-8 \ + oc_FR/ISO-8859-1 \ --- glibc-2.4.orig/debian/patches/localedata/locale-en_NZ.diff +++ glibc-2.4/debian/patches/localedata/locale-en_NZ.diff @@ -0,0 +1,19 @@ +am/pm strings have been added to en_AU, the same fix should be applied +against en_NZ, as requested in #356328. + +Index: glibc-2.3.6/localedata/locales/en_NZ +=================================================================== +--- glibc-2.3.6.orig/localedata/locales/en_NZ ++++ glibc-2.3.6/localedata/locales/en_NZ +@@ -111,8 +111,9 @@ + d_t_fmt "" + d_fmt "" + t_fmt "" +-am_pm "";"" +-t_fmt_ampm "" ++am_pm "";"" ++t_fmt_ampm "/ ++" + date_fmt "/ + / + " --- glibc-2.4.orig/debian/patches/localedata/local-all-no-archive.diff +++ glibc-2.4/debian/patches/localedata/local-all-no-archive.diff @@ -0,0 +1,13 @@ +Index: glibc-2.3.6/localedata/Makefile +=================================================================== +--- glibc-2.3.6.orig/localedata/Makefile ++++ glibc-2.3.6/localedata/Makefile +@@ -221,7 +221,7 @@ + echo -n `echo $$locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`; \ + echo -n '...'; \ + input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ +- $(LOCALEDEF) --alias-file=../intl/locale.alias \ ++ $(LOCALEDEF) --alias-file=../intl/locale.alias --no-archive \ + -i locales/$$input -c -f charmaps/$$charset \ + $(addprefix --prefix=,$(install_root)) $$locale; \ + echo ' done'; \ --- glibc-2.4.orig/debian/patches/localedata/new-catalan-locales.diff +++ glibc-2.4/debian/patches/localedata/new-catalan-locales.diff @@ -0,0 +1,314 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Add new Catalan locales +# DP: Related bugs: BZ2158 +# DP: Dpatch author: Robert Millan +# DP: Patch author: Robert Millan +# DP: Upstream status: BZ2158 +# DP: Date: 2006-01-16 + +2006-01-17 Robert Millan + + * localedata/SUPPORTED: Add ca_AD, ca_FR and ca_IT variants. + * localedata/locales/ca_AD: New. Catalan for Andorra. + * localedata/locales/ca_FR: New. Catalan for France. + * localedata/locales/ca_IT: New. Catalan for Italy. + +Index: glibc-2.3.5/localedata/SUPPORTED +=================================================================== +--- glibc-2.3.5.orig/localedata/SUPPORTED ++++ glibc-2.3.5/localedata/SUPPORTED +@@ -60,9 +60,15 @@ + bs_BA.UTF-8/UTF-8 \ + bs_BA/ISO-8859-2 \ + byn_ER/UTF-8 \ ++ca_AD.UTF-8/UTF-8 \ ++ca_AD/ISO-8859-15 \ + ca_ES.UTF-8/UTF-8 \ + ca_ES/ISO-8859-1 \ + ca_ES@euro/ISO-8859-15 \ ++ca_FR.UTF-8/UTF-8 \ ++ca_FR/ISO-8859-15 \ ++ca_IT.UTF-8/UTF-8 \ ++ca_IT/ISO-8859-15 \ + cs_CZ.UTF-8/UTF-8 \ + cs_CZ/ISO-8859-2 \ + cy_GB.UTF-8/UTF-8 \ +Index: glibc-2.3.5/localedata/locales/ca_AD +=================================================================== +--- /dev/null ++++ glibc-2.3.5/localedata/locales/ca_AD +@@ -0,0 +1,94 @@ ++comment_char % ++escape_char / ++% ++% Catalan Language Locale for Andorra ++% Language: ca ++% Territory: AD ++% Option: euro ++% Revision: 1.0 ++% Date: 2006-01-16 ++% Application: general ++% Users: general ++% Charset: ISO-8859-15 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Catalan locale for Andorra " ++source "Robert Millan" ++address "" ++contact "" ++email "" ++tel "" ++fax "" ++language "Catalan" ++territory "Andorra" ++revision "1.0" ++date "2006-01-16" ++% ++category "ca_AD:2000";LC_IDENTIFICATION ++category "ca_AD:2000";LC_CTYPE ++category "ca_AD:2000";LC_COLLATE ++category "ca_AD:2000";LC_TIME ++category "ca_AD:2000";LC_NUMERIC ++category "ca_AD:2000";LC_MONETARY ++category "ca_AD:2000";LC_MESSAGES ++category "ca_AD:2000";LC_PAPER ++category "ca_AD:2000";LC_NAME ++category "ca_AD:2000";LC_ADDRESS ++category "ca_AD:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "ca_ES" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_MESSAGES ++copy "ca_ES" ++END LC_MESSAGES ++ ++LC_MONETARY ++copy "ca_ES" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "ca_ES" ++END LC_NUMERIC ++ ++LC_TIME ++copy "ca_ES" ++END LC_TIME ++ ++LC_PAPER ++copy "ca_ES" ++END LC_PAPER ++ ++LC_TELEPHONE ++tel_int_fmt "/ ++" ++int_prefix "" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "ca_ES" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "ca_ES" ++END LC_NAME ++ ++LC_ADDRESS ++postal_fmt "/ ++/ ++/ ++/ ++" ++country_ab2 "" ++country_ab3 "" ++country_num 20 ++END LC_ADDRESS +Index: glibc-2.3.5/localedata/locales/ca_FR +=================================================================== +--- /dev/null ++++ glibc-2.3.5/localedata/locales/ca_FR +@@ -0,0 +1,85 @@ ++comment_char % ++escape_char / ++% ++% Catalan Language Locale for France ++% Language: ca ++% Territory: FR ++% Option: euro ++% Revision: 1.0 ++% Date: 2006-01-16 ++% Application: general ++% Users: general ++% Charset: ISO-8859-15 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Catalan locale for France " ++source "Robert Millan" ++address "" ++contact "" ++email "" ++tel "" ++fax "" ++language "Catalan" ++territory "France" ++revision "1.0" ++date "2006-01-16" ++% ++category "ca_FR:2000";LC_IDENTIFICATION ++category "ca_FR:2000";LC_CTYPE ++category "ca_FR:2000";LC_COLLATE ++category "ca_FR:2000";LC_TIME ++category "ca_FR:2000";LC_NUMERIC ++category "ca_FR:2000";LC_MONETARY ++category "ca_FR:2000";LC_MESSAGES ++category "ca_FR:2000";LC_PAPER ++category "ca_FR:2000";LC_NAME ++category "ca_FR:2000";LC_ADDRESS ++category "ca_FR:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "ca_ES" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_MESSAGES ++copy "ca_ES" ++END LC_MESSAGES ++ ++LC_MONETARY ++copy "ca_ES" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "ca_ES" ++END LC_NUMERIC ++ ++LC_TIME ++copy "ca_ES" ++END LC_TIME ++ ++LC_PAPER ++copy "fr_FR" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "fr_FR" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "fr_FR" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "ca_ES" ++END LC_NAME ++ ++LC_ADDRESS ++copy "fr_FR" ++END LC_ADDRESS +Index: glibc-2.3.5/localedata/locales/ca_IT +=================================================================== +--- /dev/null ++++ glibc-2.3.5/localedata/locales/ca_IT +@@ -0,0 +1,85 @@ ++comment_char % ++escape_char / ++% ++% Catalan Language Locale for Italy (L'Alguer) ++% Language: ca ++% Territory: IT ++% Option: euro ++% Revision: 1.0 ++% Date: 2006-01-16 ++% Application: general ++% Users: general ++% Charset: ISO-8859-15 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Catalan locale for Italy (L'Alguer) " ++source "Robert Millan" ++address "" ++contact "" ++email "" ++tel "" ++fax "" ++language "Catalan" ++territory "Italy (L'Alguer)" ++revision "1.0" ++date "2006-01-16" ++% ++category "ca_IT:2000";LC_IDENTIFICATION ++category "ca_IT:2000";LC_CTYPE ++category "ca_IT:2000";LC_COLLATE ++category "ca_IT:2000";LC_TIME ++category "ca_IT:2000";LC_NUMERIC ++category "ca_IT:2000";LC_MONETARY ++category "ca_IT:2000";LC_MESSAGES ++category "ca_IT:2000";LC_PAPER ++category "ca_IT:2000";LC_NAME ++category "ca_IT:2000";LC_ADDRESS ++category "ca_IT:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "ca_ES" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_MESSAGES ++copy "ca_ES" ++END LC_MESSAGES ++ ++LC_MONETARY ++copy "ca_ES" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "ca_ES" ++END LC_NUMERIC ++ ++LC_TIME ++copy "ca_ES" ++END LC_TIME ++ ++LC_PAPER ++copy "it_IT" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "it_IT" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "it_IT" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "ca_ES" ++END LC_NAME ++ ++LC_ADDRESS ++copy "it_IT" ++END LC_ADDRESS --- glibc-2.4.orig/debian/patches/localedata/locale-ro_RO.diff +++ glibc-2.4/debian/patches/localedata/locale-ro_RO.diff @@ -0,0 +1,408 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix Romanian locale +# DP: Dpatch author: Eddy Petrisor +# DP: Patch author: Eddy Petrisor +# DP: Upstream status: BZ2125 +# DP: Date: 2006-02-24 + +2006-01-07 Eddy Petrisor + + * locales/ro_RO: Correct the sorting order of the letters a + circumflex and a with breve according to the Romanian alphabet. + * locales/ro_RO: Do not use capital A with breve within day names + * locales/ro_RO: Use Romanian post-92 writing rules within day + * locales/ro_RO: After denomination starting with the 1st of July 2005, + int'l currency symbol is RON (1 RON = 10000 ROL); + see http://publications.eu.int/code/en/en-5000700.htm; + * locales/ro_RO: groupping sign for thousands is "."; group of 3 + * locales/ro_RO: short date format is %d.%m.%Y for RO + * locales/ro_RO: placed year before time in date_fmt + * locales/ro_RO: replaced %Z with %z in date formats because %Z is not + used nor widely known in Romania, and Romania uses daylight saving and + the difference is more obvious this way + * locales/ro_RO: changed abday for Saturday as i> looks bad and is + incorrect according to post-92 rules + * locales/ro_RO: do not capitalize months and days as it is not correct + in Romanian + * locales/ro_RO: A4 is the prefered paper type; metric system is used + (removed FIXMEs) + * locales/ro_RO: added country_name, country_car, lang_name and lang_ab + * locales/ro_RO: added name_mr, name_mrs, name_miss (name_ms omitted as + there is no such proper form in Romanian) + * locales/ro_RO: added explanation related to the cedilla/comma issue and + the reson why the transliteration is a good idea + * locales/ro_RO: changed default encoding to UTF-8 - this is the only + encoding that supports all Romanian specific symbols (see encoding table + in Debian BTS, #119528 and the corresponding comments in #347173) + * locales/ro_RO: Corrected the name format (salutation abbreviation was + omitted) + * locales/ro_RO: Corrected postal_fmt (See address examples from + Romanian Ministries' sites in Debian BTS #347173) + * locales/ro_RO: first_weekday and first_workday are both Monday + * locales/ro_RO: added terminology and bibliographic codes for RO + reference: http://www.loc.gov/standards/iso639-2/langcodes.html#qr + * locales/ro_RO: added isbn code + * locales/ro_RO: added postal code - RO (not 100% sure) + +--- localedata/locales/ro_RO.orig Thu Feb 23 14:19:22 2006 ++++ localedata/locales/ro_RO Fri Feb 24 00:14:36 2006 +@@ -15,9 +15,13 @@ + % Date: 1996-10-15 + % Application: general + % Users: general +-% Charset: ISO-8859-2 ++% Charset: UTF-8 + % Distribution and use is free, also + % for commercial purposes. ++% ++% Corrections by: ++% 2006-01-07 ++% Eddy Petrisor + + LC_IDENTIFICATION + title "Romanian locale for Romania" +@@ -51,10 +55,11 @@ + % Copy the template from ISO/IEC 14651 + copy "iso14651_t1" + +-% a a> a( b c d e f g h i i> j k l m n o p q r s s, t t, u v w x y z ++% The modern Romanian alphabet has 31 letters, ordered as below: ++% a a( a> b c d e f g h i i> j k l m n o p q r s s, t t, u v w x y z + +-collating-symbol > + collating-symbol ++collating-symbol > + collating-symbol > + collating-symbol + collating-symbol +@@ -64,8 +69,8 @@ + + + reorder-after +-> + ++> + reorder-after + > + reorder-after +@@ -74,11 +79,11 @@ + + + reorder-after +- >;;;IGNORE + ;;;IGNORE ++ >;;;IGNORE + reorder-after +- >;;;IGNORE + ;;;IGNORE ++ >;;;IGNORE + + reorder-after + >;;;IGNORE +@@ -103,9 +108,22 @@ + + END LC_COLLATE + ++ ++ + LC_CTYPE + copy "i18n" + ++% ++% Transliteration is _currently_ a good idea as most fonts/applications do not ++% have the correct diacritics for "t comma bellow" (U021A, U021B) and ++% "s comma bellow" (U0218, U0219). Thus we currently use and compromise with ++% "t cedilla" (U0162, U0163) - which, actually, does not belong to any ++% language - and "s cedilla" (U015E, U015F) - which is _not_ correct for ++% Romanian, but is correct for Turkish. ++% ++% This issue should be fixed in the future, when enough font and application ++% support will be provided in current operating systems. ++% + translit_start + include "translit_combining";"" + +@@ -124,19 +142,31 @@ + translit_end + END LC_CTYPE + ++ ++ + LC_MESSAGES + yesexpr "" + noexpr "" + END LC_MESSAGES + ++ + LC_MONETARY +-int_curr_symbol "" ++% Since the 1st of July 2005, the new currency is the ROmanian New leu ++% the symbol is RON and 1 RON = 10000 ROL (old ROmanian Leu)... ++int_curr_symbol "" ++% but representing counted coins is made in the same way as before. + currency_symbol "" ++% decimal point is comma + mon_decimal_point "" ++% the separation of digits is made in groups of three ++% and the separator between the groups is the full stop (dot) + mon_thousands_sep "" + mon_grouping 3;3 ++% the positive sign is not usualy represented + positive_sign "" ++% while the negative one is + negative_sign "" ++% usualy one will display only two digits after the decimal point + int_frac_digits 2 + frac_digits 2 + p_cs_precedes 1 +@@ -147,80 +177,213 @@ + n_sign_posn 1 + END LC_MONETARY + ++ + LC_NUMERIC ++% same rules as for monetary apply for regular figures: ++% decimal point is comma + decimal_point "" +-thousands_sep "" +-grouping 0;0 ++% and the separator between groups is full stop ++thousands_sep "" ++% the separation of figures is made in groups of three ++grouping 3;3 + END LC_NUMERIC + ++ + LC_TIME ++% abbreviated day names are (starting from Monday): Lu Ma Mi Jo Vi Sb Du + abday "";"";"";"";/ +- "";"";"" +-day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";"";"" ++% ++% Because in 1992 the Romanian Academy stated that within words the ++% writing of the letter i> (i circumflex - U00EE) should be replaced ++% by a> (acircumflex - U00E2), we use the post92 writing. ++% Note: The actual rule is more complex, but the case which applies for ++% Satruday is covered by the exposed explanation above. ++% ++% Day names are not capitalized: ++% duminic, luni, mari, ++% miercuri, joi, vineri, ++% smbt ++% ++% Note that Tuesday Romanian day should be using t comma, not t cedilla, ++% but due to the low availability of the glyph (U021B) in fonts we use ++% the "so called t cedilla" ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% ++% All month abbreviations are composed of the first three letters of the full ++% Romanian names of the months, except for November, whose abbreviation comes ++% from the Latin month name, thus the abbreviation is "nov" ++% ++% Month names are not capitalized: ++% ian feb mar apr mai iun iul aug sep oct nov dec + abmon "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"" +-mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" +-d_t_fmt "" +-d_fmt "" ++% ++% Month names are _not_ capitalized in Romanian: ++% ianuarie februarie martie ++% aprilie mai iunie ++% iulie august septembrie ++% octombrie noiembrie decembrie ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% Appropriate date and time representation (%c) ++% Romania uses daylight saving and the names of the time zones are ++% not widely known nor used ++% "%a %d %b %Y %T %z" ++d_t_fmt "/ ++" ++% ++% Appropriate date representation (%x) ++% "%d.%m.%Y" ++d_fmt "" ++% 24 hour format is used, + t_fmt "" ++% thus no am/pm markers are defined/used + am_pm "";"" ++% also am/pm hour display format is not used + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++% %A %-e %B %Y, %H:%M:%S %z ++date_fmt "/ ++/ ++" ++% First week day is Monday ++first_weekday 2 ++% First work day is Monday ++first_workday 2 + END LC_TIME + ++ ++% Romania uses A4 paper format + LC_PAPER +-% FIXME + height 297 +-% FIXME + width 210 + END LC_PAPER + ++ + LC_TELEPHONE + tel_int_fmt "/ + " + int_prefix "" + END LC_TELEPHONE + ++ ++% Romania uses the metric system + LC_MEASUREMENT +-% FIXME + measurement 1 + END LC_MEASUREMENT + ++ + LC_NAME +-name_fmt "/ +-" ++% Format of a name, taken from the glibc locale for Ukrainian. ++% %f Family names. ++% %F Family names in uppercase. ++% %g First given name. ++% %G First given initial. ++% %l First given name with Latin letters. ++% %o Other shorter name. ++% %m Additional given names. ++% %M Initials for additional given names. ++% %p Profession. ++% %s Salutation, such as "Doctor" ++% %S Abbreviated salutation, such as "Mr." or "Dr." ++% %d Salutation, using the FDCC-sets conventions ++% 1 for the name_gen ++% 2 for name_mr ++% 3 for name_mrs ++% 4 for name_miss ++% 5 for name_ms ++% %t If the preceding field descriptor resulted in an empty string, ++% then the empty string, else a . ++% ++% FIXME: There are two prefered ways: ++% %d%t%s%t%g%t%f and %d%t%s%t%f%t%g%t%m ++% The current tendency is to use the first form, while the second is the most ++% popular form, it is widespread and widely known. ++% Now we stick to the traditional/old/second form: %d%t%s%t%f%t%g%t%m ++name_fmt "/ ++/ ++" ++% Dl. ++name_mr "" ++% D-na. ++name_mrs "" ++% D-ra. ++name_miss "" + END LC_NAME + + LC_ADDRESS +-postal_fmt "/ +-/ +-/ +-/ +-" ++% Format of an address. The fields have the following meaning ++% (inspired originaly by glibc locale for Ukranian): ++ ++% %n Person's name, possibly constructed with the LC_NAME ++% "name_fmt" keyword. (it appears to be invalid) ++% %a Care of person, or organization. ++% %f Firm name. ++% %d Department name. ++% %b Building name. ++% %s Street or block (eg. Japanese) name. ++% %h House number or designation. ++% %N Insert an if the previous descriptor ++% value was not an empty string; otherwise ignore. ++% %t Insert a if the previous descriptor value ++% was not an empty string; otherwise ignore. ++% %r Room number, door designation. ++% %e Floor number. ++% %C Country designation, from the keyword. ++% %l Local township within town or city. (it appears to be invalid) ++% %z Zip number, postal code. ++% %T Town, city. ++% %S State, province, or prefecture. ++% %c Country, as taken from data record. ++% ++% FIXME: it appears that %n and %l are not working; correct form is: ++% %n%N%f%N%a%d%N%s%t%h%N%b%t%e%t%r%N%l%z%t%T%N%S%t%c%N ++% implemented form: ++% %f%N%a%d%N%s%t%h%N%b%t%e%t%r%N%z%t%T%N%S%t%c%N ++postal_fmt "/ ++/ ++/ ++/ ++/ ++/ ++" ++% Country names are capitalized: Roma>nia ++country_name "" + country_ab2 "" + country_ab3 "" + country_num 642 ++country_car "" ++% ISBN code is 973 ++% see: http://homepages.cwi.nl/~dik/english/codes/isbn.html ++% and other sources ++country_isbn 973 ++% FIXME: is it really RO? ++country_post "" ++% language names are not capitalized in Romanian ( roma>na( ) ++lang_name "" ++lang_ab "" ++% set the terminology code to "ron" as defined in iso639-2 ++lang_term "" ++% set the bibliographic code to "rum" as defined in iso639-2 ++lang_lib "" + END LC_ADDRESS --- glibc-2.4.orig/debian/patches/localedata/locale-en_DK.diff +++ glibc-2.4/debian/patches/localedata/locale-en_DK.diff @@ -0,0 +1,85 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Improve en_DK and add en_DK.ISO-8859-15 to SUPPORTED +# DP: This locale is only useful to provide ISO8601 date formats. +# DP: Related bugs: #323159 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Jakob Bohm +# DP: Upstream status: not submitted +# DP: Date: 2006-01-16 + +Index: glibc-2.3.5/localedata/SUPPORTED +=================================================================== +--- glibc-2.3.5.orig/localedata/SUPPORTED ++++ glibc-2.3.5/localedata/SUPPORTED +@@ -94,6 +94,7 @@ + en_CA.UTF-8/UTF-8 \ + en_CA/ISO-8859-1 \ + en_DK.UTF-8/UTF-8 \ ++en_DK.ISO-8859-15/ISO-8859-15 \ + en_DK/ISO-8859-1 \ + en_GB.UTF-8/UTF-8 \ + en_GB/ISO-8859-1 \ +Index: glibc-2.3.5/localedata/locales/en_DK +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/en_DK ++++ glibc-2.3.5/localedata/locales/en_DK +@@ -60,27 +60,11 @@ + END LC_CTYPE + + LC_MONETARY +-int_curr_symbol "" +-currency_symbol "" +-mon_decimal_point "" +-mon_thousands_sep "" +-mon_grouping 3;3 +-positive_sign "" +-negative_sign "" +-int_frac_digits 2 +-frac_digits 2 +-p_cs_precedes 1 +-p_sep_by_space 0 +-n_cs_precedes 1 +-n_sep_by_space 0 +-p_sign_posn 1 +-n_sign_posn 1 ++copy "da_DK" + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 3;3 ++copy "da_DK" + END LC_NUMERIC + + LC_TIME +@@ -125,8 +109,7 @@ + END LC_TIME + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "da_DK" + END LC_MESSAGES + + LC_PAPER +@@ -142,17 +125,9 @@ + END LC_MEASUREMENT + + LC_NAME +-name_fmt "/ +-" ++copy "da_DK" + END LC_NAME + + LC_ADDRESS +-postal_fmt "/ +-/ +-/ +-/ +-" +-country_ab2 "" +-country_ab3 "" +-country_num 208 ++copy "da_DK" + END LC_ADDRESS --- glibc-2.4.orig/debian/patches/localedata/locale-ku_TR.diff +++ glibc-2.4/debian/patches/localedata/locale-ku_TR.diff @@ -0,0 +1,206 @@ +#! /bin/sh -e + +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Please add Kurdish locale +# DP: Related bugs: BZ870 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Kader DILSIZ, Pablo Saratxaga +# DP: Upstream status: Version 0.1 submitted in the original bugreport +# DP: has been committed, this new version has been sent just after. +# DP: Date: 2006-01-06 + +PATCHLEVEL=0 + +if [ $# -ne 2 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -d "$2" -f --no-backup-if-mismatch -p$PATCHLEVEL < $0;; + -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p$PATCHLEVEL < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. +Index: localedata/locales/ku_TR +=================================================================== +--- localedata/locales/ku_TR.orig ++++ localedata/locales/ku_TR +@@ -16,6 +16,8 @@ + % Distribution and use is free, also + % for commercial purposes. + % History: ++% 0.2 2005-04-24 Erdal Ronah ++% Fix LC_CTYPE and LC_NAME sections. Remove dotless i from LC_COLLATE + + LC_IDENTIFICATION + title "Kurdish (latin) locale for Turkey" +@@ -27,8 +29,8 @@ + fax "" + language "Kurdish" + territory "Turkey" +-revision "0.1" +-date "2003-07-27" ++revision "0.2" ++date "2005-04-24" + % + category "ku_TR:2000";LC_IDENTIFICATION + category "ku_TR:2000";LC_CTYPE +@@ -46,7 +48,7 @@ + END LC_IDENTIFICATION + + LC_CTYPE +-copy "tr_TR" ++copy "i18n" + END LC_CTYPE + + LC_COLLATE +@@ -56,7 +58,6 @@ + + collating-symbol + collating-symbol > +-collating-symbol + collating-symbol > + collating-symbol + collating-symbol > +@@ -65,9 +66,7 @@ + + reorder-after + > +-reorder-after +- +- ++reorder-after + > + reorder-after + +@@ -84,13 +83,9 @@ + reorder-after + >;;;IGNORE + +-reorder-after +- ;;;IGNORE +- ;;;IGNORE ++reorder-after + >;;;IGNORE +-reorder-after +- ;;;IGNORE +- ;;;IGNORE ++reorder-after + >;;;IGNORE + + reorder-after +@@ -116,35 +111,35 @@ + END LC_NUMERIC + + LC_TIME +-abday "";"";/ +- "";"";/ +- "";"";/ +- "" +-day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"" +-mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + % format: %A %d %B %Y %T %Z + d_t_fmt "" + % format: %d/%m/%Y +@@ -182,15 +177,15 @@ + name_fmt "/ + " + % TODO +-% Sayýn +-name_gen "" ++% Birz ++name_gen "" + % "M." +-name_mr "" +-% "Jne" +-name_mrs "" +-name_ms "" +-% "Kc,k" +-name_miss "" ++name_mr "" ++% "Birz" ++name_mrs "" ++name_ms "" ++% "Birz" ++name_miss "" + END LC_NAME + + LC_ADDRESS +@@ -199,17 +194,16 @@ + / + / + " +-% TODO +-country_name "" +-country_post "TR" +-country_ab2 "TR" +-country_ab3 "TUR" ++country_name "" ++country_post "" ++country_ab2 "" ++country_ab3 "" + country_num 792 + country_isbn 975 +-country_car "TR" +-% "kurdi" +-lang_name "" +-lang_ab "ku" +-lang_term "kur" +-lang_lib "kur" ++country_car "" ++% "kurd" ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS --- glibc-2.4.orig/debian/patches/localedata/locale-wo_SN.diff +++ glibc-2.4/debian/patches/localedata/locale-wo_SN.diff @@ -0,0 +1,197 @@ +Index: localedata/locales/wo_SN +=================================================================== +--- /dev/null ++++ localedata/locales/wo_SN +@@ -0,0 +1,180 @@ ++comment_char % ++escape_char / ++% ++% Wolof locale for Senegal ++% Source: The Debian Project ++% Contact: Christian Perrier/Samba Ndao Diop ++% Email: bubulle@debian.org/samba.ndao.diop@tiscali.fr ++% Tel: +33 - 130699222 ++% Language: wo ++% Territory: SN ++% Revision: 1.0 ++% Date: 2004-09-15 ++% Users: general ++% Charset: UTF-8 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Wolof locale for Senegal" ++source "The Debian Project" ++address "" ++contact "Christian Perrier" ++email "bubulle@debian.org" ++tel "" ++fax "" ++language "Wolof" ++territory "Senegal" ++revision "1.0" ++date "2004-09-08" ++% ++category "mg_MG:2000";LC_IDENTIFICATION ++category "mg_MG:2000";LC_CTYPE ++category "mg_MG:2000";LC_COLLATE ++category "mg_MG:2000";LC_TIME ++category "mg_MG:2000";LC_NUMERIC ++category "mg_MG:2000";LC_MONETARY ++category "mg_MG:2000";LC_MESSAGES ++category "mg_MG:2000";LC_PAPER ++category "mg_MG:2000";LC_NAME ++category "mg_MG:2000";LC_ADDRESS ++category "mg_MG:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++ ++translit_start ++ ++% Accents are simply omitted if they cannot be represented. ++include "translit_combining";"" ++ ++translit_end ++ ++END LC_CTYPE ++ ++LC_COLLATE ++% Copy the template from ISO/IEC 14651 ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_MESSAGES ++% Yes=Waaw ++% No=Déet ++yesexpr "" ++noexpr "" ++END LC_MESSAGES ++ ++LC_MONETARY ++int_curr_symbol "" ++currency_symbol "" ++mon_decimal_point "" ++mon_thousands_sep "" ++mon_grouping 3;3 ++positive_sign "" ++negative_sign "" ++int_frac_digits 2 ++frac_digits 2 ++p_cs_precedes 0 ++p_sep_by_space 1 ++n_cs_precedes 0 ++n_sep_by_space 1 ++p_sign_posn 1 ++n_sign_posn 1 ++END LC_MONETARY ++ ++LC_NUMERIC ++decimal_point "" ++thousands_sep "" ++grouping 0;0 ++END LC_NUMERIC ++ ++LC_TIME ++% dib'eer (dib), altine (alt), talaata (tal), allarba (all), alxames (alx), ++% ajjuma (ajj), gaawu (gaa) ++% Sunday, Monday.... ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% Sanwiy'e, feebriy'e, mars, awril, me, suwen, sulet, uut, septaambar, ++% oktoobar, nowaambar, desaambar. ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% %a %d %b %Y %T %Z ++d_t_fmt "" ++% %d.%m.%Y ++d_fmt "" ++% %T ++t_fmt "" ++am_pm "";"" ++t_fmt_ampm "" ++% %a %b %e %H:%M:%S %Z %Y ++date_fmt "/ ++/ ++" ++END LC_TIME ++ ++LC_PAPER ++height 297 ++width 210 ++END LC_PAPER ++ ++LC_TELEPHONE ++% +%C %a %l ++tel_int_fmt "/ ++" ++% %a %l ++tel_dom_fmt "" ++% 221 ++int_prefix "" ++% 00 ++int_select "" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++measurement 1 ++END LC_MEASUREMENT ++ ++LC_NAME ++% %d%t%g%t%m%t%f ++name_fmt "/ ++" ++END LC_NAME ++ ++LC_ADDRESS ++% %f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N ++postal_fmt "/ ++/ ++/ ++/ ++" ++country_ab2 "" ++country_ab3 "" ++country_num 450 ++END LC_ADDRESS ++ +Index: localedata/SUPPORTED +=================================================================== +--- localedata/SUPPORTED.orig ++++ localedata/SUPPORTED +@@ -354,6 +354,7 @@ + wa_BE/ISO-8859-1 \ + wa_BE@euro/ISO-8859-15 \ + wa_BE.UTF-8/UTF-8 \ ++wo_SN/UTF-8 \ + xh_ZA.UTF-8/UTF-8 \ + xh_ZA/ISO-8859-1 \ + yi_US.UTF-8/UTF-8 \ --- glibc-2.4.orig/debian/patches/localedata/locale-eo_EO.diff +++ glibc-2.4/debian/patches/localedata/locale-eo_EO.diff @@ -0,0 +1,258 @@ +#! /bin/sh -e + +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Add Esperanto locale (eo_EO) +# DP: Related bugs: #78085 #233308 +# DP: Dpatch author: Ben Collins +# DP: Patch author: Robert Thomson and Edmund GRIMLEY +# DP: Upstream status: Not submitted +# DP: Status Details: +# DP: Date: 2001-03-23 + +if [ $# -ne 2 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;; + -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: glibc-2.3.5/localedata/locales/eo +=================================================================== +--- /dev/null ++++ glibc-2.3.5/localedata/locales/eo +@@ -0,0 +1,216 @@ ++comment_char % ++escape_char / ++ ++% Esperanto language locale for ... ++% Edmund GRIMLEY EVANS ++ ++LC_IDENTIFICATION ++title "Esperanto locale" ++source "" ++address "" ++contact "" ++email "debian-esperanto@lists.debian.org" ++tel "" ++fax "" ++language "Esperanto" ++territory "" ++revision "draft" ++date "2002-07-04" ++% ++category "eo:2000";LC_IDENTIFICATION ++category "eo:2000";LC_CTYPE ++category "eo:2000";LC_COLLATE ++category "eo:2000";LC_TIME ++category "eo:2000";LC_NUMERIC ++category "eo:2000";LC_MONETARY ++category "eo:2000";LC_MESSAGES ++category "eo:2000";LC_PAPER ++category "eo:2000";LC_NAME ++category "eo:2000";LC_ADDRESS ++category "eo:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_COLLATE ++copy "iso14651_t1" ++ ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++reorder-after ++ ++reorder-after ++ ++reorder-after ++ ++reorder-after ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE % Ĉ ++reorder-after ++ ;;;IGNORE % ĉ ++reorder-after ++ ;;;IGNORE % Äœ ++reorder-after ++ ;;;IGNORE % Ä ++reorder-after ++ ;;;IGNORE % Ĥ ++reorder-after ++ ;;;IGNORE % Ä¥ ++reorder-after ++ ;;;IGNORE % Ä´ ++reorder-after ++ ;;;IGNORE % ĵ ++reorder-after ++ ;;;IGNORE % Åœ ++reorder-after ++ ;;;IGNORE % Å ++reorder-after ++ ;;;IGNORE % Ŭ ++reorder-after ++ ;;;IGNORE % Å­ ++ ++reorder-end ++ ++END LC_COLLATE ++ ++LC_MONETARY ++int_curr_symbol "" % "EUR" ++currency_symbol "" % "EUR" ++% "" ne eblas en ISO-8859-3 ++mon_decimal_point "" ++mon_thousands_sep "" ++mon_grouping 3;3 ++positive_sign "" ++negative_sign "" ++int_frac_digits 2 ++frac_digits 2 ++p_cs_precedes 1 ++p_sep_by_space 1 ++n_cs_precedes 1 ++n_sep_by_space 1 ++p_sign_posn 1 ++n_sign_posn 1 ++END LC_MONETARY ++ ++LC_NUMERIC ++decimal_point "" ++thousands_sep "" ++grouping 0;0 ++END LC_NUMERIC ++ ++LC_TIME ++ ++% "dim";"lun";"mar";"mer";"ĵaÅ­";"ven";"sab" ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++ ++% "dimanĉo";"lundo";"mardo";"merkredo";"ĵaÅ­do";"vendredo";"sabato" ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++% "Jan";"Feb";"Mar";"Apr";"Maj";"Jun";"Jul";"AÅ­g";"Sep";"Okt";"Nov";"Dec" ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" ++ ++% "Januaro";"Februaro";"Marto";"Aprilo";"Majo";"Junio"; ++% "Julio";"AÅ­gusto";"Septembro";"Oktobro";"Novembro";"Decembro" ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++am_pm "";"" ++ ++% "%a %d %b %Y %T %z" ++d_t_fmt "" ++ ++% "%Y-%m-%d" ++d_fmt "" ++ ++% "%T" ++t_fmt "" ++ ++t_fmt_ampm "" ++ ++% date_fmt ? ++ ++END LC_TIME ++ ++LC_MESSAGES ++% "^[JjYy].*" ++yesexpr "" ++% "^[Nn].*" ++noexpr "" ++END LC_MESSAGES ++ ++LC_PAPER ++height 297 ++width 210 ++END LC_PAPER ++ ++LC_TELEPHONE ++% "+%c %a %l" ++tel_int_fmt "/ ++" ++% "00" ++int_select "" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++measurement 1 ++END LC_MEASUREMENT ++ ++LC_NAME ++% "%d%t%g%t%m%t%f" ++name_fmt "/ ++" ++name_mr "" % "s-ro" ++name_mrs "" % "s-ino" ++name_ms "" % "s-ino" ++END LC_NAME ++ ++LC_ADDRESS ++% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N" ++postal_fmt "/ ++/ ++/ ++/ ++" ++% "Esperanto" ++lang_name "" ++lang_ab "" % "eo" ++lang_term "" % "epo" ++END LC_ADDRESS +Index: glibc-2.3.5/localedata/SUPPORTED +=================================================================== +--- glibc-2.3.5.orig/localedata/SUPPORTED ++++ glibc-2.3.5/localedata/SUPPORTED +@@ -114,6 +114,8 @@ + en_ZA/ISO-8859-1 \ + en_ZW.UTF-8/UTF-8 \ + en_ZW/ISO-8859-1 \ ++eo.UTF-8/UTF-8 \ ++eo/ISO-8859-3 \ + es_AR.UTF-8/UTF-8 \ + es_AR/ISO-8859-1 \ + es_BO.UTF-8/UTF-8 \ --- glibc-2.4.orig/debian/patches/localedata/supported.diff +++ glibc-2.4/debian/patches/localedata/supported.diff @@ -0,0 +1,72 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Add several locales to localedata.SUPPORTED +# DP: - ru_RU.CP1251 was requested in #225516 +# DP: - uz_UZ.UTF-8 was clearly missing, uz_UZ had no UTF-8 variant +# DP: - da_DK.ISO-8859-15, en_GB.ISO-8859-15, en_US.ISO-8859-15, no_NO.UTF-8, +# DP: no_NO and sv_SE.ISO-8859-15 are found in fedora-branch CVS branch. +# DP: Related bugs: #225516 (ru_RU.CP1251) +# DP: Dpatch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-10 + +Index: glibc-2.3.5/localedata/SUPPORTED +=================================================================== +--- glibc-2.3.5.orig/localedata/SUPPORTED ++++ glibc-2.3.5/localedata/SUPPORTED +@@ -69,6 +69,7 @@ + cy_GB/ISO-8859-14 \ + da_DK.UTF-8/UTF-8 \ + da_DK/ISO-8859-1 \ ++da_DK.ISO-8859-15/ISO-8859-15 \ + de_AT.UTF-8/UTF-8 \ + de_AT/ISO-8859-1 \ + de_AT@euro/ISO-8859-15 \ +@@ -96,6 +97,7 @@ + en_DK/ISO-8859-1 \ + en_GB.UTF-8/UTF-8 \ + en_GB/ISO-8859-1 \ ++en_GB.ISO-8859-15/ISO-8859-15 \ + en_HK.UTF-8/UTF-8 \ + en_HK/ISO-8859-1 \ + en_IE.UTF-8/UTF-8 \ +@@ -110,6 +112,7 @@ + en_SG/ISO-8859-1 \ + en_US.UTF-8/UTF-8 \ + en_US/ISO-8859-1 \ ++en_US.ISO-8859-15/ISO-8859-15 \ + en_ZA.UTF-8/UTF-8 \ + en_ZA/ISO-8859-1 \ + en_ZW.UTF-8/UTF-8 \ +@@ -268,6 +271,8 @@ + nl_NL@euro/ISO-8859-15 \ + nn_NO.UTF-8/UTF-8 \ + nn_NO/ISO-8859-1 \ ++no_NO.UTF-8/UTF-8 \ ++no_NO/ISO-8859-1 \ + nso_ZA/UTF-8 \ + oc_FR.UTF-8/UTF-8 \ + oc_FR/ISO-8859-1 \ +@@ -286,6 +291,7 @@ + ro_RO/ISO-8859-2 \ + ru_RU.KOI8-R/KOI8-R \ + ru_RU.UTF-8/UTF-8 \ ++ru_RU.CP1251/CP1251 \ + ru_RU/ISO-8859-5 \ + ru_UA.UTF-8/UTF-8 \ + ru_UA/KOI8-U \ +@@ -316,6 +322,7 @@ + sv_FI@euro/ISO-8859-15 \ + sv_SE.UTF-8/UTF-8 \ + sv_SE/ISO-8859-1 \ ++sv_SE.ISO-8859-15/ISO-8859-15 \ + ta_IN/UTF-8 \ + te_IN/UTF-8 \ + tg_TJ.UTF-8/UTF-8 \ +@@ -335,6 +342,7 @@ + uk_UA.UTF-8/UTF-8 \ + uk_UA/KOI8-U \ + ur_PK/UTF-8 \ ++uz_UZ.UTF-8/UTF-8 \ + uz_UZ/ISO-8859-1 \ + uz_UZ@cyrillic/UTF-8 \ + ve_ZA/UTF-8 \ --- glibc-2.4.orig/debian/patches/localedata/locales-fr.diff +++ glibc-2.4/debian/patches/localedata/locales-fr.diff @@ -0,0 +1,307 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Various fixes for all French locales +# DP: Related bugs: #248377 #351786 #345481 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-10 + +Index: glibc-2.3.6/localedata/locales/fr_BE +=================================================================== +--- glibc-2.3.6.orig/localedata/locales/fr_BE ++++ glibc-2.3.6/localedata/locales/fr_BE +@@ -42,6 +42,7 @@ + category "fr_BE:2000";LC_NAME + category "fr_BE:2000";LC_ADDRESS + category "fr_BE:2000";LC_TELEPHONE ++category "fr_BE:2000";LC_MEASUREMENT + + END LC_IDENTIFICATION + +@@ -79,7 +80,7 @@ + LC_NUMERIC + decimal_point "" + thousands_sep "" +-grouping 0;0 ++grouping 3;3 + END LC_NUMERIC + + LC_TIME +@@ -117,9 +118,10 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++" + END LC_TIME + + LC_PAPER +@@ -142,8 +144,7 @@ + END LC_MEASUREMENT + + LC_NAME +-name_fmt "/ +-" ++copy "fr_FR" + END LC_NAME + + LC_ADDRESS +@@ -155,4 +156,13 @@ + country_ab2 "" + country_ab3 "" + country_num 056 ++country_name "" ++country_car "" ++% FIXME ++country_post "" ++country_isbn 2 ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS +Index: glibc-2.3.6/localedata/locales/fr_CA +=================================================================== +--- glibc-2.3.6.orig/localedata/locales/fr_CA ++++ glibc-2.3.6/localedata/locales/fr_CA +@@ -43,6 +43,7 @@ + category "fr_CA:2000";LC_NAME + category "fr_CA:2000";LC_ADDRESS + category "fr_CA:2000";LC_TELEPHONE ++category "fr_CA:2000";LC_MEASUREMENT + + END LC_IDENTIFICATION + +@@ -80,7 +81,7 @@ + LC_NUMERIC + decimal_point "" + thousands_sep "" +-grouping 0;0 ++grouping 3;3 + END LC_NUMERIC + + LC_TIME +@@ -118,9 +119,10 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++" + END LC_TIME + + LC_PAPER +@@ -136,8 +138,7 @@ + END LC_MEASUREMENT + + LC_NAME +-name_fmt "/ +-" ++copy "fr_FR" + END LC_NAME + + LC_ADDRESS +@@ -149,4 +150,12 @@ + country_ab2 "" + country_ab3 "" + country_num 124 ++country_name "" ++country_car "" ++country_post "" ++country_isbn 2 ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS +Index: glibc-2.3.6/localedata/locales/fr_CH +=================================================================== +--- glibc-2.3.6.orig/localedata/locales/fr_CH ++++ glibc-2.3.6/localedata/locales/fr_CH +@@ -43,6 +43,7 @@ + category "fr_CH:2000";LC_NAME + category "fr_CH:2000";LC_ADDRESS + category "fr_CH:2000";LC_TELEPHONE ++category "fr_CH:2000";LC_MEASUREMENT + + END LC_IDENTIFICATION + +@@ -64,9 +65,7 @@ + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "de_CH" + END LC_NUMERIC + + LC_TIME +@@ -104,9 +105,10 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++" + END LC_TIME + + LC_PAPER +@@ -128,8 +130,7 @@ + END LC_MEASUREMENT + + LC_NAME +-name_fmt "/ +-" ++copy "fr_FR" + END LC_NAME + + LC_ADDRESS +@@ -141,4 +142,12 @@ + country_ab2 "" + country_ab3 "" + country_num 756 ++country_name "" ++country_car "" ++country_post "" ++country_isbn 2 ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS +Index: glibc-2.3.6/localedata/locales/fr_FR +=================================================================== +--- glibc-2.3.6.orig/localedata/locales/fr_FR ++++ glibc-2.3.6/localedata/locales/fr_FR +@@ -42,6 +42,7 @@ + category "fr_FR:2000";LC_NAME + category "fr_FR:2000";LC_ADDRESS + category "fr_FR:2000";LC_TELEPHONE ++category "fr_FR:2000";LC_MEASUREMENT + + END LC_IDENTIFICATION + +@@ -87,8 +88,8 @@ + + LC_NUMERIC + decimal_point "" +-thousands_sep "" +-grouping 0;0 ++thousands_sep "" ++grouping 3;3 + END LC_NUMERIC + + LC_TIME +@@ -126,9 +127,10 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++" + END LC_TIME + + LC_PAPER +@@ -151,6 +153,11 @@ + LC_NAME + name_fmt "/ + " ++name_gen "" ++name_mr "" ++name_mrs "" ++name_miss "" ++name_ms "" + END LC_NAME + + LC_ADDRESS +@@ -162,4 +169,12 @@ + country_ab2 "" + country_ab3 "" + country_num 250 ++country_name "" ++country_car "" ++country_post "" ++country_isbn 2 ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS +Index: glibc-2.3.6/localedata/locales/fr_LU +=================================================================== +--- glibc-2.3.6.orig/localedata/locales/fr_LU ++++ glibc-2.3.6/localedata/locales/fr_LU +@@ -42,6 +42,7 @@ + category "fr_LU:2000";LC_NAME + category "fr_LU:2000";LC_ADDRESS + category "fr_LU:2000";LC_TELEPHONE ++category "fr_LU:2000";LC_MEASUREMENT + + END LC_IDENTIFICATION + +@@ -78,8 +79,8 @@ + + LC_NUMERIC + decimal_point "" +-thousands_sep "" +-grouping 0;0 ++thousands_sep "" ++grouping 3;3 + END LC_NUMERIC + + LC_TIME +@@ -117,9 +118,10 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++" + END LC_TIME + + LC_PAPER +@@ -141,8 +143,7 @@ + END LC_MEASUREMENT + + LC_NAME +-name_fmt "/ +-" ++copy "fr_FR" + END LC_NAME + + LC_ADDRESS +@@ -154,4 +155,12 @@ + country_ab2 "" + country_ab3 "" + country_num 442 ++country_name "" ++country_car "" ++country_post "" ++country_isbn 2 ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS --- glibc-2.4.orig/debian/patches/localedata/locale-zh_TW.diff +++ glibc-2.4/debian/patches/localedata/locale-zh_TW.diff @@ -0,0 +1,23 @@ +See BTS #352600. +Not submitted yet. + +Index: localedata/locales/zh_TW +=================================================================== +--- localedata/locales/zh_TW.orig ++++ localedata/locales/zh_TW +@@ -107,13 +107,13 @@ + "";"";"" + + % d_t_fmt: "%Y%m%d (%A) %H
%M%S" +-d_t_fmt "/ ++d_t_fmt "/ + / + / + / + " + +-d_fmt "/ ++d_fmt "/ + " + + t_fmt "" --- glibc-2.4.orig/debian/patches/localedata/locale-te_IN.diff +++ glibc-2.4/debian/patches/localedata/locale-te_IN.diff @@ -0,0 +1,59 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Minor fixes in te_IN +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-19 + +Index: glibc-2.3.5/localedata/locales/te_IN +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/te_IN ++++ glibc-2.3.5/localedata/locales/te_IN +@@ -150,7 +150,7 @@ + + % + % Syntax on Unicode Regular Expression Guidelines TR#18 +-% ^[yY\u0C15].* ++% ^[nN\u0C15].* + noexpr "" + + % +@@ -187,23 +187,26 @@ + % generated by IBM Basic CountryPack Transformer. + + % postal_fmt "%n%N%a%N%d%N%f%N%r%t%e%N%h%t%b%N%s%t%l%N%T%t%z%N%S%N%c" +-postal_fmt "/ +-/ +-/ +-/ +-/ +-/ +-/ +-/ +-/ +-" ++% postal_fmt "/ ++% / ++% / ++% / ++% / ++% / ++% / ++% / ++% / ++% " ++% Localedef chokes on above definition, so keep the old one even if ++% it is wrong. ++postal_fmt "" + country_name "" + country_ab2 "" + country_ab3 "" + country_num 356 + lang_name "" +-lang_ab "te" +-lang_term "tel" ++lang_ab "" ++lang_term "" + END LC_ADDRESS + + --- glibc-2.4.orig/debian/patches/localedata/update-ZA.diff +++ glibc-2.4/debian/patches/localedata/update-ZA.diff @@ -0,0 +1,311 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Update several *_ZA locales. BZ178{6,7} are ignored because +# DP: there is no content change +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Dwayne Bailey +# DP: Upstream status: BZ1783 BZ1784 BZ1785 +# DP: Date: 2006-01-21 + +Index: glibc-2.3.5/localedata/locales/st_ZA +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/st_ZA ++++ glibc-2.3.5/localedata/locales/st_ZA +@@ -1,7 +1,15 @@ + escape_char / + comment_char % + ++% Charset: UTF-8 ++ + % ChangeLog ++% 0.3 (2005-10-13): ++% 2005-10-12 Dwayne Bailey ++% - Added 'Charset: UTF-8' information ++% - Update contact information ++% - Allign spellings of month and weekday names with Dept. of ++% Art and Culture's: Multilingual Mathematics Dictionary + % 0.2 (2004-11-03): + % 2004-11-02 Dwayne Bailey + % - Change all contact information +@@ -22,12 +30,12 @@ + address "PO Box 28364, Sunnyside, 0132, South Africa" + contact "Dwayne Bailey" + email "dwayne@translate.org.za" +-tel "+27 12 343 0389" +-fax "+27 12 343 0389" ++tel "+27 12 460 1095" ++fax "+27 12 460 1095" + language "Sotho" + territory "South Africa" +-revision "0.2" +-date "2004-11-03" ++revision "0.3" ++date "2005-10-13" + % + category "st_ZA:2003";LC_IDENTIFICATION + category "st_ZA:2003";LC_CTYPE +@@ -76,38 +84,38 @@ + "" + + % day - The full names of the week days: +-% - Sontaha, Mmantaha, Labobedi, Laboraru, Labone, Labohlane, Moqebelo ++% - Sontaha, Mantaha, Labobedi, Laboraro, Labone, Labohlano, Moqebelo + day "";/ +- "";/ ++ "";/ + "";/ +- "";/ ++ "";/ + "";/ +- "";/ ++ "";/ + "" + + % abmon - The abbreviations for the months +-% - Phe, Kol, Ube, Mme, Mot, Jan, Upu, Pha, Leo, Mph, Pun, Tsh +-abmon "";"";/ +- "";"";/ ++% - Phe, Hla, Tlh, Mme, Mot, Jan, Upu, Pha, Leo, Mph, Pud, Tsh ++abmon "";"";/ ++ "";"";/ + "";"";/ + "";"";/ + "";"";/ +- "";"" ++ "";"" + + % mon - The full names of the months - +-% - Phesekgong, Hlakola, Hlakubele, Mmese, Motsheanong, Phupjane, +-% Phupu, Phata, Leotshe, Mphalane, Pundungwane, Tshitwe +-mon "";/ ++% - Pherekgong, Hlakola, Tlhakubele, Mmese, Motsheanong, Phupjane, ++% Phupu, Phato, Leotse, Mphalane, Pudungwana, Tshitwe ++mon "";/ + "";/ +- "";/ ++ "";/ + "";/ + "";/ + "";/ + "";/ +- "";/ +- "";/ ++ "";/ ++ "";/ + "";/ +- "";/ ++ "";/ + "" + + % Abreviated date and time representation to be referenced by the "%c" field descriptor - +Index: glibc-2.3.5/localedata/locales/xh_ZA +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/xh_ZA ++++ glibc-2.3.5/localedata/locales/xh_ZA +@@ -1,7 +1,15 @@ + escape_char / + comment_char % + ++% Charset: UTF-8 ++ + % ChangeLog ++% 0.3 (2005-10-13): ++% 2005-10-12 Dwayne Bailey ++% - Added 'Charset: UTF-8' information ++% - Update contact information ++% - Allign spellings of month and weekday names with Dept. of ++% Art and Culture's: Multilingual Mathematics Dictionary + % 0.2 (2004-11-02): + % 2004-11-01 Dwayne Bailey + % - Change all contact information +@@ -24,12 +32,12 @@ + address "PO Box 28364, Sunnyside, 0132, South Africa" + contact "Dwayne Bailey" + email "dwayne@translate.org.za" +-tel "+27 12 343 8389" +-fax "+27 12 343 0389" ++tel "+27 12 460 1095" ++fax "+27 12 460 1095" + language "Xhosa" + territory "South Africa" +-revision "0.2" +-date "2004-11-02" ++revision "0.3" ++date "2005-10-13" + % + category "xh_ZA:2003";LC_IDENTIFICATION + category "xh_ZA:2003";LC_CTYPE +@@ -77,39 +85,39 @@ + "" + % + % The full names of the week days: +-% - Cawe, Mvulo, Lwesibini, Lwesithathu, Lwesine, Lwesihlanu, Mgqibelo +-day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++% - iCawa, uMvulo, lwesiBini, lwesiThathu, ulweSine, lwesiHlanu, uMgqibelo ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + % + % The abbreviations for the months +-% - Jan, Feb, Mat, Epr, Mey, Jun, Jul, Aga, Sep, Okt, Nov, Dis +-abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++% - Mqu, Mdu, Kwi, Tsh, Can, Sil, Kha, Thu, Msi, Dwa, Nka, Mng ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + % + % The full names of the months - +-% - Janyuwari, Februwari, Matshi, Epreli, Meyi, Juni, Julayi, Agasti, Septemba, +-% Okthoba, Novemba, Disemba +-mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++% - eyoMqungu, eyoMdumba, eyoKwindla, uTshazimpuzi, uCanzibe, eyeSilimela ++% eyeKhala, eyeThupa, eyoMsintsi, eyeDwarha, eyeNkanga, eyoMnga ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + % + % Abreviated date and time representation to be referenced by the "%c" field descriptor - + d_t_fmt "" +Index: glibc-2.3.5/localedata/locales/zu_ZA +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/zu_ZA ++++ glibc-2.3.5/localedata/locales/zu_ZA +@@ -1,7 +1,15 @@ + escape_char / + comment_char % + ++% Charset: UTF-8 ++ + % ChangeLog ++% 0.3 (2005-10-13): ++% 2005-10-12 Dwayne Bailey ++% - Added 'Charset: UTF-8' information ++% - Update contact information ++% - Allign spellings of month and weekday names with Dept. of ++% Art and Culture's: Multilingual Mathematics Dictionary + % 0.2 (2004-10-28): + % 2004-10-28 Dwayne Bailey + % - Added lang_lib +@@ -27,12 +35,12 @@ + address "Box 28364, Sunnyside, 0132, South Africa" + contact "Dwayne Bailey" + email "dwayne@translate.org.za" +-tel "+27 12 343 0389" +-fax "+27 12 448 0389" ++tel "+27 12 460 1095" ++fax "+27 12 460 1095" + language "Zulu" + territory "South Africa" +-revision "0.2" +-date "2004-10-28" ++revision "0.3" ++date "2005-10-13" + % + category "zu_ZA:2003";LC_IDENTIFICATION + category "zu_ZA:2003";LC_CTYPE +@@ -82,39 +90,39 @@ + "" + + % day - The full names of the week days: +-% - Sonto, Msombuluko, Lwesibili, Lwesithathu, Lwesine, Lwesihlanu, Mgqibelo +-day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++% - iSonto, uMsombuluko, uLwesibili, uLwesithathu, uLwesine, uLwesihlanu, uMgqibelo ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + + % abmon - The abbreviations for the months +-% - Jan, Feb, Mas, Apr, Mey, Jun, Jul, Aga, Sep, Okt, Nov, Dis +-abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++% - Mas, Ola, Nda, Mba, Aba, Ang, Ntu, Ncw, Man, Mfu, Lwe, Zib ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + + % mon - The full names of the months - +-% - Januwari, Februwari, Mashi, Apreli, Meyi, Juni, Julayi, Agasti, Septemba, +-% Okthoba, Novemba, Disemba +-mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++% - uMasingana, uNhlolanja, uNdasa, uMbasa, uNhlaba, uNhlangulana ++% uNtulikazi, uNcwaba, uMandulo, uMfumfu, uLwezi, uZibandlela ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + + % Abreviated date and time representation to be referenced by the "%c" field descriptor - + d_t_fmt "" --- glibc-2.4.orig/debian/patches/localedata/sort-UTF8-first.diff +++ glibc-2.4/debian/patches/localedata/sort-UTF8-first.diff @@ -0,0 +1,76 @@ +Index: localedata/SUPPORTED +=================================================================== +--- localedata/SUPPORTED.orig ++++ localedata/SUPPORTED +@@ -216,8 +216,8 @@ + hi_IN/UTF-8 \ + hr_HR.UTF-8/UTF-8 \ + hr_HR/ISO-8859-2 \ +-hsb_DE/ISO-8859-2 \ + hsb_DE.UTF-8/UTF-8 \ ++hsb_DE/ISO-8859-2 \ + hu_HU.UTF-8/UTF-8 \ + hu_HU/ISO-8859-2 \ + hy_AM.UTF-8/UTF-8 \ +@@ -232,8 +232,8 @@ + it_IT@euro/ISO-8859-15 \ + iw_IL.UTF-8/UTF-8 \ + iw_IL/ISO-8859-8 \ +-ja_JP.EUC-JP/EUC-JP \ + ja_JP.UTF-8/UTF-8 \ ++ja_JP.EUC-JP/EUC-JP \ + ka_GE.UTF-8/UTF-8 \ + ka_GE/GEORGIAN-PS \ + kk_KZ.UTF-8/UTF-8 \ +@@ -242,8 +242,8 @@ + kl_GL/ISO-8859-1 \ + km_KH/UTF-8 \ + kn_IN/UTF-8 \ +-ko_KR.EUC-KR/EUC-KR \ + ko_KR.UTF-8/UTF-8 \ ++ko_KR.EUC-KR/EUC-KR \ + ku_TR.UTF-8/UTF-8 \ + ku_TR/ISO-8859-9 \ + kw_GB.UTF-8/UTF-8 \ +@@ -298,8 +299,8 @@ + pt_PT@euro/ISO-8859-15 \ + ro_RO.UTF-8/UTF-8 \ + ro_RO/ISO-8859-2 \ +-ru_RU.KOI8-R/KOI8-R \ + ru_RU.UTF-8/UTF-8 \ ++ru_RU.KOI8-R/KOI8-R \ + ru_RU.CP1251/CP1251 \ + ru_RU/ISO-8859-5 \ + ru_UA.UTF-8/UTF-8 \ +@@ -356,27 +357,27 @@ + uz_UZ/ISO-8859-1 \ + uz_UZ@cyrillic/UTF-8 \ + ve_ZA/UTF-8 \ +-vi_VN.TCVN/TCVN5712-1 \ + vi_VN/UTF-8 \ ++vi_VN.TCVN/TCVN5712-1 \ ++wa_BE.UTF-8/UTF-8 \ + wa_BE/ISO-8859-1 \ + wa_BE@euro/ISO-8859-15 \ +-wa_BE.UTF-8/UTF-8 \ + wo_SN/UTF-8 \ + xh_ZA.UTF-8/UTF-8 \ + xh_ZA/ISO-8859-1 \ + yi_US.UTF-8/UTF-8 \ + yi_US/CP1255 \ ++zh_CN.UTF-8/UTF-8 \ + zh_CN.GB18030/GB18030 \ + zh_CN.GBK/GBK \ +-zh_CN.UTF-8/UTF-8 \ + zh_CN/GB2312 \ + zh_HK.UTF-8/UTF-8 \ + zh_HK/BIG5-HKSCS \ + zh_SG.UTF-8/UTF-8 \ + zh_SG.GBK/GBK \ + zh_SG/GB2312 \ +-zh_TW.EUC-TW/EUC-TW \ + zh_TW.UTF-8/UTF-8 \ ++zh_TW.EUC-TW/EUC-TW \ + zh_TW/BIG5 \ + zu_ZA.UTF-8/UTF-8 \ + zu_ZA/ISO-8859-1 \ --- glibc-2.4.orig/debian/patches/localedata/tl_PH-yesexpr.diff +++ glibc-2.4/debian/patches/localedata/tl_PH-yesexpr.diff @@ -0,0 +1,33 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix yesexpr/noexpr/yesstr/nostr +# DP: Related bugs: #295810 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: eric pareja +# DP: Upstream status: not submitted +# DP: Date: 2006-01-10 + +Index: glibc-2.3.5/localedata/locales/tl_PH +=================================================================== +--- glibc-2.3.5.orig/localedata/locales/tl_PH ++++ glibc-2.3.5/localedata/locales/tl_PH +@@ -140,7 +140,19 @@ + END LC_TIME + + LC_MESSAGES +-copy "en_US" ++ ++% "^[oOyY].*" for "Yes" ++yesexpr "" ++ ++% "^[hHnN].*" for "No" ++noexpr "" ++ ++% "Oo" for "Yes" ++yesstr "" ++ ++% "Hindi" for "No" ++nostr "" ++ + END LC_MESSAGES + + LC_PAPER --- glibc-2.4.orig/debian/patches/localedata/locale-pl_PL.diff +++ glibc-2.4/debian/patches/localedata/locale-pl_PL.diff @@ -0,0 +1,37 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix LC_MONETARY section of pl_PL +# DP: Related bugs: #227214 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: MichaÅ‚ Politowski" +# DP: Upstream status: not submitted, but message sent to +# DP: http://sources.redhat.com/ml/bug-glibc/2002-11/msg00131.html +# DP: Date: 2006-01-16 + +Index: localedata/locales/pl_PL +=================================================================== +--- localedata/locales/pl_PL.orig ++++ localedata/locales/pl_PL +@@ -2123,7 +2123,7 @@ + + LC_MONETARY + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3;3 +@@ -2131,10 +2131,10 @@ + negative_sign "" + int_frac_digits 2 + frac_digits 2 +-p_cs_precedes 1 +-p_sep_by_space 0 +-n_cs_precedes 1 +-n_sep_by_space 0 ++p_cs_precedes 0 ++p_sep_by_space 1 ++n_cs_precedes 0 ++n_sep_by_space 1 + p_sign_posn 1 + n_sign_posn 1 + END LC_MONETARY --- glibc-2.4.orig/debian/patches/i386/local-biarch.diff +++ glibc-2.4/debian/patches/i386/local-biarch.diff @@ -0,0 +1,12 @@ +# DP: Description: Allow ldconfig to work on i386/x86-64 biarch systems +# DP: Related bugs: +# DP: Dpatch author: Daniel Jacobowitz +# DP: Patch author: Daniel Jacobowitz +# DP: Upstream status: Debian-Specific +# DP: Status Details: based on Ubuntu change by Jeff Bailey +# DP: Date: 2005-10-13 + +--- /dev/null 2005-07-29 18:11:21.000000000 +0000 ++++ glibc-2.3.5/sysdeps/unix/sysv/linux/i386/dl-cache.h 2005-08-05 14:15:39.162794976 +0000 +@@ -0,0 +1,1 @@ ++#include --- glibc-2.4.orig/debian/patches/i386/local-cmov.diff +++ glibc-2.4/debian/patches/i386/local-cmov.diff @@ -0,0 +1,25 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Add CMOV to hwcap, for VIA C3 which is i686 class processor, +# DP: but does not have 686 optional instruction CMOV. +# DP: Author: GOTO Masanori +# DP: Upstream status: Not submitted +# DP: Status Details: Not submitted +# DP: Date: 2003-02-21 +# DP: Updated 2003-10-12 by dan@debian.org for TLS +# DP: Updated 2004-01-02 to fix building with newer patches by jb. +# DP: Updated 2005-01-02 to fix building with newer patches by gotom. + +2005-01-02 GOTO Masanori + + * sysdeps/i386/dl-procinfo.h: Update to add CMOV for VIA C3 chip. + +--- sysdeps/i386/dl-procinfo.h 10 Mar 2004 18:29:31 -0000 1.3 ++++ sysdeps/i386/dl-procinfo.h 2 Jan 2005 09:13:55 -0000 +@@ -57,7 +57,7 @@ + HWCAP_I386_AMD3D = 1 << 31, + + /* XXX Which others to add here? */ +- HWCAP_IMPORTANT = (HWCAP_I386_XMM2) ++ HWCAP_IMPORTANT = (HWCAP_I386_CMOV | HWCAP_I386_XMM2) + + }; --- glibc-2.4.orig/debian/patches/i386/submitted-i686-timing.diff +++ glibc-2.4/debian/patches/i386/submitted-i686-timing.diff @@ -0,0 +1,151 @@ +# DP: Description: i386 ld.so gets sigsegv when i686 optimized library is used, +# because the structure size of rtld_global and rtld_global_ro +# are different due to HP_TIMING_AVAIL availability. +# This patch aligns those sizes for using i686 optimized library. +# DP: Author: Daniel Jacobowitz +# DP: Upstream status: Pending +# DP: Status Details: +# DP: Date: 2003-10-03 (Updated 2003-10-12), (Updated 2005-01-02, 2005-03-03 gotom) + +2005-03-03 GOTO Masanori + + * sysdeps/generic/ldsodefs.h (struct rtld_global, rtld_global_ro): + Include timing members if HP_TIMING_PAD is defined. + +2005-01-02 GOTO Masanori + + * elf/Makefile: Regenerate. + +2003-10-12 Daniel Jacobowitz + + * sysdeps/generic/ldsodefs.h (struct rtld_global): Include timing + members if HP_TIMING_PAD is defined. + * sysdeps/i386/hp-timing.h: New file. + * elf/Makefile: Add dl-altinit to routines, shared-only-routines. + * elf/dl-altinit.c: New file. + +--- glibc-2.3.4/sysdeps/generic/ldsodefs.h.gotom 2005-03-03 11:23:08.000000000 +0900 ++++ glibc-2.3.4/sysdeps/generic/ldsodefs.h 2005-03-03 11:24:05.000000000 +0900 +@@ -258,7 +258,7 @@ + /* The object to be initialized first. */ + EXTERN struct link_map *_dl_initfirst; + +-#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL ++#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL || HP_TIMING_PAD + /* Start time on CPU clock. */ + EXTERN hp_timing_t _dl_cpuclock_offset; + #endif +@@ -462,7 +462,7 @@ + /* All search directories defined at startup. */ + EXTERN struct r_search_path_elem *_dl_init_all_dirs; + +-#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL ++#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL || HP_TIMING_PAD + /* Overhead of a high-precision timing measurement. */ + EXTERN hp_timing_t _dl_hp_timing_overhead; + #endif +--- /dev/null 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.3.2/sysdeps/i386/hp-timing.h 2003-10-03 11:50:30.000000000 -0400 +@@ -0,0 +1,34 @@ ++/* High precision, low overhead timing functions. i386 version. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _i386_HP_TIMING_H ++#define _i386_HP_TIMING_H 1 ++ ++#define hp_timing_t hp_timing_t__ ++#include ++#undef hp_timing_t ++ ++/* We don't use high-precision timers, but we might load an i686 libpthread ++ which does. */ ++#define HP_TIMING_PAD 1 ++ ++/* i686 uses 64bit values for the times. */ ++typedef unsigned long long int hp_timing_t; ++ ++#endif /* hp-timing.h */ +--- /dev/null 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.3.2/elf/dl-altinit.c 2003-10-12 13:23:15.000000000 -0400 +@@ -0,0 +1,43 @@ ++/* Extra initializers for shared libc. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* This file is used from the shared libc, to initialize anything which ++ ld.so should have initialized but didn't - for instance, if ld.so ++ is built for a machine without HP_TIMING but libc.so is built for ++ a machine with HP_TIMING, clock_gettime will expect dl_cpuclock_offset ++ to be initialized. */ ++ ++static void ++dlinit_hptiming (void) ++{ ++#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL ++ if (GL(dl_cpuclock_offset) == 0) ++ HP_TIMING_NOW (GL(dl_cpuclock_offset)); ++#endif ++} ++ ++static void dlinit_alt (void) __attribute__((constructor)); ++static void ++dlinit_alt (void) ++{ ++ dlinit_hptiming (); ++} +--- glibc-2.3.4/elf/Makefile 27 Oct 2004 20:26:47 -0000 1.287 ++++ glibc-2.3.4/elf/Makefile 2 Jan 2005 08:29:55 -0000 +@@ -23,7 +23,7 @@ + headers = elf.h bits/elfclass.h link.h + routines = $(dl-routines) dl-open dl-close dl-support dl-iteratephdr \ + dl-addr enbl-secure dl-profstub \ +- dl-origin dl-libc dl-sym dl-tsd ++ dl-origin dl-libc dl-sym dl-tsd dl-altinit + + # The core dynamic linking functions are in libc for the static and + # profiled libraries. +@@ -41,6 +41,10 @@ + rtld-routines := rtld $(dl-routines) dl-sysdep dl-environ dl-minimal + all-rtld-routines = $(rtld-routines) $(sysdep-rtld-routines) + ++# We only need to re-run initializers if ld.so and libc.so might be built ++# for different machines, so only shared libraries need dl-altinit. ++shared-only-routines = dl-altinit ++ + distribute := rtld-Rules \ + $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \ + dl-cache.h dl-hash.h soinit.c sofini.c ldd.bash.in \ --- glibc-2.4.orig/debian/patches/hurd-i386/submitted-ioctl-decode-argument.diff +++ glibc-2.4/debian/patches/hurd-i386/submitted-ioctl-decode-argument.diff @@ -0,0 +1,58 @@ +2005-07-28 Samuel Thibault + + * ioctl.c (__ioctl): Add handling of parameter-less ioctls. + +2005-07-28 Samuel Thibault + + * ioctls.h (_IOIW): New macro for immediate-write ioctls. + +--- sysdeps/mach/hurd/ioctl.c 2005-07-26 23:26:28.000000000 +0200 ++++ sysdeps/mach/hurd/ioctl.c 2005-07-26 23:24:07.000000000 +0200 +@@ -79,7 +79,7 @@ __ioctl (int fd, unsigned long int reque + void *p; + #endif + +- void *arg; ++ void *arg = NULL; + + error_t err; + +@@ -130,7 +130,7 @@ __ioctl (int fd, unsigned long int reque + in (_IOT_COUNT1 (type), _IOT_TYPE1 (type)); + in (_IOT_COUNT2 (type), _IOT_TYPE2 (type)); + } +- else if (_IOC_INOUT (request) == IOC_VOID) ++ else if ((_IOC_INOUT (request) == IOC_VOID) && _IOT_COUNT0 (type)) + { + /* The RPC takes a single integer_t argument. + Rather than pointing to the value, ARG is the value itself. */ +@@ -197,11 +197,15 @@ __ioctl (int fd, unsigned long int reque + return msg.header.RetCode; + } + +- va_list ap; ++ if (_IOT_COUNT0 (type)) ++ { ++ /* Data need either be sent, received, or even both. */ ++ va_list ap; + +- va_start (ap, request); +- arg = va_arg (ap, void *); +- va_end (ap); ++ va_start (ap, request); ++ arg = va_arg (ap, void *); ++ va_end (ap); ++ } + + { + /* Check for a registered handler for REQUEST. */ +--- sysdeps/mach/hurd/bits/ioctls.h 2005-07-26 23:29:54.000000000 +0200 ++++ sysdeps/mach/hurd/bits/ioctls.h 2005-07-26 23:19:56.000000000 +0200 +@@ -118,6 +118,7 @@ + _IOT_foobar is defined either in this file, + or where struct foobar is defined. */ + #define _IO(g, n) _IOC (IOC_VOID, (g), (n), 0) ++#define _IOIW(g, n, t) _IOC (IOC_VOID, (g), (n), _IOC_ENCODE_TYPE (t)) + #define _IOR(g, n, t) _IOC (IOC_OUT, (g), (n), _IOC_ENCODE_TYPE (t)) + #define _IOW(g, n, t) _IOC (IOC_IN, (g), (n), _IOC_ENCODE_TYPE (t)) + #define _IOWR(g, n, t) _IOC (IOC_INOUT, (g), (n), _IOC_ENCODE_TYPE (t)) --- glibc-2.4.orig/debian/patches/hurd-i386/submitted-sysvshm.diff +++ glibc-2.4/debian/patches/hurd-i386/submitted-sysvshm.diff @@ -0,0 +1,760 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Implement SysV shared memory for GNU/Hurd. +# DP: Dpatch author: Michael Banck +# DP: Patch author: Marcus Brinkmann +# DP: Upstream status: Unsubmitted, copyright assignments needed +# DP: Date: 2005-07-11 + +2005-07-11 Marcus Brinkmann + + * hurd/Makefile (routines): Add sysvshm. + (distribute): Add sysvshm.h. + * hurd/sysvshm.h: New file. + * hurd/sysvshm.c: New file. + * sysdeps/mach/hurd/bits/stat.h (S_IMMAP0): New macro. + (S_ISPARE): Unset the S_IMMAP0 flag. + * sysdeps/mach/hurd/ftok.c: New file. + * sysdeps/mach/hurd/shmat.c: New file. + * sysdeps/mach/hurd/shmctl.c: New file. + * sysdeps/mach/hurd/shmdt.c: New file. + +diff -rupN libc/hurd/Makefile libc-shm/hurd/Makefile +--- libc/hurd/Makefile 2002-10-14 03:03:09.000000000 +0200 ++++ libc-shm/hurd/Makefile 2005-07-12 12:27:06.000000000 +0200 +@@ -60,6 +60,7 @@ + vpprintf \ + ports-get ports-set hurdports hurdmsg \ + errno-loc \ ++ sysvshm \ + $(sig) $(dtable) $(inlines) port-cleanup report-wait xattr + sig = hurdsig hurdfault siginfo hurd-raise preempt-sig \ + trampoline longjmp-ts catch-exc exc2signal hurdkill sigunwind \ +@@ -68,7 +69,7 @@ + getdport openport \ + fd-close fd-read fd-write hurdioctl ctty-input ctty-output + inlines = $(inline-headers:%.h=%-inlines) +-distribute = hurdstartup.h hurdfault.h hurdhost.h \ ++distribute = hurdstartup.h hurdfault.h hurdhost.h sysvshm.h \ + faultexc.defs intr-rpc.defs intr-rpc.h intr-msg.h Notes + + # XXX this is a temporary hack; see hurdmalloc.h +diff -rupN libc/hurd/sysvshm.c libc-shm/hurd/sysvshm.c +--- libc/hurd/sysvshm.c 1970-01-01 01:00:00.000000000 +0100 ++++ libc-shm/hurd/sysvshm.c 2005-07-11 22:57:25.000000000 +0200 +@@ -0,0 +1,96 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++ ++/* Description of an shm attachment. */ ++struct sysvshm_attach ++{ ++ /* Linked list. */ ++ struct sysvshm_attach *next; ++ ++ /* Map address. */ ++ void *addr; ++ ++ /* Map size. */ ++ size_t size; ++}; ++ ++/* List of attachments. */ ++static struct sysvshm_attach *attach_list; ++ ++/* A lock to protect the linked list of shared memory attachments. */ ++static struct mutex sysvshm_lock = MUTEX_INITIALIZER; ++ ++ ++/* Adds a segment attachment. */ ++error_t ++__sysvshm_add (void *addr, size_t size) ++{ ++ struct sysvshm_attach *shm; ++ ++ shm = malloc (sizeof (*shm)); ++ if (!shm) ++ return errno; ++ ++ __mutex_lock (&sysvshm_lock); ++ shm->addr = addr; ++ shm->size = size; ++ shm->next = attach_list; ++ attach_list = shm; ++ __mutex_unlock (&sysvshm_lock); ++ ++ return 0; ++} ++ ++/* Removes a segment attachment. Returns its size if found, or EINVAL ++ otherwise. */ ++error_t ++__sysvshm_remove (void *addr, size_t *size) ++{ ++ struct sysvshm_attach *shm; ++ struct sysvshm_attach **pshm = &attach_list; ++ ++ __mutex_lock (&sysvshm_lock); ++ shm = attach_list; ++ while (shm) ++ { ++ shm = *pshm; ++ if (shm->addr == addr) ++ { ++ *pshm = shm->next; ++ *size = shm->size; ++ __mutex_unlock (&sysvshm_lock); ++ return 0; ++ } ++ pshm = &shm->next; ++ shm = shm->next; ++ } ++ __mutex_unlock (&sysvshm_lock); ++ return EINVAL; ++} +diff -rupN libc/hurd/sysvshm.h libc-shm/hurd/sysvshm.h +--- libc/hurd/sysvshm.h 1970-01-01 01:00:00.000000000 +0100 ++++ libc-shm/hurd/sysvshm.h 2005-07-11 22:57:25.000000000 +0200 +@@ -0,0 +1,47 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 ++ ++/* The area (from top to bottom) that is used for private keys. These ++ are all keys that have the second highest bit set. */ ++#define SHM_PRIV_KEY_START INT_MAX ++#define SHM_PRIV_KEY_END ((INT_MAX / 2) + 1) ++ ++#define SHM_PREFIX "shm-" ++#define SHM_DIR _PATH_DEV "shm/" ++ ++/* The maximum number of characters in a shared memory segment file name. ++ 32 is the max number of characters in a 128 bit number in hex. */ ++#if __WORDSIZE > 128 ++#error Need to increase SHM_NAMEMAX. ++#else ++#define SHM_NAMEMAX (sizeof (SHM_PREFIX) - 1 + 32 + 1) ++#endif ++ ++/* Use this with printf and its variants. */ ++#define SHM_NAMEPRI SHM_PREFIX "%0x" ++ ++ ++/* Adds a segment attachment. */ ++error_t __sysvshm_add (void *addr, size_t size); ++ ++/* Removes a segment attachment. Returns its size if found, or EINVAL ++ otherwise. */ ++error_t __sysvshm_remove (void *addr, size_t *size); +diff -rupN libc/sysdeps/mach/hurd/ftok.c libc-shm/sysdeps/mach/hurd/ftok.c +--- libc/sysdeps/mach/hurd/ftok.c 1970-01-01 01:00:00.000000000 +0100 ++++ libc-shm/sysdeps/mach/hurd/ftok.c 2005-07-11 22:57:25.000000000 +0200 +@@ -0,0 +1,43 @@ ++/* Copyright (C) 1995, 1996, 2000, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++ ++/* In the Hurd, we use the second-to-most-significant bit as flag for ++ private keys. We use a different order of the components so that ++ the biggest one---the inode number---is affected by this. */ ++ ++key_t ++ftok (pathname, proj_id) ++ const char *pathname; ++ int proj_id; ++{ ++ struct stat64 st; ++ key_t key; ++ ++ if (__xstat64 (_STAT_VER, pathname, &st) < 0) ++ return (key_t) -1; ++ ++ key = ((st.st_dev & 0xff) | ((proj_id & 0xff) << 8) ++ | ((st.st_ino & 0x3fff) << 16)); ++ ++ return key; ++} +diff -rupN libc/sysdeps/mach/hurd/shmat.c libc-shm/sysdeps/mach/hurd/shmat.c +--- libc/sysdeps/mach/hurd/shmat.c 1970-01-01 01:00:00.000000000 +0100 ++++ libc-shm/sysdeps/mach/hurd/shmat.c 2005-07-12 12:28:20.000000000 +0200 +@@ -0,0 +1,78 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "sysvshm.h" ++ ++/* Attach the shared memory segment associated with SHMID to the data ++ segment of the calling process. SHMADDR and SHMFLG determine how ++ and where the segment is attached. */ ++void * ++__shmat (int shmid, const void *shmaddr, int shmflg) ++{ ++ error_t err; ++ char filename[sizeof (SHM_DIR) - 1 + SHM_NAMEMAX]; ++ int fd; ++ void *addr; ++ struct stat statbuf; ++ int res; ++ ++ sprintf (filename, SHM_DIR SHM_NAMEPRI, shmid); ++ fd = __open (filename, (shmflg & SHM_RDONLY) ? O_RDONLY : O_RDWR); ++ if (fd < 0) ++ { ++ if (errno == ENOENT) ++ errno = EINVAL; ++ return (void *) -1; ++ } ++ ++ res = __fstat (fd, &statbuf); ++ if (res < 0) ++ { ++ __close (fd); ++ return (void *) -1; ++ } ++ ++ addr = __mmap ((void *) shmaddr, statbuf.st_size, ++ PROT_READ | ((shmflg & SHM_RDONLY) ? 0 : PROT_WRITE), ++ MAP_SHARED, fd, 0); ++ __close (fd); ++ if (addr == MAP_FAILED) ++ return (void *) -1; ++ ++ err = __sysvshm_add (addr, statbuf.st_size); ++ if (err) ++ { ++ munmap (addr, statbuf.st_size); ++ return (void *) -1; ++ } ++ ++ return addr; ++} ++ ++weak_alias(__shmat, shmat) +diff -rupN libc/sysdeps/mach/hurd/shmctl.c libc-shm/sysdeps/mach/hurd/shmctl.c +--- libc/sysdeps/mach/hurd/shmctl.c 1970-01-01 01:00:00.000000000 +0100 ++++ libc-shm/sysdeps/mach/hurd/shmctl.c 2005-07-12 12:28:25.000000000 +0200 +@@ -0,0 +1,132 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "sysvshm.h" ++ ++/* Provide operations to control over shared memory segments. */ ++int ++__shmctl (int id, int cmd, struct shmid_ds *buf) ++{ ++ error_t err = 0; ++ int fd; ++ int res; ++ char filename[sizeof (SHM_DIR) - 1 + SHM_NAMEMAX]; ++ struct stat statbuf; ++ ++ sprintf (filename, SHM_DIR SHM_NAMEPRI, id); ++ /* SysV requires read access for IPC_STAT. */ ++ fd = __open (filename, O_NORW); ++ if (fd < 0) ++ { ++ if (errno == ENOENT) ++ errno = EINVAL; ++ return -1; ++ } ++ ++ res = __fstat (fd, &statbuf); ++ if (res < 0) ++ { ++ err = errno; ++ __close (fd); ++ errno = err; ++ return -1; ++ } ++ ++ switch (cmd) ++ { ++ case IPC_STAT: ++ ++ buf->shm_perm.__key = id; ++ buf->shm_perm.uid = statbuf.st_uid; ++ buf->shm_perm.gid = statbuf.st_gid; ++ ++ /* We do not support the creator. */ ++ buf->shm_perm.cuid = statbuf.st_uid; ++ buf->shm_perm.cgid = statbuf.st_gid; ++ ++ /* We just want the protection bits. */ ++ buf->shm_perm.mode = statbuf.st_mode & 0777; ++ /* Hopeless. We do not support a sequence number. */ ++ buf->shm_perm.__seq = statbuf.st_ino; ++ buf->shm_segsz = statbuf.st_size; ++ ++ /* Hopeless. We do not support any of these. */ ++ buf->shm_atime = statbuf.st_atime; ++ buf->shm_dtime = statbuf.st_mtime; ++ /* Well, this comes at least close. */ ++ buf->shm_ctime = statbuf.st_ctime; ++ ++ /* We do not support the PID. */ ++ buf->shm_cpid = 0; ++ buf->shm_lpid = 0; ++ ++ if (statbuf.st_mode & S_IMMAP0) ++ buf->shm_nattch = 0; ++ else ++ /* 42 is the answer. Of course this is bogus, but for most ++ applications, this should be fine. */ ++ buf->shm_nattch = 42; ++ ++ break; ++ ++ case IPC_SET: ++ if (statbuf.st_uid != buf->shm_perm.uid ++ || statbuf.st_gid != buf->shm_perm.gid) ++ { ++ res = __fchown (fd, ++ (statbuf.st_uid != buf->shm_perm.uid) ++ ? buf->shm_perm.uid : -1, ++ (statbuf.st_gid != buf->shm_perm.gid) ++ ? buf->shm_perm.gid : -1); ++ if (res < 0) ++ err = errno; ++ } ++ ++ if (!err && statbuf.st_mode & 0777 != buf->shm_perm.mode & 0777) ++ { ++ res = __fchmod (fd, (statbuf.st_mode & ~0777) ++ | (buf->shm_perm.mode & 0777)); ++ if (res < 0) ++ err = errno; ++ } ++ break; ++ ++ case IPC_RMID: ++ res = __unlink (filename); ++ /* FIXME: Check error (mapping ENOENT to EINVAL). */ ++ break; ++ ++ default: ++ err = EINVAL; ++ } ++ ++ __close (fd); ++ errno = err; ++ return err ? -1 : 0; ++} ++ ++weak_alias(__shmctl, shmctl) +diff -rupN libc/sysdeps/mach/hurd/shmdt.c libc-shm/sysdeps/mach/hurd/shmdt.c +--- libc/sysdeps/mach/hurd/shmdt.c 1970-01-01 01:00:00.000000000 +0100 ++++ libc-shm/sysdeps/mach/hurd/shmdt.c 2005-07-11 22:57:25.000000000 +0200 +@@ -0,0 +1,51 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "sysvshm.h" ++ ++/* Detach shared memory segment starting at address specified by ++ SHMADDR from the caller's data segment. */ ++int ++__shmdt (const void *shmaddr) ++{ ++ error_t err; ++ size_t size; ++ ++ err = __sysvshm_remove ((void *) shmaddr, &size); ++ if (err) ++ { ++ errno = err; ++ return -1; ++ } ++ ++ __munmap ((void *) shmaddr, size); ++ return 0; ++} ++ ++weak_alias(__shmdt, shmdt) +diff -rupN libc/sysdeps/mach/hurd/shmget.c libc-shm/sysdeps/mach/hurd/shmget.c +--- libc/sysdeps/mach/hurd/shmget.c 1970-01-01 01:00:00.000000000 +0100 ++++ libc-shm/sysdeps/mach/hurd/shmget.c 2005-07-11 22:57:25.000000000 +0200 +@@ -0,0 +1,245 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with 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 "sysvshm.h" ++ ++/* Create a new shared memory segment file without linking it into the ++ filesystem. Return the directory and file ports in R_DIR and R_FILE. */ ++static error_t ++create_shm_file (size_t size, int flags, file_t *r_dir, file_t *r_file) ++{ ++ error_t err; ++ file_t dir; ++ file_t file; ++ ++ flags &= 0777; ++ ++ /* Get a port to the directory that will contain the file. */ ++ dir = __file_name_lookup (SHM_DIR, 0, 0); ++ if (dir == MACH_PORT_NULL) ++ return errno; ++ ++ /* Create an unnamed file in the directory. */ ++ err = __dir_mkfile (dir, O_RDWR, flags, &file); ++ if (err) ++ { ++ __mach_port_deallocate (__mach_task_self (), dir); ++ return err; ++ } ++ ++ err = __file_set_size (file, size); ++ if (err) ++ { ++ __mach_port_deallocate (__mach_task_self (), file); ++ __mach_port_deallocate (__mach_task_self (), dir); ++ ++ return err; ++ } ++ ++ *r_dir = dir; ++ *r_file = file; ++ ++ return 0; ++} ++ ++ ++/* Open the shared memory segment *R_KEY and return a file descriptor ++ to it in R_FD. If KEY is IPC_PRIVATE, use a private key and return ++ it in R_KEY. */ ++static error_t ++get_exclusive (int shmflags, size_t size, key_t *r_key, int *r_fd) ++{ ++ error_t err; ++ file_t dir; ++ file_t file; ++ char filename[SHM_NAMEMAX]; ++ key_t key = *r_key; ++ bool is_private; ++ ++ /* Create the shared memory segment. */ ++ err = create_shm_file (size, shmflags, &dir, &file); ++ if (err) ++ return err; ++ ++ if (key == IPC_PRIVATE) ++ { ++ is_private = true; ++ key = SHM_PRIV_KEY_START; ++ ++ /* Try to link the shared memory segment into the filesystem ++ (exclusively). Private segments have negative keys. */ ++ do ++ { ++ sprintf (filename, SHM_NAMEPRI, key); ++ err = __dir_link (dir, file, filename, 1); ++ if (!err) ++ { ++ /* We are done. */ ++ *r_key = key; ++ break; ++ } ++ else if (err == EEXIST) ++ { ++ /* Check if we ran out of keys. If not, try again with new ++ key. */ ++ if (key == SHM_PRIV_KEY_END) ++ err = ENOSPC; ++ else ++ err = 0; ++ ++ key--; ++ } ++ } ++ while (!err); ++ } ++ else ++ { ++ /* Try to link the shared memory segment into the filesystem ++ (exclusively) under the given key. */ ++ sprintf (filename, SHM_NAMEPRI, key); ++ err = __dir_link (dir, file, filename, 1); ++ } ++ ++ __mach_port_deallocate (__mach_task_self (), dir); ++ ++ if (!err) ++ { ++ int fd; ++ ++ /* Get a file descriptor for that port. */ ++ fd = _hurd_intern_fd (file, O_RDWR, 1); /* dealloc on error */ ++ if (fd < 0) ++ err = errno; ++ else ++ *r_fd = fd; ++ } ++ ++ return err; ++} ++ ++ ++/* Open the shared memory segment KEY (creating it if it doesn't yet ++ exist) and return a file descriptor to it in R_FD. */ ++static error_t ++get_shared (int shmflags, size_t size, key_t key, int *r_fd) ++{ ++ error_t err = 0; ++ char filename[sizeof (SHM_DIR) - 1 + SHM_NAMEMAX]; ++ int fd = -1; ++ int create_flag; ++ ++ create_flag = (shmflags & IPC_CREAT) ? O_CREAT : 0; ++ sprintf (filename, SHM_DIR SHM_NAMEPRI, key); ++ ++ do ++ { ++ fd = __open (filename, O_NORW | create_flag, shmflags & 0777); ++ ++ if (fd < 0 && errno != ENOENT) ++ /* We give up. */ ++ return errno; ++ else if (fd >= 0) ++ { ++ int res; ++ struct stat statbuf; ++ ++ /* Check the size (we only need to do this if we did not ++ create the shared memory segment file ourselves). */ ++ res = __fstat (fd, &statbuf); ++ if (res < 0) ++ { ++ err = errno; ++ __close (fd); ++ return err; ++ } ++ ++ if (statbuf.st_size < size) ++ { ++ __close (fd); ++ return EINVAL; ++ } ++ } ++ else ++ { ++ /* The memory segment doesn't exist. */ ++ if (create_flag) ++ { ++ /* Try to create it exclusively. */ ++ err = get_exclusive (shmflags, size, &key, &fd); ++ if (err == EEXIST) ++ /* If somebody created it in the meanwhile, just try again. */ ++ err = 0; ++ } ++ else ++ err = ENOENT; ++ } ++ } ++ while (fd < 0 && !err); ++ ++ if (!err) ++ *r_fd = fd; ++ else ++ *r_fd = -1; ++ ++ return err; ++} ++ ++/* Return an identifier for an shared memory segment of at least size ++ SIZE which is associated with KEY. */ ++int ++__shmget (key_t key, size_t size, int shmflags) ++{ ++ error_t err; ++ int fd; ++ ++ if (key == IPC_PRIVATE || shmflags & IPC_EXCL) ++ /* An exclusive shared memory segment must be created. */ ++ err = get_exclusive (shmflags, size, &key, &fd); ++ else ++ err = get_shared (shmflags, size, key, &fd); ++ ++ if (err) ++ { ++ errno = err; ++ return -1; ++ } ++ ++ /* From here, we can't fail. That's important, as otherwise we ++ would need to unlink the file if we created it (in that case, the ++ code above would have to be changed to pass a "created" flag down ++ to the caller). */ ++ ++ __close (fd); ++ ++ return key; ++} ++ ++weak_alias(__shmget, shmget) --- glibc-2.4.orig/debian/patches/hurd-i386/local-mlock.diff +++ glibc-2.4/debian/patches/hurd-i386/local-mlock.diff @@ -0,0 +1,18 @@ +2006-01-18 Samuel Thibault + + Fix mlock() in all cases except non-readable pages. + + * glibc/sysdeps/mach/hurd/mlock.c (mlock): Give VM_PROT_READ + instead of VM_PROT_ALL as parameter to __vm_wire function. + +--- glibc/sysdeps/mach/hurd/mlock.c 2006-01-18 23:21:11.000000000 +0100 ++++ glibc/sysdeps/mach/hurd/mlock.c 2006-01-18 13:35:56.000000000 +0100 +@@ -40,7 +40,7 @@ mlock (const void *addr, size_t len) + page = trunc_page ((vm_address_t) addr); + len = round_page ((vm_address_t) addr + len) - page; + err = __vm_wire (hostpriv, __mach_task_self (), page, len, +- VM_PROT_ALL); /* XXX ? */ ++ VM_PROT_READ); + __mach_port_deallocate (__mach_task_self (), hostpriv); + + return err ? __hurd_fail (err) : 0; --- glibc-2.4.orig/debian/patches/hurd-i386/local-enable-ldconfig.diff +++ glibc-2.4/debian/patches/hurd-i386/local-enable-ldconfig.diff @@ -0,0 +1,73 @@ +# DP: Description: Enable ldconfig and such on hurd-i386 +# DP: Author: Jeff Bailey +# DP: Related Bugs: #309489 +# DP: Upstream status: Not submitted +# DP: Status Details: Upstream disagrees with this patch, but I'm +# DP: putting it in so that we have expected Debian behaviour on the +# DP: Hurd. We should review this when the ELF standard supports runpath. +# DP: Date: 08 Apr 2003 + +diff -urN glibc-2.3.2.old/sysdeps/mach/hurd/configure glibc-2.3.2/sysdeps/mach/hurd/configure +--- glibc-2.3.2.old/sysdeps/mach/hurd/configure 2003-02-25 19:46:36.000000000 -0500 ++++ glibc-2.3.2/sysdeps/mach/hurd/configure 2003-04-08 17:35:13.000000000 -0400 +@@ -115,3 +115,5 @@ + _ACEOF + + fi ++ ++use_ldconfig=yes +--- glibc-2.3.2.old/sysdeps/mach/hurd/configure.in.orig 2005-05-30 17:31:32.000000000 +0200 ++++ glibc-2.3.2/sysdeps/mach/hurd/configure.in 2005-05-30 17:44:30.000000000 +0200 +@@ -36,3 +36,5 @@ + if test "x$libc_cv_hurd_version" != xok; then + AC_MSG_ERROR(Hurd headers not installed or too old) + fi ++ ++use_ldconfig=yes +diff -urN glibc-2.3.2.old/elf/ldconfig.c glibc-2.3.2/elf/ldconfig.c +--- glibc-2.3.2.old/elf/ldconfig.c~ 2003-04-12 13:24:37.000000000 -0400 ++++ glibc-2.3.2/elf/ldconfig.c 2003-04-12 13:25:00.000000000 -0400 +@@ -49,6 +49,10 @@ + + #define PACKAGE _libc_intl_domainname + ++#ifndef PATH_MAX ++#define PATH_MAX 1024 ++#endif ++ + static const struct + { + const char *name; +diff -urN glibc-2.3.2.old/sysdeps/mach/hurd/dl-cache.c glibc-2.3.2/sysdeps/mach/hurd/dl-cache.c +--- glibc-2.3.2.old/sysdeps/mach/hurd/dl-cache.c 2001-07-07 15:21:25.000000000 -0400 ++++ glibc-2.3.2/sysdeps/mach/hurd/dl-cache.c 1969-12-31 19:00:00.000000000 -0500 +@@ -1,29 +0,0 @@ +-/* Stubby version of dl-cache; the Hurd doesn't support this "feature". +- Copyright (C) 1996, 1997 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-const char * +-_dl_load_cache_lookup (const char *name) +-{ +- return 0; +-} +- +-void +-_dl_unload_cache (void) +-{ +-} --- glibc-2.4.orig/debian/patches/hurd-i386/cvs-machrules-make.diff +++ glibc-2.4/debian/patches/hurd-i386/cvs-machrules-make.diff @@ -0,0 +1,35 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix GNU/Hurd build with make-3.81. +# DP: Dpatch author: Michael Banck +# DP: Patch author: Roland McGrath +# DP: Upstream status: Committed to HEAD, BZ #2507 +# DP: Date: 2006-04-04 + +2006-04-03 Roland McGrath + + [BZ #2507] + * mach/Machrules (.udeps-targets): New variable. + ($(objpfx)%.udeps static pattern rule): Use it to avoid \ inside + quoted string. + +=================================================================== +RCS file: /cvs/glibc/libc/mach/Machrules,v +retrieving revision 1.76 +retrieving revision 1.77 +diff -u -r1.76 -r1.77 +--- libc/mach/Machrules 2006/02/01 22:44:28 1.76 ++++ libc/mach/Machrules 2006/04/04 00:22:05 1.77 +@@ -138,10 +138,11 @@ + # We must use $(CFLAGS) to get -O flags that affect #if's in header files. + $(include-%.defs) | \ + $(CC) $(CFLAGS) $(CPPFLAGS) -M -x c - | \ +- sed -e 's,- *:,$@ $(@:.udeps=.ustamp) $(@:.udeps=.uh) $(@:.udeps=.__h)\ +- $(@:.udeps=_server.c) $(@:.udeps=_server.h):,' \ ++ sed -e 's,- *:,$(.udeps-targets):,' \ + $(sed-remove-objpfx) > $@.new + mv -f $@.new $@ ++.udeps-targets = $@ $(@:.udeps=.ustamp) $(@:.udeps=.uh) $(@:.udeps=.__h) \ ++ $(@:.udeps=_server.c) $(@:.udeps=_server.h) + endif + + # Look for the server stub files where they will be written. --- glibc-2.4.orig/debian/patches/locale/locale-print-LANGUAGE.diff +++ glibc-2.4/debian/patches/locale/locale-print-LANGUAGE.diff @@ -0,0 +1,30 @@ +Comments tell that LANG has to be the first value, and LC_ALL the last +one. Thus LANGUAGE is printed between them. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-08 + +Index: glibc-2.3.5/locale/programs/locale.c +=================================================================== +--- glibc-2.3.5.orig/locale/programs/locale.c ++++ glibc-2.3.5/locale/programs/locale.c +@@ -753,6 +753,7 @@ + { + size_t cat_no; + const char *lcall = getenv ("LC_ALL"); ++ const char *language = getenv ("LANGUAGE"); + const char *lang = getenv ("LANG") ? : ""; + + auto void get_source (const char *name); +@@ -771,6 +772,9 @@ + /* LANG has to be the first value. */ + printf ("LANG=%s\n", lang); + ++ if (language != NULL && getenv ("POSIXLY_CORRECT") == NULL) ++ printf ("LANGUAGE=%s\n", language); ++ + /* Now all categories in an unspecified order. */ + for (cat_no = 0; cat_no < NCATEGORIES; ++cat_no) + if (cat_no != LC_ALL) --- glibc-2.4.orig/debian/patches/locale/fix-LC_COLLATE-rules.diff +++ glibc-2.4/debian/patches/locale/fix-LC_COLLATE-rules.diff @@ -0,0 +1,91 @@ +Fix rules definitions in LC_COLLATE. Backward/forward rules were +sometimes affected to a wrong section, some rules could wrongly be +declared as identical, and localedef segfaults are also fixed. +Special French collation now works as described in ISO-14651. + +Submitted upstream: BZ645 + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: BZ645 +# DP: Status Details: depends on #310635 +# DP: Date: 2006-01-08 + +Index: glibc-2.3.5/locale/programs/ld-collate.c +=================================================================== +--- glibc-2.3.5.orig/locale/programs/ld-collate.c ++++ glibc-2.3.5/locale/programs/ld-collate.c +@@ -1524,6 +1524,7 @@ + int i; + int need_undefined = 0; + struct section_list *sect; ++ enum coll_sort_rule *orules; + int ruleidx; + int nr_wide_elems = 0; + +@@ -1535,17 +1536,28 @@ + "LC_COLLATE")); + return; + } ++ if (nrules == 0) ++ { ++ /* An error message has already been printed: ++ empty category description not allowed. */ ++ return; ++ } ++ + + /* If this assertion is hit change the type in `element_t'. */ + assert (nrules <= sizeof (runp->used_in_level) * 8); + + /* Make sure that the `position' rule is used either in all sections + or in none. */ ++ sect = collate->sections; ++ while (sect != NULL && sect->rules == NULL) ++ sect = sect->next; ++ orules = sect->rules; + for (i = 0; i < nrules; ++i) + for (sect = collate->sections; sect != NULL; sect = sect->next) + if (sect->rules != NULL + && ((sect->rules[i] & sort_position) +- != (collate->sections->rules[i] & sort_position))) ++ != (orules[i] & sort_position))) + { + WITH_CUR_LOCALE (error (0, 0, _("\ + %s: `position' must be used for a specific level in all sections or none"), +@@ -1840,7 +1852,7 @@ + + while (osect != sect) + if (osect->rules != NULL +- && memcmp (osect->rules, sect->rules, nrules) == 0) ++ && memcmp (osect->rules, sect->rules, nrules * sizeof (*osect->rules)) == 0) + break; + else + osect = osect->next; +@@ -3189,12 +3201,15 @@ + { + /* Insert sp in the collate->sections list, + right after collate->current_section. */ +- if (collate->current_section == NULL) ++ if (collate->sections == NULL) ++ collate->sections = collate->current_section = sp; ++ else if (collate->current_section == NULL) + collate->current_section = sp; + else + { + sp->next = collate->current_section->next; + collate->current_section->next = sp; ++ collate->current_section = sp; + } + } + +@@ -3385,6 +3400,9 @@ + no_error = 0; + } + } ++ /* Update current section. */ ++ if (collate->cursor != NULL) ++ collate->current_section = collate->cursor->section; + + lr_ignore_rest (ldfile, no_error); + } --- glibc-2.4.orig/debian/patches/locale/LC_COLLATE-keywords-ordering.diff +++ glibc-2.4/debian/patches/locale/LC_COLLATE-keywords-ordering.diff @@ -0,0 +1,138 @@ +Be less strict about keywords ordering in LC_COLLATE section, to +ease definition of new scripts. + +Submitted upstream: BZ690 + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: BZ690 +# DP: Date: 2006-01-08 + +Index: glibc-2.3.5/locale/programs/ld-collate.c +=================================================================== +--- glibc-2.3.5.orig/locale/programs/ld-collate.c ++++ glibc-2.3.5/locale/programs/ld-collate.c +@@ -2724,7 +2724,6 @@ + + if (nowtok == tok_copy) + { +- state = 2; + now = lr_token (ldfile, charmap, result, NULL, verbose); + if (now->tok != tok_string) + { +@@ -2795,14 +2794,23 @@ + switch (nowtok) + { + case tok_copy: +- /* Allow copying other locales. */ ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ + now = lr_token (ldfile, charmap, result, NULL, verbose); + if (now->tok != tok_string) + goto err_label; + +- if (! ignore_content) +- load_locale (LC_COLLATE, now->val.str.startmb, repertoire_name, +- charmap, result); ++ if (state == 1 || state == 3 || state == 5) ++ goto err_label; ++ ++ load_locale (LC_COLLATE, now->val.str.startmb, repertoire_name, ++ charmap, result); + + lr_ignore_rest (ldfile, 1); + break; +@@ -2816,9 +2824,6 @@ + break; + } + +- if (state != 0) +- goto err_label; +- + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok != tok_number) + goto err_label; +@@ -2839,7 +2844,7 @@ + break; + } + +- if (state != 0) ++ if (state == 1 || state == 3 || state == 5) + goto err_label; + + arg = lr_token (ldfile, charmap, result, repertoire, verbose); +@@ -2886,7 +2891,7 @@ + break; + } + +- if (state != 0 && state != 2) ++ if (state == 1 || state == 3 || state == 5) + goto err_label; + + arg = lr_token (ldfile, charmap, result, repertoire, verbose); +@@ -2955,7 +2960,7 @@ + break; + } + +- if (state != 0 && state != 2) ++ if (state == 1 || state == 3 || state == 5) + goto err_label; + + arg = lr_token (ldfile, charmap, result, repertoire, verbose); +@@ -3103,7 +3108,7 @@ + break; + } + +- if (state != 0) ++ if (state == 1 || state == 3 || state == 5) + goto err_label; + + arg = lr_token (ldfile, charmap, result, repertoire, verbose); +@@ -3219,7 +3224,7 @@ + break; + } + +- if (state != 0 && state != 1) ++ if (state == 3 || state == 5) + goto err_label; + state = 1; + +@@ -3390,8 +3395,12 @@ + was_ellipsis = tok_none; + } + } +- else if (state != 2 && state != 3) +- goto err_label; ++ else if (state == 5) ++ { ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: missing `reorder-sections-end' keyword"), "LC_COLLATE")); ++ state = 6; ++ } + state = 3; + + arg = lr_token (ldfile, charmap, result, repertoire, verbose); +@@ -3526,8 +3535,6 @@ + %s: missing `reorder-end' keyword"), "LC_COLLATE")); + state = 4; + } +- else if (state != 2 && state != 4) +- goto err_label; + state = 5; + + /* Get the name of the sections we are adding after. */ +@@ -4063,7 +4070,7 @@ + /* Next we assume `LC_COLLATE'. */ + if (!ignore_content) + { +- if (state == 0) ++ if (state == 0 && nrules == 0) + /* We must either see a copy statement or have + ordering values. */ + lr_error (ldfile, --- glibc-2.4.orig/debian/patches/locale/check-unknown-symbols.diff +++ glibc-2.4/debian/patches/locale/check-unknown-symbols.diff @@ -0,0 +1,35 @@ +Check for unknown symbols in collation rules. This is useful to detect +broken locales since unknown symbols are always wrong. + +This request has not been submitted upstream yet. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-08 + +Index: glibc-2.3.5/locale/programs/ld-collate.c +=================================================================== +--- glibc-2.3.5.orig/locale/programs/ld-collate.c ++++ glibc-2.3.5/locale/programs/ld-collate.c +@@ -3524,8 +3524,20 @@ + } + else if (arg != NULL) + { ++ void *ptr = NULL; + symstr = arg->val.str.startmb; + symlen = arg->val.str.lenmb; ++ if (state != 5 ++ && find_entry (&charmap->char_table, symstr, symlen, &ptr) != 0 ++ && (repertoire == NULL || ++ find_entry (&repertoire->char_table, symstr, symlen, &ptr) != 0) ++ && find_entry (&collate->elem_table, symstr, symlen, &ptr) != 0 ++ && find_entry (&collate->sym_table, symstr, symlen, &ptr) != 0) ++ { ++ lr_error (ldfile, _("%s: symbol `%.*s' not known"), ++ "LC_COLLATE", (int) symlen, symstr); ++ lr_ignore_rest (ldfile, 0); ++ } + } + else + { --- glibc-2.4.orig/debian/patches/locale/LC_IDENTIFICATION-optional-fields.diff +++ glibc-2.4/debian/patches/locale/LC_IDENTIFICATION-optional-fields.diff @@ -0,0 +1,35 @@ +In LC_IDENTIFICATION, audience, application and abbreviation keywords +are optional, thus do not report an error if they are not defined. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-08 + +Index: glibc-2.3.5/locale/programs/ld-identification.c +=================================================================== +--- glibc-2.3.5.orig/locale/programs/ld-identification.c ++++ glibc-2.3.5/locale/programs/ld-identification.c +@@ -148,6 +148,9 @@ + "LC_IDENTIFICATION", #cat)); \ + identification->cat = ""; \ + } ++#define TEST_ELEM_OPT(cat) \ ++ if (identification->cat == NULL) \ ++ identification->cat = ""; \ + + TEST_ELEM (title); + TEST_ELEM (source); +@@ -158,9 +161,9 @@ + TEST_ELEM (fax); + TEST_ELEM (language); + TEST_ELEM (territory); +- TEST_ELEM (audience); +- TEST_ELEM (application); +- TEST_ELEM (abbreviation); ++ TEST_ELEM_OPT (audience); ++ TEST_ELEM_OPT (application); ++ TEST_ELEM_OPT (abbreviation); + TEST_ELEM (revision); + TEST_ELEM (date); + --- glibc-2.4.orig/debian/patches/locale/fix-C-first_weekday.diff +++ glibc-2.4/debian/patches/locale/fix-C-first_weekday.diff @@ -0,0 +1,27 @@ +#! /bin/sh -e + +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: #327025 C locale has bad default for _NL_TIME_FIRST_WEEKDAY +# DP: Also fixes the 3rd value of the week keyword. +# DP: Related bugs: #327025 BZ181 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Petter Reinholdtsen +# DP: Upstream status: BZ181 +# DP: Date: 2006-01-10 + +Index: locale/C-time.c +=================================================================== +--- locale/C-time.c.orig ++++ locale/C-time.c +@@ -135,10 +135,10 @@ + { .wstr = (const uint32_t *) L"" }, + { .string = "\7" }, + { .word = 19971130 }, +- { .string = "\4" }, + { .string = "\7" }, + { .string = "\1" }, + { .string = "\1" }, ++ { .string = "\1" }, + { .string = "" }, + { .string = "%a %b %e %H:%M:%S %Z %Y" }, + { .wstr = (const uint32_t *) L"%a %b %e %H:%M:%S %Z %Y" }, --- glibc-2.4.orig/debian/patches/locale/fix-exhausted-memory.diff +++ glibc-2.4/debian/patches/locale/fix-exhausted-memory.diff @@ -0,0 +1,33 @@ +Localedef fails if a symbol name has exactly 55 characters in charmap file. + +This bug has not been submitted upstream yet. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-08 + +Index: glibc-2.3.5/locale/programs/linereader.c +=================================================================== +--- glibc-2.3.5.orig/locale/programs/linereader.c ++++ glibc-2.3.5/locale/programs/linereader.c +@@ -531,8 +531,8 @@ + { + lr->token.tok = tok_bsymbol; + +- buf[bufact] = '\0'; + buf = xrealloc (buf, bufact + 1); ++ buf[bufact] = '\0'; + + lr->token.val.str.startmb = buf; + lr->token.val.str.lenmb = bufact - 1; +@@ -584,8 +584,8 @@ + { + lr->token.tok = tok_ident; + +- buf[bufact] = '\0'; + buf = xrealloc (buf, bufact + 1); ++ buf[bufact] = '\0'; + + lr->token.val.str.startmb = buf; + lr->token.val.str.lenmb = bufact; --- glibc-2.4.orig/debian/patches/locale/iso4217-RON.diff +++ glibc-2.4/debian/patches/locale/iso4217-RON.diff @@ -0,0 +1,24 @@ +#! /bin/sh -e + +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: According to http://publications.eu.int/code/en/en-5000700.htm +# DP: RON is the official currency in Romania since 1st July 2005. +# DP: Related bugs: #347173 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Eddy PetriÅŸor +# DP: Upstream status: not submitted yet +# DP: Date: 2006-02-15 + +Index: locale/iso-4217.def +=================================================================== +--- locale/iso-4217.def.orig ++++ locale/iso-4217.def +@@ -126,7 +126,7 @@ + DEFINE_INT_CURR("PLN") /* Polish Zloty */ + DEFINE_INT_CURR("PYG") /* Paraguay Guarani */ + DEFINE_INT_CURR("QAR") /* Qatar Rial */ +-DEFINE_INT_CURR("ROL") /* Romanian Leu */ ++DEFINE_INT_CURR("RON") /* New Romanian Leu */ + DEFINE_INT_CURR("RUR") /* Russian Ruble */ + DEFINE_INT_CURR("RWF") /* Rwanda Franc */ + DEFINE_INT_CURR("SAR") /* Saudi Arabia Riyal */ --- glibc-2.4.orig/debian/patches/locale/preprocessor-collate.diff +++ glibc-2.4/debian/patches/locale/preprocessor-collate.diff @@ -0,0 +1,331 @@ +Allow preprocessor-like directives. These keywords were already +defined in locale/programs/locfile-kw.h, an implementation for +'define', 'undef', 'ifdef', 'else' and 'endif' is now provided in +locale/programs/ld-collate.c. For the moment, 'ifndef' and 'elif' +are not implemented because they do not appear in locfile-kw.h. +This patch is harmless, it only adds new keywords. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: BZ686 +# DP: Date: 2006-01-08 + +Index: glibc-2.3.5/locale/programs/ld-collate.c +=================================================================== +--- glibc-2.3.5.orig/locale/programs/ld-collate.c ++++ glibc-2.3.5/locale/programs/ld-collate.c +@@ -161,6 +161,24 @@ + size_t line; + }; + ++/* Data type for toggles. */ ++struct toggle_list_t; ++ ++struct toggle_list_t ++{ ++ const char *name; ++ ++ /* Predecessor in the list. */ ++ struct toggle_list_t *last; ++ ++ /* This flag is set when a keyword is undefined. */ ++ int is_undefined; ++ ++ /* Where does the branch come from. */ ++ const char *file; ++ size_t line; ++}; ++ + /* Sparse table of struct element_t *. */ + #define TABLE wchead_table + #define ELEMENT struct element_t * +@@ -214,6 +232,12 @@ + /* This value is used when handling ellipsis. */ + struct element_t ellipsis_weight; + ++ /* Known keywords. */ ++ struct toggle_list_t *defined_keywords; ++ ++ /* This is a stack of . */ ++ struct toggle_list_t *flow_control; ++ + /* Known collating elements. */ + hash_table elem_table; + +@@ -1456,6 +1480,56 @@ + } + + ++static struct token * ++flow_skip (struct linereader *ldfile, const struct charmap_t *charmap, ++ struct locale_collate_t *collate) ++{ ++ int level = 0; ++ struct token *now; ++ enum token_t nowtok; ++ while (1) ++ { ++ lr_ignore_rest (ldfile, 0); ++ now = lr_token (ldfile, charmap, NULL, NULL, 0); ++ nowtok = now->tok; ++ if (nowtok == tok_eof) ++ break; ++ else if (nowtok == tok_ifdef || nowtok == tok_ifndef) ++ ++level ; ++ else if (nowtok == tok_else) ++ { ++ if (strcmp (collate->flow_control->name, "else") == 0) ++ lr_error (ldfile, ++ _("%s: `else' statement at `%s:%Zu' cannot be followed by another `else' statement"), ++ "LC_COLLATE", collate->flow_control->name, collate->flow_control->line); ++ if (level == 0) ++ { ++ collate->flow_control->name = "else"; ++ collate->flow_control->file = ldfile->fname; ++ collate->flow_control->line = ldfile->lineno; ++ break; ++ } ++ } ++ else if (nowtok == tok_endif) ++ { ++ if (level == 0) ++ { ++ collate->flow_control = collate->flow_control->last; ++ break; ++ } ++ --level ; ++ } ++ } ++ if (nowtok == tok_eof) ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: unterminated `%s' flow control beginning at %s:%Zu"), ++ "LC_COLLATE", collate->flow_control->name, ++ collate->flow_control->file, ++ collate->flow_control->line)); ++ return now; ++} ++ ++ + static void + collate_startup (struct linereader *ldfile, struct localedef_t *locale, + struct localedef_t *copy_locale, int ignore_content) +@@ -3786,6 +3860,205 @@ + repertoire, result, nowtok); + break; + ++ case tok_define: ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ arg = lr_token (ldfile, charmap, result, NULL, verbose); ++ if (arg->tok != tok_ident) ++ goto err_label; ++ else ++ { ++ struct toggle_list_t *runp = collate->defined_keywords; ++ char *name; ++ ++ while (runp != NULL) ++ if (strncmp (runp->name, arg->val.str.startmb, ++ arg->val.str.lenmb) == 0 ++ && runp->name[arg->val.str.lenmb] == '\0') ++ break; ++ else ++ runp = runp->last; ++ ++ if (runp != NULL && runp->is_undefined == 0) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ if (runp == NULL) ++ { ++ runp = (struct toggle_list_t *) xcalloc (1, sizeof (*runp)); ++ runp->last = collate->defined_keywords; ++ collate->defined_keywords = runp; ++ } ++ else ++ { ++ free ((char *) runp->name); ++ runp->is_undefined = 0; ++ } ++ ++ name = (char *) xmalloc (arg->val.str.lenmb + 1); ++ memcpy (name, arg->val.str.startmb, arg->val.str.lenmb); ++ name[arg->val.str.lenmb] = '\0'; ++ runp->name = name; ++ } ++ lr_ignore_rest (ldfile, 1); ++ break; ++ ++ case tok_undef: ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ arg = lr_token (ldfile, charmap, result, NULL, verbose); ++ if (arg->tok != tok_ident) ++ goto err_label; ++ else ++ { ++ struct toggle_list_t *runp = collate->defined_keywords; ++ while (runp != NULL) ++ if (strncmp (runp->name, arg->val.str.startmb, ++ arg->val.str.lenmb) == 0 ++ && runp->name[arg->val.str.lenmb] == '\0') ++ { ++ runp->is_undefined = 1; ++ break; ++ } ++ else ++ runp = runp->last; ++ } ++ lr_ignore_rest (ldfile, 1); ++ break; ++ ++ case tok_ifdef: ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ arg = lr_token (ldfile, charmap, result, NULL, verbose); ++ if (arg->tok != tok_ident) ++ goto err_label; ++ else ++ { ++ struct toggle_list_t *runp = collate->defined_keywords; ++ struct toggle_list_t *flow = (struct toggle_list_t *) xcalloc (1, sizeof (*runp)); ++ flow->name = "ifdef"; ++ flow->file = ldfile->fname; ++ flow->line = ldfile->lineno; ++ flow->last = collate->flow_control; ++ collate->flow_control = flow; ++ ++ while (runp != NULL) ++ if (strncmp (runp->name, arg->val.str.startmb, ++ arg->val.str.lenmb) == 0 ++ && runp->name[arg->val.str.lenmb] == '\0') ++ break; ++ else ++ runp = runp->last; ++ ++ if (runp == NULL) ++ { ++ now = flow_skip(ldfile, charmap, collate); ++ if (now->tok == tok_eof) ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: unterminated `%s' flow control"), "LC_COLLATE", collate->flow_control->name)); ++ } ++ } ++ lr_ignore_rest (ldfile, 1); ++ break; ++ ++ case tok_ifndef: ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ arg = lr_token (ldfile, charmap, result, NULL, verbose); ++ if (arg->tok != tok_ident) ++ goto err_label; ++ else ++ { ++ struct toggle_list_t *runp = collate->defined_keywords; ++ struct toggle_list_t *flow = (struct toggle_list_t *) xcalloc (1, sizeof (*runp)); ++ flow->name = "ifndef"; ++ flow->file = ldfile->fname; ++ flow->line = ldfile->lineno; ++ flow->last = collate->flow_control; ++ collate->flow_control = flow; ++ ++ while (runp != NULL) ++ if (strncmp (runp->name, arg->val.str.startmb, ++ arg->val.str.lenmb) == 0 ++ && runp->name[arg->val.str.lenmb] == '\0') ++ break; ++ else ++ runp = runp->last; ++ ++ if (runp != NULL) ++ { ++ now = flow_skip(ldfile, charmap, collate); ++ if (now->tok == tok_eof) ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: unterminated `%s' flow control"), "LC_COLLATE", collate->flow_control->name)); ++ } ++ } ++ lr_ignore_rest (ldfile, 1); ++ break; ++ ++ case tok_else: ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ if (strcmp (collate->flow_control->name, "else") == 0) ++ lr_error (ldfile, ++ _("%s: `else' statement at `%s:%Zu' cannot be followed by another `else' statement"), ++ "LC_COLLATE", collate->flow_control->name, collate->flow_control->line); ++ collate->flow_control->name = "else"; ++ collate->flow_control->file = ldfile->fname; ++ collate->flow_control->line = ldfile->lineno; ++ now = flow_skip(ldfile, charmap, collate); ++ if (now->tok == tok_eof) ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: unterminated `%s' flow control"), "LC_COLLATE", collate->flow_control->name)); ++ break; ++ ++ case tok_endif: ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ if (collate->flow_control == NULL) ++ goto err_label; ++ else ++ collate->flow_control = collate->flow_control->last; ++ break; ++ + case tok_end: + /* Next we assume `LC_COLLATE'. */ + if (!ignore_content) +@@ -3815,6 +4088,13 @@ + else if (state == 5) + WITH_CUR_LOCALE (error (0, 0, _("\ + %s: missing `reorder-sections-end' keyword"), "LC_COLLATE")); ++ if (collate->flow_control != NULL ++ && strcmp(collate->flow_control->file, ldfile->fname) == 0) ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: unterminated `%s' flow control beginning at %s:%Zu"), ++ "LC_COLLATE", collate->flow_control->name, ++ collate->flow_control->file, ++ collate->flow_control->line)); + } + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok == tok_eof) --- glibc-2.4.orig/debian/patches/mips/local-lazy-eval.diff +++ glibc-2.4/debian/patches/mips/local-lazy-eval.diff @@ -0,0 +1,35 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Workaround invalid resolving of lazy evaluation stubs +# DP: Related bugs: #265678 +# DP: Dpatch author: Thiemo Seufer +# DP: Patch author: Thiemo Seufer +# DP: Upstream status: Debian-Specific +# DP: Status Details: The correct fix will be done to modify toolchains in etch. +# DP: Date: 2005-04-11, 2005-04-16 updated by gotom + +2005-04-16 GOTO Masanori + + * sysdeps/mips/dl-machine.h: Drop due to _dl_lookup_versioned_symbol + and _dl_lookup_symbol are changed into _dl_lookup_symbol_x. + +2005-04-11 Thiemo Seufer + + * first version. + +diff -upr build-tree.orig/glibc-2.3.2/elf/do-lookup.h build-tree/glibc-2.3.2/elf/do-lookup.h +--- build-tree.orig/glibc-2.3.2/elf/do-lookup.h 2005-02-28 23:42:31.000000000 +0100 ++++ build-tree/glibc-2.3.2/elf/do-lookup.h 2005-04-11 18:19:20.000000000 +0200 +@@ -209,6 +209,13 @@ FCT (const char *undef_name, unsigned lo + } + /* FALLTHROUGH */ + case STB_GLOBAL: ++#ifdef __mips__ ++ /* HACK: MIPS marks its lazy evaluation stubs with SHN_UNDEF ++ symbols, we skip them. */ ++ if (sym->st_shndx == SHN_UNDEF) ++ break; ++#endif ++ + /* Global definition. Just what we need. */ + result->s = sym; + result->m = map; --- glibc-2.4.orig/debian/patches/mips/submitted-msq.diff +++ glibc-2.4/debian/patches/mips/submitted-msq.diff @@ -0,0 +1,49 @@ +# DP: Description: fix msqs on mips +# DP: Related bugs: 215273 +# DP: Author: Thiemo Seufer +# DP: Upstream status: Pending + +Index: ports/sysdeps/unix/sysv/linux/mips/bits/msq.h +=================================================================== +RCS file: /cvs/glibc/libc/ports/sysdeps/unix/sysv/linux/mips/bits/msq.h,v +retrieving revision 1.1 +diff -a -d -u -p -r1.1 msq.h +--- ports/sysdeps/unix/sysv/linux/mips/bits/msq.h 26 Aug 2002 01:49:55 -0000 1.1 ++++ ports/sysdeps/unix/sysv/linux/mips/bits/msq.h 7 Oct 2003 18:30:30 -0000 +@@ -38,16 +38,34 @@ typedef unsigned long int msglen_t; + struct msqid_ds + { + struct ipc_perm msg_perm; /* structure describing operation permission */ ++#if __WORDSIZE == 32 && defined (__MIPSEB__) ++ unsigned long int __unused1; ++#endif + __time_t msg_stime; /* time of last msgsnd command */ ++#if __WORDSIZE == 32 && defined (__MIPSEL__) ++ unsigned long int __unused1; ++#endif ++#if __WORDSIZE == 32 && defined (__MIPSEB__) ++ unsigned long int __unused2; ++#endif + __time_t msg_rtime; /* time of last msgrcv command */ ++#if __WORDSIZE == 32 && defined (__MIPSEL__) ++ unsigned long int __unused2; ++#endif ++#if __WORDSIZE == 32 && defined (__MIPSEB__) ++ unsigned long int __unused3; ++#endif + __time_t msg_ctime; /* time of last change */ ++#if __WORDSIZE == 32 && defined (__MIPSEL__) ++ unsigned long int __unused3; ++#endif + unsigned long int __msg_cbytes; /* current number of bytes on queue */ + msgqnum_t msg_qnum; /* number of messages currently on queue */ + msglen_t msg_qbytes; /* max number of bytes allowed on queue */ + __pid_t msg_lspid; /* pid of last msgsnd() */ + __pid_t msg_lrpid; /* pid of last msgrcv() */ +- unsigned long int __unused1; +- unsigned long int __unused2; ++ unsigned long int __unused4; ++ unsigned long int __unused5; + }; + + #ifdef __USE_MISC --- glibc-2.4.orig/debian/patches/mips/local-librt.diff +++ glibc-2.4/debian/patches/mips/local-librt.diff @@ -0,0 +1,113 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: clock_{get,set}time@@GLIBC_2.0 - programs in Woody need it. +# DP: Add fix that the previous version does not provide @GLIBC_2.2 symbols. +# DP: Related bugs: http://lists.debian.org/debian-glibc/2004/12/msg00214.html +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: Guido Guenther , GOTO Masanori +# DP: Upstream status: Debian-Specific +# DP: Status Details: debian-specific, until etch will be released. +# DP: Date: 2006-05-28 (updated) + +--- ports/sysdeps/unix/sysv/linux/mips/Versions.orig Tue Sep 24 15:56:55 2002 ++++ ports/sysdeps/unix/sysv/linux/mips/Versions Tue Sep 24 15:49:27 2002 +@@ -29,3 +29,9 @@ + _test_and_set; + } + } ++librt { ++ GLIBC_2.0 { ++ # c* ++ clock_gettime; clock_settime; ++ } ++} +--- Versions.def 2004-12-21 00:37:04.000000000 +0900 ++++ Versions.def.new 2004-12-21 09:50:31.000000000 +0900 +@@ -82,6 +82,7 @@ + GLIBC_PRIVATE + } + librt { ++ GLIBC_2.0 + GLIBC_2.1 + GLIBC_2.2 + GLIBC_2.3 +--- sysdeps/unix/clock_gettime.c~ 2004-12-04 17:05:53.000000000 +0900 ++++ sysdeps/unix/clock_gettime.c 2004-12-23 12:04:01.000000000 +0900 +@@ -39,8 +39,13 @@ + + + /* Get current value of CLOCK and store it in TP. */ ++#ifdef DEBIAN_LIBRT_MIPS ++int ++__clock_gettime (clockid_t clock_id, struct timespec *tp) ++#else + int + clock_gettime (clockid_t clock_id, struct timespec *tp) ++#endif + { + int retval = -1; + +@@ -136,4 +136,6 @@ + + return retval; + } ++#ifndef DEBIAN_LIBRT_MIPS + librt_hidden_def (clock_gettime) ++#endif +--- sysdeps/unix/clock_settime.c~ 2004-12-04 17:05:53.000000000 +0900 ++++ sysdeps/unix/clock_settime.c 2004-12-23 12:09:27.000000000 +0900 +@@ -37,8 +37,13 @@ + + + /* Set CLOCK to value TP. */ ++#ifdef DEBIAN_LIBRT_MIPS ++int ++__clock_settime (clockid_t clock_id, const struct timespec *tp) ++#else + int + clock_settime (clockid_t clock_id, const struct timespec *tp) ++#endif + { + int retval; + +--- /dev/null 2004-09-27 19:55:25.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/mips/clock_settime.c 2004-12-23 12:07:36.000000000 +0900 +@@ -0,0 +1,18 @@ ++/* ++ * It adds for debian specific librt-mips binary incompatibility problems. ++ * - gotom 2004-12-20. ++ */ ++ ++#define DEBIAN_LIBRT_MIPS ++ ++/* include linux clock_settime */ ++#include ++ ++/* compat symbols. */ ++#include ++ ++#if SHLIB_COMPAT (librt, GLIBC_2_0, GLIBC_2_2) ++strong_alias (__clock_settime, __clock_settime_old); ++compat_symbol (librt, __clock_settime_old, clock_settime, GLIBC_2_0); ++#endif ++versioned_symbol (librt, __clock_settime, clock_settime, GLIBC_2_2); +--- /dev/null 2004-09-27 19:55:25.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/mips/clock_gettime.c 2004-12-23 12:07:35.000000000 +0900 +@@ -0,0 +1,18 @@ ++/* ++ * It adds for debian specific librt-mips binary incompatibility problems. ++ * - gotom 2004-12-20. ++ */ ++ ++#define DEBIAN_LIBRT_MIPS ++ ++/* include linux clock_gettime */ ++#include ++ ++/* compat symbols. */ ++#include ++ ++#if SHLIB_COMPAT (librt, GLIBC_2_0, GLIBC_2_2) ++strong_alias (__clock_gettime, __clock_gettime_old); ++compat_symbol (librt, __clock_gettime_old, clock_gettime, GLIBC_2_0); ++#endif ++versioned_symbol (librt, __clock_gettime, clock_gettime, GLIBC_2_2); --- glibc-2.4.orig/debian/patches/all/local-pt_BR.diff +++ glibc-2.4/debian/patches/all/local-pt_BR.diff @@ -0,0 +1,13 @@ +Author: Guilherme de S. Pastore (fatalerror) + +--- glibc-2.3.2/po/pt_BR.po 2001-04-27 00:40:08.000000000 -0300 ++++ glibc-2.3.2/po/pt_BR.po.new 2005-07-21 19:47:52.172350336 -0300 +@@ -2381,7 +2381,7 @@ + + #: posix/../sysdeps/posix/gai_strerror.c:31 + msgid "Temporary failure in name resolution" +-msgstr "Falha temporário na resolução de nome" ++msgstr "Falha temporária na resolução de nome" + + #: stdio-common/../sysdeps/unix/siglist.c:40 + #: sysdeps/unix/sysv/linux/siglist.h:34 --- glibc-2.4.orig/debian/patches/all/local-ru_RU.diff +++ glibc-2.4/debian/patches/all/local-ru_RU.diff @@ -0,0 +1,20 @@ +# DP: Description: Change default charset for 'russian' locale alias +# DP: Related bugs: #62586 +# DP: Dpatch author: Ben Collins +# DP: Patch author: Alistair McKinstry +# DP: Upstream status: Submitted +# DP: Status Details: http://sources.redhat.com/bugzilla/show_bug.cgi?id=120 +# DP: Date: 2002-03-10 + +diff -urN glibc-2.2.5.orig/intl/locale.alias glibc-2.2.5/intl/locale.alias +--- glibc-2.2.5.orig/intl/locale.alias Sun Jul 22 16:24:50 2001 ++++ glibc-2.2.5/intl/locale.alias Sun Mar 10 23:00:09 2002 +@@ -65,7 +65,7 @@ + polish pl_PL.ISO-8859-2 + portuguese pt_PT.ISO-8859-1 + romanian ro_RO.ISO-8859-2 +-russian ru_RU.ISO-8859-5 ++russian ru_RU.KOI8-R + slovak sk_SK.ISO-8859-2 + slovene sl_SI.ISO-8859-2 + slovenian sl_SI.ISO-8859-2 --- glibc-2.4.orig/debian/patches/all/local-remove-manual.diff +++ glibc-2.4/debian/patches/all/local-remove-manual.diff @@ -0,0 +1,290 @@ +The GNU Libc Reference manual has to be removed for licensing reasons. +But some files have a dependency on manual/errno.texi; the easiest +solution is to drop those dependencies and make sure that MAKEINFO=: +so that no target depends on manual/*.texi files. + +Index: glibc-2.4/manual/Makefile +=================================================================== +--- /dev/null ++++ glibc-2.4/manual/Makefile +@@ -0,0 +1,254 @@ ++# Copyright (C) 1992-1999,2000,2001,2002,2003,2004,2006 ++# Free Software Foundation, Inc. ++# This file is part of the GNU C Library. ++ ++# The GNU C Library is free software; you can redistribute it and/or ++# modify it under the terms of the GNU Lesser General Public ++# License as published by the Free Software Foundation; either ++# version 2.1 of the License, or (at your option) any later version. ++ ++# The GNU C Library is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# Lesser General Public License for more details. ++ ++# You should have received a copy of the GNU Lesser General Public ++# License along 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 the GNU C Library manual. ++ ++subdir := manual ++export subdir := $(subdir) ++ ++# Allow override ++INSTALL_INFO = install-info ++ ++.PHONY: all dvi pdf info html ++all: dvi ++dvi: libc.dvi ++pdf: libc.pdf ++ ++# Get glibc's configuration info. ++ifneq (,$(wildcard ../Makeconfig)) ++include ../Makeconfig ++else ++MAKEINFO = makeinfo ++TEXI2DVI = texi2dvi ++AWK = gawk ++endif ++ ++TEXI2PDF = texi2dvi --pdf ++ ++ifneq ($(strip $(MAKEINFO)),:) ++all: info ++info: libc.info ++endif ++ ++# scripts we use ++ifndef move-if-change ++move-if-change = ./move-if-change ++endif ++mkinstalldirs = $(..)scripts/mkinstalldirs ++ ++chapters = $(addsuffix .texi, \ ++ intro errno memory ctype string charset locale \ ++ message search pattern io stdio llio filesys \ ++ pipe socket terminal syslog math arith time \ ++ resource setjmp signal startup process job nss \ ++ users sysinfo conf crypt debug) ++add-chapters = $(wildcard $(foreach d, $(add-ons), ../$d/$d.texi)) ++appendices = lang.texi header.texi install.texi maint.texi contrib.texi \ ++ freemanuals.texi ++ ++-include texis ++texis: texis.awk $(chapters) $(add-chapters) $(appendices) lesser.texi fdl.texi ++ $(AWK) -f $^ > $@.T ++ mv -f $@.T $@ ++ ++nonexamples = $(filter-out $(add-chapters) %.c.texi, $(texis)) ++examples = $(filter-out $(foreach d, $(add-ons), ../$d/%.c.texi), \ ++ $(filter %.c.texi, $(texis))) ++ ++# Kludge: implicit rule so Make knows the one command does it all. ++chapters.% top-menu.%: libc-texinfo.sh $(texis) Makefile ++ AWK=$(AWK) $(SHELL) $< '$(chapters)' '$(add-chapters)' '$(appendices)' ++ ++libc.dvi libc.pdf libc.info: chapters.texi top-menu.texi dir-add.texi \ ++ libm-err.texi ++libc.dvi libc.pdf: texinfo.tex ++ ++html: libc/index.html ++libc/index.html: chapters.texi top-menu.texi dir-add.texi libm-err.texi ++ $(MAKEINFO) --html libc.texinfo ++ ++# Generate the summary from the Texinfo source files for each chapter. ++summary.texi: stamp-summary ; ++stamp-summary: summary.awk $(filter-out summary.texi, $(texis)) ++ $(AWK) -f $^ | sort -t' ' -df -k 1,1 | tr '\014' '\012' > summary-tmp ++ $(move-if-change) summary-tmp summary.texi ++ touch $@ ++ ++# Generate a file which can be added to the `dir' content to provide direct ++# access to the documentation of the function, variables, and other ++# definitions. ++dir-add.texi: xtract-typefun.awk $(texis) ++ (echo "@dircategory GNU C library functions and macros"; \ ++ echo "@direntry"; \ ++ $(AWK) -f $^ | sort; \ ++ echo "@end direntry") > $@.new ++ mv -f $@.new $@ ++ ++# The table with the math errors is generated. ++libm-err.texi: stamp-libm-err ++stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\ ++ $(dir)/libm-test-ulps)) ++ pwd=`pwd`; \ ++ $(PERL) $< $$pwd/.. > libm-err-tmp ++ $(move-if-change) libm-err-tmp libm-err.texi ++ touch $@ ++ ++# Generate Texinfo files from the C source for the example programs. ++%.c.texi: examples/%.c ++ sed -e 's,[{}],@&,g' \ ++ -e 's,/\*\(@.*\)\*/,\1,g' \ ++ -e 's,/\* *,/* @r{,g' -e 's, *\*/,} */,' \ ++ -e 's/\(@[a-z][a-z]*\)@{\([^}]*\)@}/\1{\2}/g'\ ++ $< | expand > $@.new ++ mv -f $@.new $@ ++ ++%.info: %.texinfo ++ LANGUAGE=C LC_ALL=C $(MAKEINFO) $< ++ ++%.dvi: %.texinfo ++ $(TEXI2DVI) $< ++ ++%.pdf: %.texinfo ++ $(TEXI2PDF) $< ++ ++# Distribution. ++minimal-dist = summary.awk texis.awk tsort.awk libc-texinfo.sh libc.texinfo \ ++ libm-err.texi stamp-libm-err \ ++ $(filter-out summary.texi, $(nonexamples)) \ ++ $(patsubst %.c.texi,examples/%.c, $(examples)) ++ ++doc-only-dist = Makefile COPYING.LIB ++distribute = $(minimal-dist) $(examples) stdio-fp.c \ ++ libc.info* libc.?? libc.??s texinfo.tex \ ++ xtract-typefun.awk dir-add.texi dir libm-err-tab.pl ++export distribute := $(distribute) ++ ++tar-it = tar chovf $@ $^ ++ ++manual.tar: $(doc-only-dist) $(minimal-dist) ; $(tar-it) ++mandist.tar: $(doc-only-dist) $(distribute) ; $(tar-it) ++ ++edition := $(shell sed -n 's/^@set EDITION \([0-9][0-9.]*\)[^0-9.]*.*$$/\1/p' \ ++ libc.texinfo) ++ ++glibc-doc-$(edition).tar: $(doc-only-dist) $(distribute) ++ @rm -f glibc-doc-$(edition) ++ ln -s . glibc-doc-$(edition) ++ tar chovf $@ $(addprefix glibc-doc-$(edition)/,$^) ++ rm -f glibc-doc-$(edition) ++ ++%.Z: % ++ compress -c $< > $@.new ++ mv -f $@.new $@ ++%.gz: % ++ gzip -9 -c $< > $@.new ++ mv -f $@.new $@ ++%.uu: % ++ uuencode $< < $< > $@.new ++ mv -f $@.new $@ ++ ++.PHONY: mostlyclean distclean realclean clean ++mostlyclean: ++ -rm -f libc.dvi libc.pdf libc.tmp libc.info* ++ -rm -f $(objpfx)stubs ++ -rm -f $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o) ++clean: mostlyclean ++distclean: clean ++indices = cp fn pg tp vr ky ++realclean: distclean ++ -rm -f texis summary.texi stamp-summary *.c.texi dir-add.texi ++ -rm -f $(foreach index,$(indices),libc.$(index) libc.$(index)s) ++ -rm -f libc.log libc.aux libc.toc dir-add.texinfo ++ -rm -f top-menu.texi chapters.texi ++ ++.PHONY: install subdir_install installdirs install-data ++install-data subdir_install: install ++ifneq ($(strip $(MAKEINFO)),:) ++install: $(inst_infodir)/libc.info ++ @if $(SHELL) -c '$(INSTALL_INFO) --version' >/dev/null 2>&1; then \ ++ test -f $(inst_infodir)/dir || $(INSTALL_DATA) dir $(inst_infodir);\ ++ $(INSTALL_INFO) --info-dir=$(inst_infodir) $(inst_infodir)/libc.info;\ ++ else : ; fi ++endif ++# Catchall implicit rule for other installation targets from the parent. ++install-%: ; ++ ++$(inst_infodir)/libc.info: libc.info installdirs ++ for file in $<*; do \ ++ $(INSTALL_DATA) $$file $(@D)/$$file; \ ++ done ++ ++installdirs: ++ $(mkinstalldirs) $(inst_infodir) ++ ++.PHONY: dist ++dist: # glibc-doc-$(edition).tar.gz ++ ++ifneq (,$(wildcard ../Make-dist)) ++dist: ../Make-dist ++ $(MAKE) -f $< $(Make-dist-args) ++endif ++ ++ifndef ETAGS ++ETAGS = etags -T ++endif ++TAGS: $(minimal-dist) ++ $(ETAGS) -o $@ $^ ++ ++# The parent makefile sometimes invokes us with targets `subdir_REAL-TARGET'. ++subdir_%: % ; ++# For targets we don't define, do nothing. ++subdir_%: ; ++ ++# These are targets that each glibc subdirectory is expected to understand. ++# ../Rules defines them for code subdirectories; for us, they are no-ops. ++# None of these should be `subdir_TARGET'; those targets are transformed ++# by the implicit rule above into `TARGET' deps. ++glibc-targets := lib objects objs others tests xtests lint.out echo-headers ++.PHONY: $(glibc-targets) ++$(glibc-targets): ++ ++# Create stamp files if they don't exist, so the parent makefile's rules for ++# updating the library archives are happy with us, and never think we have ++# changed the library. ++lib: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o) ++ifdef objpfx ++.PHONY: stubs ++stubs: $(objpfx)stubs ++endif ++$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%: ++ $(make-target-directory) ++ touch $@ ++ ++# Make the target directory if it doesn't exist, using the `mkinstalldirs' ++# script that does `mkdir -p' even if `mkdir' doesn't support that flag. ++define make-target-directory ++$(addprefix $(mkinstalldirs) ,\ ++ $(filter-out $(wildcard $(@D:%/=%)),$(@D:%/=%))) ++endef ++ ++# The top-level glibc Makefile expects subdir_install to update the stubs file. ++subdir_install: stubs ++ ++# Get rid of these variables if they came from the parent. ++routines = ++aux = ++sources = ++objects = ++headers = +Index: glibc-2.4/sysdeps/gnu/Makefile +=================================================================== +--- glibc-2.4.orig/sysdeps/gnu/Makefile ++++ glibc-2.4/sysdeps/gnu/Makefile +@@ -20,7 +20,7 @@ + # Generate the list of strings for errno codes from the section of the + # manual which documents the codes. + +-$(..)sysdeps/gnu/errlist.c: $(..)sysdeps/gnu/errlist.awk \ ++$(..)sysdeps/gnu/errlist-disabled.c: $(..)sysdeps/gnu/errlist.awk \ + $(..)manual/errno.texi + $(AWK) -f $^ > $@-tmp + # Make it unwritable so noone will edit it by mistake. +Index: glibc-2.4/sysdeps/mach/hurd/Makefile +=================================================================== +--- glibc-2.4.orig/sysdeps/mach/hurd/Makefile ++++ glibc-2.4/sysdeps/mach/hurd/Makefile +@@ -87,7 +87,7 @@ + -e 's, \.\./, $(..),g' > $@t + mv -f $@t $@ + +-$(hurd)/bits/errno.h: $(common-objpfx)stamp-errnos ; ++$(hurd)/bits/errno-disabled.h: $(common-objpfx)stamp-errnos ; + $(common-objpfx)stamp-errnos: $(hurd)/errnos.awk $(errno.texinfo) \ + $(mach-errnos-deps) $(common-objpfx)errnos.d + $(AWK) -f $^ > $(hurd)/bits/errno.h-tmp --- glibc-2.4.orig/debian/patches/all/submitted-new-brf-encoding.diff +++ glibc-2.4/debian/patches/all/submitted-new-brf-encoding.diff @@ -0,0 +1,218 @@ +This patch has been submitted upstream BZ2681 by Samuel Thibault, +who works on accessibility issues. It adds a new BRF encoding, +aka ASCII Braille. + +Index: iconvdata/Makefile +=================================================================== +--- iconvdata/Makefile.orig ++++ iconvdata/Makefile +@@ -58,7 +58,7 @@ + IBM1142 IBM1143 IBM1144 IBM1145 IBM1146 IBM1147 IBM1148 \ + IBM1149 IBM1166 IBM1167 IBM4517 IBM4899 IBM4909 IBM4971 \ + IBM5347 IBM9030 IBM9066 IBM9448 IBM12712 IBM16804 \ +- IBM1364 IBM1371 IBM1388 IBM1390 IBM1399 ISO_11548-1 ++ IBM1364 IBM1371 IBM1388 IBM1390 IBM1399 ISO_11548-1 BRF + + modules.so := $(addsuffix .so, $(modules)) + +@@ -195,7 +195,7 @@ + ibm9030.c ibm9030.h ibm9066.c ibm9066.h ibm9448.c ibm9448.h \ + ibm12712.c ibm12712.h ibm16804.c ibm16804.h \ + ibm1364.c ibm1364.h ibm1371.c ibm1371.h ibm1388.c ibm1388.h \ +- ibm1390.c ibm1390.h ibm1399.c ibm1399.h iso_11548-1.c ++ ibm1390.c ibm1390.h ibm1399.c ibm1399.h iso_11548-1.c brf.c + + # We build the transformation modules only when we build shared libs. + ifeq (yes,$(build-shared)) +@@ -236,7 +236,7 @@ + iso8859-13 iso8859-14 iso8859-15 mac-uk sami-ws2 \ + iso-ir-197 tis-620 koi8-u ibm874 cp10007 koi8-t \ + georgian-ps georgian-academy iso-ir-209 mac-sami \ +- iso8859-11 ibm866nav pt154 rk1048 ++ iso8859-11 ibm866nav pt154 rk1048 brf + + gen-special-modules := iso8859-7jp + +Index: iconvdata/brf.c +=================================================================== +--- /dev/null ++++ iconvdata/brf.c +@@ -0,0 +1,29 @@ ++/* Conversion from and to BRF. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Samuel Thibault , 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* Get the conversion table. */ ++#define TABLES ++ ++#define CHARSET_NAME "BRF//" ++#define HAS_HOLES 1 /* Not all 256 character are defined. */ ++ ++#include <8bit-gap.c> +Index: iconvdata/gconv-modules +=================================================================== +--- iconvdata/gconv-modules.orig ++++ iconvdata/gconv-modules +@@ -1903,3 +1903,7 @@ + alias ISO11548-1// ISO_11548-1// + module ISO_11548-1// INTERNAL ISO_11548-1 1 + module INTERNAL ISO_11548-1// ISO_11548-1 1 ++ ++# from to module cost ++module BRF// INTERNAL BRF 1 ++module INTERNAL BRF// BRF 1 +Index: iconvdata/testdata/BRF +=================================================================== +--- /dev/null ++++ iconvdata/testdata/BRF +@@ -0,0 +1,7 @@ ++A B C D E F G H I J ++K L M N O P Q R S T ++U V X Y Z & = ( ! ) ++* < % ? : $ ] \ [ W ++1 2 3 4 5 6 7 8 9 0 ++/ + # > ' - ++@ ^ _ " . ; , +Index: iconvdata/testdata/BRF..UTF-8 +=================================================================== +--- /dev/null ++++ iconvdata/testdata/BRF..UTF-8 +@@ -0,0 +1,7 @@ ++â â €â ƒâ €â ‰â €â ™â €â ‘⠀⠋⠀⠛⠀⠓⠀⠊⠀⠚ ++⠅⠀⠇⠀â â €â â €â •â €â â €â Ÿâ €â —⠀⠎⠀⠞ ++⠥⠀⠧⠀⠭⠀⠽⠀⠵⠀⠯⠀⠿⠀⠷⠀⠮⠀⠾ ++⠡⠀⠣⠀⠩⠀⠹⠀⠱⠀⠫⠀⠻⠀⠳⠀⠪⠀⠺ ++⠂⠀⠆⠀⠒⠀⠲⠀⠢⠀⠖⠀⠶⠀⠦⠀⠔⠀⠴ ++⠌⠀⠬⠀⠼⠀⠜⠀⠄⠀⠤ ++⠈⠀⠘⠀⠸⠀â â €â ¨â €â °â €â   +Index: localedata/charmaps/BRF +=================================================================== +--- /dev/null ++++ localedata/charmaps/BRF +@@ -0,0 +1,108 @@ ++ BRF ++ % ++ / ++% version: 1.0 ++% source: Samuel Thibault ++ ++CHARMAP ++ /x00 NULL (NUL) ++ /x01 START OF HEADING (SOH) ++ /x02 START OF TEXT (STX) ++ /x03 END OF TEXT (ETX) ++ /x04 END OF TRANSMISSION (EOT) ++ /x05 ENQUIRY (ENQ) ++ /x06 ACKNOWLEDGE (ACK) ++ /x07 BELL (BEL) ++ /x08 BACKSPACE (BS) ++ /x09 CHARACTER TABULATION (HT) ++ /x0a LINE FEED (LF) ++ /x0b LINE TABULATION (VT) ++ /x0c FORM FEED (FF) ++ /x0d CARRIAGE RETURN (CR) ++ /x0e SHIFT OUT (SO) ++ /x0f SHIFT IN (SI) ++ /x10 DATALINK ESCAPE (DLE) ++ /x11 DEVICE CONTROL ONE (DC1) ++ /x12 DEVICE CONTROL TWO (DC2) ++ /x13 DEVICE CONTROL THREE (DC3) ++ /x14 DEVICE CONTROL FOUR (DC4) ++ /x15 NEGATIVE ACKNOWLEDGE (NAK) ++ /x16 SYNCHRONOUS IDLE (SYN) ++ /x17 END OF TRANSMISSION BLOCK (ETB) ++ /x18 CANCEL (CAN) ++ /x19 END OF MEDIUM (EM) ++ /x1a SUBSTITUTE (SUB) ++ /x1b ESCAPE (ESC) ++ /x1c FILE SEPARATOR (IS4) ++ /x1d GROUP SEPARATOR (IS3) ++ /x1e RECORD SEPARATOR (IS2) ++ /x1f UNIT SEPARATOR (IS1) ++ /x20 BRAILLE PATTERN BLANK ++ /x21 BRAILLE PATTERN DOTS-2346 ++ /x22 BRAILLE PATTERN DOTS-5 ++ /x23 BRAILLE PATTERN DOTS-3456 ++ /x24 BRAILLE PATTERN DOTS-1246 ++ /x25 BRAILLE PATTERN DOTS-146 ++ /x26 BRAILLE PATTERN DOTS-12346 ++ /x27 BRAILLE PATTERN DOTS-3 ++ /x28 BRAILLE PATTERN DOTS-12356 ++ /x29 BRAILLE PATTERN DOTS-23456 ++ /x2a BRAILLE PATTERN DOTS-16 ++ /x2b BRAILLE PATTERN DOTS-346 ++ /x2c BRAILLE PATTERN DOTS-6 ++ /x2d BRAILLE PATTERN DOTS-36 ++ /x2e BRAILLE PATTERN DOTS-46 ++ /x2f BRAILLE PATTERN DOTS-34 ++ /x30 BRAILLE PATTERN DOTS-356 ++ /x31 BRAILLE PATTERN DOTS-2 ++ /x32 BRAILLE PATTERN DOTS-23 ++ /x33 BRAILLE PATTERN DOTS-25 ++ /x34 BRAILLE PATTERN DOTS-256 ++ /x35 BRAILLE PATTERN DOTS-26 ++ /x36 BRAILLE PATTERN DOTS-235 ++ /x37 BRAILLE PATTERN DOTS-2356 ++ /x38 BRAILLE PATTERN DOTS-236 ++ /x39 BRAILLE PATTERN DOTS-35 ++ /x3a BRAILLE PATTERN DOTS-156 ++ /x3b BRAILLE PATTERN DOTS-56 ++ /x3c BRAILLE PATTERN DOTS-126 ++ /x3d BRAILLE PATTERN DOTS-123456 ++ /x3e BRAILLE PATTERN DOTS-345 ++ /x3f BRAILLE PATTERN DOTS-1456 ++ /x40 BRAILLE PATTERN DOTS-4 ++ /x41 BRAILLE PATTERN DOTS-1 ++ /x42 BRAILLE PATTERN DOTS-12 ++ /x43 BRAILLE PATTERN DOTS-14 ++ /x44 BRAILLE PATTERN DOTS-145 ++ /x45 BRAILLE PATTERN DOTS-15 ++ /x46 BRAILLE PATTERN DOTS-124 ++ /x47 BRAILLE PATTERN DOTS-1245 ++ /x48 BRAILLE PATTERN DOTS-125 ++ /x49 BRAILLE PATTERN DOTS-24 ++ /x4a BRAILLE PATTERN DOTS-245 ++ /x4b BRAILLE PATTERN DOTS-13 ++ /x4c BRAILLE PATTERN DOTS-123 ++ /x4d BRAILLE PATTERN DOTS-134 ++ /x4e BRAILLE PATTERN DOTS-1345 ++ /x4f BRAILLE PATTERN DOTS-135 ++ /x50 BRAILLE PATTERN DOTS-1234 ++ /x51 BRAILLE PATTERN DOTS-12345 ++ /x52 BRAILLE PATTERN DOTS-1235 ++ /x53 BRAILLE PATTERN DOTS-234 ++ /x54 BRAILLE PATTERN DOTS-2345 ++ /x55 BRAILLE PATTERN DOTS-136 ++ /x56 BRAILLE PATTERN DOTS-1236 ++ /x57 BRAILLE PATTERN DOTS-2456 ++ /x58 BRAILLE PATTERN DOTS-1346 ++ /x59 BRAILLE PATTERN DOTS-13456 ++ /x5a BRAILLE PATTERN DOTS-1356 ++ /x5b BRAILLE PATTERN DOTS-246 ++ /x5c BRAILLE PATTERN DOTS-1256 ++ /x5d BRAILLE PATTERN DOTS-12456 ++ /x5e BRAILLE PATTERN DOTS-45 ++ /x5f BRAILLE PATTERN DOTS-456 ++END CHARMAP ++ ++WIDTH ++... 1 ++END WIDTH --- glibc-2.4.orig/debian/patches/sparc/local-sysdep.diff +++ glibc-2.4/debian/patches/sparc/local-sysdep.diff @@ -0,0 +1,11 @@ +2006-05-28 Aurelien Jarno + + * linuxthreads/sysdeps/unix/sysv/linux/sparc/Makefile: pull in + __syscall_error routine when building with linuxthreads. + + +--- /dev/null 2006-05-24 08:39:47.042929312 +0200 ++++ linuxthreads/sysdeps/unix/sysv/linux/sparc/Makefile 2003-01-12 09:12:11.000000000 +0100 +@@ -0,0 +1,2 @@ ++# pull in __syscall_error routine ++libpthread-routines += sysdep --- glibc-2.4.orig/debian/patches/sparc/local-fork.diff +++ glibc-2.4/debian/patches/sparc/local-fork.diff @@ -0,0 +1,39 @@ +2006-05-28 Aurelien Jarno + + * sysdeps/unix/sysv/linux/sparc/fork.S: remove, so that fork.c is + used instead. + + +--- sysdeps/unix/sysv/linux/sparc/fork.S 2002-12-31 21:37:31.000000000 +0100 ++++ /dev/null 2006-05-24 08:39:47.042929312 +0200 +@@ -1,30 +0,0 @@ +-/* Copyright (C) 1997, 1999, 2002 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Miguel de Icaza , 1997. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#include +- +-PSEUDO (__libc_fork, fork, 0) +- sub %o1, 1, %o1 +- retl +- and %o0, %o1, %o0 +-PSEUDO_END (__libc_fork) +- +-weak_alias (__libc_fork, __fork) +-libc_hidden_def (__fork) +-weak_alias (__libc_fork, fork) --- glibc-2.4.orig/debian/patches/sparc/local-sparcv8-target.diff +++ glibc-2.4/debian/patches/sparc/local-sparcv8-target.diff @@ -0,0 +1,34 @@ +# DP: Description: Optimizes the build for sparcv8 +# DP: Author: Ben Collins +# DP: Upstream status: Debian-Specific +# DP: Status Details: +# DP: Date: June 17, 2003 + +--- configure~ 2003-06-17 09:24:52.000000000 -0400 ++++ configure 2003-06-17 09:25:19.000000000 -0400 +@@ -1796,6 +1796,11 @@ + machine="powerpc" + fi + ++# Force v8 ++if test "$machine" = sparc; then ++ machine="sparcv8" ++fi ++ + # Braindead PowerPC box with absolutely no FPU. + case "$machine-$host_os" in + powerpc*-*soft) +--- configure.in~ 2003-06-17 09:24:55.000000000 -0400 ++++ configure.in 2003-06-17 09:25:29.000000000 -0400 +@@ -337,6 +337,11 @@ + machine="powerpc" + fi + ++# Force v8 ++if test "$machine" = sparc; then ++ machine="sparcv8" ++fi ++ + # Braindead PowerPC box with absolutely no FPU. + case "$machine-$host_os" in + powerpc*-*soft) --- glibc-2.4.orig/debian/patches/sparc/local-linuxthreads.diff +++ glibc-2.4/debian/patches/sparc/local-linuxthreads.diff @@ -0,0 +1,101 @@ +Index: glibc-2.4/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h +=================================================================== +--- glibc-2.4.orig/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2006-05-22 22:55:28.000000000 -0400 ++++ glibc-2.4/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2006-05-22 22:55:32.000000000 -0400 +@@ -54,6 +54,96 @@ + SYSCALL_ERROR_HANDLER \ + SYSCALL_ERROR_HANDLER2 + ++#ifdef LINKER_HANDLES_R_SPARC_WDISP22 ++/* Unfortunately, we cannot do this yet. Linker doesn't seem to ++ * handle R_SPARC_WDISP22 against non-STB_LOCAL symbols properly . */ ++# define SYSCALL_ERROR_HANDLER_ENTRY(handler) \ ++ .section .gnu.linkonce.t.handler,"ax",@progbits; \ ++ .globl handler; \ ++ .hidden handler; \ ++ .type handler,@function; \ ++handler: ++#else ++# define SYSCALL_ERROR_HANDLER_ENTRY(handler) \ ++ .subsection 3; \ ++handler: ++#endif ++ ++#if RTLD_PRIVATE_ERRNO ++# define SYSCALL_ERROR_HANDLER \ ++ .section .gnu.linkonce.t.__sparc_get_pic_l7,"ax",@progbits; \ ++ .globl __sparc_get_pic_l7; \ ++ .hidden __sparc_get_pic_l7; \ ++ .type __sparc_get_pic_l7,@function; \ ++__sparc_get_pic_l7: \ ++ retl; \ ++ add %o7, %l7, %l7; \ ++ .previous; \ ++SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \ ++ save %sp,-96,%sp; \ ++ sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7; \ ++ call __sparc_get_pic_l7; \ ++ add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7; \ ++ ld [%l7 + rtld_errno], %l0; \ ++ st %i0, [%l0]; \ ++ jmpl %i7+8, %g0; \ ++ restore %g0, -1, %o0; \ ++ .previous; ++#elif USE___THREAD ++# ifndef NOT_IN_libc ++# define SYSCALL_ERROR_ERRNO __libc_errno ++# else ++# define SYSCALL_ERROR_ERRNO errno ++# endif ++# ifdef SHARED ++# define SYSCALL_ERROR_HANDLER \ ++ .section .gnu.linkonce.t.__sparc_get_pic_l7,"ax",@progbits; \ ++ .globl __sparc_get_pic_l7; \ ++ .hidden __sparc_get_pic_l7; \ ++ .type __sparc_get_pic_l7,@function; \ ++__sparc_get_pic_l7: \ ++ retl; \ ++ add %o7, %l7, %l7; \ ++ .previous; \ ++SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \ ++ save %sp,-96,%sp; \ ++ sethi %tie_hi22(SYSCALL_ERROR_ERRNO), %l1; \ ++ sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7; \ ++ call __sparc_get_pic_l7; \ ++ add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7; \ ++ add %l1, %tie_lo10(SYSCALL_ERROR_ERRNO), %l1; \ ++ ld [%l7 + %l1], %l1, %tie_ld(SYSCALL_ERROR_ERRNO); \ ++ st %i0, [%g7 + %l1], %tie_add(SYSCALL_ERROR_ERRNO); \ ++ jmpl %i7+8, %g0; \ ++ restore %g0, -1, %o0; \ ++ .previous; ++# else ++# define SYSCALL_ERROR_HANDLER \ ++SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \ ++ sethi %tie_hi22(SYSCALL_ERROR_ERRNO), %g1; \ ++ sethi %hi(_GLOBAL_OFFSET_TABLE_), %g2; \ ++ add %g1, %tie_lo10(SYSCALL_ERROR_ERRNO), %g1; \ ++ add %g2, %lo(_GLOBAL_OFFSET_TABLE_), %g2; \ ++ ld [%g2 + %g1], %g1, %tie_ld(SYSCALL_ERROR_ERRNO); \ ++ st %o0, [%g7 + %g1], %tie_add(SYSCALL_ERROR_ERRNO); \ ++ jmpl %o7+8, %g0; \ ++ mov -1, %o0; \ ++ .previous; ++# endif ++#else ++# define SYSCALL_ERROR_HANDLER \ ++SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \ ++ .global __errno_location; \ ++ .type __errno_location,@function; \ ++ save %sp, -96, %sp; \ ++ call __errno_location; \ ++ nop; \ ++ st %i0, [%o0]; \ ++ jmpl %i7+8, %g0; \ ++ restore %g0, -1, %o0; \ ++ .previous; ++#endif ++ + #define SYSCALL_ERROR_HANDLER2 \ + SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler2) \ + .global __errno_location; \ --- glibc-2.4.orig/debian/patches/sparc/submitted-timing.diff +++ glibc-2.4/debian/patches/sparc/submitted-timing.diff @@ -0,0 +1,48 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: sparc/sparcv9 libraries fix +# DP: Author: Daniel Jacobowitz , Jeff Bailey +# DP: Upstream status: Not Submitted +# DP: Status Details: +# DP: Date: 2003-12-31 + +2003-12-31 Jeff Bailey + + * sysdeps/sparc/hp-timing.h: New file. + +--- /dev/null 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.3.2/sysdeps/sparc/sparc32/hp-timing.h 2003-10-03 11:50:30.000000000 -0400 +@@ -0,0 +1,34 @@ ++/* High precision, low overhead timing functions. i386 version. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SPARC_HP_TIMING_H ++#define _SPARC_HP_TIMING_H 1 ++ ++#define hp_timing_t hp_timing_t__ ++#include ++#undef hp_timing_t ++ ++/* We don't use high-precision timers, but we might load an sparcv9 libpthread ++ which does. */ ++#define HP_TIMING_PAD 1 ++ ++/* sparcv9 uses 64bit values for the times. */ ++typedef unsigned long long int hp_timing_t; ++ ++#endif /* hp-timing.h */ --- glibc-2.4.orig/debian/patches/amd64/local-biarch.diff +++ glibc-2.4/debian/patches/amd64/local-biarch.diff @@ -0,0 +1,30 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Allow ldconfig to work on x86-64/i386 biarch systems + +--- libc/sysdeps/unix/sysv/linux/x86_64/dl-cache.h.orig 2006-03-27 00:08:28.219686388 +0200 ++++ libc/sysdeps/unix/sysv/linux/x86_64/dl-cache.h 2006-03-27 00:09:23.199203246 +0200 +@@ -22,4 +22,23 @@ + #define _dl_cache_check_flags(flags) \ + ((flags) == _DL_CACHE_DEFAULT_ID) + +-#include ++#define add_system_dir(dir) \ ++ do \ ++ { \ ++ size_t len = strlen (dir); \ ++ char path[len + 3]; \ ++ memcpy (path, dir, len + 1); \ ++ if (len >= 6 && ! memcmp (path + len - 6, "/lib32", 6)) \ ++ { \ ++ len -= 2; \ ++ path[len] = '\0'; \ ++ } \ ++ add_dir (path); \ ++ if (len >= 4 && ! memcmp (path + len - 4, "/lib", 4)) \ ++ { \ ++ memcpy (path + len, "32", 3); \ ++ add_dir (path); \ ++ } \ ++ } while (0) ++ ++#include --- glibc-2.4.orig/debian/patches/ubuntu/README +++ glibc-2.4/debian/patches/ubuntu/README @@ -0,0 +1,3 @@ +Patches in this directory are hacks done for Ubuntu directly. These might +include things like splitting out langpacks or launchpad/rosetta integration. + --- glibc-2.4.orig/debian/patches/ubuntu/local-altlocaledir.diff +++ glibc-2.4/debian/patches/ubuntu/local-altlocaledir.diff @@ -0,0 +1,35 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: support alternative gettext tree in +# DP: /usr/share/locale-langpack +# DP: Dpatch author: Martin Pitt +# DP: Patch author: Martin Pitt +# DP: Upstream status: Ubuntu-Specific +# DP: Date: 2004-12-06 20:44:10 CET + +--- glibc-2.3.5.orig/intl/l10nflist.c ++++ glibc-2.3.5/intl/l10nflist.c +@@ -267,7 +267,7 @@ _nl_make_l10nflist (l10nfile_list, dirli + + retval = (struct loaded_l10nfile *) + malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) +- * (1 << pop (mask)) ++ * 2 * (1 << pop (mask)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + return NULL; +@@ -310,6 +310,15 @@ _nl_make_l10nflist (l10nfile_list, dirli + language, territory, codeset, + normalized_codeset, modifier, filename, 1); + } ++ const char* langpack_dir = "/usr/share/locale-langpack"; ++ for (cnt = mask; cnt >= 0; --cnt) ++ if ((cnt & ~mask) == 0) ++ { ++ retval->successor[entries++] ++ = _nl_make_l10nflist (l10nfile_list, langpack_dir, strlen (langpack_dir) + 1, cnt, ++ language, territory, codeset, ++ normalized_codeset, modifier, filename, 1); ++ } + retval->successor[entries] = NULL; + + return retval; --- glibc-2.4.orig/debian/patches/ubuntu/local-dynamic-resolvconf.diff +++ glibc-2.4/debian/patches/ubuntu/local-dynamic-resolvconf.diff @@ -0,0 +1,39 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: allow dynamic long-running processes to +# DP: re-read a dynamically updated resolv.conf on the fly +# DP: Dpatch author: Adam Conrad +# DP: Patch author: Thorsten Kukuk +# DP: Upstream status: Ubuntu-Specific +# DP: Date: 2006-01-13 08:14:21 UTC + +--- glibc-2.3.6/resolv/res_libc.c 2004-08-13 15:44:46.000000000 +1000 ++++ glibc-2.3.6/resolv/res_libc.c 2006-01-13 19:10:28.000000000 +1100 +@@ -22,7 +22,7 @@ + #include + #include + #include +- ++#include + + /* The following bit is copied from res_data.c (where it is #ifdef'ed + out) since res_init() should go into libc.so but the rest of that +@@ -100,8 +100,17 @@ + int + __res_maybe_init (res_state resp, int preinit) + { +- if (resp->options & RES_INIT) { +- if (__res_initstamp != resp->_u._ext.initstamp) { ++ static time_t last_mtime; ++ struct stat statbuf; ++ int ret; ++ ++ ++ if (resp->options & RES_INIT) { ++ ret = stat (_PATH_RESCONF, &statbuf); ++ if (__res_initstamp != resp->_u._ext.initstamp ++ || (ret == 0) && (last_mtime != statbuf.st_mtime)) ++ { ++ last_mtime = statbuf.st_mtime; + if (resp->nscount > 0) { + __res_nclose (resp); + for (int ns = 0; ns < MAXNS; ns++) { --- glibc-2.4.orig/debian/patches/series +++ glibc-2.4/debian/patches/series @@ -0,0 +1,135 @@ +#localedata/locale-de_CH.diff -p1 +#localedata/locale-eo_EO.diff -p1 +#localedata/locale-no_NO.diff -p0 +#localedata/locale-eu_FR.diff -p0 +#locale/iso4217-RON.diff -p0 +#localedata/locale-ro_RO.diff -p0 +#localedata/locale-ku_TR.diff -p0 +#localedata/discard-dz_BT.diff # not needed when complex-collate is applied +#locale/fix-exhausted-memory.diff +#locale/check-unknown-symbols.diff # locales have to be fixed first +#locale/fix-LC_COLLATE-rules.diff +#locale/preprocessor-collate.diff +#locale/LC_IDENTIFICATION-optional-fields.diff +#locale/LC_COLLATE-keywords-ordering.diff +#locale/locale-print-LANGUAGE.diff +locale/fix-C-first_weekday.diff -p0 +#localedata/tl_PH-yesexpr.diff +#localedata/fo_FO-date_fmt.diff +#localedata/locales_CH.diff +#localedata/locales-fr.diff +#localedata/locales_GB.diff -p0 +#localedata/supported.diff +#localedata/locale-sa_IN.diff -p0 +#localedata/locale-en_DK.diff +#localedata/locale-hy_AM.diff +#localedata/locale-pl_PL.diff -p0 +#localedata/locale-wo_SN.diff -p0 +#localedata/new-catalan-locales.diff +#localedata/locale-csb_PL.diff +#localedata/locale-te_IN.diff +#localedata/locale-nr_ZA.diff +#localedata/locale-en_NZ.diff +#localedata/dz_BT-collation.diff +#localedata/update-ZA.diff +#localedata/locale-ia.diff +#localedata/locale-zh_TW.diff -p0 +#localedata/new-valencian-locale.diff +#localedata/tailor-iso14651_t1.diff -p0 +#localedata/fix-lang.diff +#localedata/fix-unknown-symbols.diff +#localedata/first_weekday.diff -p0 +#localedata/sort-UTF8-first.diff -p0 +#localedata/local-all-no-archive.diff + +#alpha/submitted-pic.diff -p0 # g: suspended +alpha/local-gcc4.1.diff -p0 +alpha/submitted-xstat.diff -p0 + +amd64/local-biarch.diff -p1 + +arm/cvs-gcc4-inline.diff -p0 +arm/local-dwarf2-buildfix.diff -p0 +arm/local-ioperm.diff -p0 +arm/local-no-hwcap.diff -p0 + +hppa/local-Rminkernel.diff -p0 +hppa/submitted-drop-utimes.diff -p1 +#hppa/local-remove-mallocdef.diff -p0 # g: this should be replaced by Carlos' new patch. +hppa/submitted-lt.diff -p1 +hppa/submitted-sysdeps.diff -p0 +hppa/local-gcc-4-profile.diff -p0 +hppa/submitted-iitlbp.diff -p0 +hppa/submitted-fenv-align.diff -p0 +hppa/submitted-fpu.diff -p0 +hppa/cvs-pie-relocs.diff -p0 +hppa/cvs-no-ldbl-128.diff -p0 +hppa/local-inlining.diff -p0 + +hurd-i386/cvs-machrules-make.diff -p1 +hurd-i386/local-enable-ldconfig.diff -p1 +hurd-i386/local-mlock.diff -p1 +hurd-i386/submitted-ioctl-decode-argument.diff -p0 +hurd-i386/submitted-sysvshm.diff -p1 + +i386/local-biarch.diff -p1 +i386/local-cmov.diff -p0 +i386/submitted-i686-timing.diff -p1 + +m68k/local-compat.diff -p0 +m68k/local-dwarf2-buildfix.diff -p0 +m68k/local-fpic.diff -p0 +#m68k/local-mathinline_h.diff -p1 +m68k/local-reloc.diff -p1 +m68k/submitted-gcc34-seccomment.diff -p0 + +mips/local-librt.diff -p0 +mips/local-lazy-eval.diff -p2 +mips/submitted-msq.diff -p0 + +powerpc/local-sysconf.diff -p1 + +sparc/local-fork.diff -p0 +sparc/local-linuxthreads.diff +sparc/local-sparcv8-target.diff -p0 +sparc/local-sysdep.diff -p0 +sparc/submitted-timing.diff -p1 + +#all/local-remove-manual.diff - In Ubuntu, we ship GFDL manuals +all/local-ru_RU.diff -p1 +all/local-pt_BR.diff -p1 +all/submitted-new-brf-encoding.diff -p0 + +any/cvs-getcwd_c.diff -p1 +any/local-__thread.diff -p0 +any/local-asserth-decls.diff -p0 +#any/local-base.diff -p0 # g: suspended +any/local-bashisms.diff +any/local-dl-execstack.diff -p0 +any/local-fhs-linux-paths.diff -p1 +any/local-forward-backward-collation.diff +any/local-gcc4-wcstol_l.diff -p1 +#any/local-globfree-clear.diff -p1 # g: suspended +any/local-ld-multiarch.diff -p1 +any/local-ldd.diff -p0 +any/local-ldso-disable-hwcap.diff -p0 +any/local-ldconfig.diff -p0 +any/local-ldconfig-tls.diff -p1 +any/local-libgcc-compat-main.diff -p0 +any/local-libgcc-compat-ports.diff -p0 +any/local-linuxthreads-sizefix.diff -p1 +any/local-localedef-fix-trampoline.diff -p1 +any/local-makeconfig.diff -p0 +any/local-nss-upgrade.diff -p1 +any/local-rtld.diff -p1 +any/local-tcsetaddr.diff -p1 +any/local-ttyname-devfs.diff -p0 +any/local-version-sanity.diff -p1 +any/local-stringh.diff -p0 +any/submitted-nis-netgrp.diff +any/submitted-strfmon.diff + +# Ubuntu-specific patches. These are things that we don't expect to wind up +# in Debian. +ubuntu/local-altlocaledir.diff -p1 +ubuntu/local-dynamic-resolvconf.diff -p1 --- glibc-2.4.orig/debian/patches/series.kfreebsd-amd64 +++ glibc-2.4/debian/patches/series.kfreebsd-amd64 @@ -0,0 +1,9 @@ +kfreebsd/local-ftw.diff -p0 +kfreebsd/local-pthread_at_fork.diff -p0 +kfreebsd/local-readdir_r.diff -p0 +kfreebsd/local-scripts.diff -p0 +kfreebsd/local-sys_queue_h.diff -p0 +kfreebsd/local-sysdeps.diff -p0 +kfreebsd/local-sysdeps-2.4.diff -p0 +kfreebsd/local-undef-glibc.diff -p0 +kfreebsd/submitted-thread_signals.diff -p0 --- glibc-2.4.orig/debian/patches/README +++ glibc-2.4/debian/patches/README @@ -0,0 +1,18 @@ +For the patch directory we follow this naming scheme: + + {ARCH|all|any}/{local|branch|cvs|submitted}-"Description" + +Branch means commited in the upstream branch. +CVS means committed in the upstream trunk. +Submitted means we're hopeful that it will go in. +Local means that it's not going upstream. + +The goal is to get all patches to "Branch". Patches should be split by +arch so that it's easy to send just the relevant bits to various +arch maintainers if needed. + +The difference between 'all' and 'any' is that the latter touches several +architecture dependent files (usually in the sysdeps directory), whereas +the former only modifies architecture independent files. Porters are +supposed to have an eye on their arch patches and on 'any'. + --- glibc-2.4.orig/debian/patches/series.kfreebsd-i386 +++ glibc-2.4/debian/patches/series.kfreebsd-i386 @@ -0,0 +1,9 @@ +kfreebsd/local-ftw.diff -p0 +kfreebsd/local-pthread_at_fork.diff -p0 +kfreebsd/local-readdir_r.diff -p0 +kfreebsd/local-scripts.diff -p0 +kfreebsd/local-sys_queue_h.diff -p0 +kfreebsd/local-sysdeps.diff -p0 +kfreebsd/local-sysdeps-2.4.diff -p0 +kfreebsd/local-undef-glibc.diff -p0 +kfreebsd/submitted-thread_signals.diff -p0 --- glibc-2.4.orig/debian/patches/series.arm-softfloat +++ glibc-2.4/debian/patches/series.arm-softfloat @@ -0,0 +1 @@ +arm/local-softfloat.diff -p0 --- glibc-2.4.orig/debian/local/etc_default/devpts +++ glibc-2.4/debian/local/etc_default/devpts @@ -0,0 +1,5 @@ +# GID of the `tty' group +TTYGRP=5 + +# Set to 600 to have `mesg n' be the default +TTYMODE=620 --- glibc-2.4.orig/debian/local/etc_init.d/glibc.sh +++ glibc-2.4/debian/local/etc_init.d/glibc.sh @@ -0,0 +1,18 @@ +#! /bin/sh -e +# +### BEGIN INIT INFO +# Provides: glibc +# Required-Start: +# Required-Stop: +# Default-Start: S +# Default-Stop: +### END INIT INFO +# +# This script is existed for detecting depreciated kernel version to +# check glibc incompatibility. + +if [ "`uname -s`" = Linux ]; then + # glibc kernel version check: KERNEL_VERSION_CHECK +fi + +: exit 0 --- glibc-2.4.orig/debian/local/usr_sbin/update-locale +++ glibc-2.4/debian/local/usr_sbin/update-locale @@ -0,0 +1,126 @@ +#! /usr/bin/perl -w + +use strict; +use Getopt::Long; + +my $progname = "update-locale"; +my $locale_file = "/etc/default/locale"; + +my $help = 0; +my $reset = 0; +# Kept for compatibility reasons +my $remove = 0; +my $no_checks = 0; + +GetOptions( + 'reset' => \$reset, + 'remove' => \$remove, + 'locale-file=s' => \$locale_file, + 'no-checks' => \$no_checks, + 'h|help' => \$help, +); + +sub usage +{ + my $rc = shift; + print STDERR "Usage: $progname [OPTIONS] [LANG=locale] [LC_NUMERIC=locale] ... +Options: + --help display this message and exit + --reset ignore variables defined in the locale file + --locale-file=FILE file containing locale variables + (Default: /etc/default/locale) + --no-checks do not perform sanity checks on locale variables +"; + exit $rc; +} + +$help && usage(0); + +# Process command-line arguments +my %arg = (); +my $content = ''; +my $mode = 0644; +if (-r $locale_file) +{ + # Keep file mode + $mode = (stat($locale_file))[2] & 07777; + # Read current values + open(IN, "<", $locale_file) + or die "$progname: Unable to read $locale_file: $!\n"; + while () + { + $content .= $_; + next unless m/^(\w+)=(.*)/; + $arg{$1} = $2 unless $reset; + } + close(IN) + or die "$progname: Unable to close $locale_file: $!\n"; + $content =~ s/^(\s*\w+=)/#$1/mg; + $content .= "\n" unless $content =~ m/\n$/s; +} +else +{ + $content = "# File generated by $progname\n"; +} +for (@ARGV) +{ + if (m/(.*?)=(.*)/) + { + $arg{$1} = $2; + } + else + { + delete $arg{$_}; + } +} + +my $env = ''; +my ($key, $value); +while (($key, $value) = each %arg) +{ + $env .= " $key=$value"; + $content =~ s/^#\s*$key=.*/$key=$value/m or + $content .= "$key=$value\n"; +} + +# Sanity checks +if ($no_checks == 0) +{ + # Check that this locale does exist + my $charset = `LANG= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION= LC_ALL= $env locale charmap 2>&1`; + die "*** $progname: Error: invalid locale settings: $env\n" + if ($charset =~ m/Cannot set/); + # If LANGUAGE is set, its first value must be compatible with LC_MESSAGES + if (defined $arg{LANGUAGE}) + { + my $language = $arg{LANGUAGE}; + $language =~ s/["']//g; + $language =~ s/[.:_].*//; + my $msg = ''; + my $var = ''; + for (qw(LANG LC_MESSAGES LC_ALL)) + { + if (defined $arg{$_}) + { + $var = $_; + $msg = $arg{$_}; + } + } + $msg =~ s/["']//g; + die "*** $progname: Error: LANGUAGE ($arg{LANGUAGE}) is not compatible with $var ($msg)\n" + if ($msg !~ m/^$language/ && $var ne '' + && $msg ne 'C' && $msg ne 'POSIX' + && $language ne 'C' && $language ne 'POSIX'); + } +} + +# Write locale file +open(OUT, ">", $locale_file) + or die "$progname: Unable to write $locale_file: $!\n"; +print OUT $content; +close(OUT) + or die "$progname: Unable to close $locale_file: $!\n"; +chmod($mode, $locale_file) + or die "$progname: Unable to chmod $locale_file: $!\n"; + +1; --- glibc-2.4.orig/debian/local/usr_sbin/validlocale +++ glibc-2.4/debian/local/usr_sbin/validlocale @@ -0,0 +1,75 @@ +#!/usr/bin/perl -w +# +# Author: Petter Reinholdtsen +# Date: 2002-02-23 +# +# Test if the locale given as argument is a valid locale. If it +# is not, print on stdout the string to add to /etc/locale.gen to make +# locale-gen generate the locale (if it exists at all). + +use POSIX qw(setlocale LC_ALL); + +my $debug = 0; + +my $defaultcharset = $ENV{"DEFAULTCHARSET"} || "ISO-8859-1"; + +my $supportedlist = "/usr/share/i18n/SUPPORTED"; + +unless (defined $ARGV[0]) { + usage(); + exit 1; +} + +my $LANG = $ARGV[0]; + +my $loc = setlocale(LC_ALL, $LANG); +if ( ! $loc) { + print STDERR "locale '$LANG' not available\n"; + + my ($locale) = $LANG =~ m/^([^.@]+)/; + my ($charset) = $LANG =~ m/^[^.]+\.([^@]+)/; + my ($modifier) = $LANG =~ m/(@.+)$/; + + $modifier = "" unless defined $modifier; + + # Hm, if charset is missing, how to we pick the correct one to + # use? Fetching the value from /usr/share/i18n/SUPPORTED should + # work on Debian. + my $codeset = ""; + if (defined $charset) { + $codeset = '.' . $charset; + } else { + $charset = get_default_charset("$locale$modifier"); + } + + # print "L: $locale C: $charset M: $modifier\n"; + print "$locale$codeset$modifier $charset\n"; + + exit 1; +} else { + print STDERR "locale '$LANG' valid and available\n"; + exit 0; +} + +sub usage { + print "Usage: $0 \n" +} + +sub get_default_charset { + my ($locale) = @_; + my ($l, $c); + open(SUPPORTED, "< $supportedlist") || die "Unable to open $supportedlist"; + while () { + chomp; + ($l, $c) = split(/\s+/); + print "Checking '$l' '$c' != '$locale'\n" if $debug; + last if ($l eq $locale); + } + close(SUPPORTED); + + if ($l eq $locale) { + return $c; + } else { + return $defaultcharset; + } +} --- glibc-2.4.orig/debian/local/usr_sbin/tzconfig +++ glibc-2.4/debian/local/usr_sbin/tzconfig @@ -0,0 +1,121 @@ +#! /bin/sh + +# Copyright (C) 2001 Software in the Public Interest +# +# Licensed under the GPL v2 +# + +show_continents() { + +cat < $TIMEZONES ) +valid=no +while [ $valid = no ]; do + show_continents + echo -n "Number: " ; read area + case $area in + 1) continent=Africa ; valid=yes ;; + 2) continent=America ; valid=yes ;; + 3) continent=US ; valid=yes ;; + 4) continent=Canada ; valid=yes ;; + 5) continent=Asia ; valid=yes ;; + 6) continent=Atlantic ; valid=yes ;; + 7) continent=Australia ; valid=yes ;; + 8) continent=Europe ; valid=yes ;; + 9) continent=Indian ; valid=yes ;; + 10) continent=Pacific ; valid=yes ;; + 11) continent=SystemV ; valid=yes ;; + 12) continent=Etc ; valid=yes ;; + esac +done + +if [ -x /usr/bin/fmt ]; then fmt_bin=/usr/bin/fmt +else fmt_bin=/bin/more ; fi + +valid=no +zone="" + +while [ $valid = no ]; do + if [ -n "$zone" ]; then + # We accept the zone if either it is an unambiguous prefix, or + # it is a complete zone name. + number=`grep -i -c "^$continent/$zone" $TIMEZONES` + if [ $number -eq 1 ]; then + timezone=`grep -i "^$continent/$zone" $TIMEZONES` + else + timezone=`grep -i -s "^$continent/$zone"'$' $TIMEZONES` + fi + + if [ -n "$timezone" ]; then + zone_info + echo "Your default time zone is set to '$timezone'.$extra_info" + valid=yes + break + fi + fi + echo + grep -i "^$continent/$zone" $TIMEZONES | cut -d/ -f2- | $fmt_bin + echo + echo "Please enter the name of one of these cities or zones" + echo "You just need to type enough letters to resolve ambiguities" + echo "Press Enter to view all of them again" + echo -n "Name: [$zone] " ; read zone +done + +umask 022 +echo $timezone > /etc/timezone +rm -f /etc/localtime && cp -f /usr/share/zoneinfo/$timezone /etc/localtime +trap 'rm -f $TIMEZONES' 0 1 2 3 13 15 --- glibc-2.4.orig/debian/local/usr_sbin/locale-gen +++ glibc-2.4/debian/local/usr_sbin/locale-gen @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +LOCALEGEN=/etc/locale.gen +LOCALES=/usr/share/i18n/locales +if [ -n "$POSIXLY_CORRECT" ]; then + unset POSIXLY_CORRECT +fi + + +[ -f $LOCALEGEN ] || exit 0; +[ -s $LOCALEGEN ] || exit 0; + +KEEP= +if [ "$1" = '--keep-existing' ]; then + KEEP=1 +fi + +if [ -z "$KEEP" ]; then + # Remove all old locale dir and locale-archive before generating new + # locale data. + rm -rf /usr/lib/locale/* || true +fi + +umask 022 + +is_entry_ok() { + if [ -n "$locale" -a -n "$charset" ] ; then + true + else + echo "error: Bad entry '$locale $charset'" + false + fi +} + +echo "Generating locales (this might take a while)..." +while read locale charset; do \ + case $locale in \#*) continue;; "") continue;; esac; \ + is_entry_ok || continue + if [ "$KEEP" ] && PERL_BADLANG=0 perl -MPOSIX -e \ + 'exit 1 unless setlocale(LC_ALL, $ARGV[0])' "$locale"; then + continue + fi + echo -n " `echo $locale | sed 's/\([^.\@]*\).*/\1/'`"; \ + echo -n ".$charset"; \ + echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`; \ + echo -n '...'; \ + if [ -f $LOCALES/$locale ]; then input=$locale; else \ + input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; fi; \ + localedef -i $input -c -f $charset -A /usr/share/locale/locale.alias $locale || :; \ + echo ' done'; \ +done < $LOCALEGEN +echo "Generation complete." --- glibc-2.4.orig/debian/local/manpages/fr/validlocale.fr.8 +++ glibc-2.4/debian/local/manpages/fr/validlocale.fr.8 @@ -0,0 +1,57 @@ +.\" This file was generated with po4a. Translate the source file. +.\" +.TH validlocale 8 0.1 "Petter Reinholdtsen" "" +.SH NOM +.LP +validlocale \- vérifie si un ensemble donné de paramètres régionaux est +disponible +.SH SYNTAXE +.LP +validlocale <\fIlocale\fP> +.SH DESCRIPTION +.LP +Teste si l'ensemble de paramètres régionaux donné en argument est +valable. S'il ne l'est pas, affiche sur la sortie standard la chaîne de +caractères à ajouter à /etc/locale.gen afin de permettre à locale\-gen de +générer l'ensemble de paramètres (s'il existe). +.SH FICHIERS +.LP +\fI/us/sbin/validlocale\fP +.br +\fI/usr/share/i18n/SUPPORTED\fP +.SH "VARIABLES D'ENVIRONNEMENT" +.LP +.TP +\fBDEFAULTCHARSET\fP +Indique quel encodage de caractères doit être supposé si la locale donnée +n'est pas dans la liste des locales gérées. +.SH EXEMPLES +.LP +Si vous indiquez comme paramètre une locale valabe, vous recevrez ceci sur +la sortie d'erreur +.LP +.IP +% validlocale C +.br +locale «\ C\ » valide et disponible +.LP +Lorsqu'une locale non valable (non créée ou inexistante) est indiquée, vous +recevrez un message sur la sortie d'erreur disant qu'il s'agit d'une locale +non valable et une chaîne de caractères sur la sortie standard à ajouter à +/etc/locale.gen pour que la locale soit créée\ : +.LP +.IP +% validlocale de_AU@euro +.br +locale «\ de_AT@euro\ » non disponible +.br +de_AT@euro ISO\-8859\-15 +.SH AUTEURS +.LP +Petter·Reinholdtsen· + +.SH "TRADUCTION" +Clément Stenac, 2005. Veuillez signaler toute erreur à +.SH "VOIR AUSSI" +.LP +locale\-gen(8), localedef(1), locale(1) --- glibc-2.4.orig/debian/local/manpages/fr/addendum.fr +++ glibc-2.4/debian/local/manpages/fr/addendum.fr @@ -0,0 +1,4 @@ +PO4A-HEADER:mode=after;position=AUTEUR;beginboundary=\.SH + +.SH "TRADUCTION" +Clément Stenac, 2005. Veuillez signaler toute erreur à --- glibc-2.4.orig/debian/local/manpages/pl/validlocale.pl.8 +++ glibc-2.4/debian/local/manpages/pl/validlocale.pl.8 @@ -0,0 +1,52 @@ +.\" This file was generated with po4a. Translate the source file. +.\" +.TH validlocale 8 0.1 "Petter Reinholdtsen" "" +.SH NAZWA +.LP +validlocale \- Sprawdza, czy dostêpne jest dane locale +.SH SK£ADNIA +.LP +validlocale <\fIlocale\fP> +.SH OPIS +.LP +Sprawdza, czy locale podane jako argument jest poprawne. Je¶li nie jest, +wypisuje na stdout napis, jaki nale¿y dodaæ do /etc/locale.gen, aby +polecenie locale\-gen wygenerowa³o dane locale (o ile w ogóle ono istnieje). +.SH PLIKI +.LP +\fI/usr/sbin/validlocale\fP +.br +\fI/usr/share/i18n/SUPPORTED\fP +.SH "ZMIENNE ¦RODOWISKOWE" +.LP +.TP +\fBDEFAULTCHARSET\fP +Jakiego zestawu znaków u¿yæ, je¶li podanego locale nie ma w li¶cie +obs³ugiwanych. +.SH PRZYK£ADY +.LP +Je¶li jako parametr podano nazwê poprawnego locale, wypisuje na stderr +odpowiedni napis: +.LP +.IP +% validlocale C +.br +locale 'C' valid and available +.LP +Je¶li podano nazwê nieprawid³owego locale (niewygenerowanego lub po prostu +nieistniej±cego), wypisuje na stderr napis mówi±cy o tym, ¿e nie jest to +prawid³owe locale, oraz \- na stdout \- napis, który nale¿y dodaæ do +/etc/locale.gen, aby móc wygenerowaæ dane locale: +.LP +.IP +% validlocale de_AU@euro +.br +locale 'de_AT@euro' not available +.br +de_AT@euro ISO\-8859\-15 +.SH AUTOR +.LP +Petter Reinholdtsen +.SH "PATRZ TAK¯E" +.LP +locale\-gen(8), localedef(1), locale(1) --- glibc-2.4.orig/debian/local/manpages/po/pt_BR.po +++ glibc-2.4/debian/local/manpages/po/pt_BR.po @@ -0,0 +1,503 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) 2005 Free Software Foundation, Inc. +# Brazilian , 2005. +# , fuzzy +# +# +msgid "" +msgstr "" +"Project-Id-Version: base-config man\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-10-24 21:25-0200\n" +"Last-Translator: Brazilian \n" +"Language-Team: Brazilian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "validlocale" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "0.1" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "Petter Reinholdtsen" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "NOME" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "validlocale - Testa se uma dada locale está disponível" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "SINTAXE" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "validlocale EIE" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "DESCRIÇÃO" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" +"Testa se a locale passada como argumento é válida. Se não for, imprime em " +"stdout o texto a ser adicionado em /etc/locale.gen para fazer locale-gen " +"gerar a locale (se ela existir)." + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "ARQUIVOS" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "I" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "I" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "VARIÁVEIS DE AMBIENTE" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" +"Qual conjunto de caracteres assumir se a locale dada estiver faltando na " +"lista de locales suportadas." + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "EXEMPLOS" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" +"Se você der uma locale válida como parâmetro, a saída será um texto " +"especificando isto em stderr:" + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "% validlocale C" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "locale·'C'·é válida e está disponível" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" +"Quando é dado uma inválida (não gerada ou não existente), a saída será um " +"texto em stderr dizendo que a locale é inválida, e um texto para stdout que " +"deve ser adicionado a /etc/locale.gen para ter esta locale gerada:" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "% validlocale de_AU@euro" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "locale 'de_AT@euro' não está disponível" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "de_AT@euro ISO-8859-15" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "AUTORES" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "Petter Reinholdtsen Epere@hungry.comE" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "VEJA TAMBÉM" + +# type: Plain text +#: validlocale.8:49 +#, fuzzy +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "locale-gen(8), localedef(1), locale(1), base-config(8)" + +# type: TH +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - Configuração do sistema base Debian" + +# type: SH +#~ msgid "SYNOPSIS" +#~ msgstr "SINOPSE" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B é o programa que foi executado quando você reiniciou a " +#~ "primeira vez em seu novo sistema debian instalado. Ele o guia através das " +#~ "configurações de seu sistema e baixando softwares adicionais, indo além. " +#~ "O programa pode ser executado posteriormente a qualquer momento para guiá-" +#~ "lo essencialmente através do mesmo processo novamente." + +# type: SH +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLEMENTAÇÂO" + +# type: Plain text +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B gera um menu de opções a partir do conteúdo de B, e dos modelos debconf." + +# type: Plain text +#~ msgid "" +#~ "The .mnu files in /usr/lib/base-config/ control whether the menu item " +#~ "appears only on new installs (Only-New: true), whether debconf can " +#~ "already be running when the item is run (Debconf: true), a numeric Order " +#~ "controls placement in the menu. If a .mnu file contains \"Exit-Menu: true" +#~ "\", then base-config will terminate after running that menu item. " +#~ "Finally, a \"Changes-Menu: true\" line will make base-config rebuild the " +#~ "menu after running the menu item." +#~ msgstr "" +#~ "Os arquivos .mnu em /usr/lib/base-config/ controlam quando um item de " +#~ "menu aparece apenas em novas instalações (Only-New: true), ou o debconf " +#~ "pode já estar sendo executado quando o item é executado (Debconf: true), " +#~ "um número Order controla a posição no menu. Se um arquivo .mnu contém " +#~ "\"Exit-Menu: true\", então base-config será terminado após executar esse " +#~ "item do menu. Finalmente a linha \"Changes-Menu: true\" fará com que " +#~ "base-config reconstrua o menu após executar este item." + +# type: Plain text +#~ msgid "" +#~ "The .tst files in /usr/lib/base-config/ are run when base-config builds " +#~ "the menu and must return true for that menu item to appear on the menu." +#~ msgstr "" +#~ "Os arquivos .tst em /usr/lib/base-config/ são executados quando base-" +#~ "config constrói o menu e devem retornar verdadeiro para que apareçam no " +#~ "menu." + +# type: Plain text +#~ msgid "" +#~ "The menu items are taken from debconf, by looking for items in the " +#~ "debconf database named base-config/menu/whatever." +#~ msgstr "" +#~ "Os itens do menu são pegos do debconf olhando para itens na base de dados " +#~ "do debconf chamada de base-config/menu/qualquercoisa" + +# type: Plain text +#~ msgid "" +#~ "When a menu item is selected, the corresponding program, in /usr/lib/base-" +#~ "config is run. If this is a fresh install onto a new debian system, the " +#~ "program receives \"new\" as its first argument." +#~ msgstr "" +#~ "Quando um item do menu é selecionado, o programa correspondente, em /usr/" +#~ "lib/base-config é executado. Se esta é uma instalação novo em um novo " +#~ "sistema debian, o programa recebe \"new\" como seu primeiro argumento." + +# type: Plain text +#~ msgid "" +#~ "B checks the return codes of each of the programs. If a " +#~ "program returns nonzero, the main menu is displayed (this may involve " +#~ "lowering the debconf priority)." +#~ msgstr "" +#~ "B checa os códigos de retorno de cada um dos programas. Se " +#~ "um programa retorna não-zero, o menu principal é exibido (isso pode " +#~ "envolver diminuir a prioridade do debconf)." + +# type: Plain text +#~ msgid "" +#~ "Generally the user is advanced down the menu from item to item as each " +#~ "succeeds. If a menu item needs to jump back to a previous item in the " +#~ "menu, or skip over a subsequent item, it can write the name of the next " +#~ "menu item to show to the file \"jump-to\" in the current directory." +#~ msgstr "" +#~ "Geralmente o usuário avança descendo o menu item a item à medida que cada " +#~ "um é completado com sucesso. Se um item do menu precisa voltar para um " +#~ "item anterior ou pular algum item subseqüente, ele pode escrever o nome " +#~ "do próximo item do menu para mostrar ao arquivo \"jump-to\" no diretório " +#~ "atual." + +# type: Plain text +#~ msgid "" +#~ "Every base-config run is logged to B. B contains timing information to go with the log. " +#~ "This allows replays of base-config runs using the B(1) utility." +#~ msgstr "" +#~ "Cada execução do base-config é registrada em B. B contém as informações de tempo que " +#~ "vão juntamente com o registro. Isso permite repetições da execução do " +#~ "base-config usando o utilitário B(1)." + +# type: Plain text +#~ msgid "" +#~ "B, if it exists, is used by B " +#~ "on new installs to get values from the debian-installer first stage " +#~ "install." +#~ msgstr "" +#~ "B, se o arquivo existe, é usado pelo B em novas instalações para obter valores do primeiroestágio de " +#~ "instalação do debian-installer." + +# type: Plain text +#~ msgid "" +#~ "Other packages can drop files into B, and add menu " +#~ "titles in debconf, and they will be added to the menu. It is very " +#~ "strongly encouraged that any such programs communicate with the user " +#~ "entirely via debconf, so that the base configuration maintains a " +#~ "consistent and professional look." +#~ msgstr "" +#~ "Outros pacotes podem colocar arquivos em B, e " +#~ "adicionar títulos de menu no debconf, que serão adicionados ao menu. É " +#~ "fortemente encorajado que qualquer programa desses comunique-se com o " +#~ "usuário inteiramente via debconf, de forma que a configuração da base " +#~ "mantenha a consistência e o visual profissional." + +# type: Plain text +#~ msgid "" +#~ "Another useful thing for custom distributions is /usr/share/base-config/" +#~ "debconf-seed. If that directory exists, every file in it will be loaded " +#~ "into the debconf database using B(1)" +#~ msgstr "" +#~ "Outra coisa útil para distribuições customizadas é /usr/share/base-config/" +#~ "debconf-seed. Se esse diretório existir, cada arquivo nele será carregado " +#~ "no banco de dados do debconf usando B(1)" + +# type: Plain text +#~ msgid "" +#~ "If the file /var/log/installer/debconf-seed is created by the debian-" +#~ "installer, it will also be loaded into the debconf database." +#~ msgstr "" +#~ "Se o arquivo /var/log/installer/debconf-seed é criado pelo debian-" +#~ "installer, ele também será carregado no banco de dados do debconf." + +# type: SH +#~ msgid "ENVIRONMENT" +#~ msgstr "AMBIENTE" + +# type: Plain text +#~ msgid "" +#~ "The following environment variables influence B. These " +#~ "variables may be set at run time, or for new installs, may be passed to " +#~ "the kernel at the B(8) (or other bootloader) command line. Consult " +#~ "your boot loader's documentation for details. For example, lilo can be " +#~ "booted with something like \"linux DEBIAN_FRONTEND=readline\"." +#~ msgstr "" +#~ "As seguintes variáveis de ambiente influenciam B. Essas " +#~ "variáveis podem ser definidas em tempo de execução, ou para novas " +#~ "instalações, podem ser passadas ao kernel na linha de comando do B" +#~ "(8) (ou outro gerenciador de boot). Consulte a documentação do seu " +#~ "gerenciador de boot para detalhes. Por exemplo, lilo pode ser bootado com " +#~ "algo como: \"linux DEBIAN_FRONTEND=readline\"." + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "Control various things about B(7)" +#~ msgstr "Controla várias coisas sobre o B(7)" + +# type: SH +#~ msgid "AUTHOR" +#~ msgstr "AUTOR" + +# type: Plain text +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: TH +#~ msgid "TERMWRAP" +#~ msgstr "TERMWRAP" + +# type: Plain text +#~ msgid "termwrap - terminal wrapper" +#~ msgstr "termwrap - wrapper de terminal" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is used to execute B(8) on newly installed " +#~ "Debian systems. It examines the environment, taking note of locale " +#~ "settings, and what type of console is available, and runs an appropriate " +#~ "terminal program. For example, at the Linux console and in a Japanese " +#~ "locale, it runs jfterm. The specified command is run inside the terminal " +#~ "program (if any)." +#~ msgstr "" +#~ "B é usado para executar B(8) em novos sistemas " +#~ "Debian instalados. Ele examina o ambiente, tomando nota das configurações " +#~ "de localização, qual tipo de console está disponível e executa um " +#~ "programa de terminal apropriado. Por exemplo, no console Linux e em uma " +#~ "localização Japonesa, ele executa jfterm. O comando especificado é " +#~ "executado dentro do programa de terminal (caso exista algum)." + +# type: SH +#~ msgid "OPTIONS" +#~ msgstr "OPÇÕES" + +# type: TP +#~ msgid "I<-nnt>" +#~ msgstr "I<-nnt>" + +# type: Plain text +#~ msgid "Don't run another terminal." +#~ msgstr "Não execute outro terminal." + +# type: TH +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - adiciona fontes de download para o apt" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B é um programa interativo que simplifica a adição de fontes " +#~ "no arquivo sources.list do apt. Ele conhece todos os principais espelhos " +#~ "(mirrors) debian e pode ajudá-lo a selecionar um. Pode até mesmo usar o " +#~ "B(8) para vasculhar CDs." + +# type: TP +#~ msgid "I" +#~ msgstr "I" + +# type: Plain text +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Por padrão nenhuma consulta de CDs é feita. Passar \"probe\" como o " +#~ "primeiro argumento para este programa fará com que o mesmo procure por um " +#~ "CD no drive em sua inicialização e adicione-o ao sources.list. Isto é " +#~ "útil em instalações iniciais do debian para minimizar a interação com o " +#~ "usuário." + +# type: TP +#~ msgid "I<-N>" +#~ msgstr "I<-N>" + +# type: Plain text +#~ msgid "" +#~ "Indicates that this is a new install. This parameter allows apt-setup to " +#~ "run in noninteractive mode if its debconf questions have been preseeded." +#~ msgstr "" +#~ "Indica que esta é uma nova instalação. Este parâmetro permite ao apt-" +#~ "setup executar no modo não-interativo se suas perguntas do debconf foram " +#~ "previamente respondidas." + +# type: Plain text +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: TH +#, fuzzy +#~ msgid "TZSETUP" +#~ msgstr "APT-SETUP" + +# type: SH +#, fuzzy +#~ msgid "DERIVATION" +#~ msgstr "DESCRIÇÃO" --- glibc-2.4.orig/debian/local/manpages/po/es.po +++ glibc-2.4/debian/local/manpages/po/es.po @@ -0,0 +1,672 @@ +msgid "" +msgstr "" +"Project-Id-Version: 2.74\n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-11-30 18:58+0100\n" +"Last-Translator: Rubén Porras \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "validlocale" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "0.1" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "Petter Reinholdtsen" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "NOMBRE" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "" +"validlocale - Comprueba si la opción de localización dada está disponible" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "SINTAXIS" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "validlocale EIE" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "DESCRIPCIÓN" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" +"Comprueba si la opción de localización dada como argumento es válida. Si no " +"lo es muestra en la stdout (salida estándar) la cadena de caracteres que se " +"necesita añadir a /etc/locale.gen para que locale-gen genere esa opción de " +"localización (si es que existe)." + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "FICHEROS" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "I" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "I" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "VARIABLES DE ENTORNO" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" +"El juego de caracteres que asume en caso de que la opción de localización " +"dada no esté entre la lista de opciones de localización soportadas." + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "EJEMPLOS" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" +"Si usted proporciona una opción de localización válida como parámetro, " +"muestra una cadena de caracteres especificándolo en stderr (salida de " +"errores estándar):" + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "% validlocale C" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "locale 'C' valid and available" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" +"Cuando se proporcione una inválida (no ha sido generada o no existe), " +"muestra una cadena de caracteres en stderr diciendo que es inválida, y otra " +"a stdout con la cadena de caracteres que se necesita añadir a /etc/locale." +"gen para que se genere:" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "% validlocale de_AU@euro" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "locale 'de_AT@euro' not available" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "de_AT@euro ISO-8859-15" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "AUTORES" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "Petter Reinholdtsen Epere@hungry.comE" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "VÉASE ADEMÁS" + +# type: Plain text +#: validlocale.8:49 +#, fuzzy +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "locale-gen(8), localedef(1), locale(1), base-config(8)" + +# type: TH +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - configuración del sistema base de Debian" + +# type: SH +#~ msgid "SYNOPSIS" +#~ msgstr "SINOPSIS" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B es el programa que se ejecutó la primera vez que arrancó " +#~ "en su sistema Debian recién instalado. base-config termina de configurar " +#~ "el sistema, descarga programas adicionales... El programa puede " +#~ "ejecutarse en cualquier momento posterior para realizar el mismo proceso " +#~ "de nuevo." + +# type: SH +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLEMENTACIÓN" + +# type: Plain text +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B genera un menú de elecciones con los contenidos de B, y de las plantillas de debconf." + +# type: Plain text +#~ msgid "" +#~ "The .mnu files in /usr/lib/base-config/ control whether the menu item " +#~ "appears only on new installs (Only-New: true), whether debconf can " +#~ "already be running when the item is run (Debconf: true), a numeric Order " +#~ "controls placement in the menu. If a .mnu file contains \"Exit-Menu: true" +#~ "\", then base-config will terminate after running that menu item. " +#~ "Finally, a \"Changes-Menu: true\" line will make base-config rebuild the " +#~ "menu after running the menu item." +#~ msgstr "" +#~ "Los ficheros .mnu de /usr/lib/base-config/ controlan si el elemento del " +#~ "menú aparece sólo en nuevas instalaciones (\"Only-New: true\"), si " +#~ "debconf puede estar siendo ejecutado en el momento en el que se ejecute " +#~ "el elemento (Debconf: true). Una opción numérica \"Order\" controla el " +#~ "lugar en el menú. Si el fichero .mnu contiene \"Exit-Menu:true\", base-" +#~ "config terminará después de ejectuar ese elemento del menú. Finalmente, " +#~ "una línea \"Changes-Menu: true\" hará que base-config reconstruya el menú " +#~ "después de ejecutar el elemento del menú." + +# type: Plain text +#~ msgid "" +#~ "The .tst files in /usr/lib/base-config/ are run when base-config builds " +#~ "the menu and must return true for that menu item to appear on the menu." +#~ msgstr "" +#~ "Los ficheros .tst de /usr/lib/base-config/ se ejecutan cuando base-config " +#~ "construye el menú y debe devolver \"true\" para que ese elemento aparezca " +#~ "en el menú." + +# type: Plain text +#~ msgid "" +#~ "The menu items are taken from debconf, by looking for items in the " +#~ "debconf database named base-config/menu/whatever." +#~ msgstr "" +#~ "Los elementos del menú se toman de debconf, buscando los elementos en la " +#~ "base de datos de debconf llamada base-config/menu/loquesea." + +# type: Plain text +#~ msgid "" +#~ "When a menu item is selected, the corresponding program, in /usr/lib/base-" +#~ "config is run. If this is a fresh install onto a new debian system, the " +#~ "program receives \"new\" as its first argument." +#~ msgstr "" +#~ "Cuando se selecciona elemento del menú, se ejecuta el programa " +#~ "correspondiente en /usr/lib/base-config. Si ésta es la primera " +#~ "instalación en un sistema muevo, entonces el programa recibe \"new\" como " +#~ "su primer argumento." + +# type: Plain text +#~ msgid "" +#~ "B checks the return codes of each of the programs. If a " +#~ "program returns nonzero, the main menu is displayed (this may involve " +#~ "lowering the debconf priority)." +#~ msgstr "" +#~ "B comprueba los valores devueltos por cada programa. Si un " +#~ "programa devuelve un valor distinto de cero, se muestra el menú principal " +#~ "(puede que esto implique bajar la prioridad de debconf)." + +# type: Plain text +#~ msgid "" +#~ "Generally the user is advanced down the menu from item to item as each " +#~ "succeeds. If a menu item needs to jump back to a previous item in the " +#~ "menu, or skip over a subsequent item, it can write the name of the next " +#~ "menu item to show to the file \"jump-to\" in the current directory." +#~ msgstr "" +#~ "Normalmente el usuario es guiado de arriba abajo de un elemento del menú " +#~ "en otro a medida que cada uno de ellos se completa con éxito. Si un " +#~ "elemento del menú necesita volver a otro anterior o saltar alguno de los " +#~ "posteriores, puede hacerlo escribiendo el nombre del siguiente elemento " +#~ "del menú al que saltar en el fichero \"jump-to\" en el directorio actual." + +# type: Plain text +#~ msgid "" +#~ "Every base-config run is logged to B. B contains timing information to go with the log. " +#~ "This allows replays of base-config runs using the B(1) utility." +#~ msgstr "" +#~ "Cualquier ejecución de base-config se registra en B. B contiene información de los " +#~ "tiempos que van con el registro. Esto permite volver a ver la ejecución " +#~ "de base-config usando la utilidad B(1)B<.>" + +# type: Plain text +#~ msgid "" +#~ "B, if it exists, is used by B " +#~ "on new installs to get values from the debian-installer first stage " +#~ "install." +#~ msgstr "" +#~ "Si existe B, B lo usa en nuevas " +#~ "instalaciones para obtener valores de la primera etapa de instalación del " +#~ "\"debian-installer\"." + +# type: Plain text +#~ msgid "" +#~ "Other packages can drop files into B, and add menu " +#~ "titles in debconf, and they will be added to the menu. It is very " +#~ "strongly encouraged that any such programs communicate with the user " +#~ "entirely via debconf, so that the base configuration maintains a " +#~ "consistent and professional look." +#~ msgstr "" +#~ "Otros paquetes pueden dejar ficheros en B, y " +#~ "añadir títulos de menú en debconf, y serán añadidos al menú. Es altamente " +#~ "recomendable que cualquiera de estos programas se comunique con el " +#~ "usuario totalmente a través de debconf, de esta forma, la configuración " +#~ "mantiene un aspecto consistente y profesional." + +# type: Plain text +#~ msgid "" +#~ "Another useful thing for custom distributions is /usr/share/base-config/" +#~ "debconf-seed. If that directory exists, every file in it will be loaded " +#~ "into the debconf database using B(1)" +#~ msgstr "" +#~ "Otra cosa útil para las distribuciones personalizadas es /usr/share/base-" +#~ "config/debconf-seed. Si ese directorio existe, todos los ficheros dentro " +#~ "de él se cargarán en la base de datos de debconf usando B(1)" + +# type: Plain text +#~ msgid "" +#~ "If the file /var/log/installer/debconf-seed is created by the debian-" +#~ "installer, it will also be loaded into the debconf database." +#~ msgstr "" +#~ "Si debian-installer crea el fichero /var/log/installer/debconf-seed, " +#~ "también se incorporará a la base de datos de debconf." + +# type: SH +#~ msgid "ENVIRONMENT" +#~ msgstr "ENTORNO" + +# type: Plain text +#~ msgid "" +#~ "The following environment variables influence B. These " +#~ "variables may be set at run time, or for new installs, may be passed to " +#~ "the kernel at the B(8) (or other bootloader) command line. Consult " +#~ "your boot loader's documentation for details. For example, lilo can be " +#~ "booted with something like \"linux DEBIAN_FRONTEND=readline\"." +#~ msgstr "" +#~ "Las siguientes variables de entorno influencian a B. Estas " +#~ "variables pueden establecerse en tiempo de ejecución, o para nuevas " +#~ "instalaciones, puede pasarse al núcleo en la línea de órdenes de B" +#~ "(8) (u otro gestor de arranque). Consulte la documentación de su gestor " +#~ "de arranque para más detalles. Por ejemplo, lilo puede arrancarse con " +#~ "algo como \"linux DEBIAN_FRONTEND=readline\"." + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "Control various things about B(7)" +#~ msgstr "Controlan varias cosas de B(7)" + +# type: SH +#~ msgid "AUTHOR" +#~ msgstr "AUTOR" + +# type: Plain text +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoey@debian.orgE" + +# type: TH +#~ msgid "TERMWRAP" +#~ msgstr "TERMWRAP" + +# type: Plain text +#~ msgid "termwrap - terminal wrapper" +#~ msgstr "termwrap - envuelve un terminal" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is used to execute B(8) on newly installed " +#~ "Debian systems. It examines the environment, taking note of locale " +#~ "settings, and what type of console is available, and runs an appropriate " +#~ "terminal program. For example, at the Linux console and in a Japanese " +#~ "locale, it runs jfterm. The specified command is run inside the terminal " +#~ "program (if any)." +#~ msgstr "" +#~ "B se usa para ejecutar B(8) en sistemas Debian " +#~ "recién instalados. Examina el entorno, toma nota de la configuración de " +#~ "las opciones de localización y de que tipo de terminal está disponible, " +#~ "para luego ejecutar un programa de terminal apropiado. Por ejemplo, en " +#~ "una consola de Linux con configuración de localización japonesa ejecutará " +#~ "jfterm. La orden especificada se ejecuta dentro del programa de terminal " +#~ "(si hay alguno)." + +# type: SH +#~ msgid "OPTIONS" +#~ msgstr "OPCIONES" + +# type: TP +#~ msgid "I<-nnt>" +#~ msgstr "I<-nnt>" + +# type: Plain text +#~ msgid "Don't run another terminal." +#~ msgstr "No ejecutar otro terminal." + +# type: TH +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - añade fuentes para las descargas de apt" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B es un programa interactivo que simplifica el proceso de " +#~ "añadir fuentes al sources.list de apt. Conoce las principales réplicas " +#~ "Debian y puede ayudarle a seleccionar una. Incluso puede usar B" +#~ "(8) para analizar CD's." + +# type: TP +#~ msgid "I" +#~ msgstr "I" + +# type: Plain text +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Por omisión no se busca ningún CD. Si se pasa \"probe\" como primer " +#~ "argumento el programa mirará al arrancar si hay un CD en la unidad y lo " +#~ "añadirá al sources.list. Esto es útil en instalaciones iniciales de " +#~ "Debian, para minimizar la interacción con el usuario." + +# type: TP +#~ msgid "I<-N>" +#~ msgstr "I<-N>" + +# type: Plain text +#~ msgid "" +#~ "Indicates that this is a new install. This parameter allows apt-setup to " +#~ "run in noninteractive mode if its debconf questions have been preseeded." +#~ msgstr "" +#~ "Indica que es una nueva instalación. Este parámetro permite ejecutar apt-" +#~ "setup de forma no interactiva si los valores de debconf han sido " +#~ "preconfigurados." + +# type: Plain text +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: TH +#~ msgid "TZSETUP" +#~ msgstr "TZSETUP" + +# type: TH +#~ msgid "16 January 2004" +#~ msgstr "16 de enero de 2004" + +# type: TH +#~ msgid "Debian" +#~ msgstr "Debian" + +# type: TH +#~ msgid "Debian Timezone Configuration" +#~ msgstr "Configuración de zona horaria en Debian" + +# type: Plain text +#~ msgid "tzsetup - set the local timezone" +#~ msgstr "tzsetup - establece la zona horaria local" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "This manual page explains how you can use the B utility to set " +#~ "the local timezone. This is necessary to let your system know about the " +#~ "difference between system time and local time (the time in the real " +#~ "world). It is also necessary to make your system behave nicely when your " +#~ "location uses Daylight Savings Time." +#~ msgstr "" +#~ "Esta página del manual explica como puede usar la utilidad B " +#~ "para establecer la zona horaria local. Esto es importante para que su " +#~ "sistema sepa la diferencia entre el tiempo del sistema y el tiempo local " +#~ "(el tiempo del mundo real). También es necesario para que su sistema se " +#~ "comporte de forma adecuada cuando en su zona se realicen cambios horarios " +#~ "para aprovechar mejor la luz del día." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "A valid system time together with the correct local time zone will give " +#~ "you best performance and highest reliability. It is especially important " +#~ "in a network environment, where even small time differences can make a " +#~ "mirror refetch a whole ftp site, or where time stamps on external file " +#~ "systems are used." +#~ msgstr "" +#~ "Un tiempo del sistema válido junto con la zona horaria adecuada le dará " +#~ "mejores resultados y una mayor seguridad. Es especialmente importante en " +#~ "un entorno de red, donde incluso pequeñas diferencias de tiempo pueden " +#~ "hacer que una réplica vuelva a descargar todo un sitio ftp, o donde se " +#~ "usan marcas de tiempo en un sistema de ficheros externo." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B is typically called without any parameters from the shell. " +#~ "Optionally, the -y parameter can be used, to make it always change your " +#~ "time zone without asking first. The -g parameter can also be used, to " +#~ "make it ask if the hardware clock is set to gmt or not. The -c parameter, " +#~ "followed by a country code, hints at the country the user's time zone may " +#~ "be in. The -N parameter allows it to run noninteractively if the debconf " +#~ "questions have been preseeded." +#~ msgstr "" +#~ "Normalmente se invoca B desde un shell sin parámetros. " +#~ "Opcionalmente, puede usarse la opción -y, para que siempre cambie la zona " +#~ "horaria sin preguntar primero. El parámetro -g puede también usarse, para " +#~ "que pregunte si el reloj físico del sistema está en hora GMT o no. El " +#~ "parámetro -c, seguido de un código de país, indica el país en el que " +#~ "posiblemente esté la zona horaria del usuario. El parámetro -N hace que " +#~ "se ejecute de forma no interactiva si ha sido preconfigurado." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "After you made your choice, B will try to change the timezone " +#~ "for you. See the B section below for technical details. You " +#~ "must have root privileges to actually change anything. Please use " +#~ "B(1) as a user space command to just look at the timezones. It " +#~ "will print the local time in any timezone recognized by the system." +#~ msgstr "" +#~ "Después de que realice su elección, B tratará de cambiar la zona " +#~ "horaria por usted. Lea la sección B de más abajo " +#~ "para los detalles técnicos. Debe de tener privilegios de superusuario " +#~ "para cambiar realmente cualquier configuración. Puede usar B" +#~ "(1) como una orden de usuario para simplemente mirar las zonas horarias " +#~ "reconocidas por el sistema. Mostrará la hora local y todas las zonas " +#~ "horarias reconocidas por el sistema." + +# type: SH +#~ msgid "A WORD OF WARNING" +#~ msgstr "UN AVISO" + +# type: Plain text +#~ msgid "" +#~ "What timezone is correct for your system? It depends on the geographical " +#~ "location of the machine. Getting the correct location is important, but " +#~ "the system must also know how your hardware clock is set. Most DOS based " +#~ "PCs set their hardware clock on Local Time, while most UNIX systems set " +#~ "their hardware clock to UTC." +#~ msgstr "" +#~ "¿Qué zona horaria es correcta para su sistema? Depende de la localización " +#~ "geográfica de la máquina. Obtener la localización correcta es importante, " +#~ "pero el sistema también necesita saber cómo funciona el reloj físico. La " +#~ "mayoría de los ordenadores personales basados en DOS establecen el reloj " +#~ "físico según el tiempo local, mientras que los sistemas UNIX lo " +#~ "establecen según UTC." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The Debian GNU/Linux system gains its knowledge of this setting from the " +#~ "file I. This file contains either the line B, " +#~ "which indicates that the hardware clock is set to UTC, or it contains the " +#~ "line B, which declares the hardware clock is set to Local Time. " +#~ "If these setting are correct, and the hardware clock is truly set as " +#~ "indicated, then configuring the proper timezone for the machine will " +#~ "cause the proper date and time to be displayed. If these are not set " +#~ "correctly, the the reported time will be quite incorrect. See B" +#~ "(8) for more details on this topic." +#~ msgstr "" +#~ "El sistema Debian GNU/Linux obtiene la configuración del fichero I. Este fichero contiene o bien la línea B, que " +#~ "indica que el reloj físico está en UTC, o bien la línea B, que " +#~ "indica que está en tiempo local. Si el reloj está de verdad como se " +#~ "indica, entonces configurar la zona horaria adecuada hará que se muestre " +#~ "la fecha y el tiempo correcto. En caso de no ser así, el tiempo mostrado " +#~ "podrá ser bastante incorrecto. Consulte B(8) para más detalles " +#~ "acerca de este tema." + +# type: SH +#~ msgid "INTERNALS" +#~ msgstr "FUNCIONAMIENTO INTERNO" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The work done by B is actually pretty simple. It just updates " +#~ "the link I to point to the correct timezone installed in " +#~ "I." +#~ msgstr "" +#~ "El trabajo hecho por B es realmente bastante sencillo. Sólo " +#~ "actualiza el enlace I para que apunte al la zona horaria " +#~ "correcta instalada en I." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "There is nothing wrong with doing this manually. However, using " +#~ "B you don't have to remember the path to the timezones." +#~ msgstr "" +#~ "No pasa nada malo si esto se realiza manualmente. Sin embargo, usando " +#~ "B no es necesario recordar donde se guardan las zonas horarias." + +# type: Plain text +#~ msgid "I I I" +#~ msgstr "I I I" + +# type: SH +#~ msgid "DERIVATION" +#~ msgstr "DERIVACIÓN" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "This program is based on B(8) -- the only major difference is " +#~ "that this program uses debconf for its user interface, and that it allows " +#~ "configuration of GMT." +#~ msgstr "" +#~ "Este programa se base en B(8) -- la mayor diferencia está en " +#~ "que éste usa debconf para la interfaz de usuario, y que además permite la " +#~ "configuración de GMT." + +# type: Plain text +#~ msgid "B(8) B(1) B(5) B(8)" +#~ msgstr "B(8) B(1) B(5) B(8)" --- glibc-2.4.orig/debian/local/manpages/po/fr.po +++ glibc-2.4/debian/local/manpages/po/fr.po @@ -0,0 +1,505 @@ +# fr.po for base-config manpage +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# +# Previous translator : +# Antoine Gémis . +# +msgid "" +msgstr "" +"Project-Id-Version: base-config\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-07-27 19:36+0200\n" +"Last-Translator: Clément Stenac \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "validlocale" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "0.1" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "Petter Reinholdtsen" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "NOM" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "" +"validlocale - vérifie si un ensemble donné de paramètres régionaux est " +"disponible" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "SYNTAXE" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "validlocale EIE" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "DESCRIPTION" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" +"Teste si l'ensemble de paramètres régionaux donné en argument est valable. " +"S'il ne l'est pas, affiche sur la sortie standard la chaîne de caractères à " +"ajouter à /etc/locale.gen afin de permettre à locale-gen de générer " +"l'ensemble de paramètres (s'il existe)." + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "FICHIERS" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "I" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "I" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "VARIABLES D'ENVIRONNEMENT" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" +"Indique quel encodage de caractères doit être supposé si la locale donnée " +"n'est pas dans la liste des locales gérées." + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "EXEMPLES" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" +"Si vous indiquez comme paramètre une locale valabe, vous recevrez ceci sur " +"la sortie d'erreur " + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "% validlocale C" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "locale « C » valide et disponible" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" +"Lorsqu'une locale non valable (non créée ou inexistante) est indiquée, vous " +"recevrez un message sur la sortie d'erreur disant qu'il s'agit d'une locale " +"non valable et une chaîne de caractères sur la sortie standard à ajouter à /" +"etc/locale.gen pour que la locale soit créée :" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "% validlocale de_AU@euro" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "locale « de_AT@euro » non disponible" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "de_AT@euro ISO-8859-15" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "AUTEURS" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "Petter·Reinholdtsen·Epere@hungry.comE" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "VOIR AUSSI" + +# type: Plain text +#: validlocale.8:49 +#, fuzzy +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "locale-gen(8),·localedef(1),·locale(1),·base-config(8)" + +# type: TH +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - Configuration du système Debian de base" + +# type: SH +#~ msgid "SYNOPSIS" +#~ msgstr "SYNOPSIS" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B est le programme lancé lors du premier redémarrage d'un " +#~ "nouveau système Debian. Il vous guide pas à pas dans la configuration du " +#~ "système, l'installation de nouveaux programmes, etc. Vous pourrez lancer " +#~ "à nouveau ce programme plus tard si vous désirez modifier la " +#~ "configuration de votre système." + +# type: SH +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLÉMENTATION" + +# type: Plain text +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B génère un menu de choix à partir du contenu de B et depuis les modèles debconf." + +# type: Plain text +#~ msgid "" +#~ "The .mnu files in /usr/lib/base-config/ control whether the menu item " +#~ "appears only on new installs (Only-New: true), whether debconf can " +#~ "already be running when the item is run (Debconf: true), a numeric Order " +#~ "controls placement in the menu. If a .mnu file contains \"Exit-Menu: true" +#~ "\", then base-config will terminate after running that menu item. " +#~ "Finally, a \"Changes-Menu: true\" line will make base-config rebuild the " +#~ "menu after running the menu item." +#~ msgstr "" +#~ "Les fichiers .mnu dans /usr/lib/base-config/ permettent de spécifier si " +#~ "un élément de menu ne doit apparaître que pour les nouvelles " +#~ "installations (Only-New:true), si Debconf doit déjà fonctionner lors du " +#~ "lancement de l'élément (Debconf: true), et un champ numérique contrôle la " +#~ "position dans le menu. Si un fichier .mnu contient « Exit-Menu: true », " +#~ "base-config se terminera après l'exécution de cet élément. Enfin, une " +#~ "ligne « Changes-Menu: true » fera que base-config reconstruira le menu " +#~ "après l'exécution de l'élément." + +# type: Plain text +#~ msgid "" +#~ "The .tst files in /usr/lib/base-config/ are run when base-config builds " +#~ "the menu and must return true for that menu item to appear on the menu." +#~ msgstr "" +#~ "Les fichiers .tst dans /usr/lib/base-config/ sont lancés lorsque base-" +#~ "config construit le menu et doivent renvoyer un résultat nul pour que cet " +#~ "élément apparaisse dans le menu." + +# type: Plain text +#~ msgid "" +#~ "The menu items are taken from debconf, by looking for items in the " +#~ "debconf database named base-config/menu/whatever." +#~ msgstr "" +#~ "Les éléments du menu sont tirés de Debconf, en cherchant les éléments " +#~ "dans la base de données de Debconf appelés base-config/menu/quelque_chose" + +# type: Plain text +#~ msgid "" +#~ "When a menu item is selected, the corresponding program, in /usr/lib/base-" +#~ "config is run. If this is a fresh install onto a new debian system, the " +#~ "program receives \"new\" as its first argument." +#~ msgstr "" +#~ "Lorsqu'un élément du menu est sélectionné, le programme correspondant " +#~ "dans /usr/lib/base-config est exécuté. S'il s'agit d'une installation sur " +#~ "un nouveau système, le programme reçoit « new » en tant que premier " +#~ "argument." + +# type: Plain text +#~ msgid "" +#~ "B checks the return codes of each of the programs. If a " +#~ "program returns nonzero, the main menu is displayed (this may involve " +#~ "lowering the debconf priority)." +#~ msgstr "" +#~ "B vérifie les codes de retour des programmes. Si un " +#~ "programme retourne une valeur non nulle, le menu principal sera affiché " +#~ "(ceci peut conduire à une diminution de la priorité Debconf)" + +# type: Plain text +#~ msgid "" +#~ "Generally the user is advanced down the menu from item to item as each " +#~ "succeeds. If a menu item needs to jump back to a previous item in the " +#~ "menu, or skip over a subsequent item, it can write the name of the next " +#~ "menu item to show to the file \"jump-to\" in the current directory." +#~ msgstr "" +#~ "Généralement, au fur et à mesure que les éléments se terminent avec " +#~ "succès, les éléments suivants du menu sont présélectionnés. Si un élément " +#~ "a besoin d'un retour à un élément précédent du menu, ou d'un saut à un " +#~ "autre élément, il peut écrire le nom de l'élément à présélectionner " +#~ "ensuite dans le fichier « jump-to » du répertoire courant." + +# type: Plain text +#~ msgid "" +#~ "Every base-config run is logged to B. B contains timing information to go with the log. " +#~ "This allows replays of base-config runs using the B(1) utility." +#~ msgstr "" +#~ "Chaque exécution de base-config est consignée dans B. Les informations temporelles du journal sont consignées dans B, ceci permet de relancer base-config en utilisant " +#~ "B(1)B<.>" + +# type: Plain text +#~ msgid "" +#~ "B, if it exists, is used by B " +#~ "on new installs to get values from the debian-installer first stage " +#~ "install." +#~ msgstr "" +#~ "Le fichier B, s'il existe, est " +#~ "utilisé par B pendant les nouvelles installations pour " +#~ "obtenir les valeurs produites par la première étape de debian-installer" + +# type: Plain text +#~ msgid "" +#~ "Other packages can drop files into B, and add menu " +#~ "titles in debconf, and they will be added to the menu. It is very " +#~ "strongly encouraged that any such programs communicate with the user " +#~ "entirely via debconf, so that the base configuration maintains a " +#~ "consistent and professional look." +#~ msgstr "" +#~ "D'autres paquets peuvent insérer des programmes dans B et ajouter des éléments de menu à debconf ; ils seront alors " +#~ "ajoutés au menu. Afin de conserver l'homogénéité et l'aspect " +#~ "professionnel du processus d'installation, il est fortement conseillé que " +#~ "la communication entre ces paquets et l'utilisateur se fasse " +#~ "exclusivement par debconf." + +# type: Plain text +#~ msgid "" +#~ "Another useful thing for custom distributions is /usr/share/base-config/" +#~ "debconf-seed. If that directory exists, every file in it will be loaded " +#~ "into the debconf database using B(1)" +#~ msgstr "" +#~ "Un autre répertoire intéressant pour les distributions personnalisées " +#~ "est /usr/share/base-config/debconf-seed. Si ce répertoire existe, tout " +#~ "son contenu sera chargé dans la base de données debconf à l'aide de " +#~ "B(1)" + +# type: Plain text +#~ msgid "" +#~ "If the file /var/log/installer/debconf-seed is created by the debian-" +#~ "installer, it will also be loaded into the debconf database." +#~ msgstr "" +#~ "Si le fichier /var/log/debian-installer/debconf-seed·est créé par " +#~ "l'installateur Debian, il sera également chargé dans la base de données " +#~ "debconf" + +# type: SH +#~ msgid "ENVIRONMENT" +#~ msgstr "ENVIRONNEMENT" + +# type: Plain text +#~ msgid "" +#~ "The following environment variables influence B. These " +#~ "variables may be set at run time, or for new installs, may be passed to " +#~ "the kernel at the B(8) (or other bootloader) command line. Consult " +#~ "your boot loader's documentation for details. For example, lilo can be " +#~ "booted with something like \"linux DEBIAN_FRONTEND=readline\"." +#~ msgstr "" +#~ "base-config tient compte des variables d'environnement suivantes. Ces " +#~ "variables peuvent être définies dynamiquement, pendant l'installation, ou " +#~ "bien encore passées en paramètre au noyau sur la ligne de commande de " +#~ "B(8) (ou d'un autre chargeur de démarrage). Consultez la " +#~ "documentation de votre chargeur de démarrage pour plus d'informations. " +#~ "Par exemple, lilo peut être lancé avec un paramètre tel que « linux " +#~ "DEBIAN_FRONTEND=readline »." + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "Control various things about B(7)" +#~ msgstr "Contrôle de nombreux aspects de (7)" + +# type: SH +#~ msgid "AUTHOR" +#~ msgstr "AUTEUR" + +# type: Plain text +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoey@debian.orgE" + +# type: TH +#~ msgid "TERMWRAP" +#~ msgstr "TERMWRAP" + +# type: Plain text +#~ msgid "termwrap - terminal wrapper" +#~ msgstr "termwrap - encapsulateur de terminal" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is used to execute B(8) on newly installed " +#~ "Debian systems. It examines the environment, taking note of locale " +#~ "settings, and what type of console is available, and runs an appropriate " +#~ "terminal program. For example, at the Linux console and in a Japanese " +#~ "locale, it runs jfterm. The specified command is run inside the terminal " +#~ "program (if any)." +#~ msgstr "" +#~ "B est utilisé pour exécuter B (8) sur un système " +#~ "Debian nouvellement installé. Il examine l'environnement, prenant en " +#~ "compte les réglages de paramètres locaux et le type de console " +#~ "disponible, et lance un programme de terminal adéquat. Par exemple, pour " +#~ "une console Linux et des paramètres locaux japonais, il lancera jfterm. " +#~ "La commande indiquée est alors lancée dans le programme de terminal, s'il " +#~ "y en a un." + +# type: SH +#~ msgid "OPTIONS" +#~ msgstr "OPTIONS" + +# type: TP +#~ msgid "I<-nnt>" +#~ msgstr "I<-nnt>" + +# type: Plain text +#~ msgid "Don't run another terminal." +#~ msgstr "Ne pas lancer d'autre terminal" + +# type: TH +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - permet d'ajouter des sources de téléchargement apt" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B est un programme interactif simplifiant l'ajout de sources " +#~ "au fichier sources.list. Il connaît tous les principaux miroirs Debian et " +#~ "peut vous aider à en choisir un. Il peut même utiliser B(8) " +#~ "pour parcourir des cédéroms." + +# type: TP +#~ msgid "I" +#~ msgstr "I<« probe »>" + +# type: Plain text +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Par défaut, aucune détection des CD n'est faite. Si vous passez « probe » " +#~ "comme premier argument à ce programme, il effectuera une détection du CD " +#~ "dans le lecteur au démarrage et l'ajoutera au sources.list. Ceci est " +#~ "utile lors des installations initiales de Debian, afin de minimiser " +#~ "l'interaction avec l'utilisateur." + +# type: TP +#~ msgid "I<-N>" +#~ msgstr "I<-N>" + +# type: Plain text +#~ msgid "" +#~ "Indicates that this is a new install. This parameter allows apt-setup to " +#~ "run in noninteractive mode if its debconf questions have been preseeded." +#~ msgstr "" +#~ "Indique qu'il s'agit d'une nouvelle installation. Ce paramètre permet à " +#~ "apt-setup de fonctionner en mode non-interactif si les réponses à ses " +#~ "questions debconf ont été préchargées." + +# type: Plain text +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" --- glibc-2.4.orig/debian/local/manpages/po/de.po +++ glibc-2.4/debian/local/manpages/po/de.po @@ -0,0 +1,294 @@ +# base-config manual page +# Copyright (C) 2005 Free Software Foundation, Inc. +# Jens Seidel , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: base-config 2005/11/17\n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-11-17 21:06+0100\n" +"Last-Translator: Jens Seidel \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "NAME" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "BESCHREIBUNG" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "BEISPIELE" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "AUTOR" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "" + +# type: Plain text +#: validlocale.8:49 +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "" + +# type: TH +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - Debian-Basissystemkonfiguration" + +# type: SH +#~ msgid "SYNOPSIS" +#~ msgstr "ÜBERSICHT" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B ist das Programm, das lief, als Sie das erste Mal Ihr neu " +#~ "installiertes Debian-System starteten. Es führt Sie durch die Einrichtung " +#~ "des Systems, das Herunterladen zusätzlicher Software und so weiter. Das " +#~ "Programm kann zu jedem späteren Zeitpunkt erneut gestartet werden, um " +#~ "erneut durch den selben Prozess zu führen." + +# type: SH +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLEMENTIERUNG" + +# type: Plain text +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B erzeugt ein Auswahlmenü aus dem Inhalt von B und von Debconf-Vorlagen." + +# type: SH +#~ msgid "AUTHOR" +#~ msgstr "AUTOR" + +# type: Plain text +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: SH +#~ msgid "OPTIONS" +#~ msgstr "OPTIONEN" + +# type: TP +#~ msgid "I<-nnt>" +#~ msgstr "I<»-N«>" + +# type: TH +#, fuzzy +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#, fuzzy +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - Hinzufügen von Quellen zum Herunterladen" + +# type: Plain text +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B ist ein interaktives Programm, daß das Hinzufügen von " +#~ "Quellen zu apt's sources.list vereinfacht. Es kennt alle bedeutenden " +#~ "Debian-Spiegel und kann Ihnen bei der Auswahl helfen. Es kann sogar B(8) zum Durchsuchen von CDs verwenden." + +# type: TP +#, fuzzy +#~ msgid "I" +#~ msgstr "I<»probe«>" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Standardmäßig wird nicht auf CDs überprüft. Wird »probe« als erstes " +#~ "Argument an dieses Programm übergeben, dann wird beim Starten auf eine CD " +#~ "im Laufwerk geprüft und diese zu den sources.list hinzugefügt. Dies ist " +#~ "bei Debian Erstinstallationen nützlich, um die Interaktion mit dem Nutzer " +#~ "zu minimieren." + +# type: TP +#, fuzzy +#~ msgid "I<-N>" +#~ msgstr "I<»-N«>" + +# type: Plain text +#, fuzzy +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: TH +#~ msgid "TZSETUP" +#~ msgstr "APT-SETUP" + +# type: SH +#~ msgid "DERIVATION" +#~ msgstr "BESCHREIBUNG" --- glibc-2.4.orig/debian/local/manpages/po/pl.po +++ glibc-2.4/debian/local/manpages/po/pl.po @@ -0,0 +1,490 @@ +msgid "" +msgstr "" +"Project-Id-Version: base-config\n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-10-23 21:50+0200\n" +"Last-Translator: Robert Luberda \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "validlocale" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "0.1" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "Petter Reinholdtsen" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "NAZWA" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "validlocale - Sprawdza, czy dostêpne jest dane locale" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "SK£ADNIA" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "validlocale EIE" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "OPIS" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" +"Sprawdza, czy locale podane jako argument jest poprawne. Je¶li nie jest, " +"wypisuje na stdout napis, jaki nale¿y dodaæ do /etc/locale.gen, aby " +"polecenie locale-gen wygenerowa³o dane locale (o ile w ogóle ono istnieje)." + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "PLIKI" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "I" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "I" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "ZMIENNE ¦RODOWISKOWE" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" +"Jakiego zestawu znaków u¿yæ, je¶li podanego locale nie ma w li¶cie " +"obs³ugiwanych." + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "PRZYK£ADY" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" +"Je¶li jako parametr podano nazwê poprawnego locale, wypisuje na stderr " +"odpowiedni napis:" + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "% validlocale C" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "locale 'C' valid and available" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" +"Je¶li podano nazwê nieprawid³owego locale (niewygenerowanego lub po prostu " +"nieistniej±cego), wypisuje na stderr napis mówi±cy o tym, ¿e nie jest to " +"prawid³owe locale, oraz - na stdout - napis, który nale¿y dodaæ do /etc/" +"locale.gen, aby móc wygenerowaæ dane locale:" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "% validlocale de_AU@euro" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "locale 'de_AT@euro' not available" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "de_AT@euro ISO-8859-15" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "AUTOR" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "Petter Reinholdtsen Epere@hungry.comE" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "PATRZ TAK¯E" + +# type: Plain text +#: validlocale.8:49 +#, fuzzy +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "locale-gen(8), localedef(1), locale(1), base-config(8)" + +# type: TH +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - konfiguracja podstawowego systemu Debian" + +# type: SH +#~ msgid "SYNOPSIS" +#~ msgstr "SK£ADNIA" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B to program uruchamiany po pierwszym starcie nowo " +#~ "zainstalowanego systemu Debian. Prowadzi on u¿ytkownika przez " +#~ "konfiguracjê systemu, pobieranie dodatkowego oprogramowania i tak dalej. " +#~ "Program ten mo¿na uruchomiæ w dowolnym momencie, aby przej¶æ przez ten " +#~ "proces ponownie." + +# type: SH +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLEMENTACJA" + +# type: Plain text +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B generuje menu z list± wyborów na podstawie zawarto¶ci " +#~ "katalogu B oraz z szablonów programu debconf." + +# type: Plain text +#~ msgid "" +#~ "The .mnu files in /usr/lib/base-config/ control whether the menu item " +#~ "appears only on new installs (Only-New: true), whether debconf can " +#~ "already be running when the item is run (Debconf: true), a numeric Order " +#~ "controls placement in the menu. If a .mnu file contains \"Exit-Menu: true" +#~ "\", then base-config will terminate after running that menu item. " +#~ "Finally, a \"Changes-Menu: true\" line will make base-config rebuild the " +#~ "menu after running the menu item." +#~ msgstr "" +#~ "Pliki .mnu w /usr/lib/base-config/ okre¶laj±, czy dana pozycja z menu " +#~ "pojawia siê tylko w nowo instalowanych systemach (Only-New: true), czy " +#~ "debconf mo¿e ju¿ dzia³aæ, kiedy pozycja z menu jest uruchamiana (Debconf: " +#~ "true), a liczbowy \"Order\" okre¶la pozycjê w menu. Je¿eli plik .mnu " +#~ "zawiera \"Exit-Menu: true\", to base-config zakoñczy dzia³anie po " +#~ "uruchomieniu tej pozycji. W koñcu, linia \"Changes-Menu: true\" powoduje, " +#~ "¿e base-config przebuduje menu po uruchomieniu tej pozycji." + +# type: Plain text +#~ msgid "" +#~ "The .tst files in /usr/lib/base-config/ are run when base-config builds " +#~ "the menu and must return true for that menu item to appear on the menu." +#~ msgstr "" +#~ "Podczas budowania menu base-config uruchamia pliki .tst z katalogu /usr/" +#~ "lib/base-config, które musz± zwróciæ warto¶æ true, aby dana pozycja " +#~ "pojawi³a siê w menu." + +# type: Plain text +#~ msgid "" +#~ "The menu items are taken from debconf, by looking for items in the " +#~ "debconf database named base-config/menu/whatever." +#~ msgstr "" +#~ "Pozycje menu s± brane z programu debconf, przez wyszukiwanie w bazie " +#~ "danych debconfa rekordów o nazwie base-config/menu/cokolwiek." + +# type: Plain text +#~ msgid "" +#~ "When a menu item is selected, the corresponding program, in /usr/lib/base-" +#~ "config is run. If this is a fresh install onto a new debian system, the " +#~ "program receives \"new\" as its first argument." +#~ msgstr "" +#~ "Po wybraniu pozycji w menu uruchamiany jest odpowiadaj±cy jej program z " +#~ "katalogu /usr/lib/base-config. Je¶li jest to pierwsze uruchomienie po " +#~ "zainstalowaniu systemu, ka¿dy program otrzymuje jako pierwszy argument " +#~ "wyraz \"new\"." + +# type: Plain text +#~ msgid "" +#~ "B checks the return codes of each of the programs. If a " +#~ "program returns nonzero, the main menu is displayed (this may involve " +#~ "lowering the debconf priority)." +#~ msgstr "" +#~ "B sprawdza kod zakoñczenia ka¿dego programu. Je¿eli program " +#~ "zwróci warto¶æ niezerow±, to zostanie wy¶wietlone g³ówne menu (mo¿e to " +#~ "wymagaæ zmniejszenia priorytetu debconfa)." + +# type: Plain text +#~ msgid "" +#~ "Generally the user is advanced down the menu from item to item as each " +#~ "succeeds. If a menu item needs to jump back to a previous item in the " +#~ "menu, or skip over a subsequent item, it can write the name of the next " +#~ "menu item to show to the file \"jump-to\" in the current directory." +#~ msgstr "" +#~ "Ogólnie rzecz bior±c, u¿ytkownik jest przenoszony w dó³ menu od jednej " +#~ "pozycji do nastêpnej. Je¿eli pozycja z menu potrzebuje wróciæ do " +#~ "poprzedniej pozycji menu lub przeskoczyæ pó¼niejsz± pozycjê, to mo¿e do " +#~ "pliku \"jump-to\" umieszczonego w bie¿±cym katalogu wpisaæ nazwê " +#~ "nastêpnej pozycji do pokazania w menu." + +# type: Plain text +#~ msgid "" +#~ "Every base-config run is logged to B. B contains timing information to go with the log. " +#~ "This allows replays of base-config runs using the B(1) utility." +#~ msgstr "" +#~ "Ka¿de uruchomienie programu base-config jest zapisywane w B. B zawiera informacje o czasie " +#~ "wykonywania poszczególnych poleceñ. Pozwala to na powtórzenie uruchomieñ " +#~ "base-config za pomoc± programiku B(1)." + +# type: Plain text +#~ msgid "" +#~ "B, if it exists, is used by B " +#~ "on new installs to get values from the debian-installer first stage " +#~ "install." +#~ msgstr "" +#~ "Podczas nowych instalacji B u¿ywa B, je¿eli istnieje, do pobrania warto¶ci pierwszego etapu " +#~ "instalacji przez program debian-installer." + +# type: Plain text +#~ msgid "" +#~ "Other packages can drop files into B, and add menu " +#~ "titles in debconf, and they will be added to the menu. It is very " +#~ "strongly encouraged that any such programs communicate with the user " +#~ "entirely via debconf, so that the base configuration maintains a " +#~ "consistent and professional look." +#~ msgstr "" +#~ "Pakiety mog± instalowaæ programy w katalogu B, " +#~ "dziêki czemu stan± siê one czê¶ci± procesu konfiguracji. Zaleca siê, aby " +#~ "programy te komunikowa³y siê z u¿ytkownikiem wy³±cznie przy pomocy " +#~ "programu debconf, dziêki czemu konfiguracja systemu podstawowego uzyska " +#~ "jednolity i profesjonalny wygl±d." + +# type: Plain text +#~ msgid "" +#~ "Another useful thing for custom distributions is /usr/share/base-config/" +#~ "debconf-seed. If that directory exists, every file in it will be loaded " +#~ "into the debconf database using B(1)" +#~ msgstr "" +#~ "Kolejn± u¿yteczn± rzecz± dla w³asnych dystrybucji jest /usr/share/base-" +#~ "config/debconf-seed. Je¿eli ten katalog istnieje, to ka¿dy plik w tym " +#~ "katalogu zostanie za³adowany do bazy danych debconfa za pomoc± B(1)." + +# type: Plain text +#~ msgid "" +#~ "If the file /var/log/installer/debconf-seed is created by the debian-" +#~ "installer, it will also be loaded into the debconf database." +#~ msgstr "" +#~ "Je¿eli plik /var/log/installer/debconf-seed zostanie utworzony przez " +#~ "instalator Debiana, to tak¿e zostanie za³adowany do bazy danych debconfa." + +# type: SH +#~ msgid "ENVIRONMENT" +#~ msgstr "ZMIENNE ¦RODOWISKOWE" + +# type: Plain text +#~ msgid "" +#~ "The following environment variables influence B. These " +#~ "variables may be set at run time, or for new installs, may be passed to " +#~ "the kernel at the B(8) (or other bootloader) command line. Consult " +#~ "your boot loader's documentation for details. For example, lilo can be " +#~ "booted with something like \"linux DEBIAN_FRONTEND=readline\"." +#~ msgstr "" +#~ "Nastêpuj±ce zmienne ¶rodowiskowe wp³ywaj± na dzia³anie B. " +#~ "Mo¿na je ustawiæ przy uruchomieniu programu lub (w przypadku instalacji " +#~ "nowego systemu) mo¿na je podaæ j±dru przy pomocy linii poleceñ B(8) " +#~ "(lub innego programu ³aduj±cego). Wiêcej informacji na temat " +#~ "przekazywania parametrów j±dru mo¿na znale¼æ w dokumentacji danego " +#~ "programu ³aduj±cego. W przypadku lilo mo¿na za³adowaæ system na przyk³ad " +#~ "w nastêpuj±cy sposób: \"linux DEBIAN_FRONTEND=readline\"." + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "Control various things about B(7)" +#~ msgstr "Wp³ywaj± na dzia³anie systemu B(7)" + +# type: SH +#~ msgid "AUTHOR" +#~ msgstr "AUTOR" + +# type: Plain text +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoeyh@debian.orgE" + +# type: TH +#~ msgid "TERMWRAP" +#~ msgstr "TERMWRAP" + +# type: Plain text +#~ msgid "termwrap - terminal wrapper" +#~ msgstr "termwrap - program po¶rednicz±cy terminala" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is used to execute B(8) on newly installed " +#~ "Debian systems. It examines the environment, taking note of locale " +#~ "settings, and what type of console is available, and runs an appropriate " +#~ "terminal program. For example, at the Linux console and in a Japanese " +#~ "locale, it runs jfterm. The specified command is run inside the terminal " +#~ "program (if any)." +#~ msgstr "" +#~ "B jest u¿ywany do wywo³ania B(8) w nowo " +#~ "instalowanych systemach Debian. Sprawdza on ¶rodowisko, zwracaj±c uwagê " +#~ "na ustawienia locale i typ dostêpnej konsoli, a nastêpnie uruchamia " +#~ "odpowiedni program terminala. Na przyk³ad na konsoli Linux przy locale " +#~ "japoñskim uruchamia program jfterm. Podana komenda jest wykonywana w " +#~ "uruchomionym terminalu." + +# type: SH +#~ msgid "OPTIONS" +#~ msgstr "OPCJE" + +# type: TP +#~ msgid "I<-nnt>" +#~ msgstr "I<-nnt>" + +# type: Plain text +#~ msgid "Don't run another terminal." +#~ msgstr "Nie uruchamiaj innego terminala." + +# type: TH +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - dodaje nowe ¼ród³a pakietów dla apt" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B to interaktywny program u³atwiaj±cy dodawanie ¼róde³ " +#~ "pakietów do pliku sources.list programu apt. Zna on wszystkie g³ówne " +#~ "serwery lustrzane Debiana i mo¿e pomóc wybraæ jeden z nich. Mo¿e nawet " +#~ "u¿yæ programu B(8) do przeszukiwania p³yt CD." + +# type: TP +#~ msgid "I" +#~ msgstr "I" + +# type: Plain text +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Domy¶lnie nie jest sprawdzana obecno¶æ p³yty CD. Je¶li jako pierwszy " +#~ "argument zostanie podany wyraz \"probe\", program przeszuka p³ytê CD " +#~ "znajduj±c± siê w napêdzie i doda j± do pliku sources.list. Jest to " +#~ "przydatne przy instalacji systemu, gdy¿ pozwala na ograniczenie " +#~ "koniecznych dzia³añ u¿ytkownika." + +# type: TP +#~ msgid "I<-N>" +#~ msgstr "I<-N>" + +# type: Plain text +#~ msgid "" +#~ "Indicates that this is a new install. This parameter allows apt-setup to " +#~ "run in noninteractive mode if its debconf questions have been preseeded." +#~ msgstr "" +#~ "Wskazuje, ¿e jest to nowa instalacja. Ten parametr pozwala programowi apt-" +#~ "setup uruchomiæ siê w trybie nieinteraktywnym, je¿eli wcze¶niej zosta³y " +#~ "wpisane odpowiedzi na jego pytania debconfa." + +# type: Plain text +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" --- glibc-2.4.orig/debian/local/manpages/po/id.po +++ glibc-2.4/debian/local/manpages/po/id.po @@ -0,0 +1,526 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: base-config man\n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-11-11 16:50-0500\n" +"Last-Translator: Debian Indonesia Team \n" +"Language-Team: Debian Indonesia Team \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ascii\n" +"Content-Transfer-Encoding: 8bit\n" + +# type: TH +#: validlocale.8:1 +#, fuzzy, no-wrap +msgid "validlocale" +msgstr "validlocale" + +# type: TH +#: validlocale.8:1 +#, fuzzy, no-wrap +msgid "0.1" +msgstr "0.1" + +# type: TH +#: validlocale.8:1 +#, fuzzy, no-wrap +msgid "Petter Reinholdtsen" +msgstr "Petter Reinholdtsen" + +# type: SH +#: validlocale.8:2 +#, fuzzy, no-wrap +msgid "NAME" +msgstr "NAMA" + +# type: Plain text +#: validlocale.8:5 +#, fuzzy +msgid "validlocale - Test if a given locale is available" +msgstr "validlocale - memeriksa apakah lokal yang diberikan tersedia" + +# type: SH +#: validlocale.8:5 +#, fuzzy, no-wrap +msgid "SYNTAX" +msgstr "RINGKASAN" + +# type: Plain text +#: validlocale.8:8 +#, fuzzy +msgid "validlocale EIE" +msgstr "validlocale EIE" + +# type: SH +#: validlocale.8:8 +#, fuzzy, no-wrap +msgid "DESCRIPTION" +msgstr "PENJELASAN" + +# type: Plain text +#: validlocale.8:13 +#, fuzzy +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" +"Memeriksa apakah lokal yang diberikan sebagai argumen adalah lokal yang sah. " +"Jika tidak, akan dicetak pada stdout string yang dapat ditambahkan ke /etc/" +"locale.gen untuk membuat locale-gen meng-generate lokal tersebut (jika " +"tersedia)." + +# type: SH +#: validlocale.8:13 +#, fuzzy, no-wrap +msgid "FILES" +msgstr "BERKAS-BERKAS" + +# type: Plain text +#: validlocale.8:16 +#, fuzzy +msgid "I" +msgstr "I" + +# type: Plain text +#: validlocale.8:18 +#, fuzzy +msgid "I" +msgstr "I" + +# type: SH +#: validlocale.8:18 +#, fuzzy, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "VARIABEL-VARIABEL LINGKUNGAN" + +# type: TP +#: validlocale.8:20 +#, fuzzy, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: validlocale.8:24 +#, fuzzy +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" +"set karakter mana yang akan dipakai bila lokal yang diberikan tidak ada pada " +"daftar lokal yang didukung." + +# type: SH +#: validlocale.8:24 +#, fuzzy, no-wrap +msgid "EXAMPLES" +msgstr "CONTOH" + +# type: Plain text +#: validlocale.8:28 +#, fuzzy +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" +"Bila anda memberikan lokal yang sah pada parameter, program akan menuliskan " +"string yang memberitahukan hal ini pada stderr:" + +# type: Plain text +#: validlocale.8:31 +#, fuzzy +msgid "% validlocale C" +msgstr "% validlocale C" + +# type: Plain text +#: validlocale.8:33 +#, fuzzy +msgid "locale 'C' valid and available" +msgstr "locale 'C' valid and available" + +# type: Plain text +#: validlocale.8:37 +#, fuzzy +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" +"Ketika parameter yang diberikan tidak sah (tidak digenerate atau tidak " +"tersedia), program akan mencetak pada stderr string yang memberitahu bahwa " +"lokal tidak sah, dan string lain pada stdout, yang dapat ditambahkan pada /" +"etc/locale.gen agar lokal ini digenerate:" + +# type: Plain text +#: validlocale.8:40 +#, fuzzy +msgid "% validlocale de_AU@euro" +msgstr "% validlocale de_AU@euro" + +# type: Plain text +#: validlocale.8:42 +#, fuzzy +msgid "locale 'de_AT@euro' not available" +msgstr "locale 'de_AT@euro' not available" + +# type: Plain text +#: validlocale.8:44 +#, fuzzy +msgid "de_AT@euro ISO-8859-15" +msgstr "de_AT@euro ISO-8859-15" + +# type: SH +#: validlocale.8:44 +#, fuzzy, no-wrap +msgid "AUTHORS" +msgstr "PENULIS" + +# type: Plain text +#: validlocale.8:47 +#, fuzzy +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "Petter Reinholdtsen Epere@hungry.comE" + +# type: SH +#: validlocale.8:47 +#, fuzzy, no-wrap +msgid "SEE ALSO" +msgstr "LIHAT JUGA" + +# type: Plain text +#: validlocale.8:49 +#, fuzzy +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "locale-gen(8), localedef(1), locale(1), base-config(8)" + +# type: TH +#, fuzzy +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#, fuzzy +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - Alat konfigurasi sistem basis Debian" + +# type: SH +#, fuzzy +#~ msgid "SYNOPSIS" +#~ msgstr "RINGKASAN" + +# type: Plain text +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B merupakan program yang dijalankan saat pertama kali anda " +#~ "boot ke sistem Debian anda yang baru diinstal. Program ini membimbing " +#~ "anda melalui tahap-tahap pengaturan sistem, mengunduh (mendownload) " +#~ "perangkat lunak tambahan, dan seterusnya. Program ini dapat dijalankan " +#~ "lagi di kemudian hari, apabila anda ingin mengulangi proses yang sama " +#~ "lagi." + +# type: SH +#, fuzzy +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLEMENTASI" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B menghasilkan pilihan menu dari isi berkas B, dan dari templet-templet debconf." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The .mnu files in /usr/lib/base-config/ control whether the menu item " +#~ "appears only on new installs (Only-New: true), whether debconf can " +#~ "already be running when the item is run (Debconf: true), a numeric Order " +#~ "controls placement in the menu. If a .mnu file contains \"Exit-Menu: true" +#~ "\", then base-config will terminate after running that menu item. " +#~ "Finally, a \"Changes-Menu: true\" line will make base-config rebuild the " +#~ "menu after running the menu item." +#~ msgstr "" +#~ "Berkas-berkas .mnu dalam /usr/lib/base-config mengatur apakah sebuah item " +#~ "menu muncul hanya saat instalasi baru (Only-New: True), apakah debconf " +#~ "dapat telah jalan ketika item tersebut dijalankan (Debconf: true), urutan " +#~ "numerik mengatur peletakan dalam menu. Jika sebuah berkas .mnu berisi " +#~ "\"Exit-Menu: true\", maka base-config akan berhenti setelah menjalankan " +#~ "item menu tersebut. Terakhir, baris \"Changes-menu: true\" akan membuat " +#~ "base-config membangun kembali menu setelah menjalankan item menu tersebut." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The .tst files in /usr/lib/base-config/ are run when base-config builds " +#~ "the menu and must return true for that menu item to appear on the menu." +#~ msgstr "" +#~ "Berkas-berkas .tst pada /usr/lib/base-config/ akan dijalankan ketika base-" +#~ "config membangun menu dan mesti mengembalikan nilai benar (true) agar " +#~ "item menu tersebut muncul pada menu." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The menu items are taken from debconf, by looking for items in the " +#~ "debconf database named base-config/menu/whatever." +#~ msgstr "" +#~ "Item-item menu diambil dari debconf, dengan melihat item-item pada basis " +#~ "data debconf yang dinamakan base-config/menu/sesuatu." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "When a menu item is selected, the corresponding program, in /usr/lib/base-" +#~ "config is run. If this is a fresh install onto a new debian system, the " +#~ "program receives \"new\" as its first argument." +#~ msgstr "" +#~ "Saat sebuah item menu dipilih, program yang sesuai pada /usr/lib/base-" +#~ "config akan dijalankan. Jika ini merupakan instalasi perdana pada sebuah " +#~ "sistem Debian yang baru, program akan menerima \"new\" pada argumen " +#~ "pertama." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B checks the return codes of each of the programs. If a " +#~ "program returns nonzero, the main menu is displayed (this may involve " +#~ "lowering the debconf priority)." +#~ msgstr "" +#~ "B memeriksa nilai kembalian dari tiap program. Jika sebuah " +#~ "program mengembalikan nilai bukan nol, maka menu utama akan ditampilkan " +#~ "(ini bisa melibatkan penurunan prioritas debconf)." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "Every base-config run is logged to B. B contains timing information to go with the log. " +#~ "This allows replays of base-config runs using the B(1) utility." +#~ msgstr "" +#~ "Setiap kali base-config dijalankan, akan ditulis log pada B. B berisi informasi waktu " +#~ "untuk dijalankan dengan log. Ini memungkinkan pengulangan jalannya base-" +#~ "config dengan menggunakan utilitas B(1)" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B, if it exists, is used by B " +#~ "on new installs to get values from the debian-installer first stage " +#~ "install." +#~ msgstr "" +#~ "B, jika ada, digunakan oleh B " +#~ "pada instalasi baru untuk mengambil nilai-nilai dari tahap pertama " +#~ "instalasi debian-installer." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "Other packages can drop files into B, and add menu " +#~ "titles in debconf, and they will be added to the menu. It is very " +#~ "strongly encouraged that any such programs communicate with the user " +#~ "entirely via debconf, so that the base configuration maintains a " +#~ "consistent and professional look." +#~ msgstr "" +#~ "Paket-paket lain dapat menaruh berkas-berkas pada B, dan menambahkan judul menu pada debconf, dan mereka akan ditambahkan " +#~ "pada menu. Sangat disarankan agar program-program tersebut berinteraksi " +#~ "dengan pengguna sepenuhnya melalui debconf, sehingga konfigurasi basis " +#~ "dapat mempertahankan tampilan yang konsisten dan profesional." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "Another useful thing for custom distributions is /usr/share/base-config/" +#~ "debconf-seed. If that directory exists, every file in it will be loaded " +#~ "into the debconf database using B(1)" +#~ msgstr "" +#~ "Hal berguna lainnya untuk distribusi yang dikustomisasi adalah berkas /" +#~ "usr/share/base-config/debconf-seed. Bila direktori tersebut ditemukan,' " +#~ "semua berkas didalamnya akan dimuat dalam basis data debconf menggunakan " +#~ "B(1)" + +# type: SH +#, fuzzy +#~ msgid "ENVIRONMENT" +#~ msgstr "LINGKUNGAN" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The following environment variables influence B. These " +#~ "variables may be set at run time, or for new installs, may be passed to " +#~ "the kernel at the B(8) (or other bootloader) command line. Consult " +#~ "your boot loader's documentation for details. For example, lilo can be " +#~ "booted with something like \"linux DEBIAN_FRONTEND=readline\"." +#~ msgstr "" +#~ "Variabel-variabel lingkungan berikut mempengaruhi B. Nilai-" +#~ "nilai ini dapat diatur saat menjalankan, atau untuk instalasi baru, dapat " +#~ "diberikan pada kernel melalui baris perintah B(8) (atau boot " +#~ "loader lainnya). Lihat dokumentasi boot loader anda untuk informasi " +#~ "detil. Sebagai contoh, lilo dapat diboot sebagai berikut: \"linux " +#~ "DEBIAN_FRONTEND=readline\"." + +# type: TP +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "Control various things about B(7)" +#~ msgstr "Mengatur beragam hal mengenai B(7)" + +# type: SH +#, fuzzy +#~ msgid "AUTHOR" +#~ msgstr "PENULIS" + +# type: Plain text +#, fuzzy +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoeyh@debian.orgE" + +# type: TH +#, fuzzy +#~ msgid "TERMWRAP" +#~ msgstr "TERMWRAP" + +# type: Plain text +#, fuzzy +#~ msgid "termwrap - terminal wrapper" +#~ msgstr "termwrap - terminal wrapper" + +# type: Plain text +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B is used to execute B(8) on newly installed " +#~ "Debian systems. It examines the environment, taking note of locale " +#~ "settings, and what type of console is available, and runs an appropriate " +#~ "terminal program. For example, at the Linux console and in a Japanese " +#~ "locale, it runs jfterm. The specified command is run inside the terminal " +#~ "program (if any)." +#~ msgstr "" +#~ "B digunakan untuk menjalankan B(8) pada sistem " +#~ "Debian yang baru dipasang. Ia meneliti lingkungan, memperhatikan " +#~ "pengaturan lokal, dan jenis konsol yang tersedia, dan kemudian " +#~ "menjalankan program terminal yang sesuai. Sebagai contoh, pada konsol " +#~ "Linux dan lokal Jepang, ia akan menjalankan jfterm. Program yang " +#~ "diberikan akan dijalakan pada terminal tersebut (jika tersedia)." + +# type: SH +#, fuzzy +#~ msgid "OPTIONS" +#~ msgstr "OPSI-OPSI" + +# type: TP +#, fuzzy +#~ msgid "I<-nnt>" +#~ msgstr "I<-nnt>" + +# type: Plain text +#, fuzzy +#~ msgid "Don't run another terminal." +#~ msgstr "Jangan menjalankan terminal yang lain." + +# type: TH +#, fuzzy +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#, fuzzy +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - menambahkan sumber-sumber download untuk apt" + +# type: Plain text +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B merupakan program interaktif yang menyederhanakan penambahan " +#~ "sumber-sumber ke berkas sources.list dari apt. Ia mengetahui semua mirror-" +#~ "mirror utama Debian dan dapat membantu anda memilih salah satu. Ia bahkan " +#~ "dapat menggunakan B(8) untuk memindai CD." + +# type: TP +#, fuzzy +#~ msgid "I" +#~ msgstr "I" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Secara bawaan tidak dilakukan pemeriksaan CD. Memberikan \"probe\" " +#~ "sebagai argumen pertama untuk program ini, akan membuat program memeriksa " +#~ "CD yang ada dalam penggerak dan menambahkannya ke berkas sources.list. " +#~ "Ini berguna pada saat instalasi awal Debian, untuk mengurangi interaksi " +#~ "dengan pengguna." + +# type: TP +#, fuzzy +#~ msgid "I<-N>" +#~ msgstr "I<-N>" + +# type: Plain text +#, fuzzy +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: SH +#, fuzzy +#~ msgid "DERIVATION" +#~ msgstr "PENJELASAN" --- glibc-2.4.orig/debian/local/manpages/po/man.pot +++ glibc-2.4/debian/local/manpages/po/man.pot @@ -0,0 +1,173 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "" + +# type: Plain text +#: validlocale.8:49 +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "" --- glibc-2.4.orig/debian/local/manpages/id/addendum.id +++ glibc-2.4/debian/local/manpages/id/addendum.id @@ -0,0 +1,3 @@ + +.SH PENERJEMAH +Parlin Imanuel Toh --- glibc-2.4.orig/debian/local/manpages/es/validlocale.es.8 +++ glibc-2.4/debian/local/manpages/es/validlocale.es.8 @@ -0,0 +1,54 @@ +.\" This file was generated with po4a. Translate the source file. +.\" +.TH validlocale 8 0.1 "Petter Reinholdtsen" "" +.SH NOMBRE +.LP +validlocale \- Comprueba si la opción de localización dada está disponible +.SH SINTAXIS +.LP +validlocale <\fIopción_de_localización\fP> +.SH DESCRIPCIÓN +.LP +Comprueba si la opción de localización dada como argumento es válida. Si no +lo es muestra en la stdout (salida estándar) la cadena de caracteres que se +necesita añadir a /etc/locale.gen para que locale\-gen genere esa opción de +localización (si es que existe). +.SH FICHEROS +.LP +\fI/usr/sbin/validlocale\fP +.br +\fI/usr/share/i18n/SUPPORTED\fP +.SH "VARIABLES DE ENTORNO" +.LP +.TP +\fBDEFAULTCHARSET\fP +El juego de caracteres que asume en caso de que la opción de localización +dada no esté entre la lista de opciones de localización soportadas. +.SH EJEMPLOS +.LP +Si usted proporciona una opción de localización válida como parámetro, +muestra una cadena de caracteres especificándolo en stderr (salida de +errores estándar): +.LP +.IP +% validlocale C +.br +locale 'C' valid and available +.LP +Cuando se proporcione una inválida (no ha sido generada o no existe), +muestra una cadena de caracteres en stderr diciendo que es inválida, y otra +a stdout con la cadena de caracteres que se necesita añadir a +/etc/locale.gen para que se genere: +.LP +.IP +% validlocale de_AU@euro +.br +locale 'de_AT@euro' not available +.br +de_AT@euro ISO\-8859\-15 +.SH AUTORES +.LP +Petter Reinholdtsen +.SH "VÉASE ADEMÁS" +.LP +locale\-gen(8), localedef(1), locale(1) --- glibc-2.4.orig/debian/local/manpages/es/addendum.es +++ glibc-2.4/debian/local/manpages/es/addendum.es @@ -0,0 +1,3 @@ + +.SH TRADUCTOR +Traducción de Rubén Porras Campo --- glibc-2.4.orig/debian/local/manpages/validlocale.8 +++ glibc-2.4/debian/local/manpages/validlocale.8 @@ -0,0 +1,49 @@ +.TH "validlocale" "8" "0.1" "Petter Reinholdtsen" "" +.SH "NAME" +.LP +validlocale \- Test if a given locale is available +.SH "SYNTAX" +.LP +validlocale <\fIlocale\fP> +.SH "DESCRIPTION" +.LP +Test if the locale given as argument is a valid locale. If it +isn't, print on stdout the string to add to /etc/locale.gen to make +locale\-gen generate the locale (if it exists at all). +.SH "FILES" +.LP +\fI/usr/sbin/validlocale\fP +.br +\fI/usr/share/i18n/SUPPORTED\fP +.SH "ENVIRONMENT VARIABLES" +.LP +.TP +\fBDEFAULTCHARSET\fP +Which charset to assume if the given locale is missing from the +list of supported locales. +.SH "EXAMPLES" +.LP +If you give a valid locale as parameter, it outputs a string +specifying this on stderr: +.LP +.IP +% validlocale C +.br +locale 'C' valid and available +.LP +When given a invalid (not generated or just nonexistent), it +outputs a string on stderr telling that this is an invalid locale, and a string to stdout with the string to add to /etc/locale.gen +to have this locale generated: +.LP +.IP +% validlocale de_AU@euro +.br +locale 'de_AT@euro' not available +.br +de_AT@euro ISO\-8859\-15 +.SH "AUTHORS" +.LP +Petter Reinholdtsen +.SH "SEE ALSO" +.LP +locale\-gen(8), localedef(1), locale(1) --- glibc-2.4.orig/debian/local/manpages/getconf.1 +++ glibc-2.4/debian/local/manpages/getconf.1 @@ -0,0 +1,239 @@ +.rn '' }` +''' $RCSfile: getconf.1,v $$Revision: 1.1.2.1 $$Date: 2003/09/22 21:33:35 $ +''' +''' $Log: getconf.1,v $ +''' Revision 1.1.2.1 2003/09/22 21:33:35 jbailey +''' New directory for things we add to the package +''' +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH GETCONF 1 "etch" "7/Jan/2001" "Debian GNU/Linux" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +getconf \- Query system configuration variables +.SH "SYNOPSIS" +\fBgetconf\fR [\fB\-v specification\fR] system_var +.PP +\fBgetconf\fR [\fB\-v specification\fR] path_var pathname +.SH "DESCRIPTION" +\fB\-v\fR +.PP +.Vb 2 +\& Indicate the specification and version for which to obtain +\& configuration variables. +.Ve +\fBsystem_var\fR +.PP +.Vb 2 +\& A system configuration variable, as defined by sysconf(3) or +\& confstr(3). +.Ve +\fBpath_var\fR +.PP +.Vb 2 +\& A system configuration variable as defined by pathconf(3). This +\& must be used with a pathname. +.Ve +.SH "AUTHOR" +\fIgetconf\fR was written by Roland McGrath for the GNU C Library +.PP +This man page was written by Ben Collins for +the Debian GNU/Linux system. +.SH "SEE ALSO" +\fBsysconf\fR(3), \fBpathconf\fR(3), \fBconfstr\fR(3) + +.rn }` '' +.IX Title "GETCONF 1" +.IX Name "getconf - Query system configuration variables" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + +.IX Header "SEE ALSO" + --- glibc-2.4.orig/debian/local/manpages/getent.1 +++ glibc-2.4/debian/local/manpages/getent.1 @@ -0,0 +1,219 @@ +.rn '' }` +''' $RCSfile: getent.1,v $$Revision: 1.1.2.1 $$Date: 2003/09/22 21:33:35 $ +''' +''' $Log: getent.1,v $ +''' Revision 1.1.2.1 2003/09/22 21:33:35 jbailey +''' New directory for things we add to the package +''' +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH GETENT 1 "etch" "7/Jan/2001" "Debian GNU/Linux" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +getent \- get entries from administrative database +.SH "SYNOPSIS" +\fBgetent\fR \fIdatabase\fR [\fIkey\fR ...] +.SH "DESCRIPTION" +The \fIgetent\fR program gathers entries from the specified +administrative database using the specified search keys. +Where \fIdatabase\fR is one of passwd, group, hosts, services, protocols, +or networks. +.SH "AUTHOR" +\fIgetent\fR was written by Thorsten Kukuk for the GNU C Library. +.PP +This man page was written by Joel Klecker for +the Debian GNU/Linux system. + +.rn }` '' +.IX Title "GETENT 1" +.IX Name "getent - get entries from administrative database" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- glibc-2.4.orig/debian/local/manpages/locale-gen.8.sgml +++ glibc-2.4/debian/local/manpages/locale-gen.8.sgml @@ -0,0 +1,148 @@ + manpage.1'. You may view + the manual page with: `docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + --> + + + Eduard"> + Bloch"> + + March 10, 2005"> + + 8"> + blade@debian.org"> + + LOCALE-GEN"> + + + Debian GNU/Linux"> + GNU"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2001 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + generates localisation files from templates + + + + &dhpackage; + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; command. + + By default, the locale package which provides the base support for + localisation of libc-based programs does not contain usable localisation + files for every supported language. This limitation has became necessary + because of the substantial size of such files and the large number of + languages supported by libc. As a result, Debian uses a special + mechanism where we prepare the actual localisation files on the target + host and distribute only the templates for them. + + &dhpackage; is a program that reads the file + /etc/locale.gen and invokes + localedef for the chosen localisation profiles. + Run &dhpackage; after you have modified the /etc/locale.gen file. + + + + + + OPTIONS + + + + + + By default, &dhpackage; removes all + existing locales and generates new ones afresh. The + option prevents this, so that + only locales which do not already exist are generated. This is + useful if calling locale-gen a number of times in + succession. + + + + + + + FILES + + /etc/locale.gen + The main configuration file, which has a simple format: every + line that is not empty and does not begin with a # is treated as a + locale definition that is to be built. + + + + + + SEE ALSO + + localedef (1), locale (1), locale.alias (5), locale.gen (5). + + + + + AUTHOR + + This manual page was written by &dhusername; <&dhemail;> for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the GNU Free Documentation + License, Version 1.1 or any later version published by the Free + Software Foundation; with no Invariant Sections, no Front-Cover + Texts and no Back-Cover Texts. + + +
+ + --- glibc-2.4.orig/debian/local/manpages/catchsegv.pod +++ glibc-2.4/debian/local/manpages/catchsegv.pod @@ -0,0 +1,20 @@ +=head1 NAME + +catchsegv - Catch segmentation faults in programs + +=head1 SYNOPSIS + +B B [B] + +=head1 DESCRIPTION + +Used to debug segmentation faults in programs. The output is the +content of registers, plus a backtrace. Basically you call your +program and its arguments as the arguments to catchsegv. + +=head1 AUTHOR + +I was written by Ulrich Drepper for the GNU C Library + +This man page was written by Ben Collins Ebcollins@debian.orgE for +the Debian GNU/Linux system. --- glibc-2.4.orig/debian/local/manpages/tzconfig.8 +++ glibc-2.4/debian/local/manpages/tzconfig.8 @@ -0,0 +1,113 @@ +.\" Copyright 1998 Marcus Brinkmann (brinkmd@debian.org) +.\" +.\" Permission is granted to make and distribute verbatim copies of this +.\" manual provided the copyright notice and this permission notice are +.\" preserved on all copies. +.\" +.\" Permission is granted to copy and distribute modified versions of this +.\" manual under the conditions for verbatim copying, provided that the +.\" entire resulting derived work is distributed under the terms of a +.\" permission notice identical to this one +.\" +.\" Since the Linux kernel and libraries are constantly changing, this +.\" manual page may be incorrect or out-of-date. The author(s) assume no +.\" responsibility for errors or omissions, or for damages resulting from +.\" the use of the information contained herein. The author(s) may not +.\" have taken the same level of care in the production of this manual, +.\" which is licensed free of charge, as they might when working +.\" professionally. +.\" +.\" Formatted or processed versions of this manual, if unaccompanied by +.\" the source, must acknowledge the copyright and authors of this work. +.\" +.\" Modified Mon Jul 12 18:40:00 1998 by Marcus Brinkmann +.TH TZCONFIG 8 "12 June 1998" "Debian" "Debian Timezone Configuration" +.SH NAME +tzconfig \- set the local timezone +.SH SYNOPSIS +.B tzconfig +.SH DESCRIPTION +This manual page explains how you can use the +.B "tzconfig" +utility to set the local timezone. This is necessary to let your system know about the +difference between system time and local time (the time in the real world). It is also +necessary to make your system behave nicely when your location uses Daylight Savings Time. + +A valid system time together with the correct local time zone will give you best performance +and highest reliability. It is especially important in a network environment, where even small +time differences can make a mirror refetch a whole ftp site, or where time stamps on +external file systems are used. + +.B tzconfig +is called without any parameters from the shell. First it presents the current setting and asks +for verification to change it. + +You may press +.B Ctrl-C +to interrupt the script at any time. + +After you made your choice, +.B tzconfig +will try to change the timezone for you. See the +.B Internals +section below for technical details. You must have root privileges to actually change +anything. Please use +.BR tzselect (1) +as a user space command to just look at the timezones. It will print the local time in any +timezone recognized by the system. +.SH "A WORD OF WARNING" +What timezone is correct for your system? It depends on the geographical location of the machine. +Getting the correct location is important, but +the system must also know how your hardware clock is set. Most DOS based PCs set their hardware +clock on Local Time, while most UNIX systems set their hardware clock to UTC. + +The Debian GNU/Linux system gains its knowledge of this setting +from the file +.IR /etc/default/rcS . +This file contains either the line +.BR UTC=yes , +which indicates that the hardware clock is set to UTC, or it contains the line +.BR UTC=no , +which declares the hardware clock is set to Local Time. If these setting are correct, and the hardware +clock is truly set as indicated, then configuring the proper timezone for the machine +will cause the proper date and time to be displayed. If these are not set correctly, the the +reported time will be quite incorrect. See +.BR hwclock (8) +for more details on this topic. + +.SH Internals +The work done by +.B tzconfig +is actually pretty simple. It just copies the correct timezone installed in +.I /usr/share/zoneinfo/ +to +.I /etc/localtime +and puts the name of the timezone into +.IR /etc/timezone . + +There is nothing wrong with doing this manually. However, using +.B tzconfig +you don't have to remember the path to the timezones. +.SH FILES +.I /etc/timezone +.BR +.I /etc/localtime +.BR +.I /usr/share/zoneinfo +.SH "SEE ALSO" +.BR hwclock (8) +.BR tzselect (1) +.BR rcS (5) +.SH AUTHOR +Copyright 1998 Marcus Brinkmann +.BR +Edits Copyright 1998 Dale Scheetz + +Please see nroff source for legal notice. + + + + + + + --- glibc-2.4.orig/debian/local/manpages/locale.alias.5 +++ glibc-2.4/debian/local/manpages/locale.alias.5 @@ -0,0 +1,45 @@ +.\" -*- nroff -*- +.\" Copyright (C) 2002 Free Software Foundation, Inc. +.\" +.\" 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. +.TH locale.alias 5 "January 2002" "Debian GNU/Linux" +.SH "NAME" +locale.alias \- Locale name alias data base +.SH "DESCRIPTION" +The locale.alias database file (/etc/locale.alias) is used by the +.B locale +command and the +.B X Window System +. +It describes aliases for the locales, with each line being of the +form + + + +Where is in the POSIX format: xx_YY.CHARSET. +The first two letters \fIxx\fR are the ISO-639 Language code, + the next two \fIYY\fR are the ISO-3166 Country code, +and the Charset is one of the character sets (listed in +\fI/usr/share/i18n/charsets\fR +). +The aliases can be free text; they are normally the English language +name, or simpler versions of the POSIX locale name. + +Lines beginning with Hash ("#") are treated as comments and ignored. + +.SH "SEE ALSO" +locale(1), localedef(1), locale-gen(8), locale.gen(5) +.SH "AUTHOR" +Alastair McKinstry --- glibc-2.4.orig/debian/local/manpages/zic.8 +++ glibc-2.4/debian/local/manpages/zic.8 @@ -0,0 +1,413 @@ +.TH ZIC 8 +.SH NAME +zic \- time zone compiler +.SH SYNOPSIS +.B zic +[ +.B \-v +] [ +.B \-d +.I directory +] [ +.B \-l +.I localtime +] [ +.B \-p +.I posixrules +] [ +.B \-L +.I leapsecondfilename +] [ +.B \-s +] [ +.B \-y +.I command +] [ +.I filename +\&... ] +.SH DESCRIPTION +.if t .ds lq `` +.if t .ds rq '' +.if n .ds lq \&"\" +.if n .ds rq \&"\" +.de q +\\$3\*(lq\\$1\*(rq\\$2 +.. +.I Zic +reads text from the file(s) named on the command line +and creates the time conversion information files specified in this input. +If a +.I filename +is +.BR \- , +the standard input is read. +.PP +These options are available: +.TP +.BI "\-d " directory +Create time conversion information files in the named directory rather than +in the standard directory named below. +.TP +.BI "\-l " timezone +Use the given time zone as local time. +.I Zic +will act as if the input contained a link line of the form +.sp +.ti +.5i +Link \fItimezone\fP localtime +.TP +.BI "\-p " timezone +Use the given time zone's rules when handling POSIX-format +time zone environment variables. +.I Zic +will act as if the input contained a link line of the form +.sp +.ti +.5i +Link \fItimezone\fP posixrules +.TP +.BI "\-L " leapsecondfilename +Read leap second information from the file with the given name. +If this option is not used, +no leap second information appears in output files. +.TP +.B \-v +Complain if a year that appears in a data file is outside the range +of years representable by +.IR time (2) +values. +.TP +.B \-s +Limit time values stored in output files to values that are the same +whether they're taken to be signed or unsigned. +You can use this option to generate SVVS-compatible files. +.TP +.BI "\-y " command +Use the given +.I command +rather than +.B yearistype +when checking year types (see below). +.PP +Input lines are made up of fields. +Fields are separated from one another by any number of white space characters. +Leading and trailing white space on input lines is ignored. +An unquoted sharp character (#) in the input introduces a comment which extends +to the end of the line the sharp character appears on. +White space characters and sharp characters may be enclosed in double quotes +(") if they're to be used as part of a field. +Any line that is blank (after comment stripping) is ignored. +Non-blank lines are expected to be of one of three types: +rule lines, zone lines, and link lines. +.PP +A rule line has the form +.nf +.ti +.5i +.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u +.sp +Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +.sp +For example: +.ti +.5i +.sp +Rule US 1967 1973 \- Apr lastSun 2:00 1:00 D +.sp +.fi +The fields that make up a rule line are: +.TP "\w'LETTER/S'u" +.B NAME +Gives the (arbitrary) name of the set of rules this rule is part of. +.TP +.B FROM +Gives the first year in which the rule applies. +Any integer year can be supplied; the Gregorian calendar is assumed. +The word +.B minimum +(or an abbreviation) means the minimum year representable as an integer. +The word +.B maximum +(or an abbreviation) means the maximum year representable as an integer. +Rules can describe times that are not representable as time values, +with the unrepresentable times ignored; this allows rules to be portable +among hosts with differing time value types. +.TP +.B TO +Gives the final year in which the rule applies. +In addition to +.B minimum +and +.B maximum +(as above), +the word +.B only +(or an abbreviation) +may be used to repeat the value of the +.B FROM +field. +.TP +.B TYPE +Gives the type of year in which the rule applies. +If +.B TYPE +is +.B \- +then the rule applies in all years between +.B FROM +and +.B TO +inclusive. +If +.B TYPE +is something else, then +.I zic +executes the command +.ti +.5i +\fByearistype\fP \fIyear\fP \fItype\fP +.br +to check the type of a year: +an exit status of zero is taken to mean that the year is of the given type; +an exit status of one is taken to mean that the year is not of the given type. +.TP +.B IN +Names the month in which the rule takes effect. +Month names may be abbreviated. +.TP +.B ON +Gives the day on which the rule takes effect. +Recognized forms include: +.nf +.in +.5i +.sp +.ta \w'Sun<=25\0\0'u +5 the fifth of the month +lastSun the last Sunday in the month +lastMon the last Monday in the month +Sun>=8 first Sunday on or after the eighth +Sun<=25 last Sunday on or before the 25th +.fi +.in -.5i +.sp +Names of days of the week may be abbreviated or spelled out in full. +Note that there must be no spaces within the +.B ON +field. +.TP +.B AT +Gives the time of day at which the rule takes effect. +Recognized forms include: +.nf +.in +.5i +.sp +.ta \w'1:28:13\0\0'u +2 time in hours +2:00 time in hours and minutes +15:00 24-hour format time (for times after noon) +1:28:14 time in hours, minutes, and seconds +.fi +.in -.5i +.sp +where hour 0 is midnight at the start of the day, +and hour 24 is midnight at the end of the day. +Any of these forms may be followed by the letter +.B w +if the given time is local +.q "wall clock" +time, +.B s +if the given time is local +.q standard +time, or +.B u +(or +.B g +or +.BR z ) +if the given time is universal time; +in the absence of an indicator, +wall clock time is assumed. +.TP +.B SAVE +Gives the amount of time to be added to local standard time when the rule is in +effect. +This field has the same format as the +.B AT +field +(although, of course, the +.B w +and +.B s +suffixes are not used). +.TP +.B LETTER/S +Gives the +.q "variable part" +(for example, the +.q S +or +.q D +in +.q EST +or +.q EDT ) +of time zone abbreviations to be used when this rule is in effect. +If this field is +.BR \- , +the variable part is null. +.PP +A zone line has the form +.sp +.nf +.ti +.5i +.ta \w'Zone\0\0'u +\w'Australia/Adelaide\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u +Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +.sp +For example: +.sp +.ti +.5i +Zone Australia/Adelaide 9:30 Aus CST 1971 Oct 31 2:00 +.sp +.fi +The fields that make up a zone line are: +.TP "\w'GMTOFF'u" +.B NAME +The name of the time zone. +This is the name used in creating the time conversion information file for the +zone. +.TP +.B GMTOFF +The amount of time to add to UTC to get standard time in this zone. +This field has the same format as the +.B AT +and +.B SAVE +fields of rule lines; +begin the field with a minus sign if time must be subtracted from UTC. +.TP +.B RULES/SAVE +The name of the rule(s) that apply in the time zone or, +alternately, an amount of time to add to local standard time. +If this field is +.B \- +then standard time always applies in the time zone. +.TP +.B FORMAT +The format for time zone abbreviations in this time zone. +The pair of characters +.B %s +is used to show where the +.q "variable part" +of the time zone abbreviation goes. +Alternately, +a slash (/) +separates standard and daylight abbreviations. +.TP +.B UNTIL +The time at which the UTC offset or the rule(s) change for a location. +It is specified as a year, a month, a day, and a time of day. +If this is specified, +the time zone information is generated from the given UTC offset +and rule change until the time specified. +The month, day, and time of day have the same format as the IN, ON, and AT +columns of a rule; trailing columns can be omitted, and default to the +earliest possible value for the missing columns. +.IP +The next line must be a +.q continuation +line; this has the same form as a zone line except that the +string +.q Zone +and the name are omitted, as the continuation line will +place information starting at the time specified as the +.B UNTIL +field in the previous line in the file used by the previous line. +Continuation lines may contain an +.B UNTIL +field, just as zone lines do, indicating that the next line is a further +continuation. +.PP +A link line has the form +.sp +.nf +.ti +.5i +.ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u +Link LINK-FROM LINK-TO +.sp +For example: +.sp +.ti +.5i +Link Europe/Istanbul Asia/Istanbul +.sp +.fi +The +.B LINK-FROM +field should appear as the +.B NAME +field in some zone line; +the +.B LINK-TO +field is used as an alternate name for that zone. +.PP +Except for continuation lines, +lines may appear in any order in the input. +.PP +Lines in the file that describes leap seconds have the following form: +.nf +.ti +.5i +.ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u +.sp +Leap YEAR MONTH DAY HH:MM:SS CORR R/S +.sp +For example: +.ti +.5i +.sp +Leap 1974 Dec 31 23:59:60 + S +.sp +.fi +The +.BR YEAR , +.BR MONTH , +.BR DAY , +and +.B HH:MM:SS +fields tell when the leap second happened. +The +.B CORR +field +should be +.q + +if a second was added +or +.q - +if a second was skipped. +.\" There's no need to document the following, since it's impossible for more +.\" than one leap second to be inserted or deleted at a time. +.\" The C Standard is in error in suggesting the possibility. +.\" See Terry J Quinn, The BIPM and the accurate measure of time, +.\" Proc IEEE 79, 7 (July 1991), 894-905. +.\" or +.\" .q ++ +.\" if two seconds were added +.\" or +.\" .q -- +.\" if two seconds were skipped. +The +.B R/S +field +should be (an abbreviation of) +.q Stationary +if the leap second time given by the other fields should be interpreted as UTC +or +(an abbreviation of) +.q Rolling +if the leap second time given by the other fields should be interpreted as +local wall clock time. +.SH NOTE +For areas with more than two types of local time, +you may need to use local standard time in the +.B AT +field of the earliest transition time's rule to ensure that +the earliest transition time recorded in the compiled file is correct. +.SH FILE +/usr/share/zoneinfo standard directory used for created files +.SH "SEE ALSO" +ctime(3), zdump(1) +.\" @(#)zic.8 7.18 --- glibc-2.4.orig/debian/local/manpages/tzselect.1 +++ glibc-2.4/debian/local/manpages/tzselect.1 @@ -0,0 +1,70 @@ +.\" Copyright 1998 Marcus Brinkmann (brinkmd@debian.org) +.\" +.\" Permission is granted to make and distribute verbatim copies of this +.\" manual provided the copyright notice and this permission notice are +.\" preserved on all copies. +.\" +.\" Permission is granted to copy and distribute modified versions of this +.\" manual under the conditions for verbatim copying, provided that the +.\" entire resulting derived work is distributed under the terms of a +.\" permission notice identical to this one +.\" +.\" Since the Linux kernel and libraries are constantly changing, this +.\" manual page may be incorrect or out-of-date. The author(s) assume no +.\" responsibility for errors or omissions, or for damages resulting from +.\" the use of the information contained herein. The author(s) may not +.\" have taken the same level of care in the production of this manual, +.\" which is licensed free of charge, as they might when working +.\" professionally. +.\" +.\" Formatted or processed versions of this manual, if unaccompanied by +.\" the source, must acknowledge the copyright and authors of this work. +.\" +.\" Modified Mon Jul 12 18:40:00 1998 by Marcus Brinkmann (brinkmd@debian.org) +.TH TZSELECT 1 "12 June 1998" "Debian" "Debian Timezone Configuration" +.SH NAME +tzselect \- view timezones +.SH SYNOPSIS +.B tzselect +.SH DESCRIPTION +This manual page explains how you can use the +.B "tzselect" +utility to view the installed timezone. It comes handy when you want to know what time it is in +other countries, or if you just wonder what timezones exist. + +.B tzselect +is called without any parameters from the shell. It shows a list of about one dozen geographic +areas one can roughly recognize as continents. After choosing a geographic area by number, a +list of countries and cities in this area will be shown. + +You can press the +.B Enter +key to reprint the list. To choose a timezone, just press the number left to it. +If your input is invalid, the list will be reprinted. + +You may press +.B Ctrl-C +to interrupt the script at any time. + +Nothe that +.B tzselect +will not actually change the timezone for you. Use the +.BR tzconfig (8) +utility to achieve this. +.SH FILES +.I /usr/share/zoneinfo/ +.SH "SEE ALSO" +.BR hwclock (8) +.BR tzconfig (8) +.SH AUTHOR +Copyright 1998 Marcus Brinkmann + +Please see nroff source for legal notice. + + + + + + + + --- glibc-2.4.orig/debian/local/manpages/iconv.pod +++ glibc-2.4/debian/local/manpages/iconv.pod @@ -0,0 +1,45 @@ +=head1 NAME + +iconv - Convert encoding of given files from one encoding to another + +=cut + +=head1 SYNOPSIS + +iconv B<-f> I B<-t> I I + +=head1 DESCRIPTION + +The B program converts the encoding of characters in +I from one coded character set to another. The result is +written to standard output unless otherwise specified by the +B<--output> option. + +B<--from-code>, B<-f> I + +Convert characters from I + +B<--to-code>, B<-t> I + +Convert characters to I + +B<--list> + +List known coded character sets + +B<--output>, B<-o> I + +Specify output file (instead of stdout) + +B<--verbose> + +Print progress information. + +=head1 AUTHOR + +I was written by Ulrich Drepper as part of the GNU C Library. + +This man page was written by Joel Klecker Eespy@debian.orgE, +for the Debian GNU/Linux system. + + --- glibc-2.4.orig/debian/local/manpages/gencat.1 +++ glibc-2.4/debian/local/manpages/gencat.1 @@ -0,0 +1,240 @@ +.rn '' }` +''' $RCSfile: gencat.1,v $$Revision: 1.1 $$Date: 2004-11-06 05:21:19 -0500 (sam, 06 nov 2004) $ +''' +''' $Log: gencat.1,v $ +''' Revision 1.1 2003/11/03 17:37:27 jbailey +''' - debian/local/manpages/gencat.1: New file. +''' - debian/local/manpages/trace.1: New file. +''' - debian/debhelper.in/libc-dev.manpages: Install them. +''' - debian/local/manpages/iconvconfig.8: New file. +''' - debian/debhelper.in/libc.manpages: Install it. +''' +''' Revision 1.1.2.2 2003/10/28 05:48:08 dan +''' - Re-add debian/patches/80_glibc232-locales-nb_NO-fix.dpatch, which had +''' gotten lost. +''' - Re-add typo fixes to iconv.1 and rpcgen.1. +''' - Merge iconv.1 fix to iconv.pod. +''' - Fix ld.so name in ld.so.8. +''' - Re-add fix for locale-gen and POSIXLY_CORRECT. +''' +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH GENCAT 1 "November 2003" "gencat (glibc)" "Debian" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +gencat \- Generate message catalog +.SH "SYNOPSIS" +gencat [OPTION...] -o OUTPUT-FILE [INPUT-FILE]... +.SH "DESCRIPTION" +The \fBgencat\fR program is specified in the X/Open standard and the +GNU implementation follows this specification and so processes all +correctly formed input files. Additionally some extension are implemented +which help to work in a more reasonable way with the \fBcatgets\fR(3) functions. +.PP +.TP +\fB-H\fR, \fB--header\fR \fINAME\fR +Create C header file NAME containing symbol definitions +.TP +\fB--new\fR +Do not use existing catalog, force new output file +.TP +\fB-o\fR, \fB--output\fR \fINAME\fR +Write output to file NAME +.SH "AUTHOR" +\fIgencat\fR was written by Ulrich Drepper as part of the GNU C Library. +.PP +This man page was written by Jeff Bailey . + +.rn }` '' +.IX Title "GENCAT 1" +.IX Name "gencat - Generate message catalog" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- glibc-2.4.orig/debian/local/manpages/po4a.cfg +++ glibc-2.4/debian/local/manpages/po4a.cfg @@ -0,0 +1,7 @@ +[po4a_paths] po/man.pot de:po/de.po es:po/es.po id:po/id.po \ + fr:po/fr.po pl:po/pl.po pt_BR:po/pt_BR.po + +[type: man] validlocale.8 es:es/validlocale.es.8 \ + id:id/validlocale.id.8 add_id:id/addendum.id fr:fr/validlocale.fr.8 \ + add_fr:fr/addendum.fr pl:pl/validlocale.pl.8 \ + pt_BR:pt_BR/validlocale.pt_BR.8 --- glibc-2.4.orig/debian/local/manpages/ldd.1 +++ glibc-2.4/debian/local/manpages/ldd.1 @@ -0,0 +1,58 @@ +.\" Copyright 1995-2000 David Engel (david@ods.com) +.\" Copyright 1995 Rickard E. Faith (faith@cs.unc.edu) +.\" Copyright 2000 Ben Collins (bcollins@debian.org) +.\" Redone for GLibc 2.2 +.\" Copyright 2000 Jakub Jelinek (jakub@redhat.com) +.\" Corrected. +.\" Most of this was copied from the README file. Do not restrict distribution. +.\" May be distributed under the GNU General Public License +.TH LDD 1 "30 October 2000" +.SH NAME +ldd \- print shared library dependencies +.SH SYNOPSIS +.B ldd +.RB [OPTION]... +FILE... +.SH DESCRIPTION +.B ldd +prints the shared libraries required by each program or shared library +specified on the command line. +.SH OPTIONS +.TP +.B \-\-version +Print the version number of +.BR ldd . +.TP +.B \-v\ \-\-verbose +Print all information, including e.g. symbol versioning information. +.TP +.B \-d\ \-\-data\-relocs +Perform relocations and report any missing objects (ELF only). +.TP +.B \-r\ \-\-function\-relocs +Perform relocations for both data objects and functions, and +report any missing objects or functions (ELF only). +.TP +.B \-u\ \-\-unused +Print unused direct dependencies. +.TP +.B \-\-help +Usage information. +.SH BUGS +.B ldd +does not work on a.out shared libraries. +.PP +.B ldd +does not work with some extremely old a.out programs which were +built before +.B ldd +support was added to the compiler releases. +If you use +.B ldd +on one of these programs, the program will attempt to run with argc = 0 and +the results will be unpredictable. +.SH AUTHOR +Roland McGrath and Ulrich Drepper. +.SH SEE ALSO +.BR ldconfig (8), +.BR ld.so (8). --- glibc-2.4.orig/debian/local/manpages/nscd_nischeck.8 +++ glibc-2.4/debian/local/manpages/nscd_nischeck.8 @@ -0,0 +1,31 @@ +.\" Placed in the Public Domain by Sebastian Rittau . +.Dd January 08, 2001 +.Dt NSCD_NISCHECK 8 +.Os "GNU C Library 2.2" +.Sh NAME +.Nm nscd_nischeck +.Nd check NIS+ tables for read permissions +.Sh SYNOPSIS +.Nm nscd_nischeck +.Ar OPTION | TABLE +.Sh DESCRIPTION +.Nm Nscd_nischeck +checks if a given NIS+ table is world-readable. 0 is returned in +this case. Otherwise, only authenticated users can read the table +and 1 is returned. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl ? , Fl -help +Print a short help list. +.El +.Bl -tag -width Ds +.It Fl -usage +Print a short usage message. +.El +.Bl -tag -width Ds +.It Fl V , Fl -version +Print program version. +.El +.Sh SEE ALSO +GNU C Library info file, +.Xr nscd 8 --- glibc-2.4.orig/debian/local/manpages/catchsegv.1 +++ glibc-2.4/debian/local/manpages/catchsegv.1 @@ -0,0 +1,218 @@ +.rn '' }` +''' $RCSfile: catchsegv.1,v $$Revision: 1.1.2.1 $$Date: 2003/09/22 21:33:35 $ +''' +''' $Log: catchsegv.1,v $ +''' Revision 1.1.2.1 2003/09/22 21:33:35 jbailey +''' New directory for things we add to the package +''' +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH CATCHSEGV 1 "etch" "7/Jan/2001" "Debian GNU/Linux" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +catchsegv \- Catch segmentation faults in programs +.SH "SYNOPSIS" +\fBcatchsegv\fR \fBprogram\fR [\fBargs\fR] +.SH "DESCRIPTION" +Used to debug segmentation faults in programs. The output is the +content of registers, plus a backtrace. Basically you call your +program and its arguments as the arguments to catchsegv. +.SH "AUTHOR" +\fIcatchsegv\fR was written by Ulrich Drepper for the GNU C Library +.PP +This man page was written by Ben Collins for +the Debian GNU/Linux system. + +.rn }` '' +.IX Title "CATCHSEGV 1" +.IX Name "catchsegv - Catch segmentation faults in programs" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- glibc-2.4.orig/debian/local/manpages/mtrace.1 +++ glibc-2.4/debian/local/manpages/mtrace.1 @@ -0,0 +1,228 @@ +.rn '' }` +''' $RCSfile: mtrace.1,v $$Revision: 1.1 $$Date: 2004-11-06 05:21:19 -0500 (sam, 06 nov 2004) $ +''' +''' $Log: mtrace.1,v $ +''' Revision 1.1 2003/11/03 17:37:27 jbailey +''' - debian/local/manpages/gencat.1: New file. +''' - debian/local/manpages/trace.1: New file. +''' - debian/debhelper.in/libc-dev.manpages: Install them. +''' - debian/local/manpages/iconvconfig.8: New file. +''' - debian/debhelper.in/libc.manpages: Install it. +''' +''' Revision 1.1.2.2 2003/10/28 05:48:08 dan +''' - Re-add debian/patches/80_glibc232-locales-nb_NO-fix.dpatch, which had +''' gotten lost. +''' - Re-add typo fixes to iconv.1 and rpcgen.1. +''' - Merge iconv.1 fix to iconv.pod. +''' - Fix ld.so name in ld.so.8. +''' - Re-add fix for locale-gen and POSIXLY_CORRECT. +''' +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH MTRACE 1 "November 2003" "mtrace (glibc)" "Debian" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +mtrace \- Interpret output from MALLOC_TRACE +.SH "SYNOPSIS" +mtrace [OPTION]... [Binary] MtraceData +.SH "DESCRIPTION" +The \fBmtrace\fR interprets the output from when the MALLOC_TRACE +environment variable is set. +.SH "AUTHOR" +\fImtrace\fR was written by Ulrich Drepper as part of the GNU C Library. +.PP +This man page was written by Jeff Bailey . + +.rn }` '' +.IX Title "MTRACE 1" +.IX Name "mtrace \- Interpret output from MALLOC_TRACE" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- glibc-2.4.orig/debian/local/manpages/iconvconfig.8 +++ glibc-2.4/debian/local/manpages/iconvconfig.8 @@ -0,0 +1,232 @@ +.rn '' }` +''' $RCSfile: iconvconfig.8,v $$Revision: 1.1 $$Date: 2004-11-06 05:21:19 -0500 (sam, 06 nov 2004) $ +''' +''' $Log: iconvconfig.8,v $ +''' Revision 1.1 2003/11/03 17:37:27 jbailey +''' - debian/local/manpages/gencat.1: New file. +''' - debian/local/manpages/trace.1: New file. +''' - debian/debhelper.in/libc-dev.manpages: Install them. +''' - debian/local/manpages/iconvconfig.8: New file. +''' - debian/debhelper.in/libc.manpages: Install it. +''' +''' Revision 1.1.2.2 2003/10/28 05:48:08 dan +''' - Re-add debian/patches/80_glibc232-locales-nb_NO-fix.dpatch, which had +''' gotten lost. +''' - Re-add typo fixes to iconv.1 and rpcgen.1. +''' - Merge iconv.1 fix to iconv.pod. +''' - Fix ld.so name in ld.so.8. +''' - Re-add fix for locale-gen and POSIXLY_CORRECT. +''' +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH ICONVCONFIG 8 "November 2003" "iconvconfig (glibc)" "Debian" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +iconvconfig \- Create fastloading iconv module configuration file +.SH "SYNOPSIS" +iconvconfig [OPTION...] [DIR...] +.SH "DESCRIPTION" +The \fBiconvconfig\fR program generates a cache that internationalised +applications can use to reduce loading time. +.PP +.TP +\fB--prefix\fR \fIPATH\fR +Prefix used for all file accesses +.SH "AUTHOR" +\fIiconvconfig\fR was written by Ulrich Drepper as part of the GNU C Library. +.PP +This man page was written by Jeff Bailey . + +.rn }` '' +.IX Title "ICONVCONFIG 8" +.IX Name "iconvconfig - Create fastloading iconv module configuration file" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- glibc-2.4.orig/debian/local/manpages/sprof.pod +++ glibc-2.4/debian/local/manpages/sprof.pod @@ -0,0 +1,28 @@ +=head1 NAME + +sprof - Read and display shared object profiling data + +=head1 SYNOPSIS + +B B<-p>|B<-c> [B<-q>] + +=head1 DESCRIPTION + +B<--call-pairs>, B<-c> + + print list of count paths and their number of use + +B<--flat-profile>, B<-p> + + generate flat profile with counts and ticks + +B<--graph>, B<-q> + + generate call graph + +=head1 AUTHOR + +I was written by Ulrich Drepper for the GNU C Library + +This man page was written by Joel Klecker Eespy@debian.orgE for +the Debian GNU/Linux system. --- glibc-2.4.orig/debian/local/manpages/locale-gen.8 +++ glibc-2.4/debian/local/manpages/locale-gen.8 @@ -0,0 +1,101 @@ +.\" This -*- nroff -*- file has been generated from +.\" DocBook SGML with docbook-to-man on Debian GNU/Linux. +...\" +...\" transcript compatibility for postscript use. +...\" +...\" synopsis: .P! +...\" +.de P! +\\&. +.fl \" force out current output buffer +\\!%PB +\\!/showpage{}def +...\" the following is from Ken Flowers -- it prevents dictionary overflows +\\!/tempdict 200 dict def tempdict begin +.fl \" prolog +.sy cat \\$1\" bring in postscript file +...\" the following line matches the tempdict above +\\!end % tempdict % +\\!PE +\\!. +.sp \\$2u \" move below the image +.. +.de pF +.ie \\*(f1 .ds f1 \\n(.f +.el .ie \\*(f2 .ds f2 \\n(.f +.el .ie \\*(f3 .ds f3 \\n(.f +.el .ie \\*(f4 .ds f4 \\n(.f +.el .tm ? font overflow +.ft \\$1 +.. +.de fP +.ie !\\*(f4 \{\ +. ft \\*(f4 +. ds f4\" +' br \} +.el .ie !\\*(f3 \{\ +. ft \\*(f3 +. ds f3\" +' br \} +.el .ie !\\*(f2 \{\ +. ft \\*(f2 +. ds f2\" +' br \} +.el .ie !\\*(f1 \{\ +. ft \\*(f1 +. ds f1\" +' br \} +.el .tm ? font underflow +.. +.ds f1\" +.ds f2\" +.ds f3\" +.ds f4\" +'\" t +.ta 8n 16n 24n 32n 40n 48n 56n 64n 72n +.TH "LOCALE-GEN" "8" +.SH "NAME" +locale-gen \(em generates localisation files from templates +.SH "SYNOPSIS" +.PP +\fBlocale-gen\fP +.SH "DESCRIPTION" +.PP +This manual page documents briefly the +\fBlocale-gen\fP command. +.PP +By default, the locale package which provides the base support for +localisation of libc-based programs does not contain usable localisation +files for every supported language. This limitation has became necessary +because of the substantial size of such files and the large number of +languages supported by libc. As a result, Debian uses a special +mechanism where we prepare the actual localisation files on the target +host and distribute only the templates for them. +.PP +\fBlocale-gen\fP is a program that reads the file +\fB/etc/locale.gen\fP and invokes +\fBlocaledef\fP for the chosen localisation profiles. +Run \fBlocale-gen\fP after you have modified the \fB/etc/locale.gen\fP file. + + +.SH "FILES" +.PP +\fB/etc/locale.gen\fP +.PP +The main configuration file, which has a simple format: every +line that is not empty and does not begin with a # is treated as a +locale definition that is to be built. + +.SH "SEE ALSO" +.PP +localedef (1), locale (1), locale.gen (5). +.SH "AUTHOR" +.PP +This manual page was written by Eduard Bloch for +the \fBDebian GNU/Linux\fP system (but may be used by others). Permission is +granted to copy, distribute and/or modify this document under +the terms of the GNU Free Documentation +License, Version 1.1 or any later version published by the Free +Software Foundation; with no Invariant Sections, no Front-Cover +Texts and no Back-Cover Texts. +...\" created by instant / docbook-to-man, Sat 02 Mar 2002, 16:43 --- glibc-2.4.orig/debian/local/manpages/glibcbug.1 +++ glibc-2.4/debian/local/manpages/glibcbug.1 @@ -0,0 +1,50 @@ +'\" t +.\" ** The above line should force tbl to be a preprocessor ** +.\" Man page for man +.\" +.\" Copyright (C), 2002 Free Software Foundation, Inc. +.\" +.\" You may distribute under the terms of the GNU General Public +.\" License as specified in the file COPYING that comes with the +.\" glibc distribution. +.\" +.\" +.TH glibcbug 1 "10 January 2002" "" "Debian GNU/Linux" +.SH "NAME" +glibcbug \- Report a bug to the Glibc developers +.SH "SYNOPSIS" +.B glibcbug +.SH "DESCRIPTION" +.B glibcbug +is a tool for reporting bugs to the glibc maintainers. +It automatically starts an editor where the user can enter details +of the bug. On completion, the bug is sent to the appropriate +address. +The User should replace the comments (text surrounded by +, and fill in the Subject: and From: lines with +a summary and e-mail address. + +If the user believes the bug is related to Debian rather than to the +glibc (libc6) package, then the +.B reportbug +command should be used instead. +.SH "ENVIRONMENT" +.B glibcbug +will utilize the following enviromntal variables if they exist: +.TP +.B EDITOR +and +.B VISUAL +Specifies the preferred editor. If +neither are set, +.B glibcbug +will default to +.B /usr/bin/sensible-editor +to determine a working editor. +.TP +.B HOME +Directory in which the failed bug report is saved if the mail fails. +.SH "SEE ALSO" +reportbug(1) +.SH "AUTHOR" +Alastair McKinstry . --- glibc-2.4.orig/debian/local/manpages/Makefile +++ glibc-2.4/debian/local/manpages/Makefile @@ -0,0 +1,20 @@ +#! /usr/bin/make -f + +DIRS := de es fr id pl pt_BR + +SGML_MAN = locale-gen.8 + +all: $(patsubst %.pod,%.1,$(wildcard *.pod)) $(SGML_MAN) po4a-man +%.1: %.pod + pod2man --center="Debian GNU/Linux" --release="etch" $< > $@ + +locale-gen.8: locale-gen.8.sgml + docbook-to-man $< > $@ + +po4a-man: + po4a -q po4a.cfg + +clean: + po4a -q po4a.cfg + $(foreach dir, $(DIRS), rm -rf $(dir)/*.8) + rm -f po/*~ --- glibc-2.4.orig/debian/local/manpages/nscd.conf.5 +++ glibc-2.4/debian/local/manpages/nscd.conf.5 @@ -0,0 +1,180 @@ +.\" Placed in the Public Domain by Sebastian Rittau +.TH NSCD.CONF 5 "07 January 2001" +.UC 5 +.SH NAME +nscd.conf \- configuration file for Name Service Caching Daemon +.hy 0 +.SH DESCRIPTION +.I /etc/nscd.conf +configures the caches used by +.BR nscd (8) +as well as some generic options. +.BR nscd (8) +is able to use a configuration file at a different location, +when supplied with the +.IR -f ", " --config-file +command line option. + +.PP +The configuration file consists of a set of lines. +Empty lines, and text after a '#' is ignored. +All remaining lines denote the setting of an option. +White space before and after options, and between +options and option arguments is ignored. + +There are two kinds of options: General options influence +.BR nscd (8)'s +general behaviour, while cache related options only affect the +specified cache. Options are set like this: +.nf + + general_option option + cache_option cache_name option +.fi +.SH GENERAL OPTIONS +.TP +.BI logfile \ file +Specifies the name of the debug log-file that +.BR nscd (8) +should use if +.B debug-level +is higher than +.BR 0 . +If this option is not set, +.BR nscd (8) +will write its debug output to stderr. +.TP +.BI debug-level \ level +If +.I level +is higher than +.BR 0 , +.BR nscd (8) +will create some debug output. The higher the level, the more verbose +the output. +.TP +.BI threads \ #threads +This option sets the number of threads that +.BR nscd (8) +should use by default. It can be overridden by calling +.BR nscd (8) +with the +.I -t +or +.I --nthreads +argument. If neither this configuration option nor the command line +argument is given, +.BR nscd (8) +uses 5 threads by default. The minimum is 3. More threads means more +simultaneous connections that +.BR nscd (8) +can handle. +.TP +.BI server-user \ user +By default, +.BR nscd (8) +is run as user root. This option can be set to force +.BR nscd (8) +to drop root privileges after startup. It cannot be used when +.BR nscd (8) +is called with the +.I -S +or +.I --secure +argument. Also note that some services require that nscd run as root, so +using this may break those lookup services. +.SH CACHE OPTIONS +All cache options take two arguments. The first one denotes +the service or cache the option should affect. Currently +.I service +can be one of +.BR passwd , +.BR group , +or +.BR hosts . +.TP +.BI enable-cache \ service\ bool +.I bool +must be one of +.B yes +or +.BR no . +Each cache is disabled by default and must be enabled explicitly +by setting this options to +.BR yes . +.TP +.BI positive-time-to-live \ service\ secs +This is the number of seconds after which a cached entry is +removed from the cache. This defaults to 3600 seconds (i. e. +one hour). +.TP +.BI negative-time-to-live \ service\ secs +If an entry is not found by the Name Service, it is added to +the cache and marked as "not existent". This option sets the number +of seconds after which such a not existent entry is removed from +the cache. This defaults to 20 seconds for the +.B password +and +.B host +caches and to 60 seconds for the +.B group +cache. +.TP +.BI suggested-size \ service\ prime-number +This option sets the size of the hash that is used to store the +cache entries. As this is a hash, it should be reasonably larger +than the maximum number of entries that is expected to be cached +simultaneously and should be a prime number. It defaults to a +size of 211 entries. +.TP +.BI check-files \ service\ bool +.I bool +must be one of +.B yes +(default) or +.BR no . +If file checking is enabled, +.BR nscd (8) +periodically checks the modification time of +.IR /etc/passwd , +.IR /etc/group , +or +.I /etc/hosts +(for the +.BR passwd , +.BR group , +and +.B host +cache respectively) +and invalidates the cache if the file has changed since the +last check. +.SH EXAMPLE +.nf + +# This is a comment. + + logfile /var/log/nscd.log + threads 6 + server-user nobody + debug-level 0 + + enable-cache passwd yes + positive-time-to-live passwd 600 + negative-time-to-live passwd 20 + suggested-size passwd 211 + check-files passwd yes + + enable-cache group yes + positive-time-to-live group 3600 + negative-time-to-live group 60 + suggested-size group 211 + check-files group yes + + enable-cache hosts yes + positive-time-to-live hosts 3600 + negative-time-to-live hosts 20 + suggested-size hosts 211 + check-files hosts yes +.fi +.SH SEE ALSO +nscd(8), nsswitch.conf(5) --- glibc-2.4.orig/debian/local/manpages/iconv.1 +++ glibc-2.4/debian/local/manpages/iconv.1 @@ -0,0 +1,254 @@ +.rn '' }` +''' $RCSfile: iconv.1,v $$Revision: 1.1.2.2 $$Date: 2003/10/28 05:48:08 $ +''' +''' $Log: iconv.1,v $ +''' Revision 1.1.2.2 2003/10/28 05:48:08 dan +''' - Re-add debian/patches/80_glibc232-locales-nb_NO-fix.dpatch, which had +''' gotten lost. +''' - Re-add typo fixes to iconv.1 and rpcgen.1. +''' - Merge iconv.1 fix to iconv.pod. +''' - Fix ld.so name in ld.so.8. +''' - Re-add fix for locale-gen and POSIXLY_CORRECT. +''' +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +TH ICONV 1 "etch" "20/Jun/2004" "Debian GNU/Linux" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +iconv - Convert encoding of given files from one encoding to another +.SH "SYNOPSIS" +iconv \fB\-f\fR \fIencoding\fR \fB\-t\fR \fIencoding\fR \fIinputfile\fR +.SH "DESCRIPTION" +The \fBiconv\fR program converts the encoding of characters in +\fIinputfile\fR from one coded character set to another. The result is +written to standard output unless otherwise specified by the +\fB\-\-output\fR option. +.TP +\fB\-\-from\-code\fR, \fB\-f\fR \fIencoding\fR +Convert characters from \fIencoding\fR. +.TP +\fB\-\-to\-code\fR, \fB\-t\fR \fIencoding\fR +Convert characters to \fIencoding\fR. +.TP +\fB\-\-list\fR, \fB\-l\fR +List known coded character sets. +.TP +\fB\-c\fR +Omit invalid characters from output. +.TP +\fB\-\-output\fR, \fB\-o\fR \fIfile\fR +Specify output file (instead of stdout). +.TP +\fB\-\-silent\fR, \fB\-s\fR +Supress warnings. +.TP +\fB\-\-verbose\fR +Print progress information. +.TP +\fB\-\-help\fR, \fB\-?\fR +Give help list. +.TP +\fB\-\-usage\fR +Give a short usage message. +.TP +\fB\-\-version\fR, \fB\-V\fR +Print program version. +.SH "AUTHOR" +\fIiconv\fR was written by Ulrich Drepper as part of the GNU C Library. +.PP +This man page was written by Joel Klecker , +for the Debian GNU/Linux system. + +.rn }` '' +.IX Title "ICONV 1" +.IX Name "iconv - Convert encoding of given files from one encoding to another" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- glibc-2.4.orig/debian/local/manpages/rpcgen.1 +++ glibc-2.4/debian/local/manpages/rpcgen.1 @@ -0,0 +1,443 @@ +.\" @(#)rpcgen.new.1 1.1 90/11/09 TIRPC 1.0; from 40.10 of 10/10/89 +.\" Copyright (c) 1988,1990 Sun Microsystems, Inc. - All Rights Reserved. +.nr X +.if \nX=0 .ds x} rpcgen 1 "" "\&" +.if \nX=1 .ds x} rpcgen 1 "" +.if \nX=2 .ds x} rpcgen 1 "" "\&" +.if \nX=3 .ds x} rpcgen "" "" "\&" +.TH \*(x} +.SH NAME +\f4rpcgen\f1 \- an RPC protocol compiler +.SH SYNOPSIS +.ft 4 +.nf +rpcgen \f2infile\f4 +.fi +.ft 1 +.br +.ft 4 +.nf +rpcgen [\-D\f2name\f4[=\f2value\f4]] [\-T] [\-K \f2secs\fP] \f2infile\f4 +.fi +.ft 1 +.br +.ft 4 +.nf +rpcgen \-c|\-h|\-l|\-m|\-M|\-t [\-o \f2outfile\f4 ] \f2infile\f4 +.fi +.ft 1 +.br +.ft 4 +.nf +rpcgen [\-I] \-s \f2nettype\f4 [\-o \f2outfile\f4] \f2infile\f4 +.fi +.ft 1 +.br +.ft 4 +.nf +rpcgen \-n \f2netid\f4 [\-o \f2outfile\f4] \f2infile\f4 +.ft 1 +.SH DESCRIPTION +.P +\f4rpcgen\f1 +is a tool that generates C code to implement an RPC protocol. +The input to +\f4rpcgen\f1 +is a language similar to C known as +RPC Language (Remote Procedure Call Language). +.P +\f4rpcgen\f1 +is normally used as in the first synopsis where +it takes an input file and generates up to four output files. +If the +\f2infile\f1 +is named +\f4proto.x\f1, +then +\f4rpcgen\f1 +will generate a header file in +\f4proto.h\f1, +XDR routines in +\f4proto_xdr.c\f1, +server-side stubs in +\f4proto_svc.c\f1, +and client-side stubs in +\f4proto_clnt.c\f1. +With the +\f4\-T\f1 +option, +it will also generate the RPC dispatch table in +\f4proto_tbl.i\f1. +With the +\f4\-Sc\f1 +option, +it will also generate sample code which would illustrate how to use the +remote procedures on the client side. This code would be created in +\f4proto_client.c\f1. +With the +\f4\-Ss\f1 +option, +it will also generate a sample server code which would illustrate how to write +the remote procedures. This code would be created in +\f4proto_server.c\f1. +.P +The server created can be started both by the port monitors +(for example, \f4inetd\f1 or \f4listen\f1) +or by itself. +When it is started by a port monitor, +it creates servers only for the transport for which +the file descriptor \f40\fP was passed. +The name of the transport must be specified +by setting up the environmental variable +\f4PM_TRANSPORT\f1. +When the server generated by +\f4rpcgen\f1 +is executed, +it creates server handles for all the transports +specified in +\f4NETPATH\f1 +environment variable, +or if it is unset, +it creates server handles for all the visible transports from +\f4/etc/netconfig\f1 +file. +Note: +the transports are chosen at run time and not at compile time. +When the server is self-started, +it backgrounds itself by default. +A special define symbol +\f4RPC_SVC_FG\f1 +can be used to run the server process in foreground. +.P +The second synopsis provides special features which allow +for the creation of more sophisticated RPC servers. +These features include support for user provided +\f4#defines\f1 +and RPC dispatch tables. +The entries in the RPC dispatch table contain: +.RS +.PD 0 +.TP 3 +\(bu +pointers to the service routine corresponding to that procedure, +.TP +\(bu +a pointer to the input and output arguments +.TP +\(bu +the size of these routines +.PD +.RE +A server can use the dispatch table to check authorization +and then to execute the service routine; +a client library may use it to deal with the details of storage +management and XDR data conversion. +.P +The other three synopses shown above are used when +one does not want to generate all the output files, +but only a particular one. +Some examples of their usage is described in the +EXAMPLE +section below. +When +\f4rpcgen\f1 +is executed with the +\f4\-s\f1 +option, +it creates servers for that particular class of transports. +When +executed with the +\f4\-n\f1 +option, +it creates a server for the transport specified by +\f2netid\f1. +If +\f2infile\f1 +is not specified, +\f4rpcgen\f1 +accepts the standard input. +.P +The C preprocessor, +\f4cc \-E\f1 +[see \f4cc\fP(1)], +is run on the input file before it is actually interpreted by +\f4rpcgen\f1. +For each type of output file, +\f4rpcgen\f1 +defines a special preprocessor symbol for use by the +\f4rpcgen\f1 +programmer: +.P +.PD 0 +.TP 12 +\f4RPC_HDR\f1 +defined when compiling into header files +.TP +\f4RPC_XDR\f1 +defined when compiling into XDR routines +.TP +\f4RPC_SVC\f1 +defined when compiling into server-side stubs +.TP +\f4RPC_CLNT\f1 +defined when compiling into client-side stubs +.TP +\f4RPC_TBL\f1 +defined when compiling into RPC dispatch tables +.PD +.P +Any line beginning with +`\f4%\f1' +is passed directly into the output file, +uninterpreted by +\f4rpcgen\f1. +.P +For every data type referred to in +\f2infile\f1, +\f4rpcgen\f1 +assumes that there exists a +routine with the string +\f4xdr_\f1 +prepended to the name of the data type. +If this routine does not exist in the RPC/XDR +library, it must be provided. +Providing an undefined data type +allows customization of XDR routines. +.br +.ne 10 +.P +The following options are available: +.TP +\f4\-a\f1 +Generate all the files including sample code for client and server side. +.TP +\f4\-b\f1 +This generates code for the SunOS4.1 style of rpc. It is +for backward compatibilty. This is the default. +.TP +\f4\-5\f1 +This generates code for the SysVr4 style of rpc. It is used by the +Transport Independent RPC that is in Svr4 systems. +By default rpcgen generates code for SunOS4.1 stype of rpc. +.TP +\f4\-c\f1 +Compile into XDR routines. +.TP +\f4\-C\f1 +Generate code in ANSI C. This option also generates code that could be +compiled with the C++ compiler. This is the default. +.TP +\f4\-k\f1 +Generate code in K&R C. The default is ANSI C. +.TP +\f4\-D\f2name\f4[=\f2value\f4]\f1 +Define a symbol +\f2name\f1. +Equivalent to the +\f4#define\f1 +directive in the source. +If no +\f2value\f1 +is given, +\f2value\f1 +is defined as \f41\f1. +This option may be specified more than once. +.TP +\f4\-h\f1 +Compile into +\f4C\f1 +data-definitions (a header file). +\f4\-T\f1 +option can be used in conjunction to produce a +header file which supports RPC dispatch tables. +.TP +\f4\-I\f1 +Generate a service that can be started from inetd. The default is +to generate a static service that handles transports selected with \f4\-s\f1. +Using \f4\-I\f1 allows starting a service by either method. +.TP +\f4-K\f2 secs\f1 +By default, services created using \f4rpcgen\fP wait \f4120\fP seconds +after servicing a request before exiting. +That interval can be changed using the \f4-K\fP flag. +To create a server that exits immediately upon servicing a request, +\f4-K\ 0\fP can be used. +To create a server that never exits, the appropriate argument is +\f4-K\ -1\fP. +.IP +When monitoring for a server, +some portmonitors, like +\f4listen\fP(1M), +.I always +spawn a new process in response to a service request. +If it is known that a server will be used with such a monitor, the +server should exit immediately on completion. +For such servers, \f4rpcgen\fP should be used with \f4-K\ -1\fP. +.TP +\f4\-l\f1 +Compile into client-side stubs. +.TP +\f4\-m\f1 +Compile into server-side stubs, +but do not generate a \(lqmain\(rq routine. +This option is useful for doing callback-routines +and for users who need to write their own +\(lqmain\(rq routine to do initialization. +.TP +\f4\-M\f1 +Generate multithread-safe stubs for passing arguments +and results between rpcgen-generated code and user written code. +This option is useful for users who want to use threads in their code. +.TP +\f4\-n \f2netid\f1 +Compile into server-side stubs for the transport +specified by +\f2netid\f1. +There should be an entry for +\f2netid\f1 +in the +netconfig database. +This option may be specified more than once, +so as to compile a server that serves multiple transports. +.TP +\f4\-N\f1 +Use the newstyle of rpcgen. This allows procedures to have multiple arguments. +It also uses the style of parameter passing that closely resembles C. So, when +passing an argument to a remote procedure you do not have to pass a pointer to +the argument but the argument itself. This behaviour is different from the oldstyle +of rpcgen generated code. The newstyle is not the default case because of +backward compatibility. +.TP +\f4\-o \f2outfile\f1 +Specify the name of the output file. +If none is specified, +standard output is used +(\f4\-c\f1, +\f4\-h\f1, +\f4\-l\f1, +\f4\-m\f1, +\f4\-n\f1, +\f4\-s\f1, +\f4\-Sc\f1, +\f4\-Sm\f1, +\f4\-Ss\f1, +and +\f4\-t\f1 +modes only). +.TP +\f4\-s \f2nettype\f1 +Compile into server-side stubs for all the +transports belonging to the class +\f2nettype\f1. +The supported classes are +\f4netpath\f1, +\f4visible\f1, +\f4circuit_n\f1, +\f4circuit_v\f1, +\f4datagram_n\f1, +\f4datagram_v\f1, +\f4tcp\f1, +and +\f4udp\f1 +[see \f4rpc\fP(3N) +for the meanings associated with these classes]. +This option may be specified more than once. +Note: +the transports are chosen at run time and not at compile time. +.TP +\f4\-Sc\f1 +Generate sample code to show the use of remote procedure and how to bind +to the server before calling the client side stubs generated by rpcgen. +.TP +\f4\-Sm\f1 +Generate a sample Makefile which can be used for compiling the application. +.TP +\f4\-Ss\f1 +Generate skeleton code for the remote procedures on the server side. You would need +to fill in the actual code for the remote procedures. +.TP +\f4\-t\f1 +Compile into RPC dispatch table. +.TP +\f4\-T\f1 +Generate the code to support RPC dispatch tables. +.P +The options +\f4\-c\f1, +\f4\-h\f1, +\f4\-l\f1, +\f4\-m\f1, +\f4\-s\f1 +and +\f4\-t\f1 +are used exclusively to generate a particular type of file, +while the options +\f4\-D\f1 +and +\f4\-T\f1 +are global and can be used with the other options. +.br +.ne 5 +.SH NOTES +The RPC Language does not support nesting of structures. +As a work-around, +structures can be declared at the top-level, +and their name used inside other structures in +order to achieve the same effect. +.P +Name clashes can occur when using program definitions, +since the apparent scoping does not really apply. +Most of these can be avoided by giving +unique names for programs, +versions, +procedures and types. +.P +The server code generated with +\f4\-n\f1 +option refers to the transport indicated by +\f2netid\f1 +and hence is very site specific. +.SH EXAMPLE +The following example: +.IP +.ft 4 +$ rpcgen \-T prot.x +.ft 1 +.P +generates the five files: +\f4prot.h\f1, +\f4prot_clnt.c\f1, +\f4prot_svc.c\f1, +\f4prot_xdr.c\f1 +and +\f4prot_tbl.i\f1. +.P +The following example sends the C data-definitions (header file) +to the standard output. +.IP +.ft 4 +$ rpcgen \-h prot.x +.ft 1 +.P +To send the test version of the +\f4-DTEST\f1, +server side stubs for +all the transport belonging to the class +\f4datagram_n\f1 +to standard output, use: +.IP +.ft 4 +$ rpcgen \-s datagram_n \-DTEST prot.x +.ft 1 +.P +To create the server side stubs for the transport indicated +by +\f2netid\f1 +\f4tcp\f1, +use: +.IP +.ft 4 +$ rpcgen \-n tcp \-o prot_svc.c prot.x +.ft 1 +.SH "SEE ALSO" +\f4cc\fP(1). --- glibc-2.4.orig/debian/local/manpages/update-locale.8 +++ glibc-2.4/debian/local/manpages/update-locale.8 @@ -0,0 +1,49 @@ +.TH UPDATE-LOCALE 8 "April 2006" "Debian GNU/Linux" +.SH "NAME" +.LP +update-locale \- Modify global locale settings +.SH "SYNTAX" +.LP +update-locale +.RI [ OPTIONS ] +[\fIvar\fP=\fIlocale\fP | \fIvar\fP] +[...] +.SH "DESCRIPTION" +.LP +This program can be called by maintainer scripts when Debian packages are +installed or removed, it updates the \fB/etc/default/locale\fP file to +reflect changes in system configuration related to global locale settings. +When variables have no value assigned, they are removed from the locale +file. +Some basic checks are performed to ensure that requested settings are valid. +.SH "OPTIONS" +.TP +.B \-\-help +Display an help message and exit. +.TP +.B \-\-reset +Variables which are not set on command-line are cleared out. +.TP +.BI \-\-locale\-file " FILE" +Define file containing locale variables. (Default: +.BR /etc/default/locale ) +.TP +.B \-\-no\-checks +Do not perform sanity checks on locale variables. +.SH "EXAMPLE" +.nf +The command +.ft B + update-locale LANG=en_CA.UTF-8 LANGUAGE +.ft R +sets \fBLANG\fP to \fBen_CA.UTF-8\fP and removes definitions for \fBLANGUAGE\fP. +.SH "FILES" +.TP +.B /etc/default/locale +File where global locale settings are stored. +.SH "AUTHOR" +.LP +Denis Barbier +.SH "SEE ALSO" +.LP +locale\-gen(8), locale(1) --- glibc-2.4.orig/debian/local/manpages/locale.pod +++ glibc-2.4/debian/local/manpages/locale.pod @@ -0,0 +1,95 @@ +=head1 NAME + +locale - Get locale-specific information. + +=head1 SYNOPSIS + +B B<[> C<-a> | C<-m>B<]> + +B B<[> -ck B<]> I... + +=head1 DESCRIPTION + +The I program writes information about the current locale +environment, or all locales, to standard output. + +When invoked without arguments, I summarizes the current +locale environment for each locale category defined by the LC_* +environment variables. + +B<-a>, B<--all-locales> + + Write names of available locales. + +B<-m>, B<--charmaps> + + Write names of available charmaps. + +=head2 Output Format: + +B<-c>, B<--category-name> + + Write names of selected categories. + +B<-k>, B<--keyword-name> + + Write names and values of selected keywords. + +=head1 ENVIRONMENT VARIABLES + +LC_CTYPE + + Character classification and case conversion. + +LC_COLLATE + + Collation order. + +LC_TIME + + Date and time formats. + +LC_NUMERIC + + Non-monetary numeric formats. + +LC_MONETARY + + Monetary formats. + +LC_MESSAGES + + Formats of informative and diagnostic messages and + interactive responses. + +LC_PAPER + + Paper size. + +LC_NAME + + Name formats. + +LC_ADDRESS + + Address formats and location information. + +LC_TELEPHONE + + Telephone number formats. + +LC_MEASUREMENT + + Measurement units (Metric or Other). + +LC_IDENTIFICATION + + Metadata about the locale information. + +=head1 AUTHOR + +I was written by Ulrich Drepper for the GNU C Library. + +This manpage was written by Joel Klecker Eespy@debian.orgE for +the Debian GNU/Linux system, and expanded by Alastair McKinstry +Emckinstry@computer.orgE --- glibc-2.4.orig/debian/local/manpages/ld.so.8 +++ glibc-2.4/debian/local/manpages/ld.so.8 @@ -0,0 +1,113 @@ +.TH "LD.SO" 8 "14 March 1998" +.SH NAME +ld.so/ld-linux.so \- dynamic linker/loader +.SH DESCRIPTION +.B ld.so +loads the shared libraries needed by a program, prepares the program +to run, and then runs it. +Unless explicitly specified via the +.B \-static +option to +.B ld +during compilation, all Linux programs are incomplete and require +further linking at run time. +.PP +The necessary shared libraries needed by the program are searched for +in the following order +.IP o +Using the environment variable +.B LD_LIBRARY_PATH +.RB ( LD_AOUT_LIBRARY_PATH +for a.out programs). +Except if the executable is a setuid/setgid binary, in which case it +is ignored. +.IP o +From the cache file +.BR /etc/ld.so.cache +which contains a compiled list of candidate libraries previously found +in the augmented library path. +.IP o +In the default path +.BR /usr/lib , +and then +.BR /lib . +.SH ENVIRONMENT +.TP +.B LD_LIBRARY_PATH +A colon-separated list of directories in which to search for +ELF libraries at execution-time. +Similar to the +.B PATH +environment variable. +.TP +.B LD_PRELOAD +A whitespace-separated list of additional, user-specified, ELF shared +libraries to be loaded before all others. +This can be used to selectively override functions in other shared libraries. +For setuid/setgid ELF binaries, only libraries in the standard search +directories that are also setgid will be loaded. +.TP +.B LD_TRACE_LOADED_OBJECTS +If present, causes the program to list its dynamic library dependencies, +as if run by ldd, instead of running normally. +.TP +.B LD_BIND_NOW +If present, causes the dynamic linker to resolve all symbols at program +startup instead of when they are first referenced. +.TP +.B LD_AOUT_LIBRARY_PATH +A colon-separated list of directories in which to search for +a.out libraries at execution-time. +Similar to the +.B PATH +environment variable. +.TP +.B LD_AOUT_PRELOAD +The name of an additional, user-specified, a.out shared library to be loaded +after all others. +This can be used to selectively override functions in other shared libraries. +.TP +.B LD_NOWARN +Suppress warnings about a.out libraries with incompatible minor +version numbers. +.TP +.B LD_KEEPDIR +Don't ignore the directory in the names of a.out libraries to be loaded. +Use of this option is strongly discouraged. +.SH FILES +.PD 0 +.TP 20 +.B /lib/ld.so +a.out dynamic linker/loader +.TP 20 +.B /lib/ld-linux.so.* +ELF dynamic linker/loader +.TP +.B /etc/ld.so.cache +File containing a compiled list of directories in which to search for +libraries and an ordered list of candidate libraries. +.TP +.B /etc/ld.so.preload +File containing a whitespace separated list of ELF shared libraries to +be loaded before the program. +libraries and an ordered list of candidate libraries. +.TP +.B lib*.so* +shared libraries +.PD +.SH SEE ALSO +.BR ldd (1), +.BR ldconfig (8). +.SH BUGS +.LP +Currently +.B ld.so +has no means of unloading and searching for compatible or newer version of +libraries. +.PP +.B ld.so +functionality is only available for executables compiled using libc version +4.4.3 or greater. +.SH AUTHORS +David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus +Torvalds, Lars Wirzenius and Mitch D'Souza (not necessarily in that order). --- glibc-2.4.orig/debian/local/manpages/ldconfig.8 +++ glibc-2.4/debian/local/manpages/ldconfig.8 @@ -0,0 +1,165 @@ +.TH ldconfig 8 "30 October 2000" +.SH NAME +ldconfig \- configure dynamic linker run-time bindings +.SH SYNOPSIS +ldconfig +.RB [OPTION...] +.SH DESCRIPTION +.B ldconfig +creates the necessary links and cache (for use by the run-time linker, +.IR ld.so ) +to the most recent shared libraries found in the directories specified +on the command line, in the file +.IR /etc/ld.so.conf , +and in the trusted directories +.RI ( /usr/lib +and +.IR /lib ). +.B ldconfig +checks the header and file names of the libraries it encounters when +determining which versions should have their links updated. +.B ldconfig +ignores symbolic links when scanning for libraries. +.PP +.B ldconfig +will attempt to deduce the type of ELF libs (ie. libc 5.x or libc 6.x (glibc)) +based on what C libraries if any the library was linked against, therefore when +making dynamic libraries, it is wise to explicitly link against libc (use -lc). +.B ldconfig +is capable of storing multiple ABI types of libraries into a single cache on +architectures which allow native running of multiple ABIs, like +ia32/ia64/x86_64 or sparc32/sparc64. +.PP +Some existing libs do not contain enough information to allow the deduction of +their type, therefore the +.IR /etc/ld.so.conf +file format allows the specification of an expected type. This is +.B only +used for those ELF libs which we can not work out. The format +is like this "dirname=TYPE", where type can be libc4, libc5 or libc6. +(This syntax also works on the command line). Spaces are +.B not +allowed. Also see the +.B -p +option. +.PP +Directory names containing an +.B = +are no longer legal unless they also have an expected type specifier. +.PP +.B ldconfig +should normally be run by the super-user as it may require write +permission on some root owned directories and files. If you use +.B -r +option to change the root directory, you don't have to be super-user though +as long as you have sufficient right to that directory tree. +.SH OPTIONS +.TP +.B \-v\ \-\-verbose +Verbose mode. +Print current version number, the name of each directory as it +is scanned and any links that are created. +.TP +.B \-n +Only process directories specified on the command line. +Don't process the trusted directories +.RI ( /usr/lib +and +.IR /lib ) +nor those specified in +.IR /etc/ld.so.conf . +Implies +.BR \-N . +.TP +.B \-N +Don't rebuild the cache. +Unless +.B \-X +is also specified, links are still updated. +.TP +.B \-X +Don't update links. +Unless +.B \-N +is also specified, the cache is still rebuilt. +.TP +.B \-f conf +Use +.B conf +instead of +.IR /etc/ld.so.conf . +.TP +.B \-C cache +Use +.B cache +instead of +.IR /etc/ld.so.cache . +.TP +.B \-r root +Change to and use +.B root +as the root directory. +.TP +.B \-l +Library mode. +Manually link individual libraries. +Intended for use by experts only. +.TP +.B \-p\ \-\-print-cache +Print the lists of directories and candidate libraries stored in +the current cache. +.TP +.B \-c\ \-\-format=FORMAT +Use +.B FORMAT +for the cache file. Choices are old, new and compat (the default). +.TP +.B \-?\ \-\-help \-\-usage +Print usage information. +.TP +.B \-V\ \-\-version +Print version and exit. +.SH EXAMPLES +.RS +# /sbin/ldconfig -v +.RE +will set up the correct links for the shared binaries and rebuild +the cache. +.RS +# /sbin/ldconfig -n /lib +.RE +as root after the installation of a new shared library will properly update the +shared library symbolic links in /lib. +.SH FILES +.PD 0 +.TP 20 +.B /lib/ld-linux.so.* +execution time linker/loader +.TP 20 +.B /etc/ld.so.conf +File containing a list of colon, space, tab, newline, or comma separated +directories in which to search for libraries. +.TP 20 +.B /etc/ld.so.cache +File containing an ordered list of libraries found in the directories +specified in +.BR /etc/ld.so.conf . +This file is not in human readable format, and is not intended to be +edited. +.TP +.B lib*.so.version +shared libraries +.PD +.SH SEE ALSO +.BR ldd (1), +.BR ld.so (8). +.SH BUGS +.LP +.BR ldconfig , +being a user process, must be run manually and has no means of dynamically +determining and relinking shared libraries for use by +.BR ld.so +when a new shared library is installed. +.SH AUTHORS +Andreas Jaeger. +Manual page written by David Engel and Mitch D'Souza. --- glibc-2.4.orig/debian/local/manpages/sprof.1 +++ glibc-2.4/debian/local/manpages/sprof.1 @@ -0,0 +1,230 @@ +.rn '' }` +''' $RCSfile: sprof.1,v $$Revision: 1.1.2.1 $$Date: 2003/09/22 21:33:35 $ +''' +''' $Log: sprof.1,v $ +''' Revision 1.1.2.1 2003/09/22 21:33:35 jbailey +''' New directory for things we add to the package +''' +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH SPROF 1 "etch" "7/Jan/2001" "Debian GNU/Linux" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +sprof \- Read and display shared object profiling data +.SH "SYNOPSIS" +\fBsprof\fR \fB\-p\fR|\fB\-c\fR [\fB\-q\fR] +.SH "DESCRIPTION" +\fB--call-pairs\fR, \fB\-c\fR +.PP +.Vb 1 +\& print list of count paths and their number of use +.Ve +\fB--flat-profile\fR, \fB\-p\fR +.PP +.Vb 1 +\& generate flat profile with counts and ticks +.Ve +\fB--graph\fR, \fB\-q\fR +.PP +.Vb 1 +\& generate call graph +.Ve +.SH "AUTHOR" +\fIsprof\fR was written by Ulrich Drepper for the GNU C Library +.PP +This man page was written by Joel Klecker for +the Debian GNU/Linux system. + +.rn }` '' +.IX Title "SPROF 1" +.IX Name "sprof - Read and display shared object profiling data" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- glibc-2.4.orig/debian/local/manpages/getconf.pod +++ glibc-2.4/debian/local/manpages/getconf.pod @@ -0,0 +1,37 @@ +=head1 NAME + +getconf - Query system configuration variables + +=head1 SYNOPSIS + +B [B<-v specification>] system_var + +B [B<-v specification>] path_var pathname + +=head1 DESCRIPTION + +B<-v> + + Indicate the specification and version for which to obtain + configuration variables. + +B + + A system configuration variable, as defined by sysconf(3) or + confstr(3). + +B + + A system configuration variable as defined by pathconf(3). This + must be used with a pathname. + +=head1 AUTHOR + +I was written by Roland McGrath for the GNU C Library + +This man page was written by Ben Collins Ebcollins@debian.orgE for +the Debian GNU/Linux system. + +=head1 SEE ALSO + +B(3), B(3), B(3) --- glibc-2.4.orig/debian/local/manpages/nscd.8 +++ glibc-2.4/debian/local/manpages/nscd.8 @@ -0,0 +1,87 @@ +.\" Placed in the Public Domain by Sebastian Rittau . +.Dd January 07, 2001 +.Dt NSCD 8 +.Os "GNU C Library 2.2" +.Sh NAME +.Nm nscd +.Nd name service caching daemon +.Sh SYNOPSIS +.Nm nscd +.Op OPTION... +.Sh DESCRIPTION +.Nm Nscd +caches libc-issued requests to the Name Service. If retrieving +NSS data is fairly expensive, +.Nm nscd +is able to speed up consecutive access to the same data +dramatically and increase overall system performance. +.Nm Nscd +should be run at boot time by +.Pa /etc/init.d/nscd . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl d , Fl -debug +Do not fork and display messages on the current tty. +.El +.Bl -tag -width Ds +.It Fl f , Fl -config-file Ar NAME +Read configuration data from +.Pa NAME . +For a description of the config file format, see nscd.conf(5). +.El +.Bl -tag -width Ds +.It Fl g , Fl -statistic +Print current configuration statistics. +.El +.Bl -tag -width Ds +.It Fl i , Fl -invalidate Ar TABLE +Invalidate the specified +.Pa TABLE , +i. e. forget all data cached therein. This should be used if the +database storing this information has been changed. +.El +.Bl -tag -width Ds +.It Fl K , Fl -shutdown +Quit a running +.Nm nscd +process. +.El +.Bl -tag -width Ds +.It Fl S , Fl -secure Ar TABLE +Use a separate cache for each user. +.El +.Bl -tag -width Ds +.It Fl t , Fl -nthreads Ar NUMBER +Start +.Pa NUMBER +threads. This denotes the maximum number +of requests that can be handled simultaneously. The default is set +in the configuration file. (See nscd.conf(5).) +.El +.Bl -tag -width Ds +.It Fl ? , Fl -help +Print the list of available options. +.El +.Bl -tag -width Ds +.It Fl -usage +Print a short usage message. +.El +.Bl -tag -width Ds +.It Fl V , Fl -version +Print program version. +.El +.Sh FILES +.Bl -tag -width Ds +.It Ar /etc/nscd.conf +.Nm Nscd +configuration file. See nscd.conf(5) for more information. +.El +.Bl -tag -width Ds +.It Ar /etc/nsswitch.conf +Name Service Switch configuration. See nsswitch.conf(5) +for more information. +.El +.Sh SEE ALSO +GNU C Library info file, +.Xr nscd.conf 5 , +.Xr nsswitch.conf 5 --- glibc-2.4.orig/debian/local/manpages/locale.1 +++ glibc-2.4/debian/local/manpages/locale.1 @@ -0,0 +1,268 @@ +.\" Automatically generated by Pod::Man v1.3, Pod::Parser v1.13 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R + +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "LOCALE 1" +.TH LOCALE 1 "2004-12-16" "sarge" "Debian GNU/Linux" +.UC +.SH "NAME" +locale \- Get locale-specific information. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBlocale\fR \fB[\fR \f(CW\-a\fR | \f(CW\-m\fR\fB]\fR +.PP +\&\fBlocale\fR \fB[\fR \-ck \fB]\fR \fIname\fR... +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \fIlocale\fR program writes information about the current locale +environment, or all locales, to standard output. +.PP +When invoked without arguments, \fIlocale\fR summarizes the current +locale environment for each locale category defined by the LC_* +environment variables. +.PP +\&\fB\-a\fR, \fB\-\-all\-locales\fR +.PP +.Vb 1 +\& Write names of available locales. +.Ve +\&\fB\-m\fR, \fB\-\-charmaps\fR +.PP +.Vb 1 +\& Write names of available charmaps. +.Ve +.Sh "Output Format:" +.IX Subsection "Output Format:" +\&\fB\-c\fR, \fB\-\-category\-name\fR +.PP +.Vb 1 +\& Write names of selected categories. +.Ve +\&\fB\-k\fR, \fB\-\-keyword\-name\fR +.PP +.Vb 1 +\& Write names and values of selected keywords. +.Ve +.SH "ENVIRONMENT VARIABLES" +.IX Header "ENVIRONMENT VARIABLES" +These environment variables affect each locale categories for all locale-aware programs: + +\&\s-1LC_CTYPE\s0 +.PP +.Vb 1 +\& Character classification and case conversion. +.Ve +\&\s-1LC_COLLATE\s0 +.PP +.Vb 1 +\& Collation order. +.Ve +\&\s-1LC_TIME\s0 +.PP +.Vb 1 +\& Date and time formats. +.Ve +\&\s-1LC_NUMERIC\s0 +.PP +.Vb 1 +\& Non-monetary numeric formats. +.Ve +\&\s-1LC_MONETARY\s0 +.PP +.Vb 1 +\& Monetary formats. +.Ve +\&\s-1LC_MESSAGES\s0 +.PP +.Vb 2 +\& Formats of informative and diagnostic messages and +\& interactive responses. +.Ve +\&\s-1LC_PAPER\s0 +.PP +.Vb 1 +\& Paper size. +.Ve +\&\s-1LC_NAME\s0 +.PP +.Vb 1 +\& Name formats. +.Ve +\&\s-1LC_ADDRESS\s0 +.PP +.Vb 1 +\& Address formats and location information. +.Ve +\&\s-1LC_TELEPHONE\s0 +.PP +.Vb 1 +\& Telephone number formats. +.Ve +\&\s-1LC_MEASUREMENT\s0 +.PP +.Vb 1 +\& Measurement units (Metric or Other). +.Ve +\&\s-1LC_IDENTIFICATION\s0 +.PP +.Vb 1 +\& Metadata about the locale information. +.Ve +This environment variable can switch against multiple locale database: + +\&\s-1LOCPATH\s0 +.PP +.Vb 1 +\& The directory where locale data is stored. In default, /usr/lib/locale is used. +.Ve + +.SH "FILES" +.IX Header "FILES" +.PP +.PD 0 +.TP 8 +\fI/usr/share/i18n/SUPPORTED\fP +List of supported values (and their associated encoding) for the locale name. +This representation is recommended over +\fB\-\-all\-locales\fR one, due being the system wide supported values. +.PP + +.SH "AUTHOR" +.IX Header "AUTHOR" +\&\fIlocale\fR was written by Ulrich Drepper for the \s-1GNU\s0 C Library. +.PP +This manpage was written by Joel Klecker for +the Debian GNU/Linux system, and expanded by Alastair McKinstry + +.PP + +.SH "SEE ALSO" +.BR locale "(5), " locale "(7), " setlocale (3) + --- glibc-2.4.orig/debian/local/manpages/zdump.1 +++ glibc-2.4/debian/local/manpages/zdump.1 @@ -0,0 +1,43 @@ +.TH ZDUMP 1 +.SH NAME +zdump \- time zone dumper +.SH SYNOPSIS +.B zdump +[ +.B \-v +] [ +.B \-c +cutoffyear ] [ zonename ... ] +.SH DESCRIPTION +.I Zdump +prints the current time in each +.I zonename +named on the command line. +.PP +These options are available: +.TP +.B \-v +For each +.I zonename +on the command line, +print the time at the lowest possible time value, +the time one day after the lowest possible time value, +the times both one second before and exactly at +each detected time discontinuity, +the time at one day less than the highest possible time value, +and the time at the highest possible time value, +Each line ends with +.B isdst=1 +if the given time is Daylight Saving Time or +.B isdst=0 +otherwise. +.I zonename +should be the relative path file name from +.B /usr/share/zoneinfo/ +which directory contains all zone data. +.TP +.BI "\-c " cutoffyear +Cut off the verbose output near the start of the given year. +.SH "SEE ALSO" +ctime(3), zic(8) +.\" @(#)zdump.8 7.3 --- glibc-2.4.orig/debian/local/manpages/rpcinfo.8 +++ glibc-2.4/debian/local/manpages/rpcinfo.8 @@ -0,0 +1,166 @@ +.\" from: @(#)rpcinfo.8c 2.2 88/08/03 4.0 RPCSRC; from 1.24 88/02/25 SMI +.\" $Id: rpcinfo.8,v 1.1.2.1 2003/09/22 21:33:35 jbailey Exp $ +.\" +.Dd December 17, 1987 +.Dt RPCINFO 8 +.Os +.Sh NAME +.Nm rpcinfo +.Nd report RPC information +.Sh SYNOPSIS +.Nm rpcinfo +.Fl p +.Op Ar host +.Nm rpcinfo +.Op Fl n Ar portnum +.Fl u Ar host +.Ar program +.Op Ar version +.Nm rpcinfo +.Op Fl n Ar portnum +.Fl t Ar host +.Ar program +.Op Ar version +.Nm rpcinfo +.Fl b +.Ar program version +.Nm rpcinfo +.Fl d +.Ar program version +.Sh DESCRIPTION +.Nm rpcinfo +makes an +.Tn RPC +call to an +.Tn RPC +server and reports what it finds. +.Sh OPTIONS +.Bl -tag -width indent +.It Fl p +Probe the portmapper on +.Ar host , +and print a list of all registered +.Tn RPC +programs. If +.Ar host +is not specified, it defaults to the value returned by +.Xr hostname 1 . +.It Fl u +Make an +.Tn RPC +call to procedure 0 of +.Ar program +on the specified +.Ar host +using +.Tn UDP , +and report whether a response was received. +.It Fl t +Make an +.Tn RPC +call to procedure 0 of +.Ar program +on the specified +.Ar host +using +.Tn TCP , +and report whether a response was received. +.It Fl n +Use +.Ar portnum +as the port number for the +.Fl t +and +.Fl u +options instead of the port number given by the portmapper. +.It Fl b +Make an +.Tn RPC +broadcast to procedure 0 of the specified +.Ar program +and +.Ar version +using +.Tn UDP +and report all hosts that respond. +.It Fl d +Delete registration for the +.Tn RPC +service of the specified +.Ar program +and +.Ar version . +This option can be exercised only by the super-user. +.El +.Pp +The +.Ar program +argument can be either a name or a number. +.Pp +If a +.Ar version +is specified, +.Nm rpcinfo +attempts to call that version of the specified +.Ar program . +Otherwise, +.Nm rpcinfo +attempts to find all the registered version +numbers for the specified +.Ar program +by calling version 0 (which is presumed not +to exist; if it does exist, +.Ar rpcinfo +attempts to obtain this information by calling +an extremely high version +number instead) and attempts to call each registered version. +Note: the version number is required for +.Fl b +and +.Fl d +options. +.Sh EXAMPLES +To show all of the +.Tn RPC +services registered on the local machine use: +.Pp +.Dl example% rpcinfo -p +.Pp +To show all of the +.Tn RPC +services registered on the machine named +.Ar klaxon +use: +.Pp +.Dl example% rpcinfo -p klaxon +.Pp +To show all machines on the local net that are running the Yellow Pages +service use: +.Pp +.Dl example% rpcinfo -b ypserv 'version' | uniq +.Pp +where 'version' is the current Yellow Pages version obtained from the +results of the +.Fl p +switch above. +.Pp +To delete the registration for version 1 of the +.Nm walld +service use: +.Pp +.Dl example% rpcinfo -d walld 1 +.Sh SEE ALSO +.Xr rpc 5 , +.Xr portmap 8 +.Rs +.%T "RPC Programming Guide" +.Re +.Sh BUGS +In releases prior to SunOS 3.0, the Network File System (NFS) did not +register itself with the portmapper; +.Nm rpcinfo +cannot be used to make +.Tn RPC +calls to the +.Tn NFS +server on hosts running such releases. --- glibc-2.4.orig/debian/local/manpages/getent.pod +++ glibc-2.4/debian/local/manpages/getent.pod @@ -0,0 +1,21 @@ +=head1 NAME + +getent - get entries from administrative database + +=head1 SYNOPSIS + +B I [I ...] + +=head1 DESCRIPTION + +The I program gathers entries from the specified +administrative database using the specified search keys. +Where I is one of passwd, group, hosts, services, protocols, +or networks. + +=head1 AUTHOR + +I was written by Thorsten Kukuk for the GNU C Library. + +This man page was written by Joel Klecker Eespy@debian.orgE for +the Debian GNU/Linux system. --- glibc-2.4.orig/debian/local/manpages/locale.gen.5 +++ glibc-2.4/debian/local/manpages/locale.gen.5 @@ -0,0 +1,41 @@ +.\" -*- nroff -*- +.\" Copyright (C) 2002, 2005 Free Software Foundation, Inc. +.\" +.\" 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. +.TH locale.gen 5 "July 2005" "Debian GNU/Linux" +.SH "NAME" +locale.gen \- Configuration file for locale-gen +.SH "DESCRIPTION" +The file \fB/etc/locale.gen\fP lists the locales that are to be generated +by the \fBlocale-gen\fP command. + +Each line is of the form: + + + +where is one of the locales given in +.B /usr/share/i18n/locales +and is one of the character sets listed in +.B /usr/share/i18n/charmaps + +The +.B locale-gen +command will generate all the locales, placing them in +\fB/usr/lib/locale\fP. + +.SH "SEE ALSO" +locale-gen(8), localedef(1), locale(1) +.SH "AUTHOR" +Alastair McKinstry --- glibc-2.4.orig/debian/local/manpages/localedef.1 +++ glibc-2.4/debian/local/manpages/localedef.1 @@ -0,0 +1,293 @@ +.TH LOCALEDEF 1 "May 20, 2005" +.SH NAME +localedef \- compile locale definition files +.SH SYNOPSIS +.ad l +.nh +.B localedef +.RI [ options ] +.I outputpath +.br +.B "localedef \-\-list\-archive" +.RI [ options ] +.br +.B "localedef \-\-delete\-from\-archive" +.RI [ options ] +.IR localename " ..." +.br +.B "localedef \-\-add\-to\-archive" +.RI [ options ] +.IR compiledpath +.br +.B "localedef \-\-version" +.br +.B "localedef \-\-help" +.br +.B "localedef \-\-usage" +.ad b +.hy +.SH DESCRIPTION +The +.B localedef +program reads the indicated +.I charmap +and +.I input +files, compiles them to a binary form quickly usable by the +.BR locale (7) +functions in the C library, and places the output in +.IR outputpath . +.PP +If +.I outputpath +contains a slash character ('/'), it is directly the name of the output +directory. +In this case, there is a separate output file for each locale category +(LC_CTIME, LC_NUMERIC, and so on). +.PP +Otherwise, if the +.B \-\-no\-archive +option is used, +.I outputpath +is the name of a subdirectory in +.B /usr/lib/locale +where per-category compiled files are placed. +.PP +Otherwise, +.I outputpath +is the name of a locale and the compiled locale data is added to the +archive file +.BR /usr/lib/locale/locale-archive . +.PP +In any case, +.B localedef +aborts if the directory in which it tries to write locale files has +not already been created. +.PP +If no +.I charmapfile +is given, the value +.I POSIX +is used by default. +If no +.I inputfile +is given, or if it is given as a dash +.RB ( \- ), +.B localedef +reads from standard input. +.SH OPTIONS +Most options can have either short or long forms. If multiple short +options are used, they can be combined in one word (for example, +.B \-cv +is identical to +.BR "\-c \-v" ). +.PP +If a short option takes an argument, the argument can be given separately +as the next word +.RB ( "\-f foo" ), +or it can be written together with the option letter +.RB ( \-ffoo ). +If a long option takes an argument, the argument can be given separately +as the next word, or it can be written as option=argument +.RB ( \-\-charmap=foo ). +.SS "Operation selection options" +A few options direct +.B localedef +to do something else than compile locale definitions. +Only one of these should be used at a time. +.TP +.B \-\-delete\-from\-archive +Delete the named locales from the locale archive file. +.TP +.B \-\-list\-archive +List the locales contained in the locale archive file. +.TP +.B \-\-add\-to\-archive +Add the +.I compiledpath +directories to the locale archive file. +The directories should have been created by previous runs of +.BR localedef , +using +.BR \-\-no\-archive . +.SS "Other options" +Some of the following options are only sensible for some operations; hopefully it is self-evident which ones. +.TP +.BI \-f " charmapfile" ", \-\-charmap=" charmapfile +Specify the file that defines the symbolic character names that are +used by the input file. If the file is in the default directory for +character maps, it is not necessary to specify the full pathname. +This default directory is printed by +.BR "localedef \-\-help" . +.TP +.BI \-i " inputfile" ", \-\-inputfile=" inputfile +Specify the locale definition file to compile. If +.I inputfile +is not absolute, +.B localedef +will also look in the directories specified by the environment variable +.B I18NPATH +and in the default directory for locale definition files. This default +directory is printed by +.BR "localedef \-\-help" . +.TP +.BI \-u " repertoirefile" ", \-\-repertoire-map=" repertoirefile +Read mappings from symbolic names to Unicode UCS4 values from +.IR repertoirefile . +.TP +.BI \-A " aliasfile" ", \-\-alias\-file=" aliasfile +Use +.I aliasfile +to look up aliases for locale names. +There is no default aliases file. +.TP +.BI \-\-prefix= pathname +Set prefix to be prepended to the full archive pathname. +By default, the prefix is empty. +Setting the prefix to +.IR foo , +the archive would be placed in +.BR foo/usr/lib/locale/locale-archive . +.TP +.B "\-c, \-\-force" +Write the output files even if warnings were generated about the input +file. +.TP +.B \-\-old\-style +Create old-style tables. +.TP +.B "\-v, \-\-verbose" +Generate extra warnings about errors that are normally ignored. +.TP +.B \-\-quiet +Suppress all notifications and warnings, and report only fatal errors. +.TP +.B \-\-posix +Conform strictly to POSIX. Implies +.BR \-\-verbose . +This option currently has no other effect. Posix conformance is +assumed if the environment variable +.B POSIXLY_CORRECT +is set. +.TP +.B \-\-replace +Replace a locale in the locale archive file. +Without this option, if the locale is in the archive file already, +an error occurs. +.TP +.B \-\-no\-archive +Do not use the locale archive file, instead create +.I outputpath +as a subdirectory in the same directory as the locale archive file, +and create separate output files for locale categories in it. +.TP +.B "\-\-help" +Print a usage summary and exit. Also prints the default paths used by +.BR localedef . +.TP +.B "\-\-usage" +Print a short usage summary and exit. +.TP +.B "\-V, \-\-version" +Print the version number, license, and disclaimer of warranty for +.BR localedef . +.SH ENVIRONMENT +.TP +.B POSIXLY_CORRECT +The +.B \-\-posix +flag is assumed if this environment variable is set. +.TP +.B I18NPATH +A colon separated list of default directories for locale definition files. +.SH FILES +.TP +.B /usr/share/i18n/charmaps +Usual default charmap path. +.TP +.B /usr/share/i18n/locales +Usual default path for locale source files. +.TP +.B /usr/share/i18n/repertoiremaps +Usual default repertoire map path. +.TP +.B /usr/lib/locale/locale-archive +Usual default locale archive location. +.TP +.IB outputpath/ LC_COLLATE +One of the output files. It describes the rules for comparing strings +in the locale's alphabet. +.TP +.IB outputpath/ LC_CTYPE +One of the output files. It contains information about character +cases and case conversions for the locale. +.TP +.IB outputpath/ LC_MONETARY +One of the output files. It describes the way monetary values should +be formatted in the locale. +.TP +.IB outputpath/ LC_MESSAGES/SYS_LC_MESSAGES +One of the output files. It contains information about the language +messages should be printed in, and what an affirmative or negative +answer looks like. +.TP +.IB outputpath/ LC_NUMERIC +One of the output files. It describes the rules for formatting +numbers in the locale. +.TP +.IB outputpath/ LC_TIME +One of the output files. It describes the rules for formatting +times and dates in the locale. +.TP +.IB outputpath/ LC_PAPER +One of the output files. It describes the default paper size +in the locale. +.TP +.IB outputpath/ LC_NAME +One of the output files. It describes the rules for formatting +names in the locale. +.TP +.IB outputpath/ LC_ADDRESS +One of the output files. It describes the rules for formatting +addresses, and other location information in the locale. +.TP +.IB outputpath/ LC_TELEPHONE +One of the output files. It describes the rules for formatting +telephone numbers in the locale. +.TP +.IB outputpath/ LC_MEASUREMENT +One of the output files. It describes the rules for measurement in the +locale, e.g. Metric or other units. +.TP +.IB outputpath/ LC_IDENTIFICATION +One of the output files. It identifies the elements within the locale. +.SH EXAMPLES +Compile the locale files for Finnish in the UTF-8 character set +and add it to the default locale archive with the name +.BR fi_FI.UTF-8 : +.PP +.RS +localedef \-f UTF\-8 \-i fi_FI fi_FI.UTF\-8 +.RE +.PP +The same, but generate files into the current directory (note that the +last argument must then contain a slash): +.PP +.RS +localedef \-f UTF\-8 \-i fi_FI ./ +.RE +.SH "SEE ALSO" +.BR locale "(5), " locale "(7), " locale (1) +.SH AUTHOR +The program was written by Ulrich Drepper. +.PP +This manual page was written by Richard Braakman on +behalf of the Debian GNU/Linux Project and anyone else who wants it. +It was amended by Alastair McKinstry to +explain new ISO 14652 elements, +and amended further by Lars Wirzenius to document new +functionality (as of GNU C library 2.3.5). +The manpage is not supported by the GNU libc maintainers and may be +out of date. +.SH STANDARDS +This program conforms to the POSIX standard P1003.2 --- glibc-2.4.orig/debian/sysdeps/powerpc.mk +++ glibc-2.4/debian/sysdeps/powerpc.mk @@ -0,0 +1,23 @@ +# NPTL Config +# GLIBC_PASSES += nptl + +# build 64-bit (ppc64) alternative library +GLIBC_PASSES += ppc64 +DEB_ARCH_REGULAR_PACKAGES += libc6-ppc64 libc6-dev-ppc64 +ppc64_MIN_KERNEL_SUPPORTED = 2.6.0 +ppc64_configure_target = powerpc64-linux +ppc64_CC = $(CC) -m64 +ppc64_add-ons = nptl $(add-ons) +libc6-ppc64_shlib_dep = libc6-ppc64 (>= $(shlib_dep_ver)) +ppc64_extra_cflags = -O3 -g1 +ppc64_slibdir = /lib64 +ppc64_libdir = /usr/lib64 +ppc64_extra_config_options := $(extra_config_options) --disable-profile \ + --includedir=/usr/include/ppc64-linux-gnu + +define libc6-dev-ppc64_extra_pkg_install +mkdir -p debian/libc6-dev-ppc64/usr/include +cp -af debian/tmp-ppc64/usr/include/ppc64-linux-gnu \ + debian/libc6-dev-ppc64/usr/include +endef + --- glibc-2.4.orig/debian/sysdeps/amd64.mk +++ glibc-2.4/debian/sysdeps/amd64.mk @@ -0,0 +1,43 @@ +# build libc with nptl instead of linuxthreads +libc_MIN_KERNEL_SUPPORTED = 2.6.0 +libc_add-ons = nptl $(add-ons) +libc_extra_cflags = -O3 -g1 +libc_slibdir = /lib +libc_libdir = /usr/lib +libc_rtlddir = /lib64 + +# /lib64 and /usr/lib64 are provided by glibc instead base-files: #259302. +define libc6_extra_pkg_install +ln -sf /lib debian/$(curpass)/lib64 +ln -sf lib debian/$(curpass)/usr/lib64 +endef + +# build 32-bit (i386) alternative library +GLIBC_PASSES += i386 +DEB_ARCH_REGULAR_PACKAGES += libc6-i386 libc6-dev-i386 +libc6-i386_shlib_dep = libc6-i386 (>= $(shlib_dep_ver)) + +# This section is quite different in Ubuntu. +# +# This only looks like i386. It's really i686, fine for compatability +i386_configure_target = i686-linux +i386_CC = $(BUILD_CC) -m32 +i386_MAKEFLAGS = MAKEFLAGS="gconvdir=/usr/lib32/gconv" +i386_add-ons = nptl $(add-ons) +i386_extra_cflags = -march=i686 -mtune=i686 -g1 -O3 +i386_extra_config_options = $(extra_config_options) --disable-profile --includedir=/usr/include/i486-linux-gnu +i386_slibdir = /lib32 +i386_libdir = /usr/lib32 +i386_MIN_KERNEL_SUPPORTED = 2.6.0 + +define libc6-dev-i386_extra_pkg_install +mkdir -p debian/libc6-dev-i386/usr/include +cp -af debian/tmp-i386/usr/include/i486-linux-gnu \ + debian/libc6-dev-i386/usr/include +endef + +define libc6-i386_extra_pkg_install +mkdir -p debian/libc6-i386/lib +ln -s /lib32/ld-linux.so.2 debian/libc6-i386/lib/ld-linux.so.2 +endef + --- glibc-2.4.orig/debian/sysdeps/depflags.pl +++ glibc-2.4/debian/sysdeps/depflags.pl @@ -0,0 +1,192 @@ +#!/usr/bin/perl + +# These get export by debian/sysdeps/depflags.mk +$DEB_HOST_GNU_SYSTEM = $ENV{'DEB_HOST_GNU_SYSTEM'}; +$DEB_HOST_GNU_TYPE = $ENV{'DEB_HOST_GNU_TYPE'}; +$libc = $ENV{'libc'}; +$glibc = $ENV{'glibc'}; +@deptypes = ('Depends', 'Replaces', 'Conflicts', 'Provides', + 'Suggests'); + +# Let's make sure we are sane +if (!defined($DEB_HOST_GNU_SYSTEM) or !defined($DEB_HOST_GNU_TYPE) or + !defined($libc) or !defined($glibc)) { + die "Could not get all parameters"; +} + +@ARGV == 1 or die "Usage: depflags "; +$type = $ARGV[0]; + +# OS specific stuff +if ($DEB_HOST_GNU_SYSTEM eq "gnu") { + push @{$libc_dev_c{'Depends'}}, ('gnumach-dev', 'hurd-dev'); + push @{$libc_dev_c{'Replaces'}}, 'glibc2-dev'; + push @{$libc_dev_c{'Conflicts'}}, 'glibc2-dev'; + push @{$libc_c{'Replaces'}}, 'glibc2'; + push @{$libc_c{'Conflicts'}}, 'glibc2'; + push @{$libc_c{'Depends'}}, 'hurd (>= 20010718-1)'; +} +if ($DEB_HOST_GNU_SYSTEM eq "linux-gnu") { + push @{$libc_c{'Suggests'}}, 'locales'; + push @{$libc_dev_c{'Recommends'}}, 'c-compiler'; + push @{$libc_dev_c{'Replaces'}}, ('man-db (<= 2.3.10-41)', 'gettext (<= 0.10.26-1)', + 'ppp (<= 2.2.0f-24)', 'libgdbmg1-dev (<= 1.7.3-24)'); + push @{$libc_dev_c{'Depends'}}, 'linux-kernel-headers'; +} +if ($DEB_HOST_GNU_SYSTEM eq "kfreebsd-gnu") { + push @{$libc_c{'Suggests'}}, 'locales'; + push @{$libc_c{'Replaces'}}, 'libc0.1-dev (<< 2.3.2.ds1-14)'; + push @{$libc_dev_c{'Recommends'}}, 'c-compiler'; + push @{$libc_dev_c{'Replaces'}}, 'kfreebsd-kernel-headers (<< 0.11)'; + push @{$libc_dev_c{'Depends'}}, 'kfreebsd-kernel-headers (>= 0.11)'; +} + +# ${glibc}-doc is suggested by $libc_c and $libc_dev_c. +push @{$libc_c{'Suggests'}}, "${glibc}-doc"; +push @{$libc_dev_c{'Suggests'}}, "${glibc}-doc"; +push @{$libc_dev_c{'Suggests'}}, "manpages-dev"; + +# nss-db is now seperate +push @{$libc_c{'Recommends'}}, 'libnss-db'; + +# tzdata is now separate +# In Ubuntu, it's a recommends. +push @{$libc_c{'Recommends'}}, 'tzdata'; + +# Old strace doesn't work with current libc6 +push @{$libc_c{'Conflicts'}}, 'strace (<< 4.0-0)'; + +# 2.1.94 required a patch, applied in gcc -15, so c++ compiles will work again +push @{$libc_dev_c{'Conflicts'}}, 'libstdc++2.10-dev (<< 1:2.95.2-15)'; + +# 2.2.2+CVS requires a newer gcc. For non-i386, we just worry about the +# weak-sym patch, since on i386 we need an even newer one because of the +# pic-kludge that breaks libc_nonshared.a inclusion. +if ($DEB_HOST_GNU_TYPE =~ m/^i486-linux-gnu$/) { + push @{$libc_dev_c{'Conflicts'}}, 'gcc-2.95 (<< 1:2.95.3-9)'; +} else { + push @{$libc_dev_c{'Conflicts'}}, 'gcc-2.95 (<< 1:2.95.3-8)'; +} + +# The db2 changes left libnss-db broken, except for the newer version +# which uses db3 +push @{$libc_c{'Conflicts'}}, 'libnss-db (<= 2.2-6.1.1)'; + +# From now on we provide our own ldconfig and ldd, so we don't need ldso +push @{$libc_dev_c{'Replaces'}}, 'ldso (<= 1.9.11-9)'; +push @{$libc_c{'Replaces'}}, 'ldso (<= 1.9.11-9)'; + +# Some old packages from glibc that don't get built, but need to be handled +push @{$libc_c{'Replaces'}}, ('timezone', 'timezones', 'gconv-modules', + 'libtricks'); +push @{$libc_c{'Conflicts'}}, ('timezone', 'timezones', 'gconv-modules', + 'libtricks', "${libc}-doc"); + +# conflicts from libc5 days +if ($DEB_HOST_GNU_TYPE =~ m/^(i486|m68k)-linux-gnu$/) { + push @{$libc_c{'Conflicts'}}, ('libc5 (<< 5.4.33-7)', 'libpthread0 (<< 0.7-10)'); +} elsif ($DEB_HOST_GNU_TYPE eq 'sparc-linux-gnu') { + push @{$libc_c{'Conflicts'}}, ('libc5 (<< 5.3.12-2)', 'libpthread0 (<< 0.7-10)'); +} +if ($DEB_HOST_GNU_TYPE =~ m/^(alpha|i486|m68k|sparc)-linux-gnu$/) { + push @{$libc_dev_c{'Conflicts'}}, ('libpthread0-dev', 'libdl1-dev', + 'libdb1-dev', 'libgdbm1-dev'); + # Add this here too, old package + push @{$libc_c{'Conflicts'}}, ("${libc}-bin", 'libwcsmbs'); + push @{$libc_c{'Replaces'}}, "${libc}-bin"; +} + +# Old, Pre glibc 2.1 +if ($DEB_HOST_GNU_TYPE =~ m/^(alpha|i486|m68k|sparc|powerpc|arm)-linux-gnu$/) { + push @{$libc_dev_c{'Conflicts'}}, ("${libc}-dev (<< 2.0.110-1)", + 'locales (<< 2.1.3-5)'); +} + +# XXX: Not sure why this conflict is here, maybe broken c++? +if ($DEB_HOST_GNU_TYPE =~ m/^(i486|m68k|alpha)-linux-gnu$/) { + push @{$libc_c{'Conflicts'}}, ('apt (<< 0.3.0)', 'libglib1.2 (<< 1.2.1-2)'); +} + +# Some old c++ libs +if ($DEB_HOST_GNU_TYPE =~ m/^(alpha|i486)-linux-gnu$/) { + push @{$libc_dev_c{'Conflicts'}}, 'libstdc++2.9-dev'; +} elsif ($DEB_HOST_GNU_TYPE eq "powerpc-linux-gnu") { + push @{$libc_dev_c{'Conflicts'}}, ('libstdc++2.9 (<< 2.91.58-2.1)', + 'libstdc++2.8 (<< 2.90.29-1)'); +} elsif ($DEB_HOST_GNU_TYPE eq "m68k-linux-gnu") { + push @{$libc_dev_c{'Conflicts'}}, 'libstdc++2.9-dev'; +} + +# XXX: What is this!? +if ($DEB_HOST_GNU_TYPE eq "alpha-linux-gnu") { + push @{$libc_dev_c{'Conflicts'}}, ('libncurses4-dev (<< 4.2-3.1)', + 'libreadlineg2-dev (<< 2.1-13.1)'); +} + +# Conflict/Replace netkit-rpc, and its manpages +push @{$libc_c{'Conflicts'}}, 'netkit-rpc'; +push @{$libc_c{'Replaces'}}, 'netkit-rpc'; +push @{$libc_dev_c{'Conflicts'}}, 'netkit-rpc'; +push @{$libc_dev_c{'Replaces'}}, 'netkit-rpc'; +push @{$libc_c{'Replaces'}}, 'netbase (<< 4.0)'; +push @{$libc_dev_c{'Replaces'}}, 'netbase (<< 4.0)'; + +# Conflict old wine - didn't like NPTL +push @{$libc_c{'Conflicts'}}, 'wine (<< 0.0.20031118-1)'; + +# Conflict some packages because of bad errno handling +push @{$libc_c{'Conflicts'}}, 'cyrus-imapd (<< 1.5.19-15)'; + +# Conflict old gcc because they have /usr/hppa64-linux/include symlink +# (Bug#239020) +if ($DEB_HOST_GNU_TYPE eq "hppa-linux-gnu") { + push @{$libc_dev_c{'Conflicts'}}, ('gcc-3.3-hppa64 (<= 1:3.3.3-6)', + 'gcc-3.4-hppa64 (<= 3.4-0pre4)'); +} + +# Replace kerberos4kth-dev (<< 1.2.2-10) for fixing #234347. +push @{$libc_dev_c{'Replaces'}}, 'kerberos4kth-dev (<< 1.2.2-10)'; + +# Replace libc-dev (<< 2.3.2.ds1-14) for fixing #239170. +# Replace libc-dev (<< 2.3.5-2) for fixing #280030. +push @{$libc_dev_c{'Replaces'}}, "${libc}-prof (<< 2.3.5-2)"; + +# Conflict e2fsprogs (<< 1.35-7) that cannot work with new ldd. +push @{$libc_c{'Conflicts'}}, 'e2fsprogs (<< 1.35-7)'; + +# Conflict old initrd-tools (<< 0.1.84.1) that cannot work with +# new libc. +push @{$libc_c{'Conflicts'}}, 'initrd-tools (<< 0.1.84.1)'; + +# Ubuntu hack until Dapper releases: Hard depend on locales to make sure +# # that timezones pieces get pulled in for upgrades +push @{$libc_c{'Depends'}}, 'locales (>= 2.3.11)'; + +# Ubuntu hack to cope with the fact that we shipped /lib64 and /usr/lib64 +# in base-files for a while, and now they're in libc6, same as Debian +if ($DEB_HOST_GNU_TYPE eq "x86_64-linux-gnu") { + push @{$libc_c{'Replaces'}}, 'base-files (<< 3.1.9ubuntu8)'; +} + +# Make sure we only have one version of libc-dev installed +push @{$libc_dev_c{'Provides'}}, 'libc-dev'; +push @{$libc_dev_c{'Conflicts'}}, 'libc-dev'; +if ($libc ne "libc6") { + push @{$libc_dev_c{'Provides'}}, 'libc6-dev'; +} + +# Conflict with broken libterm-readline-gnu-perl to avoid #326856. +push @{$libc_c{'Conflicts'}}, 'libterm-readline-gnu-perl (<< 1.15-2)'; + +if ($type eq "libc") { + %pkg = %libc_c; +} elsif ($type eq "libc_dev") { + %pkg = %libc_dev_c; +} else { + die "Unknown package $type"; +} + +foreach $dep (@deptypes) { + next if not defined($pkg{$dep}); + print "-D${dep}=\"" . join(', ', @{$pkg{$dep}}) . "\" "; +} --- glibc-2.4.orig/debian/sysdeps/arm.mk +++ glibc-2.4/debian/sysdeps/arm.mk @@ -0,0 +1,2 @@ +libc_add-ons = ports linuxthreads $(add-ons) + --- glibc-2.4.orig/debian/sysdeps/kfreebsd-i386.mk +++ glibc-2.4/debian/sysdeps/kfreebsd-i386.mk @@ -0,0 +1,11 @@ +GLIBC_PASSES += i686 +DEB_ARCH_REGULAR_PACKAGES += libc0.1-i686 + +# We use -march=i686 and glibc's i686 routines use cmov, so require it. +# A Debian-local glibc patch adds cmov to the search path. +i686_add-ons = linuxthreads $(add-ons) +i686_configure_target=i686-kfreebsd +i686_extra_cflags = -march=i686 -mtune=i686 -g1 -O3 +i686_rtlddir = /lib +i686_slibdir = /lib/i686/cmov +i686_extra_config_options = $(extra_config_options) --disable-profile --disable-compatible-utmp --- glibc-2.4.orig/debian/sysdeps/kfreebsd.mk +++ glibc-2.4/debian/sysdeps/kfreebsd.mk @@ -0,0 +1,53 @@ +GLIBC_OVERLAYS ?= $(shell ls glibc-linuxthreads* glibc-ports* glibc-libidn*) +MIN_KERNEL_SUPPORTED := 5.4.0 +libc = libc0.1 + +# Linuxthreads Config +threads = yes +libc_add-ons = linuxthreads $(add-ons) +libc_extra_config_options = $(extra_config_options) --disable-compatible-utmp + +ifndef KFREEBSD_SOURCE + ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) + KFREEBSD_HEADERS := /usr/include + else + KFREEBSD_HEADERS := /usr/$(DEB_HOST_GNU_TYPE)/include + endif +else + KFREEBSD_HEADERS := $(KFREEBSD_SOURCE)/sys +endif + +# Minimum Kernel supported +with_headers = --with-headers=$(shell pwd)/debian/include --enable-kernel=$(call xx,MIN_KERNEL_SUPPORTED) + +KERNEL_HEADER_DIR = $(stamp)mkincludedir +$(stamp)mkincludedir: + rm -rf debian/include + mkdir debian/include + ln -s $(KFREEBSD_HEADERS)/machine debian/include + ln -s $(KFREEBSD_HEADERS)/net debian/include + ln -s $(KFREEBSD_HEADERS)/netatalk debian/include + ln -s $(KFREEBSD_HEADERS)/netipx debian/include + ln -s $(KFREEBSD_HEADERS)/osreldate.h debian/include + ln -s $(KFREEBSD_HEADERS)/sys debian/include + ln -s $(KFREEBSD_HEADERS)/vm debian/include + + # To make configure happy if libc0.1-dev is not installed. + touch debian/include/assert.h + + touch $@ + +# Also to make configure happy. +export CPPFLAGS = -isystem $(shell pwd)/debian/include + +# This round of ugliness decomposes the FreeBSD kernel version number +# into an integer so it can be easily compared and then does so. +CURRENT_KERNEL_VERSION=$(shell uname -r) +define kernel_check +(minimum=$$((`echo $(1) | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\1 \* 10000 + \2 \* 100 + \3/'`)); \ +current=$$((`echo $(CURRENT_KERNEL_VERSION) | sed 's/\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100/'`)); \ +if [ $$current -lt $$minimum ]; then \ + false; \ +fi) +endef + --- glibc-2.4.orig/debian/sysdeps/m32r.mk +++ glibc-2.4/debian/sysdeps/m32r.mk @@ -0,0 +1,2 @@ +libc_MIN_KERNEL_SUPPORTED = 2.6.9 +libc_add-ons = ports linuxthreads $(add-ons) --- glibc-2.4.orig/debian/sysdeps/m68k.mk +++ glibc-2.4/debian/sysdeps/m68k.mk @@ -0,0 +1 @@ +libc_add-ons = ports linuxthreads $(add-ons) --- glibc-2.4.orig/debian/sysdeps/depflags.mk +++ glibc-2.4/debian/sysdeps/depflags.mk @@ -0,0 +1,25 @@ +depflags = libc=$(libc) glibc=glibc \ + DEB_HOST_GNU_SYSTEM=$(DEB_HOST_GNU_SYSTEM) \ + DEB_HOST_GNU_TYPE=$(DEB_HOST_GNU_TYPE) \ + perl debian/sysdeps/depflags.pl + +libc_control_flags = $(shell $(depflags) libc) +libc_dev_control_flags = $(shell $(depflags) libc_dev) + +# If there's a -DDepends for libc-dev, add this to it. If there isn't +# then the control file's depends line (which contains this) will be used. +# This is gross and another reason why depflags.pl must die. +libc_dev_dep = $(libc) (= $(DEB_VERSION)), +libc_dev_control_flags := $(subst Depends=",Depends="$(libc_dev_dep) ,$(libc_dev_control_flags)) + +$(libc)_control_flags = $(libc_control_flags) +$(libc)-dev_control_flags = $(libc_dev_control_flags) + +test_depflags: + @echo + @echo "$(libc):" + @echo ' $(libc_control_flags)' + @echo + @echo "$(libc)-dev:" + @echo ' $(libc_dev_control_flags)' + @echo --- glibc-2.4.orig/debian/sysdeps/alpha.mk +++ glibc-2.4/debian/sysdeps/alpha.mk @@ -0,0 +1,11 @@ +libc = libc6.1 + +# disabled because alpha linuxthreads ex7, ex9, ex10, ex18 stopps eternally +# even if TIMEOUTSCALE is set - SIGALRM from the program is just ignored. +RUN_TESTSUITE = no + +# disabled for static linked pthread programs. +libc_extra_config_options = $(extra_config_options) --without-__thread --disable-sanity-checks + +# NPTL Config +GLIBC_PASSES += nptl --- glibc-2.4.orig/debian/sysdeps/hppa.mk +++ glibc-2.4/debian/sysdeps/hppa.mk @@ -0,0 +1,15 @@ +$(error HPPA Is broken from linux 2.4, TLS, and NPTL. Causing intentional FTBFS) + +libc_add-ons = ports linuxthreads $(add-ons) + +# hppa64 needs symlink /usr/hppa64-linux/include to /usr/include +# (See: Bug#239020) In future we may drop this file with supporting hppa64. + +define libc6-dev_extra_pkg_install +mkdir -p debian/$(curpass)/usr +mkdir -p debian/$(curpass)/usr/hppa64-linux +ln -sf /usr/include debian/$(curpass)/usr/hppa64-linux/include +mkdir -p debian/$(curpass)/usr/hppa64-linux-gnu +ln -sf /usr/include debian/$(curpass)/usr/hppa64-linux-gnu/include +endef + --- glibc-2.4.orig/debian/sysdeps/i386.mk +++ glibc-2.4/debian/sysdeps/i386.mk @@ -0,0 +1,67 @@ +# libc_extra_config_options = $(extra_config_options) --without-__thread --disable-sanity-checks + +define libc6_extra_pkg_install +mkdir -p debian/$(curpass)/usr/lib +ln -sf /lib/i486-linux-gnu debian/$(curpass)/lib/i386-linux-gnu +ln -sf /usr/lib/i486-linux-gnu debian/$(curpass)/usr/lib/i386-linux-gnu +endef + +# NPTL requires at least i486 assembly. We don't need to take +# special measures for i386 systems, since Debian kernel images now +# emulate the missing instructions on the i386. +# No NPTL pass required on Ubuntu +# GLIBC_PASSES += nptl +nptl_configure_target=i486-linux +nptl_configure_build=i486-linux +nptl_extra_cflags = -march=i486 -mtune=i686 -g1 -O3 + +# We use -march=i686 and glibc's i686 routines use cmov, so require it. +# A Debian-local glibc patch adds cmov to the search path. +# The optimized libraries also use NPTL! +GLIBC_PASSES += i686 +DEB_ARCH_REGULAR_PACKAGES += libc6-i686 +i686_add-ons = nptl $(add-ons) +i686_configure_target=i686-linux +i686_extra_cflags = -march=i686 -mtune=i686 -g1 -O3 +i686_rtlddir = /lib +i686_slibdir = /lib/tls/i686/cmov +i686_MIN_KERNEL_SUPPORTED = 2.6.0 +i686_extra_config_options = $(extra_config_options) --disable-profile + +# We use -mno-tls-direct-seg-refs to not wrap-around segments, as it +# greatly reduce the speed when running under the Xen hypervisor. +GLIBC_PASSES += xen +DEB_ARCH_REGULAR_PACKAGES += libc6-xen +xen_add-ons = nptl $(add-ons) +xen_configure_target=i686-linux +xen_extra_cflags = -march=i686 -mtune=i686 -g1 -O3 -mno-tls-direct-seg-refs +xen_rtlddir = /lib +xen_slibdir = /lib/tls/i686/cmov +xen_MIN_KERNEL_SUPPORTED = 2.6.0 +xen_extra_config_options = $(extra_config_options) --disable-profile + +# build 64-bit (amd64) alternative library +GLIBC_PASSES += amd64 +DEB_ARCH_REGULAR_PACKAGES += libc6-amd64 libc6-dev-amd64 +libc6-amd64_shlib_dep = libc6-amd64 (>= $(shlib_dep_ver)) +amd64_configure_target = x86_64-linux +# __x86_64__ is defined here because Makeconfig uses -undef and the +# /usr/include/asm wrappers need that symbol. +amd64_CC = $(CC) -m64 -D__x86_64__ +amd64_add-ons = nptl $(add-ons) +amd64_extra_cflags = -O3 -g1 +amd64_extra_config_options = $(extra_config_options) --disable-profile \ + --includedir=/usr/include/x86_64-linux-gnu +amd64_slibdir = /lib64 +amd64_libdir = /usr/lib64 +amd64_MIN_KERNEL_SUPPORTED = 2.6.0 + +define amd64_extra_install +cp debian/tmp-amd64/usr/bin/ldd debian/tmp-libc/usr/bin +endef + +define libc6-dev-amd64_extra_pkg_install +mkdir -p debian/libc6-dev-amd64/usr/include +cp -af debian/tmp-amd64/usr/include/x86_64-linux-gnu \ + debian/libc6-dev-amd64/usr/include +endef --- glibc-2.4.orig/debian/sysdeps/mipsel.mk +++ glibc-2.4/debian/sysdeps/mipsel.mk @@ -0,0 +1,2 @@ +libc_add-ons = ports linuxthreads $(add-ons) + --- glibc-2.4.orig/debian/sysdeps/ppc64.mk +++ glibc-2.4/debian/sysdeps/ppc64.mk @@ -0,0 +1,33 @@ +# build libc with nptl instead of linuxthreads +libc_MIN_KERNEL_SUPPORTED = 2.6.0 +libc_add-ons = nptl $(add-ons) +libc_extra_cflags = -O3 -g1 +libc_slibdir = /lib +libc_libdir = /usr/lib +libc_rtlddir = /lib64 + +# /lib64 and /usr/lib64 are provided as symlinks +define libc6_extra_pkg_install +ln -sf /lib debian/$(curpass)/lib64 +ln -sf lib debian/$(curpass)/usr/lib64 +endef + +# build 32-bit (powerpc) alternative library +GLIBC_PASSES += powerpc +DEB_ARCH_REGULAR_PACKAGES += libc6-powerpc libc6-dev-powerpc +libc6-powerpc_shlib_dep = libc6-powerpc (>= $(shlib_dep_ver)) + +powerpc_configure_target = powerpc-linux +powerpc_CC = $(CC) -m32 +powerpc_add-ons = nptl $(add-ons) +powerpc_extra_cflags = -O3 -g1 +powerpc_rtlddir = /lib +powerpc_slibdir = /lib32 +powerpc_libdir = /usr/lib32 +powerpc_MIN_KERNEL_SUPPORTED = 2.6.0 + +# create a symlink for the 32 bit dynamic linker in /lib +define libc6-powerpc_extra_pkg_install +mkdir -p debian/$(curpass)/lib +ln -s /lib32/ld.so.1 debian/$(curpass)/lib +endef --- glibc-2.4.orig/debian/sysdeps/s390.mk +++ glibc-2.4/debian/sysdeps/s390.mk @@ -0,0 +1,20 @@ +# NPTL Config +GLIBC_PASSES += nptl + +# build 64-bit (s390x) alternative library +GLIBC_PASSES += s390x +DEB_ARCH_REGULAR_PACKAGES += libc6-s390x libc6-dev-s390x +s390x_MIN_KERNEL_SUPPORTED = 2.6.0 +s390x_configure_target = s390x-linux +s390x_CC = $(CC) -m64 +s390x_add-ons = nptl $(add-ons) +libc6-s390x_shlib_dep = libc6-s390x (>= $(shlib_dep_ver)) +s390x_extra_cflags = -g1 -O3 +s390x_slibdir = /lib64 +s390x_libdir = /usr/lib64 +s390x_extra_config_options := $(extra_config_options) --disable-profile + +define libc6-s390x_extra_pkg_install +mkdir -p debian/$(curpass)/lib +ln -s /lib64/ld64.so.1 debian/$(curpass)/lib +endef --- glibc-2.4.orig/debian/sysdeps/linux.mk +++ glibc-2.4/debian/sysdeps/linux.mk @@ -0,0 +1,59 @@ +GLIBC_OVERLAYS ?= $(shell ls glibc-linuxthreads* glibc-ports* glibc-libidn*) +MIN_KERNEL_SUPPORTED := 2.6.0 +libc = libc6 + +# In Ubuntu, we only do NPTL. +threads = yes +libc_add-ons = nptl $(add-ons) +libc_extra_config_options = $(extra_config_options) --disable-sanity-checks + +ifndef LINUX_SOURCE + ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) + LINUX_HEADERS := /usr/include + else + LINUX_HEADERS := /usr/$(DEB_HOST_GNU_TYPE)/include + endif +else + LINUX_HEADERS := $(LINUX_SOURCE)/include +endif + +# Minimum Kernel supported +with_headers = --with-headers=$(shell pwd)/debian/include --enable-kernel=$(call xx,MIN_KERNEL_SUPPORTED) + +# NPTL Config +nptl_add-ons = nptl $(add-ons) +nptl_extra_config_options = $(extra_config_options) --disable-profile +nptl_extra_cflags = -g1 -O3 +nptl_rtlddir = /lib +nptl_slibdir = /lib/tls +nptl_MIN_KERNEL_SUPPORTED = 2.6.0 + +KERNEL_HEADER_DIR = $(stamp)mkincludedir +$(stamp)mkincludedir: + rm -rf debian/include + mkdir debian/include + ln -s $(LINUX_HEADERS)/linux debian/include + # Link all asm directories. We can't just link asm and asm-generic + # because of explicit references to and + # . + find $(LINUX_HEADERS) -maxdepth 1 -xtype d -name asm\* \ + -exec ln -s '{}' debian/include ';' + + # To make configure happy if libc6-dev is not installed. + touch debian/include/assert.h + + touch $@ + +# Also to make configure happy. +export CPPFLAGS = -isystem $(shell pwd)/debian/include + +# This round of ugliness decomposes the Linux kernel version number +# into an integer so it can be easily compared and then does so. +CURRENT_KERNEL_VERSION=$(shell uname -r) +define kernel_check +(minimum=$$((`echo $(1) | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`)); \ +current=$$((`echo $(CURRENT_KERNEL_VERSION) | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`)); \ +if [ $$current -lt $$minimum ]; then \ + false; \ +fi) +endef --- glibc-2.4.orig/debian/sysdeps/kfreebsd-amd64.mk +++ glibc-2.4/debian/sysdeps/kfreebsd-amd64.mk @@ -0,0 +1,10 @@ +libc_slibdir = /lib +libc_libdir = /usr/lib +libc_rtlddir = /lib + +# /lib64 and /usr/lib64 are provided by glibc instead base-files: #259302. +define libc0.1_extra_pkg_install +ln -sf /lib debian/$(curpass)/lib64 +ln -sf lib debian/$(curpass)/usr/lib64 +endef + --- glibc-2.4.orig/debian/sysdeps/hurd.mk +++ glibc-2.4/debian/sysdeps/hurd.mk @@ -0,0 +1,25 @@ +# This is for the GNU OS. Commonly known as the Hurd. + +GLIBC_OVERLAYS ?= $(shell ls glibc-linuxthreads* glibc-ports* glibc-libidn*) + +threads = no +libc = libc0.3 +slibdir = /lib + +# Glibc should really do this for us. +define libc_extra_install +mkdir -p debian/tmp-$(curpass)/lib +ln -s ld.so.1 debian/tmp-$(curpass)/lib/ld.so +endef + +# Do not care about kernel versions for now. +define kernel_check +true +endef + +# TLS is broken currently and results in Mach panicing. +# ld.so is broken currently if z_relro is used. +libc_extra_config_options := $(extra_config_options) --without-tls libc_cv_z_relro=no + +# Only use libidn as add-on. +standard-add-ons = libidn --- glibc-2.4.orig/debian/sysdeps/ia64.mk +++ glibc-2.4/debian/sysdeps/ia64.mk @@ -0,0 +1,4 @@ +libc = libc6.1 + +# NPTL Config +# GLIBC_PASSES += nptl --- glibc-2.4.orig/debian/sysdeps/mips.mk +++ glibc-2.4/debian/sysdeps/mips.mk @@ -0,0 +1,2 @@ +libc_add-ons = ports linuxthreads $(add-ons) + --- glibc-2.4.orig/debian/sysdeps/sparc.mk +++ glibc-2.4/debian/sysdeps/sparc.mk @@ -0,0 +1,80 @@ +# NPTL Config +# GLIBC_PASSES += nptl + +# build 64-bit (sparc64) alternative library +GLIBC_PASSES += sparc64 +DEB_ARCH_REGULAR_PACKAGES += libc6-sparc64 libc6-dev-sparc64 +sparc64_MIN_KERNEL_SUPPORTED = 2.6.0 +sparc64_configure_target=sparc64-linux +sparc64_CC = $(BUILD_CC) -m64 +sparc64_extra_cflags = -g1 -O3 +sparc64_extra_config_options = $(extra_config_options) --disable-profile \ + --includedir=/usr/include/sparc64-linux-gnu +sparc64_add-ons = nptl $(add-ons) +libc6-sparc64_shlib_dep = libc6-sparc64 (>= $(shlib_dep_ver)) +sparc64_slibdir = /lib64 +sparc64_libdir = /usr/lib64 + +GLIBC_PASSES += sparc64b +DEB_ARCH_REGULAR_PACKAGES += libc6-sparc64b +sparc64b_MIN_KERNEL_SUPPORTED = 2.6.0 +sparc64b_configure_build=sparc64-linux +sparc64b_configure_target=sparc64b-linux +sparc64b_CC = $(BUILD_CC) -m64 -mcpu=ultrasparc3 +sparc64b_extra_cflags = -g2 -O3 +sparc64b_extra_config_options = $(extra_config_options) --disable-profile +sparc64b_add-ons = nptl $(add-ons) +libc6-sparc64b_shlib_dep = libc6-sparc64b (>= $(shlib_dep_ver)) +sparc64b_LIBDIR = 64/ultra3 + +GLIBC_PASSES += sparc64v +DEB_ARCH_REGULAR_PACKAGES += libc6-sparc64v +sparc64v_MIN_KERNEL_SUPPORTED = 2.6.0 +sparc64v_configure_build=sparc64-linux +sparc64v_configure_target=sparc64v-linux +sparc64v_CC = $(BUILD_CC) -m64 -mcpu=niagara +sparc64v_extra_cflags = -g2 -O3 +sparc64v_extra_config_options = $(extra_config_options) --disable-profile +sparc64v_add-ons = nptl $(add-ons) +libc6-sparc64v_shlib_dep = libc6-sparc64v (>= $(shlib_dep_ver)) +sparc64v_LIBDIR = 64/v9v + +# build a sparcv9 optimized library +#GLIBC_PASSES += sparcv9 +#DEB_ARCH_REGULAR_PACKAGES += libc6-sparcv9 +sparcv9_MIN_KERNEL_SUPPORTED = 2.6.0 +sparcv9_configure_target=sparcv9-linux +sparcv9_configure_build=sparcv9-linux +sparcv9_extra_cflags = -g1 -O3 +sparcv9_extra_config_options = $(extra_config_options) --disable-profile +sparcv9_add-ons = nptl $(add-ons) +sparcv9_rtlddir = /lib +sparcv9_slibdir = /lib/v9 + +# build a sparcv9b optimized library +GLIBC_PASSES += sparcv9b +DEB_ARCH_REGULAR_PACKAGES += libc6-sparcv9b +sparcv9b_MIN_KERNEL_SUPPORTED = 2.6.0 +sparcv9b_configure_target=sparcv9b-linux +sparcv9b_configure_build=sparcv9b-linux +sparcv9b_extra_cflags = -mtune=ultrasparc3 -g1 -O3 +sparcv9b_extra_config_options = $(extra_config_options) --disable-profile +sparcv9b_add-ons = nptl $(add-ons) +sparcv9b_rtlddir = /lib +sparcv9b_slibdir = /lib/ultra3 + +GLIBC_PASSES += sparcv9v +DEB_ARCH_REGULAR_PACKAGES += libc6-sparcv9v +sparcv9v_MIN_KERNEL_SUPPORTED = 2.6.0 +sparcv9v_configure_target=sparcv9v-linux +sparcv9v_extra_cflags = -O3 -mtune=niagara +sparcv9v_extra_config_options = $(extra_config_options) --disable-profile --with-tls --with-__thread +sparcv9v_add-ons = nptl $(add-ons) +sparcv9v_LIBDIR = /v9v + +define libc6-dev-sparc64_extra_pkg_install +mkdir -p debian/libc6-dev-sparc64/usr/include +cp -af debian/tmp-sparc64/usr/include/sparc64-linux-gnu \ + debian/libc6-dev-sparc64/usr/include +endef + --- glibc-2.4.orig/debian/debhelper.in/libc-pic.dirs +++ glibc-2.4/debian/debhelper.in/libc-pic.dirs @@ -0,0 +1 @@ +usr/lib/libc_pic --- glibc-2.4.orig/debian/debhelper.in/locales.dirs +++ glibc-2.4/debian/debhelper.in/locales.dirs @@ -0,0 +1 @@ +usr/lib/locale --- glibc-2.4.orig/debian/debhelper.in/libc-otherbuild.postrm +++ glibc-2.4/debian/debhelper.in/libc-otherbuild.postrm @@ -0,0 +1,53 @@ +#!/bin/sh + +set -e + +checkpkgver () { + local status pkg + pkg=$1 + status=$(dpkg -s $pkg 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g') + if [ -n "$status" ] && [ "$status" != "not-installed" ] && [ "$status" != "config-files" ]; then + echo $(dpkg -s $pkg 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//'); + fi +} + +if [ "$1" = "remove" ]; then + opt=OPT + curver=CURRENT_VER + + if [ -f /etc/ld.so.hwcappkgs ]; then + # Remove this package's entry + grep -v "^$opt " /etc/ld.so.hwcappkgs > /etc/ld.so.hwcappkgs.tmp + mv /etc/ld.so.hwcappkgs.tmp /etc/ld.so.hwcappkgs + + # Check other hwcap packges are consistent. + while read LINE; do + case $LINE in + \#*|"") continue + esac + set -- $LINE + pkg=$1 + if [ -z "$prever" ]; then + prever=$(checkpkgver $pkg) + else + ver=$(checkpkgver $pkg) + if [ -n "$ver" ]; then + dpkg --compare-versions $prever ne $ver && optunmatch=yes + fi + fi + done < /etc/ld.so.hwcappkgs + else + # libc6 did not create ld.so.hwcappkgs correctly or ld.so.hwcappkgs + # was unexpectedly removed. Don't remove ld.so.nohwcap. + optunmatch=yes + fi + + # Remove ld.so.nohwcap + if [ -f /etc/ld.so.nohwcap ] && [ ! -s /etc/ld.so.nohwcap ] && [ "$optunmatch" != yes ]; then + rm -f /etc/ld.so.nohwcap + fi +fi + +#DEBHELPER# + +exit 0 --- glibc-2.4.orig/debian/debhelper.in/libc-prof.install +++ glibc-2.4/debian/debhelper.in/libc-prof.install @@ -0,0 +1 @@ +debian/tmp-libc/usr/lib/*_p.a usr/lib --- glibc-2.4.orig/debian/debhelper.in/locales.config +++ glibc-2.4/debian/debhelper.in/locales.config @@ -0,0 +1,83 @@ +#!/bin/sh +set -e + +. /usr/share/debconf/confmodule +db_version 2.0 +db_capb backup multiselect + +# Initializes debconf default values from the ones found in +# configuration files +SELECTED_LOCALES= +if [ -L /etc/locale.gen ] && [ "$(readlink /etc/locale.gen)" = /usr/share/i18n/SUPPORTED ]; then + SELECTED_LOCALES="All locales" + LG=/dev/null +elif [ -e /etc/locale.gen ]; then + LG=/etc/locale.gen + # Debconf templates in locales < 2.3.2 were completely different, + # the locales/locales_to_be_generated question could have a "Leave alone" + # value in which case locale-gen was not run. + # With current implementation, this string has to be removed. + grep -q "Leave alone" $LG && sed -e '/^Leave alone/d' $LG > $LG.tmp && mv $LG.tmp $LG + + SELECTED_LOCALES=$(LC_ALL=C sed -e '/^[a-zA-Z]/!d' $LG | tr '\n' ',' | sed -e 's/,/, /g' -e 's/, *$//') +else + LG=/dev/null +fi +DEFAULT_ENVIRONMENT=None +EE="/etc/default/locale" +# Prior to locales 2.3.6-5, variables were stored in /etc/environment +if [ "$1" = "configure" ] && [ -e "/etc/environment" ] && dpkg --compare-versions "$2" lt 2.3.6-5 +then + EE="/etc/environment" +fi +if [ -e "$EE" ]; then + DEFAULT_ENVIRONMENT=$(awk 'BEGIN {lang="None"} /^LANG=/ {gsub("\"", ""); sub("LANG=", ""); lang=$0;} END {print lang}' $EE) +fi + +# Add a newline in case /etc/locale.gen has no trailing newline at EOF +SUPPORTED_LOCALES=" +__SUPPORTED_LOCALES__" +SUPPORTED_LOCALES=$( (cat $LG && echo "$SUPPORTED_LOCALES") | LC_ALL=C sed -e '/^[a-zA-Z]/!d' | LC_ALL=C sort -u | tr '\n' ',' | sed -e 's/,/, /g' -e 's/, *$//') + +if [ -z "$DEBCONF_IS_A_REGISTRY" ] && [ -e /etc/locale.gen ]; then + db_set locales/locales_to_be_generated "${SELECTED_LOCALES}" + db_set locales/default_environment_locale "$DEFAULT_ENVIRONMENT" +fi +db_subst locales/locales_to_be_generated locales "${SUPPORTED_LOCALES}" + +STATE=1 +while [ "$STATE" -ge 0 ]; do + case "$STATE" in + 0) + exit 1 + ;; + 1) + db_input medium locales/locales_to_be_generated || true + ;; + 2) + db_get locales/locales_to_be_generated || RET= + if expr ", $RET," : ".*, None,.*" >/dev/null 2>&1; then + # "None" was a choice in older packages + db_set locales/locales_to_be_generated "" + RET= + elif expr ", $RET," : ".*, All locales,.*" >/dev/null 2>&1; then + # When "All locales" is selected, other choices have to be dropped + db_set locales/locales_to_be_generated "All locales" + RET=$SUPPORTED_LOCALES + fi + DEFAULT_LOCALES=$(echo $RET | sed -e 's/ [^ ]*,/,/g' -e 's/ [^ ]*$//') + if [ -n "$DEFAULT_LOCALES" ]; then + db_subst locales/default_environment_locale locales $DEFAULT_LOCALES + db_input medium locales/default_environment_locale || true + fi + ;; + *) + break + ;; + esac + if db_go; then + STATE=$(($STATE + 1)) + else + STATE=$(($STATE - 1)) + fi +done --- glibc-2.4.orig/debian/debhelper.in/libc-dev.install.hurd-i386 +++ glibc-2.4/debian/debhelper.in/libc-dev.install.hurd-i386 @@ -0,0 +1,27 @@ +debian/tmp-libc/usr/bin/gencat usr/bin +debian/tmp-libc/usr/bin/mtrace usr/bin +debian/tmp-libc/usr/bin/rpcgen usr/bin +debian/tmp-libc/usr/bin/sprof usr/bin + +debian/tmp-libc/usr/lib/libBrokenLocale.a usr/lib +debian/tmp-libc/usr/lib/libbsd-compat.a usr/lib +debian/tmp-libc/usr/lib/libc.a usr/lib +debian/tmp-libc/usr/lib/libcrt.a usr/lib +debian/tmp-libc/usr/lib/libcrt_nonshared.a usr/lib +debian/tmp-libc/usr/lib/libcrypt.a usr/lib +debian/tmp-libc/usr/lib/libdl.a usr/lib +debian/tmp-libc/usr/lib/libg.a usr/lib +debian/tmp-libc/usr/lib/libhurduser.a usr/lib +debian/tmp-libc/usr/lib/libieee.a usr/lib +debian/tmp-libc/usr/lib/libm.a usr/lib +debian/tmp-libc/usr/lib/libmachuser.a usr/lib +debian/tmp-libc/usr/lib/libmcheck.a usr/lib +debian/tmp-libc/usr/lib/libnsl.a usr/lib +debian/tmp-libc/usr/lib/libresolv.a usr/lib +debian/tmp-libc/usr/lib/librpcsvc.a* usr/lib +debian/tmp-libc/usr/lib/librt.a usr/lib +debian/tmp-libc/usr/lib/libutil.a usr/lib + +debian/tmp-libc/usr/lib/*.o usr/lib +debian/tmp-libc/usr/lib/*.so usr/lib +debian/tmp-libc/usr/include/* usr/include --- glibc-2.4.orig/debian/debhelper.in/glibc-doc.install +++ glibc-2.4/debian/debhelper.in/glibc-doc.install @@ -0,0 +1,2 @@ +DEB_SRCDIR/manual/libc/*.html usr/share/doc/glibc-doc/html + --- glibc-2.4.orig/debian/debhelper.in/libc-udeb.install +++ glibc-2.4/debian/debhelper.in/libc-udeb.install @@ -0,0 +1,13 @@ +# FIXME: someday we may need to handle installing into non-lib. +debian/tmp-libc/lib/ld*.so* lib +debian/tmp-libc/lib/libm-*.so* lib +debian/tmp-libc/lib/libm.so* lib +debian/tmp-libc/lib/libdl*.so* lib +debian/tmp-libc/lib/libresolv*.so* lib +debian/tmp-libc/lib/libc-*.so* lib +debian/tmp-libc/lib/libc.so* lib +debian/tmp-libc/lib/libutil* lib +debian/tmp-libc/lib/libcrypt* lib +# FIXME: This should be with_threads arch's only. +debian/tmp-libc/lib/libpthread*.so* lib + --- glibc-2.4.orig/debian/debhelper.in/libc-alt.install +++ glibc-2.4/debian/debhelper.in/libc-alt.install @@ -0,0 +1,6 @@ +# This file is used for biarch libraries. +TMPDIR/SLIBDIR/*.so* SLIBDIR +TMPDIR/LIBDIR/gconv/*.so* LIBDIR/gconv/ +TMPDIR/LIBDIR/gconv/gconv-modules LIBDIR/gconv + +log-test-*-FLAVOR usr/share/doc/LIBC-FLAVOR --- glibc-2.4.orig/debian/debhelper.in/libc.preinst +++ glibc-2.4/debian/debhelper.in/libc.preinst @@ -0,0 +1,204 @@ +#!/bin/sh +set -e +export LC_ALL=C + +if [ "$1" = upgrade ] +then + if dpkg --compare-versions "$2" le 2.2.2-4 && test -e /lib/libdb.so.3; then + # Make upgrades to newer libdb.so.3 easier + cat /lib/libdb.so.3 > /lib/libdb.so.3.old + fi + if dpkg --compare-versions "$2" le 2.1.1-0.1; then + if [ -f /var/run/utmpd.pid ]; then + if kill -s TERM `cat /var/run/utmpd.pid` > /dev/null 2>&1 + then + if [ -f /var/run/utmp ]; then + cp /dev/null /var/run/utmp + if grep '^utmp:' /etc/group; then + chown root:utmp /var/run/utmp + chmod 664 /var/run/utmp + else + chown root:root /var/run/utmp + chmod 644 /var/run/utmp + fi + fi + if [ -f /var/log/wtmp ]; then + savelog /var/log/wtmp + touch /var/log/wtmp + if grep '^utmp:' /etc/group; then + chown root:utmp /var/log/wtmp + chmod 664 /var/log/wtmp + else + chown root:root /var/log/wtmp + chmod 644 /var/log/wtmp + fi + fi + rm -f /etc/init.d/utmpd + update-rc.d utmpd remove > /dev/null + fi + fi + if [ -f /var/run/utmpx ]; then rm -f /var/run/utmpx; fi + if [ -f /var/log/wtmpx ]; then rm -f /var/log/wtmpx*; fi + if [ -e /var/run/utmpd.ro ]; then rm -f /var/run/utmpd.ro; fi + if [ -e /var/run/utmpd.rw ]; then rm -f /var/run/utmpd.rw; fi + fi + + # NSS authentication trouble guard + if dpkg --compare-versions $2 lt 2.3.5-1; then + check="xdm kdm gdm postgresql xscreensaver" + # Only get the ones that are installed, and configured + service=$(dpkg -s $check 2> /dev/null | awk 'BEGIN{RS="\n\n";FS="\n"}{if ( $2 ~ /Status: .* installed$/ ) { print $1 } }' | cut -f 2 -d ' ') + + echo + echo "Name Service Switch update in the C Library: pre-installation question." + echo + echo "Running services and programs that are using NSS need to be restarted," + echo "otherwise they might not be able to do lookup or authentication any more." + echo "The installation process is able to restart some services (such as ssh or" + echo "telnetd), but other programs cannot be restarted automatically. One such" + echo "program that needs manual stopping and restart after the glibc upgrade by" + echo "yourself is xdm - because automatic restart might disconnect your active" + echo "X11 sessions." + echo + echo "Known packages that need to be stopped before the glibc upgrade are:" + echo " $check" + echo + + if [ -n "$service" ]; then + echo "This script detected the following installed services which must be" + echo "stopped before the upgrade:" + echo " $service" + else + echo "This script did not detect any installed services which need to be" + echo "stopped." + fi + echo + echo "If you want to interrupt the upgrade now and continue later, please" + echo "answer No to the question below." + echo + frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'` + if [ "$frontend" = noninteractive ]; then + echo "Non-interactive mode, upgrade glibc forcibly" + answer=yes + else + echo -n "Do you want to upgrade glibc now? [Y/n] " + read answer + case $answer in + Y*|y*) answer=yes ;; + N*|n*) answer=no ;; + *) answer=yes ;; + esac + fi + echo + if [ "$answer" = no ]; then + echo "Stopped glibc upgrade. Please retry the upgrade after you have" + echo "checked or stopped services by hand." + exit 1 + fi + fi + + # This will keep us from using hwcap libs (optimized) during an + # upgrade. + touch /etc/ld.so.nohwcap + echo glibc >> /etc/ld.so.nohwcap +fi + +# Sanity check. +# If there are versions of glibc outside of the normal installation +# location (/lib, /lib64, etc.) then things may break very badly +# as soon as ld.so is replaced by a new version. This check is not +# foolproof, but it's pretty accurate. This script ignores old +# libc4 or libc5, and libraries incompatible with the to-be-installed +# ld.so. + +check_dirs () { + for dir in $*; do + # Follow symlinks + dirlink=$(readlink -f $dir) + [ -n "$dirlink" ] && dir=$dirlink + + # Handle /lib in LD_LIBRARY_PATH. + if expr $dir : "/lib.*" > /dev/null; then + continue + fi + # Skip ia32-libs package on ia64, and similar libraries + # (not sure why these get added to /etc/ld.so.conf) + if expr $dir : "/emul/.*" > /dev/null; then + continue + fi + if test -d $dir; then + output=$(ls $dir | egrep '^lib(c|m|pthread|rt|dl)\.so\.[^/]*$' |\ + egrep -v '^lib[cm]\.so\.[45].*$' 2>/dev/null) + + if test -n "$output"; then + # See if the found libraries are compatible with the system ld.so; + # if they aren't, they'll be ignored. Check e_ident, e_type (which + # will just be ET_DYN), and e_machine. If a match is found, there + # is a risk of breakage. + for lib in $output + do + if test -f "$dir/$lib"; then + libbytes=`head -c 20 $dir/$lib | od -c` + for ld_so in $ld_so_list + do + if test -f "$ld_so"; then + ldbytes=`head -c 20 $ld_so | od -c` + if test "$ldbytes" = "$libbytes"; then + echo "Matching libraries: $dir/$lib $ld_so" + return 0 + fi + fi + done + fi + done + fi + fi + done + return 1 +} + +if [ "$1" != abort-upgrade ] +then + ld_so_list=RTLDLIST + dirs="/usr/local/lib /usr/local/lib32 /usr/local/lib64" + if ! test -L /usr; then + dirs="$dirs /usr/lib /usr/lib32 /usr/lib64" + fi + if check_dirs $dirs; then + echo + echo "A copy of glibc was found in an unexpected directory." + echo "It is not safe to upgrade the C library in this situation;" + echo "please remove that copy of the C library and try again." + exit 1 + fi + + if test -n "$LD_LIBRARY_PATH"; then + dirs=$(echo $LD_LIBRARY_PATH | sed 's/:/ /') + if check_dirs $dirs; then + echo + echo "Another copy of the C library was found via LD_LIBRARY_PATH." + echo "It is not safe to upgrade the C library in this situation;" + echo "please remove the directory from LD_LIBRARY_PATH and try again." + exit 1 + fi + fi + if test -e /etc/ld.so.conf; then + dirs=$(echo $(cat /etc/ld.so.conf)) + if check_dirs $dirs; then + echo + echo "Another copy of the C library was found via /etc/ld.so.conf." + echo "It is not safe to upgrade the C library in this situation;" + echo "please remove the directory from /etc/ld.so.conf and try again." + exit 1 + fi + fi +fi + +if [ "$1" != abort-upgrade ] && [ "`uname -s`" = Linux ] +then + # glibc kernel version check: KERNEL_VERSION_CHECK +fi + +#DEBHELPER# + +exit 0 --- glibc-2.4.orig/debian/debhelper.in/libc.postrm +++ glibc-2.4/debian/debhelper.in/libc.postrm @@ -0,0 +1,46 @@ +#! /bin/sh +set -e + +if [ "$1" = remove ]; then + if command -v suidunregister >/dev/null 2>&1 && [ -e /etc/suid.conf ]; then + if [ -x /usr/lib/pt_chown ]; then + suidunregister -s LIBC /usr/lib/pt_chown + elif [ -x /usr/libexec/pt_chown ]; then + suidunregister -s LIBC /usr/libexec/pt_chown + fi + fi +fi + +if [ "$1" = upgrade ]; then + case $(dpkg --print-architecture) in + i386|sparc) + if dpkg --compare-versions "$2" lt 2.3.4-3; then + # Make sure the downgraded package does not support + # ld.so.hwcappkgs mechanism on i686 and sparc. + rm -f /etc/ld.so.hwcappkgs + echo "downgrade-to-old-glibc" >> /etc/ld.so.nohwcap + + echo + echo You are trying to downgrade to glibc 2.3.4-2 or earlier. + echo Such old packages do not support the version mismatch between + echo standard libc and hwcap libc using /etc/ld.so.hwcappkgs + echo on i386 and sparc. To be safe from library inconsistency, + echo hwcap libraries are disabled until glibc 2.3.4-3 or later + echo is installed. + echo + fi + ;; + esac +fi + +if [ "$1" = deconfigure ]; then + :; # blah, do something useful with ldso +fi + +#if [ "$1" = purge ]; then +# update-rc.d mountkernfs remove > /dev/null +#fi + +#DEBHELPER# + +exit 0 --- glibc-2.4.orig/debian/debhelper.in/libnss-files-udeb.install +++ glibc-2.4/debian/debhelper.in/libnss-files-udeb.install @@ -0,0 +1,3 @@ +# FIXME: someday we may need to handle installing into non-lib. +debian/tmp-udeb/lib/libnss_files*.so* lib + --- glibc-2.4.orig/debian/debhelper.in/libnss-dns-udeb.install +++ glibc-2.4/debian/debhelper.in/libnss-dns-udeb.install @@ -0,0 +1,3 @@ +# FIXME: someday we may need to handle installing into non-lib. +debian/tmp-udeb/lib/libnss_dns*.so* lib + --- glibc-2.4.orig/debian/debhelper.in/glibc-doc.doc-base +++ glibc-2.4/debian/debhelper.in/glibc-doc.doc-base @@ -0,0 +1,24 @@ +Document: glibc-manual +Title: The GNU C Library Reference Manual +Author: Sandra Loosemore with Richard M. Stallman, Roland McGrath, + Andrew Oram, and Ulrich Drepper +Abstract: The GNU C Library Reference Manual + The GNU C library, described in this document, defines all of the + library functions that are specified by the ISO C standard, as well as + additional features specific to POSIX and other derivatives of the Unix + operating system, and extensions specific to the GNU system. + . + The purpose of this manual is to tell you how to use the facilities + of the GNU library. We have mentioned which features belong to which + standards to help you identify things that are potentially non-portable + to other systems. But the emphasis in this manual is not on strict + portability. +Section: Apps/Programming + +Format: info +Index: /usr/share/info/libc.info.gz +Files: /usr/share/info/libc.* + +Format: HTML +Index: /usr/share/doc/glibc-doc/html/index.html +Files: /usr/share/doc/glibc-doc/html/* --- glibc-2.4.orig/debian/debhelper.in/libc.docs +++ glibc-2.4/debian/debhelper.in/libc.docs @@ -0,0 +1,11 @@ +DEB_SRCDIR/BUGS +DEB_SRCDIR/FAQ +DEB_SRCDIR/INTERFACE +DEB_SRCDIR/NEWS +DEB_SRCDIR/NOTES +DEB_SRCDIR/PROJECTS +DEB_SRCDIR/README +DEB_SRCDIR/hesiod/README.hesiod +DEB_SRCDIR/CONFORMANCE +DEB_SRCDIR/NAMESPACE +debian/TODO --- glibc-2.4.orig/debian/debhelper.in/locales.postrm +++ glibc-2.4/debian/debhelper.in/locales.postrm @@ -0,0 +1,14 @@ +#!/bin/sh +set -e + +case "$1" in + purge) + rm -f /etc/locale.gen + ;; + *) + ;; +esac + +#DEBHELPER# + +exit 0 --- glibc-2.4.orig/debian/debhelper.in/locales.prerm +++ glibc-2.4/debian/debhelper.in/locales.prerm @@ -0,0 +1,14 @@ +#!/bin/sh +set -e + +case "$1" in + remove|purge) + rm -f /usr/lib/locale/locale-archive + ;; + *) + ;; +esac + +#DEBHELPER# + +exit 0 --- glibc-2.4.orig/debian/debhelper.in/nscd.postinst +++ glibc-2.4/debian/debhelper.in/nscd.postinst @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +# We remove a relic of the past /usr/doc/ symlinks. +# This script should keep at least until sarge release. +if [ -L "/usr/doc/nscd" ]; then + rm -f "/usr/doc/nscd" +fi + +#DEBHELPER# + +exit 0 --- glibc-2.4.orig/debian/debhelper.in/glibc-doc.docs +++ glibc-2.4/debian/debhelper.in/glibc-doc.docs @@ -0,0 +1 @@ +DEB_SRCDIR/ChangeLog* --- glibc-2.4.orig/debian/debhelper.in/libc-dev.manpages +++ glibc-2.4/debian/debhelper.in/libc-dev.manpages @@ -0,0 +1,4 @@ +debian/local/manpages/gencat.1 +debian/local/manpages/mtrace.1 +debian/local/manpages/rpcgen.1 +debian/local/manpages/sprof.1 --- glibc-2.4.orig/debian/debhelper.in/glibc-doc.info +++ glibc-2.4/debian/debhelper.in/glibc-doc.info @@ -0,0 +1 @@ +debian/tmp-libc/usr/share/info/libc.info* --- glibc-2.4.orig/debian/debhelper.in/libc-otherbuild.install +++ glibc-2.4/debian/debhelper.in/libc-otherbuild.install @@ -0,0 +1,5 @@ +# This file is used for making NPTL and other +# optimized libraries. +TMPDIR/SLIBDIR/*.so* SLIBDIR + +log-test-*-FLAVOR usr/share/doc/LIBC-FLAVOR --- glibc-2.4.orig/debian/debhelper.in/locales.templates +++ glibc-2.4/debian/debhelper.in/locales.templates @@ -0,0 +1,30 @@ +Template: locales/locales_to_be_generated +Type: multiselect +#flag:translate:1 +__Choices: All locales, ${locales} +_Description: Locales to be generated: + Locale is a framework to switch between multiple languages for users who can + select to use their language, country, characters, collation order, etc. + . + Choose which locales to generate. The selection will be saved to + `/etc/locale.gen', which you can also edit manually (you need to run + `locale-gen' afterwards). + . + When `All locales' is selected, /etc/locale.gen will be set as a symlink to + /usr/share/i18n/SUPPORTED. + +Template: locales/default_environment_locale +Type: select +#flag:translate:1 +__Choices: None, ${locales} +Default: None +_Description: Default locale for the system environment: + Many packages in Debian use locales to display text in the correct + language for users. You can change the default locale if you're not + a native English speaker. + These choices are based on which locales you have chosen to generate. + . + Note: This will select the language for your whole system. If you're + running a multi-user system where not all of your users speak the language + of your choice, then they will run into difficulties and you might want + not to set a default locale. --- glibc-2.4.orig/debian/debhelper.in/nscd.manpages +++ glibc-2.4/debian/debhelper.in/nscd.manpages @@ -0,0 +1,2 @@ +debian/local/manpages/nscd.conf.5 +debian/local/manpages/nscd.8 --- glibc-2.4.orig/debian/debhelper.in/locales.install +++ glibc-2.4/debian/debhelper.in/locales.install @@ -0,0 +1,8 @@ +debian/tmp-libc/usr/share/locale/[a-z][a-z] usr/share/locale +debian/tmp-libc/usr/share/locale/[a-z][a-z]_[A-Z][A-Z] usr/share/locale +debian/tmp-libc/usr/share/locale/locale.alias usr/share/locale +debian/tmp-libc/usr/share/i18n/* usr/share/i18n +debian/local/usr_sbin/locale-gen usr/sbin +debian/local/usr_sbin/update-locale usr/sbin +debian/local/usr_sbin/validlocale usr/sbin +DEB_SRCDIR/localedata/README usr/share/doc/locales --- glibc-2.4.orig/debian/debhelper.in/nscd.dirs +++ glibc-2.4/debian/debhelper.in/nscd.dirs @@ -0,0 +1,2 @@ +var/run/nscd +var/db/nscd --- glibc-2.4.orig/debian/debhelper.in/nscd.init +++ glibc-2.4/debian/debhelper.in/nscd.init @@ -0,0 +1,117 @@ +#!/bin/sh +# +# nscd: Starts the Name Service Cache Daemon +# +# description: This is a daemon which handles passwd and group lookups +# for running programs and caches the results for the next +# query. You should start this daemon only if you use +# slow Services like NIS or NIS+ + +# Sanity checks. + + +NAME="nscd" +DESC="Name Service Cache Daemon" +DAEMON="/usr/sbin/nscd" +PIDFILE="/var/run/nscd/nscd.pid" + +# Sanity checks. +[ -f /etc/nscd.conf ] || exit 0 +[ -x "$DAEMON" ] || exit 0 + +start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + SECURE="" + #for TABLE in passwd group + #do + # if egrep '^'$TABLE':.*nisplus' /etc/nsswitch.conf >/dev/null + # then + # /usr/sbin/nscd_nischeck "$TABLE" || SECURE="$SECURE -S $TABLE,yes" + # fi + #done + start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" --test > /dev/null || return 1 + start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" -- \ + $SECURE || return 2 +} + +stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + start-stop-daemon --stop --quiet --retry=TERM/5/HUP/30/KILL/5 --pidfile "$PIDFILE" --name "$NAME" + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + # Wait for children to finish too + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec "$DAEMON" > /dev/null + [ "$?" = 2 ] && return 2 + rm -f "$PIDFILE" + return "$RETVAL" +} + +status() +{ + # Return + # 0 if daemon is stopped + # 1 if daemon is running + start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" --test > /dev/null || return 1 + return 0 +} + +case "$1" in +start) + echo -n "Starting $DESC: $NAME" + start + case "$?" in + 0) echo "." ; exit 0 ;; + 1) echo " (already running)." ; exit 0 ;; + *) echo " (failed)." ; exit 1 ;; + esac + ;; +stop) + echo -n "Stopping $DESC: $NAME" + stop + case "$?" in + 0) echo "." ; exit 0 ;; + 1) echo " (not running)." ; exit 0 ;; + *) echo " (failed)." ; exit 1 ;; + esac + ;; +restart|force-reload|reload) + echo -n "Restarting $DESC: $NAME" + stop + $DAEMON --invalidate + case "$?" in + 0|1) + start + case "$?" in + 0) echo "." ; exit 0 ;; + 1) echo " (failed -- old process is still running)." ; exit 1 ;; + *) echo " (failed to start)." ; exit 1 ;; + esac + ;; + *) + echo " (failed to stop)." + exit 1 + ;; + esac + ;; +status) + echo -n "Status of $DESC service: " + status + case "$?" in + 0) echo "not running." ; exit 1 ;; + 1) echo "running." ; exit 0 ;; + esac + ;; +*) + echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|status}" >&2 + exit 1 + ;; +esac + --- glibc-2.4.orig/debian/debhelper.in/libc-dev.install +++ glibc-2.4/debian/debhelper.in/libc-dev.install @@ -0,0 +1,28 @@ +debian/tmp-libc/usr/bin/gencat usr/bin +debian/tmp-libc/usr/bin/mtrace usr/bin +debian/tmp-libc/usr/bin/rpcgen usr/bin +debian/tmp-libc/usr/bin/sprof usr/bin + +debian/tmp-libc/usr/lib/libanl.a usr/lib +debian/tmp-libc/usr/lib/libBrokenLocale.a usr/lib +debian/tmp-libc/usr/lib/libbsd-compat.a usr/lib +debian/tmp-libc/usr/lib/libc.a usr/lib +debian/tmp-libc/usr/lib/libc_nonshared.a usr/lib +debian/tmp-libc/usr/lib/libcrypt.a usr/lib +debian/tmp-libc/usr/lib/libdl.a usr/lib +debian/tmp-libc/usr/lib/libg.a usr/lib +debian/tmp-libc/usr/lib/libieee.a usr/lib +debian/tmp-libc/usr/lib/libm.a usr/lib +debian/tmp-libc/usr/lib/libmcheck.a usr/lib +debian/tmp-libc/usr/lib/libnsl.a usr/lib +debian/tmp-libc/usr/lib/libpthread.a usr/lib +debian/tmp-libc/usr/lib/libpthread_nonshared.a usr/lib +debian/tmp-libc/usr/lib/libresolv.a usr/lib +debian/tmp-libc/usr/lib/librpcsvc.a usr/lib +debian/tmp-libc/usr/lib/librt.a usr/lib +debian/tmp-libc/usr/lib/libutil.a usr/lib + +debian/tmp-libc/usr/lib/*.o usr/lib +debian/tmp-libc/usr/lib/*.so usr/lib +debian/tmp-libc/usr/lib/nptl* usr/lib +debian/tmp-libc/usr/include/* usr/include --- glibc-2.4.orig/debian/debhelper.in/libc-otherbuild.postinst +++ glibc-2.4/debian/debhelper.in/libc-otherbuild.postinst @@ -0,0 +1,62 @@ +#!/bin/sh + +set -e + +checkpkgver () { + local status pkg + pkg=$1 + status=$(dpkg -s $pkg 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g') + if [ -n "$status" ] && [ "$status" != "not-installed" ] && [ "$status" != "config-files" ]; then + echo $(dpkg -s $pkg 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//'); + fi +} + +if [ "$1" = "configure" ] +then + opt=OPT + curver=CURRENT_VER + + if [ -f /etc/ld.so.hwcappkgs ]; then + rm -f /etc/ld.so.hwcappkgs.tmp + (while read LINE; do + case $LINE in + \#*|"") continue + esac + set -- $LINE + pkg=$1 + if [ "$pkg" = "$opt" ]; then + # this package + ver=$curver + isrecorded=yes + else + # other packages + ver=$(checkpkgver $pkg) + if [ -n "$ver" ]; then + dpkg --compare-versions $curver ne $ver && optunmatch=yes + fi + fi + echo "$pkg $ver" >> /etc/ld.so.hwcappkgs.tmp + done) < /etc/ld.so.hwcappkgs + if [ "$isrecorded" != yes ]; then + echo "$opt $curver" >> /etc/ld.so.hwcappkgs.tmp + fi + mv /etc/ld.so.hwcappkgs.tmp /etc/ld.so.hwcappkgs + else + # libc6 did not create ld.so.hwcappkgs correctly or ld.so.hwcappkgs + # was unexpectedly removed. Don't remove ld.so.nohwcap. + optunmatch=yes + fi + + # nohwcap during upgrade. + if [ -f /etc/ld.so.nohwcap ]; then + grep -v "^$opt\$" /etc/ld.so.nohwcap > /etc/ld.so.nohwcap.tmp || true + mv -f /etc/ld.so.nohwcap.tmp /etc/ld.so.nohwcap + if [ "$optunmatch" != "yes" ]; then + test -s /etc/ld.so.nohwcap || rm -f /etc/ld.so.nohwcap + fi + fi +fi + +#DEBHELPER# + +exit 0 --- glibc-2.4.orig/debian/debhelper.in/libc.postinst +++ glibc-2.4/debian/debhelper.in/libc.postinst @@ -0,0 +1,397 @@ +#!/bin/sh +set -e +export LC_ALL=C + +type=$1 +preversion=$2 + +package_name() +{ + echo LIBC +} + +# Borrowed from sysvinit's postinst. +# Function like update-rc.d but simpler & faster. +# Usage: updatercd basename start|stop NN runlevel . +# +# Now we use the real update-rc.d, so now this function should +# be equivalent to /usr/sbin/update-rc.d. +# +updatercd() { + + if [ ! -f /etc/init.d/$1 ] + then + return + fi + + if [ -x /usr/sbin/update-rc.d ] + then + update-rc.d "$@" > /dev/null + return $? + fi + + base=$1 + shift + while [ "$1" != "" ] + do + if [ "$1" = stop ] + then + tlet=K + else + tlet=S + fi + lev=$2 + shift 2 + while [ "$1" != "." ] + do + cd /etc/rc$1.d + tmp="`echo $tlet??$base`" + case "$tmp" in + "$tlet??$base") + # Not present yet. + ln -s ../init.d/$base $tlet$lev$base + ;; + *) + # Already present. + ;; + esac + shift + done + shift + done +} + +# element() is a helper function for file-rc: +element() { + local element list IFS + + element="$1" + + [ "$2" = "in" ] && shift + list="$2" + [ "$list" = "-" ] && return 1 + [ "$list" = "*" ] && return 0 + + IFS="," + set -- $list + case $element in + "$1"|"$2"|"$3"|"$4"|"$5"|"$6"|"$7"|"$8"|"$9") + return 0 + esac + return 1 +} + +# filerc (runlevel, service) returns /etc/init.d/service, if service is +# running in $runlevel: +filerc() { + local runlevel basename + runlevel=$1 + basename=$2 + while read LINE + do + case $LINE in + \#*|"") continue + esac + + set -- $LINE + SORT_NO="$1"; STOP="$2"; START="$3"; CMD="$4" + [ "$CMD" = "/etc/init.d/$basename" ] || continue + + if element "$runlevel" in "$START" || element "S" in "$START" + then + echo "/etc/init.d/$basename" + return 0 + fi + done < /etc/runlevel.conf + echo "" +} + +checkpkgver () { + local status pkg + pkg=$1 + status=$(dpkg -s $pkg 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g') + if [ -n "$status" ] && [ "$status" != "not-installed" ] && [ "$status" != "config-files" ]; then + echo $(dpkg -s $pkg 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//'); + fi +} + +# We remove a relic of the past /usr/doc/ symlinks. +# This script should keep at least until sarge release. +package=LIBC +if [ -L "/usr/doc/$package" ]; then + rm -f "/usr/doc/$package" +fi +# I'm so lazy that libc6-{dbg,dev,pic,prof} are removed in this file - gotom. +for suffix in -dbg -dev -pic -prof; do + package_name="$package""$suffix" + if [ -L "/usr/doc/$package_name" ]; then + rm -f "/usr/doc/$package_name" + fi +done + +if [ "$type" = "configure" ] +then + # Handle upgrades for libdb.so.3. We do this before calling ldconfig, + # since it will create a symlink for us. Just move everything over. We + # use `cat' because I feel it is simpler and safer. Make sure that + # libdb.so.3 is either a symlink, or non-existent, just in case + # something weird happened and the new libdb2 is unpacked before we + # get here. + if [ -e /lib/libdb.so.3.old ]; then + if [ -L /lib/libdb.so.3 ] || [ ! -e /lib/libdb.so.3 ]; then + rm -f /lib/libdb.so.3 + cat /lib/libdb.so.3.old > /lib/libdb.so.3 + fi + rm -f /lib/libdb.so.3.old + fi + + # Add support for /etc/ld.so.conf.d + if dpkg --compare-versions $preversion lt 2.3.999.2-4; then + if [ -e /etc/ld.so.conf ]; then + [ -z "$(tail -n 1 /etc/ld.so.conf)" ] || echo >> /etc/ld.so.conf + else + touch /etc/ld.so.conf + fi + if ! grep -q '^include /etc/ld.so.conf.d/.*\.conf$' /etc/ld.so.conf ; then + echo 'include /etc/ld.so.conf.d/*.conf' >> /etc/ld.so.conf + fi + fi + + # Handle upgrades when libc-opt package has been installed. + # We check the version between the current installed libc and libc-opt. + # If they're unmatched, we keep /etc/ld.so.nohwcap file until libc-opt + # package is installed or removed. + if [ -f /etc/ld.so.nohwcap ]; then + # We check the availability of ld.so.hwcappkgs. If it's not existed, + # it's first time to install ld.so.hwcappkgs aware packages. We record + # all current hwcap package status. + if [ ! -f /etc/ld.so.hwcappkgs ]; then + case $(dpkg --print-architecture) in + i386) + hwcappkgs="libc6 libc6-i686" + ;; + sparc) + hwcappkgs="libc6 libc6-sparcv9 libc6-sparcv9b" + ;; + esac + if [ -n "$hwcappkgs" ]; then + for pkg in $hwcappkgs; do + ver=$(checkpkgver $pkg) + if [ -n "$ver" ]; then + echo "$pkg $ver" >> /etc/ld.so.hwcappkgs + new_hwcappkgs=yes + fi + done + fi + fi + + # If ld.so.hwcappkgs is existed, it may have one or more opt packages. + # Update the current package's version, and compare the consistency of + # those optimized packages. If inconsistency is found, keep + # /etc/ld.so.nohwcap. + if [ -f /etc/ld.so.hwcappkgs ]; then + curver=CURRENT_VER + rm -f /etc/ld.so.hwcappkgs.tmp + while read LINE; do + case $LINE in + \#*|"") continue + esac + set -- $LINE + pkg=$1; ver=$2 + if [ "$pkg" = "$package" ]; then + # libc6 + ver=$curver + isrecorded=yes + else + if [ "$new_hwcappkgs" != yes ]; then + ver=$(checkpkgver $pkg) + fi + if [ -z "$ver" ]; then + continue + fi + dpkg --compare-versions $curver ne $ver && optunmatch=yes + fi + echo "$pkg $ver" >> /etc/ld.so.hwcappkgs.tmp + done < /etc/ld.so.hwcappkgs + if [ "$isrecorded" != yes ]; then + echo "$package $curver" >> /etc/ld.so.hwcappkgs.tmp + fi + mv /etc/ld.so.hwcappkgs.tmp /etc/ld.so.hwcappkgs + fi + + # nohwcap during upgrade. + egrep -v '^glibc$|^downgrade-to-old-glibc$' /etc/ld.so.nohwcap > /etc/ld.so.nohwcap.tmp || true + mv /etc/ld.so.nohwcap.tmp /etc/ld.so.nohwcap + if [ "$optunmatch" != "yes" ]; then + test -s /etc/ld.so.nohwcap || rm -f /etc/ld.so.nohwcap + fi + fi + + if [ ! -z $preversion ]; then + if [ ! -d /var/mail ] && [ ! -L /var/mail ]; then + ln -sf spool/mail /var/mail + fi + if dpkg --compare-versions $preversion lt 2.3.5-1; then + echo -n "Checking for services that may need to be restarted..." + + check="nis smail sendmail exim exim4-base ssh netbase" + check="$check ssh-nonfree postfix-tls wu-ftpd boa cron postfix" + check="$check wu-ftpd-academ vsftpd slapd openldapd wwwoffle" + check="$check cupsys lprng lpr lpr-ppd autofs snmpd ssh-krb5" + check="$check courier-authdaemon mysql-server spamassassin" + check="$check apache apache-ssl apache-perl apache2-common" + check="$check proftpd proftpd-ldap proftpd-mysql proftpd-pgsql" + check="$check dovecot-common cucipop rsync samba saslauthd" + check="$check webmin dropbear" + # Only get the ones that are installed, and configured + check=$(dpkg -s $check 2> /dev/null | egrep '^Package:|^Status:' | awk '{if ($1 ~ /^Package:/) { package=$2 } else if ($0 ~ /^Status: .* installed$/) { print package }}') + # apache2 ships its init script in apache2-common, but the + # script is apache2 + check=$(echo $check | sed 's/apache2-common/apache2/g') + # exim4 ships its init script in exim4-base, but the script + # is exim4 + check=$(echo $check | sed 's/exim4-base/exim4/g') + # The name of proftpd-{ldap,mysql,pgsql} init script is + # same as "proftpd". + check=$(echo $check | sed 's/proftpd-.*/proftpd/g') + # dovecot-common ships its init script, but the + # script name is dovecot for dovecot-{imapd,pop3d}. + check=$(echo $check | sed 's/dovecot-common/dovecot/g') + # lpr and lpr-ppd ship its init script, but the + # script name is lpd and lpd-ppd. The inserted space is + # intentional to not replace lprng. + check=$(echo $check | sed 's/lpr /lpd /g') + check=$(echo $check | sed 's/lpr-ppd /lpd-ppd /g') + # We have to list inetd and atd explicitly, because the packages + # have different names to their init scripts + check="$check inetd atd" + rl=$(runlevel | awk '{print $2}') + for service in $check; do + if [ -f /usr/share/file-rc/rc ] || [ -f /usr/lib/file-rc/rc ] && [ -f /etc/runlevel.conf ]; then + idl=$(filerc $rl $service) + else + idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -1) + fi + if [ -n "$idl" ] && [ -x $idl ]; then + services="$service $services" + fi + done + echo "done." + if [ -n "$services" ]; then + echo + echo "Name Service Switch update in the C Library: post-installation question." + echo + echo "Running services and programs that are using NSS need to be restarted," + echo "otherwise they might not be able to do lookup or authentication any more" + echo "(for services such as ssh, this can affect your ability to login)." + echo "Note: restarting sshd/telnetd should not affect any existing connections." + echo + echo "The services detected are: " + echo " $services" + echo + echo "If other services have begun to fail mysteriously after this upgrade, it is" + echo "probably necessary to restart them too. We recommend you to reboot your" + echo "machine after the upgrade to avoid the NSS related trouble." + echo + frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'` + if [ "$frontend" = noninteractive ]; then + echo "Non-interactive mode, restarting services" + answer=yes + else + echo -n "Do you wish to restart services? [Y/n] " + read answer + case $answer in + Y*|y*) answer=yes ;; + N*|n*) answer=no ;; + *) answer=yes ;; + esac + fi + echo + if [ "$answer" = yes ] && [ "$services" != "" ]; then + echo "Restarting services possibly affected by the upgrade:" + failed="" + for service in $services; do + if [ -f /usr/share/file-rc/rc ] || [ -f /usr/lib/file-rc/rc ] && [ -f /etc/runlevel.conf ]; then + idl=$(filerc $rl $service) + else + idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -1) + fi + echo -n " $service: stopping..." + $idl stop > /dev/null 2>&1 || true + sleep 2 + echo -n "starting..." + if $idl start > /dev/null 2>&1; then + echo "done." + else + echo "FAILED! ($?)" + failed="$service $failed" + fi + done + echo + if [ -n "$failed" ]; then + # Ruh roh, George + echo "The following services failed to start: $failed" + echo + echo "You will need to start these manually by running \`/etc/init.d/ start'" + echo "If the service still fails to start, you may need to file a bug on" + echo "$(package_name) or the service involved." + if [ "$DEBIAN_FRONTEND" != noninteractive ]; then + echo + echo -n "Press ENTER to continue: " + read foo + fi + else + echo "Services restarted successfully." + fi + echo + fi + fi + fi # end upgrading and $preversion lt 2.3.5-1 + fi # Upgrading + + # Ubuntu change. Do not do kernel version detection at startup. + update-rc.d -f glibc.sh remove >/dev/null 2>&1 + +# # DO NOT FOLLOW THIS EXAMPLE IN OTHER PACKAGES +# updatercd glibc.sh start 01 S . +# if [ -x /usr/sbin/invoke-rc.d ]; then +# invoke-rc.d glibc.sh start +# else +# /etc/init.d/glibc.sh 2>/dev/null || true +# fi +fi + +if [ "`uname -s`" = Linux ]; then +# +# Upgrade init if possible. There was a bug in all versions +# up to and including 2.75-4, which didn't affect i386 but +# did affect most other architectures. +# +sysvinitver="`dpkg -s sysvinit 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//'`" +case "`uname -m`" in + i?86) + badsysvinitver="2.[0-6]*|2.7[0-3]*" + ;; + *) + badsysvinitver="2.[0-6]*|2.7[0-4]*|2.75-*" + ;; +esac +# Black magic. If we are in a chroot, then /proc/1/exe will not resolve to +# a file (will return EPERM). This keeps us from breaking things in +# debootstrap, and the like. +case "$sysvinitver" in + $badsysvinitver) + ;; + *) + if [ -x /sbin/init -a -x /bin/readlink ]; then + if [ "$(readlink /proc/1/exe 2>/dev/null)" = "/sbin/init" ]; then + (init u ; sleep 1) + fi + fi + ;; +esac +fi + +#DEBHELPER# + +exit 0 --- glibc-2.4.orig/debian/debhelper.in/libc-otherbuild.preinst +++ glibc-2.4/debian/debhelper.in/libc-otherbuild.preinst @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +if [ "$1" != abort-upgrade ]; then + opt=OPT + touch /etc/ld.so.nohwcap + echo $opt >> /etc/ld.so.nohwcap +fi + +#DEBHELPER# + +exit 0 --- glibc-2.4.orig/debian/debhelper.in/nscd.install +++ glibc-2.4/debian/debhelper.in/nscd.install @@ -0,0 +1,3 @@ +debian/tmp-libc/usr/sbin/nscd usr/sbin +DEB_SRCDIR/nscd/nscd.conf /etc + --- glibc-2.4.orig/debian/debhelper.in/glibc-doc.links +++ glibc-2.4/debian/debhelper.in/glibc-doc.links @@ -0,0 +1,16 @@ +usr/share/man/man3/pthread_key_create.3.gz usr/share/man/man3/pthread_getspecific.3.gz +usr/share/man/man3/pthread_key_create.3.gz usr/share/man/man3/pthread_key_delete.3.gz +usr/share/man/man3/pthread_key_create.3.gz usr/share/man/man3/pthread_setspecific.3.gz +usr/share/man/man3/pthread_cond_init.3.gz usr/share/man/man3/pthread_cond_signal.3.gz +usr/share/man/man3/pthread_cond_init.3.gz usr/share/man/man3/pthread_cond_broadcast.3.gz +usr/share/man/man3/pthread_cond_init.3.gz usr/share/man/man3/pthread_cond_wait.3.gz +usr/share/man/man3/pthread_cond_init.3.gz usr/share/man/man3/pthread_cond_timedwait.3.gz +usr/share/man/man3/pthread_cond_init.3.gz usr/share/man/man3/pthread_cond_destroy.3.gz +usr/share/man/man3/pthread_condattr_init.3.gz usr/share/man/man3/pthread_condattr_destroy.3.gz +usr/share/man/man3/pthread_mutex_init.3.gz usr/share/man/man3/pthread_mutex_lock.3.gz +usr/share/man/man3/pthread_mutex_init.3.gz usr/share/man/man3/pthread_mutex_trylock.3.gz +usr/share/man/man3/pthread_mutex_init.3.gz usr/share/man/man3/pthread_mutex_unlock.3.gz +usr/share/man/man3/pthread_mutex_init.3.gz usr/share/man/man3/pthread_mutex_destroy.3.gz +usr/share/man/man3/pthread_mutexattr_init.3.gz usr/share/man/man3/pthread_mutexattr_destroy.3.gz +usr/share/man/man3/pthread_mutexattr_init.3.gz usr/share/man/man3/pthread_mutexattr_settype.3.gz +usr/share/man/man3/pthread_mutexattr_init.3.gz usr/share/man/man3/pthread_mutexattr_gettype.3.gz --- glibc-2.4.orig/debian/debhelper.in/libc.manpages +++ glibc-2.4/debian/debhelper.in/libc.manpages @@ -0,0 +1,12 @@ +debian/local/manpages/catchsegv.1 +debian/local/manpages/getent.1 +debian/local/manpages/getconf.1 +debian/local/manpages/iconv.1 +debian/local/manpages/iconvconfig.8 +debian/local/manpages/ldconfig.8 +debian/local/manpages/ldd.1 +debian/local/manpages/rpcinfo.8 +debian/local/manpages/tzselect.1 +debian/local/manpages/tzconfig.8 +debian/local/manpages/zdump.1 +debian/local/manpages/zic.8 --- glibc-2.4.orig/debian/debhelper.in/locales.postinst +++ glibc-2.4/debian/debhelper.in/locales.postinst @@ -0,0 +1,78 @@ +#! /bin/sh +set -e + +LG="/etc/locale.gen" +EE="/etc/default/locale" + +if [ "$1" = configure ]; then + + . /usr/share/debconf/confmodule + db_version 2.0 + + db_get locales/locales_to_be_generated && SELECTED_LOCALES=$RET + db_get locales/default_environment_locale && SELECTED="$RET" + + if [ -n "$SELECTED_LOCALES" ]; then + if [ "$SELECTED_LOCALES" = "All locales" ]; then + [ -e $LG ] && rm -f $LG + ln -s /usr/share/i18n/SUPPORTED $LG + else + [ -L $LG ] && [ "$(readlink $LG)" = /usr/share/i18n/SUPPORTED ] && rm -f $LG + if [ -e $LG ]; then + # Comment previous defined locales + LC_ALL=C sed -e 's/^[a-zA-Z]/#&/' $LG > $LG.tmp || true + mv -f $LG.tmp $LG + last=`tail -n 1 "$LG"` + if test -n "$last"; then echo >> $LG; fi + else + cat > $LG << EOF +# This file lists locales that you wish to have built. You can find a list +# of valid supported locales at /usr/share/i18n/SUPPORTED. Other +# combinations are possible, but may not be well tested. If you change +# this file, you need to rerun locale-gen. +# + +EOF + fi + list=`echo $SELECTED_LOCALES | sed -e 's/, /,/g'` + save_IFS=$IFS + IFS=, + for locale in $list; do + if grep -q "^$locale *\$" $LG; then + # This locale has already been inserted, do nothing + : + elif grep -q "^#$locale *\$" $LG; then + # Uncomment previous defined locales + sed -e "s,#$locale *\$,$locale," $LG > $LG.tmp || true + mv -f $LG.tmp $LG + else + # Add a new locale + echo $locale >> $LG + fi + done + IFS=$save_IFS + fi + else + if [ -L $LG ]; then + rm -f $LG + elif [ -e $LG ]; then + LC_ALL=C sed -e 's/^[a-zA-Z]/#&/' $LG > $LG.tmp || true + mv -f $LG.tmp $LG + fi + fi + # Update requested locales. + /usr/sbin/locale-gen + + # Set default LANG environment variable + if [ -e $EE ]; then + # Remove previous definitions + /usr/sbin/update-locale --no-checks LANG + fi + if [ -n "$SELECTED" ] && [ "$SELECTED" != "None" ]; then + /usr/sbin/update-locale "LANG=$SELECTED" + fi +fi + +#DEBHELPER# + +exit 0 --- glibc-2.4.orig/debian/debhelper.in/glibc-doc.postinst +++ glibc-2.4/debian/debhelper.in/glibc-doc.postinst @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +# We remove a relic of the past /usr/doc/ symlinks. +# This script should keep at least until sarge release. +if [ -L "/usr/doc/glibc-doc" ]; then + rm -f "/usr/doc/glibc-doc" +fi + +#DEBHELPER# --- glibc-2.4.orig/debian/debhelper.in/libc-alt-dev.install +++ glibc-2.4/debian/debhelper.in/libc-alt-dev.install @@ -0,0 +1,22 @@ +# This file is used for making biarch libraries development packages. +TMPDIR/LIBDIR/libanl.a LIBDIR +TMPDIR/LIBDIR/libBrokenLocale.a LIBDIR +TMPDIR/LIBDIR/libbsd-compat.a LIBDIR +TMPDIR/LIBDIR/libc.a LIBDIR +TMPDIR/LIBDIR/libc_nonshared.a LIBDIR +TMPDIR/LIBDIR/libcrypt.a LIBDIR +TMPDIR/LIBDIR/libdl.a LIBDIR +TMPDIR/LIBDIR/libg.a LIBDIR +TMPDIR/LIBDIR/libieee.a LIBDIR +TMPDIR/LIBDIR/libm.a LIBDIR +TMPDIR/LIBDIR/libmcheck.a LIBDIR +TMPDIR/LIBDIR/libnsl.a LIBDIR +TMPDIR/LIBDIR/libpthread.a LIBDIR +TMPDIR/LIBDIR/libpthread_nonshared.a LIBDIR +TMPDIR/LIBDIR/libresolv.a LIBDIR +TMPDIR/LIBDIR/librpcsvc.a* LIBDIR +TMPDIR/LIBDIR/librt.a LIBDIR +TMPDIR/LIBDIR/libutil.a LIBDIR + +TMPDIR/LIBDIR/*.o LIBDIR +TMPDIR/LIBDIR/*.so LIBDIR --- glibc-2.4.orig/debian/debhelper.in/libc-dbg.install +++ glibc-2.4/debian/debhelper.in/libc-dbg.install @@ -0,0 +1 @@ +TMPDIR/lib/*.so* usr/lib/debug --- glibc-2.4.orig/debian/debhelper.in/libc.dirs +++ glibc-2.4/debian/debhelper.in/libc.dirs @@ -0,0 +1,3 @@ +sys +etc/init.d +etc/ld.so.conf.d --- glibc-2.4.orig/debian/debhelper.in/locales.manpages +++ glibc-2.4/debian/debhelper.in/locales.manpages @@ -0,0 +1,4 @@ +debian/local/manpages/locale-gen.8 +debian/local/manpages/locale.gen.5 +debian/local/manpages/update-locale.8 +debian/local/manpages/validlocale.8 --- glibc-2.4.orig/debian/debhelper.in/glibc-doc.manpages +++ glibc-2.4/debian/debhelper.in/glibc-doc.manpages @@ -0,0 +1 @@ +DEB_SRCDIR/linuxthreads/man/pthread*.man --- glibc-2.4.orig/debian/debhelper.in/libc.install +++ glibc-2.4/debian/debhelper.in/libc.install @@ -0,0 +1,27 @@ +debian/tmp-libc/lib/*.so* lib +debian/tmp-libc/usr/lib/gconv/*.so usr/lib/gconv +debian/tmp-libc/usr/lib/gconv/gconv-modules usr/lib/gconv +debian/tmp-libc/usr/bin/iconv usr/bin +debian/tmp-libc/usr/bin/getent usr/bin +debian/tmp-libc/usr/bin/getconf usr/bin +debian/tmp-libc/usr/bin/catchsegv usr/bin +debian/tmp-libc/usr/bin/tzselect usr/bin +debian/tmp-libc/usr/bin/ldd* usr/bin +debian/tmp-libc/usr/sbin/zdump usr/bin +debian/tmp-libc/usr/sbin/rpcinfo usr/bin + +debian/tmp-libc/usr/sbin/zic usr/sbin +debian/tmp-libc/usr/sbin/iconvconfig usr/sbin + +debian/tmp-libc/sbin/ldconfig sbin + +debian/tmp-libc/usr/lib/pt_chown usr/lib + +debian/local/usr_sbin/tzconfig usr/sbin + +debian/tmp-libc/lib/*-*-gnu/ lib +debian/tmp-libc/usr/lib/*-*-gnu/ usr/lib + +debian/tmp-libc/etc/ld.so.conf.d /etc + +log-test-*-libc usr/share/doc/LIBC --- glibc-2.4.orig/debian/script.in/kernelcheck.sh +++ glibc-2.4/debian/script.in/kernelcheck.sh @@ -0,0 +1,166 @@ +kernel_compare_versions () { + verA=$(($(echo "$1" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'))) + verB=$(($(echo "$3" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'))) + + test $verA -$2 $verB +} + +exit_check () { + EXIT_CHECK + exit 1 +} + + # Test to make sure z < 255, in x.y.z-n form of kernel version + # Also make sure we don't trip on x.y.zFOO-n form + #kernel_rev=$(uname -r | tr -- - . | cut -d. -f3 | tr -d '[:alpha:]') + kernel_rev=$(uname -r | sed 's/\([0-9]*\.[0-9]*\.\)\([0-9]*\)\(.*\)/\2/') + if [ "$kernel_rev" -ge 255 ] + then + echo WARNING: Your kernel version indicates a revision number + echo of 255 or greater. Glibc has a number of built in + echo assumptions that this revision number is less than 255. + echo If you\'ve built your own kernel, please make sure that any + echo custom version numbers are appended to the upstream + echo kernel number with a dash or some other delimiter. + + exit_check + fi + + # sanity checking for the appropriate kernel on each architecture. + realarch=`uname -m` + kernel_ver=`uname -r` + + # convert "armv4l" and similar to just "arm", and "mips64" and similar + # to just "mips" + case $realarch in + arm*) realarch="arm";; + mips*) realarch="mips";; + esac + + + # intel i386 requires a recent kernel + if [ "$realarch" = i386 ] + then + # From glibc 2.3.5-7 and linux-2.6 2.6.12-1, real-i386 is dropped. + #if kernel_compare_versions "$kernel_ver" lt 2.4.24 + #then + echo WARNING: This machine has real i386 class processor. + echo Debian etch and later does not support such old hardware + echo any longer. + echo The reason is that \"bswap\" instruction is not supported + echo on i386 class processors, and some core libraries have + echo such instruction. You\'ll see illegal instruction error + echo when you upgrade your Debian system. + exit_check + #fi + fi + + # The GNU libc is now built with --with-kernel= >= 2.4.1, except on m68k + if [ "$realarch" != m68k ] + then + if kernel_compare_versions "$kernel_ver" lt 2.4.1 + then + echo WARNING: This version of glibc requires that you be running + echo kernel version 2.4.1 or later. Earlier kernels contained + echo bugs that may render the system unusable if a modern version + echo of glibc is installed. + exit_check + fi + fi + # SPARC sun4m requires a recent kernel + if [ "$realarch" = sparc ] + then + cputype=`egrep '^type.*:.*sun4m' /proc/cpuinfo 2> /dev/null` || true + + if [ "$cputype" != "" ] + then + if kernel_compare_versions "$kernel_ver" lt 2.4.21 + then + echo WARNING: You have a cpu which requires kernel 2.4.21 + echo or greater in order to install this version of glibc. + echo Please upgrade the kernel before installing this package. + echo + echo You should be able to install the latest version of the + echo sparc kernel-image in order to satisfy this need. You + echo can also download and compile the latest kernel source + echo yourself from a kernel mirror \(see http://www.kernel.org/\). + exit_check + fi + fi + fi + # HPPA boxes require latest fixes in the kernel to function properly. + if [ "$realarch" = parisc ] + then + if kernel_compare_versions "$kernel_ver" lt 2.4.17 + then + echo WARNING: This version of glibc requires that you be running + echo atleast a 2.4.17 kernel in order to work properly. Earlier + echo kernels did not provide the proper functionality in order + echo for the system to be stable. + exit_check + fi + fi + # parisc64 boxes require latest fixes in the kernel 2.4.19-pa17 or later + # (in 2.4.x), 2.5.53-pa3 or later (in 2.5.x), to function properly. + # Note that parisc64 kernel version scheme is "`uname -r`-64". + if [ "$realarch" = parisc64 ] + then + kernel_ver_pa=$(echo "$kernel_ver" | sed 's/pa//') + if [ "$kernel_ver" = "$kernel_ver_pa" ] + then + if kernel_compare_versions "$kernel_ver" lt 2.4.19-64 + then + echo WARNING: This version of glibc requires that you be + echo running at least a 2.4.19-64 to work properly. + echo Earlier kernels did not provide the proper functionality + echo in order for the system to be stable. + exit_check + fi + else + if kernel_compare_versions "$kernel_ver" lt 2.4.19-pa17 + then + echo WARNING: This version of glibc requires that you be + echo running at least a 2.4.19-pa17 in \(2.4\) or 2.5.53-pa3 + echo \(in 2.5\) to work properly. + echo Earlier kernels did not provide the proper functionality + echo in order for the system to be stable. + exit_check + fi + fi + fi + + if [ "$realarch" = mips ] \ + && [ DEB_HOST_ARCH = mips ] + then + # MIPS (but not mipsel) require a kernel update for the msq fixes. + if kernel_compare_versions "$kernel_ver" lt 2.4.22 + then + echo WARNING: System V message queues require kernel 2.4.22 to + echo work correctly on this architecture. Some programs + echo "(including perl) may not operate correctly." + exit_check + fi + fi + + # amd64 requires 2.6 kernel because we drop to support linuxthreads + if [ "$realarch" = x86_64 ] \ + && [ DEB_HOST_ARCH = amd64 ] + then + if kernel_compare_versions "$kernel_ver" lt 2.6.0 + then + echo WARNING: POSIX threads library NPTL requires 2.6 and + echo later kernel on amd64. If you use 2.4 kernel, please + echo upgrade your kernel before installing glibc. + exit_check + fi + fi + + # In Ubuntu, we have dropped LinuxThreads. We require the 2.6 kernel. + if kernel_compare_versions "$kernel_ver" lt 2.6.0 + then + echo WARNING: POSIX threads library NPTL requires 2.6 and + echo later kernel. You are using a 2.4 kernel, please + echo upgrade your kernel before installing glibc. + exit_check + fi + --- glibc-2.4.orig/debian/rules.d/debhelper.mk +++ glibc-2.4/debian/rules.d/debhelper.mk @@ -0,0 +1,290 @@ +# This is so horribly wrong. libc-pic does a whole pile of gratuitous +# renames. There's very little we can do for now. Maybe after +# Sarge releases we can consider breaking packages, but certainly not now. + +$(stamp)binaryinst_$(libc)-pic:: $(stamp)debhelper + @echo Running special kludge for $(libc)-pic + dh_testroot + dh_installdirs -p$(curpass) + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/libc_pic.a debian/$(libc)-pic/usr/lib/. + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/libc.map debian/$(libc)-pic/usr/lib/libc_pic.map + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/elf/soinit.os debian/$(libc)-pic/usr/lib/libc_pic/soinit.o + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/elf/sofini.os debian/$(libc)-pic/usr/lib/libc_pic/sofini.o + + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/math/libm_pic.a debian/$(libc)-pic/usr/lib/. + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/libm.map debian/$(libc)-pic/usr/lib/libm_pic.map + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/resolv/libresolv_pic.a debian/$(libc)-pic/usr/lib/. + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/libresolv.map debian/$(libc)-pic/usr/lib/libresolv_pic.map + +# Some per-package extra files to install. +define $(libc)_extra_debhelper_pkg_install + install --mode=0644 $(DEB_SRCDIR)/ChangeLog debian/$(curpass)/usr/share/doc/$(curpass)/changelog + install --mode=0644 $(DEB_SRCDIR)/linuxthreads/README debian/$(curpass)/usr/share/doc/$(curpass)/README.linuxthreads + install --mode=0644 $(DEB_SRCDIR)/linuxthreads/ChangeLog debian/$(curpass)/usr/share/doc/$(curpass)/ChangeLog.linuxthreads + case " $(GLIBC_PASSES) " in \ + *" nptl "*) \ + install --mode=0644 $(DEB_SRCDIR)/nptl/ChangeLog debian/$(curpass)/usr/share/doc/$(curpass)/ChangeLog.nptl; \ + ;; \ + esac + sed -e "/KERNEL_VERSION_CHECK/r debian/script.in/kernelcheck.sh" \ + debian/local/etc_init.d/glibc.sh | \ + sed -e "s/EXIT_CHECK/sleep 5/" -e "s/DEB_HOST_ARCH/$(DEB_HOST_ARCH)/" > debian/glibc.sh.generated + install --mode=0755 debian/glibc.sh.generated debian/$(curpass)/etc/init.d/glibc.sh + # dh_installmanpages thinks that .so is a language. + install --mode=0644 debian/local/manpages/ld.so.8 debian/$(curpass)/usr/share/man/man8/ld.so.8 + + install --mode=0644 debian/FAQ debian/$(curpass)/usr/share/doc/$(curpass)/README.Debian +endef + +define locales_extra_debhelper_pkg_install + install --mode=0644 $(DEB_SRCDIR)/localedata/ChangeLog debian/$(curpass)/usr/share/doc/$(curpass)/changelog + install --mode=0644 debian/locales.NEWS.Debian debian/$(curpass)/usr/share/doc/locales/NEWS.Debian +endef + +define glibc-doc_extra_debhelper_pkg_install + install --mode=0644 $(DEB_SRCDIR)/ChangeLog debian/$(curpass)/usr/share/doc/$(curpass)/changelog + install --mode=0644 $(DEB_SRCDIR)/linuxthreads/FAQ.html debian/$(curpass)/usr/share/doc/$(curpass)/FAQ.linuxthreads.html +endef + +# Should each of these have per-package options? + +$(patsubst %,binaryinst_%,$(DEB_ARCH_REGULAR_PACKAGES) $(DEB_INDEP_REGULAR_PACKAGES)) :: binaryinst_% : $(stamp)binaryinst_% + +# Make sure the debug packages are built last, since other packages may add +# files to them. +debug-packages = $(filter %-dbg,$(DEB_ARCH_REGULAR_PACKAGES)) +non-debug-packages = $(filter-out %-dbg,$(DEB_ARCH_REGULAR_PACKAGES)) +$(patsubst %,$(stamp)binaryinst_%,$(debug-packages)):: $(patsubst %,$(stamp)binaryinst_%,$(non-debug-packages)) + +$(patsubst %,$(stamp)binaryinst_%,$(DEB_ARCH_REGULAR_PACKAGES) $(DEB_INDEP_REGULAR_PACKAGES)):: $(stamp)debhelper + @echo Running debhelper for $(curpass) + dh_testroot + dh_installdirs -p$(curpass) + dh_install -p$(curpass) + dh_installman -p$(curpass) + dh_installinfo -p$(curpass) + dh_installdebconf -p$(curpass) + dh_installchangelogs -p$(curpass) + dh_installinit -p$(curpass) + dh_installdocs -p$(curpass) + dh_link -p$(curpass) + + # extra_debhelper_pkg_install is used for debhelper.mk only. + # when you want to install extra packages, use extra_pkg_install. + $(call xx,extra_debhelper_pkg_install) + $(call xx,extra_pkg_install) + +ifeq ($(filter nostrip,$(DEB_BUILD_OPTIONS)),) + # libpthread must be stripped specially; GDB needs the + # non-dynamic symbol table in order to load the thread + # debugging library. We keep a full copy of the symbol + # table in libc6-dbg but basic thread debugging should + # work even without that package installed. + + # We use a wrapper script so that we only include the bare + # minimum in /usr/lib/debug/lib for backtraces; anything + # else takes too long to load in GDB. + + if test "$(NOSTRIP_$(curpass))" != 1; then \ + chmod a+x debian/wrapper/objcopy; \ + export PATH=$(shell pwd)/debian/wrapper:$$PATH; \ + dh_strip -p$(curpass) -Xlibpthread --keep-debug; \ + mkdir -p debian/$(libc)-dbg/usr/lib/debug; \ + if test -d debian/$(curpass)/usr/lib/debug; then \ + cd debian/$(curpass)/usr/lib/debug; \ + find . -type f -name \*.so\* \ + | cpio -pd $(shell pwd)/debian/$(libc)-dbg/usr/lib/debug; \ + cd ../../../../..; \ + rm -rf debian/$(curpass)/usr/lib/debug; \ + fi; \ + (cd debian/$(curpass); \ + find . -name libpthread-\*.so -exec \ + ../../debian/wrapper/objcopy --only-keep-debug '{}' \ + ../$(libc)-dbg/usr/lib/debug/'{}' ';' || true; \ + find . -name libpthread-\*.so -exec objcopy \ + --add-gnu-debuglink=../$(libc)-dbg/usr/lib/debug/'{}' \ + '{}' ';' || true); \ + find debian/$(curpass) -name libpthread-\*.so -exec \ + strip --strip-debug --remove-section=.comment \ + --remove-section=.note '{}' ';' || true; \ + fi +endif + + dh_compress -p$(curpass) + dh_fixperms -p$(curpass) -Xpt_chown + # Use this instead of -X to dh_fixperms so that we can use + # an unescaped regular expression. ld.so must be executable; + # libc.so and NPTL's libpthread.so print useful version + # information when executed. + # FIXME: LinuxThread's libpthread.so doesn't. It would be good + # to either fix that, or use a more robust method than searching + # for /tls/ in the path to identify NPTL. + find debian/$(curpass) -type f \( -regex '.*lib.*/ld.*so.*' \ + -o -regex '.*lib.*/tls/.*libpthread.*so.*' \ + -o -regex '.*lib.*/libc[.-].*so.*' \) \ + -exec chmod a+x '{}' ';' + dh_makeshlibs -p$(curpass) -V "$(call xx,shlib_dep)" + + dh_installdeb -p$(curpass) + # dh_shlibdeps -p$(curpass) + dh_gencontrol -p$(curpass) -- $($(curpass)_control_flags) + dh_md5sums -p$(curpass) + dh_builddeb -p$(curpass) + + touch $@ + +$(patsubst %,binaryinst_%,$(DEB_UDEB_PACKAGES)) :: binaryinst_% : $(stamp)binaryinst_% +$(patsubst %,$(stamp)binaryinst_%,$(DEB_UDEB_PACKAGES)):: $(stamp)debhelper + @echo Running debhelper for $(curpass) + dh_testroot + dh_installdirs -p$(curpass) + dh_install -p$(curpass) + dh_strip -p$(curpass) + + # when you want to install extra packages, use extra_pkg_install. + $(call xx,extra_pkg_install) + + dh_compress -p$(curpass) + dh_fixperms -p$(curpass) + find debian/$(curpass) -type f \( -regex '.*lib.*/ld.*so.*' \ + -o -regex '.*lib.*/tls/.*libpthread.*so.*' \ + -o -regex '.*lib.*/libc[.-].*so.*' \) \ + -exec chmod a+x '{}' ';' + # dh_makeshlibs -p$(curpass) -V "$(call xx,shlib_dep)" + dh_installdeb -p$(curpass) + # dh_shlibdeps -p$(curpass) + dh_gencontrol -p$(curpass) + dh_builddeb -p$(curpass) + + touch $@ + +#Ugly kludge: +# I'm running out of time to get this sorted out properly. Basically +# the problem is that nptl is like an optimised library, but not quite. +# So we'll filter it out of the passes list and deal with it specifically. +# +# Ideally, there should be some way of having an optimisation pass and +# say "include this in the main library" by setting a variable. +# But after 10 hours of staring at this thing, I can't figure it out. + +OPT_PASSES = $(filter-out libc nptl, $(GLIBC_PASSES)) +OPT_DIRS = $(foreach pass,$(OPT_PASSES),$($(pass)_slibdir) $($(pass)_libdir)) +NPTL = $(filter nptl,$(GLIBC_PASSES)) + +debhelper: $(stamp)debhelper +$(stamp)debhelper: + + for x in `find debian/debhelper.in -type f -maxdepth 1`; do \ + y=debian/`basename $$x`; \ + z=`echo $$y | sed -e 's#/libc#/$(libc)#'`; \ + cp $$x $$z; \ + sed -e "s#TMPDIR#debian/tmp-libc#" -i $$z; \ + sed -e "s#DEB_SRCDIR#$(DEB_SRCDIR)#" -i $$z; \ + sed -e "s#LIBC#$(libc)#" -i $$z; \ + sed -e "s#CURRENT_VER#$(DEB_VERSION)#" -i $$z; \ + sed -e "/KERNEL_VERSION_CHECK/r debian/script.in/kernelcheck.sh" -i $$z; \ + sed -e "s#EXIT_CHECK##" -i $$z; \ + sed -e "s#DEB_HOST_ARCH#$(DEB_HOST_ARCH)#" -i $$z; \ + case $$z in \ + *.install) sed -e "s/^#.*//" -i $$z ;; \ + debian/$(libc).preinst) l=`grep ^RTLDLIST= debian/tmp-libc/usr/bin/ldd | sed -e 's/^RTLDLIST=//'`; sed -e "s#RTLDLIST#$$l#" -i $$z ;; \ + esac; \ + done + + # Hack: special-case passes whose destdir is a biarch directory + # to use a different install template, which includes more + # libraries. Also generate a -dev. Other libraries get scripts + # to temporarily disable hwcap. This needs some cleaning up. + set -- $(OPT_DIRS); \ + for x in $(OPT_PASSES); do \ + slibdir=$$1; \ + shift; \ + z=debian/$(libc)-$$x.install; \ + case $$slibdir in \ + /lib32 | /lib64 | /emul/ia32-linux/lib) \ + libdir=$$1; \ + shift; \ + cp debian/debhelper.in/libc-alt.install $$z; \ + zd=debian/$(libc)-dev-$$x.install; \ + cp debian/debhelper.in/libc-alt-dev.install $$zd; \ + sed -e "s#TMPDIR#debian/tmp-$$x#g" -i $$zd; \ + sed -e "s#DEB_SRCDIR#$(DEB_SRCDIR)#g" -i $$zd; \ + sed -e "s#LIBC#$(libc)#" -i $$z; \ + sed -e "s#LIBDIR#$$libdir#g" -i $$zd; \ + sed -e "s/^#.*//g" -i $$zd; \ + ;; \ + *) \ + cp debian/debhelper.in/libc-otherbuild.install $$z; \ + cp debian/debhelper.in/libc-otherbuild.preinst debian/$(libc)-$$x.preinst ; \ + cp debian/debhelper.in/libc-otherbuild.postinst debian/$(libc)-$$x.postinst ; \ + cp debian/debhelper.in/libc-otherbuild.postrm debian/$(libc)-$$x.postrm ; \ + sed -e "s#OPT#$(libc)-$$x#g" -i debian/$(libc)-$$x.preinst; \ + sed -e "s#OPT#$(libc)-$$x#g" -i debian/$(libc)-$$x.postinst; \ + sed -e "s#OPT#$(libc)-$$x#g" -i debian/$(libc)-$$x.postrm; \ + sed -e "s#CURRENT_VER#$(DEB_VERSION)#g" -i debian/$(libc)-$$x.postinst; \ + sed -e "s#CURRENT_VER#$(DEB_VERSION)#g" -i debian/$(libc)-$$x.postrm; \ + ;; \ + esac; \ + sed -e "s#TMPDIR#debian/tmp-$$x#g" -i $$z; \ + sed -e "s#DEB_SRCDIR#$(DEB_SRCDIR)#g" -i $$z; \ + sed -e "s#SLIBDIR#$$slibdir#g" -i $$z; \ + sed -e "s#LIBDIR#$$libdir#g" -i $$z; \ + sed -e "s#FLAVOR#$$x#g" -i $$z; \ + sed -e "s#LIBC#$(libc)#g" -i $$z; \ + sed -e "s/^#.*//" -i $$z; \ + done + + # We use libc-otherbuild for this, since it's just a special case of + # an optimised library that needs to wind up in /lib/tls + # FIXME: We do not cover the case of processor optimised + # nptl libraries, like /lib/i686/tls + # We probably don't care for now. + for x in $(NPTL); do \ + z=debian/$(libc).install; \ + cat debian/debhelper.in/libc-otherbuild.install >>$$z; \ + sed -e "s#TMPDIR#debian/tmp-$$x#g" -i $$z; \ + sed -e "s#DEB_SRCDIR#$(DEB_SRCDIR)#g" -i $$z; \ + sed -e "s#LIBC-FLAVOR#$(libc)#g" -i $$z; \ + sed -e "s#FLAVOR#nptl#g" -i $$z; \ + sed -e "s#SLIBDIR#/lib/tls#g" -i $$z; \ + case $$z in \ + *.install) sed -e "s/^#.*//g" -i $$z ;; \ + esac; \ + done + + # Substitute __SUPPORTED_LOCALES__. + perl -i -pe 'BEGIN {undef $$/; open(IN, "debian/tmp-libc/usr/share/i18n/SUPPORTED"); $$j=;} s/__SUPPORTED_LOCALES__/$$j/g;' debian/locales.config + + # Generate common substvars files. + echo "locale:Depends=$(shell perl debian/debver2localesdep.pl $(LOCALES_DEP_VER))" > tmp.substvars + echo "locale-compat:Depends=$(shell perl debian/debver2localesdep.pl $(LOCALES_COMPAT_VER))" >> tmp.substvars + + for pkg in $(DEB_ARCH_REGULAR_PACKAGES) $(DEB_INDEP_REGULAR_PACKAGES) $(DEB_UDEB_PACKAGES); do \ + cp tmp.substvars debian/$$pkg.substvars; \ + done + rm -f tmp.substvars + + touch $(stamp)debhelper + +debhelper-clean: + dh_clean + + rm -f debian/*.install* + rm -f debian/*.install.* + rm -f debian/*.manpages + rm -f debian/*.links + rm -f debian/*.postinst + rm -f debian/*.preinst + rm -f debian/*.postinst + rm -f debian/*.prerm + rm -f debian/*.postrm + rm -f debian/*.info + rm -f debian/*.init + rm -f debian/*.config + rm -f debian/*.templates + rm -f debian/*.dirs + rm -f debian/*.docs + rm -f debian/*.doc-base + rm -f debian/*.generated + + rm -f $(stamp)binaryinst* --- glibc-2.4.orig/debian/rules.d/quilt.mk +++ glibc-2.4/debian/rules.d/quilt.mk @@ -0,0 +1,56 @@ +# Implements the patch and unpatch targets, called when building packages. + +# -*- Makefile -*-, you silly Emacs! +# vim: set ft=make: + +patch: $(stamp)patch-stamp +$(stamp)patch-stamp: $(stamp)unpack quilt + @cd $(DEB_SRCDIR); \ + if quilt next >/dev/null 2>&1; then \ + echo -n "Applying patches..."; \ + if quilt push -a -v > ${stamp}patch-log 2>&1; then \ + echo "successful."; \ + mv ${stamp}patch-log $@; \ + else \ + echo "failed! (check ${stamp}patch-log for details)"; \ + exit 1; \ + fi; \ + else \ + echo "No patches to apply"; \ + fi + +# By default, quilt looks for patches in the patches/ directory. +# Debian maintainers often set QUILT_PATCHES="debian/patches" +# in their $HOME/.quiltrc +# These symbolic links are useful when running quilt interactively +# from $(DEB_SRCDIR), or from the patch/unpatch targets. +# Patches specific to a certain architecture are applied first. +quilt: + @if test -n "$(DEB_SRCDIR)" && test -d $(DEB_SRCDIR); then \ + test -L $(DEB_SRCDIR)/debian || ln -s . $(DEB_SRCDIR)/debian; \ + test -L $(DEB_SRCDIR)/patches || ln -s $(shell pwd)/debian/patches $(DEB_SRCDIR)/patches; \ + if test -r debian/patches/series.$(DEB_HOST_ARCH); then \ + pc=".pc.$(DEB_HOST_ARCH)"; \ + test -d "$(DEB_SRCDIR)/$$pc" || mkdir "$(DEB_SRCDIR)/$$pc"; \ + cp debian/patches/series.$(DEB_HOST_ARCH) $(DEB_SRCDIR)/$$pc/series; \ + cd $(DEB_SRCDIR); \ + QUILT_PC="$$pc" quilt upgrade || true; \ + QUILT_PC="$$pc" quilt push -a || true; \ + fi; \ + fi + +unpatch: quilt + @echo -n "Unapplying patches..." + @cd $(DEB_SRCDIR); \ + if quilt top >/dev/null 2>&1; then \ + if quilt pop -a -v > $(stamp)unpatch-log 2>&1; then \ + echo "successful."; \ + else \ + echo "failed! (check $(stamp)unpatch-log for details)"; \ + exit 1; \ + fi; \ + else \ + echo "nothing to do."; \ + fi + -rm -f $(stamp)patch-stamp $(stamp)patch-log $(stamp)unpatch-log + --- glibc-2.4.orig/debian/rules.d/build.mk +++ glibc-2.4/debian/rules.d/build.mk @@ -0,0 +1,167 @@ +# Because variables can be masked at anypoint by declaring +# PASS_VAR, we need to call all variables as $(call xx,VAR) +# This little bit of magic makes it possible: +xx=$(if $($(curpass)_$(1)),$($(curpass)_$(1)),$($(1))) + +# We want to log output to a logfile but we also need to preserve the +# return code of the command being run. +# This little bit of magic makes it possible: +# $(call logme, [-a] , ) +define logme +(exec 3>&1; exit `( ( ( $(2) ) 2>&1 3>&-; echo $$? >&4) | tee $(1) >&3) 4>&1`) +endef + + +$(patsubst %,mkbuilddir_%,$(GLIBC_PASSES)) :: mkbuilddir_% : $(stamp)mkbuilddir_% +$(stamp)mkbuilddir_%: $(stamp)patch-stamp $(KERNEL_HEADER_DIR) + @echo Making builddir for $(curpass) + test -d $(DEB_BUILDDIR) || mkdir $(DEB_BUILDDIR) + touch $@ + +$(patsubst %,configure_%,$(GLIBC_PASSES)) :: configure_% : $(stamp)configure_% +$(stamp)configure_%: $(stamp)mkbuilddir_% + + @echo Configuring $(curpass) + rm -f $(DEB_BUILDDIR)/configparms + echo "CC = $(call xx,CC)" >> $(DEB_BUILDDIR)/configparms + echo "BUILD_CC = $(BUILD_CC)" >> $(DEB_BUILDDIR)/configparms + echo "CXX = $(call xx,CXX)" >> $(DEB_BUILDDIR)/configparms + echo "CFLAGS = $(HOST_CFLAGS)" >> $(DEB_BUILDDIR)/configparms + echo "BUILD_CFLAGS = $(BUILD_CFLAGS)" >> $(DEB_BUILDDIR)/configparms + echo "BASH := /bin/bash" >> $(DEB_BUILDDIR)/configparms + echo "KSH := /bin/bash" >> $(DEB_BUILDDIR)/configparms + echo "mandir = $(mandir)" >> $(DEB_BUILDDIR)/configparms + echo "infodir = $(infodir)" >> $(DEB_BUILDDIR)/configparms + echo "libexecdir = $(libexecdir)" >> $(DEB_BUILDDIR)/configparms + echo "LIBGD = no" >> $(DEB_BUILDDIR)/configparms + echo "sysconfdir = /etc" >> $(DEB_BUILDDIR)/configparms + echo "rootsbindir = /sbin" >> $(DEB_BUILDDIR)/configparms + libdir="$(call xx,libdir)" ; if test -n "$$libdir" ; then \ + echo "libdir = $$libdir" >> $(DEB_BUILDDIR)/configparms ; \ + fi + slibdir="$(call xx,slibdir)" ; if test -n "$$slibdir" ; then \ + echo "slibdir = $$slibdir" >> $(DEB_BUILDDIR)/configparms ; \ + fi + rtlddir="$(call xx,rtlddir)" ; if test -n "$$rtlddir" ; then \ + echo "rtlddir = $$rtlddir" >> $(DEB_BUILDDIR)/configparms ; \ + fi + + # Prevent autoconf from running unexpectedly by setting it to false. + # Also explicitly pass CC down - this is needed to get -m64 on + # Sparc, et cetera. + + configure_build=$(call xx,configure_build); \ + if [ $(call xx,configure_target) = $$configure_build ]; then \ + echo "Checking that we're running at least kernel version: $(call xx,MIN_KERNEL_SUPPORTED)"; \ + if ! $(call kernel_check,$(call xx,MIN_KERNEL_SUPPORTED)); then \ + configure_build=`echo $$configure_build | sed 's/^\([^-]*\)-\([^-]*\)$$/\1-dummy-\2/'`; \ + echo "No. Forcing cross-compile by setting build to $$configure_build."; \ + fi; \ + fi; \ + $(call logme, -a $(log_build), echo -n "Build started: " ; date --rfc-2822 ; echo "---------------") ; \ + $(call logme, -a $(log_build), \ + cd $(DEB_BUILDDIR) && \ + CC="$(call xx,CC)" \ + CXX="$(call xx,CXX)" \ + AUTOCONF=false \ + MAKEINFO=: \ + $(CURDIR)/$(DEB_SRCDIR)/configure \ + --host=$(call xx,configure_target) \ + --build=$$configure_build --prefix=/usr --without-cvs \ + --enable-add-ons=$(standard-add-ons)"$(call xx,add-ons)" \ + --without-selinux \ + $(call xx,with_headers) $(call xx,extra_config_options)) + touch $@ + +$(patsubst %,build_%,$(GLIBC_PASSES)) :: build_% : $(stamp)build_% +$(stamp)build_%: $(stamp)configure_% + @echo Building $(curpass) + $(call logme, -a $(log_build), $(MAKE) -C $(DEB_BUILDDIR) -j $(NJOBS)) + $(call logme, -a $(log_build), echo "---------------" ; echo -n "Build ended: " ; date --rfc-2822) + touch $@ + +$(patsubst %,check_%,$(GLIBC_PASSES)) :: check_% : $(stamp)check_% +$(stamp)check_%: $(stamp)build_% + if [ -n "$(findstring nocheck,$(DEB_BUILD_OPTIONS))" ]; then \ + echo "DEB_BUILD_OPTIONS contains nocheck, skipping tests."; \ + elif [ $(call xx,configure_build) != $(call xx,configure_target) ] && \ + ! $(DEB_BUILDDIR)/libc.so >/dev/null 2>&1 ; then \ + echo "Cross compiling, skipping tests."; \ + elif ! $(call kernel_check,$(call xx,MIN_KERNEL_SUPPORTED)); then \ + echo "Kernel too old, skipping tests."; \ + elif [ $(call xx,RUN_TESTSUITE) != "yes" ]; then \ + echo "Testsuite disabled for $(curpass), skipping tests."; \ + else \ + echo Testing $(curpass); \ + echo -n "Testsuite started: " | tee -a $(log_test); \ + date --rfc-2822 | tee -a $(log_test); \ + echo "--------------" | tee -a $(log_test); \ + $(MAKE) -C $(DEB_BUILDDIR) -j $(NJOBS) -k check 2>&1 | tee -a $(log_test); \ + echo "--------------" | tee -a $(log_test); \ + echo -n "Testsuite ended: " | tee -a $(log_test); \ + date --rfc-2822 | tee -a $(log_test); \ + fi + touch $@ + +$(patsubst %,install_%,$(GLIBC_PASSES)) :: install_% : $(stamp)install_% +$(stamp)install_%: $(stamp)check_% + @echo Installing $(curpass) + rm -rf $(CURDIR)/debian/tmp-$(curpass) + $(MAKE) -C $(DEB_BUILDDIR) \ + install_root=$(CURDIR)/debian/tmp-$(curpass) install + + if [ $(curpass) = libc ]; then \ + $(MAKE) -f debian/generate-supported.mk IN=$(DEB_SRCDIR)/localedata/SUPPORTED \ + OUT=debian/tmp-$(curpass)/usr/share/i18n/SUPPORTED; \ + $(MAKE) -C $(DEB_BUILDDIR) -j $(NJOBS) \ + objdir=$(DEB_BUILDDIR) install_root=$(CURDIR)/debian/tmp-$(curpass) \ + localedata/install-locales; \ + rm -rf $(CURDIR)/debian/locales-all/usr/lib; \ + install -d $(CURDIR)/debian/locales-all/usr/lib; \ + mv $(CURDIR)/debian/tmp-libc/usr/lib/locale $(CURDIR)/debian/locales-all/usr/lib/locales-all; \ + (cd $(DEB_SRCDIR)/manual && texi2html -split_chapter libc.texinfo); \ + fi + + # Remove ld.so from optimized libraries + if [ $(curpass) != libc ] && [ $(call xx,configure_build) = $(call xx,configure_target) ]; then \ + rm -f debian/tmp-$(curpass)/$(call xx,slibdir)/ld*.so* ; \ + fi + + # /usr/include/nptl and /usr/lib/nptl. It assumes tmp-libc is already installed. + if [ $(curpass) = nptl ]; then \ + for file in `find debian/tmp-$(curpass)/usr/include -type f | sed 's/^debian\/tmp-nptl\///'`; do \ + if ! [ -f debian/tmp-$(curpass)/$$file ] || \ + ! cmp -s debian/tmp-$(curpass)/$$file debian/tmp-libc/$$file; then \ + target=`echo $$file | sed 's/^usr\/include\///'`; \ + install -d `dirname debian/tmp-libc/usr/include/nptl/$$target`; \ + install -m 644 debian/tmp-$(curpass)/usr/include/$$target \ + debian/tmp-libc/usr/include/nptl/$$target; \ + fi; \ + done; \ + install -d debian/tmp-libc/usr/lib/nptl; \ + for file in libc.a libc_nonshared.a libpthread.a libpthread_nonshared.a librt.a ; do \ + install -m 644 debian/tmp-$(curpass)/usr/lib/$$file \ + debian/tmp-libc/usr/lib/nptl/$$file; \ + done; \ + for file in libc.so libpthread.so; do \ + sed 's/\/usr\/lib\//\/usr\/lib\/nptl\//g' < debian/tmp-$(curpass)/usr/lib/$$file \ + > debian/tmp-libc/usr/lib/nptl/$$file; \ + done; \ + ln -sf /lib/tls/librt.so.1 debian/tmp-libc/usr/lib/nptl/; \ + fi + + # Create the multidir directories, and the configuration file in /etc/ld.so.conf.d + if [ $(curpass) = libc ]; then \ + mkdir -p debian/tmp-$(curpass)/etc/ld.so.conf.d; \ + machine=`sed '/^ *config-machine *=/!d;s/.*= *//g' $(DEB_BUILDDIR)/config.make`; \ + os=`sed '/^ *config-os *=/!d;s/.*= *//g' $(DEB_BUILDDIR)/config.make`; \ + triplet='$$machine-$$os'; \ + mkdir -p debian/tmp-$(curpass)/lib/$$triplet debian/tmp-$(curpass)/usr/lib/$$triplet; \ + conffile="debian/tmp-$(curpass)/etc/ld.so.conf.d/$$triplet"; \ + echo "# Multiarch support" > $$conffile; \ + echo /lib/$$machine-$$os >> $$conffile; \ + echo /usr/lib/$$machine-$$os >> $$conffile; \ + fi + + $(call xx,extra_install) + touch $@ --- glibc-2.4.orig/debian/rules.d/control.mk +++ glibc-2.4/debian/rules.d/control.mk @@ -0,0 +1,40 @@ +control_deps := $(addprefix debian/control.in/, libc6 libc6.1 libc0.1 libc0.3 sparc64 s390x powerpc ppc64 opt amd64) + +threads_archs := alpha amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc ia64 hppa s390 sh3 sh4 sh3eb sh4eb kfreebsd-i386 kfreebsd-amd64 + +debian/control.in/libc6: debian/control.in/libc debian/rules.d/control.mk + sed -e 's%@libc@%libc6%g' \ + -e 's%@archs@%amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb%g' < $< > $@ + +debian/control.in/libc6.1: debian/control.in/libc debian/rules.d/control.mk + sed -e 's%@libc@%libc6.1%g;s%@archs@%alpha ia64%g' < $< > $@ + +debian/control.in/libc0.3: debian/control.in/libc debian/rules.d/control.mk + sed -e 's%@libc@%libc0.3%g;s%@archs@%hurd-i386%g;s/nscd, //' < $< > $@ + +debian/control.in/libc0.1: debian/control.in/libc debian/rules.d/control.mk + sed -e 's%@libc@%libc0.1%g;s%@archs@%kfreebsd-i386 kfreebsd-amd64%g' < $< > $@ + +debian/control: $(stamp)control +$(stamp)control: debian/control.in/main $(control_deps) \ + debian/rules.d/control.mk # debian/sysdeps/depflags.pl + cat debian/control.in/main > $@T + cat debian/control.in/libc6 >> $@T + cat debian/control.in/libc6.1 >> $@T + cat debian/control.in/libc0.3 >> $@T + cat debian/control.in/libc0.1 >> $@T + cat debian/control.in/i386 >> $@T + cat debian/control.in/sparc64 >> $@T + cat debian/control.in/s390x >> $@T + cat debian/control.in/amd64 >> $@T + cat debian/control.in/powerpc >> $@T + cat debian/control.in/ppc64 >> $@T + cat debian/control.in/opt >> $@T + cat debian/control.in/libnss-dns-udeb >> $@T + cat debian/control.in/libnss-files-udeb >> $@T + sed -e 's%@libc@%$(libc)%g;s%@glibc@%glibc%g' \ + -e 's%@threads_archs@%$(threads_archs)%g' < $@T > debian/control + rm $@T + touch $@ + +.PHONY: debian/control --- glibc-2.4.orig/debian/rules.d/tarball.mk +++ glibc-2.4/debian/rules.d/tarball.mk @@ -0,0 +1,21 @@ +unpack: $(stamp)unpack +$(stamp)unpack: $(DEB_TARBALL) $(patsubst %,$(stamp)%,$(GLIBC_OVERLAYS)) + touch $(stamp)unpack + +# FIXME: Support gzip as well! +$(DEB_TARBALL): $(stamp)$(DEB_TARBALL) +$(stamp)$(DEB_TARBALL): + mkdir -p $(build-tree) + cd $(build-tree) && tar -xjvf $(CURDIR)/$(DEB_TARBALL) + touch $@ + +$(patsubst %,$(stamp)%,$(GLIBC_OVERLAYS)): + cd $(DEB_SRCDIR) && tar -xjvf $(CURDIR)/$(notdir $@) + a=`echo $(notdir $@) | sed -e 's/^glibc-//' -e 's/-[^-]*$$//'`; \ + d=`echo $(notdir $@) | sed -e 's/\.tar\.bz2$$//'`; \ + if test -d $(DEB_SRCDIR)/$$d; then \ + cd $(DEB_SRCDIR) && mv $$d $$a; \ + fi + touch $@ + + --- glibc-2.4.orig/debian/po/POTFILES.in +++ glibc-2.4/debian/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] debhelper.in/locales.templates --- glibc-2.4.orig/debian/po/gl.po +++ glibc-2.4/debian/po/gl.po @@ -0,0 +1,100 @@ +# Galician translation of glibc's templates +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the glibc package. +# Jacobo Tarrio , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-04-06 17:59+0200\n" +"Last-Translator: Jacobo Tarrio \n" +"Language-Team: Galician \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Todas as configuracións locais" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Configuracións locais a xerar:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"O sistema de configuracións locais permite que os usuarios poidan empregar o " +"seu idioma, país, xogo de caracteres, sistema de ordeamento, etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Escolla as configuracións locais que quere xerar. As súas eleccións hanse " +"gravar no ficheiro \"/etc/locale.gen\", que tamén pode editar a man (ha ter " +"que executar \"locale-gen\" despois)." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"Ao escoller \"Todas as configuracións locais\" hase estabrecer /etc/locale." +"gen coma unha ligazón simbólica a /usr/share/i18n/SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Ningunha" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Configuración local por defecto para o ambiente:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Moitos paquetes de Debian empregan configuracións locais para amosar texto " +"no idioma correcto aos usuarios. Pode cambiar a configuración local por " +"defecto se non é un falante nativo de inglés. Estas opcións baséanse nas " +"configuracións locais que decidiu xerar." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Nota: Isto ha escoller o idioma de todo o sistema. Se emprega un sistema " +"multiusuario no que non todos os usuarios falan o idioma que escolla, han " +"ter dificultades. Se cadra sexa mellor non poñer unha configuración local " +"por defecto." --- glibc-2.4.orig/debian/po/cs.po +++ glibc-2.4/debian/po/cs.po @@ -0,0 +1,107 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-21 09:27+0100\n" +"Last-Translator: Miroslav Kure \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "VÅ¡echny locales" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Locales, které se mají vygenerovat:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Locale je systém pro pÅ™epínání mezi různými jazyky. Uživatelé si pak mohou " +"zvolit svůj jazyk, zemi, znaky, způsob porovnávání, atd." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Vyberte, které locales se mají vygenerovat. VaÅ¡e volba se zaznamená do " +"souboru '/etc/locale.gen', který můžete upravovat i ruÄnÄ› (pak ale musíte " +"spustit 'locale-gen')." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"Vyberete-li 'VÅ¡echny locales', ze souboru /etc/locale.gen se stane " +"symbolický odkaz na /usr/share/i18n/SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Žádné" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Výchozí locale pro tento systém:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Mnoho balíků v Debianu používá locales k zobrazení textu v národním jazyce. " +"Pokud zrovna nejste anglicky mluvící uživatel, můžete si zmÄ›nit výchozí " +"locale na nÄ›co rozumnÄ›jšího. Nabízené volby závisí na tom, jaké locales máte " +"vygenerované." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Poznámka: Tímto vyberete jazyk pro celý systém. Pokud se na poÄítaÄ " +"pÅ™ihlaÅ¡ují i uživatelé nemluvící vybraným jazykem, je lepší výchozí locale " +"nenastavovat." --- glibc-2.4.orig/debian/po/pt_BR.po +++ glibc-2.4/debian/po/pt_BR.po @@ -0,0 +1,107 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: libc6\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-11 17:30-0200\n" +"Last-Translator: André Luís Lopes \n" +"Language-Team: Debian-BR Project \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Locales a serem gerados :" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Locale é um framework para alternar entre múltiplos idiomas para usuários, " +"os quais podem selecionar seu idioma, país, caracteres, ordem de colação, " +"etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Escolha quais locales gerar. Sua escolha será gravada no arquivo `/etc/" +"locale.gen', o qual você também pode editar manualmente (nesse caso, você " +"precisará excutar `locale-gen' após a edição manual)." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Nenhum" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Locale padrão para o ambiente do sistema :" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Muitos pacotes Debian usam os locales para exibir texto aos usuários no " +"idioma correto. Você pode mudar o locale padrão caso Inglês não seja seu " +"idioma nativo. Essas escolhas são baseadas em quais locales você escolheu " +"gerar." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Nota: Sua escolha irá definir o idioma para seu sistema inteiro. Caso você " +"esteja executando um sistema multiusuário onde nem todos os usuários falem o " +"idioma de sua escolha, alguns usuários poderão ter dificuldades e, nesse " +"caso, você talvez prefira não definir um locale padrão" --- glibc-2.4.orig/debian/po/fr.po +++ glibc-2.4/debian/po/fr.po @@ -0,0 +1,111 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc VERSION\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2003-10-27 20:40+0100\n" +"Last-Translator: Denis Barbier \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Tous les choix possibles" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Paramètres régionaux à générer :" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"La localisation est un mécanisme qui permet aux utilisateurs de choisir la " +"langue, le pays, le jeu de caractères, etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Veuillez choisir les jeux de paramètres régionaux (« locales », en anglais) " +"qui seront disponibles sur votre système ; cette liste est sauvée dans le " +"fichier « /etc/locale.gen », que vous pouvez aussi modifier vous-même (vous " +"devez alors lancer la commande « locale-gen » après tout changement)." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"Quand l'option « Tous les choix possibles » est choisie, le fichier /etc/" +"locale.gen est remplacé par un lien symbolique vers /usr/share/i18n/" +"SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Aucun" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Jeu de paramètres régionaux actif par défaut :" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"De nombreux paquets utilisent le mécanisme de localisation pour afficher les " +"messages destinés aux utilisateurs dans la langue adéquate. Vous pouvez " +"changer la valeur par défaut si votre langue maternelle n'est pas l'anglais. " +"Les choix disponibles dépendent des jeux de paramètres régionaux que vous " +"avez préalablement sélectionnés." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Veuillez noter que cette valeur fixera la langue utilisée par le système. Si " +"l'environnement est multiutilisateurs et que certains utilisateurs ne " +"parlent pas votre langue, ils risquent d'avoir quelques difficultés et il " +"serait peut-être préférable de ne pas utiliser de valeur par défaut." --- glibc-2.4.orig/debian/po/es.po +++ glibc-2.4/debian/po/es.po @@ -0,0 +1,111 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Carlos Valdivia Yagüe , 2003,2006 +# +msgid "" +msgstr "" +"Project-Id-Version: locales 2.3.6-2\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-20 23:00+0100\n" +"Last-Translator: Carlos Valdivia Yagüe \n" +"Language-Team: Debian L10n Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Todos los locales" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Seleccione los locales que desea generar:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Locale es un sistema que permite a los usuarios elegir entre varios idiomas " +"y que afecta al juego de caracteres utilizado, la ordenación alfanumérica, " +"etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Elija qué locales desea generar. La elección se guardará en el fichero /etc/" +"locale.gen, que también puede editar manualmente (tendrá que ejecutar " +"«locale-gen» posteriormente)." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"Si selecciona «Todos los locales», /etc/locale.gen será un enlace simbólico " +"a /usr/share/i18n/SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Ninguno" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "¿Cuál quiere que sea el locale predeterminado del sistema?" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Muchos paquetes en Debian utilizan locales para mostrar el texto en el " +"idioma de los usuarios. Puede cambiar la opción predeterminada si el inglés " +"no es su idioma natal. Estas opciones están basadas en los locales que ha " +"generado." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Nota: esta elección se reflejará en el idioma de todo el sistema. Si se " +"encuentra en un sistema con varios usuarios en el que no todos hablan el " +"idioma elegido, puede resultar bastante incómodo, por lo que es posible que " +"quiera no configurar ningún locale como opción predeterminada." --- glibc-2.4.orig/debian/po/nl.po +++ glibc-2.4/debian/po/nl.po @@ -0,0 +1,109 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-21 09:16+0100\n" +"Last-Translator: Bart Cornelis \n" +"Language-Team: debian-l10n-dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Alle localisaties" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Te genereren localisaties:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Localisatie is het raamwerk dat gebruikers toelaat om hun eigen taal, land, " +"karakterset, enz. te gebruiken." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Kies de te genereren localisaties. Uw keuze wordt opgeslagen in `/etc/locale." +"gen', dit bestand kunt u handmatig aanpassen (vergeet niet dat u na elke " +"aanpassing `locale-gen' dient uit te voeren)." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"Wanneer 'Alle Localisaties' geselecteerd is, dan wordt /etc/locale.gen een " +"symbolische link naar /usr/share/i18n/SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Geen" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Standaardlocalisatie voor dit systeem:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Er zijn vele debianpakketten die gebruik maken van localisaties om de tekst " +"in de voor de gebruiker juiste taal weer te geven. U kunt u de " +"standaardlocalisatie desgewenst veranderen. De beschikbare " +"keuzemogelijkheden zijn hierbij afhankelijk van de gegenereerde " +"localisaties. " + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Opmerking: De hier gemaakte keuze bepaald de taal voor het volledige " +"systeem. Op systemen met meerdere gebruikers kunt u problemen krijgen als " +"niet alle gebruikers de gekozen taal spreken; in dat geval kunt u mischien " +"beter de standaard localisatie niet veranderen." --- glibc-2.4.orig/debian/po/ko.po +++ glibc-2.4/debian/po/ko.po @@ -0,0 +1,99 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-KR\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +#, fuzzy +msgid "Locales to be generated:" +msgstr "»ý¼ºÇÒ ·ÎÄÉÀÏÀ» ¼±ÅÃÇϽʽÿÀ." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +#, fuzzy +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"»ý¼ºÇÏ°í ½ÍÀº ·ÎÄÉÀÏÀ» ¼±ÅÃÇϽʽÿÀ. ¼±ÅÃµÈ ·ÎÄÉÀÏÀº `/etc/locale.gen' ÆÄÀÏ" +"¿¡ ÀúÀåµË´Ï´Ù. ÀÌ ÆÄÀÏÀ» Á÷Á¢ ÆíÁýÇÒ¼öµµ ÀÖ½À´Ï´Ù. ÆÄÀÏÀ» Á÷Á¢ ÆíÁýÇÑ ÈÄ¿¡´Â " +"¹Ýµå½Ã `locale-gen'¸í·ÉÀ» ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" --- glibc-2.4.orig/debian/po/pl.po +++ glibc-2.4/debian/po/pl.po @@ -0,0 +1,99 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: debconf-glibc-locales-pl\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-21 00:39+0100\n" +"Last-Translator: Emilian Nowak \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Wszystkie dostÄ™pne" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Wybierz ustawienia lokalne, które chcesz wygenerować:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Wybierane tutaj ustawienia lokalne stanowiÄ… podstawowÄ… strukturÄ™ dajÄ…cÄ… " +"możliwość pracy systemu w specyficznym dla danego kraju Å›rodowisku (jÄ™zyk, " +"zestaw znaków, kolejność sortowania itp.)" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Wybierz, który zestaw ustawieÅ„ lokalnych chcesz wygenerować. Twój wybór " +"zostanie zapisany do pliku `/etc/locale.gen', który można później edytować " +"dowolnym edytorem tekstu (w tym przypadku konieczne bÄ™dzie późniejsze " +"uruchomienie 'locale-gen')." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"Po wybraniu `Wszystkie dostÄ™pne', plik /etc/locale.gen bÄ™dzie dowiÄ…zaniem " +"symbolicznym do/usr/share/i18n/SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Brak" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Wybierz domyÅ›lne ustawienia lokalne, dla swojego systemu:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Wiele programów dostarczanych w pakietach Debiana wykorzystuje ustawienia " +"lokalne, aby wyÅ›wietlać tekst we wÅ‚aÅ›ciwym dla użytkownika jÄ™zyku. Możesz " +"zmienić domyÅ›lne ustawienia lokalne jeżeli nie chcesz posÅ‚ugiwać siÄ™ " +"jÄ™zykiem angielskim. Można wybrać tylko te ustawienia lokalne, które " +"wczeÅ›niej zostaÅ‚y wygenerowane." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Zwróć uwagÄ™ na to, że wybrany tutaj jÄ™zyk ma wpÅ‚yw na na caÅ‚y system i " +"wiÄ™kszość dziaÅ‚ajÄ…cych w nim programów. Jeżeli z tego systemu korzysta " +"wiÄ™cej użytkowników posÅ‚ujÄ…cych siÄ™ różnymi jÄ™zykami najlepiej bÄ™dzie " +"pozostawić domyÅ›lne (angielskie) ustawiania lokalne." --- glibc-2.4.orig/debian/po/it.po +++ glibc-2.4/debian/po/it.po @@ -0,0 +1,101 @@ +# Italian (it) translation of debconf templates for glibc +# Copyright (C) 2006 Free Software Foundation, Inc. +# This file is distributed under the same license as the glibc package. +# Luca Monducci , 2005, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc 2.3.5-6 debconf templates\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-24 20:41+0100\n" +"Last-Translator: Luca Monducci \n" +"Language-Team: Italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Tutti i locale" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "«Locale» da generare:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"«Locale» è l'infrastruttura che permette agli utenti di scegliere fra più " +"lingue, permettendo di stabilire quale lingua, paese, caratteri, criteri di " +"ordinamento, ecc. preferiscono." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Scegliere i «locale» da generare. La scelta viene salvata nel file \"/etc/" +"locale.gen\", che è possibile modificare anche manualmente (dopo la modifica " +"è necessario eseguire \"locale-gen\")." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"Scegliendo «Tutti i locale», /etc/locale.gen viene impostato come un link " +"simbolico a /usr/share/i18n/SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Nessuno" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "«Locale» predefinito sul sistema:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Molti pacchetti Debian usano i «locale» per mostrare i messaggi nella lingua " +"degli utenti. Si può cambiare il «locale» predefinito se la propria lingua " +"madre non è l'inglese. Le scelte disponibili dipendono da quali «locale» " +"sono stati generati." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Nota: questo imposta la lingua per l'intero sistema. Se al proprio sistema " +"hanno accesso più utenti e non tutti parlano la lingua scelta, questi utenti " +"potrebbero avere delle difficoltà e per questo è possibile non impostare un " +"«locale» come predefinito." --- glibc-2.4.orig/debian/po/vi.po +++ glibc-2.4/debian/po/vi.po @@ -0,0 +1,100 @@ +# Vietnamese Translation for glibc. +# Copyright © 2005-2006 Free Software Foundation, Inc. +# Clytie Siddall , 2005-2006. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc 2.3.2.ds1-22\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-01-27 21:41+1030\n" +"Last-Translator: Clytie Siddall \n" +"Language-Team: Vietnamese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Generator: LocFactoryEditor 1.6b34\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Những miá»n địa phÆ°Æ¡ng cần tạo ra." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Miá»n địa phÆ°Æ¡ng (locale) là má»™t khuôn khổ để chuyển đổi giữa nhiá»u ngôn ngữ " +"khác nhau, để cho phép ngÆ°á»i dùng chá»n dùng ngôn ngữ, quốc gia, ký tá»±, thứ " +"tá»± sắp xếp v.v. của mình." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Hãy chá»n những miá»n địa phÆ°Æ¡ng nào cần tạo ra. Lá»±a chá»n này sẽ được lÆ°u vào " +"tập tin , mà bạn cÅ©ng có thể tá»± sá»­a đổi (miá»…n là bạn chạy " +"lệnh « locale-gen » sau đó)." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Không có" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Miá»n địa phÆ°Æ¡ng mặc định cho môi trÆ°á»ng hệ thống:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Nhiá»u gói tin trong Debian dùng miá»n địa phÆ°Æ¡ng để hiển thị chữ bằng ngôn " +"ngữ đúng cho ngÆ°á»i dùng. Bạn có thể thay đổi miá»n địa phÆ°Æ¡ng mặc định, nếu " +"bạn không phải muốn dùng tiếng Anh. Những tùy chá»n này Ä‘á»±a vào những miá»n " +"địa phÆ°Æ¡ng do bạn chá»n." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Ghi chú : hành Ä‘á»™ng này sẽ chá»n ngôn ngữ cho toàn hệ thống. Nếu bạn Ä‘ang " +"chạy má»™t hệ thông Ä‘a ngÆ°á»i dùng mà không phải má»i ngÆ°á»i dùng nói cùng ngôn " +"ngữ bạn muốn chá»n ở đây, há» sẽ gặp khó khăn, vậy có lẽ bạn không muốn đặt " +"má»™t miá»n địa phÆ°Æ¡ng mặc định." --- glibc-2.4.orig/debian/po/uk.po +++ glibc-2.4/debian/po/uk.po @@ -0,0 +1,112 @@ +# translation of uk.po to Ukrainian +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +# Eugeniy Meshcheryakov , 2004, 2006. +msgid "" +msgstr "" +"Project-Id-Version: uk\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-21 10:12+0200\n" +"Last-Translator: Eugeniy Meshcheryakov \n" +"Language-Team: Ukrainian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Ð’ÑÑ– локалі" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Локалі Ñкі потрібно згенерувати:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Локаль -- це механізм, що дозволÑÑ” перемикатиÑÑ Ð¼Ñ–Ð¶ кількома мовами Ð´Ð»Ñ " +"кориÑтувачів, Ñкі можуть викориÑтовувати Ñвою мову, країну, Ñимволи порÑдок " +"ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– Ñ‚.п." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Вкажіть, Ñкі локалі потрібно Ñтворити. Ваш вибір буде збережений у файлі \"/" +"etc/locale.gen\", Ñкий ви також можете редагувати вручну (піÑÐ»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ " +"потрібно запуÑкати \"locale-gen\")." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"Коли обрано „ВÑÑ– локалі“, /etc/locale.gen буде Ñимвольним поÑиланнÑм на /usr/" +"share/i18n/SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Ðе вÑтановлювати" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Локаль за замовчаннÑм в ÑиÑтемному оточенні:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Ð’ Debian багато пакунків викориÑтовують локалі Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑту на " +"вибраній кориÑтувачем мові. Якщо ваша рідна мова не англійÑька, то ви можете " +"змінити локаль за замовчаннÑм. СпиÑок Ñкладений із локалей Ñкі ви вирішили " +"згенерувати." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Примітка: цей пункт вибирає мову Ð´Ð»Ñ Ð²Ñієї ÑиÑтеми. Якщо в вашій ÑиÑтемі " +"працюють декілька кориÑтувачів, Ñкі не розмовлÑÑŽÑ‚ÑŒ мовою, Ñку ви вибрали, то " +"вони можуть зіткнутиÑÑ Ñ–Ð· труднощами, Ñ– тому, можливо, вам краще не " +"вÑтановлювати локаль за замовчаннÑм." --- glibc-2.4.orig/debian/po/pt.po +++ glibc-2.4/debian/po/pt.po @@ -0,0 +1,101 @@ +# Portuguese translation for glibc's debconf messages +# Simão Pedro Cardoso , 2005 +# +# 2005-11-12 - Simão Pedro Cardoso - initial translation# +# +msgid "" +msgstr "" +"Project-Id-Version: glibc 2.3.5-7\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2005-11-12 23:24+0000\n" +"Last-Translator: Simão Pedro Cardoso \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Todos os locales" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Locales para serem gerados:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"O locale é uma estrutura para alternar entre múltiplos idiomas para os " +"utilizadores que podem escolher usar o seu idioma, país, caracteres, ordem " +"de intercalação, etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Escolha quais os locales a serem gerados. A escolha será guardada em `/etc/" +"locale.gen', que também poderá editar manualmente (necessitará de executar " +"`locale-gen' de seguida)." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"Quando 'Todos os locales' estiver selecionada, /etc/locale.gen será umlink " +"simbolico para /usr/share/i18n/SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Nenhum" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Locale padrão para o ambiente do sistema:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Muitos pacotes em Debian utilizam os locales para mostrar texto aos " +"utilizadores no idioma correcto. Poderá alterar o locale padrão se você não " +"for um utilizador nativo de Inglês. Estas escolhas são baseadas nos locales " +"que escolheu gerar." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Nota: Isto irá selecionar o idioma para todo o seu sistema. Se está a a " +"executar um sistema multi-utilizador onde nem todos os utilizadores falam o " +"idioma que escolhe, então eles irão ter dificuldades e você poderá não " +"querer definir um locale padrão." --- glibc-2.4.orig/debian/po/templates.pot +++ glibc-2.4/debian/po/templates.pot @@ -0,0 +1,86 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" --- glibc-2.4.orig/debian/po/ca.po +++ glibc-2.4/debian/po/ca.po @@ -0,0 +1,110 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +#, fuzzy +msgid "Locales to be generated:" +msgstr "Seleccioneu els locales que voleu generar." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +#, fuzzy +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Podeu elegir els locales que voleu generar seleccionant-los a continuació. " +"Els locales seleccionats es desaràn en el fitxer \"/etc/locale.gen\". També " +"podeu editar manualment aquest fitxer, i generar els locales executant " +"\"locale-gen\"." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +#, fuzzy +msgid "Default locale for the system environment:" +msgstr "Quin locale voleu que siga el predeterminat en el sistema?" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +#, fuzzy +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Molts paquets en Debian fan servir locales per a mostrar text en la llengua " +"correcta dels usuaris. El locale per defecte és C, però podeu canviar-ho si " +"la vostra llengua materna no és l'anglès." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +#, fuzzy +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Nota: Aquesta elecció es reflexarà en la llengua per a tot el sistema. Si " +"açò és un sistema multiusuari on tots els usuaris no parlen la llengua " +"seleccionada, podrien tindre dificultats, així que potser voleu deixar \"C\" " +"com el locale per defecte." --- glibc-2.4.orig/debian/po/da.po +++ glibc-2.4/debian/po/da.po @@ -0,0 +1,107 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc-2.3.2.ds1\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-20 21:33+0200\n" +"Last-Translator: Morten Brix Pedersen \n" +"Language-Team: Danish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Alle lokalitetsfiler" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Lokalitetsfiler der skal genereres:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Lokalitetsfilerne er lavet sÃ¥ du kan skifte imellem forskellige sprog til " +"til dit Debian system." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Vælg hvilke lokaliteter der skal genereres. Dine valg vil blive gemt til '/" +"etc/locale.gen', som du ogsÃ¥ kan redigere manuelt (du skal køre 'locale-gen' " +"bagefter." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"NÃ¥r 'Alle lokalitetsfiler' er valgt, vil /etc/locale.gen blive oprettet som " +"en symbolsk henvisning til /usr/share/i18n/SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Ingen" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Standard lokalitet til systemmiljøet:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Mange pakker i Debian bruger lokaliteter til at vise tekst i det korrekt " +"sprog til brugerne. Du kan ændre standard-lokaliteten hvis engelsk ikke er " +"dit modersmÃ¥ls sprog. Dine valg er baseret pÃ¥ hvilke lokalitetsfiler du " +"valgte at generere." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Bemærk: Dette vil sætte sproget for hele systemet. Hvis ikke alle brugerne " +"pÃ¥ dit system kan forstÃ¥ det sprog som du vælger, kan de løbe ind i " +"problemer." --- glibc-2.4.orig/debian/po/tr.po +++ glibc-2.4/debian/po/tr.po @@ -0,0 +1,99 @@ +# Turkish translation of locales. +# This file is distributed under the same license as the locales package. +# Erçin EKER , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: locales\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-01-27 13:12+0200\n" +"Last-Translator: Erçin EKER \n" +"Language-Team: Türkçe \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "OluÅŸturulacak yereller: " + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Yerel (locale), kullanıcıların kullanmak istediÄŸi dil, ülke, karakter, " +"sıralama ÅŸekli gibi dile özgü ayarlar arasında kolayca geçiÅŸ yapmasını " +"saÄŸlayan bir yapıdır." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"OluÅŸturulacak yerelleri seçiniz. Yapılan seçim '/etc/locale.gen' dosyası " +"içinde saklanacaktır. Daha sonra bu dosyayı elle deÄŸiÅŸtirebilirsiniz (bunu " +"yaptıktan sonra `locale-gen' komutunu çalıştırmanız gerekecektir)." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Hiçbiri" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Sistem için öntanımlı yerel:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"ÇoÄŸu Debian paketi mesajları göstermekte kullanacağı dili belirlemek için " +"yerelleri kullanır. Ana diliniz Ä°ngilizce deÄŸil ise öntanımlı yereli " +"deÄŸiÅŸtirebilirsiniz. Bütün bu seçimler, oluÅŸturulmak üzere seçtiÄŸiniz " +"yerellere göre belirlenir." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Not: Bu ayar, sisteminizin bütününde kullanılacak dili seçecektir. EÄŸer " +"farklı dilleri konuÅŸan kullanıcıların da bulunduÄŸu çok kullanıcılı bir " +"sistem çalıştırıyorsanız, bu kullanıcılar bazı zorluklarla karşılaÅŸabilir. " +"Bu nedenle öntanımlı bir yerel belirlememeyi isteyebilirsiniz." --- glibc-2.4.orig/debian/po/ru.po +++ glibc-2.4/debian/po/ru.po @@ -0,0 +1,110 @@ +# translation of glibc_2.3.2-8.po to russian +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc_2.3.2-8\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2003-11-18 17:41+0500\n" +"Last-Translator: Ilgiz Kalmetev \n" +"Language-Team: russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=KOI8-R\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0.1\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +#, fuzzy +msgid "Locales to be generated:" +msgstr "õËÁÖÉÔÅ ËÁËÉÅ ÌÏËÁÌÉ ÎÕÖÎÏ ÓÇÅÎÅÒÉÒÏ×ÁÔØ." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"ìÏËÁÌØ - ÜÔÏ ÍÅÈÁÎÉÚÍ ÄÌÑ ÐÅÒÅËÌÀÞÅÎÉÑ ÍÅÖÄÕ ÎÅÓËÏÌØËÉÍÉ ÑÚÙËÁÍÉ ÄÌÑ " +"ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ×ÙÂÉÒÁÔØ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÑÚÙË, ÓÔÒÁÎÕ, " +"ÓÉÍ×ÏÌÙ, ÐÏÒÑÄÏË ÓÏÒÔÉÒÏ×ËÉ É ÐÒ." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"÷Ù ÍÏÖÅÔÅ ÐÏ Ó×ÏÍÕ ÖÅÌÁÎÉÀ ×ÙÂÒÁÔØ, ËÁËÉÅ ÎÕÖÎÏ ÓÇÅÎÅÒÉÒÏ×ÁÔØ ÌÏËÁÌÉ. " +"÷ÙÂÒÁÎÎÙÅ ÌÏËÁÌÉ ÂÕÄÕÔ ÓÏÈÒÁÎÅÎÙ × ÆÁÊÌÅ `/etc/locale.gen'. ÷Ù ÔÁËÖÅ ÍÏÖÅÔÅ " +"ÏÔÒÅÄÁËÔÉÒÏ×ÁÔØ ÜÔÏÔ ÆÁÊÌ ×ÒÕÞÎÕÀ. ðÏÓÌÅ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÁ ×ÁÍ " +"ÐÏÔÒÅÂÕÅÔÓÑ ÚÁÐÕÓÔÉÔØ ËÏÍÁÎÄÕ `locale-gen'." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "îÅ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +#, fuzzy +msgid "Default locale for the system environment:" +msgstr "ëÁËÁÑ ÌÏËÁÌØ ÄÏÌÖÎÁ ÂÙÔØ ÐÏ ÕÍÏÌÞÁÎÉÀ × ÓÉÓÔÅÍÎÏÍ ÏËÒÕÖÅÎÉÉ?" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"÷ Debian ÍÎÏÇÉÅ ÐÁËÅÔÙ ÉÓÐÏÌØÚÕÀÔ ÌÏËÁÌØ ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ÔÅËÓÔÁ ÎÁ ×ÙÂÒÁÎÎÏÍ " +"ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÑÚÙËÅ. ÷Ù ÍÏÖÅÔÅ ÉÚÍÅÎÉÔØ ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÅÓÌÉ ÎÅ " +"×ÌÁÄÅÅÔÅ ÁÎÇÌÉÊÓËÉÍ ÑÚÙËÏÍ. óÐÉÓÏË ÓÏÓÔÁ×ÌÅÎ ÉÚ ÔÅÈ ÌÏËÁÌÅÊ, ËÏÔÏÒÙÅ ÷Ù " +"ÒÅÛÉÌÉ ÓÇÅÎÅÒÉÒÏ×ÁÔØ." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"ðÒÉÍÅÞÁÎÉÅ: üÔÏÔ ÐÕÎËÔ ×ÙÂÉÒÁÅÔ ÑÚÙË ÄÌÑ ×ÓÅÊ ÷ÁÛÅÊ ÓÉÓÔÅÍÙ. åÓÌÉ × ÷ÁÛÅÊ " +"ÓÉÓÔÅÍÅ ÒÁÂÏÔÁÅÔ ÎÅÓËÏÌØËÏ ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ËÏÔÏÒÙÅ ÒÁÚÇÏ×ÁÒÉ×ÁÀÔ ÎÅ ÎÁ ÔÏÍ " +"ÑÚÙËÅ, ËÏÔÏÒÙÊ ÷Ù ×ÙÂÒÁÌÉ, ÔÏ ÏÎÉ ÍÏÇÕÔ ÓÔÏÌËÎÕÔØÓÑ ÓÏ ÓÌÏÖÎÏÓÔÑÍÉ, É " +"ÐÏÜÔÏÍÕ, ×ÏÚÍÏÖÎÏ, ÷ÁÍ ÌÕÞÛÅ ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ." --- glibc-2.4.orig/debian/po/de.po +++ glibc-2.4/debian/po/de.po @@ -0,0 +1,109 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-22 18:52-0200\n" +"Last-Translator: Helge Kreutzmann \n" +"Language-Team: de \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Alle Standorteinstellungen" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Zu generierende Standorteinstellungen:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Standorteinstellungen ist ein Rahmen, um zwischen mehreren Sprachen zu " +"wechseln, für Benutzer, die Ihre Sprache, Ihr Land, Ihren Zeichensatz, Ihre " +"Sortierreihenfolge usw. auswählen können." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Sie können hier Standorteinstellungen auswählen, die jetzt generiert werden " +"sollen. Diese Einstellung wird in '/etc/locale-gen' gespeichert. Sie können " +"diese Datei auch manuell ändern. Starten Sie nach der Änderung 'locale-gen'." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"Falls `Alle Standorteinstellungen' gewählt ist, wird /etc/locale.gen als " +"Symlink auf /usr/share/i18n/SUPPORTED eingerichtet." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Keine" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Standard-Standorteinstellung für die System-Umgebung?" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Viele Debian-Pakete benutzen Standorteinstellungen, um Text in der für die " +"Benutzer korrekten Sprache anzuzeigen. Sie können die Standardeinstellunge " +"ändern, falls Sie kein English-Muttersprachler sind. Diese Auswahl basiert " +"auf den Standorteinstellungen, die Sie zur Erzeugung ausgewählt haben." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Bemerkung: Dies wählt die Sprache für das gesamte System. Wenn Sie ein " +"Mehrbenutzer-System betreiben und nicht alle Benutzer die Sprache Ihrer Wahl " +"sprechen, dann werden sie in Schwierigkeiten geraten und Sie sollten keine " +"Standard-Standorteinstellung setzen." --- glibc-2.4.orig/debian/po/sv.po +++ glibc-2.4/debian/po/sv.po @@ -0,0 +1,108 @@ +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# Developers do not need to manually edit POT or PO files. +# , fuzzy +# +# +msgid "" +msgstr "" +"Project-Id-Version: glibc 2.3.6-1\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-17 23:58+0100\n" +"Last-Translator: Daniel Nylander \n" +"Language-Team: Swedish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "Alla lokaler" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "Välj lokalanpassningar att generera:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Lokalanpassning (locale) är ett ramverk för att växla mellan flera språk för " +"användare som kan välja att använda sitt språk, land, tecken och " +"kollationeringsordning etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Välj vilka lokalanpassningar som ska genereras. Valet kommer att sparas i " +"\"/etc/locale.gen\" som du också kan redigera manuellt (du behöver köra " +"\"locale-gen\" efteråt)." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" +"När \"Alla lokaler\" väljs, kommer /etc/locale.gen att ställa in som en " +"symbolisk länk till /usr/share/i18n/SUPPORTED." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Ingen" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "Välj lokalanpassning som ska vara standard i systemet:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Många paket i Debian använder lokalanpassningar för att visa text i det " +"korrekta språket för användarna. Du kan ändra standardlokalen om du inte är " +"engelsktalande. Dessa val är baserade på vilka lokalanpassningar du har valt " +"att generera." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Notera: Detta kommer att välja ett språk för hela ditt system. Om du kör ett " +"system med flera användare där inte alla talar det valda språket, kan de få " +"problem och du bör kanske inte ställa in det som standardval för " +"lokalanpassningen." --- glibc-2.4.orig/debian/po/ja.po +++ glibc-2.4/debian/po/ja.po @@ -0,0 +1,106 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: locales 2.3.6-1\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2006-02-11 02:00+0900\n" +"Last-Translator: GOTO Masanori \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "Locales to be generated:" +msgstr "À¸À®¤¹¤ë¥í¥±¡¼¥ë¤ÎÁªÂò:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"¥í¥±¡¼¥ë¤È¤Ï¡¢Ê£¿ô¤Î¸À¸ì´Ä¶­¤ÎÃ椫¤é¥æ¡¼¥¶¤¬»È¤¤¤¿¤¤¸À¸ì¡¦¹ñ¡¦Ä̲ߵ­¹æ¡¦Ê¸»ú" +"Îó¤ÎʤÙÂؤ¨½ç½ø¤Ê¤É¤òÀÚÂؤ뤿¤á¤Î»ÅÁȤߤǤ¹¡£" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"¹¥¤­¤Ê¥í¥±¡¼¥ë¤òÁªÂò¤·¤ÆÀ¸À®¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ÁªÂò¤µ¤ì¤¿¥í¥±¡¼¥ë¤Î¾ðÊó¤Ï" +"¥Õ¥¡¥¤¥ë `/etc/locale.gen' ¤ËÊݸ¤µ¤ì¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤ò¼ê¤ÇÊÔ½¸¤·¤ÆÊѹ¹¤¹¤ë" +"¤³¤È¤â¤Ç¤­¤Þ¤¹¡£Êѹ¹¤·¤¿¸å¤Ï¡¢`locale-gen'¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "¤Ê¤·" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "Default locale for the system environment:" +msgstr "¥·¥¹¥Æ¥àɸ½à¤Î´Ä¶­ÊÑ¿ô¤È¤·¤ÆÀßÄꤹ¤ë¥Ç¥Õ¥©¥ë¥È¥í¥±¡¼¥ë:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"ÍÍ¡¹¤Ê¸À¸ì¤Îʸ¾Ï¤òÀµ¤·¤¯É½¼¨¤¹¤ë¤¿¤á¡¢Debian ¤Ç¤Ï¿¤¯¤Î¥Ñ¥Ã¥±¡¼¥¸¤¬¥í¥±¡¼¥ë¤ò" +"»ÈÍѤ·¤Þ¤¹¡£±Ñ¸ì°Ê³°¤Î¸À¸ì¤òɸ½à¤Ç»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¤³¤Î¥í¥±¡¼¥ëÀßÄê¤Ç¤¢¤Ê¤¿¤Î" +"»ÈÍѸÀ¸ì¤ËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Ãí: ¤³¤ÎÀßÄê¤Ï¥·¥¹¥Æ¥àÁ´ÂΤˤĤ¤¤Æ¡¢É¸½à¤Î¸À¸ì¤òÊѹ¹¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤â¤·¤¢¤Ê" +"¤¿¤Î¥·¥¹¥Æ¥à¤ËÊ£¿ô¤ÎÍøÍѼԤ¬¤¤¤ë¤Î¤Ê¤é¡¢¤½¤ÎÃæ¤Ë¤Ï¤¢¤Ê¤¿¤ÎÁª¤ó¤À¸À¸ì¤òÆɤá¤Ê" +"¤¤¿Í¤¬¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤½¤Î¾ì¹ç¤Ë¤Ï¥·¥¹¥Æ¥àÍøÍѤ¬º¤Æñ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¤«" +"¤é¡¢¤ª¤½¤é¤¯¥Ç¥Õ¥©¥ë¥È¤Î¥í¥±¡¼¥ë¤òÀßÄꤷ¤Ê¤¤¤Þ¤Þ¤Ë¤·¤Æ¤ª¤¤¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç" +"¤¦¡£" --- glibc-2.4.orig/debian/po/fi.po +++ glibc-2.4/debian/po/fi.po @@ -0,0 +1,108 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2005-04-09 01:47+0300\n" +"Last-Translator: Matti Pöllä \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +#, fuzzy +msgid "Locales to be generated:" +msgstr "Valitse muodostettavat lokaalit." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Lokaalien avulla on mahdollista käyttää useita kieliä siten, että\n" +"käyttäjät voivat itse valita käyttämänsä kielen, maan, merkistön\n" +"jne. " + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Valitse lokaalit, jotka haluat muodostaa. Valinta talletetaan tiedostoon\n" +"\"/etc/locale.gen\", jota voit myös itse muokata. (Muokkaamisen jälkeen\n" +"tulee ajaa komento \"locale-gen\".)" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Ei mitään" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +#, fuzzy +msgid "Default locale for the system environment:" +msgstr "Minkä lokaalin tulisi olla järjestelmän oletus?" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Monet Debianin paketit käyttävät lokaaleja näyttämään käyttäjälle\n" +"tekstit oikealla kielellä. Voit muuttaa oletusarvoisen lokaalin, jos\n" +"et puhu suomea äidinkielenäsi. Nämä valinnat perustuvat lokaaleihin,\n" +"jotka valitsit muodostaa." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Huomaa: Tämä valitsee koko järjestelmän kielen. Jos kyseessä on monen\n" +"käyttäjän ympäristö, jossa kaikki käyttäjät eivät puhu valitsemaasi\n" +"kieltä, oletuskielen valitseminen ei ehkä ole järkevää." --- glibc-2.4.orig/debian/po/el.po +++ glibc-2.4/debian/po/el.po @@ -0,0 +1,114 @@ +# translation of el.po to Greek +# translation of templates.po to Greek +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# Konstantinos Margaritis , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: el\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2004-01-21 22:44EEST\n" +"Last-Translator: Konstantinos Margaritis \n" +"Language-Team: Greek \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0.2\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +#, fuzzy +msgid "Locales to be generated:" +msgstr "Επιλέξτε τα γλωσσικά πεÏιβάλλοντα που θέλετε να δημιουÏγηθοÏν." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"Το γλωσσικό πεÏιβάλλον (locale) είναι ένα πλαίσιο υποστήÏιξης εναλλαγής " +"πολλαπλών γλωσσών, ώστε οι χÏήστες να μποÏοÏν να χÏησιμοποιοÏν τη γλώσσα " +"τους, με όλα τα συνεπακόλουθα, χαÏακτήÏες, νόμισμα, τοπικές Ïυθμίσεις, κλπ." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"Επιλέξτε ποια γλωσσικά πεÏιβάλλοντα θέλετε να δημιουÏγηθοÏν. Η επιλογή θα " +"αποθηκευτεί στο αÏχείο '/etc/locale.gen', το οποίο μποÏείτε να " +"επεξεÏγαστείτε και χειÏοκίνητα (έπειτα θα Ï€Ïέπει να εκτελέσετε την εντολή " +"'locale-gen')." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "Κανένα" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +#, fuzzy +msgid "Default locale for the system environment:" +msgstr "Ποιο γλωσσικό πεÏιβάλλον επιθυμείτε ως Ï€ÏοκαθοÏισμένο για το σÏστημα;" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Πολλά πακέτα στο Debiaν χÏησιμοποιοÏν τη δυνατότητα των γλωσσικών " +"πεÏιβάλλοντων για να εμφανίζουν κείμενο στην επιλεγμένη γλώσσα του κάθε " +"χÏήστη. ΜποÏείτε να αλλάξετε το Ï€ÏοκαθοÏισμένο γλωσσικό πεÏιβάλλον αν η " +"Αγγλική δεν είναι η μητÏική σας γλώσσα. Αυτές οι επιλογές βασίζονται στα " +"γλωσσικά πεÏιβάλλοντα που επιλέξατε να δημιουÏγηθοÏν." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"Σημείωση: Αυτή η επιλογή θα επιλέξει τη γλώσσα για ολόκληÏο το σÏστημά σας. " +"Αν έχετε ένα πολυχÏηστικό σÏστημα, στο οποίο οι χÏήστες δε μιλοÏν όλοι την " +"γλώσσα που εσείς επιλέξατε, τότε πιθανόν να συναντήσουν δυσκολίες και για το " +"λόγο αυτό ίσως να μη Ï€Ïέπει να οÏίσετε ένα Ï€ÏοκαθοÏισμένο γλωσσικό " +"πεÏιβάλλον." --- glibc-2.4.orig/debian/po/zh_CN.po +++ glibc-2.4/debian/po/zh_CN.po @@ -0,0 +1,108 @@ +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Hiei Xu , 2004. +# Carlos Z.F. Liu , 2004. +# +# +msgid "" +msgstr "" +"Project-Id-Version: glibc 2.3.2.ds1\n" +"Report-Msgid-Bugs-To: debian-glibc@lists.debian.org\n" +"POT-Creation-Date: 2006-04-06 21:47+0200\n" +"PO-Revision-Date: 2004-02-10 04:25+1300\n" +"Last-Translator: Hiei Xu \n" +"Language-Team: Chinese/Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:4 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +#, fuzzy +msgid "Locales to be generated:" +msgstr "请选择需è¦ç”Ÿæˆçš„区域设置(locale)。" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Locale is a framework to switch between multiple languages for users who can " +"select to use their language, country, characters, collation order, etc." +msgstr "" +"区域设置(locale)是一ç§åœ¨å¤šç§è¯­è¨€ä¹‹é—´åˆ‡æ¢çš„框架,用户å¯ä»¥é€šè¿‡å®ƒæ¥è®¾å®šè‡ªå·±çš„语" +"言ã€å›½å®¶ã€å­—符集ã€å­—符串排åºæ–¹å¼ç­‰ã€‚" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"Choose which locales to generate. The selection will be saved to `/etc/" +"locale.gen', which you can also edit manually (you need to run `locale-gen' " +"afterwards)." +msgstr "" +"请选择需è¦ç”Ÿæˆçš„区域设置(locale)。选择结果将被ä¿å­˜åœ¨â€œ/etc/locale.genâ€ï¼Œæ‚¨å¯ä»¥" +"对其进行手工编辑(您需è¦åœ¨ç¼–辑结æŸåŽè¿è¡Œâ€œlocale-genâ€)。" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:5 +msgid "" +"When `All locales' is selected, /etc/locale.gen will be set as a symlink to /" +"usr/share/i18n/SUPPORTED." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:19 +msgid "None" +msgstr "æ— " + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +#, fuzzy +msgid "Default locale for the system environment:" +msgstr "哪个将作为系统环境默认的区域设置(locale)?" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for users. You can change the default locale if you're not a native English " +"speaker. These choices are based on which locales you have chosen to " +"generate." +msgstr "" +"Debian 里的很多软件包都使用区域设置(locale)æ¥ä»¥æ­£ç¡®çš„语言å‘用户显示文本。如果" +"您ä¸æ˜¯ä»¥è‹±è¯­ä¸ºæ¯è¯­ï¼Œä¹Ÿå¯ä»¥æ”¹å˜é»˜è®¤çš„区域设置(locale)。但您åªèƒ½åœ¨è¦ç”Ÿæˆçš„区域" +"设置(locale)中选择其一。" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:21 +msgid "" +"Note: This will select the language for your whole system. If you're running " +"a multi-user system where not all of your users speak the language of your " +"choice, then they will run into difficulties and you might want not to set a " +"default locale." +msgstr "" +"注æ„:这将会把整个系统都设置为这ç§è¯­è¨€ã€‚如果您è¿è¡Œçš„是一个多用户系统,而且并" +"ä¸æ˜¯ç³»ç»Ÿå†…的所有用户都使用您选择的语言,那么他们将会é‡åˆ°ä¸€äº›éº»çƒ¦ã€‚或许您ä¸æƒ³" +"设置一个默认的区域设置(locale)。" --- glibc-2.4.orig/debian/changelog +++ glibc-2.4/debian/changelog @@ -0,0 +1,6611 @@ +glibc (2.4-1ubuntu6) edgy; urgency=low + + * debian/patches/series: Filter out belocs-locales-bin merge. + + * debian/patches/ubuntu/local-altlocaledir.diff: Update to working + version. + + * debian/sysdeps/depflags.pl: Add tzdata as Recommends. + + -- Jeff Bailey Fri, 23 Jun 2006 11:20:26 -0400 + +glibc (2.4-1ubuntu5) edgy; urgency=low + + * debian/control.in/main: Depend on gcc-4.1, drop build-dep on + gcj-4.1. Restore (>= 1.0) version dependancy on po-debconf. + + -- Jeff Bailey Tue, 20 Jun 2006 04:58:13 -0400 + +glibc (2.4-1ubuntu4) edgy; urgency=low + + * debian/sysdeps/amd64.mk: Revert merge of /emul/i486-linux-gnu paths, + we're sticking to /usr/lib32 for now. + + -- Jeff Bailey Thu, 8 Jun 2006 17:56:37 -0400 + +glibc (2.4-1ubuntu3) edgy; urgency=low + + * debian/sysdeps/depflags.pl: add a Replaces on amd64 against base-files + (<< 3.1.9ubuntu8) to cope with us now shipping /usr/lib64 and /lib64. + + -- Adam Conrad Thu, 8 Jun 2006 19:48:34 +1000 + +glibc (2.4-1ubuntu2) edgy; urgency=low + + * No-change rebuild against the new edgy chroots without gcc-opt. + + -- Adam Conrad Thu, 8 Jun 2006 17:51:46 +1000 + +glibc (2.4-1ubuntu1) edgy; urgency=low + + [ Jeff Bailey ] + * Add missing build-dep of texi2html + - debian/control.in/main: Build-dep on texi2html and texinfo. + + -- Jeff Bailey Wed, 7 Jun 2006 22:48:17 -0400 + +glibc (2.4-1ubuntu0) edgy; urgency=low + + [ Jeff Bailey ] + * Merge in Debian changes, new upstream version. + + * Require gcc-4.1 + - debian/control.in: Depend on gcj-4.1 to bring in gcc. + + * Drop LinuxThreads on all arches, require 2.6 on all architectures. + - debian/sysdeps/linux.mk: Use linuxthreads instead of nptl. + Set minimum kernel version to 2.6. + - debian/control.in/i386.mk: Drop nptl pass. + - debian/control.in/sparc.mk: Use nptl for sparc64, sparc64v9b, sparc64v9v + - debian/script.in/kernelcheck.sh: Add global check for 2.6.0 + + * Reenable the glibc manual. + - debian/patches/series: Comment out all/local-remove-manual.diff + - debian/rules.d/build.mk: Build the glibc docs. + + * Lower po-debconf requirement to make merging easier. + - debian/control.in/main: Drop (>= 1.0) version dependancy on po-debconf. + + * Drop locales-all package. + - debian/rules: Drop locales-all. + + * Drop tzdata dependancy. + - debian/control.in/libc: Remove tzdata dependancy. We will + import the tzdata package later. + + * Do biarch pathing for ppc64 + - debian/sysdeps/powerpc.mk: Install headers for ppc64 to + /usr/include/ppc64-linux-gnu, and include them in the + libc6-dev-ppc64 package. + + * Use GCC niagara optimisation + - debian/sysdeps/sparc.mk: Use -mcpu=niagara instead of ultrasparc3. + + -- Jeff Bailey Fri, 2 Jun 2006 07:39:53 -0400 + +glibc (2.4-1) UNRELEASED; urgency=low + + [ Clint Adams ] + * New upstream version 2.4. + - Remove all/cvs-manual-memory.diff (merged upstream). + - Remove all/cvs-manual-string.diff (merged upstream). + - Remove any/cvs-divdi3-moddi3.diff (merged upstream). + - Remove any/cvs-errlist.diff (merged upstream). + - Remove any/cvs-siginfo_h.diff (merged upstream). + - Remove any/cvs-regcomp_c.diff (merged upstream). + - Remove any/cvs-tst-setcontext_c.diff (merged upstream). + - Remove any/local-dash.diff (merged upstream). + - Remove any/local-gcc4-elf.diff (merged upstream). + - Remove powerpc/cvs-executable-got.diff (merged upstream). + - Remove sparc/cvs-datastart.diff (merged upstream). + - Remove sparc/cvs-gcc4-inline.diff (merged upstream). + - Remove sparc/local-gcc4-mv8.diff (merged upstream). + - Remove sparc/submitted-socket-weakalias.diff (merged upstream). + - Remove everything to do with nscd_nischeck. + - Update any/local-linuxthreads-sizefix.diff. + - Update hppa/submitted-lt.diff. + - debian/shlibver: Bump up to 2.4-1. + - Add any/local-bashisms.diff: fix invalid test operator (==) + in run-iconv-test.sh + - debian/rules.d/build.mk: don't try to build html documentation. + - debian/sysdeps/hppa.mk: use ports and linuxthreads add-ons + - debian/sysdeps/ia64.mk: build with linuxthreads instead of NPTL + - debian/sysdeps/m68k.mk: use ports and linuxthreads add-ons + - debian/sysdeps/mips.mk: use ports and linuxthreads add-ons + - debian/sysdeps/mipsel.mk: use ports and linuxthreads add-ons + - debian/sysdeps/i386.mk: disable sanity checks on linuxthreads build + - debian/sysdeps/powerpc.mk: build with linuxthreads instead of NPTL + - debian/sysdeps/arm.mk: use ports and linuxthreads add-ons + - Build with gcc 4.1 on all architectures. + - debian/patches/sparc/local-linuxthreads.diff: fill in missing + preprocessor macros. + - debian/debhelper.in/nscd.init: partially sync nscd initscript + with upstream. + + [ Denis Barbier ] + - Remove locale/complex-collate.diff (merged upstream). + - Remove locale/cvs-{iso4217,iso639}.diff, locale/cvs-localedata.diff + - Remove from any/local-forward-backward-collation.diff a chunk merged + upstream. + - debian/rules.d/tarball.mk: glibc--2.4.tar.bz2 add-on unpacks + into either or glibc--2.4, in which case it is renamed + into . + - Remove the GNU Libc Reference manual from glibc-doc because it is + not DFSG-free. (Closes: #181494) + The whole glibc-2.4/manual directory is removed from glibc-2.4.tar.bz2. + - debian/control: Drop Build-Depends: texinfo, texi2html. + - debian/control: Drop references to the antique libc-doc package. + + [ Michael Banck ] + * debian/sysdeps/hurd.mk: Only use libidn for add-ons. + + [ Aurelien Jarno ] + * Update all/submitted-new-brf-encoding.diff. + * Remove alpha/cvs-gcc4-profile.diff (not needed anymore). + * Update alpha/submitted-xstat.diff. + * Update arm/cvs-gcc4-inline.diff. + * Remove arm/cvs-float-byteorder.diff (merged upstream). + * Remove arm/cvs-socket-weakalias.diff (merged upstream). + * Update arm/local-ioperm.diff to reflect the new port add-on. + * Update arm/local-no-hwcap.diff to reflect the new port add-on. + * Remove any/cvs-argp_h.diff (merged upstream). + * Remove any/cvs-ctan.diff (merged upstream). + * Remove any/cvs-futimes.diff (merged upstream). + * Remove any/cvs-nfs_h.diff (merged upstream). + * Remove any/cvs-path_log.diff (merged upstream). + * Remove any/cvs-resource_h.diff (merged upstream). + * Remove any/cvs-tls-crashfix.diff (merged upstream). + * Remove any/local-kernel-features.diff (merged upstream). + * Update any/local-ldso-disable-hwcap.diff. + * Update any/local-linuxthreads-sizefix.diff. + * Update any/local-rtld.diff. + * Update any/local-version-sanity.diff. + * Remove any/submitted-eh-frame-terminator.diff (merged upstream). + * Update any/submitted-nis-netgrp.diff. + * Remove i386/local-i486_ldt_support.diff (merged upstream). + * Remove hppa/cvs-linesep.diff (merged upstream). + * Update hppa/cvs-no-ldbl-128.diff to reflect the new port add-on. + * Update hppa/cvs-pie-relocs.diff to reflect the new port add-on. + * Update hppa/local-gcc-4-profile.diff to reflect the new port add-on. + * Update hppa/local-inlining.diff to reflect the new port add-on. + * Update hppa/submitted-drop-utimes.diff. + * Update hppa/submitted-fenv-align.diff to reflect the new port add-on. + * Update hppa/submitted-fpu.diff to reflect the new port add-on. + * Update hppa/submitted-iitlbp.diff to reflect the new port add-on. + * Update hppa/submitted-sysdeps.diff. + * Remove hurd-i386/cvs-ioctl-pfinet.diff (merged upstream). + * Remove hurd-i386/cvs-getresuid-dyslexia.diff (merged upstream). + * Remove hurd-i386/cvs-posix-opts.diff (merged upstream). + * Update hurd-i386/submitted-sysvshm.diff. + * Remove kfreebsd/local-nscd_no_mremap.diff (not necessary anymore). + * Update kfreebsd/local-scripts.diff. + * Add kfreebsd/local-ftw.diff. + * Add kfreebsd/local-sysdeps-2.4.diff. + * Remove m32r/cvs-elf-m32r_rel32.diff (merged upstream). + * Update m68k/local-compat.diff. + * Update m68k/local-mathinline_h.diff to reflect the new port add-on, but + keep it disabled. + * Update m68k/local-fpic.diff. + * Update m68k/local-reloc.diff to reflect the new port add-on. + * Update m68k/submitted-gcc34-seccomment.diff. + * Remove mips/cvs-gcc4-inline.diff (merged upstream). + * Remove mips/cvs-gcc4-sysdeps.diff (merged upstream). + * Update mips/local-librt.diff to reflect the new port add-on. + * Update mips/submitted-msq.diff to reflect the new port add-on. + * Remove powerpc/cvs-gcc41-initfini.diff (merged upstream). + * debian/sysdeps/sparc.mk: do an NPTL pass. + * Update any/local-libgcc-compat-{all,others}.diff and split them into + any/local-libgcc-compat-{main,ports}.diff. + * Add sparc/local-fork.diff (use fork.c instead of fork.S). + * Add sparc/local-sysdep.diff (pull in __syscall_error routine when + building with linuxthreads). + * Add any/local-__thread.diff (make glibc buildable without __thread support) + from Michael Bank. (Closes: #361064) + * debian/debhelper.in/libc.postinst: add /etc/ld.so.conf.d/ support. + * Drop any/local-ldconfig-multiarch.diff, use /etc/ld.so.conf.d/ to + configure multiarch libraries. + * debian/sysdeps/alpha.mk: do an NPTL pass. + + -- Aurelien Jarno Sun, 28 May 2006 03:28:14 +0200 + +glibc (2.3.6-13) unstable; urgency=low + + * debian/patches/alpha/local-gcc4.1.diff: fix a small typo. sigh. + * debian/control.in/main: build-depends on libc6-dev-s390x on s390. + * Remove any/local-libgcc-static.diff. (Closes: #369636, #369641) + + -- Aurelien Jarno Wed, 31 May 2006 07:20:14 +0200 + +glibc (2.3.6-12) unstable; urgency=low + + * Don't do a udeb pass, it is still too buggy. (Closes: #369492) + * debian/control.in/main: build-depends on libc6-dev-sparc64 on sparc. + * Add patches/alpha/local-gcc4.1.diff (fix build with gcc-4.1) from + Falk Hueffner. + * patches/kfreebsd/local-sysdeps.diff: update to revision 1571 (from + glibc-bsd). + + -- Aurelien Jarno Tue, 30 May 2006 22:35:35 +0200 + +glibc (2.3.6-11) unstable; urgency=low + + [ Aurelien Jarno ] + * debian/rules/build.mk: don't remove ld.so from udeb packages. + * debian/rules: move udeb_add-ons to debian/sysdeps/{kfreebsd,linux}.mk. + * M32R support: (Closes: #366962) + - debian/rules.d/control.mk: add m32r. + - Add debian/sysdeps/m32r.mk. + - Add debian/patches/any/cvs-futimes.diff (use fnctl64 if fnctl is no + available). + - Add debian/patch/any/local-kernel-features.diff (fix the include path + for kernel-features.h) so that it could be used from other files. + - Add debian/patches/any/local-libgcc-static.diff (link with libgcc_s). + - Add debian/patches/m32r/local-ports-m32r.diff (m32r support). + - Add debian/patches/m32r/cvs-elf-m32r_rel32.diff (Add R_M32R_REL32 to + elf/elf.h). + * debian/local/manpages/localedef.1: fix a typo. (Closes: #310477) + * debian/local/manpages/iconv.1: fix the indentation (Closes: #316148) + * debian/local/manpages/iconv.1, debian/local/manpages/localedef.1: change + sarge into etch. + * debian/sysdeps/kfreebsd.mk: build the udeb package with -Os on + kfreebsd-i386 and kfreebsd-amd64. + * debian/sysdeps/*.mk: build the udeb with -Os, except on m68k and s390. + * debian/sysdeps/hppa.mk: build the udeb with gcc 4.1. + mipsel, powerpc and sparc. + * debian/sysdeps/arm.mk: set udeb_MIN_KERNEL_SUPPORTED to 2.4.1, as the + arm build daemons are still running a 2.4 kernel. + * debian/sysdeps/sparc.mk: set udeb_MIN_KERNEL_SUPPORTED to 2.4.1, as d-i + still needs a 2.4 kernel. + * patches/kfreebsd/local-sysdeps.diff: update to revision 1577 (from + glibc-bsd). + * Add debian/patches/powerpc/cvs-gcc41-initfini.diff (fix build with gcc 4.1 + on powerpc) from upstream CVS. + * debian/sysdeps/i386.mk: add a symlink (/usr)/lib/i386-linux-gnu -> + (/usr)/lib/i486-linux-gnu. + * Remove patches/i386/local-sse-oldkernel.diff (we don't support 2.2 kernels + anymore). + * Merge debian/local/etc_init.d/nscd and debian/debhelper.in/nscd.init. + (Closes: #368587) + * Remove debian/local/etc_init.d/nscd. + + [ Denis Barbier ] + * Add patches/all/submitted-new-brf-encoding.diff: Add new BRF encoding + (ASCII Braille), submitted upstream by Samuel Thibault. + * Add patches/localedata/locale-zh_TW.diff: Remove from + dates. Thanks Dan Jacobson (Closes: #352600) + + [ Clint Adams ] + * debian/debhelper.in/libc.preinst: use POSIX syntax for kill. + * debian/control.in/main: bump to Standards-Version 3.7.2. + + -- Aurelien Jarno Tue, 30 May 2006 02:28:33 +0200 + +glibc (2.3.6-10) unstable; urgency=low + + [ Aurelien Jarno ] + * debian/debhelper.in/libc.preinst: use the original path if readlink -f + fails to canonicalize the path. (Closes: #368116) + * Add patches/arm/local-softfloat.diff (support for arm softfloat), and + enable on arm-softfloat only, as it breaks other architectures. (Closes: + #358772) + * debian/rules.d/control.mk: Add arm-softfloat to the architectures list. + * Do a separate pass for the udeb package, so that it could use different + build options. + * Set the minimum kernel to 2.6.1 for the udeb package, except for i386, + m68k, mips, mipsel, powerpc and s390. + * Enable the locales-all package. (Closes: #308020) + * debian/sysdeps/i386.mk: build the glibc with --without-__thread again on + i386 (Closes: #368022, #368326). + * debhelper.in/libc.preinst, debhelper.in/libc-otherbuild.postinst, + debhelper.in/libc.postinst, debhelper.in/libc-otherbuild.preinst: use + /bin/sh instead of /bin/bash. (Closes: #267594) + * patches/kfreebsd/local-sysdeps.diff: update to revision 1571 (from + glibc-bsd). + + -- Aurelien Jarno Sun, 21 May 2006 22:36:27 +0200 + +glibc (2.3.6-9) unstable; urgency=low + + * Don't run make install with -j, as it is not SMP safe. + + -- Aurelien Jarno Thu, 18 May 2006 17:54:39 +0000 + +glibc (2.3.6-8) unstable; urgency=low + + [ Aurelien Jarno ] + * Disable m68k/local-mathinline_h.diff, it breaks the build of the glibc on + m68k. + * Add all/local-pt_BR.diff (fix a small typo in the Brazilian Portuguese + translation) by Guilherme de S. Pastore. (Closes: #319422) + * Add hurd-i386/local-mlock.diff (fix mlock on Hurd/Mach), by Samuel + Thibault. (Closes: #349204) + * sysdeps/i386.mk: build glibc with --with-__thread on i386. + * debian/local/manpages: s/woody/etch/g. (Closes: #364198) + * sysdeps/depflags.pl: bumped the versioned conflicts with initrd-tools + to 0.1.84.1, as older version use LD_ASSUME_KERNEL=2.4. (Closes: #365647) + * Follow symlinks while checking for other copy of the C library. + (Closes: #365838) + * Invalidate nscd cache when calling /etc/init.d/nscd restart. + (Closes: #365676, #365677) + * /usr/sbin/tzconfig: set umask to 022. (Closes: #367145) + * debian/main/control.in: make locales Replaces: lliurex-belocs-locales-data. + (Closes: #365651) + * Move the NJOBS part to debian/sysdeps/(system) to debian/rules. + * debian/debhelper.in/libc-otherbuild.postinst: fixed parsing of + /etc/ld.so.hwcappkgs. (Closes: #364666) + + [ Denis Barbier ] + * Fix location of locales/NEWS.Debian. Thanks Matthijs Mohlmann. + (Closes: #362763) + * locales.postinst: Do not abort if the current locale is not generated. + * locales.config: Fix shell scripting when "All locales" is selected along + with other choices, Thanks Olivier Trichet. (Closes: #364251) + * update-locale: When checking for invalid locale settings, do not mess up + with current environment settings. + * Remove sem_*.3 manual pages from glibc-doc, these manual pages are updated + and maintained in the manpages-dev package. (Closes: #365547) + + [ Michael Banck ] + * Add hurd-i386/cvs-posix-opts.diff (Define many missing options, most + notably _POSIX_THREAD_SAFE_FUNCTIONS) by Roland McGrath (patch from + HEAD). + + -- Aurelien Jarno Thu, 18 May 2006 15:34:08 +0000 + +glibc (2.3.6-7) unstable; urgency=medium + + [ Aurelien Jarno ] + * Urgency set to medium because this version fixes and RC bug in testing. + * Optimized libraries should actually be cross-compiled as we don't know the + CPU that will be used. + * Allow the glibc to be cross-compiled for Linux and kFreeBSD. (Closes: + #358771) + * Bumped the minimum kernel to 2.4.1 instead of 2.4.0 as there are some + important new features in this version. Thanks to Petr Salinger for + noticing me. + * Add m68k/local-mathinline_h.diff (fix bits/mathinline.h), by Roger Leigh. + (Closes: #340871) + * Add beginning and end timestamps to both the build logs and the + testsuite logs. (Closes: #155690) + * debian/sysdeps/sparc.mk: build sparcv9b optimized libraries with + -mtune=ultrasparc3. + * debian/sysdeps/kfreebsd/local-sysdeps.diff: update from the latest SVN. + * debian/patches/series: Fix the patchlevel for local-i486_ldt_support.diff + (Closes: #226716) + * Fix a typo in the previous changelog entry (s/not/now/). (Closes: #362460) + + [ Denis Barbier ] + * Remove ldd calls from libc.preinst. + * Do no more transfer variables from /etc/environment to /etc/default/locale + in locales.postinst, but instead add /usr/share/doc/locales/NEWS.Debian + to explain that /etc/environment needs to be cleaned up. + (Closes: #361048) + * Create a new locales-all package with all supported locales precompiled, + but keep it disabled for now. + Both locales and locales-all packages provide a virtual generated-locales + package. Packages which currently depends on locales should instead + depend on 'locales | generated-locales'. + * Add a new ca_ES@valencia locale, requested by Robert Millan (Closes: #361972) + + -- Aurelien Jarno Fri, 14 Apr 2006 13:48:30 +0200 + +glibc (2.3.6-6) unstable; urgency=low + + [ Aurelien Jarno ] + * Remove the timezone database from the libc6 package. It is now provided + by a separate package called tzdata. + * Put each test log file in the corresponding package instead of putting all + of them in libc6. + * Remove sparc/local-sparc64-fixups.diff as /lib64 and /usr/lib64 are now a + default search path on 32/64-bit architectures. + * Switch minimum kernel to at least 2.4.0 on all arches but m68k, and change + kernelcheck.sh accordingly. Affected architectures: + - alpha: from 2.2.0 to 2.4.0 + - arm: from 2.2.0 to 2.4.0 (but 2.4.0 was checked at installed time) + - i386: from 2.2.0 to 2.4.0 + - powerpc: from 2.2.0 to 2.4.0 + - s390: from 2.2.10 to 2.4.0 + - sparc: from 2.2.0 to 2.4.0 + (Closes: #174270, #220992) + * Add i386/local-i486_ldt_support.diff (add ldt support and thus TLS support + on i486 machines). Thanks to Petr Salinger for the hint. (Closes: #226716) + * Bump shlib to (>= 2.3.6-6) on i386. + * debian/debhelper.in/libc-alt.install: Add gconv-modules to the bi-arch + packages. (Closes: #361642) + * /etc/ld.so.nohwcap is now supported on non-Linux architectures. Drop the + "Linux" check from libc-otherbuild.preinst. + * Build a libc6-xen flavour on i386. + * Fix a typo in the description of the libc6-sparcv9 and libc6-sparcv9b + packages. + * local/usr_sbin/tzconfig: + - Put a copy of the current timezone into /etc/localtime instead of a + symlink. (Closes: #346342) + - Handle the case where /etc/localtime does not exists. (Closes: + #360383). + * local/manpages/tzconfig.8: Update the manpage accordingly. + * script.in/kernelcheck.sh: Also take in account 64-bit mips(el) kernels. + * Add GNU/kFreeBSD patches, using conditional patching until they get + accepted upstream. + * Correctly replace DEB_HOST_ARCH by its value in libc6.preinst. Thanks to + Denis for noticing me. + + [ Denis Barbier ] + * debian/debhelper.in/locales.config: /etc/locale.gen was not generated at + initial installation. (Closes: #357523) + * update-locale: Fix buggy sanity check between LANGUAGE and LANG. + (Closes: #361091) + * update-locale: Drop the --remove flag, it is useless. + * update-locale: Fix the --locale-file flag. + * Add new Galician debconf translation, by Jacobo Tarrio. (Closes: #361101) + * Use new features of po-debconf 1.0 to remove unneeded strings from PO + files. + * Fix day, abmon and mon fields for wo_SN locale. (Closes: #361338) + + [ Michael Banck ] + * Add hurd-machrules-make.diff (fixes build problems with make-3.81 for + Mach interface generation rules) by Roland McGrath (patch from HEAD). + * Add hurd-sysvshm.diff (implements SysV shared memory for GNU/Hurd) + by Marcus Brinkmann. + + -- Aurelien Jarno Mon, 10 Apr 2006 20:19:55 +0200 + +glibc (2.3.6-5) unstable; urgency=low + + [ Denis Barbier ] + * Add am_pm formatting information to en_NZ. (Closes: #356328) + * Add interlingua locale. (Closes: #224756) + * Move locale variables from /etc/environment into a dedicated + /etc/default/locale file. (Closes: #214898, #349503) + * Add a new /usr/sbin/update-locale program to handle this new file. + + [ Aurelien Jarno ] + * Fix ldconfig multiarch patch for reiserfs filesystems. + * Make ldconfig look into /lib32 and /usr/lib32 on amd64. Add /lib32 -> + /emul/ia32-linux/lib and /usr/lib32 -> /emul/ia32-linux/usr/lib links. + * Remove glibc235-gcc4-ppc-procfs.diff from debian/patches/series. + (Closes: #360126) + * Add siginfo_h.diff (fixes a typo in ILL_ILLOPN definition), backported + from upstream. (Closes: #358041) + * Replace getcwd_ia64.diff by getcwd_c.diff (fix getcwd on platforms where + PAGE_SIZE >> PATH_MAX), backported from upstream. (Closes: #355109) + * debian/control: drop alternative build-depends on ia32-libs-dev as this + package does not exist anymore. + + -- Denis Barbier Tue, 4 Apr 2006 18:07:21 +0200 + +glibc (2.3.6-4) unstable; urgency=low + + [ Aurelien Jarno ] + * Set configure_build to the same value as configure_host for sparc + optimized libraries (as on i386). This way they will be tested. + * If the CPU has biarch support, run tests for cross-compiled libraries. + * Remove ld.so from optimized libraries as it is not used. + * Add regcomp_c.diff (Call __libc_lock_init after init_dfa) from upstream + (Ulrich Drepper). This make possible to run the testsuite again on hppa. + * Enable the testsuite on hppa. + * Add tst-setcontext_c.diff (fix the arguments passed to setcontext during + test) from upstream. + * Create a link /usr/lib32 -> /emul/ia32-linux/usr/lib on amd64. + * Add argp_h.diff fixes (Remove __NTH for __argp_usage inline function) + by Ulrich Drepper (patch from HEAD). (Closes: #355264) + * Add getcwd_ia64.diff (Remove the assertion so that the behaviour is the + same on all platforms, including ia64). This is a temporary fix to bug + #355109, until the upstream takes a decision. + * debian/sysdeps/kfreebsd-amd64.mk: + - s/libc6/libc0.1/g + - Change rtlddir from /lib64 to /lib + + [ Denis Barbier ] + * locales.config: If $DEBCONF_IS_A_REGISTRY is set to a non-empty value, + the content of /etc/locale.gen does not override debconf values. + * Add strfmon.diff: the negative sign is not printed by strfmon when + current locale defines sign_posn == 4 (as in de_CH) and format + argument contains the ! modifier. + * Fix forward-backward-collation.diff: the change in strcoll_l.c has to + be applied at several places. (Closes: #357390) + * Update timezone data files to tzdata2006b (no data change, only comments). + * Fix resource_h.diff: there was a typo for mips: + s/_RLIMIT_RTPRIO/__RLIMIT_RTPRIO/ (Closes: #357419) + + -- Denis Barbier Sat, 18 Mar 2006 10:26:45 +0100 + +glibc (2.3.6-3) unstable; urgency=low + + [ Aurelien Jarno] + * Use a shell function instead of ifneq when testing a variable depending on + $(curpass), otherwise it is only evaluated at the first pass. + * Add support for the ppc64 architecture. (Closes: #301438). + * Use the new slibdir, libdir, rtlddir variables to build the various + flavours of the libc. Put them directly in the final directory, and + remove the corresponding tweaks done after the make install phase. + * Install the 32-bit libraries in /emul/ia32-linux(/usr)/lib on amd64. + * Only create the multiarch directories and the symlinks in /lib/ldconfig + for the main pass. Otherwise alternate libraries would conflict with the + main one when using multiarch. + * Fix the build-dependencies for kfreebsd-amd64. + * Add sysdeps/kfreebsd-amd64.mk and add kfreebsd-amd64 to + rules.d/control.mk. + * Make libc6-i386-dev conflicts with all versions of ia32-libs-dev. As it + won't be built anymore on amd64, this will automatically remove it during + the upgrade. + + [ Clint Adams ] + * Get rid of -o as a binary operator to [ in tzconfig and postinst. + + [ Denis Barbier ] + * Update localedata/locales/ro_RO. Thanks Eddy PetriÅŸor. (Closes: #347173) + * Bump LOCALES_DEP_VER to 2.3.6-2. All locales can be compiled with + localedef from 2.3.6-2 and 2.3.6-3. (Closes: #352620) + * Updated Italian debconf translation, by Luca Monducci. + + -- Aurelien Jarno Wed, 1 Mar 2006 17:11:36 +0100 + +glibc (2.3.6-2) unstable; urgency=low + + [ Denis Barbier ] + * Modify debver2localesdep.pl, locales-depver and control files to provide + a smooth upgrade in unstable when locales require changes in localedef. + This is the first part for solving #352620, the proper dependency for + locales will be set by the next upload. + * debian/control: Clean up. Remove versioned dependencies on gettext, + debianutils, tar, texinfo; these versions were already in oldstable. + Drop references to localebin, wg15-locale, i18ndata, locale-ja, locale-ko, + locale-vi, locale-zh, libc6-doc, glibcdoc and libc6 (<< 2.1-4). + * debian/control: Split Build-Depends on several lines for readability + purpose. + * Add RON to locale/iso-4217.def and bump LOCALES_COMPAT_VER to 2.3.6-2. + * Fix thousand separator for de_CH, and let other Swiss locales copy + de_CH for LC_NUMERIC and LC_MONETARY sections. (Closes: #345481) + * Apply a patch from Fedora to define AM/PM strings in cy_GB and en_GB + locales. (Closes: #240901) + * Fix the week definition for the C locale. + * Check first_weekday fields against current CLDR snapshot. Modified + locales are *_GB (=2), ar_SY (=5), ms_MY (=2), id_ID (=2). Add + this field to more locales. + * locale-gen: Replace 'test ... -a ...' by two tests. + * Add an "All locales" option to the locales/locales_to_be_generated + template. When it is selected, /etc/locale.gen is a symlink to + /usr/share/i18n/SUPPORTED. (Closes: #321580, #323013) + * Updated debconf translations: (Closes: #353611) + - Brazilian Portuguese, by André Luís Lopes (Closes: #352416) + - Czech, by Miroslav Kure + - Danish, by Morten Brix Pedersen + - Dutch, by Bart Cornelis + - French, by Denis Barbier + - German, by Helge Kreutzmann + - Polish, by Emilian Nowak + - Portuguese, by Simão Pedro Cardoso + - Spanish, by Carlos Valdivia Yagüe + - Swedish, by Daniel Nylander + - Ukrainian, by Eugeniy Meshcheryakov + + [ Clint Adams ] + * Add hurd-getresuid-dyslexia.diff (fixes incorrect ordering of + arguments) with patch from Samuel Thibault. (Closes: #352500) + * Add hppa-no-ldbl-128.diff (stops implying that PA needs + 128-bit long double support in glibc) from Aurelien Jarno. + (Closes: #344836). + * debian/local/manpages/locale.1: remove double quotes from + synopsis. (Closes: #352597) + + [ Aurelien Jarno ] + * Move dependency on lib64gcc1 from libc6-amd64 to libc6-dev-amd64 to + avoid a dependency loop. (Closes: #352263) + * Use sed and test in /etc/init.d/glibc.sh to compare kernel versions. + Put the Debian architecture name in the script at build time instead + of using 'dpkg --print-architecture'. Thanks to Florent Bayle for + the idea. (Closes: #325802, #328088, #339482) + * Fix example code showing how to use hooks for malloc. (Closes: + bug#333565). + * Add hurd-ioctl-decode-argument.diff (fixes decoding of ioctl + arguments) from Samuel Thibault. (Closes: #320273) + * Fix the prototype of sbrk() in the manual. (Closes: #281863) + * Fix the strcasestr() examples in the manual. (Closes: #289853) + * Install libc_nonshared.a in /usr/lib/nptl, and fix the location + of the static libraries of the NPTL ld scripts. (Closes: #347762) + * Update debian/ files for GNU/kFreeBSD. (Closes: #351638) + * Regenerate debian/control, generate debian/control.in/libc0.1. + * Lintian cleans: + - Remove build-dependencies on tar and debianutils, they are + build-essential packages + - Fix FSF postal address + - Use policy compliant links in libc6-dev-amd64 + - Use an absolute symlink for /lib64 on amd64 + * Add myself to Uploaders. + * Switch to gcc-4.0 on powerpc. + * Remove old hack for gcc-3.4 on amd64. + * Build with the compiler defined as default for glibc (ie currently + gcc-4.0) instead of gcc on amd64. + * Decrease priorities of 64-bit main and -dev packages to standard + and optional for all architectures. It better matches override, + though it will still have to be changed. + * Fix glibc235-hppa-lt.diff (restore ret0 across calls to CDISABLE) + from Randolph Chung. (Closes: #326581) + * Switch to gcc-4.0 on hppa. + * Add support for extra_pkg_install hooks for udeb packages. + * Build back with -g1 on amd64, it was removed to permit the build with + gcc-3.4. + * Remove --with-tls and --with-__thread in sysdeps/* as they are the + default option since version 2.3.5. + * Multiarch support: + - Add ld-multiarch.diff (add (/usr)/lib/$(config-machine)-$(config-os)) + to the search path of the dynamic linker) from Tollef Fog Heen. + (Closes: #295855) + - Add ldconfig-multiarch.diff (add directories pointed from /lib/ldconfig + to the search path). + - Create (/usr)/lib/$(config-machine)-$(config-os) and add symlinks to + these directories in /lib/ldconfig/ + - Add rtld.diff (add a new configuration variable rtlddir to change the + dynamic linker in the ELF binaries) partly from Andreas Jochen. This is + necessary to be able to install a glibc in the multiarch dir while still + conforming to the various ABIs which specify a linker in /lib or /lib64. + * Remove the patch to install the libc into /lib instead of /lib64 on + amd64. Use the new libdir, slibdir and rtlddir options in configparm to + install the glibc in (/usr)/lib, and to use the dynamic linker path + specified by the ABI for path for libc objects. (Closes: #325226) + * Add -u option to the ldd manpage. (Closes: #354074) + * Merged a patch from Michael Bank to use gcc-4.0 on Hurd. + * Add resource_h.diff (RLIMIT_NICE and RLIMIT_RTPRIO support) from MAIN. + (Closes: #352636) + * Add hppa-inlining.diff (Increase the maximal overall growth of the + compilation unit caused by inlining for dl-reloc.c on hppa). + * Build a 32-bit libc on amd64, using the new multiarch directories. + (Closes: #274367) + + -- Aurelien Jarno Thu, 23 Feb 2006 17:47:58 +0100 + +glibc (2.3.6-1) unstable; urgency=low + + [ Denis Barbier ] + * debian/debhelper.in/libc.postinst: Restart webmin on upgrade. + (Closes: #345641) + * debian/debhelper.in/libc.postinst: Restart dropbear on upgrade. + (Closes: #351036) + * Fix yesexpr/noexpr in tl_PH locale. Reported by eric pareja. + (Closes: #295810) + * Fix langinfo(_NL_TIME_FIRST_WEEKDAY) for C locale. Reported by + Graham Wilson (Closes: #327025) + * Add first_weekday fields to most locales. + (Closes: #343885, #347323, #347686, #348518, #351375) + * Apply various fixes to French locales. (Closes: #248377) + * Fix d_t_fmt and date_fmt in fo_FO. Reported by Jacob Sparre Andersen. + * New sa_IN locale file, provided by Vidya Ayer and Christian Perrier. + (Closes: #331377) + * Add several locales to SUPPORTED: + - ru_RU.CP1251, requested by Michael Bravo. (Closes: #225516) + - uz_UZ.UTF-8 (its ISO-8859-1 counterpart had no UTF-8 variant) + - da_DK.ISO-8859-15, en_GB.ISO-8859-15, en_US.ISO-8859-15, no_NO.UTF-8, + no_NO and sv_SE.ISO-8859-15 are found in fedora-branch CVS branch. + * Apply several improvements to hy_AM found in upstream Bugzilla. + * Fix LC_MONETARY section of en_DK and provide en_DK.ISO-8859-15. + (Closes: #323159) + * Improve localedef(1) manual page, by Lars Wirzenius (Closes: #309846) + * Fix LC_MONETARY section of pl_PL. Reported by MichaÅ‚ Politowski. + (Closes: #227214) + * New wo_SN locale file, provided by Samba Ndao Diop and Christian + Perrier. (Closes: #279697) + * Add new ca_AD, ca_FR and ca_IT locale files, sent upstream by Robert + Millan. + * New csb_PL locale file, sent upstream by Andrzej Krzysztofowicz. + * Rewrite collation rules of several locales to include iso14651_t1. + This eases maintenance and saves about 1MB for installed size. + * Sort SUPPORTED to list UTF-8 locales first. This change partly + solves #312927. + * Modify localedata/locales/no_NO to copy definitions from nb_NO. + * Fix lang_* fields in gez_ER, gez_ET, tr_TR and wal_ET. + * Fix unknown symbols in collation rules of several locales: da_DK, + fa_IR, is_IS, lo_LA, lv_LV, nb_NO and sr_CS. + * Apply updates for st_ZA, xh_ZA and zu_ZA sent upstream by Dwayne Bailey. + * Add new nr_ZA locale, sent upstream by Dwayne Bailey. + * Rewrite collation rules for dz_BT, in collaboration with Pema Geyleg. + * Revert upstream change of postal_fmt in te_IN because localedef + complains. (Closes: #348804) + * New debconf translations: + - Italian, by Luca Monducci (Closes: #329428) + - Swedish, by Daniel Nylander (Closes: #334864) + * Slightly reword locales.templates to be DTSG-compliant, thanks Thomas + Huriaux. + * Updated debconf translations: (Closes: #350103) + - Brazilian Portuguese, by André Luís Lopes (Closes: #352416) + - Czech, by Miroslav Kure + - Danish, by Morten Brix Pedersen + - Dutch, by Bart Cornelis + - French, by Denis Barbier + - German, by Helge Kreutzmann + - Polish, by Emilian Nowak + - Turkish, by Erçin EKER + - Ukrainian, by Eugeniy Meshcheryakov + - Vietnamese, by Clytie Siddall + * Update timezone data files to tzdata2006a. (Closes: #345479, #347315, #351049) + * Drop Build-Depends-Indep: po4a from control file, translated manual pages + are currently not built. + + [ Clint Adams ] + * Move to upstream version 2.3.6. + - Redo debian/patches/localedata/cvs-localedata.diff + - Remove glibc235-gcc4-cvs.diff + - Remove glibc235-gcc4-jis0208.diff + - Remove glibc235-binutils216-ia64.diff + - Remove glibc235-gcc4-ia64-profile.diff + - Remove glibc235-gcc4-ppc-procfs.diff + - Remove glibc235-execvp-fix.diff + - Delete CSD (Serbian Dinar) hunk from locale-iso4217.diff + - Redo glibc235-dl-execstack.diff + - Remove glibc235-alpha-divqu.diff + - Remove amd64-semtrywait-weakalias.diff + - Remove strfry-segv.diff + - Remove ia64-binutils-libm.diff + - Remove glibc235-leapsecond.diff + - Delete several hunks from glibc235-gcc4-sparc-inline.diff + - Remove hurd-libpthread-indirect-loading.diff + - Remove glibc235-gcc4-hurd.diff + - Delete several hunks from glibc235-gcc4-arm-inline.diff + - Remove glibc235-gcc4-s390-inline.diff + * Add hppa-pie-relocs.diff, thanks to Aurelien Jarno. This + fixes nscd on hppa. (Closes: #350501) + + [ Daniel Jacobowitz ] + * Remove mips-bits-syscall.diff, merged. + + [ GOTO Masanori ] + * Update po/ja.po. + + -- Clint Adams Thu, 9 Feb 2006 21:45:45 -0500 + +glibc (2.3.5-13) unstable; urgency=low + + [ Clint Adams ] + * Acknowledge NMU. (Closes: #342545) + + [ Denis Barbier ] + * debian/rules.d/control.mk: Make sure that debian/control is regenerated. + (Closes: #351704) + + -- Denis Barbier Mon, 6 Feb 2006 22:22:23 +0100 + +glibc (2.3.5-12.1) unstable; urgency=low + + * NMU + * glibc235-hppa-fpu.diff: New, fixes hppa FPU issues. Closes: #342545 + + -- LaMont Jones Wed, 1 Feb 2006 09:47:57 -0700 + +glibc (2.3.5-12) unstable; urgency=low + + * debian/patches/glibc235-nis-netgrp.diff: New file to fix assertion + failures with NIS. (Closes: #322011) + * Switch to quilt to handle Debian patches. + - debian/control.in/main: add Build-Depends: quilt. + - Replace debian/rules.d/dpatch.mk by debian/rules.d/quilt.mk. + - Rename debian/patches/*.dpatch into debian/patches/*.diff. + - Move localedata patches into debian/patches/localedata/ + * debian/patches/localedata/cvs-localedata.diff: Update to latest CVS. + Among other changes: + - locales/mn_MN: Fix date_fmt. (Closes: #328831) + - locales/de_DE: Add transliterations for quoting characters. + (Closes: #235759) + - locales/ss_ZA locales/tn_ZA locales/ve_ZA locales/nso_ZA + locales/ts_ZA: New files. (Closes: #254417) + - locales/km_KH: New file. (Closes: #334762) + - locales/mg_MG: New file. (Closes: #271549) + - locales/sr_CS: New file. (Closes: #254993) + * debian/patches/locale-iso4217.diff: Update to latest CVS. + This includes changes from glibc235-localedata-sr_CS.diff, which + is no more needed. + * debian/patches/locale-iso639.diff: New file. + * debian/patches/locale-ku_TR.diff: New file, to provide a Kurdish + locale needed by d-i. This locale comes from upstream CVS, and has + been updated to the latest patch sent to BZ870. + * debian/patches/localedata/locale-eo_EO.diff: Apply minor updates to + this locale file. Add eo and eo.UTF-8 to SUPPORTED. (Closes: #233308) + * Import collation fixes and enhancements for localedef from + belocs-locales-bin. + * debian/patches/forward-backward-collation.diff: New file. Due to the + fixes in localedef, some bugs in code which was previously never run + did show up. (Closes: #310635) + * debian/patches/locale/locale-print-LANGUAGE.diff: New file, so that + locale displays the LANGUAGE environment variable when called without + argument. + * Add myself to Uploaders. + + -- Denis Barbier Sun, 15 Jan 2006 00:54:16 +0100 + +glibc (2.3.5-11) unstable; urgency=low + + [ Phil Blundell ] + * Apply patch from Colin Watson to add "--keep-existing" option to + locale-gen. (Closes: #298913) + * Also restart exim4 on upgrade. (Closes: #326554) + * debian/debhelper.in/libc.preinst: Clarify wording of message about + detection of services needing to be stopped before upgrade. + + [ GOTO Masanori ] + * debian/po/pt.po: New file, add Portuguese translation. + Patched by Rui Branco . (Closes: #339110) + + [ Clint Adams ] + * Patch from Lars Wirzenius to not rely on bash-like echo + behavior. (Closes: #207391). + * Add allowance for the 2005 leap second. (Closes: #345310) + + -- Clint Adams Sun, 1 Jan 2006 11:29:08 -0500 + +glibc (2.3.5-10) unstable; urgency=low + + [ GOTO Masanori ] + * debian/local/etc_init.d/glibc.sh: Change the last 'exit 0' to + ': exit 0' to not block sourcing. (Closes: #340147) + + [ Phil Blundell ] + * Merge patch from upstream CVS (courtesy Daniel Jacobowitz) to + fix weak alias related build problem on ARM. + * Merge patch from upstream CVS (courtesy Ulrich Drepper) to fix + strfry() crash. (Closes: #343365) + * Merge patch from upstream CVS (courtesy Roland McGrath and Anton + Blanchard) to fix problem with execute permissions on GOT when using + 64kB pages on PowerPC. (Closes: #344105) + * Require binutils 2.16.1cvs20051109-1 to ensure that i386 biarch + linking works properly. + * debian/script.in/kernelcheck.sh: Require kernel >= 2.4.0 on arm to + avoid llseek problem. (Closes: #324795) + * Also restart atd on upgrade. (Closes: #331293) + * Merge patch from upstream CVS (courtesy Ulrich Drepper) to fix + problems with accuracy of tanh and related functions, per request of + Rafael Laboissiere. (Closes: #328504) + * Add "validlocale" program (ex base-config) to locales package, per + request of Joey Hess. (Closes: #344954) + * sysdeps/hppa.mk: Add new /usr/hppa64-linux-gnu/include symlink, per + request of Matthias Klose. (Closes: #326583) + + [ Clint Adams ] + * Steal glibc-235-sparc-datastart.dpatch from Ubuntu. + * Steal ia64 libm symbol patch from Ubuntu. + * Compile with -g2 instead of -g1 on sparc. + + -- Clint Adams Wed, 28 Dec 2005 13:18:56 -0500 + +glibc (2.3.5-9) unstable; urgency=low + + [ Daniel Jacobowitz ] + * Downgrade priority of amd64 libraries on i386. + * Move packages from base to libs. + + [ Clint Adams ] + * Remove sparc64 TLS patch, and disable TLS for sparc64 build + (Closes: #340835, #341514). + * Add patch to fix build failure with __bind and other + socket-related symbols being already defined on + sparc (Closes: #342755). + * Add patch from Anton Blanchard to fix build failure with + __bind and other socket-related symbols being already + defined on powerpc (Closes: #343571). + * Replace amd64 sem_trywait patch from Kurt Roeckx's NMU with + fix from upstream glibc CVS (Closes: #339389). + * Add patch from Anton Blanchard to fix build failures with + "__moddi3" and friends being already defined on i386 + and powerpc (Closes: #339415). + * Bump Standards-Version to 3.6.2 and add myself to Uploaders. + + -- Clint Adams Sat, 17 Dec 2005 10:33:38 -0500 + +glibc (2.3.5-8.1) unstable; urgency=low + + * Non-maintainer upload. + * Rename sem_trywait to __new_sem_trywait in amd64 nptl code + so the alias works properly, and it can be build. + (Closes: #339389) + + -- Kurt Roeckx Sun, 27 Nov 2005 11:22:03 +0100 + +glibc (2.3.5-8) unstable; urgency=low + + * Add missing build dependency on libc6-dev-ppc64 on powerpc. + * Add patch to fix sparc64 TLS build failure, from Aurelien Jarno + (Closes: #335821). + * Also restart saslauthd at upgrades, from Philipp Hug (Closes: #334101). + * Merge .eh_frame terminator fix, by Richard Sandiford (Closes: #334112). + * Merge armeb support, from Lennert Buytenhek (Closes: #335116). + * Add LSB headers to glibc.sh and nscd init scripts, from Petter + Reinholdtsen (Closes: #335308, #335343). + * Remove obsolete mountkernfs, tmpfs, and devpts.sh files from debian/. + * Temporarily set hppa back to gcc 3.4, from Steve Langasek + (Closes: #326581). + * Re-enable libidn (Closes: #181025). + + -- Daniel Jacobowitz Sat, 12 Nov 2005 19:15:29 -0500 + +glibc (2.3.5-7) unstable; urgency=low + + [ GOTO Masanori ] + * debian/script.in/kernelcheck.sh: Drop real-i386 kernel support. + + [ Daniel Jacobowitz ] + * Build 64-bit packages on i386 - based on patches from both Ubuntu + and Andreas Jochens . + - Build depend on a biarch linux-kernel-headers package. + - Build depend on new libc6-dev-amd64 package. + - Conflict with amd64-libs to avoid stale libraries. + - Replace files from amd64-libs-dev. + - Use lib64 for 64-bit libraries on i386. + - Search lib64 for ldconfig. + - Install 64-bit headers in /usr/include/x86_64-linux-gnu. + * Remove obsolete references to NPTL as an add-on. + * Conflict with broken versions of libterm-readline-gnu-perl + (Closes: #326856, #326492). + * Merge makefile patch from Goswin Brederlow + to fail earlier if builds fail + (but omit the bit for make -k check) (Closes: #325460). + * Update debconf dependency to work with cdebconf (Closes: #331838). + * Merge MIPS fix from CVS (Closes: #329043). + * Do not complain about incompatible libraries in /etc/ld.so.conf + (Closes: #310047). + * Update hppa assembly for current CVS binutils. + * Use 8-byte-aligned buffers for doubleword FPU transfers on HPPA + (Closes: #333766). + + -- Daniel Jacobowitz Fri, 14 Oct 2005 14:18:22 -0400 + +glibc (2.3.5-6) unstable; urgency=low + + * GOTO Masanori + + * debian/script.in/kernelcheck.sh: Use sed instead of bash extension. + (Closes: #325373, #325471, #325504, #325511) + + -- GOTO Masanori Mon, 29 Aug 2005 12:40:32 +0900 + +glibc (2.3.5-5) unstable; urgency=low + + * GOTO Masanori + + * debian/debhelper.in/debhelper.mk: Don't expand debug-packages with + DEB_INDEP_REGULAR_PACKAGES. It causes binary-indep is unexpectedly + included. (Closes: #233390, #233391, #233392) + + * Add the correct new line. (Closes: #324450) + - debian/control.in/sparc64: Likewise. + - debian/control: Update. + + * Support Hurd again. (Closes: #324165) + - debian/sysdeps/gnu.mk: Rename to... + - debian/sysdeps/hurd.mk: ... this. + + * debian/local/usr_sbin/locale-gen: Don't break locale-gen when locale-def + warns errors. + + * debian/patches/glibc235-localedata-sr_CS.dpatch: New file, to fix + sr_CS localedef breakage. (Closes: #321580, #322655) + * debian/patches/glibc235-localedata-locales.dpatch: New file, to fix + mn_MN and sid_ET localedef breakage. (Closes: #321634) + + * debian/sysdeps/powerpc.mk: Enable PowerPC NPTL. + (Closes: #246689, #307984) + + * debian/README: Add the description about dropping __ctype_* symbol support + of static linked application/libraries in etch. (Closes: #324526) + + * debian/sysdeps/linux.mk: Check SETNJOBS environment variable to specify + the number of parallel make by users. + + * debian/sysdeps/depflags.pl: Add Conflicts: e2fsprogs (<< 1.35-7) + because new ldd cannot work with old e2fsprogs. (Closes: #324550) + + * debian/patches/glibc235-alpha-divqu.dpatch: New file, to fix alpha + divqu/remqu that does not return the correct result when their dividend + and divisor are the same and 63bit is 1. (Closes: #324455) + + * Hurd requires gcc-3.3 to compile instead of gcc-4.0. Requested by + Michael Banck . + - debian/sysdeps/hurd.mk: Change CC/BUILD_CC to gcc-3.3. + - debian/control.in/main: Build-Depends falls back to gcc-3.3. + - debian/control: Update. + + * Introduce bootstrap kernel version check script. + - debian/debhelper.in/libc.preinst: Move detection script to... + - debian/script.in/kernelcheck.sh: ...this, new file. + - debian/local/etc_init.d/glibc.sh: New file, it includes kernelcheck.sh. + - debian/debhelper.in/libc.postinst: Invoke /etc/init.d/glibc.sh as S01. + - debian/rules.d/debhelper.mk: Add replacing KERNEL_VERSION_CHECK and + EXIT_CHECK for libc.preinst and glibc.sh. + - debian/debhelper.in/libc.dirs: Create etc/init.d. + + * Don't use absolute path name. + - debian/debhelper.in/libc.dirs: Suppress the first slash. + - debian/debhelper.in/libc-pic.dirs: Likewise. + - debian/debhelper.in/nscd.dirs: Likewise. + - debian/debhelper.in/locales.dirs: Likewise. + + * Michael Banck : + - debian/patches/glibc235-gcc4-hurd.dpatch: New file, to build glibc + on Hurd with gcc-4.0. (Closes: #324549) + + -- GOTO Masanori Sun, 21 Aug 2005 12:33:42 +0900 + +glibc (2.3.5-4) unstable; urgency=low + + * The "hppa is important to someone, really - LaMont" release. + + * GOTO Masanori + + * d-i wants to remove libnss-files-udeb and libnss-dns-udeb dependency + from libc-udeb. Suggested by Joey Hess . + (Closes: #322506) + - debian/control.in/libc: Remove libnss-files-udeb libnss-dns-udeb + dependency. + - debian/control: Update. + + * Build-Depends fixes: + - debian/control.in/main: Change gcc-* dependency from | to ,. + Suggested by Andreas Jochens . + - debian/control.in/main: Add gcc-4.0 (>= 4.0.1-5) [hppa], because prior + versions cannot generate sane glibc binaries. + - debian/control: Update. + + * Enable libnss upgrade guard again. + (Closes: #321561, #321712, #321796, #322768, #323560) + - debian/debhelper.in/libc.preinst: Change guard to 2.3.5-1. + - debian/debhelper.in/libc.postinst: Likewise. + - debian/debhelper.in/libc.postinst: Fix to invoke NSS check again. + + * debian/debhelper.in/nscd.dirs: Add /var/db/nscd. + (Closes: #323352, #323487) + + * debian/debhelper.in/locales.prerm: Add purge to remove locale-archive. + (Closes: #321719) + + * debian/patches/00list: Drop glibc234-hppa-remove-mallocdef.dpatch. + It causes unconditional locking problem, because it was already replaced + by Carlos' new patches. Reported by LaMont Jones . + + * Add Depends: lib64gcc1 and provide lib64c-dev for 64bit -dev packages. + Suggested by Matthias Klose . (Closes: #323552) + - debian/control.in/sparc64: Likewise. + - debian/control.in/ppc64: Likewise. + - debian/control.in/s390x: Likewise. + - debian/control: Update. + + * debian/patches/glibc235-dl-execstack.dpatch: New file, to fix execstack + failed to check on kernel <= 2.4.18. (Closes: #321717, #321718, #323409) + + * Roland Stigge : + - debian/debhelper.in/glibc-doc.install: Install HTML documents + correctly. (Closes: #321740) + + -- GOTO Masanori Sat, 6 Aug 2005 06:52:42 +0900 + +glibc (2.3.5-3) unstable; urgency=low + + * The "Keep Debconf5 speed" and the "Welcome back the recent glibc to + unstable" release. + * Glibc bumps up from 2.3.2.ds1 to 2.3.5 on etch. + + * GOTO Masanori + + * Localedata update: + - debian/patches/cvs-localedata.dpatch: New file, to update localedata + to the latest cvs. Reported by Safir Secerovic , + Reviewed by Denis Barbier . (Closes: #312902) + - debian/patches/locale-iso4217.dpatch: New file, to fix localedef + breakage for tr_TR.ISO-8859-9. (Closes: #314855) + + * To make glibc-2.3.5 buidable with gcc-4.0: + - debian/patches/00list: Drop glibc234-hppa-full-nptl-2004-12-20.dpatch + line replaced by the new patches: glibc235-hppa-sysdeps.dpatch and + glibc235-hppa-lt.dpatch. It'll be removed when hppa unstable works + nicely. + - debian/patches/glibc235-gcc4-sparc-inline.dpatch: Update the patch + to compile sparc64. + - debian/patches/glibc235-gcc4-s390-inline.dpatch: New file, fix s390 + compilation breakage by changing static inline to auto inline for + dl-machine.h. + - debian/patches/glibc235-gcc4-alpha-profile.dpatch: New file, fix + alpha compilation breakage by removing strong_alias. + - debian/patches/glibc235-gcc4-hppa-profile.dpatch: New file, fix hppa + compilation breakage by removing strong_alias. + - debian/sysdeps/alpha.mk: Disabled __thread for static linked + executables. + - debian/control.in/main: Add Build-Depends: gcc-3.4 for powerpc and + m68k. + - debian/control: Regenerated. + + * To make glibc-2.3.5 buildable with gcc-3.4: + - debian/sysdeps/m68k.mk: New file, to use gcc-3.4 as CC and BUILD_CC + due to gcc-4.0 ICE. See #319312. + - debian/patches/glibc235-gcc34-m68k-seccomment.dpatch: New file, fix + m68k binutils comment parse error. + + * Introduce RUN_TESTSUITE for disabling make check, taken from Jeff + Bailey : + - debian/rules: Enable RUN_TESTSUITE in default. + - debian/rules.d/build.mk: Check RUN_TESTSUITE before invoking tests. + - debian/sysdeps/hppa.mk: Disable RUN_TESTSUITE because linuxthreads + cannot work correctly. + - debian/sysdeps/alpha.mk: Likewise. + + * Introduce loose locales version dependency to avoid locales version + mismatch for FTBFS architectures, taken from Jeff Bailey + (Closes: #204696, #308824): + - debian/locales-depver: New file, describes minimum locales dependency + version. It's renamed from locales-shlibver because it's not "shlib". + - debian/rules.d/debhelper.mk: Use LOCALES_DEP_VER to generate locales + dependency. + - debian/rules: Include debian/locales-depver. + + * debian/rules.d/build.mk: Add --without-selinux for nscd. It should be + removed after this version ASAP. + + * debian/sysdeps/depflags.pl: Drop Depends: libdb1-compat because it's + until sarge stuff. Suggested by Colin Watson . + (Closes: #318885) + + * debian/debhelper.in/nscd.dirs: New file, add /var/run/nscd dir to + invoke nscd correctly. (Closes: #314892) + + * debian/local/manpages/locale.gen.5: Fix typo, charsets -> charmaps. + (Closes: #312297, #318982) + + * debian/debhelper.in/libc.preinst: Remove dpkg --assert-support-predepends + check like base-passwrd, suggested by Bastian Blank . + (Closes: #316217) + + * debian/patches/locales-supported.dpatch: Don't apply to drop UTF-8@euro + locales from SUPPORTED. (Closes: #274491) + + * debian/debhelper.in/libc.preinst: Fix typo. (Closes: #306136) + * debian/debhelper.in/libc.postinst: Likewise. + + * Michael Banck : + - debian/patches/hurd-enable-ldconfig.dpatch: New file, to build ldconfig + again on Hurd. (Closes: #309489) + - debian/sysdeps/gnu.mk: Hurd-i386 needs --without-tls option to build. + - debian/patches/hurd-libpthread-indirect-loading.dpatch: New file, to + make libpthread load indirectly on Hurd. (Closes: #312488) + - debian/patches/hurd-ioctl-pfinet.dpatch: New file, to support part of + SIOCGIFHWADDR for pfinet on Hurd. (Closes: #295117) + + * Jeff Bailey : + - debian/patches/glibc235-hppa-sysdeps.dpatch: New file, to build hppa + linuxthreads locking problem and sysdeps correctly again. + - debian/patches/glibc235-hppa-lt.dpatch: New file, likewise. + + * Denis Barbier : + - debian/debhelper.in/locales.config: Use LANG=C for locale-dependent + commands. (Closes: #314717) + - debian/debhelper.in/locales.postinst: Likewise. + - debian/debhelper.in/locales.postinst: Fix repeated locale entry + duplication when at least a locale is defined twice in /etc/locale.gen. + (Closes: #271526) + + * Stephen Gildea : + - debian/debhelper.in/nscd.init: Provides a "status" option, fix the exit + status if the script is given an unsupported option. (Closes: #312404) + + * Serge Belyshev : + - debian/patches/glibc235-execvp-fix.dpatch: Fix execvp segv caused by + invalid free pointer. + + * This version fixes some bugs that are already marked as + fixed-in-experimental and explained the reason in this changelog. + (Closes: #144670, #185991, #258647, #276062, #279423, #280030, #298784) + (Closes: #300806, #300842, #304963, #305400, #305662, #305666, #309618) + (Closes: #311793, #313404, #314084, #315347, #315793) + + * This version fixes some bugs that are already confirmed as fixed + (fixed-in-experimental) in the experimental glibc: + - Can compile rpc/xdr.h with gcc-4.0. (Closes: #315198, #320963) + - Support posix_fadvise64 correctly on 2.4 kernel. + (Closes: #312406, #313219) + - Can static link with the recent toolchain changed with TLS/non-TLS + errno definition on amd64 and ia64. + (Closes: #317674, #317946, #318956, #318963, #319115) + - Fix mktime when setting a timezone value to AC_FUNC_MKTIME. + (Closes: #177940) + - Fix libc6-i686 to reexec init. (Closes: #270745) + + * This version fixes some bugs that are marked as fixed-upstream: + - Fix ucontext.h failure with g++-4.0 on ia64. + (Closes: #318429, #320240) + + - Missing icache flushing on PPC caused sometimes segv, and now cache + management is reworked and fixed. (Closes: #146489) + - Fix alpha atan() that gave wrong results for some operands. + (Closes: #210613) + - Fix PPC rint() that gave wrong result for negative arguments in the + rounding toward -inf and +inf mode. (Closes: #216800) + - Fix that the pmaplist frees the freed memory in xdr_pmaplist. + (Closes: #230219) + - Don't export unneeded symbol _fp_hw on s390. (Closes: #247681) + - Set locale correctly for generated threads in static linked binaries. + (Closes: #260221) + - Make g++ compilation with nptl pthread.h by changing initializers. + (Closes: #276309) + - Fix a race condition with pthread_cond_broadcast. (Closes: #276312) + - Fix re_exec() segv that caused on UTF-8 locales. + (Closes: #175163, #237681, #290551, #299137, #310443) + - Implement getcontext on alpha. (Closes: #293653) + - Fix an incorrect value of ceill and floorl on amd64. (Closes: #302458) + - Fix memory leaks in getaddrinfo/freeaddrinfo. (Closes: #304022) + - Fix mips/mipsel incomplete clobbered registers for syscalls. + (Closes: #304426) + - Support working sched_setaffinity on powerpc. (Closes: #311053) + - Support _SC_HOST_NAME_MAX in sysconf. (Closes: #314350) + - Fix pthread_rwlock_wrlock hangs with NPTL on amd64. (Closes: #314408) + + - Check timezone changes for localtime and friends. (Closes: #48184) + - Fix a race condition of sigaction and signal handler. + (Closes: #136990) + - Fix segmentation fault when invoking nscd -d. + (Closes: #156923, 245208) + - Support POSIX style strerror_r implementation. + (Closes: #159298, #169370, #182542, #202209) + - Enable to use short IPv4 address notation again. (Closes: #192091) + - Fix broken pthread_cleanup_push on Alpha. (Closes: #197988) + - Support POSIX message queues. (Closes: #202197, #280137) + - Don't use ?: in bits/mathinline.h. (Closes: #206015, #304500) + - Update Norwegian translation that fixes confusing text. + (Closes: #207266) + - Enable executable again for libc.so.*. (Closes: #215463, #264948) + - Improve putchar and io performance by changes to pthread locking code. + (Closes: #219205) + - Update sys/vm86.h. (Closes: #219476) + - Fix invalid __libc_dlclose() in nsswitch.c. (Closes: #222130) + - Support backtrace on ia64 and x86_64. (Closes: #235876) + - Fix nl_langinfo(ERA) returns NULL, not "". (Closes: #245836) + - Libintl.h is ready for some g++ compilation option. (Closes: #252753) + - Fix pthread_cond_timedwait and mutex hang with cancellation. + (Closes: #253303) + - Fix too long fraction digits handling in strtold(). (Closes: #260377) + - Fix some regexec() segv in UTF-8 locales. (Closes: #261135) + - Fix pthread_cond_timedwait with a outdated timespec destroys the + pthread_cond_t variable. (Closes: #261237) + - Declare EPOLLONESHOT in sys/epoll.h. (Closes: #261541) + - Fix returning invalid pointer when freeing valloc()-ed memory. + (Closes: #262782) + - Replace gcc-3.4 option for ppc64. (Closes: #263959) + - Fix zdump -v segv on ia64. (Closes: #266438) + - Support pthread_create with attributes. (Closes: #266507) + - Change __vector to __iovec for sys/io.h to prevent conflicts with + altivec. (Closes: #267442) + - Fix atan2 infinit loop on amd64. (Closes: #270823) + - Avoid memory leak for some gconv encoding by calling gconv_end. + (Closes: #274390) + - Fix mplayerplug-in crash closed by mozilla. (Closes: #275240) + - Fix invalid memory access of printf when its specifier combines + parameter number specification and floating point values. + (Closes: #277667, #312036) + - Don't touch unrelated bits in __feclearexcept on i386. + (Closes: #279294) + - Don't invoke unneeded cancellation if PTHREAD_CANCEL_DISABLE is set. + (Closes: #281775) + - Fix a race condition between pthread_create and pthread_exit. + (Closes: #282091, #292154) + - Fix for setfacl to handle many files in ntfw64. (Closes: #288710) + - Support large dev_t. (Closes: #289945, #299139) + - Use the correct ifndef __GNUC_PREREQ. (Closes: #315345) + + - Fix the indended first line of ldd output. (Closes: #209145, #276223) + - Fix misleading error message of ldd when kernel version is old. + (Closes: #224665) + - Fix typo of the language name in te_IN. (Closes: #276527) + - Replace old --help message that indicated glibcbug script. + (Closes: #315448) + + - Support IDN. (Closes: #181025) + - Support O_NOATIME. (Closes: #284131, #297010, #298488) + - The first day of a week in Finnish is Monday. (Closes: #288472) + + -- GOTO Masanori Sun, 17 Jul 2005 17:27:30 +0900 + +glibc (2.3.5-2) experimental; urgency=low + + * Debconf5 release. + + * GOTO Masanori + + * Merge glibc-2.3.4 branch to the main trunk for etch development. + + * These dpatches are removed from debian/patches because the similar + patches are already applied in the latest version: + - debian/patches/rtld-vdso-assertion.dpatch + - debian/patches/glibc232-sigsetjmp.dpatch + - debian/patches/hurd-weak-aliases.dpatch + - debian/patches/sched-update.dpatch + - debian/patches/glibc232-pthread-cancellation.dpatch + - debian/patches/glibc232-clock_settime.dpatch + + * The New dpkg-architecture changes: + - debian/rules: Replace DEB_HOST_BUILD_SYSTEM, use DEB_HOST_ARCH_OS. + Reported by Arthur Marsh . + (Closes: #315347, #315793) + - debian/control.in/main: Bump up Build-Depends: dpkg-dev (>= 1.13.5). + - debian/control: Updated. + - debian/debhelper.in/libc.preinst: Replace "dpkg + --print-installation-architecture", use "dpkg --print-architecture". + - debian/debhlper.in/libc.postrm: Likewise. + - debian/debhlper.in/libc.postinst: Likewise. + - debian/sysdeps/depflags.pl: Change checks from i386 to i486. + It also replaces -linux, use -linux-gnu. + + * Default compiler moves from gcc-3.3 to gcc-4.0: + - debian/rules: Use gcc-4.0 instead of gcc-3.3. (Closes: #315198) + - debian/control.in/main: Define Build-Depends: gcc-4.0. + - debian/control: Updated. + - debian/sysdeps/i386.mk: Replace depreciated "-mcpu", use "-mtune". + + * These dpatches are added to make glibc-2.3.5 buidable with gcc-4.0: + - debian/patches/glibc235-gcc4-cvs.dpatch: Fix some bad defintion of + internal for all architectures. + - debian/patches/glibc235-gcc4-elf.dpatch: Remove elf_machine_rel* + definitions for all architectures. + - debian/patches/glibc235-gcc4-jis0208.dpatch: Fix compilation breakage + for all architectures. + - debian/patches/glibc235-gcc4-wcstol_l.dpatch: Fix wcstol_l.c + compilation breakage for all 64bit architectures. + - debian/patches/glibc235-binutils216-ia64.dpatch: Fix _init/_fini was + not defined within procedure with binutils 2.16 for ia64. + - debian/patches/glibc235-gcc4-ia64-profile.dpatch: Fix compilation + breakage by removing strong_alias for ia64. + - debian/patches/glibc235-gcc4-ppc-procfs.dpatch: Fix ppc32 compilation + breakage by removing __uint128_t use. (Closes: #304963) + - debian/patches/glibc235-gcc4-arm-inline.dpatch: Fix arm compilation + breakage by changing static inline to auto inline for dl-machine.h. + - debian/patches/glibc235-gcc4-sparc-inline.dpatch: Fix sparc compilation + breakage by changing static inline to auto inline for dl-machine.h. + - debian/patches/glibc235-gcc4-sparc-mv8.dpatch: Fix obsolete gcc option + to replace newer standard one. + - debian/patches/glibc235-gcc4-mips-inline.dpatch: Fix mips compilation + breakage by changing static inline to auto inline for dl-machine.h. + - debian/patches/glibc235-gcc4-mips-sysdeps.dpatch: Fix mips compilation + breakage by changing large syscall arguments handling. + + * Move /etc/locale.alias to /usr/share/locale/locale.alias. + Don't install locale.alias.5. (Closes: #144670, #185991, #298784) + - debian/local/usr_sbin/locale-gen: Use /usr/share/locale/locale.alias + instead of /etc/locale.alias. + - debian/local/manpages/locale-gen.8: Delete reference to + locale.alias.5. + - debian/local/manpages/locale.gen.5: Likewise. + - debian/debhelper.in/locales.links: Remove file, don't link to /etc. + - debian/debhelper.in/locales.install: Install locale.alias under + /usr/share/locale, not /etc/. + - debian/debhelper.in/locales.manpages: Don't install locale.alias.5 + + * Add documents: + - debian/debhelper.in/libc.docs: Add CONFORMANCE and NAMESPACE. + + * Fix messages to add a patience message. (Closes: #305400) + - debian/local/usr_sbin/locale-gen + + * Move sprof from libc-prof to libc-dev. (Closes: #280030) + - debian/sysdeps/depflags.pl: Add Replaces: libc-dev (<< 2.3.5-2). + - debian/debhelper.in/libc-prof.install: Remove sprof install. + - debian/debhelper.in/libc-dev.install: Install sprof moved from -prof. + - debian/debhelper.in/libc-dev.install.hurd-i386: Likewise. + - debian/debhelper.in/libc-dev.manpages: Add sprof.1 install. + - debian/debhelper.in/libc-prof.manpages: Remove file, don't install + sprof.1. + + * Remove Depends: lib64gcc1 from libc6-sparc64. (Closes: #258647) + - debian/control.in/sparc64: Delete Depends: lib64gcc1. + - debian/control: Likewise. + + * Small change for libc6 upgrade problem. + - debian/debhelper.in/libc.postrm: Add plain messages and clean up. + + * Add conflicts to old initrd-tools for avoiding new glibc 2.3.4/5 ldd + blocks to generate initrd images. Suggested by Goswin von Brederlow + . + - debian/sysdeps/depflags.pl: Add conflicts initrd-tools (<< 0.1.79). + + * Add support PowerPC64, based on patches and suggestions by Bastian Blank + and Jeff Bailey : + - debian/control.in/main: Add Build-Depends: gcc-3.4 [powerpc] because + powerpc porting does not support gcc-4.0 currently. + - debian/control: Updated. + - debian/rules.d/control.mk: Add ppc64. + - debian/sysdeps/powerpc.mk: Added to support ppc64 target. + + * debian/sysdeps/hppa.mk: Add /usr/hppa64-linux-gnu/include symlinks for + dpkg-architecture changes. Reported by Matthias Klose + . (Closes: #313404) + + * A Costa . (Closes: #305662, #305666) + - debian/local/manpages/tzconfig.8: Fixed typo. + - debian/local/manpages/ldconfig.8: Likewise. + + * Clytie Siddall : + - debian/po/vi.po: Add the Vietnamese translation for locales. + (Closes: #309618, 311793) + + * Jens Seidel : + - debian/po/de.po: Fix typo. (Closes: #314084) + + -- GOTO Masanori Thu, 21 Apr 2005 16:52:36 +0900 + +glibc (2.3.5-1ubuntu17) dapper; urgency=low + + "Democracy is the process by which people choose the man who'll + get the blame." + - Bertrand Russell + + * Jeff Bailey + + * Fix FTBFS on sparc64 + - debian/sysdeps/sparc.mk: Add --without-tls --without-__thread + for sparc64. + + * Use 8-byte aligned buffers for doubleword transfer on HPPA + - debian/patches/hppa-fenv-align.dpatch: New file. + + * Implement glibc part of https://wiki.ubuntu.com//LocalesThatDontSuck + + * Disable locales package + - debian/control.in/main: Remove mention of locales package. + - debian/rules (DEB_INDEP_REGULAR_PACKAGES): Don't define locales + - debian/control: Regenerate. + + * Update locales binaries from Belocs locales packages. + - debian/patches/belocs-locale-update.dpatch: New file. + - debian/patches/belocs-test.dpatch: New file. + + -- Jeff Bailey Wed, 30 Nov 2005 10:41:50 -0500 + +glibc (2.3.5-1ubuntu16) dapper; urgency=low + + "A life without adventure is likely to be unsatisfying, but a life in + which adventure is allowed to take whatever form it will is sure to + be short." + - Bertrand Russell + + * Jeff Bailey + + * Fix symbol problems on sparc32/sparc64. + - debian/patches/ubuntu-new-binutils.dpatch: Same patch as needed + for powerpc. + + * Fix stricted iitlbp handling on hppa: + - debian/patches/hppa-iitlbp.dpatch: New file. + - debian/patches/00list: Update. + + * Don't do parallel on hppa, it gets sad. + - debian/sysdeps/hppa.mk: Force NJOBS to be 1. + + -- Jeff Bailey Thu, 24 Nov 2005 16:47:32 -0500 + +glibc (2.3.5-1ubuntu15) dapper; urgency=low + + * Jeff Bailey + + * Fix symbol problems on ia64. + - debian/patches/ubuntu-new-binutils.dpatch: Backport HJ Lu's + patch from CVS head for libm symbols. + + -- Jeff Bailey Wed, 23 Nov 2005 09:19:22 -0500 + +glibc (2.3.5-1ubuntu14) dapper; urgency=low + + * Jeff Bailey + + * Restore accidentally dropped amd64 patch. + - debian/patches/ubuntu-new-binutils.dpatch: Drop versioned + sem_trywait for amd64. + + -- Jeff Bailey Tue, 22 Nov 2005 13:24:30 +0000 + +glibc (2.3.5-1ubuntu13) dapper; urgency=low + + The "Where has all my time gone?" release. + + * Jeff Bailey Wed, 16 Nov 2005 21:39:17 -0500 + +glibc (2.3.5-1ubuntu12) breezy; urgency=low + + * Jeff Bailey + + * Add Serbian locale. + - debian/patches/locale-sr_CS.dpatch: New file + - debian/patches/00list: Update + + * Add Kurdish Locale. + - debian/patches/ku_TR.dpatch: New file + - debian/patches/00list: Update + + -- Jeff Bailey Thu, 6 Oct 2005 11:09:58 -0400 + +glibc (2.3.5-1ubuntu11) breezy; urgency=low + + * Jeff Bailey + + * Make langpacks less heavy to use. + - debian/patches/ubuntu-altlocaledir.dpatch: Update + Thanks to Martin Pitt for this patch! (Ubuntu# 11344) + + * Make sure services using NSS are restarted. + - debian/debhelper.in/libc.postinst: Set guard to 2.3.5-1 + (Ubuntu #13658) + + * Add Asturian locale from Spain + - debian/patches/ast_ES.dpatch: New file + - debian/patches/00list: Upate + Thanks to Jordi Mallach for this locale! + + * Protect against macro expansion in __memset_1 + - debian/patches/ubuntu-12864.dpatch: New file + - debian/patches/00list: Update + Thanks to Matthias Klose for this patch! (Ubuntu #12864) + + * Avoid segfault in initstate_r + - debian/patches/ubuntu-10245.dpatch: New file + - debian/patches/00list: Update + Thanks to Alex Mauer for reporting this! (Ubuntu #10245) + + * The French weekday starts on Monday. + - debian/patches/fr_FR.dpatch: New File + - debian/patches/00list: Update + Thanks to Sebastien Bacher for reporting this! (Ubuntu #12794) + + -- Jeff Bailey Thu, 1 Sep 2005 20:19:50 -0400 + +glibc (2.3.5-1ubuntu10) breezy; urgency=low + + * Jeff Bailey + + * Fix Missing Build Depend + - debian/control.in/main: Build-dep on libc6-dev-amd64 [i386] + - debian/control: Regenerate. + + -- Jeff Bailey Fri, 19 Aug 2005 17:48:47 +0000 + +glibc (2.3.5-1ubuntu9) breezy; urgency=low + + * Jeff Bailey + + * Make sure the header files for certain biarch setups are installed. + - debian/rules.d/debhelper.mk: Add call to extra_debhelper + - debian/sysdeps/i386.mk: Set extra_debhelper to cause the include + files to be added. + Add --includdir=/usr/include/x86_64-linux-gnu for amd64 pass. + + -- Jeff Bailey Fri, 19 Aug 2005 01:50:59 +0000 + +glibc (2.3.5-1ubuntu8) breezy; urgency=low + + * Jeff Bailey + + * Enable i386/amd64 biarch build. + - debian/patches/00list: Move amd64-lib patch to ... + - debian/patches/00list.amd64: ... here. This + installs our linker in /lib against the abi spec. We need + to install it in /lib64 in order for biarch to work. + - debian/control.in/amd64: New file + - debian/sysdeps/i386: Build amd64 pass. Use ldd from amd64 pass + instead of i386 pass. + - debian/rules.d/control.mk: Use amd64 + - debian/control regenerate. + + * Fix HPPA bug: + - debian/patches/00list: Disable glibc234-hppa-remove-mallocdef + Thanks to LaMont Jones / Carlos O'Donnell + + -- Jeff Bailey Thu, 11 Aug 2005 03:15:58 +0000 + +glibc (2.3.5-1ubuntu7) breezy; urgency=low + + * Jeff Bailey + + * Fix hppa build + - debian/sysdeps/hppa.mk: Make /usr/hppa64-linux-gnu before using it. + + * Make sure TLS information isn't stripped off + - debian/control.in/main: Build-dep on binutils >= 2.16.1-0 + (Fixes at least busybox-cvs, and possibly others) + - debian/control: Regenerate + + * Run the testsuite on Sparc + - debian/sysdeps/sparc.mk: Set libc_configure_build=sparcv9-linux + set sparc64_configure_build=sparc64-linux + + * Make some garbage collectors happier on Sparc + - debian/patches/glibc-235-sparc-datastart.dpatch: Define + __data_start. + - debian/patches/00list: Add it. + + -- Jeff Bailey Tue, 14 Jun 2005 14:13:33 +0000 + +glibc (2.3.5-1ubuntu6) breezy; urgency=low + + "Hold infinity in the palm of your hand..." -wb + + * Jeff Bailey + + * Fix ppc64 build + - debian/control.in/main: Add dependancy on libc6-dev-ppc64 + - debian/control: Regenerate + + -- Jeff Bailey Tue, 14 Jun 2005 10:11:54 +0000 + +glibc (2.3.5-1ubuntu5) breezy; urgency=low + + The " remember, it's c-h-a-i-n in toolchain :)" release. + + * Jeff Bailey + + * Update for binutils 2.16.1 + - debian/patches/glibc-235-ia64-binutils.dpatch: New file + - debian/patches/glibc-235-ppc-gcc34.dpatch: New file + (Thanks to Charles Majola for helping with this patch) + - 00list: Use them + + * More coping with dpkg-architecture changes + - debian/sysdeps/hppa.mk: Provide /usr/hppa64-linux-gnu/include + + * Drop support for Neanderthal Sparc systems + - debian/sysdeps/sparc.mk: Drop sparcv9 package + Default to nptl for main build and sparcv9b + - debian/control.in/opt: Drop sparcv9 package + - debian/control: Regenerate + + * Disable testsuite on hppa + - debian/rules.d/build.mk: Add check for RUN_TESTSUITE curpass + variable. + - debian/sysdeps/hppa: Set RUN_TESTSUITE to no. + + -- Jeff Bailey Mon, 13 Jun 2005 13:27:16 +0000 + +glibc (2.3.5-1ubuntu4) breezy; urgency=low + + The "Because the ppc build was just too fast..." Release. + + * Jeff Bailey + + * Enable ppc64 + - debian/rules.d/control.mk: Merge in ppc64 into the control file. + - debian/sysdeps/powerpc: Uncomment ppc64 lines. + - debian/control.in/main: Require gcc-3.4 3.4.4-0ubuntu4 on ppc + + -- Jeff Bailey Fri, 27 May 2005 16:11:26 +0000 + +glibc (2.3.5-1ubuntu3) breezy; urgency=low + + The "Come out come out wherever you are!" Release. + + * Jeff Bailey + + * More copping with dpkg-architecture changes + - debian/sysdeps/depflags.pl: Handle linux-gnu. + - debian/README: Change linux.mk reference to linux-gnu.mk + + * Prune .svn directories that were added by accident. + + * HPPA Take N... + - debian/sysdeps/hppa.mk: Disable TIMEOUTFACTOR for now, it + seems to hang the testsuite. + + * Loosen dependancy of locales on glibc. + - debian/locales-shlibver: New file based on shlibver ... + - debian/rules: ... include it here. + - debian/rules.d/debhelper.mk: Use LOCALES_DEP_VER to generate + locales dependancy. + + * Bring back useful debugging information + - debian/sysdeps/sparc.mk: Use -g2 rather than -g0 to work around bug. + - debian/sysdeps/ia64.mk: Likewise + - debian/sysdeps/linux-gnu.mk: Likewise + - debian/sysdeps/i386.mk: Likewise + - debian/sysdeps/amd64.mk: Likewise + + + -- Jeff Bailey Thu, 19 May 2005 13:21:04 +0000 + +glibc (2.3.5-1ubuntu2) breezy; urgency=low + + The "Join us now and share the software" Release. + + * Jeff Bailey + + * Cope with changes to dpkg-architecture + - debian/sysdeps/linux.mk: Rename to ... + - debian/sysdeps/linux-gnu.mk: ... this + + * "Be relaxed in what you receive" - RIPJP1998 + - debian/rules: Map older dpkg-architecture output + from "linux" to "linux-gnu" + + -- Jeff Bailey Wed, 18 May 2005 14:14:20 +0000 + +glibc (2.3.5-1ubuntu1) breezy; urgency=low + + This is the " *WHAT*EVER* :-)" release... + + * Jeff Bailey + + * Merge changes from Debian. + - Leave shlibver at 2.3.4-1, no new symbols were added. + - glibc232-tls-crashfix replaces ubuntu-26 patch. + - Provide nptl headers on systems where it's not the default + in /usr/include/nptl (Ubuntu BZ#3182) + + * Build with gcc-3.4 on all archs. + - debian/control.in/main: Set gcc-3.4 [!ia64], + gcc-3.4 (>= 3.4.3-6ubuntu1)[ia64], g++-3.4 + - debian/rules: Set BUILD_CC to gcc-3.4 + Force g++ to g++-3.4 + - debian/rules.d/build.mk: set CXX in configparms, + pass it on the configure commandline. + - debian/sysdeps/i386.mk: Enable bug work around for gcc-3.4 + Use -mtune instead of -mcpu. + - debian/sysdeps/hppa.mk: Likewise + - debian/sysdeps/sparc.mk: Likewise + - debian/sysdeps/amd64.mk: Remove gcc-3.4 hardcode + - debian/sysdeps/powerpc.mk: Likewise + - debian/sysdeps/ia64.mk: Likewise + + * Build on hppa again, welcome back! + - debian/patches/glibc-235-hppa-configure.dpatch: New file. + - debian/patches/glibc-235-hppa-lt.dpatch: New file. + - debian/patches/glibc-235-hppa-sysdeps.dpatch: New file. + - debian/patches/00list: Update, prune glibc234-hppa-linesep + and glibc234-hppa-full-nptl-2004-12-20. + - debian/sysdeps/hppa.mk: Force disable tls and __thread. + set TIMEOUTFACTOR=10 to allow the testsuite to finish correctly. + Thanks for Carlos O'Donell and LaMont Jones for helping with this. + + -- Jeff Bailey Tue, 17 May 2005 21:26:39 +0000 + +glibc (2.3.5-1) experimental; urgency=low + + * GOTO Masanori + + * New upstream release. + - debian/shlibver: Bump up to 2.3.5-1. + + * Drop patches: + - debian/patches/hurd-malloc.dpatch: Removed, it's already applied in + the upstream source. + + * Merge with 2.3.2.ds1-21, added: + - debian/patches/linuxthreads-sizefix.dpatch: Added. + - debian/po/fi.po: Added. + - debian/patches/glibc23-mips-lazy-eval.dpatch: Added, drop dl-machine.h + because the recent upstream should not need such change. + - debian/patches/glibc232-tls-crashfix.dpatch: Added, remove some parts + that are applied in the recent version. + + * Merge with 2.3.2.ds1-21, changed: + - debian/debhelper.in/libc.preinst: Fix typo, proofreading. + - debian/debhelper.in/libc.preinst: Add export LC_ALL=C. + - debian/patches/00list: Update. + + * Update linuxthreads size fix for not only ia64, but also alpha, + amd64, i386, powerpc, s390, sh and sparc. + - debian/patches/linuxthreads-sizefix.dpatch: Update. + + * Fix more libc6 upgrade problem from old <= 2.3.4-1: + - debian/debhelper.in/libc.postinst: Don't use uname -m, use + dpkg --print-installation-architecture. Hwcappkgs mechanism does not + work on (ex:) install architecture: i386, kernel architecture: amd64. + - debian/debhelper.in/libc.postrm: Likewise. + + * Support libc6-dev NPTL static libraries and headers into + /usr/lib/nptl and /usr/include/nptl. (Closes: #276062, #279423) + - debian/rules.d/build.mk: Add installation code from tmp-nptl to + tmp-libc. + - debian/debhelper.in/libc-dev.install: Add tmp-libc/usr/lib/nptl*. + + -- GOTO Masanori Sun, 10 Apr 2005 14:02:19 +0900 + +glibc (2.3.5-0ubuntu3) breezy; urgency=low + + * Jeff Bailey + + - debian/sysdeps/amd64.mk: Hardcode gcc-3.4 + - debian/debhelper.in/libc.preinst: Fix pasto for ppc kernel check + also add check for ia64 kernel. + - debian/control.in/main: Build-dep on gcc-3.4 for amd64. + + -- Jeff Bailey Thu, 21 Apr 2005 10:39:41 -0400 + +glibc (2.3.5-0ubuntu2) breezy; urgency=low + + * Jeff Bailey + + * ia64 is now NPTL only + - debian/control.in/main: Require gcc-3.4 for ia64 + - debian/sysdeps/ia64.mk: Build only one pass, make it nptl. + + * Fix currency definition for Turkey, New Lira (Ubuntu BZ#9743) + - debian/ubuntu-9743-tr_TR.dpatch: New file + + -- Jeff Bailey Thu, 21 Apr 2005 02:37:32 -0400 + +glibc (2.3.5-0ubuntu1) breezy; urgency=low + + * Jeff Bailey + + * Update to new version, merge updates from Debian. + - debian/patches/00list: Remove hurd-malloc. + - debian/control.in/main: Depend on linux-kernel-headers >= 2.6.11.2-0 + - debian/sysdeps/depflags.pl: Likewise. + - debian/sysdeps/powerpc: New file for ppc64 and nptl. + - debian/control.in/ppc64: New file for ppc64. + - debian/control.in/sparc64: Add trailing space to make control happy. + - debian/rules.d/control.mk: Add in ppc64 control bits. + - debian/rules.d/build.mk: Forcably disable selinux for now. + - debian/debhelper.in/libc.preinst: Require 2.6 kernel for ppc. + - debian/control.in/main: Require gcc-3.4 for powerpc. + + * Disable PPC64 bits, pending toolchain update. + + -- Jeff Bailey Thu, 14 Apr 2005 00:33:04 +0000 + +glibc (2.3.4-3) experimental; urgency=low + + * GOTO Masanori + + * The complete libc6 installation breakage is fixed when hwcap packages + (libc6-i686 and libc6-sparcv9/sparcv9b) is installed. It introduced + /etc/ld.so.hwcappkgs to track hwcap packages. + - debian/debhelper.in/libc.postinst: Create /etc/ld.so.hwcappkgs if + such file is not existed. Check hwcap packages and decide to keep + /etc/ld.so.nohwcap. Put special ld.so.nohwcap string when the + downgraded version does not support ld.so.hwcappkgs. + - debian/debhelper.in/libc-otherbuild.postinst: When it's configured, + check /etc/ld.so.hwcappkgs and decides to keep /etc/ld.so.nohwcap. + - debian/debhelper.in/libc-otherbuild.postrm: When it's removed, + check /etc/ld.so.hwcappkgs and search other hwcap package's version + consistency. Then it decides to remove /etc/ld.so.nohwcap. + - debian/rules.d/debhelper.mk: Include "libc-" into OPT string + replacement. + + -- GOTO Masanori Tue, 29 Mar 2005 17:22:25 +0900 + +glibc (2.3.4-2) experimental; urgency=low + + * GOTO Masanori + + * Fix libc6 installation breakage when old libc6 and libc6-i686 was + installed, and it's replaced with a new libc6. This fix is limited + for i686 optimized package, not for sparc multiple opt packages. + (Closes: #300806, #300842) + - debian/debhelper.in/libc.postinst: Add check for the existence of + multiple optimized packages. + - debian/rules.d/debhelper.mk: Add the replace code from CURRENT_VER + to $(DEB_VERSION) for libc.postinst. Install libc-otherbuild.postrm. + - debian/debhelper.in/libc-otherbuild.postrm: Added to remove + unneeded ld.so.nohwcap for single optimized package. + + -- GOTO Masanori Tue, 22 Mar 2005 11:17:32 +0900 + +glibc (2.3.4-1) experimental; urgency=low + + * GOTO Masanori + + * Reflect from glibc-snapshot package 2.3.4-0.3.snapshot20041220.2. + + * Add glibc-libidn package handling for the following files: + - debian/sysdeps/gnu.mk + - debian/sysdeps/linux.mk + - debian/sysdeps/kfreebsd-gnu.mk + - debian/rules + + * Add separated shlibver file: + - debian/rules: Include debian/shlibver. + - debian/shlibver: Bump up shlibver to 2.3.4-1. + + * Delete removed file info/libc-dir-add.info: + - debian/debhelper.in/glibc-doc.install + - debian/rules.d/build.mk + + * These dpatches are added in debian/patches/: + - glibc234-alpha-xstat.dpatch: Fix alpha compilation failure when + kernel headers < 2.6.4 is used. + - glibc234-hppa-linesep.dpatch: Add to fix hppa compilation failure. + - glibc234-hppa-remove-mallocdef.dpatch: Add to + fix hppa compilation breakage until ldcw lock change is introduced. + This patch will be removed when ldcw patch is revised to apply. + - glibc234-m68k-linuxthreads-fPIC.dpatch: Add to fix m68k compilation + warnings to remove linuxthreads o-iterator. + - glibc234-hppa-full-nptl-2004-12-20.dpatch: Remove in-cvs parts, + apply the remained stuff for hppa, except for ldcw lock change. + This file is renamed from 50_glibc232-hppa-full-nptl-2003-10-22.dpatch. + + * These dpatches are modified/replaced with the newer patches in + debian/patches/: + - glibc-i686-timing.dpatch: Modify makefile. Fix i686 library breakage. + - glibc23-cmov.dpatch: Drop additional TLS parts. + - glibc23-sse-oldkernel.dpatch: Regenerated. + - hppa-drop-utimes.dpatch: Regenerated. + - ldconfig.dpatch: The previous patch seems being wrong because it + supresses all warnings about error. The new patch I introduced should + not warn during debootstrap, and works finely during normal operation. + - ldd.dpatch: Regenerated. + - ldso-disable-hwcap.dpatch: Regenerated. + - locale-no_NO.dpatch: Drop locale.alias part which is already applied. + - makeconfig.dpatch: Regenerated. + - 50_glibc232-arm-dwarf2-buildfix.dpatch: Modify to fix sjlj compilation. + - 50_glibc232-m68k-dwarf2-buildfix.dpatch: Likewise. + + * These dpatches are currently suspended to apply (those entries in + 00list are commented out) with various reasons, they need update or + confirmation: + - 30_glibc232-base.dpatch: If this patch is needed, the another + binutils related problem should be occured. It's disabled for a + while, then remove iff no problem is reported. + - alpha-pic.dpatch: #175511 said the upstream should have another + different fix. After confirmation, it should be removed. + - arm-output-format.dpatch: I believe the recent arm glibc should work + without this patch. If arm still has problem, then enable it. + - glibc232-globfree-clear.dpatch: The latest upstream has gl_pathv=NULL + part, bug gl_pathc=0 part. I think the current code is harmless. + It needs confirmation to Jeff Licquia. + - translation-fr.dpatch: The upstream rejects this wishlist bug. After + confirmation, it'll be removed. + - mips-asm-unistd.dpatch: I need to look at the result of the current cvs + unistd.h. + - hurd-enable-ldconfig.dpatch: Disabled currently. + + * These dpatches are currently applied, but it may be removed from + 00list as until sarge stuff: + - libgcc-compat-all.dpatch: It'll be removed in future. + - libgcc-compat-other.dpatch: Likewise. + + * These dpatches are currently suspended to apply from 00list because + we plan to be removed after sarge release: + - glibc23-ctype-compat.dpatch: Until sarge stuff. + - glibc23-errno-hack.dpatch: Until sarge stuff. + - glibc23-errno.dpatch: This patch should not be considered permanent; + it may be one of until sarge stuff. + - glibc23-function-compat.dpatch: Until sarge stuff. + - locales-supported.dpatch: Debian specific, until sarge stuff. + + * This dpatch is not used currently: + - 10_cvs.dpatch + + * These dpatches are removed from debian/patches/ because they are already + in upstream cvs: + - 11_cvs_locales.dpatch + - 11_shlib-lds.dpatch + - 51_glibc232-hppa-dist.dpatch + - 51_glibc232-hppa-nopltrel.dpatch + - 51_glibc232-hppa-profiling.dpatch + - 52_glibc233-hppa-feupdateenv.dpatch + - 90_glibc232-statvfs.dpatch + - 90_glibc232-timezones.dpatch + - alpha-crti.dpatch + - alpha-rtsigaction-fix.dpatch + - fno-unit-at-a-time.dpatch + - glibc23-dlclose-l_opencount.dpatch + - glibc23-libio-compat.dpatch + - glibc23-powerpc-sigcontext.dpatch + - glibc23-sparc-pread64.dpatch + - glibc232-catchsegv-insecure-temp.dpatch + - glibc232-hppa-unwindinfo.dpatch + - glibc232-ia64-unwindinfo.dpatch + - glibc232-iconv-ucs2-unalign.dpatch + - glibc232-mips-dl-machine.dpatch + - glibc232-misc-syslog.dpatch + - glibc232-nptl-posix-timer.dpatch + - glibc232-ppc32-nanosecond.dpatch + - glibc232-remove-vsyscall.dpatch + - glibc232-sparc64-softfp.dpatch + - glibcbug.dpatch + - hppa-syscall.dpatch + - hurd-cleanup.dpatch + - hurd-exit-attr-hidden.dpatch + - hurd-i386-hwcap.dpatch + - hurd-libc-lock.dpatch + - hurd-utmp-file.dpatch + - locale-byn_ER.dpatch + - locale-et_EE.dpatch + - locale-ro_RO.dpatch + - locale-strfmon.dpatch + - mips-sgidefs.dpatch + - nptl-io-locking.dpatch + - nptl-page-align.dpatch + - nptl-pthread-c++.dpatch + - nptl-pthread-create-attr.dpatch + - nptl-pthread-once.dpatch + - pthread-cleanup.dpatch + - s390-backtrace.dpatch + - s390-pthread-fpic.dpatch + - syslog-locale.dpatch + + * Hurd update: + - debian/patches/hurd-string.dpatch: Removed, it's already in cvs. + - debian/patches/00list.hurd-i386: Removed. + - debian/patches/hurd-malloc.dpatch: Add to fix Hurd build fix, patch + from Michael Banck . + + -- GOTO Masanori Fri, 18 Mar 2005 09:41:49 +0900 + +glibc (2.3.2.ds1-22) unstable; urgency=medium + + * Daniel Jacobowitz + + - debian/patches/rtld-vdso-assertion.dpatch: Fix an assertion failure + running /lib/libc.so.6. + - debian/rules.d/debhelper.mk: Mark runnable libraries +x again. + + -- Daniel Jacobowitz Tue, 10 May 2005 15:11:53 -0400 + +glibc (2.3.2.ds1-21) unstable; urgency=low + + * GOTO Masanori + + - debian/debhelper.in/libc.manpages: Add tzconfig.8. Reported by Matthijs + Mohlmann . (Closes: #182981) + - debian/local/manpages/iconv.1: Escape hyphens for Unicode environments. + Patched by Lars Wirzenius . (Closes: #292013) + + - debian/po/pl.po: Add Polish debconf translation. Patched by Emilian + Nowak . (Closes: #294444) + + -- GOTO Masanori Mon, 14 Feb 2005 09:26:26 +0900 + +glibc (2.3.2.ds1-20ubuntu13) hoary; urgency=low + + * debian/rules.d/control.mk: Mark debian/control target as phony. + + -- Colin Watson Wed, 23 Mar 2005 18:56:07 +0000 + +glibc (2.3.2.ds1-20ubuntu12) hoary; urgency=low + + * Martin Pitt + + - debian/patches/ubuntu-altlocaledir.dpatch: Revert new time + comparison result caching from 2.3.2.ds1-20ubuntu11 since this + breaks if applications use several translation domains from both + /usr/share/locale and /usr/share/locale-langpack/. Now just avoid + to stat64() files when we already know that they don't exist. + This reduces the number of stat calls at least a bit. + (Ubuntu #7835) + - debian/local/usr_sbin/remove-language-locales: Never remove the + system default locale specified in /etc/environment. + (Ubuntu #8000) + + * Jeff Bailey + + - debian/patches/ubuntu-7897-threading.dpatch: Take various patches + from upstream to resolve subtle incompatabilities between + linuxthreads headers and NPTL compiling. + Thanks to Gerald Hochegger for narrowing the patch down. + (Ubuntu #7897) + - debian/patches/11_cvs_locales.dpatch: Update from CVS HEAD + to get current locale information. + - debian/patches/11_cvs_timezone.dpatch: Update from tzdata2005c. + - debian/patches/ubuntu-26-tls.dpatch: Let xmms work on + machines with nVidia binary drivers and tls. (Ubuntu #26) + - debian/patches/ubuntu-5604-iso3166.dpatch: Serbia and Montenegro + was Yugoslavia. (Ubuntu #5604) + + - debian/patches/00list: Disable locale-et_EE, provided by CVS update. + Disable 90_glibc232-timezones, add 11_cvs_timezone + Add ubuntu-26-tls, ubuntu-5604-iso3166. + + * Colin Watson + + - debian/debhelper.in/locales.config: Be careful to set + LC_COLLATE=C while sorting locale lists. + Sort/uniq locales read from locale.gen to avoid duplicate + locales reproducing indefinitely. + Avoid generating multiple identical UTF-8 locales for similar + legacy locales. + Write user-visible messages to stderr, not stdout; the latter + belongs to debconf. + + -- Jeff Bailey Wed, 23 Mar 2005 13:08:26 +0000 + +glibc (2.3.2.ds1-20ubuntu11) hoary; urgency=low + + * debian/local/usr_sbin/install-language-locales: + - Reworked updating of /etc/locale.gen to not sort the file, but only + append not yet existing locales. + - Use --keep-existing for locale-gen. + * debian/patches/ubuntu-altlocaledir.dpatch: Cache time comparison result + instead of stat()ing the files over and over again. (Ubuntu #7487) + + -- Martin Pitt Mon, 14 Mar 2005 23:22:54 +0000 + +glibc (2.3.2.ds1-20ubuntu10) hoary; urgency=low + + * debian/local/usr_sbin/locale-gen: Add --keep-existing option, so that + successive calls to locale-gen (e.g. by language packs) don't take + O(n^2) time. + * debian/local/manpages/locale-gen.8.sgml: Document --keep-existing. + * debian/local/usr_sbin/install-language-locales: Use locale-gen + --keep-existing. + + -- Colin Watson Thu, 10 Mar 2005 17:11:40 +0000 + +glibc (2.3.2.ds1-20ubuntu9) hoary; urgency=low + + * debian/local/usr_sbin/install-language-locales: Fixed grepping of locales + to install if /etc/locale.gen is not present. + + -- Martin Pitt Thu, 3 Mar 2005 18:44:16 +0000 + +glibc (2.3.2.ds1-20ubuntu8) hoary; urgency=low + + * Don't use parallel make, breaks from time to time. + + -- Matthias Klose Thu, 10 Feb 2005 13:23:48 +0000 + +glibc (2.3.2.ds1-20ubuntu7) hoary; urgency=low + + * debian/patches/ubuntu-multiarch.dpatch: Added Tollef Fog Heen's multiarch + support. + + -- Martin Pitt Wed, 9 Feb 2005 11:50:25 +0100 + +glibc (2.3.2.ds1-20ubuntu6) hoary; urgency=low + + * Updated patch ubuntu-altlocaledir.dpatch: Also take the very first found + domain into account when comparing timestamps. (Ubuntu #6048) + + -- Martin Pitt Tue, 8 Feb 2005 16:26:36 +0100 + +glibc (2.3.2.ds1-20ubuntu5) hoary; urgency=low + + * Updated patch ubuntu-altlocaledir.dpatch to fix some language pack bugs: + - Fix domain lookup for the very first string, which did not look in all + available /usr/share/locale-langpack/ locales before. (Ubuntu #6047) + - Fix mtime timestamp comparison to actually pick the latest (not the + last) one. (Ubuntu #6048) + - Changed the looping over all translation domains to be consistent with + the other code. + - Changed stat() to stat64() to be consistent with the other code. + + -- Martin Pitt Tue, 1 Feb 2005 17:32:03 +0000 + +glibc (2.3.2.ds1-20ubuntu4) hoary; urgency=low + + * debian/patches/pthread-sigsetjmp.dpatch: Fix __sigsetmask function + declaration. Triggered by gcc-4.0. + + -- Matthias Klose Tue, 1 Feb 2005 13:57:22 +0100 + +glibc (2.3.2.ds1-20ubuntu3) hoary; urgency=low + + * debian/local/usr_sbin/: Added scripts install-language-locales, + remove-language-locales which generate/remove all supported UTF-8 locales + (ignoring @euro ones) for a given language code. + * debian/local/manpages/: Added install-language-locales.8, + remove-language-locales.8 + * debian/debhelper.in/locales.install, debian/debhelper.in/locales.manpages: + install the scripts and manpages + + -- Martin Pitt Mon, 24 Jan 2005 16:24:08 +0100 + +glibc (2.3.2.ds1-20ubuntu2) hoary; urgency=low + + * debian/debhelper.in/locales.config: Don't attempt to trap ERR, which is + not portable (closes: Ubuntu #5458). + + -- Colin Watson Wed, 19 Jan 2005 12:01:41 +0000 + +glibc (2.3.2.ds1-20ubuntu1) hoary; urgency=low + + * Merge 2.3.2.ds1-20 changes. + Backout the change to move the amd64 lib64 symlinks from base-files + to glibc. Requires more work. + + -- Matthias Klose Sat, 8 Jan 2005 20:27:52 +0100 + +glibc (2.3.2.ds1-20) unstable; urgency=high + + * GOTO Masanori + + - debian/patches/hppa-drop-utimes.dpatch: Fix sudo breakage because + system call utimes() is not defined on hppa. Patched by Randolph Chung + . (Closes: #284449) + + - Fix ia64 unwind FTBFS. Patched by Matthias Klose : + - debian/patches/glibc232-ia64-unwindinfo.dpatch: Modify Makeconfig + which unconditionally set the libunwind macro to -lunwind, until the + it's safe again to regenerate the configure script, on advice of + Jeff Bailey. (Closes: #284563) + - debian/control.in/main: Tighten build dependency on ia64 to + gcc-3.3_3.3.5-5. + - debian/control: Likewise. + + - debian/patches/librt-mips.dpatch: Update to provide clock_{set,get}time + with versioned symbol both GLIBC_2.0 and GLIBC_2.2. This patch should + be applied until sarge+1 will be released. + + - debian/local/manpages/locale.1: Add the description about + /usr/share/i18n/SUPPORTED. Requested by Guillermo S. Romero + . (Closes: #284137) + + -- GOTO Masanori Wed, 15 Dec 2004 19:44:47 +0900 + +glibc (2.3.2.ds1-19ubuntu4) hoary; urgency=low + + * Add zoneinfo-udeb package containing time zone information tables for + use in the installer. + + -- Colin Watson Fri, 31 Dec 2004 21:35:11 +0000 + +glibc (2.3.2.ds1-19ubuntu3) hoary; urgency=low + + * debian/debhelper.in/locales.config: Automatically generate UTF-8 locales + corresponding to existing legacy locales. Note that this currently + happens every time locales.config is run; suggestions for where to + record that the migration is complete are welcome. + + -- Colin Watson Wed, 22 Dec 2004 04:27:46 +0000 + +glibc (2.3.2.ds1-19ubuntu2) hoary; urgency=low + + * ubuntu-altlocaledir.dpatch: fix FTBFS by including (brown + paperbag...) + + -- Martin Pitt Fri, 17 Dec 2004 09:53:22 +0100 + +glibc (2.3.2.ds1-19ubuntu1) hoary; urgency=low + + * Added patch ubuntu-altlocaledir.dpatch: support an alternate gettext tree + in /usr/share/locale-langpack/ + + -- Martin Pitt Fri, 10 Dec 2004 15:00:03 +0000 + +glibc (2.3.2.ds1-19) unstable; urgency=high + + * GOTO Masanori + + - debian/local/manpages/gencat.1: Use \fR instead of \fT for bold + font, and use .TP instead of .PP for option usage. Patched by + Lars Wirzenius . (Closes: #279685) + - debian/local/manpages/iconvconfig.8: Likewise + fix typo. + - debian/local/manpages/mtrace.1: Likewise. + - debian/local/manpages/locale.1: Add "SEE ALSO" to the end of the + manual. (Closes: #282128) + + - debian/sysdeps/linux.mk: Drop -fomit-frame-pointer from compiling + option to build NPTL packages in order to get valid backtrace. + -D__USE_STRING_INLINES is also dropped to consider about backtraces. + Requested by David Mosberger . + - debian/sysdeps/amd64.mk: Likewise. + - debian/sysdeps/i386.mk: Likewise. + - debian/sysdeps/s390.mk: Likewise. + - debian/sysdeps/sparc.mk: Likewise. + + - debian/patches/glibc232-hppa-unwindinfo.dpatch: Add for unwind + information for hppa plt fixup routine. Patched by + Randolph Chung . (Closes: #281993) + - debian/patches/glibc232-ia64-unwindinfo.dpatch: Add to work + ia64 unwind info and libunwind properly. Requested by David Mosberger + . (Closes: #278837) + + - debian/patches/glibc232-catchsegv-insecure-temp.dpatch: Add fix + CAN-2004-0968: catchsegv creates insecure temporary file. + (Closes: #278278) + - debian/debhelper.in/libc.install: Remove glibcbug to fix CAN-2004-0968, + and it's meaningless to include nowadays. (Closes: #205600) + - debian/debhelper.in/libc.manpages: Remove glibcbug.1 from manpage. + - debian/patches/glibcbug.dpatch: Add comment to be removed. + + - debian/make-cvs-patch.sh: Change like make-cvs-locales-patch.sh. + + - debian/patches/s390-pthread-fpic.dpatch: Add to fix lam build failure. + It changes pthread_atfork in libpthread_nonshared.a is built with + -fPIC, not -fpic, that is already applied in libc_nonshared.a. + (Closes: #280445) + + - debian/control.in/libc: Add gcc | c-compiler to Recommends of libc-dev. + This change avoids that aptitude tries to install various compiler + packages if only c-compiler is specified. (Closes: #283668) + - debian/control.in/main: Add Build-Depends: gcc-3.3 (>= 1:3.3.5-3) [ia64] + | gcc-3.4 (>= 3.4.3-2) [ia64] because ia64 should be built with gcc + which supports libunwind. Requested by Matthias Klose + . + - debian/control: Update. + + - debian/patches/nptl-pthread-c++.dpatch: Add to disable using C99 + designators for nptl pthread.h to fix C++ breakage. Patched by + Andreas Jochens and Matthias Klose + . (Closes: #275997, #283461) + + -- GOTO Masanori Sat, 6 Nov 2004 19:04:26 +0900 + +glibc (2.3.2.ds1-18) unstable; urgency=high + + * GOTO Masanori + + - debian/patches/glibc232-sparc64-softfp.dpatch: Add to fix + glibc build breakage on sparc with binutils 2.15. It's caused by + the register misusage, that was allowed by the previous binutils. + (Closes: #266598) + - debian/debhelper.in/libc.postinst: Fix to execute NSS services + correctly when file-rc is used. (Closes: #275403) + + - debian/patches/90_glibc232-timezones.dpatch: Update to tzdata2004e. + + - debian/debhelper.in/locales.prerm: Add to fix warning not to remove + /usr/lib/locale/locale-archive. (Closes: #264020) + - debian/debhelper.in/locales.postrm: Add to remove /etc/locale.gen + when purge is specified. + + -- GOTO Masanori Tue, 5 Oct 2004 09:32:01 +0900 + +glibc (2.3.2.ds1-17) unstable; urgency=high + + * GOTO Masanori + + - debian/sysdeps/depflags.pl: Fix typo, from "kerberos4th-dev" to + "kerberos4kth-dev". (Closes: #266637) + - debian/patches/00list: Add locale-byn_ER.dpatch that was missing + when I fixed. (Closes: #270998) + + - debian/patches/glibc23-dlclose-l_opencount.dpatch: Fix reference + counter in dl that does not sometimes decrement correctly. + (Closes: #233301, #259211) + - debian/patches/glibc232-globfree-clear.dpatch: Workaround and + to make sure that fix to enforce clear gl_pathc and gl_pathv in + globfree() for sarge to conform LFS test, requested by Jeff Licquia. + (Closes: #264884) + + - debian/local/manpages/tzselect.1: Fix typo. (Closes: #269747) + + - debian/debhelper.in/libc.preinst: Don't install glibc when kernel + is not 2.6 on amd64. + - debian/sysdeps/amd64.mk: Patch from Andreas Jochens: + - Drop the 'nptl' pass from GLIBC_PASSES. + - Use 'nptl' instead of 'linuxthreads' in the 'libc' pass (this + requires kernel >= 2.6.0, but 2.4 is not supported by the amd64 + port anyway). + + -- GOTO Masanori Thu, 19 Aug 2004 12:39:35 +0900 + +glibc (2.3.2.ds1-16) unstable; urgency=high + + * GOTO Masanori + + - debian/FAQ: Add note about errno + NPTL workaround. + (Closes: #261035) + - debian/patches/glibc232-mips-dl-machine.dpatch: Fix mips/mipsel + compilation breakage with the recent binutils. (Closes: #262646) + - debian/patches/glibc232-m68k-reloc.dpatch: Fix m68k compilation + breakage with the recent binutils. (Closes: #263601) + + * Jeff Bailey + + - debian/debhelper.in/libc-dev.install.hurd-i386: Don't install + getconf. + + -- GOTO Masanori Mon, 2 Aug 2004 11:53:54 +0900 + +glibc (2.3.2.ds1-15) unstable; urgency=high + + * Jeff Bailey + + - debian/sysdeps/depflags.pl: Replace ${libc}, not libc6. + (Closes: #262669) + + - Marking urgency as high, last upload should have been marked + this way for RC bug fix. + + -- Jeff Bailey Sun, 1 Aug 2004 08:50:13 -0400 + +glibc (2.3.2.ds1-14) unstable; urgency=low + + * GOTO Masanori + + - debian/patches/glibc232-iconv-ucs2-unalign.dpatch: Add to fix + iconv unalignment access with UCS-2BE/UCS-2LE on some architectures. + (Closes: #234691) + - debian/patches/locale-byn_ER.dpatch: Add to fix byn_ER localedef + breakage. Patched by Denis Barbier . + (Closes: #246270, #257658) + - debian/patches/locales-supported.dpatch: Add no_NO.ISO-8859-1 into + SUPPORTED. (Closes: #246170) + - debian/patches/glibc232-nptl-posix-timer.dpatch: Fix posix timer + SIGEV_THREAD notification is broken. (Closes: #259878) + - debian/patches/glibc232-remove-vsyscall.dpatch: Remove __ASSUME_VSYSCALL + to fix the system startup failure on the machine using PAX. + (Closes: #245563) + - debian/patches/90_glibc232-timezones.dpatch: Updated to tzcode2004b + and tzdata2004b. + - debian/patches/locale-eu_FR.dpatch: Add eu_FR and eu_FR@euro. + Patched by Christian Perrier . (Closes: #257840) + - debian/patches/locale-sr_CS.dpatch: Add sr_CS and sr_CS@cyrillic. + Patched by Christian Perrier . But this patch is + conflicted to sr_YU things - it's disabled for a while. + + - debian/local/etc_init.d/nscd: Rewritten the whole script to make + use of the initscript's method. Patched by Thomas Hood + . + (Closes: #229273, #229484, #253119, #252284, #222953) + + - debian/local/manpages/iconv.1: Add small description for `-c' and + so on. (Closes: #189958) + - debian/local/manpages/rpcgen.1: Add -M option description. + (Closes: #193467) + - debian/po/de.po: Updated. Patched by Helge Kreutzmann + . (Closes: #251732) + + - debian/debhelper.in/libc.postinst: Add apache-ssl and apache-perl to + restart script. Suggested by Daniel Jacobowitz . + (Closes: #208997) + - debian/debhelper.in/libc.postinst: Add vsftpd to restart script. + Suggested by Jeff Bailey . (Closes: #213535) + - debian/debhelper.in/libc.postinst: Add lpr-ppd. Change init script + name from lpr, lpr-ppd to lpd, lpd-ppd. (Closes: #205084) + - debian/debhelper.in/libc.postinst: Fix package detection failure when + uninstalled package is encountered during NSS upgrade. + (Closes: #193278) + - debian/debhelper.in/libc.postinst: Add export LANG=C to work scripts + correctly even if user sets locale environment variable. + - debian/debhelper.in/libc.postinst: Change sleep time from 1 to 2. + It's work-around fix, actual fix is start-stop-daemon --stop should + check the process termination. See: #211784. + + - debian/local/usr_sbin/tzconfig: Fix typo: old_timezone vs oldtimezone. + Reported by Kai Henningsen . (Closes: #213159) + + - debian/control.in/libc-dbg: Add Provides: libc-dbg for -dbg package. + (Closes: #219145) + - debian/control.in/libc, debian/control: likewise. + + - /usr/bin/getconf and getconf.1 are moved from libc-dev to libc. + (Closes: #239170) + - debian/debhelper.in/libc-udeb.install: Add libutil* and libcrypt* + to -udeb. (Closes: #258956) + + - Put amd64 port from Andreas Jochens. + - debian/control: Updated. + - debian/control.in: Modify Build-Depends: gcc-3.3 | gcc-3.4. + glibc can build at least gcc-3.3 and later. And this will make it + possible to build glibc with gcc-3.4 when gcc-3.4 becomes the default + on amd64 without changing glibc again. + - debian/sysdeps/amd64.mk: Use workaround -g0 option when gcc-3.4 is + used, because gcc-3.4 on amd64 with -g0 + nested functions are broken: + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=260710 + + * Andreas Jochens + + - debian/rules.d/control.mk: Add amd64 at the appropriate places. + - Add debian/patches/amd64-lib.dpatch to disable the biarch lib64 dir on + amd64 and enable this patch in debian/patches/00list. (Closes: #246547) + - Add a new file debian/sysdeps/amd64.mk with GLIBC_PASSES += nptl + (Closes: #248192) + - debian/sysdeps/amd64.mk: Use gcc instead of gcc-3.3 on amd64. + - debian/patches/fno-unit-at-a-time.dpatch: Add -fno-unit-at-a-time + test to configure for amd64 + gcc-3.4. (Closes: #261082) + + * Jeff Bailey + + - debian/patches/syslog-locale.dpatch: Include patch from Jakub + Jelinek to make sure syslogging happens in the C locale. + Thanks to pere for catching this. (Closes: #161340, #158651) + + - debian/patches/hurd-string.dpatch: New file + - debian/patches/00list.hurd-i386: Only load hurd-string on hurd-i386. + + -- GOTO Masanori Mon, 31 May 2004 23:43:29 +0900 + +glibc (2.3.2.ds1-13) unstable; urgency=low + + * Jeff Bailey + + - debian/control.in/main: Change to new email address. + - debian/debhelper.in/libc-dev.install.hurd-i386: Add missing files. + Thanks to Michael Banck (Closes: #246355) + - debian/sysdeps/gnu.mk: Stub out kernel_check. + Thanks to Michael Banck + + * GOTO Masanori + + - debian/debhelper.in/libc.preinst: Fixed to work when kernel version is + x.y.zFOOz pattern. (Closes: #245643) + - debian/patches/locale-ro_RO.dpatch: Fix Romania can't be built. + (Closes: #245657) + - debian/local/manpages/locale.1: Fix typo: LOC_PATH -> LOCPATH. + (Closes: #246557) + - debian/rules: Fix build correctly when we execute "debian/rules binary". + Patched by Jurij Smakov . (Closes: #247241) + - debian/patches/glibc232-misc-syslog.dpatch: Fix syslog segv under + memory shortage. (Closes: #249559) + - debian/patches/s390-backtrace.dpatch: Fix 900 test failures in the + libjava testsuite in gcc-3.4 on s390. (Closes: #243394) + - debian/sysdeps/linux.mk: Fix build failure when kernel headers directory + in /usr/src has symlink asm direcotry. Patched by Wolfram Gloger + . (Closes: #249408) + + - debian/debhelper.in/libc-udeb.install: Add libnss_files.so*, + - debian/libnss-dns-udeb, libnss-dns-files: Update description. + - debian/control: Update. + + * Colin Watson + + - debian/rules: Add libnss-dns-udeb and libnss-files-udeb. + (Closes: #247430) + - debian/.cvsignore: Likewise. + - debian/control.in/libc: libc-udeb depends on libnss-dns-udeb and + libnss-files-udeb. + - debian/debhelper.in/libc-udeb.install: Remove libnss_dns and libnss_files. + - debian/rules.d/control.mk: Likewise. + - debian/control.in/libnss-dns-udeb: Update description. + + -- GOTO Masanori Wed, 26 May 2004 00:18:06 +0900 + +glibc (2.3.2.ds1-12) unstable; urgency=low + + * GOTO Masanori + + - debian/local/etc_init.d/mountkernfs: Fix typo. (Closes: #229340) + - debian/local/etc_init.d/mountkernfs: Fix error if the kernel does not + set CONFIG_TMPFS on 2.4. (Closes: #230758) + - debian/local/etc_init.d/mountkernfs: Check each mount directory is + actually directory or not. (Closes: #234813) + - debian/local/etc_init.d/mountkernfs: remove "set -e". + - debian/debhelper.in/libc.postinst: use invoke-rc.d to invoke + mountkernfs when it's available, suggested by Junichi Uekawa + . (Closes: #230008) + + - debian/debhelper.in/libc.install: drop installing three files: + debian/local/etc_init.d/mountkernfs, debian/local/etc_default/devpts, + and debian/local/etc_default/tmpfs. Because initscripts now provides + those files. (Closes: #238963) + - debian/debhelper.in/libc.preinst: devpts.sh should be actually replaced to + mountkernfs. But by now mounting filesystems should be done with + mountvirtfs in initscripts. Initscripts needs to remove devpts.sh and + mountkernfs. + - debian/debhelper.in/libc.postinst: likewise. + - debian/debhelper.in/libc.postrm: likewise. + + - debian/debhelper.in/libc.preinst: Fix kernel version detection correctly. + Patched by Goswin von Brederlow . + (Closes: #241395). + + - debian/rules.d/debhelper.mk: Fix build failure in strip processing. + + - debian/patches/51_glibc232-hppa-nopltrel.dpatch: Do not process + lezy relocations if no DT_PLTREL is present. Reported by + Richard Hirst and Patched by + Carlos O'Donell . (Closes: #228375) + - debian/patches/glibc232-ppc32-nanosecond.dpatch: Fix ppc32 stat + reports bogus nanosecond data. Patched by Anton Blanchard + . (Closes: #231358) + - debian/patches/nptl-io-locking.dpatch: Add stdio performance + improvement for nptl. Dpatched by Michael Clark + . (Closes: #238213) + - debian/patches/52_glibc233-hppa-feupdateenv.dpatch: + The newest compiler in unstable has caught a bug in the feupdateenv + implementation for hppa. The code should not be using the constant input + argument as temporary scratch. Patched by Carlos O'Donell + . + - debian/patches/localedef-fix-trampoline.dpatch: Fix localedef segv + when run under exec-shield/PaX and so on due to trampoline issue. + Dpatched by James Troup . + (Closes: #231438, #198099, #215624, #215821, #221740) + - debian/patches/alpha-rtsigaction-fix.dpatch: Fix alpha sigaction with + SA_SIGINFO (rt_sigaction), keep program execution after exiting signal + handler, with correctly calling rt_sigreturn. (Closes: #221969) + - debian/patches/translation-fr.dpatch: Include fr.po translation patch. + Patched by Petter Reinholdtsen . Related bug #243183 + is currently suspended. + - debian/patches/locale-et_EE.dpatch: Fix et_EE locale incorrect charset. + Patched by Petter Reinholdtsen . (Closes: #208238) + + - debian/debhelper.in/libc.postinst: add rsync to NSS checking code. + (Closes: #229196) + - debian/debhelper.in/libc.preinst: add kernel version check code if + real i386 is used. (Closes: #231538) + + - debian/po/da.po: added. Patched by Morten Brix Pedersen . + (Closes: #230669) + - debian/po/cs.po: added. Patched by Miroslav Kure + . (Closes: #230969) + - debian/po/el.po: added. Patched by Konstantinos Margaritis + . (Closes: #230997) + - debian/po/ru.po: added. Patched by Ilgiz Kalmetev + . (Closes: #221657) + - debian/po/uk.po: added. Patched by Eugeniy Meshcheryakov + . (Closes: #235850) + - debian/po/zh_CN.po: added. Patched by Hiei Xu + and Carlos Z.F. Liu . (Closes: #231907) + - debian/po/tr.po: added. Patched by Ercin EKER + and Recai Oktas . (Closes: #240654) + + - debian/debhelper.in/glibc-doc.links: add manpages links for sem_*. + + - debian/patches/template.dpatch: split Author to Dpatch author and + Patch author. + + - debian/sysdeps/hppa.mk: added to create symlink + /usr/hppa64-linux/include to /usr/include for hppa64. (Closes: #239020) + - debian/sysdeps/depflags.pl: added conflicts to gcc-3.3-hppa64 and + gcc-3.4-hppa64. + - debian/sysdeps/depflags.pl: Add replaces: kerberos4th-dev (<< 1.2.2-10) + to avoid conflicting /usr/include/ifaddrs.h. (Closes: #234347) + + - debian/control.in/opt: made libc6-i686 description easier to + understand from users' requests. (Closes: #218396, #239555, #242546) + + - debian/local/usr_sbin/locale-gen: Add code to write an error if the + line doesn't satisfy the format. Patched by Petter Reinholdtsen + . (Closes: #207199) + + * Jeff Bailey + + - debian/debhelper.in/libc.preinst: Don't use awk except in + upgrade mode. (Closes: #229461) + Also make sure that it doesn't trip on words being added to the + upstream revision number. Thanks to James Troup for + mentioning this. + Thanks to Bastian Blank for the fix. + - debian/debhelper.in/libc.postinst: Respect DEBIAN_FRONTEND=noninteractive + for setting timezone. Default to UTC. (Closes: #196382) + + - debian/debhelper.in/libc.docs: Add TODO. + + Hopefully the last round of hurd-i386 fixes: + + - debian/debhelper.in/libc-dev.install.hurd-i386: New file. + - debian/rules.d/debhelper.mk: Deal with the arch-specific install files. + - debian/patches/hurd-cleanup.dpatch: New file for dl-procinfo.c and + missing include in malloc.c (Both in upstream) + - debian/patches/00list: Update + + Locales surgery, with many thanks to Petter Reinholdtsen: + + - debian/patches/glibc22-eo_EO.dpatch: Rename to ... + - debian/patches/locale-eo_EO.dpatch: ... this. + - debian/patches/11_cvs_locales.dpatch: New generated file from CVS. + - debian/patches/locales-stuff.dpatch: Remove bogs code and split + into .. + - debian/patches/locale-de_CH.dpatch: ... this and ... + - debian/patches/locale-ru_RU.dpatch: this. + - debian/patches/locale-no_NO.dpatch: New file to keep no_NO around + during the transition to nb_NO. + - debian/patches/locale-strfmon.dpatch: New file from CVS needed + for new locales formatting. (Closes: #226047) + - debian/patches/00list: Update. + + - debian/patches/glibc22-locales.dpatch: Obsoleted by CVS update. + - debian/patches/locale-es_AR.dpatch: Add template header. + - debian/patches/locales-supported.dpatch: Remove entries provided + by CVS. Add no_NO for transition. + + (Closes: #211607, #215466, #218424) + + - debian/patches/template.dpatch: Tweak to make it easier to + generate patches. + - debian/make-cvs-locales-patch.sh: New file. + + * Daniel Jacobowitz + + - Add separate-debug-info files to libc6-dbg to allow backtraces through + optimized libraries (Closes: #227097, #219459) + - debian/control.in/main: Bump build dependencies for binutils and + debhelper. + - debian/control.in/libc-dbg: Update package description. + - debian/rules: Set NOSTRIP after loading sysdeps rules files, so that + it actually gets set. + - debian/rules.d/debhelper.mk: Generate separate debug info libraries. + Touch stamp file for libc-udeb. + - debian/sysdeps/i386.mk, debian/sysdeps/linux.mk, s390x_extra_cflags, + debian/sysdeps/sparc.mk: Use -g1 instead of -g0 so that we get + unwind information. + - debian/wrapper/objcopy: Wrapper script to remove excess debug + info, for now. + - Remove tabs from debian/changelog, since they confuse + dpkg-parsechangelog. + - Add missing quotes in debhelper.mk NOSTRIP test. + - Don't add libc-dir-add.info to info after all + (Closes: #222171, #230765). + (debhelper.in/glibc-doc.info, debhelper.in/glibc-doc.install) + + * Ben Collins + + - Added and enabled a sparc v9b target (UltraSPARC III). + + * Bastian Blank + + - Add libnss-dns-udeb package. + - Rename udebs to match the real packages. (Closes: #183139) + - Fix provides of udebs. (Closes: #183143) + - Use debhelper udeb knowledge. + + -- GOTO Masanori Wed, 21 Apr 2004 00:40:55 +0900 + +glibc (2.3.2.ds1-11) unstable; urgency=low + + * Jeff Bailey + + - debian/control.in/s390x: Remove -dev dependency on gcc-3.2. + - debian/sysdeps/s390.mk: Add missing ) + - debian/rules: Fixes for cross-compiling + - debian/patches/90_glibc233_tcsetaddr.dpatch: LSB Fix for tcgetattr + (Closes: #218131) + - debian/sysdeps/depflags.pl: Update wine conflicts. + (Closes: #218717) + - debian/sysdeps/depflags.pl: Update cyrus-imapd conflicts. + (Closes: #220983) + - debian/sysdeps/sparc.mk: Force -m32 when building sparcv9 + - debian/patches/glibc-sparc-timing.dpatch: New file to let sparcv9 works. + (Closes: #222886) + - debian/patches/nptl-page-align.dpatch: New file to fix page + alignment troubles. (Closes: #223241, #225466) + + - debian/patches/hurd-exit-attr-hidden.dpatch: New file to fix + compilation on gcc-3.3 and hurd-i386 + - debian/patches/hurd-i386-hwcap.dpatch: New file to give the needed + i386 HWCAP defines on hurd-i386 + - debian/patches/hurd-libc-lock.dpatch: New file to fix FTBFS on hurd-i386 + - debian/patches/hurd-utmp-file.dpatch: New file to fix FTBFS on + non-Linux. + - debian/patches/glibc23-cmov.dpatch: Update for moved i386 HWCAP + definitions. + - debian/patches/glibc23-sse-oldkernel.dpatch: Updated for + severelly munged sysdeps/unix/sysv/linux/i386/dl-procinfo.h + Thanks to Barry deFreese for helping get these in order. + + - debian/patches/00list: Update + + - debian/debhelper.in/libc.preinst: For Linux kernels of the form + x.y.z-n, fail the install if z >= 255. (Closes: #226688) + Thanks to James Morrison and Kevin Everets for help on the wording + of the error message. + + - debian/sysdeps/sparc.mk: Revert Ben's change of '-mcpu=v8 + -mtune=ultrasparc'. This was misleading because it was always + overridden by the glibc Makefile and had no effect. + + * Phil Blundell + + - Require linux-kernel-headers >= 2.5.999-test7-bk-9 to avoid module- + related problems on ARM. + + * Ben Collins + + - Bump sparcv9 back to -mcpu=v8 -mtune=ultrasparc. Should fix sparcv9. + + * Daniel Jacobowitz + + - Pass CC to configure; should fix sparc64. + - Suppress the errno warning message for now. Update to point to + README.Debian.gz. + - debian/patches/glibc23-errno-hack.dpatch, debian/FAQ + - Redirect dpkg -s sysvinit's stderr to /dev/null (Closes: #225601). + - Fix on MIPS targets. Thanks to Guido Guenther + for testing and improvements to the patch (Closes: #223891, #226483). + - debian/patches/mips-asm-unistd.dpatch + - Fix for GCC changes from Thiemo Seufer (Closes: #224744). + - debian/patches/mips-sgidefs.dpatch + - Fix i386-linux build failure. + - debian/patches/glibc23-sse-oldkernel.dpatch + - Quote a backslash in libc.preinst + + * GOTO Masanori + + - debian/debhelper.in/glibc-doc.links: add missing links for + pthread_mutex_*(), pthread_mutexattr_*(), pthread_cond_*(), and + pthread_condattr_*(). + - debian/control.in/main: remove Build-Depends-Indep: latex2html. + (Closes: #221317) + + - debian/local/etc_init.d/devpts.sh: rename to mountkernfs. + - debian/local/etc_init.d/mountkernfs: rename from devpts.sh, for + adding to mount tmpfs(shmfs), sysfs, and usbfs. + - debian/local/etc_default/tmpfs: add to control tmpfs upper limit size. + - debian/debhelper.in/libc.dirs: add to make /sys. + - debian/debhelper.in/libc.install: add mountkernfs and tmpfs, + remove devpts.sh. + - debian/debhelper.in/libc.postrm: rename devpts.sh to mountkernfs. + - debian/debhelper.in/libc.postinst: likewise. + - debian/local/etc_init.d/mountkernfs: fix devpts_mounted to check + its pathname is exactly started from the top directory. + + - debian/debhelper.in/libc.preinst: fix preinst does not stop + on mips even if it's kernel version is < 2.4.22. (Closes: #223769) + + - debian/po/pt_BR.po: Update pt_BR debconf template translation. + Patched by Andre Luis Lopes . (Closes: #219839) + - debian/po/nl.po: Update nl debconf template translation. + Patched by cobaco . (Closes: #220693) + + * Carlos O'Donell + + - debian/patches/51_glibc232-hppa-dist.dpatch: Add entry.h to dist. + - debian/patches/51_glibc232-hppa-profiling.dpatch: Fix profile support. + (Closes: #221010) + + -- Daniel Jacobowitz Tue, 20 Jan 2004 09:41:48 -0500 + +glibc (2.3.2.ds1-10) unstable; urgency=low + + This is the "Swimming to the surface" release. + + * GOTO Masanori + + - debian/control.in/opt: Add more ix86 CPUs in the description. + - debian/debhelper.in/libc.preinst: Ignore old libc4/5. + (Closes: #218449) + + * Daniel Jacobowitz + + - Add a patch to automatically disable NPTL for programs which + reference the old errno; and update the FAQ to match. + (glibc23-errno-hack.dpatch). + - Update make build dependency as reported by Mikko Kautto + (Closes: #218595). + - Update debian/po/nl.po with new translation from Bart Cornelis + (Closes: #218642). + - Update SSE disabling patch to work for static binaries too + (Closes: #218524, #219025). + - debian/debhelper.in/libc.preinst: Ignore ia32-libs also + (Closes: #219176). + - debian/control.in/main: Build depend on fixed linux-kernel-headers + to get ia64 module syscalls (Closes: #218645). + + * Jeff Bailey + + Update to Standards-Version 3.6.1: + - debian/changelog: Convert from Latin-1 to UTF-8. 1 Line affected. + - debian/control.in/main: Update version number. + Fix some lintian warnings: + - debian/changelog: Remove obsolete user-emacs settings. + - debian/control.in/libc: Remove trailing periods from synopis'. These + aren't full sentences. + - debian/local/manpages/gencat.1: New file. + - debian/local/manpages/trace.1: New file. + - debian/debhelper.in/libc-dev.manpages: Install them. + - debian/local/manpages/iconvconfig.8: New file. + - debian/debhelper.in/libc.manpages: Install it. + - debian/patches/90_glibc232-statvfs.dpatch: Don't get confused on bad + mtab. (Closes: #219271) + - debian/patches/90_glibc232-timezones.dpatch: Update timezone + information. + + * Phil Blundell + + - debian/patches/arm-ioperm.dpatch: Third time lucky? + + -- Jeff Bailey Wed, 5 Nov 2003 10:53:14 -0500 + +glibc (2.3.2.ds1-9) unstable; urgency=low + + * GOTO Masanori + + - debian/po/es.po: Update. Patched by Carlos Valdivia Yagüe + . + - debian/debhelper.in/libc.preinst: Replace s/libc6/glibc/ + in messages, actually there are not only libc6, but also + libc6.1, libc0.3, and so on. + + * Daniel Jacobowitz + + - Export libpthread symbols needed for thread debugging + (glibc23-thread-debugging.dpatch). + - Remove glibc23-thread-debugging.dpatch in response to upstream + comments. Don't strip libpthread symbols needed for thread debugging. + - Add version sanity check for kernels whose extraversion starts with a + dot (Closes: #218546). + - Disable SSE for pre-2.4 kernels (Closes: #218524). + - Symlink asm-sparc and asm-sparc64 into debian/include if necessary. + - Don't duplicate .so symlinks in libc6-s390x and libc6-dev-s390x. + - Add a build fix for sparc64; pread syscall has been renamed to + pread64. + - Add a FAQ entry for unresolved errno (Closes: #218561). + - Import patch from CVS to fix ucontext_t/mcontext_t on powerpc32 + (Closes: #207806). + - Patch from Randolph Chung for HPPA system calls + (hppa-syscall.dpatch). + + -- Daniel Jacobowitz Sat, 1 Nov 2003 18:54:16 -0500 + +glibc (2.3.2.ds1-8) unstable; urgency=low + + * Daniel Jacobowitz + + - Don't use --enable-omitfp since we don't install libc_g.a. + - Enable NPTL for S/390. + - Fix the /lib/ld64.so.1 symlink for s390x. + - Update maintainer scripts for fixes lost in the rewrite. + - Enable NPTL for ia64. Thanks to Ian Wienand for testing. + - Automatically cross-compile if the kernel is too old to build + an optimized library. + - Do not run make check if cross compiling. + - Fix msqid_ds on MIPS. Dpatch from Guido Guenther, patch by + Thiemo Seufer (Closes: #215273, #200215, #217593). + - Check for old copies of glibc in a couple of places (Closes: #212224). + - Fix a libio compatibility code bug which crashed the Citrix client + (glibc23-libio-compat.dpatch). + - Remove fuzzy markers from fr.po. Patch from Denis Barbier + (Closes: #217865). + - Re-add debian/patches/80_glibc232-locales-nb_NO-fix.dpatch, which had + gotten lost. + - Re-add typo fixes to iconv.1 and rpcgen.1. (Closes: #202161) + - Merge iconv.1 fix to iconv.pod. + - Re-add fix for locale-gen and POSIXLY_CORRECT. + - Update ldso-disable-hwcap.dpatch and preinst/postinst scripts. + - Update maintainer scripts not to use basename; dpkg invokes the + scripts as tmp.ci/postinst, not libc6.postinst. + - Add a patch for building shlib.lds which fixes a parse error when + building without an existing -dev package installed. + - debian/patches/11_shlib-lds.dpatch + + * Jeff Bailey + + - debian/sysdeps/linux.mk: Use getconf _NPROCESSORS_ONLN instead + of /proc/cpuinfo to calculate NJOBS. The cpuinfo file format + is not consistent between arch's. + - debian/.cvsignore: New file. + + * GOTO Masanori + + - debian/debhelper.in/locales.dirs: Add /usr/lib/locale, because + localedef stops to create locale data if this dir is not found. + - debian/debhelper.in/libc-otherbuild.preinst: Fix typo which + disturbs to install libc-otherbuild package. + - Dan's checking code for old copies in libc6 preinst fixes + installation breakage for example /usr/lib/debug is in + /etc/ld.so.conf, or so on. + (Closes: #165374, #212224). + - debhelper.in/libc.preinst: add kernel version sanity check for + sun4m arch which needs at least 2.4.21 due to hardware multiplication + instruction is used by default. (Closes: #215010, #215012) + - debian/debhelper.in/libc.preinst: fix check_dirs return value. + + -- Daniel Jacobowitz Tue, 28 Oct 2003 18:29:09 -0500 + +glibc (2.3.2.ds1-7) experimental; urgency=low + + * Daniel Jacobowitz + + - Fix TLS libraries, which belong in /lib/tls, not /libtls. + - Fix -march for NPTL libraries on i386 - was i686, should have + been i486. + - Move i686 libraries to /lib/tls/i686/cmov. + - Include make check output in the libc package. + - S/390 perversely uses /lib/ld64.so.1 as the dynamic linker; include + a symlink. + - Leave /lib64/ld64.so.1 executable on S/390. + - Generate SUPPORTED again. + - Update ldconfig to prefer /lib/tls to /lib/i686/cmov. + - Disable conflicts between optimized libraries and libsafe/memprof; + they've worked for a while. + - Switch the i686 optimized libraries to use NPTL, and update their + description. + - Fix dependencies for locales package. + - Include SONAME symlinks in libc6-dbg. + - Remove vestigial gconv-modules Provides. + - Install more files for libc6 and locales packages. + - Correct section for zdump.8 man page. + - Install ld.so.8 in the right directory (debhelper thinks that .so is a + language extension). + - Install info menu entries for functions provided by libc, in + glibc-doc. + - Include changelog in glibc-doc also. + - Re-add libc6-dev dependency on matching libc6. + - Fix libc-udeb build. + + * Phil Blundell + + - debian/patches/arm-ioperm.dpatch: Try again. + + * Jeff Bailey + + Welcome back HPPA, Thanks to Carlos O'Donell + + - debian/patches/50_glibc232-hppa-full-nptl-2003-10-22.dpatch: New. + - debian/patches/50_glibc23-hppa-entry.dpatch: Remove. + - debian/patches/glibc23-00-hppa-pthreads.dpatch: Remove. + - debian/patches/glibc23-01-hppa-dl-machine.dpatch: Remove. + - debian/patches/glibc23-07-hppa-atomicity.dpatch: Remove. + - debian/patches/glibc23-hppa-compat.dpatch: Remove. + - debian/patches/glibc23-hppa-malloc8.dpatch: Remove. + + - debian/patches/00list: Update. + + - debian/rules: Define NJOBS as 1. + - debian/sysdeps/linux.mk: Define NJOBS based on number of processors + - debian/rules.d/build.mk: Use -j $(NJOBS) during build. + Based on patch from Ian Wienand + + - debian/debhelper.in/libc.install: Install pt_chown + - debian/rules.d/debhelper.mk: Don't clobber SUID on pt_chown + - debian/debhelper.in/glibc-doc.docs: Install DEB_SRCDIR/ChangeLog* + - debian/rules.d/build.mk: Don't run testsuite if DEB_BUILD_OPTIONS + contains nocheck + + - debian/sysdeps/gnu.mk: Define slibdir. + - debian/rules.d/build.mk: Only set slibdir in configparms if its set. + - debian/debhelper.in/glibc-doc.doc-base: New file. + - debian/debhelper.in/glibc-doc.install: New file. + - debian/debhelper.in/glibc-doc.links: New file. + - debian/rules.d/build.mk: Generate HTML files. + - debian/rules.d/debhelper.mk: Map LIBC to $(libc) in generated files. + - debian/debhelper.in/libc.install: Install Linuxthreads ChangeLog. + - debian/debhelper.in/libc.docs: Install various docs. + - debian/sysdeps/kfreebsd-gnu.mk: New file. Put in all the magic + from the old packaging. + - debian/sysdeps/kfreebsd.mk: Deleted. + - debian/sysdeps/gnu.mk: Add in GLIBC_OVERLAYS to allow patching to work, + create ld.so symlink at end of build. + - debian/sysdeps/sparc.mk: Change MIN_KERNEL_REQUIRED to + MIN_KERNEL_SUPPORTED. + - debian/sysdeps/s390.mk: Likewise. + - debian/rules: Define kernel_check macro. + - debian/sysdeps/linux.mk: Override kernel_check for Linux. + - debian/rules.d/build.mk: Call kernel_check macro when --build == + --host + + * GOTO Masanori + + - debian/po/ru.po: Update. Patched by Ilgiz Kalmetev + . (Closes: #214349) + + -- Daniel Jacobowitz Sat, 25 Oct 2003 15:09:02 -0400 + +glibc (2.3.2.ds1-6) experimental; urgency=low + + * Phil Blundell + + - debian/patches/arm-ioperm.dpatch: New. + + * Daniel Jacobowitz + + - Add debhelper build dependency. + - Use linux-kernel-headers package for headers. + - Add S/390 support. + - Build libc6-dev-sparc64. + + -- Daniel Jacobowitz Mon, 20 Oct 2003 16:27:39 -0400 + +glibc (2.3.2.ds1-5) experimental; urgency=low + + * Daniel Jacobowitz + + - Fix a thinko in i686 timing patch for non-HP_TIMING architectures. + - Add -k to make check. + + -- Daniel Jacobowitz Mon, 13 Oct 2003 10:53:31 -0400 + +glibc (2.3.2.ds1-4) experimental; urgency=low + + * Daniel Jacobowitz + + - Update i686 timing patch to fix clock_gettime. + - Update glibc23-cmov patch to let ld load tls libraries from + ld.so.cache. + - Include symlinks in optimized library directories to placate + dpkg-shlibdeps. + - Fix shlibs files to include a version again. + - Re-enable make check. + - Update makeconfig.dpatch to fix a typo that broke make check. + - Add glibc-make-check-perms.dpatch to fix an upstream make check + problem. + - Build some optimized libraries using appropriate --build options + so that they can run make check. + + * Jeff Bailey + + - Build libraries for sparcv9 and sparc64. + - Enable TLS for ia64. + + -- Daniel Jacobowitz Sun, 12 Oct 2003 19:42:11 -0400 + +glibc (2.3.2.ds1-3) experimental; urgency=low + + * Daniel Jacobowitz + + - Use ldd* in debhelper.in/libc6, because non-i386 arches don't have + lddlibc4. + - Include gconv-modules in libc6. + - Don't include some unnecessary generated kernel headers. + - Merge previous .dpatch files (Closes: #214470). + - Run depflags.pl again (Closes: #214468). + - Don't include profiled libraries in libc-dev (Closes: #214504). + - Ship /usr/include/asm-generic (Closes: #214512). + + -- Daniel Jacobowitz Mon, 6 Oct 2003 21:18:28 -0400 + +glibc (2.3.2.ds1-2) experimental; urgency=low + + * Daniel Jacobowitz + + - Install the right headers in /usr/include/asm, instead of trying to + replace the directory with a symlink (Closes: #214233). + - Map DEB_HOST_GNU_CPU to a uname value for creating the asm symlink. + - Move libc6-dev's postinst back to preinst. + - Support multiple autoconf.h headers. + - Add an ia64 autoconf.h, from Branden Robinson. + + -- Daniel Jacobowitz Sun, 5 Oct 2003 14:47:05 -0400 + +glibc (2.3.2.ds1-1) experimental; urgency=low + + * Essentially redo the debian/ packaging directory. + + Specifically, the following directories were changed: + - debian/sysdeps/*: Redo into os-based and arch-based handling. + - debian/debhelper.in/*: Use debhelper for all package management. + - debian/rules.d/*: Split out rules file into logical pieces. + - debian/local/*: Move all of the files that Debian provides to here. + + Update dpatch to more closely match the debian package: + - debian/patches/0list: Rename to 00list to match dpatch update. + - debian/rules.d/dpatch.mk: Sync with Debian package with the + following four changes: + 1) Support srcdir != builddir builds. + 2) Support $(stampdir) + 3) patch target depends on unpack + 4) Use $(DEB_SOURCE_PACKAGE) instead of $(PACKAGE) + + Remove dependency on various kernel-headers packages, bring into + the package: + - linux-kernel-headers/: New directory, import from 2.6.0-test2 + + Add NPTL support on i386: + - debian/sysdeps/i386.mk: Add NPTL patterns, set minimum kernel. + + Redo "DBS-Style" tarball support: + - debian/rules.d/tarball.mk: New file + - debian/sysdeps/linux.mk: Bring in linuxthreads and nptl overlays. + - prep.sh: Remove. + - version: Remove. + + Update to recent CVS snapshot to support NPTL: + - debian/patches/10_cvs.dpatch: update + + This cleanup project is the result of several discussions between + Jeff Bailey, GOTO Masanori, Daniel Jacobowitz, and Philip Blundell. + + The initial work here was done by Jeff Bailey, Branden Robinson, + and Daniel Jacobowitz. + + -- Daniel Jacobowitz Thu, 2 Oct 2003 13:47:40 -0400 + +glibc (2.3.2-9) unstable; urgency=medium + + Urgency set to medium, because this version should bring HPPA alive again. + + * GOTO Masanori + + - debian/patches/82_glibc232-iconv-euc-jp-ms-fix.dpatch: Fix EUC-JP-MS + does not work even if they are listed as available in iconv. + Dpatched by Topia . (Closes: #212080) + + - debian/manpages/iconv.1: Fix typo in -o option. Patched by + Max Vozeler . (Closes: #211733) + + - debian/manpages/rpcgen.1: Fix typo which cause some infos for the '-o' + option are not shown, and add -Sm option description. Patched by + Nicolas Francois . + (Closes: #211984) + + - debian/libc/DEBIAN/preinst: Updated libc6 libnss restarting version + from 2.2.94-1 to 2.3.2-2 in preinst. Postinst code was already fixed + in 2.3.2-2. (Closes: #211825) + + - debian/locales/DEBIAN/template: There is no reason to + set LANG=C in /etc/environment, so do not display this locale + in the locales/default_environment_locale question. + - debian/locales/DEBIAN/config: Likewise. + - debian/locales/DEBIAN/postinst: If /etc/environment sets the LANG + variable and a new configuration asks for not setting it, the + line was not removed from this file. + - debian/po/templates.pot: Update templates followed by above changes. + - debian/po/fr.po: Update accordingly using debconf-updatepo with new + translation. + - debian/po/ja.po: Likewise. + - debian/po/ca.po: Update accordingly using debconf-updatepo. + - debian/po/de.po: Likewise. + - debian/po/es.po: Likewise. + - debian/po/fr.po: Likewise. + - debian/po/ko.po: Likewise. + - debian/po/pt_BR.po: Likewise. + - debian/po/ru.po: Likewise. + - debian/po/nl.po: Update accordingly using debconf-updatepo with + fixing line invalid wrapping. + All patched by Denis Barbier . + + - debian/patches/80_glibc232-locales-nb_NO-fix.dpatch: Added to fix + nb_NO as real locale, not an alias. Patched by Petter Reinholdtsen + . (Closes: #206474) + + * Jeff Bailey : + + - 20_glibc232-hppa-full-2003-10-20.dpatch: New HPPA patch. + (Closes: #209253) Thanks to Carlos O'Donell + + - 50_glibc23-hppa-entry.dpatch: Remove. + - 80_glibc232-locales-nb_NO-fix.dpatch: Remove. + - glibc23-00-hppa-pthreads.dpatch: Remove. + - glibc23-01-hppa-dl-machine.dpatch: Remove. + - glibc23-07-hppa-atomicity.dpatch: Remove. + - glibc23-hppa-compat.dpatch: Remove. + - glibc23-hppa-malloc8.dpatch: Remove. + + - 0list: Update + + -- Jeff Bailey Wed, 22 Oct 2003 13:46:39 -0400 + +glibc (2.3.2-8) unstable; urgency=low + + * Phil Blundell + + - debian/control.in/main: add gawk to Build-Depends, since testsuite + apparently requires it. + + - debian/patches/pthread-cleanup.dpatch: Vector __pthread_cleanup_push + and __pthread_cleanup_pop through __libc_pthread_functions. + (Closes: #205234) + + - debian/patches/arm-no-hwcap.dpatch: Admit HWCAP_FAST_MULT again, + since we want to start using this for openssh. + - debian/patches/arm-updates.dpatch: Add some miscellaneous arm + changes taken from upstream. + - debian/patches/arm-vfork.dpatch: Avoid bad interaction between + vfork and libpthread. + + * GOTO Masanori + + - debian/patches/80_glibc232-fesetround-fix.dpatch: Fix fesetround static + link time failure. (Closes: #211135) + + - debian/patches/lo_LA.UTF-8_not_supported.dpatch: Dropped, to support + lo_LA.UTF-8 again. + - debian/patches/80_glibc232-locales-lo_LA.dpatch: Added to support + lo_LA.UTF-8 again. + + - debian/locales/usr/sbin/locale-gen: Fix locale-gen breaks with bash + 2.03, unset POSIXLY_CORRECT iff it's previously defined. + Patched by Daniel Verite . (Closes: #210301) + + -- Philip Blundell Wed, 17 Sep 2003 20:44:48 +0100 + +glibc (2.3.2-7) unstable; urgency=medium + + * GOTO Masanori + + - debian/patches/90_glibc232-mathinline_iso.dpatch: Fix inline math + function complaints with gcc -pedantic -ffast-math. Patched by + Thomas Richter . (Closes: #208016, #207221) + + - debian/patches/template.dpatch: Added DP: Related bugs: field. You can + use it to put which bugs are related with this dpatch. + + * Daniel Jacobowitz + + - debian/control.in/main: Update binutils dependency for !s390. + + - debian/patches/linuxthreads-push-pop.dpatch: Add __libc_cleanup_push + and __libc_cleanup_pop. + - debian/patches/syslog-backrev.dpatch: Remove, no longer necessary. + This should fix the crashes in syslog without libpthread loaded. + + - debian/patches/linuxthreads-jumptable-wine.dpatch: Move + pthread_cond_timedwait out of the way, so that it doesn't break + the way Wine pokes into this structure (Closes: #210347). + + - debian/patches/ia64-memccpy.patch: Fix a segfault on ia64 + (Closes: #210441). + + -- Daniel Jacobowitz Fri, 12 Sep 2003 14:56:19 -0400 + +glibc (2.3.2-6) unstable; urgency=low + + * Phil Blundell + + - debian/control.in/main: require kernel-headers-2.4.20-m68k (>= + 2.4.20-1) for m68k. Requested by Adam Conrad . + + - debian/patches/pthread_cond_timedwait.dpatch: avoid problem when + pthread_cond_timedwait is used in code that doesn't link with + -lpthread. (Closes: #209139) + + * GOTO Masanori + + - debian/sysdeps/kfreebsd-gnu.mk: Added to support kfreebsd-gnu. + Patched by Robert Millan . (Closes: #206663) + - debian/sysdeps/freebsd.mk: Dropped because of replacing kfreebsd-gnu.mk. + - debian/sysdeps/soname.mk: Modified from freebsd to kfreebsd-gnu. + + -- Philip Blundell Mon, 8 Sep 2003 08:51:49 +0100 + +glibc (2.3.2-5) unstable; urgency=low + + * Phil Blundell + + - debian/control: change section for -pic, -dbg, -prof packages + from devel to libdevel. + + - debian/control.in/main: add Build-Depends changes from 2.3.2-3 + here as well. + + - debian/packages.d/*.mk: add md5sums for generated packages, + thanks to Petr Konecny. (Closes: #158354) + + - debian/patches/80_glibc232-locales-header.dpatch: adjust + filenames so patch applies correctly. + + - debian/locales/DEBIAN/config: The "Leave alone" option has been + removed, but locale-gen crashes if it was set by a previous run, + so really discard it. Patch by Denis Barbier (Closes: #204958) + + - debian/patches/lo_LA.UTF-8_not_supported.dpatch: remove this + locale from SUPPORTED file; requested by Denis Barbier. + (Closes: #205118) + + - debian/patches/nss_compat-shadow: fix problem with shadow + passwords and NIS. Patch from Thorsten Kukuk. (Closes: #204711) + + * GOTO Masanori + + - debian/control.in/libc: Add more missing change section for -pic, + -dbg, -prof packages from devel to libdevel. + - debian/control.in/libc-dbg: likewise. + + - debian/patches/80_glibc232-locales-header.dpatch: Fix an_ES, + wa_BE, yi_US localedata header. (Closes: #194289) + + - debian/locales/usr/sbin/locale-gen: Add "unset POSIXLY_CORRECT" + because if user set POSIXLY_CORRECT, this script is interrupted. + (Closes: #206784) + + - debian/patches/glibc22-ttyname-devfs.dpatch: Fix one byte leak + in getttyname_r. Patched by Hunor Csordas . + (Closes: #194637) + + - debian/sysdeps/freebsd.mk: Modified config-os from freebsd-gnu + to kfreebsd-gnu. Patched by Robert Millan . + (Closes: #206663) + + - debian/patches/80_glibc232-iconvdata-fix.dpatch: Fix cp932 + does not work. (Closes: #205679) + + -- Philip Blundell Tue, 26 Aug 2003 22:51:03 +0100 + +glibc (2.3.2-4) unstable; urgency=low + + * Jeff Bailey + - debian/locales/DEBIAN/postinst: Use tail -n 1 instead of tail -1. + Thanks to Jurij Smakov (Closes: #206464) + + * Phil Blundell + - debian/patches/glibc23-arm-waitpid.dpatch: deleted. + - for arm, Build-Depend on kernel-headers 2.4.19-4 or newer. + (Closes: #206895) + - debian/patches/revert-old-libio.dpatch: back out changes causing + problems with fseek in binaries linked with glibc 2.0. + (Closes: #206839) + - debian/libc/DEBIAN/postinst: also restart cucipop (Closes: #206783) + - debian/patches/arm-output-format.dpatch: Very bad hack to avoid + problem with libc.so on ARM until a proper fix is forthcoming. + - debian/patches/81_glibc232-utimes-fix.dpatch: replace with version + that applies cleanly to current sources. + - debian/control: require sed 4.0.5-4 or later. + + * GOTO Masanori + + - debian/po/es.po: Updated Spanish (es) debconf template. + Patched by Carlos Valdivia Yagüe . + - debian/patches/81_glibc232-utimes-fix.dpatch: Fix utimes wrong time + calculation. Patched by Paul Eggert . + (Closes: #204728, #202243, #205110) + + -- Philip Blundell Tue, 26 Aug 2003 17:27:00 +0100 + +glibc (2.3.2-3) unstable; urgency=low + + * GOTO Masanori + + - debian/patches/80_glibc232-futimes-buildfix.dpatch: Fix build failure + on arm, mips, mipsel, due to be missing #include . + (Closes: #204768) + + - debian/libc/DEBIAN/preinst: Modified chown owner:group separater from + `.' to `:', according to POSIX 1003.1-2001. (Closes: #205527) + - debian/packages.d/glibc-doc.mk: likewise. + - debian/packages.d/libc-dbg.mk: likewise. + - debian/packages.d/libc-dev.mk: likewise. + - debian/packages.d/libc-pic.mk: likewise. + - debian/packages.d/libc-prof.mk: likewise. + - debian/packages.d/libc-udeb.mk: likewise. + - debian/packages.d/libc.mk: likewise. + - debian/packages.d/locales.mk: likewise. + - debian/packages.d/nscd.mk: likewise. + - debian/packages.d/optimized.mk: likewise. + - debian/packages.d/s390x.mk: likewise. + - debian/packages.d/sparc64.mk: likewise. + + - debian/libc/DEBIAN/postinst: Restarting script supported dovecot. + (Closes: #205566) + + - debian/po/pt_BR.po: Updated Brazilian Portuguese (pt_BR) debconf + template. Patched by Andre Luis Lopes . + (Closes: #195873) + - debian/po/nl.po: Added nl.po debconf template. Patched by + Bart Cornelis . (Closes: #205090) + + -- GOTO Masanori Fri, 8 Aug 2003 20:32:24 +0900 + +glibc (2.3.2-2) unstable; urgency=low + + This is the "fleeing to the horizon" release... + + * GOTO Masanori + + - debian/patches/glibc23-arm-waitpid.dpatch: Fix arm ld-linux failure due + to sys_waitpid missing. Patched by Philip Blundell . + - debian/patches/50_glibc232-arm-dwarf2-buildfix.dpatch: Avoid arm dwarf2 + build failure. Patched by Philip Blundell . + - debian/patches/50_glibc232-m68k-dwarf2-buildfix.dpatch: Avoid m68k + dwarf2 build failure. Suggested by Philip Blundell , + Andreas Schwab . + - debian/libc/DEBIAN/postinst: Modified watermark of restarting NSS + services from 2.1.94-1 to 2.3.2-2, because libnss_compat is changed in + 2.3.2-1 (2003-06-17 Upstream change). + - debian/patches/80_glibc232-wcsmbs-fix.dpatch: Added to fix wcsmbs bugs + which is lacked in 2003-07-15 upstream cvs. (Closes: #202969) + + - These bugs are fixed in this update: + * Bug in dlopen/dlclose leads to segfaults with kdecore is fixed in this + version. (Closes: #201221) + * Static linking adjtimex() on alpha failed to compile due to undefined + reference to `__adjtimex_tv32'. It's fixed in this version. + (Closes: #186331) + + * Jeff Bailey + - debian/packages.d/s390x.mk: Remove gcc-3.2 hardcode + + * Phil Blundell + - debian/patches/alpha-crti.dpatch: remove stray .prologue causing + alpha build failure. + - debian/patches/alpha-pwrite.dpatch: add missing __GI___pwrite64 alias. + - debian/control: demand binutils 2.14.90.0.5-0.1 or later (required + for .usepv on alpha) + + -- GOTO Masanori Sat, 19 Jul 2003 00:37:11 +0900 + +glibc (2.3.2-1) experimental; urgency=low + + ** UPLOADING THIS TO EXPERIMENTAL ** + + * Clint Adams + - debian/control: build-dep on gcc-3.3 for sparc(64) + - debian/rules: re-enable sparc64 build + - debian/packages.d/sparc64.mk: use gcc-3.3 to build sparc64 + - debian/sysdeps/linux.mk: re-enable sparc64 build + + * Jeff Bailey + - debian/patches/hurd-enable-ldconfig.dpatch: New file + - debian/packages.d/libc.mk: Install regular ldconfig, not + debian/ldconfig-hurd.sh on hurd-i386 + - debian/patches/0list: Add hurd-enable-ldconfig + - debian/sysdeps/paths.mk: Comply with FHS, use $(prefix)/lib, not + $(prefix)/libexec + - debian/rules: Introduce "perfect_make_check_archs" concept - + arch's listed in this variable must pass make check cleanly, + or the build will fail. Start off with i386, powerpc, sparc, alpha + and s390. + - debian/control.in/main: Build-dep on gcc-3.3 + - debian/sysdeps/tools.mk: Use gcc-3.3 + - debian/patches/sparc32-buildfix.dpach: Prune after yet another CVS + update + - debian/patches/syslog-backrev.dpatch: New file + + * GOTO Masanori + - Updated glibc 2.3.2. + - debian/patches/cvs.dpatch: rename it to 10_cvs.dpatch. + I plan to introduce <2digitnumber>_.dpatch filename. + - debian/patches/10_cvs.dpatch: update 2003-07-15 upstream cvs. + - version: bump up to 2.3.2. + - rules.d/shlibs.mk: bump up to 2.3.2. + - debian/sysdeps/sysdeps.mk: i386 optimization level is back to -O2. + + - These debian/patches/ are removed from cvs because + they are no longer being used and were superceeded by CVS patches: + * document-fix.dpatch + * glibc23-cert-rpcxdr.dpatch + * glibc23-getdents64-fix.dpatch + * glibc23-getaddrinfo.dpatch + * glibc23-hppa-shmlba.dpatch + * glibc23-m68k-madv.dpatch + * glibc23-malloc-check.dpatch + * glibc23-regcomp.dpatch + * signal-texi.dpatch + * glibc23-ia64-strncpy.dpatch + * elf-machine-rela-mips.dpatch + * glibc23-linuxthreads-fix.dpatch + * locales-monetary.dpatch + + - These debian/patches/ are removed from cvs because + they are no longer being used and already fixed the previous versions: + * rtsig.dpatch + * crypt.dpatch + * s390x-lib64.dpatch + * hurd-fork-fix.dpatch + + - These debian/patches/ are fixed to apply for glibc + 2.3.2 + cvs.dpatch. + * alpha-pic.dpatch: Fix the diff conflict. + * glibc23-hppa-Rminkernel.dpatch: likewise. + * libgcc-compat-all.dpatch: remove reflected entries in glibc-2.3.2. + * libgcc-compat-other.dpatch: likewise. + * ldconfig.dpatch: modify to be enable to compile again + + - These bugs are fixed in this update: + * glibc 2.3.2 can handle errno correctly if 32 bit uid or gid is used + and errno=ENOSYS is defined before geteuid() is called. + setfsuid(), setfsgid() and getgroups() are also fixed with my patch, + bug reported by Fumihiko Kakuma. (Closes: #183694) + * Submitter Neil's patch is applied in the upstream. (Closes: #181701) + * cfmakeraw definition in manual terminal.texi is fixed with my patch. + It can be reassign only to manpages-dev. + * sparc and powerpc has O_DIRECT definition in fcntl.h. + (Closes: #157142, #157143) + * The definition both __bswap_16 and __bswap_32 in bits/byteswap.h is + fixed and it can be ready for non-gcc C-compilers. (Closes: #181910) + * BSD derived random functions are correctly braced into #if defined + __USE_BSD with my patch. (Closes: #108619) + * Dynamic loading problems with the recent OpenOffice.org, KDE, + Wine/Mono, Quake3 Arena, Oracle, and NVidia libGL library, is fixed. + Glibc TLS does not properly handle using dlopen() to access shared + libraries which utilize some TLS models. + (Closes: #171695, #184696, #167564, #192096, #200386) + * Missing ntp_adjtime weak reference on alpha is defined. + (Closes: #182654) + * Sparc64 sysdep.h typo is fixed. (Closes: #185648) + * stdio-common/sscanf.c for libc6-sparc64 with gcc-3.3 can become to be + compiled. (Closes: #185649) + * Timezone data is updated to tzdata2003a. + (Closes: #140788, #149862, #186210, #164719, #190322) + * /usr/bin/locale -a searches both /usr/lib/locale// and + /usr/lib/locale/locale-archive in this release. (Closes: #166979) + * Powerpc fpu_control.h is fixed to be enable to compile _FPU_SETCW + macro. (Closes: #137020) + * The IA-64 versions of __sigsetjmp() and getcontext failed to restore + ar.unat before returning, is fixed in this version. (Closes: #186654) + * regcomp() crashed with some regexp pattern is fixed. + (Closes: #187475) + * pthread_atfork() is removed from unistd.h. Including this definition + in unistd.h is implementation dependent issue, and the upstream + decided not to keep it. (Closes: #106254) + * It's fixed that malloc_stats() segfaults if you don't first allocate + memory. (Closes: #191295) + * Typo in the symbol lookup code is fixed, which causes the loading of + the oracle binary to fail (and possibly affects other apps as well). + (Closes: #191952) + * The abday values for de_DE is changed to two letters. (Closes: #115536) + * IA64 umount needs to set second parameter for sys_umount. It's fixed + in 2003-05-14 cvs. (Closes: #193327) + * tmpfile64() is now available on hurd-i386. (Closes: #171022) + * SIOCSIFNAME is added. (Closes: #164638) + * cos() now correctly returns the cosine, not the sine, of values near + 0.80 on machines lacking an optimised libm. (Closes: #153548) + * ioperm() returns -ENODEV on ARM machines without ISA or PCI. + (Closes: #199134) + + - debian/locales/usr/sbin/locale-gen: Fix the localedef invocation + argument order, to run under POSIXLY_CORRECT=1 environment. + (Closes: #185924) + + - debian/sysdeps/depflags.pl: add Suggests: manpages-dev in libc-dev + package. (Closes: #158410) + - debian/sysdeps/depflags.pl: Adding entry "Suggests: glibc-doc" + into depflags.pl push. + - debian/control.in/libc: Remove "Suggests: glibc-doc" in each -dev + package entry. + - debian/control: likewise. + + - debian/patches/s390-tls.dpatch: add to build glibc 2.3.2 on s390. + The correct fix is to modify the kernel headers, but for the present + we use it regardless of the kernel issue. + Patched by Gerhard Tonn . + - debian/packages.d/libc-dev.mk: s390 kernel-headers package does not have + generate-asm.sh. The current libc-dev.mk assumes the existence of this + script, but on s390 it's not existed. Now libc-dev.mk s390 asm setup + part does not use generate-asm.sh, and has the generate-asm.sh + functionality in its own. This makes s390 which has 32/64 bit multi + libraries are much easier to build. + Patched by Gerhard Tonn . + - debian/packages.d/s390x.mk: likewise. + + - debian/locales/DEBIAN/postinst: add "rm -rf /usr/lib/locale/*" + to remove all old locale dir and locale-archive in locales + configuration time. Requested by Denis Barbier . + - debian/locales/DEBIAN/config: /usr/lib/locale/* files are no more + deleted when /etc/locale/gen is not managaed by debconf. Patched by + Denis Barbier + - debian/locales/DEBIAN/postinst: likewise. + + - debian/locales/DEBIAN/{config,postinst,templates}: Debconf must not + be used to store configuration items; another even more important is + that user changes in configuration files must be preserved. + These files are now fixed with this issue. Patched by Denis Barbier + . Some suggestions by Joey Hess . + - debian/locales/DEBIAN/config: + * Replace /bin/bash by /bin/sh on the shebang line. + * Add support for backing up. + * Parse configuration files and set debconf values. + - debian/locales/DEBIAN/postinst: + * Recreate configuration files from debconf values and run locale-gen + * As explained by Joey Hess, this script should be safer because some + border cases are now taken into account: configuration files might + have no EOL at EOF, and line order is preserved. + - debian/locales/DEBIAN/templates: + * Apply patch from #117509 and another typo fix by Joey Hess + (Closes: #117509) + * In locales/locales_to_be_generated, Choices is no more translatable + because it is set to Choices: ${locales} + - debian/locales/usr/sbin/locale-gen: + * Clean up /usr/lib/locale/ before generating locales + - debian/po/{ca.po, de.po, es.po, fr.po, ja.po, ko.po, pt_BR.po, ru.po, + templates.pot}: update with debconf-updatepo. + + - debian/control: Change Section: from devel to libdevel for packages: + libc0.3-dev, libc6-dev, libc6-dev-s390x, libc6-dev-sparc64, libc6.1-dev + and libc1-dev. + - debian/control.in/libc: likewise. + - debian/control.in/s390x: likewise. + - debian/control.in/sparc64: likewise. + + - debian/control: Remove "Conflicts: php4" from libc1 and libc0.3. + - debian/control: Add "Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 + (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7)" to fix /usr/lib/64 vs + /usr/lib64 issue with upgrading from woody for sparc64 (see bug 156947). + Suggested by Dagfinn Ilmari Mannsaker . + (Closes: #188383, #193331) + - debian/control.in/sparc64: likewise. + + - debian/copyright: update the version and the year 2003. + + - debian/patches/locales-monetary.dpatch: add to change some locales + LC_MONETARY symbols: ar_SD, sr_YU, sr_YU@cyrillic, and es_EC. + And now this patch is merged into the upstream cvs, drop dpatch. + (Closes: #160040, #173963, #185342, #187142, #188159, #190785, #193020) + (Closes: #193508, #193509, #193510, #194791) + + - debian/manpages/localedef.1: remove "-h" from --help option entry. + (Closes: #187621) + + - debian/debver2localesdep.pl: add clever version recognition for binary + only NMU or source NMU/local packaging. + Patched by Gerhard Tonn . + + - debian/patches/glibc23-linuxthreads-fix.dpatch: add to revert Jakub's + change in 2003-04-02 to be enable to compile librt.so for the present. + And this bug is fixed during the development, this patch is dropped now. + Thanks to Jack Howarth . + + - debian/libc/etc/init.d/devpts.sh: Modify mounting devpts for 2.5.68 and + later. As of 2.5.68, devpts is not automounted when using devfs. So + even in that case, devpts needs to be mounted via the devpts.sh script + as well as the case that devfs is not used. + (Closes: #189792, #189879, #191785) + + - debian/libc/DEBIAN/postinst: Add code to remove a relic of the past + /usr/doc/ symlinks. This script should keep at least until + sarge release. (Closes: #189854) + - debian/glibc-doc/DEBIAN/postinst: likewise. + - debian/locales/DEBIAN/postinst: likewise. + - debian/nscd/DEBIAN/postinst: likewise. + - debian/libc/DEBIAN/postinst: Remove symlinks for libc-{dbg,dev,pic,prof}. + + - prep.sh: Add NPTL extract code. + - version: Add NPTL version. + + - debian/packages.d/sparc64.mk: bumping up --enable-kernel version from + 2.4.0 to 2.4.1. + - debian/packages.d/s390x.mk: likewise. + + - debian/patches/50_glibc232-mips-buildfix.dpatch: add for building + mips/mipsel correctly. Patched by Guido Guenther , + Thiemo Seufer . + + - debian/packages.d/libc-udeb.mk: libc-udeb includes libnss_dns and + libresolv. (Closes: #192577) + + - debian/patches/50_glibc23-hppa-entry.dpatch: added to fix funcptr + (function descriptors) for _start on hppa, so we need a + sysdeps/hppa/elf/entry.h (similar to ppc64, ia64, etc). + Patched by Randolph Chung . (Closes: #193656) + + - debian/patches/30_glibc232-base.dpatch: add that binutils 2.14.90.0.2 + has entered in sid, which contain the binutils portion of the base fix. + Reported by Jack Howarth . + + - debian/patches/sparc32-buildfix.dpatch: added to fix sparc32 build. + + * Ben Collins + - debian/contron.in/sparc64: Remove the superflous (and incorrect) dep on + gcc-3.2 for libc6-dev-sparc64. Add lib64gcc1 as a dep for libc6-sparc64. + - Use CC for building sparc64 libs. + - Remove build-dep for gcc-3.3 on sparc. + - Really fix devpts.sh so that it mounts devpts whenever devpts is + available and not mounted. + - sparcv8-target.dpatch: New patch that enables v8 optimizations for + sparc-linux compiles. Debian specific. For some reason config.sub + doesn't recognize sparcv8, else I'd just pass sparcv8-linux as the host + target. + - Change how things are passed to configure for optimized packages, so + that we let glibc set all the optimizations for us. + - Change how sparc64 and s390x are built. Before the binary stage would + force the build of the packages. Now, the build/install phases dep on + the same for sparc64 and s390x. Same way that the OPT packages are done. + + -- Jeff Bailey Tue, 15 Jul 2003 14:35:58 -0400 + +glibc (2.3.1-17) unstable; urgency=low + + * GOTO Masanori + - debian/libc/DEBIAN/preinst: Add NSS restarting preinstallation + service detection routine and messages. xdm, kdm, gdm, + postgresql, xscreensaver needs user's hand restart. + (Closes: #165258, #165915, #184036, #184495, #188724) + - debian/libc/DEBIAN/postinst: Edit NSS restarting messages to + adopt some preinst messages. + - Cleanup optimized and sparc64 builds. + + -- GOTO Masanori Sat, 19 Apr 2003 22:01:40 +0900 + +glibc (2.3.1-16) unstable; urgency=high + + * GOTO Masanori + - debian/patches/glibc23-cert-rpcxdr.dpatch: Fix "CERT Advisory + CA-2003-10 Integer overflow in Sun RPC XDR library routines" + (Closes: #185508). + + - debian/packages.d/glibc-doc.mk: Fix unneeded file '[' and ']' in + /usr/share/man/man3. + - These debian/patches/ are removed from cvs because + they are no longer being used and were superceeded by CVS patches: + - libgcc-compat-mips.dpatch + - libgcc-compat-sparc.dpatch + - debian/libc/DEBIAN/postinst: add spamassassin to restart during + upgrade from 2.2 to 2.3. (Closes: #185275) + - debian/control.in/opt: add one empty line at the end of file. + This fix avoids opt packages to get mixed debian/control + message with libc-udeb package. (Closes: #185688) + + -- GOTO Masanori Tue, 18 Mar 2003 00:04:13 +0900 + +glibc (2.3.1-15) unstable; urgency=low + + * GOTO Masanori + - debian/packages.d/optimized.mk: drop configure --disable-static + option, because it does not work. enable-kernel version bumps + up to 2.4.1. + + - debian/manpages/nscd.8: Apply slightly improvement for the nscd(8), + nscd_nischeck(8), and nscd.conf(5) man pages. Patched by + Sebastian Rittau (Closes: #94058) + - debian/manpages/nscd.conf.5: likewise. + - debian/manpages/nscd_nischeck.8: likewise. + - debian/manpages/zdump.1: add the description that zonename should be + relative path name from /usr/share/zoneinfo. (Closes: #171017) + - debian/manpages/locale.1: add the description for LOCPATH. + (Closes: #176661) + + - debian/locales/DEBIAN/templates: Add a description "what is the + locale?". (Closes: #119197) + - debian/FAQ: Add description how to setup your own locale with + debconf + locales. (Closes: #99763) + + - debian/locales/DEBIAN/templates: Introducing new templates format + with po-debconf. Thanks to Denis Barbier . + - debian/packages.d/locales.mk: likewise. + - debian/po/*: likewise. + - debian/control.in/main: Build-Depends-Indep: po-debconf. + - debian/po/ja.po: Update translation data. + - debian/po/fr.po: Update translation data. Translated by + Denis Barbier . (Closes: #183652, #193083). + + - debian/sysdeps/depflags.pl: Remove conflicts: file-rc (<< 0.7.0) + - debian/libc/DEBIAN/postinst: Use /usr/sbin/update-rc.d in updatercd(), + suggested by Anthony Towns . + - debian/libc/DEBIAN/postinst: Check /usr/{lib,share}/file-rc/ + because file-rc >= 0.7.0 does not use /usr/lib/file-rc. + + - debian/patches/glibc23-hppa-compat.dpatch: add hppa libgcc-compat + symbols patch, patched by Randolph Chung . + - debian/patches/libgcc-compat-all.dpatch: update for mips and add + for alpha, patched by Guido Guenther . + - debian/patches/libgcc-compat-other.dpatch: add for arm, m68k, ia64 + and s390. Patched by GOTO Masanori . + + - debian/locales/usr/sbin/locale-gen: add "set -e" in order to return + value. (Closes: #183449) + + - debian/packages.d/libc-udeb.mk: contain libpthread.so to support + installer using pthread. (Closes: #183155) + + - debian/sysdeps/depflags.pl: remove php4 conflicts from libc6. + (Closes: #183477, #184091) + + - debian/libc/DEBIAN/postinst: add proftpd-{ldap,mysql,pgsql} to + restart during upgrade from 2.2 to 2.3. (Closes: #184129) + - debian/libc/DEBIAN/postinst: add cupsys. (Closes: #184257) + + - debian/patches/glibc23-m68k-madv.dpatch: add to fix build error + for some MADV_* used software on m68k, pulled from the latest cvs. + (Closes: #159723, #181661, #184589) + + - debian/patches/glibc23-00-hppa-pthreads.dpatch: add to improve + linuxthreads on hppa. Pathced by Carlos O'Donell + . His summary: LinuxThreads is now using a + self-aligning lock. + - debian/patches/glibc23-hppa-malloc8.dpatch: add to improve malloc + on hppa. Patched by Carlos O'Donell . + His summary: Malloc alignment has been moved back to 8 for optimal + performance. + + - These debian/patches/ are removed from cvs because + they are no longer being used and were superceeded by CVS patches: + - glibc23-02-hppa-min-kern-unwind-fde.dpatch + - glibc23-03-hppa-mcontext.dpatch + - glibc23-04-hppa-fcntl64.dpatch + - glibc23-05-hppa-buildhack.dpatch + - glibc23-06-hppa-tests.dpatch + - glibc23-08-hppa-configure.dpatch + + - Glibc 2.3 uses another regex engine: "sed: woody version more than + 1000 times slower than potato version" should be fixed. + (Closes: #155751) + - en_CA can generate without warnings. In addition, we use debconf + interface in these days, this kind of "manual edit /etc/locale.gen" + bug should be avoided. (Closes: #151631) + - libc6.postinst restarts samba in these days. (Closes: #168189) + - _FPU_SETCW/_FPU_GETCW macro works fine on powerpc in these days. + "Incorrect macro _FPU_SETCW in " should be fixed. + (Closes: #137020) + - hyper and unsigned hyper are supported in the current glibc. + "rpcgen(1) doesn't handle 64 bit types" should be fixed. + (Closes: #69041) + + -- GOTO Masanori Wed, 26 Feb 2003 18:44:08 +0900 + +glibc (2.3.1-14) unstable; urgency=low + + * GOTO Masanori + - debian/patches/glibc23-cmov.dpatch: Fix hwcap condition code again, + previous version did not work properly under some situation. + - debian/sysdeps/depflags.pl: Fix libnss-db dependency from << 2.2-6 + to <= 2.2-6.1.1, because the first version of libnss-db to work + with libc6 2.3 is 2.2-6.1, and 2.2-6.2 works under all architectures + correctly. Suggested by Ryan Murray . + (Closes: #181834) + - debian/sysdeps/depflags.pl: Fix libc6.postinst breakage with file-rc + (<< 0.7.0), now libc6 conflicts them. (Closes: #181683, #182320) + + -- GOTO Masanori Fri, 21 Feb 2003 09:19:45 +0900 + +glibc (2.3.1-13) unstable; urgency=low + + * GOTO Masanori + - debian/libc/DEBIAN/postinst: Replace from "/usr/lib/file-rc" to + "/usr/share/file-rc" to follow up file-rc 0.7. + (Closes: #181551, #181556, #181606) + - debian/libc/etc/init.d/devpts.sh: Fix devpts.sh failure if + $devfs_mounted is empty. (Closes: #181541, #181591) + + -- GOTO Masanori Wed, 19 Feb 2003 09:26:17 +0900 + +glibc (2.3.1-12) unstable; urgency=low + + * GOTO Masanori + - debian/patches/glibc23-malloc-check.dpatch: Fix hppa MALLOC_CHECK_ + invalid pointer problem. (Closes: #177242) + - debian/patches/libgcc-compat-sparc.dpatch: Fix sparc libgcc compat + symbol problem. Patched by Guido Guenther + (Closes: #178645) + - debian/patches/locales-supported.dpatch: This dpatch addes many + locales especially for UTF-8 and ISO-8859-15, to display debconf + locale menu using SUPPORTED.orig. + (Closes: #135334, #154556, #177472, #99623, #130517) + - debian/packages.d/glibc-doc.mk: add pthread_{getspecific, key_delete, + setspecific} manpage symlinks to pthread_key_create. (Closes: #99530) + - debian/manpages/ldconfig.8: Update from the redhat manpages. + (Closes: #180916) + - debian/patches/libgcc-compat-all.dpatch: Fix i386 libgcc compat + symbol problem, this dpatch merges with + libgcc-compat-{sparc,mips}.dpatch, patched by Guido Guenther + . (Closes: #179781, #180330) + - debian/locales/DEBIAN/{postinst,templates,config}: Fix default + environment variable "Leave alone" does not affect its meaning. + (Closes: #180040) + * Daniel Jacobowitz + - debian/libc/etc/init.d/devpts.sh: Update devpts.sh to work with the + new grep package (Closes: #181409). + + -- GOTO Masanori Sat, 8 Feb 2003 22:08:59 +0900 + +glibc (2.3.1-11) unstable; urgency=low + + * GOTO Masanori + - debian/libc/DEBIAN/preinst: Fix silly bug at parisc64 kernel version + check, replace from $ver to $kernel_ver. (Closes: #178159, #178217) + - debian/patches/glibc23-cmov.dpatch: Fix hwcap inappropriate handling + not to load CMOV libraries (/*/lib/i686/cmov/) on VIA C3 architecture. + - debian/patches/libgcc-compat-mips.dpatch: Fix undefined some symbols + like __umoddi3 to export libgcc compat symbol. Patched by + Guido Guenther . + - debian/patches/0list: Disabled ldso-disable-hwcap.dpatch because + (1) -opt is not provided currently, (2) disabling hwcap is not good + way whether -opt package is installed or not. + + -- GOTO Masanori Wed, 22 Jan 2003 22:17:45 +0900 + +glibc (2.3.1-10) unstable; urgency=low + + * The "trudging the sludge" release. + + * GOTO Masanori + - debian/packages.d/glibc-doc.mk: install linuxthreads/man/*.man + manpages into glibc-doc package. (Closes: #155794) + - debian/libc/DEBIAN/preinst: add kernel version check compared with + 2.4.19-pa17 on parisc64. Suggested by Randolph Chung. + - debian/libc/DEBIAN/preinst: add kernel version requirement for + 2.5.53-pa3 in 2.5 series kernel on parisc64. + - debian/locales/DEBIAN/config, debian/locales/DEBIAN/templates: + add translated selection "Leave alone" and "None" because such strings + were hardcoded and could not be localized in the templates file. + Patched by Denis Barbier . (Closes: #171502) + - debian/packages.d/glibc-doc.mk: Fix glibc-doc dangling symbolic link for + /usr/share/doc/glibc-doc/html/index.html. (Closes: #169878, #176701) + - debian/libc/DEBIAN/postinst: Fix to work $DEBIAN_FRONTEND value + regardless its case insensitivity. See #176483. + - debian/sysdeps/depflags.pl: Fix again to conflict against wine + (<< 0.0.20021007-1) and php4 (<< 4:4.2.3-5). (Closes: #170385) + - debian/control: Fix unneeded Conflicts: wine and php4, as denoted above. + - debian/control.in/libc: likewise. + - debian/patches/glibc23-cmov.dpatch: Add CMOV to hwcap, for VIA C3 which + is i686 class processor, but does not have 686 optional instruction CMOV. + - debian/patches/glibc23-regcomp.dpatch: Fix regex crash, if clearing + buffer, clear allocated too. This patch is pulled from the current + upstream glibc cvs. (Closes: #175529) + + * Daniel Jacobowitz + - debian/patches/alpha-pic.dpatch: Fix errno reporting from syscalls + on Alpha (Closes: #175511). + + -- GOTO Masanori Sun, 5 Jan 2003 09:13:22 +0900 + +glibc (2.3.1-9) unstable; urgency=low + + * Daniel Jacobowitz + - debian/packages.d/s390x.mk: Don't try to install CVS directories + (Closes: #174267). + - debian/packages.d/optimized.mk, debian/packages.d/sparc64.mk: + Likewise. + - debian/patches/glibc23-errno.dpatch: Updated for "h_errno" and "_res" + also. + - Upload properly this time, with a .diff.gz (Closes: #174436). + + * GOTO Masanori + - debian/patches/glibc23-hppa-shmlba.dpatch: Applied hppa SHMLBA + definition. (Closes: #170507) + - debian/libc/DEBIAN/postinst: add mysql-server in restarting service + list. (Closes: #172123) + - debian/patches/document-fix.dpatch: Applied patches sent by + H. S. Teoh and GOTO Masanori. (Closes: #117680) + - debian/patches/glibc23-asserth-decls.dpatch: Applied patches send by + Jeroen T. Vermeulen . (Closes: #106253, #164571) + - debian/libc/DEBIAN/postinst: Removed 'logind' from checking list + because it does not exist. + - debian/libc/DEBIAN/postinst: Replaced dpkg -s from apache2 to + apache2-common correctly. + - debian/libc/DEBIAN/postinst: Redirect dpkg stderr message to /dev/null, + which is showed if there are not installed packages. (Closes: #168481) + - debian/libc/DEBIAN/postinst: Message typo fixed as "successfully." + (Closes: #168483) + - debian/manpages/ldd.1: Updated newer version which is pulled from + RedHat manpages. + - debian/locales/usr/sbin/locale-gen: add '-A /etc/locale.alias' into + localedef option to consult locale alias name when making archives. + + -- Daniel Jacobowitz Thu, 2 Jan 2003 12:02:13 -0500 + +glibc (2.3.1-8) unstable; urgency=high + + * Daniel Jacobowitz + - debian/patches/glibc23-errno.dpatch: Temporarily re-enable linking + to "errno" to fix compatibility with broken binaries + (Closes: #174040, #174004). + - debian/patches/glibc23-getaddrinfo.dpatch: Add getaddrinfo patch + from CVS (Closes: #174027). + - debian/control.in/main: Add myself to Uploaders. + + -- Daniel Jacobowitz Tue, 24 Dec 2002 12:35:39 -0500 + +glibc (2.3.1-7) unstable; urgency=high + + * The "Climb Ev'ry Mountain" release. + + * GOTO Masanori + - debian/packages.d/s390x.mk: typo fixed, s390x-linux should be + ok to rebuild. (Closes: #173874) + - debian/patches/glibc23-getdents64-fix.dpatch: Fix getdents64 + failure on linux kernel 2.2. (Closes: #173913) + + * Jeff Bailey + - sysdeps/linux.mk: Finish disabling sparc64. + + -- GOTO Masanori Sun, 22 Dec 2002 01:35:43 +0900 + +glibc (2.3.1-6) unstable; urgency=low + + * The "I will not be thwarted" release. + + * Daniel Jacobowitz + - Update glibc23-ctype-compat.patch to fix segfaults in old static + binaries (Closes: #171451). + - Allow building from the CVS checkout without getting CVS dirs in the + resulting packages. Whew. + + * Jeff Bailey + - debian/patches/cvs.dpatch: Update. + (Closes: #171550, #170507) + - debian/patches/0list: Update + - debian/control.in/libc: Conflict against wine (<< 0.0.20021007-1) + (Closes: #170385) + Also conflict against php4 (<< 4:4.2.3-5) + Thanks to Steve Langasek for hunting this down! + - debian/rules: Disable sparc64 build targets for now. + - debian/packages.d/s390x.mx: Setup the 64 bit build as a cross-compile, + because 's390' cannot run binaries intended for 's390x' + + * GOTO Masanori + - cvs.dpatch update resolve some bugs (Closes: #169919, #165603) + - debian/patches/glibc23-hppa-Rminkernel.dpatch: Added hppa kernel + version checking due to prevent people from installing unmatched version. + Patched by Carlos O'Donell (Closes: #171804) + - debian/libc/DEBIAN/preinst: likewise. + - glibc23-function-compat.dpatch: Added for some bad application to + keep running and not to resolve some symbols like __libc_wait, + __libc_waitpid, so on. This patch will be removed when sarge will be + relased apparently. (Closes: #165358, #173201) + + - debian/locales/DEBIAN/config: db_set is set if and only if locale.gen + is existed. Patched by Masato Taruishi + His note: + The previous config script always set locales_to_be_generated + even when /etc/locale.gen doesn't exist. So the question in + dpkg-preconfigure time became empty in dpkg --configure locales time. + This change resolves long outstanding locales bug. + (Closes: #156386, #151784, #154244, #164523) + + -- Daniel Jacobowitz Mon, 2 Dec 2002 17:26:38 -0500 + +glibc (2.3.1-5) unstable; urgency=low + + * This is the "Leonids" release. + + * Jeff Bailey + - debian/packages.d/libc-udeb.mk: Do not rename file to SONAME if it's + a symlink. Needed for hurd-i386. + - debian/patches/signal-texi.dpatch: New file to remove link to + linuxthreads manual. Needed for hurd-i386. + + Welcome back, hppa: + + - debian/patches/glibc23-00-hppa-pthreads.dpatch + - debian/patches/glibc23-01-hppa-dl-machine.dpatch + - debian/patches/glibc23-02-hppa-min-kern-unwind-fde.dpatch + - debian/patches/glibc23-03-hppa-mcontext.dpatch + - debian/patches/glibc23-04-hppa-fcntl64.dpatch + - debian/patches/glibc23-05-hppa-buildhack.dpatch + - debian/patches/glibc23-06-hppa-tests.dpatch + - debian/patches/glibc23-07-hppa-atomicity.dpatch + - debian/patches/glibc23-08-hppa-configure.dpatch + Thanks to Carlos O'Donell for these! + + - debian/control.in/libc-udeb: Remove missing trailing blank line. + Thanks to Tollef Fog Heen. Closes: #169342 + - debian/control.in/s390x: Remove missing trailing blank line. + Thanks to Gerhard Tonn. + + - debian/libc/DEBIAN/postinst: Fix error in apache2 restart logic. + Thanks to Carlos O'Donell. + + - debian/packages.d/libc-dev.mk: Fix missing tabs from s390x section. + - debian/patches/s390-types.dpatch: New file to fix __ssize_t + Thanks to Gerhard Tonn for these. + + - debian/packages.d/libc-udeb.mk: use DEB_HOST_ARCH, not DEB_BUILD_ARCH + for determining package name. Fixes cross-compilation case. + + - debian/patches/0list: Update for above + + -- Jeff Bailey Mon, 18 Nov 2002 23:12:47 -0500 + +glibc (2.3.1-4) unstable; urgency=low + + * Daniel Jacobowitz + - debian/patches/cvs.patch: Fix RCS ID tags. + - debian/rules, debian/sysdeps/sysdeps.mk: Move i386 optimization + hack out of the rules file and put debugging information back in + libc6-dbg for i386 (Closes: #165892). + - debian/patches/crypt.dpatch: Fix initialization in crypt_r + (Closes: #163260). + - debian/patches/rtsig.dpatch: Fix the value of SIGRTMIN in non-threaded + applications (Closes: #165412). + - debian/rules, debian/packages.d/libc-dev.mk, + debian/packages.d/libc-udeb.mk: Don't use '{}' wildcards, to fix + building with /bin/sh -> ash. + + * GOTO Masanori + - debian/libc/DEBIAN/postinst: add more NSS services: + samba, courier-authdaemon + - debian/packages.d/sparc64.mk: fix build error. + - debian/libc/DEBIAN/postinst: modify apache2 service, + apache2 ships its init script in apache2-common, but the script + is in apache2. So replace from apache2-common to apache2 is needed. + Closes: #165959 + - debian/patches/cvs.patch: Hurd trailing slash handling fixed. + Closes: #162414 + - debian/patches/locales-stuff.dpatch: Fixed error generating de_CH, + it's caused by typo. Closes: #140054 + + * Jeff Bailey + - debian/patches/cvs.dpatch: New file. + - debian/patches/0list: Update + - debian/sysdeps/depflags.pl: Conflict against libnss-db <= 2.2-6 + Thanks to Ryan Murray for the patch. Closes: #168890 + + - debian/patches/s390x-lib64.dpatch: New file. + - debian/control.in/s390x: New file. + - debian/libc-s390x/postinst: New file. + - debian/packages.d/libc-dev.mk: Handle asm-s390x + - debian/packages.d/s390x.mk: New file. + - debian/rules: Include s390x files. + - debian/rules.d/control.mk: Add s390x to control_deps, and include + control.in/s390x + - debian/sysdeps/linux.mk: Add s390x support. + + Thanks to Gerhard Tonn. Closes: #169176, #166450. + + - debian/control.in/main: Update Standards-Version to 3.5.7.0 + + - debian/patches/glibc22-hppa-fcntl.dpatch: Remove File + - debian/patches/glibc22-hppa-fcntl-lfs.dpatch: Remove File + - debian/patches/glibc22-hppa-mcontext.dpatch: Remove File + - debian/patches/glibc22-hppa-pthreads.dpatch: Remove File + - debian/patches/glibc22-hppa-rela.dpatch: Remove File + - debian/patches/glibc22-hppa-tests.dpatch: Remove File + - debian/patches/glibc22-hppa-unwind.dpatch: Remove File + + - debian/patches/hurd-fork-fix.dpath: New File. + + Note: CVS patch disabled for this upload + + -- Daniel Jacobowitz Tue, 29 Oct 2002 13:14:51 -0500 + +glibc (2.3.1-3) unstable; urgency=low + + * GOTO Masanori + - debian/patches/librt-mips.dpatch: librt is not worked on + mips/mipsel architecture, we apply it until sarge will be + released. Thanks to Guido Guenther . + - debian/patches/glibc23-ctype-compat.dpatch: added. + glibc 2.3.x changes some symbols (__ctype_b, __ctype_toupper, + __ctype_tolower) as hidden attribute. These symbols that are + crashing the old 2.2.x dynamic linking code in static binaries + are now exported. + This patch is originally pulled from RedHat patch, I modified + it for current debian glibc. Closes: #165554 + + -- GOTO Masanori Sun, 20 Oct 2002 15:04:48 +0900 + +glibc (2.3.1-2) unstable; urgency=low + + * This is the "Why did everything stop working, mommy?" release + + * Jeff Bailey + - debian/libc/DEBIAN/postinst: Warn about NSS changes if upgrading + from older than 2.2.94-1. Add ssh-krb5 and apache2 to list of + services that definetly need restarting. + + Add libc-udeb (closes: #158589) Thanks to Tollef Fog Heen. + - debian/control.in/libc-udeb: New file + - debian/packages.d/libc-udeb.mk: New file + - debian/rules: Call udeb machinery. + - debian/rules.d/control.mk: Call udeb machinery. + + - debian/sysdeps/build-options.mk: Strip libc on alpha + + - debian/control.in/main: 2.13.90.0.10-1 is broken on s390 + require 2.13.90.0.4-1 for them. + + * GOTO Masanori + - debian/patches/0list: disable ip6-fix.dpatch. Closes: #165287 + - debian/packages.d/libc-udeb.mk: Clean up and fix indent crap. + - debian/rules.d/shlibs.mk: bump up to 2.3.1-1. Closes: #165456 + + -- Jeff Bailey Fri, 18 Oct 2002 11:27:07 -0400 + +glibc (2.3.1-1) unstable; urgency=low + + * This is the "twilight" release... + + * Jeff Bailey + - Upgrade tarballs to 2.3.1 + - version: Update to 2.3.1 + + - debian/sysdeps/linux.mk: Do not build optimized libraries + - debian/rules.d/control.mk: Likewise + + - debian/control.in/main: Require binutils 2.13.90.0.10-1 for ppc + + - debian/patches/elf-machine-rela-mips.dpatch: New file + - debian/patches/0list: Update accordingly. + + - debian/rules: Use -O on i386. This should go somewhere else, + but I want to get this release out. + + * XXX Below here was during the 2.3 development, and never released. + + * Jeff Bailey + - Upgrade tarballs to 2.3 + - version: Update to 2.3 + + - debian/patches/hppa-data-start.dpatch: Remove, incorporated upstream + - debian/patches/various-lsb-fixes.dpatch: Remove, incorporated upstream + + - debian/patches/0list: adjust accordingly + Also, prune ia64-reloc-none from the list. + I can't tell from the code snippet if this + has been incorporated or not. + + - .cvsignore: Add the stamp directories + + - debian/rules: Don't put CFLAGS in configparms, resolves ldconfig + miscompile on i386 + + - debian/rules: Add freebsd-i386 support + - debian/rules.d/control.mk: Add freebsd-i386 support + - debian/sysdeps/freebsd.mk: New file to add freebsd-i386 support + - debian/sysdeps/paths.mk: Add freebsd-i386 support + - debian/sysdeps/soname.mk: Add freebsd-i386 support + + * XXX Below here was during the 2.2.94 development, and never released. + + * Jeff Bailey + - Upgrade tarballs to 2.2.94 + - version: Update to 2.2.94 + + - debian/patches/cvs: Remove + - debian/patches/manual-texinfo4: Remove, incorporated upstream. + - debian/patches/i386-mathinline.dpatch: Remove, glibc headers require + ANSI compilers. + - debian/patches/db1-addon-enabler.dpatch: Remove + - debian/patches/0list: adjust accordingly + + - debian/patches/0list: Comment out string2-pointer-arith. + This was originally created to fix #44697, but without this + patch, 44697 is no longer reproducable. + + - debian/patches/fhs-linux-paths.dpatch: Update to new template format + + - .cvsignore: New file + + * XXX Below here was during the 2.2.93 development, and never released. + + * Jeff Bailey + - Upgrade tarballs to 2.2.93 + - version: Update to 2.2.93 + + The following important patches are still disabled: + + glibc22-hppa-pthreads, glibc22-hppa-rela, ia64-perf + + - debian/patches/0list: prune commented out patches that won't + be needed anymore + + - debian/patches/ia64-reloc-none.dpatch: Updated, thank to + Randolph Chung + + - debian/make-cvs-patch.sh: New file. + + - debian/patches/template.dpatch: Update headers to new format. + + - debian/patches/hurd-ioperms.dpatch - Deleted + - debian/patches/hurd-lfs64.dpatch - Deleted + - debian/patches/hurd-update.dpatch - Deleted + - debian/patches/syserrlist.dpatch - Deleted + + - debian/README - More updates + + - debian/rules.d/control.mk: debian/control should Depend on + debian/sysdeps/depflags.pl + + - debian/sysdeps/depflags.pl: Actually add the dependancy on + libdb1-compat. This is an update to GOTO Masanori's change, + Thanks to Ryan Murray for catching this. + + - debian/patches/mathpatch.dpatch: Prune + + - debian/rules.d/patch.mk: Add `setup' as an alias for `patch' + to provide dbs compatability. + + - debian/patches/cvs.dpatch: Sync with CVS from September 14th. + - debian/patches/0list: Updated + + * GOTO Masanori + - debian/packages.d/glibc-doc.mk: change texi2html processed file from + chapters.texi to libc.texinfo. Closes: #159417 + - debian/packages.d/libc-{dbg,pic,prof}.mk: fix /usr/doc removal + compilation failure. + - debian/libc/DEBIAN/postinst: Fix 'grep -v' failure if the size of + /etc/ld.so.nohwcap is 0. + - debian/rules.d/control.mk: Generate libc-opt control information. + + - Updating 2.2.9x fixes LSB 1.2 compliance. Closes: #156821 + - debian/control: add Depends: libdb1-compat. + Until woody, libdb1 is included in libc6 package. However after sarge, + libdb1 support is removed. libdb1-compat contains libdb1 which is + formerly provided by libc6. Now libc6 depends on libdb1-compat, + so upgrading from woody to sarge does not break any libdb1 issues. + Closes: #155904 + + - debian/patches/glibc22-hppa-fcntl.dpatch: added, patched by + Carlos O'Donell . + - debian/patches/glibc22-hppa-fcntl-lfs.dpatch: added, patched by + Randolph Chung . Closes: #160846 + + * Ben Collins + - Make sparc64 build use gcc-3.2. + - Update all config options to not use --disable-sanity-checks, since we + are actually using gcc-3.2 for everything. + - Patch cleanups. + - Re-enable optimized libs. Includes a simple mechanism which should fix + the conflicting symbols during libc/libc-opt upgrade scenarios. This + means that libc6-v9, libc6-i586 and libc6-i686 are back in full swing. + - Remove all references to /usr/doc symlink crap, which is deprecated. + + * XXX Below here was during the 2.2.92 development, and never released. + + * Jeff Bailey + - Upgrade tarballs to 2.2.92 + - version: Update to 2.2.92 + - debian/control.in/main: Require gcc-3.2 for all archs + - debian/patches/0list: prune glibc-cvs, glibc22-s390-resource, + gmon-start, locales-de_CH, sh-sysdep, alpha-build-failure + + These are already included in the 2.3 series. + + - debian/patches/glibc22-misc.dpatch: Split into ... + debian/patches/makeconfig.dpatch: ... this + debian/patches/locale-es_AR.dpatch: ... and this + debian/patches/i386-mathinline.dpatch: ... and this + debian/patches/ldconfig.dpatch: ... and this. + + - debian/patches/makeconfig.dpatch: Update for 2.3 series + + - debian/patches/0list: Temporarily disable some other patches: + + glibc22-hppa-pthreads, glibc22-hppa-rela, ia64-perf + + - debian/rules: memset.S works on ppc now, so stop deleting it. Thanks + to Jack Howarth for letting us know. + + - debian/sysdeps/gnu.mk: Remove --enable-libio, now set by default. Add + NO_TEST = yes, make check does not run on i386-gnu. + + - debian/sysdeps/tools.mk: Hardcode gcc-3.2 for $(CC) and $(BUILD_CC) + until gcc-defaults switches. + + - debian/rules: use CC=$(CC) when calling configure to get any changed + definitions. + + - debian/control.in/main: Require binutils (>= 2.13.90.0.4-1) + + - debian/rules: Add time/date stamps to beginning and end of log files + + - db1-addon-2.1.3.tar.bz2: Delete + + - debian/ppc-memset.S: Delete + + - debian/README: Update + + * GOTO Masanori + - debian/packages.d/libc-dbg.mk: update libpthread-0.9 -> 0.10. + - packages.d/libc.mk: likewise. + - packages.d/optimized.mk: likewise. + - packages.d/sparc64.mk: likewise. + + - debian/patches/glibc22-hppa-mcontext.dpatch: Fix unmatched userland + mcontext_t definition differed from kernel. Patched by + Carlos O'Donell . Closes: #157374 + + * XXX Below here was during the 2.2.5 development, and never released. + + * GOTO Masanori + - debian/patches/glibc-cvs.dpatch: Update from Glibc CVS. + - debian/patches: Dropped applying below patches due to updating + glibc-cvs.dpatch. + hurd-update, hurd-ioperms, ia64-strncpy, sparc-misc, resolv-nss_dns, + glibc-openoffice-fixes, xdr-array-security, hurd-lfs64, + syserrlist, mathpatch + - Fix gcc 3.1/3.2 compatibility building for glibc on ppc, with upstream + patched by Jack Howarth and + Franz Sirl . + Closes: #155606 + + -- Jeff Bailey Thu, 17 Oct 2002 08:37:52 -0400 + +glibc (2.2.5-15) unstable; urgency=low + + * debian/patches/dl-procinfo-fix.dpatch: Fix libssl optimization + problem occured by glibc dl-procinfo. + Closes: #161700, #161717, #161720, #161740, #161773, #161774 + Closes: #161786, #161788, #161813 + + -- GOTO Masanori Thu, 3 Oct 2002 09:56:46 +0900 + +glibc (2.2.5-14.3) unstable; urgency=low + + * NMU + * debian/patches/glibc22-mips-mcontext.dpatch: delete. + + -- Ryan Murray Sun, 15 Sep 2002 14:21:21 -0700 + +glibc (2.2.5-14.2) unstable; urgency=medium + + * NMU + * debian/patches/alpha-stxncpy.dpatch: keep testsuite patch (accepted + upstream), but disable all use of stxncpy until a correct patch can + be made. + + -- Ryan Murray Thu, 12 Sep 2002 13:04:47 -0700 + +glibc (2.2.5-14.1) unstable; urgency=low + + * NMU + * sysdeps/depflags.pl: Make libc{6,6.1} depend on libdb1-compat + (closes: #155904) + * debian/patches/alpha-stxncpy.dpatch: Add patch from Daniel Jacobowitz + for alpha stxncpy (closes: #159633) + * debian/patches/glibc22-mips-msq.dpatch: Add + sysdeps/unix/sysv/linux/mips/bits/msq.h for mips (closes: #159923) + * debian/patches/glibc22-hppa-fcntl.dpatch: Add DN_* and F_NOTIFY definitions + for hppa (closes: #159636) + * debian/patches/glibc22-hppa-mcontext.dpatch: correct definition of mcontext + to match kernel (closes: #157374) + * debian/patches/glibc22-mips-mcontext.dpatch: correct definition of mcontext + to match kernel (closes: #160462) + * add build-depends on dpkg 1.10.8 to ensure we use the install-info that + has the perl 5.8 workaround. + + -- Ryan Murray Tue, 10 Sep 2002 22:35:48 -0700 + +glibc (2.2.5-14) unstable; urgency=low + + * GOTO Masanori + - debian/patches/sh-sysdep.dpatch: Added the patch to compile for sh[34] + sh[34]eb. Closes: #156273 + - debian/patches/glibc22-m68k-compat.dpatch: Newer m68k debian specific + compatibility patch. Patched by Michael Fedrowitz . + - debian/patches/malloc-security.dpatch: Applied malloc security patch + Patched by Wolfram Gloger . + - debian/patches/alpha-build-failure.dpatch: Fix alpha build failure. + + -- GOTO Masanori Wed, 7 Aug 2002 20:56:54 +0900 + +glibc (2.2.5-13) unstable; urgency=low + + * Ben Collins + - Last maintainer upload for me. + - Fix double getent listing for build of libc package. + Closes: #154133, #152866 + - Set maintainer to the debian-glibc mailing list. Set uploaders to myself + and others. + - Placed into CVS (this log entry is the first test commit). + - ia64 build failure was fixed in last NMU. Closes: #151956 + - This sshd/libc bug is long since gone. Closes: #72596, #82468 + - ldconfig search order has also since been fixed. Closes: #105249 + - Add patches that OpenOffice needs in order to build. Closes: #153107 + - Bump min kernel supported to 2.2.0. Closes: #149529 + - Remove db1 compat library. The only user I know of this is coda. Coda + can include it's own version of the library now. I've emailed the coda + maintainer. + - Bump the shlibs ver because of the min-kernel change, and db1 removal. + - Add xdr-array.c security patch, Closes: #154992 + + * GOTO Masanori + - applied patches/locale-de_CH. + - debian/control: fix my uploader address due to my obsolete gpg key. + - debian/copyright: update copyright year. + + * Jeff Bailey + - Add hurd-i386 patch for support LFS from CVS + - Add patch to only declare sys_errlist and sys_nerr on Linux. This + allows gcc to build cleanly on hurd-i386. + - Require mig >= 1.3-2 (hurd-i386 only), and hurd-dev >= 20020608-1 + (hurd-i386 only) + - Prune hurd-ldflags from Hurd patch list. Noone is quite sure what + it's for. With this change, all hurd-i386 patches are now upstream + in CVS. + - Add 'mathpatch' to fix a math testsuite failure. + + -- Ben Collins Thu, 25 Jul 2002 11:13:22 -0400 + +glibc (2.2.5-12) unstable; urgency=low + + * Non-maintainer upload to fix build problems on ia64 + * replaces ia64-asm-fixes.dpatch with ia64-perf.dpatch, ia64-strncpy.dpatch + + -- Bdale Garbee Tue, 16 Jul 2002 17:09:24 -0600 + +glibc (2.2.5-11) unstable; urgency=low + + * Yet another NMU + * Build with a -11 version to work around fragile logic that breaks + locale dependencies when using NMU versioning. Closes: Bug#152968 + + -- Wichert Akkerman Sun, 14 Jul 2002 23:59:04 +0200 + +glibc (2.2.5-10.0) unstable; urgency=low + + * Non-maintainer upload by the security team + * Rebuild, uploads to both testing and unstable are not allowed + + -- Wichert Akkerman Sun, 14 Jul 2002 04:48:50 +0200 + +glibc (2.2.5-9) testing-security unstable; urgency=low + + * Something fucked up. Not sure why the .diff.gz size didn't match the + .changes/.dsc. Not sure why katie didn't reject the upload when it found + that out aswell. + + -- Ben Collins Sat, 13 Jul 2002 10:08:51 -0400 + +glibc (2.2.5-8) testing-security unstable; urgency=low + + * Resolver security bug fix. + + -- Ben Collins Fri, 12 Jul 2002 18:24:28 -0400 + +glibc (2.2.5-7) unstable; urgency=low + + * Misc ia64 asm updates, and strncpy fix + * Misc sparc patches from DaveM + * Revert sparc64 back to lib64 from my rebelious lib/64 effort. Use gcc-3.1 + now. + + -- Ben Collins Mon, 17 Jun 2002 22:33:39 -0400 + +glibc (2.2.5-6) unstable; urgency=low + + * Fix locales/config to be 755. + * Add big fat note to default nscd.conf about how host cache is insecure, + and disable it by default. This lowers the severity of #139879 for the + time being. I'll close it when a proper fix is in. + * Hurd patches from Jeff Bailey. Hurd goes to libc0.3! + + -- Ben Collins Sun, 28 Apr 2002 11:21:48 -0400 + +glibc (2.2.5-5) unstable; urgency=low + + * Fix missing LOCALES var in locale-gen. + * Fix space before "]" in locales/postinst. Closes: #139902, #139977, + #140048, #140464, #141408, #141515, #141558, #141617, #141786 + * Generate list of locales directly in locales/DEBIAN/config, so that we + have a working list during pre-inst. Closes: #76954, #141384 + * Backout nice changes for now. + + -- Ben Collins Mon, 25 Mar 2002 21:05:44 -0500 + +glibc (2.2.5-4) unstable; urgency=low + + * Include s/ip6.arpa/ip6.int/ patch from Fabbione. Closes: #119773, + #132310 + * Fix perms on locales/DEBIAN/config. Closes: #134094, #139682 + * Update from Glibc CVS: Lots of euro conversions and locales updates. + Closes: #128181, #130259 + Lots of other various fixes (please read the ChangeLog). Closes: #138094 + * Upstream fixed ia64 ldd rewrite problem. Closes: #128451 + * Upstream fixed nice return. Closes: #136815 + * pt_BR translation is ok now, Closes: #128530 + * Applied patch from Ganesan R to better handle some locale names. + Closes: #128969 + * Add ARM patch to disable hardware caps. + * Fix typos in catalan template. Closes: #133247 + * Add a "Leave alone" option for locales setting of /etc/environment. + Make it the default. Closes: #133315, #133315 + * HPPA patch from Randolph Chung. Closes: #133666 + * Fix zh_HK date output, from Anthony Fok. + * s/Noninteractive/noninteractive/ (hopefully for the last time). + Closes: #134381, #137348 + * Fix locales/config for when locale.gen doesn't exist. + Closes: #135343, #134613, #139284 + * Patch from Gary Hade (via Randolph Chung) to fix gmon-start. + Closes: #135748, #129903 + * Fix locale.1 - s/LC_PAPR/LC_PAPER/ Closes: #114174 + * Add glibc22-hppa-tests patch from Randolph Chung. Closes: #137513 + * Alistair McKinstry: + - Added locale.alias(5) and locale.gen(5) man pages. Closes: #106117 + - Patch for glibcbug to correctly handle bad EDITOR setting. + Closes: #128699 + - Include glibcbug.1 manpage. Closes: #128701 + - Add patch to fix segv in localedef. + - Patch for locale.1 and localedef.1 to add missing LC_* vars. + Closes: #114174 + - Fix for the d_fmt field in de_CH. Closes: #27397 + - Fix locale.alias so Russion charset is KOI8-R instead of ISO-8859-5. + Closes: #62586 + - s/Jun/Juni/ s/Jul/Juli/ for sr_YU. Closes: #131846 + - Typo in categories.def. Closes: #133379 + - Update iso-4217.def Closes: #133380 + - Re-enable el.po since we are using newer gettext. Closes: #133383 + * nscd.conf.5: Clarification. server-user option cannot be used with + -S/--secure. It will fail to start. Also note that using server-user other + than root may break some lookup services. Closes: #139433 + * Completely remove the pthread man pages. They are _way_ out of date (last + updated in 1998 according to the ChangeLog). Use the info or html docs + instead. Feel free to send me mucho patches for them, if you want them + back. Closes: #139052, #139042 + * Various LSB conformance patches from Joey Hess. Closes: #136815 + * ia64 patch for R_IA64_NONE relocs. Closes: #135314 + + -- Ben Collins Sun, 24 Mar 2002 09:49:37 -0500 + +glibc (2.2.5-3) unstable; urgency=low + + * Fix logic in locales postinst which would fail on empty or missing + /etc/environment. Closes: #132025, #131999, #132244 + * Remove build-dep on gcc-3.0-sparc64 + * Fix case where no locales are selected, so the only choices for LANG are C + and None. This left a hangin comma which debconf doesn't seem to like. + Closes: #132245 + + -- Ben Collins Sun, 3 Feb 2002 23:13:29 -0500 + +glibc (2.2.5-2) unstable; urgency=low + + * Remove glibc22-m68k-resource.dpatch. Patch is already included upstream. + Closes: #130922 + * Fix thinko in locales postinst. Also add a "None" option for LANG, and + check for it in postinst. + * HPPA correct unwind setting, from Matthew Wilcox. Also update patch + splitting the linuxthreads and rel/rela changes. Closes: #131216 + * Fix copyright shown for the GNU Libc Manual. Closes: #130866 + * Fix problem where a binary-NMU rebuild of libc would provide a version + that was incompatible with the current locales dep. + * Fix atomic_lock_t decleration for hppa. Closes: #131367 + * Fix logic in locales where LANG wasn't being set in /etc/environment. + Closes: #131040 + * Moved SUPPORTED list to /usr/share/i18n/, since policy says it can't be in + /usr/share/doc/locales/. Fixup debconf scripts to notice this. + * A few patches from CVS: + - Fixes bad optimization in dynamic linker + - Updates m68k and arm for unwind + - tzdata2002b updates + - Some irrelevant (for us) x86_64 updates + * Patch from Gerhard Tonn for s390-32 for bits/resource.h. + * libc6-sparc64-dev: Change dep to gcc-3.0 instead of gcc-3.0-sparc64. The + packages are now merged. + + -- Ben Collins Fri, 1 Feb 2002 11:52:54 -0500 + +glibc (2.2.5-1) unstable; urgency=low + + * New upstream. Closes: #122980, #126441 + * locales.postinst: Add a signature line to /etc/locale.gen so people can + take over the file manually instead of through debconf. + * Added -de template for locales. Closes: #114078 + * Removed need for generate-config.mk. SUPPORTED list for debconf is now + generated dynamically using SUPPORTED.gz. + * Added debconf option in locales to choose LANG= default in + /etc/environment based on contents of /etc/locale.gen. Closes: #117216, + #120410 + * Patched nscd init script. Patch supplied by Grant Bowman. Closes: #121942 + * Do not install tzconfig(8), Closes: #123679 + * Removed obsolete BSD license clause in debian/copyright. Closes: #123821 + * Applied spelling patch for locales description. Closes: #125092 + * Updated glibc-doc description to note that it includes html docs too. I am + not, however, splitting info and html docs into seperate packages. Closes: + #125825 + * Check for the existence of libdb.so.3 before cat'ing it. Closes: #126459 + * Added powerpc sysconf patch from David Schleef. Closes: #127560 + * Added SuperH support. Closes: #127740 + * No longer apply glibc-vs-gcc3 patch. Implementation merged upstream. + * Last minute ARM patch to fix unwind. + + -- Ben Collins Thu, 24 Jan 2002 00:31:40 -0500 + +glibc (2.2.4-7) unstable; urgency=low + + * glibc22-hppa: Fix mips/pt-machine.h, so that it patches both the ISA-1 and + ISA-2 cases of testandset(). Also add IPC updates from Willy. Closes: #120383 + * glibc22-hppa: Updated, from Mathew Wilcox. + + -- Ben Collins Mon, 3 Dec 2001 12:09:26 -0500 + +glibc (2.2.4-6) unstable; urgency=low + + * glibc22-hppa.dpatch: Fix lock_held macro on non-hppa. This patch is now + enabled by default for all archs. + * Update patches for HPPA dynamic loader from. + * m68k resource.h patch from Roman Zippel, Closes: #118909 + + -- Ben Collins Fri, 9 Nov 2001 21:20:59 -0500 + +glibc (2.2.4-5) unstable; urgency=low + + * Added patch from Ulrich to really fix the [x-] fnmatch() case. + Closes: #96013 + * Updated gcc3 compat patch. + * Several changes to ldconfig: + - Parse the config file before checking system directories. This is needed + to make sure it is possible to override system directories. + - Cleanup the config file parsing routine a bit. Make sure we open the + config file with correct perms in case it gets created by this call. + * Pulled from CVS as of Oct 27, 2001: + - Includes fnmatch fix upstream. + - strxfrm fix. + - dlfcn fix for C++ program usage. + - ENABLE_NLS fixes for various functions (doesn't affect us, since it is + mainly meant for non-nls builds). + - IPv6 reverse lookup fixes. + - Lots of libm fixes. + - Several language translation updates. + - Several m68k setjmp fixes. + - Some mips fixes merged. + - Timezone updates. + - S390 ucontext fixes. + - Several hurd fixes. + - ELFOSABI_* Updates. + * Update the kernel headers on all the systems I build for (arm, ppc, i386, + mips, sparc, sparc64, hppa). + * Added "es" template for locales, from Carlos Valdivia. Closes: #117413 + * Fixup ttyname patch for devfs, which broke some things. Closes: #117551 + * Remove the errno.texi explanation for _GNU_SOURCE for two defines. The + thing is, according to the libc manual conventions, this is not the + correct way to handle it. In fact, it is already done according to the + convention of the rest of the manual. The two items are tagged with the + "GNU" comment, meaning they are GNU extensions. The libc manual explains + in its introductory chapters that this means it needs the _GNU_SOURCE + define. + + -- Ben Collins Mon, 29 Oct 2001 20:25:40 -0500 + +glibc (2.2.4-4) unstable; urgency=low + + * Hopefully fix the damn .html docs. Looks good to me. Closes: #84237, + #89382 + * Fix inttypes.h typo. Closes: #114483 + * Disable sanity checks for gcc-3.0 archs, Closes: #114724 + * Fix entry for locales depending on debconf. Closes: #115155 + * Fix echo commands when generating locales.config. The -e option is not + portable. + * New hppa patch from several people. This, along with the .10 binutils, + should fix all of hppa's problems. + * Apply devfs compatibility patch for ttyname. Closes: #74911 + * Add (modified) patch for ldconfig to create ld.so.conf if it doesn't + exist. Original patch from David Whedon, Closes: #98763 + * Clarify some errno.texi functions wrt _GNU_SOURCE. Patch from Jeremiah + Savage. Closes: #99683 + * Add conflicts/replaces for all the potato locales that cannot be installed + with this glibc (and are actually supported now). Closes: #108015 + * Fix comma in confnames.h to make all the -pedantic folks happy :). + Closes: #113498, #113816, #114672 + * Include a mips termios.h cleanup patch, sent by Ryan Murray, patch by Ralf + Baechle. + * Add Russion template for locales package, by Ilgiz Kalmetev. Closes: + #114303 + * Fix sed in ia64/ldd-rewrite.sh: Closes: #115784 + * Add Brazilian Portuguese locales template from Andre Luis Lopes, closes: + #116435 + + -- Ben Collins Wed, 24 Oct 2001 12:28:49 -0400 + +glibc (2.2.4-3) unstable; urgency=low + + * Apply patch to fix es_AR number formatting. Closes: #108373 + * Fix SA_* defines on some archs. Patch sent upstream, and accepted. + Closes: #113273 + * Brought in dynamic module patch from CVS that fixes + mozilla/galeon/konquerer. Closes: #113457, #113481, #113708 + * Fixed libc postinst for the readlink call. Based on patch supplied by + Branden Robinson. Closes: #113459 + * Increase shlib dep to 2.2.4-2. Closes: #113731 + + -- Ben Collins Sat, 29 Sep 2001 23:38:11 -0400 + +glibc (2.2.4-2) unstable; urgency=low + + * Updates from CVS Head, includes some s390 fixes, closes: #109072 + * Reincluded some missed patches (notable the fakeroot fix), closes: + #109162 + * Include the iconvconfig program in the libc6 package, closes: #109600 + * Fixup locales/libc dep back to the old way, closes: #109850 + * Apply patch for locale-gen.8, closes: #110554 + * Apply patch to make /etc/locale.gen generated by debconf interface. + Thanks to Ho-seok Lee, closes: #110980, #110661 + * glibc22-fts.dpatch: Remove, fixes upstream now. + * libc/DEBIAN/postinst: Before calling init u, make sure /proc/1/exe + resolves to /sbin/init. This should help ensure we don't muck up + debootstrap. closes: #110615 + + -- Ben Collins Fri, 7 Sep 2001 14:52:02 -0400 + +glibc (2.2.4-1) unstable; urgency=low + + * Final release of 2.2.4. Not much changed from 2.2.3-11. + * Remove cruft from debian/patches/ + + -- Ben Collins Thu, 16 Aug 2001 09:29:14 -0400 + +glibc (2.2.3-11) unstable; urgency=low + + * Updated to HEAD of CVS as of Aug 11, 2001 + - Misc fixes found in 2.2.4pre2 + - This is basically 2.2.4pre3 + * New glibc-vs-gcc3 patch, closes: #108408, #108364, #108415, #108364, + #108454, #108476 + + -- Ben Collins Sun, 12 Aug 2001 10:02:12 -0400 + +glibc (2.2.3-10) unstable; urgency=low + + * Updated to HEAD of CVS, as of Aug 4, 2001 + - Mostly arch specific bug fixes. + - This is actually the same as 2.2.4-pre2 (releasing in a day or so) + * Ok, I give up. I don't want any more bug reports, so I've added the + nfs getdents fix. If it breaks anything, I will hunt down all of those + who submitted the patch/bug. closes: #86877 + * Added two more Q/A's to the Debian FAQ (AKA "The Overfiend Clause" :) + This documents Debian's glibc following stable CVS, and also + kernel-headers desync. + * Added latex2html to build-dep-indep, closes: #101662 + * Fix tzconfig so it handles ambiguous names correctly, closes: #105580 + Patch by Martin Pool + * Add copyright and license to tzconfig, closes: #105581 + * Updated libc0.2 hurd dep to (>= 20010718-1), closes: #106291 + * Include locale-gen.8 manpage from Eduard Bloch + * Duh. We don't need to cat in the saved libdb.so.3 to the new location. + Ldconfig does the work for us by creating a symlink to it. + * Remove sysdeps/powerpc/memset.S so ppc gets the generic C version for + now (which is actually faster on most machines anyway), until they get + their memset.S fixed (especially for Power3). + * Added updates for hppa patch from Matthew Wilcox. + * debian/rules.d/control.mk: Added hppa to list of archs for libc6 + + -- Ben Collins Tue, 7 Aug 2001 10:11:22 -0400 + +glibc (2.2.3-9) unstable; urgency=low + + * Really fix the timezone problem this time. I moved the UTC check + before the TZ check, and then reuse that to get the TZ date, instead + of the other way around. That solves the problem. Using this method, I + can get the UTC date first setting LC_ALL=C, and then allow the + override for the real UTC0 and $TZ date, so we get lang support + without breakage now. + + -- Ben Collins Tue, 24 Jul 2001 12:19:48 -0400 + +glibc (2.2.3-8) unstable; urgency=low + + * Use glibc- instead of glibc_ for the provides between libc and + locales. Underscores are actually not allowed in package names. + * CVS as of July 22, 2001 + * Use LC_ALL instead of LANG in libc postinst, closes: #106043, #106078, + #106081, #106187, #106215 + * Use Noninteractive, not noninteractive in postinst's, closes: #105902 + * SUPPORTED file ends in .gz...guess some people can't bother to add + that themselves. Also, add notes about locale-gen closes: #105915 + * Fix cp -L calls, use cat instead to make sure we avoid any command + line problems, closes: #106120, #106096 + * MIPS WARNING: The MAP_BASE_ADDR patch does not apply anymore, since it + seems that whole bit of code was removed. MAKE SURE THIS DOESN'T BREAK + ANYTHING! :) + + -- Ben Collins Sun, 22 Jul 2001 23:04:15 -0400 + +glibc (2.2.3-7) unstable; urgency=low + + * CVS as of 7-9-2001, closes: 101308, 103251, 100398, 100398 + * New hppa patch, still not enabled by default since I got deadlocks in + the linuxthreads tests (ex2 and ex10) on sparc. + * Increased shlibdep to 2.2.3-7 + * SUPPORTED locales list is now in doc dir, and locale.gen is a + non-changing file (still a conffile, but it doesn't change when glibc + changes). + * Fix fts patch so it doesn't break Hurd, closes: 102826 + * Make libc provide glibc_$DEBVERSION, and locales depend on it. This + way we make sure everything matches up. closes: 100605, 100605, + 101034, 100605, 99344 + * Added some more UTF-8 locales, closes: 103742, 86372 + * Fixed hurd's ldconfig, closes: #101691 + * Already fixed ld_envlib_path, closes: 101622 + * In libc preinst, detect if we are upgrading from a version where we + used to provide our own libdb.so.3, and keep a copy. We reuse it + during postinst. This way, we have no time where libdb.so.3 doesn't + exist. closes: 101795, 103586 + * Removed depends on libdb2 from libc6, since our hack above makes it + pointless. Now, libc6 should get installed before libdb2 (since it + depends on libc6), which will leave a working libdb.so.3. After libdb2 + is upgraded, the new libdb.so.3 will be installed, which will work + since the new libc6 that it depends on is also working. + * Fixed calls for zoneinfo as per JoeyH's suggestion. closes: 100461 + * Updated copyright notice since LGPL 2.1 is now used. + + -- Ben Collins Tue, 10 Jul 2001 14:00:59 -0400 + +glibc (2.2.3-6) unstable; urgency=low + + * CVS As of 6-9-2001, closes: #100055 + * debian/sysdeps/depflags.pl: Fix typo where netbase/netkit-rpc wasn't + being added to libc-dev control flags, closes: #98735, #99460, #99990, + #100382 + * Moved rpcinfo from /usr/sbin to /usr/bin... closes: #100279 + * Added fts() security patch + * Updated patch for HPPA, now also enabled per default + + -- Ben Collins Sat, 9 Jun 2001 16:35:29 -0400 + +glibc (2.2.3-5) unstable; urgency=low + + * CVS as of 5-28-2001 + * Added fake ldconfig script for hurd, provided by Robert Bihlmeye, + closes: #95189 + * Add replaces for netbase (<< 4.0), closes: #98708, #98735 + * Install rpcgen/rpcinfo manpages, closes: #98710 + + -- Ben Collins Mon, 28 May 2001 14:36:32 -0400 + +glibc (2.2.3-4) unstable; urgency=low + + * CVS as of 5-24-2001 + * Add forgotten mips ld.so patch + * Added s390 to arch lists, closes: #97718 + * Add m68k fPIC patch for libc_nonshared, closes: #97663 + * Add LD_LIBRARY_PATH to --library-path, closes: #98638 + + -- Ben Collins Thu, 24 May 2001 16:10:09 -0400 + +glibc (2.2.3-3) unstable; urgency=low + + * Upgraded to CVS as of 5-20-2001 + * New HPPA patch (applies cleanly) + * Fix prep.sh, closes: #97600 + * Add rpcinfo to libc, and rpcgen to libc-dev. Add Conflicts/Replaces + for both packages with netkit-rpc, closes: #93280 + + -- Ben Collins Mon, 21 May 2001 09:56:47 -0400 + +glibc (2.2.3-2) unstable; urgency=low + + * Enable threads for hppa + * Updated to CVS as of May 10, 2001, closes: #96968, #94501 + * Run locale-gen on upgrades from before 2.2.3-1, closes: #96767, #96913 + * Should be fixed, old regex problems, closes: #86728, #88677 + * This should be fixed now too, closes: #88662 + * There were some regcomp related fixes that appear to have fixed this, + closes: #93167 + * Build-Depends-Indep: s/perl5/perl/, closes: #95782 + * Updated eo_EO from Edmund GRIMLEY, closes: #78085 + + -- Ben Collins Thu, 10 May 2001 13:54:42 -0400 + +glibc (2.2.3-1) unstable; urgency=low + + * Were up to 2.2.3 now. + * libc-dev: Conflict with older gcc's that do not have the weak-sym or + pic-kludge patches. + * ldd.dpatch: New and improved fix for the "no execute permissions" + buglet. Now, ldd will not call the "file" command for every file. This + should speed up dpkg-shlibdeps a lot. + * Removed some obsolete db2 patches + * Removed some other obsolete patches + * Conflict with libnss-db that used db2 + * Depends on current libdb2 which contains libdb.so.3...hopefully this + wont make apt choke because of a dep loop + * Use the new gcc-3.0 to build sparc64 64bit libc/libc-dev packages. + * Build-Depend += gcc-3.0-sparc64 [sparc] + + -- Ben Collins Thu, 12 Apr 2001 21:08:33 -0400 + +glibc (2.2.2-4) unstable; urgency=low + + * Yeah! We can disable our libdb.so.3 (db2) interface in favor of the + one in libdb2. That package now has a symboled version so we can start + to migrate away from this cruft. However, we do still have the db1 + support. + + -- Ben Collins Fri, 23 Mar 2001 19:17:39 -0500 + +glibc (2.2.2-3) unstable; urgency=low + + * Disable building of optimized libs for now. I did not forsee the + problems involved with symbol skew between ld-linux.so.2 and the + optmized libc.so.6. As of now, I can see no way around this. + * Make libc6 conflict with the optimized libs for now, so we can get rid + of them, closes: #90753, #90758, #90763, #90770, #90778, #90779 + * RPC patch from Jakub Jelenik, probably closes: #90830 + * Add build-dep for file, m4 not needed now that opt libs are gone. + closes: #90773 + + -- Ben Collins Fri, 23 Mar 2001 10:31:24 -0500 + +glibc (2.2.2-2) unstable; urgency=low + + * Fix ld.so shlib output, closes: #87655 + * Update to latest CVS, as of 2001-03-21 + * manual/arith.texi: Fix documentation of fast and least integer + typedef's. Patch sent upstream, closes: #84711 + * glibc22-getaddrinfo.dpatch: Add fix from Hiroyuki YAMAMORI + , closes: #85304 + * i386/mathinlines.h: Fix non-ANSI ?: construct, closes: #85322 + * sysdeps/unix/sysv/linux/mips/bits/mman.h: Add and fix some madvise + declerations, closes: #86676 + * Explicitly list inetd to be restarted, closes: #86715 + * Updated Hurd SIOCS patch from Marcus Brinkman + , closes: #87903 + * Added eo_EO locale by Robert Thomson + * Check to make sure any services actually need to be restarted, closes: + #88440 + * Conflict with old strace, which appears to break under new libc6, + closes: #88775 + * Make sure we remove any CVS cruft, closes: #90173 + * Removed -O2 override for hppa, at Matt Taggart's request. + * Build-Depend on latest gcc so we get the weak sym stuff right. + * Made opt libs compiled specifically for 2.4.0+ kernels. This should + make them even faster and smaller since it reduces the compatibility + code. + * libc-opt/DEBIAN/preinst: Check to make sure we are running under a + 2.4.0 kernel, and under the correct cpu + * libc/DEBIAN/{prerm,postinst}: Changed check for package name to use + basename of $0 as opposed to uname. + + -- Ben Collins Fri, 23 Mar 2001 10:30:47 -0500 + +glibc (2.2.2-1) unstable; urgency=low + + * New upstream version + * Updated to CVS as of 2001-02-16, should make alpha build now. + + -- Ben Collins Thu, 15 Feb 2001 23:55:24 -0500 + +glibc (2.2.1-4) unstable; urgency=low + + * Fixup section "disparities" between control and overrides on + ftp-master + + -- Ben Collins Tue, 13 Feb 2001 11:47:22 -0500 + +glibc (2.2.1-3) unstable; urgency=low + + * Update CVS, should fix regex memleak, closes: #85788 + + -- Ben Collins Mon, 12 Feb 2001 22:57:56 -0500 + +glibc (2.2.1-2) unstable; urgency=low + + * Synced with CVS as of 2001-02-09, 2.2.2-pre1 + * shlibs: s/libdb1/libdb/ + * debian/rules (clean): remove shlibs file, since it is generated + * move getaddrinfo patch to it's own .dpatch + * Added some ia64 setups, closes: #82384 + * clean target, remove debian/control.in/libc?*, since they are + generated + * debian/control.d/main (locales): Fix description to reflect recent + merging of the i18ndata package, closes: #82347 + * Added hppa patch from Matt Taggart + * db/ndbm.h: s,db.h,db1/db.h, closes: #83171, #83443 + * Added extra disclaimer to the locale postinst warning. closes: #83394 + * libc/DEBIAN/postinst: change logic in check for init. closes: #84287 + + -- Ben Collins Mon, 29 Jan 2001 10:54:53 -0500 + +glibc (2.2.1-1) unstable; urgency=low + + * Upstream version 2.2.1 release, not many changes for us really, since + we've been using CVS all along. + * Included Hurd-SIOCS patch from Marcus Brinkman. + * segfault.c: s/__access/access/. Patch sent upstream. closes: #82026 + * Increase shlibdep version to 2.2.1 + * Merged i18ndata package into locales package. closes: #81990 + * Added snmpd to the restart list, closes: #81736 + * Resynced bug list. Count is 57 now... + + -- Ben Collins Wed, 10 Jan 2001 08:55:08 -0500 + +glibc (2.2-11) unstable; urgency=high + + * Synced to CVS as of 2001-01-09 - 52 unique bugs and decrementing... + This fixes the RESOLV_HOST_CONF security problem. + * Included nscd(8), nscd_nischeck(8) and nscd.conf(5) man pages by + Sebastian Rittau . closes: 66365 + * /etc/init.d/nscd: Actually uncomment and use the nscd_nischeck to see + if we want to start in secure mode. + * debian/manpages/getconf.1: New manpage for getconf utility. closes: + #63897 + * debian/manpages/catchsegv.1: New manpage for catchsegv utility. + closes: #70740 + * debian/glibc-doc/usr/share/doc-base/glibc-manual: Fix for new html + setup. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Try absolute lookups first. + closes: #64192 + * manual/conf.texi (File Minimums): make _POSIX_PATH_MAX match the + posix1_lim.h value, patch sent upstream aswell. closes: #81628 + + -- Ben Collins Sun, 7 Jan 2001 16:15:34 -0500 + +glibc (2.2-10) unstable; urgency=low + + * Synced to CVS as of 2001-01-05 - 64 unique bugs and decrementing... + * manual/stdio.texi: getline(): Clarify the return value if EOF is + reached before a newline. Patch sent upstream aswell. closes: #14590 + * manual/string.h: basename()/dirname(): Added documentation for these. + Basename() required two definitions, one for the GNU version, the + other for the XPG version. Included examples. Patch sent upstream. + closes: #27586 + * DISCLAIMER: All three of the above changelog entries did in fact change + the state of the files in this source. It is the opinion of the + maintainer (hereto after refered to as GOD), that the changes made do + in fact make the package(s) better. GOD does not warantee that these + changes will make your life (be it sex life, or no life) better. GOD + does guarantee that you (hereto after refered to as NON-DIETY) will + gain great wisdom simply by using this(these) package(s). The + NON-DIETY shall not, in any event, hold GOD responsible for misreadings + of these statements. + + -- Ben Collins Fri, 5 Jan 2001 10:46:42 -0500 + +glibc (2.2-9) unstable; urgency=low + + * CVS synced as of 2001-01-03. Happy freaking new year. + * Remove FAKEROOT check, since we don't build locales now, we don't have + to worry about it. + * dlfcn/dlerror.c: dlerror(): Check for result->errstring being NULL, + closes: #80991 + * No offense, but I cannot be expected to debug fortran programs + compiled with a commercial(?), non-GNU compiler. Talk to them about + getting it to work. As for the "works on RH, but not Debian", most + likely that didn't do anything to make it very portable. closes: #68510 + * Tested with current NIS, and the test cases passes with no open fd's. + closes: #52222 + * Make note of AMD in libc6-i[56]86 descriptions. closes: #77791 + * Make note about some commercial programs not liking our optimized + libraries (IBM JDK for one). closes: #78656 + NOTE: To the submitter of this bugreport, I'm pretty sure the JDK + relies on frame-pointer to handle some special ass-backwards stuff, + which wont work with these libraries since they are compiled without + frame-pointer (making it hard to strace, and debug using these libs). + * Yes, semget(2) refers to SEMMSL, but nothing I can find says it should + be defined in userspace. closes: #11560 + * This patch only applies to kernel-headers, and since they don't need + to be used in userspace, it's ok to have some oddities, closes: #55578 + * I was able to write an 90 byte "Hello World" .c, and compile it into + an 800 byte static binary using -nostdlib and -Wl,-lc. closes: #21676 + * Making an ar archive from one .o is just silly, closes: #58606 + * Patch sent upstream. Might change a bit, but the result should be the + same, closes: #73003 + * I believe the reason the .pwd.lock file remains is to avoid a race + condition, where something might be waiting for the lock, and + unlinking it would cause something else to be able to obtain the lock, + even though it isn't available. closes: #14093 + * I tried to reproduce this, but glob kept working right for me. I think + the user is misusing the function. Most likely they are passing the + glob on the command line, which is in turn doing some escape + processing, and not working right with glob() itself. closes: #67921 + * In Debian, locales are not required to be installed. closes: #35875 + * Could not reproduce in the latest glibc. Upstream seems to have fixed + this. closes: #75163 + * Bug report log says this is fixed in glibc 2.1.1, closes: #36775 + * I think this was an issue with the gcc-2.95 compiler defaulting to + 486 instruction sets. This was fixed by gcc some time ago. closes: + #38998 + * The "order" directive in host.conf is supposed to be a space seperated + list of sources, not comma. This is a bug in host.conf(5), which has + already been reported. I'm closing this one to avoid duplication. + closes: #35731 + * Appears to be related to #36775, but I checked the test case anyway, + and it worked as expected. closes: #35035 + * I tried the test program, and it worked fine. So either guile or glibc + fixed the bug already. closes: #36030 + * The locales package is not referenced by any other package ATM. + closes: #38742 + * Symlink /usr/share/zoneinfo/localtime to /etc/localtime for libc5 + compat. closes: #48705 + * SUSv2 defines putenv as "int putenv(char *)", closes: #60960 + * From my understanding of of the SUSv2 definition, the pointer + reference of inbuf may be incremented to the current position of + translation. So in actuality, the object is not const. GLibc + interprets this using the __restrict compiler option (defined in gcc's + later than 2.92, e.g. egcs 1.1.2, and gcc 2.95). closes: #77312 + * Fixed ambiguity problem in tzconfig, closes: #69045 + * This was a netscape/libc5/plugin issue, closes: #50672 + * User error. He is setting all of the fd's in the pollfd struct to -1, + which returns POLLNVAL, which is the expected response. closes: #51877 + * objstack_* does use const definitions now, closes: #68918 + * This was the old xmms-segv's-on-exit bug, fixed by glibc 2.1.9X (can't + remember which version exactly). closes: #74345 + * leading zero makes sscanf determine the number as an octal, closes: + #69278 + * zic.8: zdump is section 1, not 8. closes: #72095 + * Old libdb2 upgrade issue, fixed in during the 2.1.9x uploads. closes: + #72663 + * Update this changelog to include the revisions from the stable (potato) + updates. + * Patch sent upstream. Fixes timezone showing up as "/etc/localtime". + closes: #71060 + + -- Ben Collins Tue, 2 Jan 2001 20:22:11 -0500 + +glibc (2.2-8) unstable; urgency=low + + * The one-liner fix for devpts.sh + * Patch sent and accepted upstream, closes: #80485 + * CVS synced as of 2000-12-30 + + -- Ben Collins Thu, 28 Dec 2000 09:49:30 -0500 + +glibc (2.2-7) unstable; urgency=low + + * Synced to CVS as of 2000-12-25 + * Patches sent upstream, closes: #75334, #34550, #71928, #11839, #75349 + closes: #38392, #68923, #77416, #39440 + * TCPOPT_EOL, TCPOPT_NOP, TCPOPT_MAXSEG: not declared in glibc (was a + libc5 thing), so they don't need to be documented, closes: #9888 + * Use texi2html for .html output, which actually does split the file, + closes: #61257, #76678 + * Hmm, not sure I can fix hamm->slink upgrades for libc6-doc->glibc-doc, + closes: #32792, #32801 + * Fixed by upstream, closes: #62173, #10686, #37014, #54051, #57297 + closes: #53786, #74611, #37162, #41388, #60255, #63569, #67204 + closes: #67205, #60034, #42850, #60320, #39594, #59800, #48371 + closes: #66803 + * Could not reproduce. My test program showed that it resolved the + libpthread properly. I am going to assume user error, or some + funkiness on the user's system. closes: #78585 + * This is reported as a kernel issue, and the submitter was asked to try + a newer kernel, but never replied. I'm closing on the grounds that I + believe it was a kernel issue, closes: #45693 + * The iconv test program seems to work as expected in glibc 2.2, + closes: #39762 + * lt_LT uses ISO-8859-13 now, closes: #10358 + * Things relying on sort to work correctly, should set LANG=C to get + expected behavior, closes: #56195, #61746, #69544 + * Fixed long long ago, closes: #58226, #58586, #35948, #76246, #53530 + closes: #39584, #13800, #34452, #53894, #54096, #42490, #30683, #32468 + closes: #29619, #34816, #35113, #39071, #35334, #35497, #42867, #36212 + closes: #59316, #62826, #35131, #36952, #43659, #24090, #36076, #45041 + closes: #54156, #37307, #27146, #34729, #47457, #34699, #35250, #34538 + closes: #30054, #35389, #36655, #36762, #36932, #36933, #61163, #58954 + * We no longer build locales at build time, but at install time, closes: #69172 + * I don't see the problem in this testcase, works for me, closes: #73018 + * debian/control.in/main: Show in description that nscd also handles + host lookups, closes: #48716 + * Unreproducable, probably fixed in 2.2, closes: #57026, #42726, #40768 + closes: #45848, #58367, #62990, #40870, #67296, #38897, #60099, #66769 + * nscd now has a --invalidate option, closes: #42727, #43729 + * adduser now calls nscd -i, so works correctly, closes: #36080 + * Hey, it's one of my bugs, and it isn't any good! closes: #34940 + * Yeah, I agree with the bug report. If you don't want nscd to run on a + particular system, just uh, don't install it, closes: #36621 + * Setting Fixed to, closes: #47289 + * Do not use UNIX_PATH_MAX, use SUN_LEN(ptr) (defined in sys/un.h), + closes: #61963 + * _PATH_DEFPATH is the bare minimum for linux. If you want more, use the + PATH env, closes: #31983 + * The man page is wrong. dlerror.c, and dlfnc.h both show that the + return string is allocated, so it is not const. closes: #35694 + * All together now, "Using kernel headers in userspace is BAD", + closes: #12207, #19646, #43105 + * Ran the test case with -O0, -O2, -O3, -O6 on sparc and i386, and did + not see the problem reported, closes: #37154, #27516 + * Seems perl has worked around this (or libc has), since perl modules + are building fine, AFAICT, closes: #34110 + * Linus does not suggest doing /usr/include/{linux,asm} symlinks + anymore. closes: #24949 + * This isn't a glibc bug, it was a gdb bug that is now fixed. closes: #27544 + * lrint is defined with -D_ISOC99_SOURCE, closes: #43530 + * No reference to which docs, nor is there a test case, so: closes: #63511 + * Doh, this was already fixed by me in 2.2-6! closes: #79666 + * User malfunction, not a bug. closes: #39648, #50261, #36075 + * Including stdio.h only ensures that getline will work, it does not + guarantee you that it's return type is defined, which you must do + yourself. closes: #62511 + * O_LARGEFILE is only usable when compiling with -D_LARGEFILE64_SOURCE, + closes: #68873, #52455 + * Ok, strcoll doesn't seem as slow now as shown in the bug report when + LANG is set. The thing is, this function will always be slower when it + has to take localization into account. closes: #62803 + * Re bug #44093 + a) I'm pretty sure there is no problem with libc translating errno + from the kernel, else we'de have some serious problems. + b) The ioctl() manpage cannot document all returns (and in fact it + says that it does not document all ioctl types). + c) I'm pretty sure the EIO return on this particular case is generated + by the kernel. + closes: #44093 + * Tested this, and I was able to get 1022 temp files from mkstemp on a + single run, using the same template, closes: #31415 + * Ulrich Drepper, Re: sortlist in libresolv: + >It never was and in general is not wanted. Beside, it is another poor + >DNS feature which doesn't work with IPv6. Finally, the NSS gethost*() + >functions don't have the supporting code. + closes: #64327 + * lpd should not be using internal glibc functions. closes: #33686 + * makedb -V has no translation now, closes: #34702 + * Checking printf returns is left to the programmer, closes: #28250 + * Ok, the 51 pages of flaming in tis bug report leads me to believe that + this will never be resolved in glibc. IMO, it is up to the programmer + to be smart enough to check these things (where it matters). I am + closing this bug report on the precedence that it is not really a bug + because current functionality meets specs (and this bug report would + break that compatibility). This entire bug report should be archived + all on it's own. Hell, it should have it's own BTS just to track the + conversation. closes: #28251 + * mkstemp complies with SUSv2 and BSD 4.3. Changing it's bahvior would + cause portability problems. closes: #34793 + * Downgrading is not supported, closes: #36578 + * The test case did not use pthread_detach(), which resolved the issue. + closes: #25879 + * Fix devpts regex for when to mount devfs. closes: #79830 + * I believe Wichert found out that base-passwd did have a bug that was + causing this, and fixed it. closes: #55367, #79043 + * First of all, I do think tzconfig manpage needs to be in section 8. + However, changing the execute permissions does very little. In fact it + does nothing. Since normal users don't have perms to change the system + tz, it doesn't matter if they can execute tzconfig. closes: #62397 + * Added autofs to the services that need to be restarted. + closes: #80453, #79926 + * Use neat dpkg/awk one-liner from Adam Heath to get list of installed + services for the daemon check. closes: #80454 + * tzconfig allows you to choose UTC now. Just go to "12" (none of the + above), and then choose UTC. closes: #38556, #35094 + * Ok, my opinion on this is that you should check dlopen's return every + time. The example program shows that they did not do this. closes: #37604 + * Looks like a bug in haskell to me. closes: #37902 + * IIRC, all the BSD code is gone. closes: #58270 + * Bug report claims it is not a bug. closes: #42155 + * We have optimized libs now, so that should solve this. closes: #44619 + * I'm pretty sure this "large" wtmp file with only 3 entries is a sparse + file (check with du). closes: #43950 + * I seriously doubt that ld.so's LD_LIBRARY_PATH stopped working. + closes: #59110 + * I don't think this is a glibc bug. Sounds more like a cross-compiler + bug. closes: #68424 + * In Debian, 2.1.2 and 2.1.3 are binary compatible. closes: #60113 + * To get i18n/charmaps, you need to install i18ndata. closes: #65132 + * We don't need to mount shmfs anymore, closes: #65510 + * Fixed by dpkg, closes: #66913, #64906 + + -- Ben Collins Mon, 25 Dec 2000 08:42:49 -0500 + +glibc (2.2-6) unstable; urgency=low + + * Added m68k lchown fixes, plus removed conflict for libstdc++2.10-dev + on m68k. Bug/patch provided by Michael Fedrowitz + , closes: #78937 + * libc-opt: added memprof to the death list of packages that don't work + with our optimized libraries, closes: #79224 + * Added Provides: glibc2.2 to libc6/libc6.1/libc0.2 so I can make + locales dep on it, closes: #78495 + * CVS sync as of 2000-12-15 + * Fixed previously: closes: #75865, #77170, #75473 + * Added a "." counter while checking services for install, closes: #78881 + * %hhn works as expected in i386 in this version of glibc, closes: #79221 + * Looks like this is resolved, closes: #59429 + * The libc info page says not to use fgets on streams that may have NULL + char's, which sockets might, closes: #57729 + * This is probably fixed, if not reopen it please, closes: #24414 + * Well this bug report has no report in the BTS, I am going to assume + from the age and type of the title, that it is fixed, closes: #21272 + * Old ld.so issue, most likely resolved in hamm, closes: #46173 + * This bug is a simple programming mistake. For one the child never + * fills the buffer in certain cases, so it's contents are never flushed. + If the program called fflush after every output, then it works fine, + closes: #26226 + * The new upgrade code in libc postint should resolve this, closes: #64074 + * This is a compilation error. libc.so.6 does not contains fxstat + (libc-nonshared.a does), so if you don't link properly (like with + gcc), you will miss some symbols, closes: #36139 + * Similar to the above, also resolved, closes: #30427 + * Old ld.so bug, fixed, closes: #70658 + * Current localedef doesn't seem to segv on improper input, closes: #65634, #64878 + * YAOLDSOB (Yet Another LDSO Bug), closes: #42944 + * Lack of useful info in the BTS ("I suspect glibc" doesn't cut it), + closes: #36498 + * Someone needs to read release notes, closes: #41455 + * Uh, tzconfig works. Tzselect is not for changing timezones, but for + querying what the available ones are. From tzselect(1): + + Note that tzselect will not actually change the timezone + for you. Use the tzconfig(8) utility to achieve this. + + So you see, this is how it's meant to be, closes: #37409 + * Fixed in glibc 2.2, closes: #42512 + * a) all init scripts need to support restart + b) postinst uses stop/start now anyway + c) postinst fails much better now when things go wrong + + closes: #52914 + * getaddrinfo does DNS lookups regardless because of the nature of the + function. Also it handles ipv4/ipv6 better now, closes: #60743 + * I don't see why libc6 needs to create /etc/rcS.d/ when dpkg does it so + closes: #66138 + * strstr seems pretty fast now, closes: #10689 + * Latest emacs/libc6 is working fine, closes: #48476 + * YAOLDSOB, closes: #42135 + * libstdc++-v3/glibc2.2 compiles fine together, closes: #66757 + * strerror() with maxerror+1 works as expected now, closes: #40184 + * No other info, and no similar reports. Assuming user error, closes: #31465 + * Old ssh-nonfree getting a sigsegv is not a bug in libc6, but sshd, + closes: #41800 + * Restarting woffle already, closes: #74164 + * I believe this was due to some old nss1 issues, which are now resolved + during upgrades, closes: #35089 + * This is something libc6 itself cannot fix. Either way, rsh/rlogin is + broken by nature, closes: #19168 + * Well, I can't retroactively go back to hamm and add a stub for + setresuid(), closes: #29675 + * Fixed upstream a long time ago, closes: #39693 + * From unix/getlogin.c: + + /* Get name of tty connected to fd 0. Return NULL if not a tty or + if fd 0 isn't open. Note that a lot of documentation says that + getlogin() is based on the controlling terminal---what they + really mean is "the terminal connected to standard input". The + getlogin() implementation of DEC Unix, SunOS, Solaris, HP-UX all + return NULL if fd 0 has been closed, so this is the compatible + thing to do. Note that ttyname(open("/dev/tty")) on those + systems returns /dev/tty, so that is not a possible solution for + getlogin(). */ + + So basically, closes: #17528 + * Current nis/nss-compat code looks like it handles this right, + closes: #33197 + * libc6 cannot compensate for broken coding, closes: #42912 + * nprocs is fixed in 2.2, closes: #57101 + * libdb.so.2 does have shlibs now, closes: #39578 + * getcwd now returns NULL in the case shown in this bug report, so there + is no suprise if the program checks the return correctly, closes: + #27227 + * Adduser now restarts nscd as needed, closes: #37296 + * getaddrinfo fixes for ipv4/ipv6 fixes this, closes: #58713 + * Programs using libc5/libc6 at the same time via dynamically loading + libc5 apps from a libc6 apps) simply does not work, closes: #42088 + * getaddrinfo fix, closes: #70012 + * libc-64 was never meant to work right, closes: #53748 + * libNoVersion.so.1 is gone, closes: #37681 + * libc/postinst is file-rc friendly now, closes: #40053 + * libdb2 is no longer a reference for libdb stuff, closes: #61154 + * ld.so/ldconfig now have man pages, closes: #41917 + * Bah, libtricks is old and gone, closes: #39080 + * /var/state/glibc is gone, closes: #39562, #39705 + * glibc no longer includes db/db2, so look for docs in those seperate + packages, closes: #23547 + * scsi/scsi.h is there, closes: #31502 + * linux/joystick.h is there, closes: #38028 + * db.h is no longer in libc6-dev, closes: #39077, #74945 + * nprocs works on sparc now, closes: #52420 + * ldd now supports libc5 better, closes: #35644 + * Unreproducable, closes: #39582, #25773, #35624, #35123 + * /var/lib/misc/Makefile does not refer to /var/db, closes: #41947 + * llseek is obsolete, use lseek64 now, closes: #20988 + * Actually this looks like an error in the program, closes: #41952 + * Hmm, I would guess that libc6/libc5.4.38 is correct, and libc5.4.17 is + wrong, close: #21839 + * Fixed in the Before Time, during the Great Long-Long Ago, + closes: #39585, #34442, #59622, #24652 + * That's all for now... + + -- Ben Collins Fri, 15 Dec 2000 15:30:16 -0500 + +glibc (2.2-5) unstable; urgency=low + + * Update to CVS as of 2000-11-27 + - Includes hppa config stuff + * Ok, libsafe seems to be broken with our optimized packages. I + reassigned the bug report to that package. Most likely this wont be + fixed in libsafe for a bit, so for now I am making the optimized + packages conflict with it. The likely cause is the inline string + functions (-D__USE_STRING_INLINES). + * libc/postinst: added lprng and lpr to the list of daemons to restart, + closes: #78132 + + -- Ben Collins Mon, 27 Nov 2000 11:33:25 -0500 + +glibc (2.2-4) unstable; urgency=low + + * Dear god! Who changed things to a symlink in the kernel-headers and + didn't tell me of all people!? This must be a conspiracy! Some one is + out to get me! Everyone, I am going to go underground until the + security of my system is safe once again! (btw, I fixed the asm + include problem before I took a vacation from my sanity...) + + -- Ben Collins Thu, 23 Nov 2000 18:19:24 -0500 + +glibc (2.2-3) unstable; urgency=low + + * Damn, really remove libc6 dep from locales this time + * Include shlibs file with optimized libs, so dpkg-shlibdeps will be + happy with people using them. + * Added updates eo_EO locale + + -- Ben Collins Wed, 22 Nov 2000 15:40:12 -0500 + +glibc (2.2-2) unstable; urgency=low + + * Update to CVS to 2000-11-19 + - Includes the ldconfig patch, so removed from local set + - WOOHOO! Includes a patch to getaddrinfo, so that it only returns + failure if both ipv4 AND ipv6 lookups fail for PF_UNSPEC. + closes: #72764, #72905, #74692, #74692, #74367, #75388, #74692 + - Now includes the USAGI ipv6 patch + * control/locales: remove $(libc) dep...bad for a arch-all package, + closes: #76830 + * Move locales to binary-indep targets, closes: #76830 + * Add another hppa patch for _setjmp. Also, make hppa build with -O for + now. + * libc-dbg: make debug/ld*.so executable + * $(libc): suggests libnss-db + * locale-gen: set umask to 022, closes: #77191 + * etc/locale.gen: uncomment en_US as a default + * debian/sysdeps/optimized.mk: New make snippet, which allows building + optimized sets of runtime libraries. Right now, only sparc and i386 + seem to support hwcap, so we only build i586, i686 and v9 optimized + libraries. When other archs start supporting hwcap, then they too can + join the club. + * prep.sh: use ./version, so ash will work too + * Fixed prior to this release: closes: #71938, #75295, #75488, #76168 + + -- Ben Collins Sun, 19 Nov 2000 16:32:27 -0500 + +glibc (2.2-1) unstable; urgency=low + + * ALL HAIL GLIBC 2.2 RELEASE! Please put seats in full upright position, + remain seated until installed, and do not panic. The ride is almost + over. Once you have installed Glibc 2.2, please procede to our new + Debian-Rough-Ride, Xfree86-4.0.1, which is currently in progress. + * glibc22-ipv6-USAGI.dpatch: New patch, brings some stability and + compatibility to ipv6. This will most likely fix ipv6 issues with + things like ssh (let me know). + * Totally whack job on the locales package! We now do not provide *any* + precompiled locales. Instead we allow the admin to selectively decide + which ones to compile. + * Start of support for future upgrades. A new patch that should make + upgrades easier, post woody. This deals soley with the NSS module + problem and daemons running during upgrade. + * glibc22-hppa-config-fix: Fix config.{sub,guess} so hppa builds (From + the nice Debian folks at HP). BTW, where's my HP/PA BOX!? :) + * glibc22-ldconfig-fix: Fix bad allocation in ldconfig + * Bugs closed by this release: closes: #74057, #74362, #74692, #75249, + #75956, #76390, #76451 + + -- Ben Collins Fri, 10 Nov 2000 12:47:02 -0500 + +glibc (2.1.97-1) unstable; urgency=low + + * New upstream, + recent CVS + - includes lockf fix now + - fixes fmemopen issues + - adds ja_JP.ujis alias, closes: #72686 + - fixes for sparc mathinline.h + - lots of locale related updates + - mips patches are now included upstream + * depflags.pl: added replaces ldso for libc6 too (ldd), closes: #76126 + * Set --enable-kernel for Linux builds, so we can control how much + backward compatibility we have. + * Fix build-depends for gcc to include epoch + * Up'd the shlibs deps to 2.1.97 + * Removed static nss + + -- Ben Collins Tue, 7 Nov 2000 14:04:36 -0500 + +glibc (2.1.96-1) unstable; urgency=low + + * New upstream release (close to a final 2.2), closes: #73058 + - fixes ld.so reference counting (fixes some obscure bugs with + loadable modules, like NSS). + - fixes for ppc + - netinet/tcp.h fixes for uint8, closes: #74061 + - fixes limits.h/LONG_MAX declerations, closes: #75720 + * When running "$(MAKE) test" use -k so we complete as much as possible + * db/Makefile: remove patch that inhibited the db1 headers. Now, db1 + applications can be built again. This is temporary, to give poeple + time to migrate (db2 maintainer can use this for db_dump185), + closes: #72723 + * shlibs.mk: Use $(objdir)/soversions.i for generating the shlibs file, + which is more correct. Thanks to Marcus Brinkman for pointing this + out, closes: #75685 + * debian/glibc-doc/usr/share/doc-base/linuxthreads-faq: removed, no + longer in upstream source, closes: #74046 + * libc/postinst: added wu-ftpd, wu-ftpd-academ, slapd, openldapd and + logind to list of daemons to to restart, closes: #74158 + * libc/postinst: added support for filerc, thanks to Roland Rosenfeld + , closes: #74290 + * libc/postinst: check for existence of /sbin/init before restarting it, + closes: #75310 + * sysdeps/depflags.pl: Change g++ conflict to libstdc++-dev so we + precludes the right package (i.e., we need a newer libstdc++-dev, not a + new g++), closes: #75019 + * sysdeps/depflags.pl: make libc6 depend on libdb2 from woody so we + don't make apt act all weird with a three layer dependency of sorts + (ask Jason, I'm not sure of all the issues, but it seems it is needed + for now), closes: #75601, #75689 + * sysdeps/generic/lockf.c: explicitly set l_type to F_RDLCK (help from + Anton on this one) + * dl-machine.h.mips-2: new patch from Florian Lohoff to + fix ld.so segv on mips (I expect to see some .deb's in the official + archive soon, my Indy is getting jealous :) + + -- Ben Collins Sun, 29 Oct 2000 16:39:12 -0500 + +glibc (2.1.95-1) unstable; urgency=low + + * New upstream release + * debian/sysdeps/depflags.pl: Don't conflict/replace old libdb2, just + conflict. + * debian/libc/DEBIAN/postinst: Don't just check the service name with + "dpkg -s" since we miss things like inetd, which isn't in a package + named "inetd". Check for "installed" and "", then -x of the init.d + file + * debian/patches/ldd.dpatch: fixup so we don't get double output of + libraries, closes: #72710 + * debian/sysdeps/depflags.pl: Hmm...where did the libnss-db dep go + anyway? There now. + * debian/manpages/: Added man pages for ldd, ldconfig and ld.so + to replace the ones removed from ld.so, closes: #72648, #72727 + * locales fixed in -2, closes: #72752 + + -- Ben Collins Mon, 2 Oct 2000 11:18:48 -0400 + +glibc (2.1.94-3) unstable; urgency=low + + * updated CVS post-2.1.94 to 20000929 + * Put db/db2 libs back in for runtime use only (not linkable and no + headers). Closes a shitload of bugs, and makes everyone happy. Oh, let + the sun shine down. + * alpha-dwarf2-dl-machine: merged upstream + * debian/sysdeps/depflags.pl: removed all the db2 cruft conflicts + * debian/libc/DEBIAN/postinst: Use /etc/rc${rl}.d/ instead of + /etc/init.d/ when restarting services. This way, we don't start any + services that were meant to be off. Also, check for a non-zero exit when + starting and report such failures. This will give people a heads up to + any problems. + + -- Ben Collins Fri, 29 Sep 2000 16:29:59 -0400 + +glibc (2.1.94-2) unstable; urgency=low + + * Removed WANT_LDD, we now install it for every arch. This removes the + need for the ldso package completely, on systems without libc5 (YAH!) + * debian/sysdeps/depflags.mk: removed cruft + * debian/sysdeps/depflags.pl: new script with a simplified control deps + setup to replace depflags.mk. The former was getting too complex + * debian/rules.d/shlibs.mk: fixed logic preventing it from actually + installing the new shlibs file + * debian/sysdeps/depflags.pl: Added lots of conflicts for NMU'd packages + that fell prey to the db2 problems. + * debian/contron.in/main: Fix nscd depend on libc6 + + -- Ben Collins Wed, 27 Sep 2000 10:09:51 -0400 + +glibc (2.1.94-1) unstable; urgency=low + + * New maintainer, "Lector, si monumentum requiris, circumspice" + * New upstream version, pre 2.2 now + - crypt is now in glibc source, so is not a seperate tarball + - removed nss1 compat tarball + - db2 is gone aswell + - without db2, upstream split nss_db from main source (*sigh*) + * Added inetd to list of services to restart + * modfl/fmodl: documented in info pages, closes: #17874 + * Just a quick list of bugs that I can verify do not exist any longer, + closes: #45903, #26514, #46547, #32345, #30987, #48713 + * fcloseall: in the case of stdio/fcloseall.c, yes, it only ever + returns success. However, we use libio/fcloseall.c, who does in fact + have a chance to return EOF, closes: #20973 + * libio/libio.h: shows that the Stream Hooks do in fact take (void *) as + the first argument as shown in the protos, closes: #61497 + * trunc/floor: documented correctly in this release, closes: #65683, #65684 + * Hurd maintainers say this can be closed, closes: #54154 + * I'm pretty sure this isn't an issue anymore, else potato wouldn't be + releasing, closes: #35049 + * Sorry this isn't a glibc bug. The kernel handles error returns on a + failed executable. Most likely this is bin_interp's problem, but I + seriously doubt it will be fixed because of conventions, standards and + the like, closes: #22301 + * keyenvoy: no longer compiled for linux (it seems), closes: #47560 + * infnan: is defined now, closes: #19264 + * libc5 bug, no longer applies, closes: #11300 + * Make sure we copy over asm-sparc for sparc aswell as "generate-asm.sh" + script used to generate /usr/include/asm + * Disable parallel build on sparc (broken for some reason, might not be + sparc specific) + * devpts.sh: used a more devfs friendly version from bug submitter, + closes: #65276 + * libc/postinst: cannot reproduce problem, appears to be user error, + closes: #64865 + * glibc-doc: this bug is no longer valid, closes: #33759 + * We now use ldconfig from libc6 for all archs, ldso will conform. + * Change build deps to just "kernel-headers" for non-Hurd archs. With + mips and other coming down the pipe, this is bound to get ugly if we + specify the particular version for each. + * Add checks to automatically detect proper kernel-headers, error out + otherwise. + * hurd: add Depends: hurd (>= 20000803) for libc0.2 + * libpthread: soname version is now 0.9 + * debian/libc/DEBIAN/shlibs: bump to 2.1.94 + * libc6: add temporary depend on libdb2 + * debian/rules: check for FAKEROOTKEY, and fail if it's there. We cannot + build under fakeroot, we need real rewt. Fear my hacking skillz. + + -- Ben Collins Mon, 25 Sep 2000 11:30:45 -0400 + +glibc (2.1.3-14) stable; urgency=low + + * Stable upload for some serious issues in potato + * Patch to match glibc 2.2 to not set personality, closes: #72165 + * Arm ld.so patch, closes: #75982 + * Add check for FAKEROOTKEY, to $(checkroot) to make sure we build as + real root, and not fakeroot. This is required for locale definitions + to be generated properly. closes: #70806, #70876 + * Backport the fix to lockf(F_TEST), which fixed this on alpha and + sparc. + + -- Ben Collins Tue, 2 Jan 2001 17:15:44 -0500 + +glibc (2.1.3-13) stable; urgency=low + + * Damnit...used the 0824 patch set, now there's an 0827 :/ + + -- Ben Collins Fri, 1 Sep 2000 10:54:11 -0400 + +glibc (2.1.3-12) stable; urgency=low + + * Ugh, add three patches posted by Solar Designer which include the ldso + bug (better patch), locales bug, and md5 fixups. + + -- Ben Collins Thu, 31 Aug 2000 11:10:46 -0400 + +glibc (2.1.3-11) stable; urgency=low + + * Security upload for ldso problem + * Fix sparc headers too + * Might aswell change the maintainer too (So long Joel, you are missed) + + -- Ben Collins Thu, 31 Aug 2000 11:10:36 -0400 + +glibc (2.1.3-10) frozen unstable; urgency=low + + * The "Ask not for whom the feep tolls" release. + * zic -l will use hardlinks if /etc and /usr are on the same + filesystem, so revert to ln -s. + * Update Build-Depends to kernel-headers-2.2.15. + + -- Joel Klecker Fri, 28 Apr 2000 18:45:49 -0700 + +glibc (2.1.3-9) frozen unstable; urgency=low + + * The "Insert clever reference here" release. + * debian/patches: + - i386-sys-io-c++: Change '::' to ': :' to avoid confusing g++ + + closes: Bug#57914 + - zic-l: Fix -l in zic(8) (taken from OpenBSD) + * Teach tzconfig to acquire current timezone from /etc/localtime + symlink if necessary. + * Use zic -l instead of ln to make /etc/localtime symlink. + + -- Joel Klecker Fri, 21 Apr 2000 13:30:47 -0700 + +glibc (2.1.3-8) frozen unstable; urgency=low + + * The "What's my name? Say my name, bitch!" release. + * debian/patches: + - i386-linux-ucontext: Don't use ERR. + + closes: Bug#59962 + - ldd: + + Improve non-executable shared object handling. + + Revert ${RTLD} --list stuff. (closes:Bug#60869) + + alpha will break again, someone needs to fix ld.so. + * debian/control.in/main: locales: Depends: @libc@ (= ${Source-Version}) + This will insulate us from data format changes. + * Fix tzconfig man page (closes:Bug#61610,#61613). + * Revert /etc/localtime to a symlink (closes:Bug#60744). + + -- Joel Klecker Mon, 3 Apr 2000 08:40:07 -0700 + +glibc (2.1.3-7) frozen unstable; urgency=low + + * The "Light my Alpha fire with a SPARC" release. + * debian/patches: + - libc-pr-fixes: Fixes for post-2.1.3 PRs + + closes: Bug#59802,#59257 + - tzdata2000c: Includes AR timezone correction + + closes: Bug#59790,#59806 + - sparc-linux-getsysstats: Update so it actually works. + - alpha-dwarf2-dl-machine: Fix for unaligned traps from C++ EH code + + closes: Bug#59789 + + -- Joel Klecker Tue, 7 Mar 2000 10:31:42 -0800 + +glibc (2.1.3-6) frozen unstable; urgency=low + + * The "Smash Everything with a _Huge Steamroller_!" release. + * debian/sysdeps/gnu.mk: Define WANT_LDD (closes:Bug#59165). + * debian/libc/DEBIAN/preinst: Make this as /bin/bash script (closes:Bug#59613). + * debian/libc/DEBIAN/postinst: + - Only make /var/mail symlink on upgrades. + - Make this a /bin/bash script. + * debian/sysdeps/depflags.mk: (libc_control_flags) + C/R/P gconv-modules where necessary, Replace locales (<< 2.1.3-5). + * debian/control.in/main: Build-Indep-Depends: perl5 (closes:Bug#59350). + * debian/libc/etc/init.d/devpts.sh: Remove version check, checking for + the filesystems alone should be sufficient (closes:Bug#59576). + + -- Joel Klecker Sat, 4 Mar 2000 09:28:08 -0800 + +glibc (2.1.3-5) frozen unstable; urgency=high + + * The "Down, not across" release. + * 2.1.3 final. + * Pre-Depends were a bad idea + - quit using readlink. + - removed pre-depends on debianutils. + * Add devpts.sh again, this time not as a conffile. + * Build-Depends: gcc (>= 2.95.2-6) [alpha], remove sharutils [alpha]. + * Move /usr/lib/gconv to $(libc). + + -- Joel Klecker Sat, 26 Feb 2000 00:14:34 -0800 + +glibc (2.1.3-4) frozen unstable; urgency=low + + * The "Pain as bright as steel squared" release. + * glibc 2.1.3pre4. + * Remove debian/patches/po-it-po.dpatch, + debian/patches/powerpc-linux-sys-procfs.h.dpatch, and + debian/patches/powerpc-linux-syscalls.list-mmap64.dpatch; + Integrated upstream. + * Add back debian/patches/linuxthreads-lock.dpatch now that I know + what it's for (closes:Bug#58385). + * Bugs closed since devpts.sh is gone (closes:Bug#57584,#57698,#57580). + * debian/libc/DEBIAN/preinst: + - Save a copy of /etc/timezone in /etc/timezone.save. + - Convert /etc/localtime from link to file. + * debian/libc/DEBIAN/postinst: + - Use /etc/timezone.save if necessary. (closes:Bug#57885,#57922). + - Remove some unnecessary timezone code that caused some odd behavior + (closes:Bug#57456). + * tzconfig: /etc/localtime is a file, not a link. + * $(libc): Pre-Depend on debianutils (>= 1.13.1) for readlink. + + -- Joel Klecker Fri, 18 Feb 2000 17:35:19 -0800 + +glibc (2.1.3-3) frozen unstable; urgency=low + + * The "Pain as bright as steel" release. + * Move iconv, locale, localedef to $(libc). + * Remove devpts.sh. + * debian/patches/po-it-po.dpatch: + Add "portable object" for Italian (closes:Bug#57031). + * $(libc): Replaces: locales (closes:Bug#57482). + * Add Build-Depend for gettext (closes:Bug#57797). + + -- Joel Klecker Fri, 11 Feb 2000 13:02:13 -0800 + +glibc (2.1.3-2) frozen unstable; urgency=low + + * The "Dark, Naughty Evil" release. + * debian/patches/powerpc-linux-sys-procfs.h.dpatch: + Fix sys/procfs.h for powerpc-linux. + + -- Joel Klecker Mon, 7 Feb 2000 17:38:54 -0800 + +glibc (2.1.3-1) frozen unstable; urgency=low + + * The "From now on all of my world-killing weapons will be kept a TOTAL SECRET!" release. + or the "Brown Paper Bag" release. + * Really fix devpts.sh + (closes:Bug#56659,#56687,#56726,#56770,#56782,#56893,#56941,#56850,#56659,#57049,#57005,#57156,#57183). + * Give up and call it 2.1.3. + * CVS as of 2000-01-31. + * Move some docs from glibc-doc back to $(libc). + * Make /etc/init.d/devpts.sh and /etc/default/devpts conffiles (closes:Bug#57081). + * Reenable libnss1-compat.. + + -- Joel Klecker Sun, 6 Feb 2000 08:55:41 -0800 + +glibc (2.1.2-13) frozen unstable; urgency=low + + * The "@!%$&! you, I use Debian" release. + * debian/patches/powerpc-linux-syscalls.list-mmap64.dpatch: + Fix mmap and stuff (closes:Bug#56343). + * Add sharutils [alpha] to Build-Depends, drop gcc dep. + * $(libc): conflict with locales (<< 2.1.2-12). + * locales: replaces $(libc)-bin (closes:Bug#56540,#56536,#56534). + * Fix devpts.sh (closes:Bug#56487,#56507,#56559). + * Update to CVS as of 2000-01-29. + * Restore HTML to glibc-doc (closes:Bug#56609). + + -- Joel Klecker Sun, 30 Jan 2000 01:14:05 -0800 + +glibc (2.1.2-12) frozen unstable; urgency=low + + * The "Cardboard Messiah" release. + * debian/rules: Form arch_packages and indep_packages using += instead + of $(filter-out ...). + * debian/package-rules/locales.mk: Remove cross-compiling kluges. + * debian/package-rules/libc-dbg.mk: Fix libthread_db (closes:Bug#55439). + * debian/control.in/main: + - locales: Architecture all -> any. + - Build-Depends: + + add make (>= 3.78) due to use of new warning and error make functions. + + add gcc (>= 2.95.2-5) for alpha. + * Merge gconv-modules back into locales. + * Move locale and localedef programs back into locales. + * Put devpts.sh init script back in $(libc). (closes:Bug#50913,#53842) + * Add Replaces for timezones back into $(libc). + * Kill $(libc)-bin. + * Restore `tzselect' script, which slipped out of $(libc) (closes:Bug#55377) + * Bugs fixed in -11.0.1 (closes:Bug#53705,#53659,#53680,#53754 + * Update to CVS as of 2000-01-26. + * Eliminate obsoleted patches. + + -- Joel Klecker Wed, 26 Jan 2000 16:44:12 -0800 + +glibc (2.1.2-11.0.1) unstable; urgency=low + + * Binary-only upload of locales. + + -- Joel Klecker Wed, 29 Dec 1999 11:45:56 -0800 + +glibc (2.1.2-11) unstable; urgency=low + + * The "If it ain't broke, you're not tryin'" release. + * Split out $(libc)-bin and libnss1-compat. + * Split debian/rules into debian/package-rules/*. + $(libc-bin): + - Install db_* programs as glibcdb_*. + - Move zic, zdump, locale, localedef, getent here. + - Use alternatives for db_*. (closes:Bug#50311,#50341) + * debian/mk/rules-* -> debian/rules.d/*. + * debian/ now resembles $(tmpdir) tree for . + * Improve setperms rule, so debian/perms can specify fewer files. + * New source unpacking system, see prep.sh. + * Remove devpts.sh, the init script is now in sysvinit. + * Improve debian/libc/DEBIAN/shlibs rule (debian/rules.d/shlibs.mk). + * debian/sysdeps/soname.mk: Bump shlib_depend. + * Add sysdeps files for $(DEB_HOST_GNU_CPU). + * Add debian/patches/glibc-mega.dpatch: + Selected patches from CVS (closes:Bug#48120,#52195). + * Add debian/patches/linuxthreads-mega.dpatch: + Selected patches from CVS. + * Add debian/patches/alpha-pt-machine.h.dpatch: + Fix pt-machine.h so that linuxthreads compiles on Alpha. + * Add debian/patches/db2-alpha-powerpc-mutex.dpatch: + Alpha and PowerPC implementations for db2 spinlocks. + (patches by David Huggins-Daines ) + (db2 patch slightly modified) + * Add debian/patches/powerpc-plt.dpatch: + 1999-10-07 Geoffrey Keating + * sysdeps/powerpc/dl-machine.c: Many minor formatting changes. + (OPCODE_LWZU): New macro. + (OPCODE_ADDIS_HI): New macro. + (OPCODE_LIS_HI): New macro. + (__elf_machine_runtime_setup): Change PLT code-generation scheme + for thread safety even with very large PLTs, better efficiency, + and to fix a cache-flushing bug. + (__elf_machine_fixup_plt): Likewise. + (__process_machine_rela): Don't use elf_machine_fixup_plt. + * Add debian/patches/sparc64-linux-lib64.dpatch: + Use /lib/64 and /usr/lib/64 instead of /lib64 and /usr/lib64. + * Add debian/patches/sparc64-linux-execve.dpatch: + Add __syscall_execve to sparc64 syscalls.list. + * Add automatic parallel build support for SMP systems. + * Fix broken parsing of DEB_BUILD_OPTIONS. + * Add framework to build libc6-64 and libc6-64-dev packages for sparc + (not enabled for potato). + * Split locales into `locales' and `i18ndata'. + + -- Joel Klecker Sat, 25 Dec 1999 09:54:29 -0800 + +glibc (2.1.2-10) unstable; urgency=low + + * The "Omigod! I overdosed on heroin!" release. + * debian/devpts.init: Create /dev/ptmx unconditionally. + * Restore correct nscd DEBIAN dir. + * Revamp rules a bit (split more parts into debian/mk/rules-*). + * debian/mk/sysdeps.mk: Split into pieces and include them. + * debian/patches/tzcode1999h.dpatch: + Update timezone data to 1999h release. + * Add stub for support for libc6-64 packages for sparc. + * Add one more last timezone sanity check to libc postinst (closes:Bug#49539). + * Always unpack linuxthreads add on and pass --enable-add-ons=crypt to + configure for hurd (closes:Bug#49459). + + -- Joel Klecker Mon, 8 Nov 1999 09:47:28 -0800 + +glibc (2.1.2-9) unstable; urgency=low + + * The "Service with a capital 'Bugger Off'" release. + * debian/copyright: Update for 2.1.2. + * debian/rules: Make each binary package depend on setperms (closes:Bug#48914). + * Move debian/libc-doc to debian/glibc-doc and eliminate the need for + postinst and prerm to be generated files. (closes:Bug#48786). + + -- Joel Klecker Sun, 31 Oct 1999 09:23:16 -0800 + +glibc (2.1.2-8) unstable; urgency=low + + * The "Can't Start a Fire Without a SPARC" release. + * Build with unstable dpkg. + * debian/patches/sparc-various.dpatch: Various sparc-specific patches + from Jakub Jelinek and David S. Miller . + + -- Joel Klecker Sat, 30 Oct 1999 06:55:33 -0700 + +glibc (2.1.2-7) unstable; urgency=high + + * The "Fuck Me Harder" release. + * sparc-linux: Replaces: ldso (<< 1.9.11-6). + * debian/{libc.postinst.in,libc/prerm}: Add /usr/doc symlink stuff (closes:Bug#48324). + * debian/control.in-main: Adjust locales depends. + Correct Build-Depends: field. + * debian/mk/source-rules.mk: Split unpack-source, source, and orig-source + targets from debian/rules. + * debian/patches/manual-texinfo4.dpatch: Use @ifnottex instead of @ifinfo. + * Use makeinfo --html to generate HTML version of glibc manual. + * Remove texi2html from debian/scripts. + * Fix debian/scripts/Makefile for cross-compiling. + * Correct debian/patches/string2-pointer-arith.dpatch for archs that don't + support unaligned memory accesses. + + -- Joel Klecker Fri, 29 Oct 1999 09:06:27 -0700 + +glibc (2.1.2-6) unstable; urgency=low + + * The "Evil Bitch Monster of Death" release. + * debian/rules: Move debian/control targets to... + debian/mk/debian-control.mk. + * Move debian/*.mk to debian/mk/. + * Use debian//* for control archive items. + Adjust debian/rules for this. + * Add setperms target to set modes of debian//*. + Make unpack-source and clean depend on it. + * Don't compile with -g when DEB_HOST_GNU_CPU is alpha. + * debian/patches/string2-pointer-arith: New file. + Fix "/usr/include/bits/string2.h:419: warning: pointer of type `void *' + used in arithmetic" (closes:Bug#45824,#44491,#44697) + * Change maintainer back to "Joel Klecker ". + * Update to CVS sources as of 1999-10-24. + * debian/patches/{linuxthreads-signals.c-ucontext,cs-po}.dpatch: + Fixes for source tree brokenness. + * Adjust clean target for new generated files. + * Add libresolv to $(libc)-pic. + * Add readlink.c and texi2html to debian/scripts to eliminate tetex-bin dependency. + * nscd: Install nscd_nischeck. + Sync nscd.init with upstream. + * Implement /usr/doc symlinks. + * $(libc): strip libpthread with --strip-debug. + + -- Joel Klecker Sun, 24 Oct 1999 20:50:58 -0700 + +glibc (2.1.2-5) unstable; urgency=low + + * The "One more week to go" release. + * debian/patches/localedata-SUPPORTED: + Oops, this patch wasn't actually being applied. + eo_EO, zh_TW.Big5, and es_AR should be [back] in locales now. + Back out zh_CN, the definition is broken. + * Remove sparc from HAVE_LIBC{4,5}, we want to install our ldd. + * debian/patches/sparc-linux-ldd.dpatch: New file. + Restore missing patch (in ChangeLog, not in source). + * debian/sysdeps.mk: Tighten alpha shlib_depend to libc6.1 (>= 2.1.2-1). + + -- Joel Klecker Tue, 28 Sep 1999 04:55:35 -0700 + +glibc (2.1.2-4) unstable; urgency=low + + * The "Perl Sucks" release. + * debian/libc.postinst: Steal updatercd shell function from sysvinit postinst. + Use it for devpts.sh. (closes:Bug#45867,#45879,#45880,#45885,#45895) + Bitch-slap perl maintainers. :) + * debian/rules: nscd: run nscd.conf through sed 's/adm/log/'. + * debian/patches/sparc-llnux-chown.dpatch: Update from Ben Collins. + * debian/sysdeps.mk: Drop sparc-linux depends back to libc6 (>= 2.0.105). + + -- Joel Klecker Fri, 24 Sep 1999 12:39:26 -0700 + +glibc (2.1.2-3) unstable; urgency=low + + * The "Pot-smoking Pikachu" release. + * debian/rules: Don't install ldd man page on i386/m68k (closes:Bug#45421). + check: Don't depend on build. + Symlink db_dump185 manpage to db_dump manpage (closes:Bug#42322). + $(libc)-pic: Install map file for libm. + Install map files as $(libdir)/libfoo_pic.map. + * debian/patches/zh_TW.Big5-locale.dpatch: + Split into localedata-charmap-BIG5_1984 and localedata-zh_TW.Big5. + * debian/patches/eo_EO-locale.dpatch: Rename to... + localedata-eo_EO. + * debian/patches/localedata-SUPPORTED.dpatch: New file. + Add eo_EO, es_AR (closes:Bug#37162), zh_CN.GB2312 (closes:Bug#38553), + zh_TW.Big5. + * debian/patches/pthread_create-manpage.dpatch: New file. + Correct pthread_create manpage to match texinfo documentation + (closes:Bug#22119). + + -- Joel Klecker Wed, 22 Sep 1999 19:16:01 -0700 + +glibc (2.1.2-2) unstable; urgency=low + + * The "Bite Me" release. + * debian/rules: $(libc): strip pt_chown. + Don't install ldd on i386/m68k. + Query dpkg-architecture variables individually. + Use bunzip2 -c ... | tar xf - instead of tar yxf. + $(libc)-pic: Add libm_pic.a. + check: New target; run test suite. + Call make with SHELL=/bin/bash, as the test suite seems to rely on + bash behavior. + Use --strip-unneeded (closes:Bug#40467). + * debian/sysdeps.mk: reorganize. + * debian/patches/generic-getenv.dpatch: New file. + 1999-09-10 Andreas Schwab + + * sysdeps/generic/getenv.c (getenv): Fix lookup for single + character variable on bigendian platforms without unaligned memory + access. + + -- Joel Klecker Thu, 16 Sep 1999 14:41:28 -0700 + +glibc (2.1.2-1) unstable; urgency=low + + * The "Gone Evil" release. + * glibc 2.1.2 final. + - Properly free mmaps for archs without spinlocks in db2 (closes:Bug#43786). + + * debian/rules: configure: Fix hurd part (missing \). + Add frame.o hack for alpha. + Use CFLAGS instead of default_cflags. + Create srcdir for each arch. + Remove arch/indep patch split. + New directory layout (build/foo- -> build//foo). + Use bz2 tarballs. + + * debian/patches/sparc-linux-types.dpatch: Remove, applied upstream. + + * devpts.sh never used any bashisms (closes:Bug#43296). + + -- Joel Klecker Tue, 7 Sep 1999 05:00:58 -0700 + +glibc (2.1.2-0pre12) unstable; urgency=low + + * The "Espy's Birthday" release. + * debian/rules: (libc-pic) strip debugging symbols from *_pic.a. + interp.o is no longer needed. + + * debian/patches/sparc-linux-types.dpatch: New file. + 1999-07-25 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/bits/types.h: Define always + __qaddr_t. + __ino64_t should be 32bit unsigned type on sparc32. + Define __off64_t to __quad_t instead of __int64_t. + Make __pic_pid_t unsigned on sparc32. + + * Really change maintainer name to Debian GNU C Library Maintainers. + + * debian/control.in-libc: s/m@archs@/many/ (closes:Bug#43657). + + * debian/devpts.init: Check if devpts is already mounted before trying + to mount it. (closes:Bug#43658,#43659). + Remove exit 0 from end (closes:Bug#42541) + + * Fixed upstream: db_dump185 now linked with libdb1 (closes:Bug#42898). + + -- Joel Klecker Sun, 29 Aug 1999 07:51:16 -0700 + +glibc (2.1.2-0pre11) unstable; urgency=high + + * The "Lesbian Seagull" release. + * glibc 2.1.2pre3. + + -- Joel Klecker Wed, 25 Aug 1999 15:33:23 -0700 + +glibc (2.1.2-0pre10) unstable; urgency=low + + * The "Crack-smoking Squirrel" release. + * CVS as of 1999-08-21. + * Change maintainer name to Debian GNU C Library Maintainers. + + -- Joel Klecker Sat, 21 Aug 1999 10:57:42 -0700 + +glibc (2.1.2-0pre9) unstable; urgency=low + + * The "Son of Drunken Iceweasel" release. + * Compile with gcc 2.95.1. + * CVS as of 1999-08-18. + + -- Joel Klecker Wed, 18 Aug 1999 11:11:29 -0700 + +glibc (2.1.2-0pre8) unstable; urgency=low + + * The "Drunken Iceweasel" release. + * Compile with gcc 2.95.1-0pre1. + * Remove explicit -march=i386 on i386, it's no longer needed. + + -- Joel Klecker Sun, 15 Aug 1999 08:34:55 -0700 + +glibc (2.1.2-0pre7) unstable; urgency=low + + * The "Evil Mastermind" release. + * CVS as of 1999-08-09. + * debian/patches/arm-osabi.dpatch: "...and another patch bites the dust" + (functionality integrated upstream). + * Add -march=i386 on i386 to work around gcc lossage. + + -- Joel Klecker Tue, 10 Aug 1999 01:54:57 -0700 + +glibc (2.1.2-0pre6) unstable; urgency=low + + * The "Stoned Monkey" release. + * More adjustments for multi-arch build tree. + * Split patch rules into debian/patch-rules.mk. + * Divide patch system into indep and arch patches. + * Update sources to CVS as of 1999-08-08 (closes:Bug#42579,#42343). + - I think perhaps this will fix the StarOrifice problem too. + + -- Joel Klecker Sun, 8 Aug 1999 21:11:12 -0700 + +glibc (2.1.2-0pre5) unstable; urgency=low + + * The "Chainsaw Psycho" release. + * Install zdump in $(bindir). + * Fix 3l33t control frags system for "weird" architectures. ;) + * Avoid using DEB_*_ARCH variables, for they are evil. :) + + -- Joel Klecker Fri, 6 Aug 1999 05:34:55 -0700 + +glibc (2.1.2-0pre4) unstable; urgency=low + + * 2.1.2pre2. + * Run testsuite in build target. + * $(libc)-pic: Provides: glibc-pic. + * Logging is back. + * Update copyright file. + + -- Joel Klecker Sun, 1 Aug 1999 17:58:49 -0700 + +glibc (2.1.2-0pre3) unstable; urgency=low + + * CVS as of 19990730. + * Implement new debian/control-frags system. + * $(libc)-pic is back. + * {gconv-modules,$(libc)-{pic,dev,dbg,prof}}: + doc dirs are directories again. + + -- Joel Klecker Fri, 30 Jul 1999 10:52:06 -0700 + +glibc (2.1.2-0pre2) unstable; urgency=low + + * debian/rules: Fix typo that prevented all the linux-specific + patches from being applied. + + -- Joel Klecker Mon, 26 Jul 1999 14:44:46 -0700 + +glibc (2.1.2-0pre1) unstable; urgency=low + + * New upstream pre-release 2.1.2pre1. + * debian/depflags.mk. + - (libc_dev_control_flags): + Add conflicts to alpha/i386/m68k for libncurses4-dev (<< 4.2-3.1) and + libreadlineg2-dev (<< 2.1-13.1). + - (libc_control_flags): + Add conflicts to alpha/i386/m68k for libglib1.2 (<< 1.2.1-2). + * devpts.init: + - Cope with EXTRAVERSION in uname -r (closes:Bug#41064,#41389). + - Don't worry about /dev/ptmx anymore, glibc now checks for a mounted + devpts filesystem as well as an existing /dev/ptmx. + * debian/patches/{ieee754_y0,linux-mmap64,libio-oldiopopen}.dpatch: + Removed; applied upstream. + * debian/patches/arm-{dynamiclinker,tftp}.dpatch: + Removed; applied upstream. + * debian/patches/arm-string.dpatch: + Remove string/endian.h part (applied upstream) and rename to arm-ieee754. + * Disable building of $(libc)-pic, the boot-floppies library + reduction hack doesn't work anyway. + * Adjusted rules for dpkg-architecture and reworked source unpacking + to handle snapshot upstream versions better. + * Use suidmanager for pt_chown. + * More fully adopt dpkg-architecture system. + * Correct libc.preinst for sparc. + * Set sparc shlib_depend to $(libc) (>= 2.1) per request. + + -- Joel Klecker Sat, 24 Jul 1999 12:35:05 -0700 + +glibc (2.1.1-13) unstable; urgency=low + + * debian/devpts.init: Revise again. + * debian/rules: debian/shlibs: Add special case for libdb1. + * debian/sysdeps.mk: Add cflags variable and i386 hack + (hopefully this will allow the library to run on 386es again). + * Use 2.2.10 kernel headers by default on *-linux targets. + * Docs in /usr/share/doc. + * debian/control.in: Update Standards-Version to 3.0.0. + * debian/fhs.dpatch: Adjust for FHS 2.1pre2 /var/mail wording. + * debian/libc.postinst: Symlink /var/mail to /var/spool/mail. + * Integrate changes from Jim Pick's NMUs for arm (closes:#40927,#40479,#40691). + * debian/patches/ieee754_y0.dpatch: Upstream fix for yn() issue. + * debian/patches/linux-mmap64.dpatch: Fix for mmap64() on powerpc + (maybe others too). + * debian/patches/libio-oldiopopen.dpatch: Fix for glibc 2.0 compat popen(). + * debian/copyright: + - Update URLs + - Add libio license + - s%/usr/doc/copyright%/usr/share/common-licenses% + + -- Joel Klecker Wed, 7 Jul 1999 17:36:23 -0700 + +glibc (2.1.1-12.3) unstable; urgency=low + + * Non-maintainer upload. + * Oops, messed up tftp patch for ARM. + + -- Jim Pick Wed, 7 Jul 1999 00:15:48 -0700 + +glibc (2.1.1-12.2) unstable; urgency=low + + * Non-maintainer upload. + * Another patch for ARM to fix tftp struct alignment problem. + + -- Jim Pick Thu, 1 Jul 1999 09:38:02 -0700 + +glibc (2.1.1-12.1) unstable; urgency=low + + * Non-maintainer upload. + * Include patch for ARM to fix dynamic linker. + + -- Jim Pick Thu, 17 Jun 1999 21:11:59 -0700 + +glibc (2.1.1-12) unstable; urgency=low + + * debian/rules: Use /var/lib/misc here too. + * debian/tzconfig: Fix #! line. + * debian/libc.postinst: Minor adjustments. + + -- Joel Klecker Tue, 15 Jun 1999 09:24:49 -0700 + +glibc (2.1.1-11) unstable; urgency=low + + * debian/patches/glibcbug.dpatch: New file. + - Fixes glibcbug to use `sensible-editor' + * debian/patches/fhs.dpatch: Deal with _PATH_VARDB. + * debian/patches/m68k-chown.dpatch: Fix paths (closes:Bug#37933). + * $(libc): Add HTML version of glibc FAQ. + * tzselect is crap, restore old version of tzconfig. + * Use 2.2.9 kernel headers by default on *-linux targets. + + -- Joel Klecker Sun, 13 Jun 1999 09:34:41 -0700 + +glibc (2.1.1-10) unstable; urgency=low + + * debian/libc.postinst: Redirect stdout/stderr to /dev/null when + restarting services (closes:Bug#38413). + * debian/patches/fhs.dpatch: Alter slightly for FHS 2.1 draft. + + -- Joel Klecker Mon, 31 May 1999 01:45:27 -0700 + +glibc (2.1.1-9) unstable; urgency=low + + * 2.1.1 final (closes:Bug#38178). + * -7 was accidentally/intentionally compiled with gcc 2.95pre. + * -8 was a local build. + + -- Joel Klecker Mon, 24 May 1999 22:10:01 -0700 + +glibc (2.1.1-8) unstable; urgency=low + + * Rebuild with egcs 1.1.2. + (/me hides) + + -- Joel Klecker Sun, 23 May 1999 21:28:29 -0700 + +glibc (2.1.1-7) unstable; urgency=low + + * Make sure all patches get applied (closes:Bug#37951,Bug#37974). + * Fixes for m68k via Roman Hodek + - (debian/rules): Add new m68k-chown patch (closes:Bug#38048). + - (debian/depflags.mk): Fix m68k case (closes:Bug#37933). + * There were some localedata changes in format between -5 and -6 + (closes:Bug#37850,Bug#37822,Bug#37829). + * Add patch to fix install-locales target when localedata is not installed. + * Build locales in the `locales' target + (no sense building them in the arch-indep install target). + + -- Joel Klecker Thu, 20 May 1999 14:02:15 -0700 + +glibc (2.1.1-6) unstable; urgency=low + + * 2.1.1pre3. + * (debian/rules): Set BASH and KSH to /bin/bash in configparms. + * (debian/libc.preinst): sparc fix (closes:Bug#37415,Bug#37616). + * (debian/nscd.prerm): Stop nscd before removing it (closes:Bug#37416). + + -- Joel Klecker Mon, 17 May 1999 19:29:12 -0700 + +glibc (2.1.1-5) unstable; urgency=low + + * CVS as of 1999-05-08. + + -- Joel Klecker Sat, 8 May 1999 19:31:52 -0700 + +glibc (2.1.1-4) unstable; urgency=low + + * Fix logic errors in tzconfig. + + -- Joel Klecker Sat, 8 May 1999 00:07:44 -0700 + +glibc (2.1.1-3) unstable; urgency=low + + * 2.1.1pre2. + * glibc-compat 2.1.0. + * debian/copyright: Update URLs for upstream source locations. + * debian/devpts.init: Rewrite for more sensible handling of devfs. + * debian/libc.postinst: Be more paranoid about /etc/timezone, and + always remake /etc/localtime symlink. + * debian/sysdeps.mk: Add sparc to HAVE_LIBC4 to deal with lddlibc4. + * debian/rules: Don't apply sparc32-ldd patch. + * debian/patches/sparc32-ldd.dpatch: delete. + + -- Joel Klecker Fri, 7 May 1999 10:40:11 -0700 + +glibc (2.1.1-2) unstable; urgency=low + + * $(libc): replace locales << 2.1.1-1 + * debian/depflags.mk: clean up + * debian/control.in: locales: remove depend on @libc@ (closes:Bug#36654). + * debian/devpts.sh: Remove bashisms (closes:Bug#36552). + * debian/libc.postinst: + - Use ln -sf instead of zic -l (closes:Bug#36305). + - If upgrading from glibc 2.0, restart services potentially affected + by libnss_* upgrade. + * debian/libc.preinst: Add kernel version sanity check for sparc. + * debian/rules: + - Fix reverse-patches target (closes:Bug#36574). + - Fix libexecdir handling (closes:Bug#36673). + - locales is binary-all, so build it in binary-indep, not binary-arch. + * debian/sysdeps.mk: $(shlib_depend): >= 2.0.105 for sparc. + * locales: Add eo_EO (Esperanto) locale definition. + + -- Joel Klecker Sat, 1 May 1999 22:22:22 -0700 + +glibc (2.1.1-1) unstable; urgency=low + + * Using maintainer versions now; 2.1.1 is still in pre-release. + * CVS as of 1999-04-19. + * Upgrade glibc-compat addon. + * Add kernel version sanity check to nscd init script. + * Slight tweaks to devpts.sh init script. + * Remove hurd-fcntl patch, it is applied upstream. + * Fix libc.preinst libnss code. + * Symlink /var/db to /var/state/glibc for backward compatibility. + * Add zh_TW.Big5 locale and BIG5_1984 charmap. + * Revert to ln -sf instead of zic -l in tzconfig (closes:Bug#36305). + * Add latest version of sparc32-chown patch. + * Move architecture-dependant parts of locales to other packages + and make it Architecture: all. + * Move locale and localedef to $(libc); and split gconv-modules into its + own package. + + -- Joel Klecker Tue, 20 Apr 1999 15:09:18 -0700 + +glibc (2.1.1-0.2) unstable; urgency=low + + * Upgrade to latest CVS sources. + - Fixes ttyname problem which affected screen (closes:Bug#35695). + - libio backward compatibility fixes. + - Many other fixes. + * Put manpages in /usr/share/man, info in /usr/share/info. + * Add devpts.sh init script and /etc/default/devpts to configure it. + * Better FHS compliance. + - /var/db -> /var/state/glibc. + - --libexecdir=/usr/lib (my reading of the FHS seems to allow + executables directly in /usr/lib). + + -- Joel Klecker Wed, 7 Apr 1999 14:47:08 -0700 + +glibc (2.1.1-0.1) unstable; urgency=low + + * Now using NMU-style versions for prereleases. + * Don't start utmpd. + * Somehow the old nss modules (libnss_*.so.1) slipped out + of the last release, put them back. + * Let libc keep its x bit. + (executing it presents some interesting output) + + -- Joel Klecker Wed, 17 Mar 1999 00:44:44 -0800 + +glibc (2.1.1-0pre1.3) unstable; urgency=low + + * Fix source package. + * $(libc)-dbg: Install libpthread (closes:Bug#34461). + * $(libc): Add note about devpts and services to postinst. + - Recreate databases in /var/db if upgrading from glibc 2.0.x + (closes:Bug#34442) + - i386, alpha, m68k: Conflict with libtricks, apt (<< 0.1.10.1). + * Change default_cflags to -O2 -g. + * Allow make check to fail. + + -- Joel Klecker Sat, 13 Mar 1999 15:14:50 -0800 + +glibc (2.1.1-0pre1.2) unstable; urgency=low + + * strip shared libs with --strip-debug instead of --strip-unneeded. + * Loosened shlibs depend. + + -- Joel Klecker Fri, 12 Mar 1999 22:33:01 -0800 + +glibc (2.1.1-0pre1.1) unstable; urgency=low + + * Fix $(libc) replaces on i386. + + -- Joel Klecker Fri, 12 Mar 1999 14:47:28 -0800 + +glibc (2.1.1-0pre1) unstable; urgency=low + + * New upstream release. + * Really release this one to unstable. + + -- Joel Klecker Wed, 10 Mar 1999 09:14:29 -0800 + +glibc (2.1-4) unstable; urgency=low + + * First release for unstable. + * Add glibc-compat addon. + * $(libc): Conflict with libwcsmbs + - Start utmpd and touch /var/run/utmpx, /var/log/wtmpx. + * $(libc)-dbg: Install unstripped shared libs in /usr/lib/glibc_dbg. + * $(libc)-prof: Strip libraries. + * glibc-doc: Remove cruft from top-level of info dir. + * Split nscd into separate package. + * Fixed $KERNEL_SOURCE handling. + * Bugs fixed: 19264, 22788, 26148, 26306, 30609, 30773, 31415 + (will elaborate later :) + + -- Joel Klecker Fri, 5 Mar 1999 11:29:44 -0800 + +glibc (2.1-3) unstable; urgency=low + + * (debian/depflags.mk): + - Correct typo + - Add libc_dev_control_flags for Conflicts + + -- Joel Klecker Mon, 8 Feb 1999 03:22:27 -0800 + +glibc (2.1-2) unstable; urgency=low + + * Get shlibs file dependencies correct. + + -- Joel Klecker Sat, 6 Feb 1999 22:56:22 -0800 + +glibc (2.1-1) unstable; urgency=low + + * New upstream release. + * (debian/control.in): Update maintainer address. + * (debian/depflags.mk): + $(libc): conflict and replace timezone, timezones; replace libdb2 + * (debian/rules): + $(libc)-dev: copy subdirectories from $(KERNEL_HEADERS)/linux too. + timezones: remove + $(libc): Put timezone data, and the zic and zdump utils here + * Sync with HURD again. + * Removed hurd-utimes patch, it is integrated upstream. + + -- Joel Klecker Sat, 6 Feb 1999 12:26:10 -0800 + --- glibc-2.4.orig/debian/control +++ glibc-2.4/debian/control @@ -0,0 +1,641 @@ +Source: glibc +Section: libs +Priority: required +Build-Depends: gettext, make (>= 3.80-1), dpkg-dev (>= 1.13.5), bzip2, texinfo (>= 4.0), file, + linux-kernel-headers (>= 2.6.11.2-0) [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], + mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20020608-1) [hurd-i386], gnumach-dev [hurd-i386], texi2html, + kfreebsd-kernel-headers [kfreebsd-i386 kfreebsd-amd64], + gcc-4.1, binutils (>= 2.16.1cvs20051109-1), + autoconf, sed (>= 4.0.5-4), gawk, debhelper (>= 4.1.76), + libc6-dev-amd64 [i386], libc6-dev-ppc64 [powerpc], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], + quilt +Build-Depends-Indep: perl, po-debconf (>= 1.0) +Maintainer: GNU Libc Maintainers +Uploaders: Ben Collins , GOTO Masanori , Philip Blundell , Jeff Bailey , Daniel Jacobowitz , Clint Adams , Denis Barbier , Aurelien Jarno +Standards-Version: 3.7.2 + +Package: glibc-doc +Architecture: all +Section: doc +Priority: optional +Suggests: glibc-doc-reference +Description: GNU C Library: Documentation + Contains man pages for libpthread functions and the complete GNU C Library + ChangeLog. The GNU C Library Reference manual has been moved into + glibc-doc-reference for licensing reasons. + +Package: locales +Architecture: all +Section: libs +Priority: standard +Depends: ${locale:Depends}, debconf | debconf-2.0 +Conflicts: base-config +Replaces: base-config, lliurex-belocs-locales-data +Description: GNU C Library: National Language (locale) data [support] + Machine-readable data files, shared objects and programs used by the + C library for localization (l10n) and internationalization (i18n) support. + . + This package contains the libc.mo i18n files, plus tools to generate + locale definitions from source files (included in this package). It allows + you to customize which definitions actually get generated. This is a + savings over how this package used to be, where all locales were generated + by default. This created a package that unpacked to an excess of 30 megs. + +Package: locales-all +Architecture: any +Section: libs +Priority: extra +Depends: ${locale:Depends} +Provides: locales +Description: GNU C Library: Precompiled locale data + This package contains the precompiled locale data for all supported locales. + A better alternative is to install the locales package and only select + desired locales, but it can be useful on a low-memory machine because some + locale files take a lot of memory to be compiled. + +Package: nscd +Architecture: alpha amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc ia64 hppa s390 sh3 sh4 sh3eb sh4eb kfreebsd-i386 kfreebsd-amd64 +Section: admin +Priority: optional +Depends: libc6 (>= ${Source-Version}) +Description: GNU C Library: Name Service Cache Daemon + A daemon which handles passwd, group and host lookups + for running programs and caches the results for the next + query. You should install this package only if you use + slow Services like LDAP, NIS or NIS+ + +Package: libc6 +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: libs +Priority: required +Provides: ${locale-compat:Depends} +Description: GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc6-dev +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: standard +Depends: libc6 (= ${Source-Version}) +Recommends: gcc | c-compiler +Description: GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc6-dbg +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: extra +Provides: libc-dbg +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: Libraries with debugging symbols + Contains unstripped shared libraries. + This package is provided primarily to provide a backtrace with + names in a debugger, this makes it somewhat easier to interpret core + dumps. The libraries are installed in /usr/lib/debug and can be + used by placing that directory in LD_LIBRARY_PATH. + Most people will not need this package. + +Package: libc6-prof +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: extra +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc6-pic +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: optional +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc6-udeb +XC-Package-Type: udeb +Architecture: amd64 arm arm-softfloat armeb i386 m32r m68k mips mipsel powerpc ppc64 sparc s390 hppa sh3 sh4 sh3eb sh4eb +Section: debian-installer +Priority: extra +Provides: libc6, libc-udeb, ${locale-compat:Depends} +Description: GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + +Package: libc6.1 +Architecture: alpha ia64 +Section: libs +Priority: required +Provides: ${locale-compat:Depends} +Description: GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc6.1-dev +Architecture: alpha ia64 +Section: libdevel +Priority: standard +Depends: libc6.1 (= ${Source-Version}) +Recommends: gcc | c-compiler +Description: GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc6.1-dbg +Architecture: alpha ia64 +Section: libdevel +Priority: extra +Provides: libc-dbg +Depends: libc6.1 (= ${Source-Version}) +Description: GNU C Library: Libraries with debugging symbols + Contains unstripped shared libraries. + This package is provided primarily to provide a backtrace with + names in a debugger, this makes it somewhat easier to interpret core + dumps. The libraries are installed in /usr/lib/debug and can be + used by placing that directory in LD_LIBRARY_PATH. + Most people will not need this package. + +Package: libc6.1-prof +Architecture: alpha ia64 +Section: libdevel +Priority: extra +Depends: libc6.1 (= ${Source-Version}) +Description: GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc6.1-pic +Architecture: alpha ia64 +Section: libdevel +Priority: optional +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc6.1 (= ${Source-Version}) +Description: GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc6.1-udeb +XC-Package-Type: udeb +Architecture: alpha ia64 +Section: debian-installer +Priority: extra +Provides: libc6.1, libc-udeb, ${locale-compat:Depends} +Description: GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + +Package: libc0.3 +Architecture: hurd-i386 +Section: libs +Priority: required +Provides: ${locale-compat:Depends} +Description: GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc0.3-dev +Architecture: hurd-i386 +Section: libdevel +Priority: standard +Depends: libc0.3 (= ${Source-Version}) +Recommends: gcc | c-compiler +Description: GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc0.3-dbg +Architecture: hurd-i386 +Section: libdevel +Priority: extra +Provides: libc-dbg +Depends: libc0.3 (= ${Source-Version}) +Description: GNU C Library: Libraries with debugging symbols + Contains unstripped shared libraries. + This package is provided primarily to provide a backtrace with + names in a debugger, this makes it somewhat easier to interpret core + dumps. The libraries are installed in /usr/lib/debug and can be + used by placing that directory in LD_LIBRARY_PATH. + Most people will not need this package. + +Package: libc0.3-prof +Architecture: hurd-i386 +Section: libdevel +Priority: extra +Depends: libc0.3 (= ${Source-Version}) +Description: GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc0.3-pic +Architecture: hurd-i386 +Section: libdevel +Priority: optional +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc0.3 (= ${Source-Version}) +Description: GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc0.3-udeb +XC-Package-Type: udeb +Architecture: hurd-i386 +Section: debian-installer +Priority: extra +Provides: libc0.3, libc-udeb, ${locale-compat:Depends} +Description: GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + +Package: libc0.1 +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libs +Priority: required +Provides: ${locale-compat:Depends} +Description: GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc0.1-dev +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: standard +Depends: libc0.1 (= ${Source-Version}) +Recommends: gcc | c-compiler +Description: GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc0.1-dbg +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: extra +Provides: libc-dbg +Depends: libc0.1 (= ${Source-Version}) +Description: GNU C Library: Libraries with debugging symbols + Contains unstripped shared libraries. + This package is provided primarily to provide a backtrace with + names in a debugger, this makes it somewhat easier to interpret core + dumps. The libraries are installed in /usr/lib/debug and can be + used by placing that directory in LD_LIBRARY_PATH. + Most people will not need this package. + +Package: libc0.1-prof +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: extra +Depends: libc0.1 (= ${Source-Version}) +Description: GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc0.1-pic +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: optional +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc0.1 (= ${Source-Version}) +Description: GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc0.1-udeb +XC-Package-Type: udeb +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: debian-installer +Priority: extra +Provides: libc0.1, libc-udeb, ${locale-compat:Depends} +Description: GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + +Package: libc6-i386 +Architecture: amd64 +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Replaces: libc6-dev-i386 +Conflicts: ia32-libs (<= 1.5) +Description: GNU C Library: 32bit shared libraries for AMD64 + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the 32bit version of the library, meant for AMD64 systems. + +Package: libc6-dev-i386 +Architecture: amd64 +Section: libdevel +Priority: optional +Conflicts: ia32-libs-dev +Provides: lib32c-dev +Depends: libc6-i386 (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib32gcc1 +Description: GNU C Library: 32bit development libraries for AMD64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library, meant for AMD64 systems. + +Package: libc6-sparc64 +Architecture: sparc +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: GNU C Library: 64bit Shared libraries for UltraSPARC + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + +Package: libc6-dev-sparc64 +Architecture: sparc +Section: libdevel +Priority: optional +Provides: lib64c-dev +Depends: libc6-sparc64 (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib64gcc1 +Description: GNU C Library: 64bit Development Libraries for UltraSPARC + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for UltraSPARC systems. + +Package: libc6-s390x +Architecture: s390 +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: 64bit Shared libraries for IBM zSeries + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for zSeries systems. + +Package: libc6-dev-s390x +Architecture: s390 +Section: libdevel +Priority: optional +Provides: lib64c-dev +Depends: libc6-s390x (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib64gcc1 +Description: GNU C Library: 64bit Development Libraries for IBM zSeries + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for zSeries systems. + +Package: libc6-amd64 +Architecture: i386 +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Conflicts: amd64-libs (<= 1.2) +Description: GNU C Library: 64bit Shared libraries for AMD64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for AMD64 systems. + +Package: libc6-dev-amd64 +Architecture: i386 +Section: libdevel +Priority: optional +Depends: libc6-amd64 (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib64gcc1 +Replaces: amd64-libs-dev (<= 1.2) +Provides: lib64c-dev +Description: GNU C Library: 64bit Development Libraries for AMD64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for AMD64 systems. + +Package: libc6-powerpc +Architecture: ppc64 +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: 32bit powerpc shared libraries for ppc64 + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the 32bit version of the library, meant for ppc64 systems. + +Package: libc6-dev-powerpc +Architecture: ppc64 +Section: libdevel +Priority: optional +Provides: lib32c-dev +Depends: libc6-powerpc (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib32gcc1 +Description: GNU C Library: 32bit powerpc development libraries for ppc64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library, meant for ppc64 systems. + +Package: libc6-ppc64 +Architecture: powerpc +Section: libs +Priority: standard +Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: 64bit Shared libraries for PowerPC64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for PowerPC64 systems. + +Package: libc6-dev-ppc64 +Architecture: powerpc +Section: libdevel +Priority: optional +Provides: lib64c-dev +Depends: libc6-ppc64 (= ${Source-Version}), libc6-dev (= ${Source-Version}), lib64gcc1 +Description: GNU C Library: 64bit Development Libraries for PowerPC64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for PowerPC64 systems. + +Package: libc6-sparcv9b +Architecture: sparc +Section: libs +Priority: extra +Pre-Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: Shared libraries [v9b optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for the UltraSPARC v9b ABI. It only + needs to be installed on UltraSPARC machines. If you install this on a + non-UltraSPARC, it won't even be used. + . + WARNING: Some commercial programs do not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libc6-sparcv9v +Architecture: sparc +Section: libs +Priority: extra +Pre-Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: Shared libraries [v9v optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for SUN4V Niagara and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara and derivatives. If you install this on a machine without + such chips, it won't even be used. + . + WARNING: Some commercial programs do not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libc6-sparc64b +Architecture: sparc +Section: base +Priority: extra +Depends: libc6 (= ${Source-Version}), lib64gcc1 +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: GNU C Library: 64bit Shared libraries for UltraSPARC [v9b optimized] + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + . + This set of libraries is optimized for UltraSPARC-III and derivative + processors. It only needs to be installed on machines using + UltraSPARC-III and derivatives. If you install this on a machine without + such chips, it won't even be used. + . + WARNING: Some commercial programs do not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libc6-sparc64v +Architecture: sparc +Section: base +Priority: extra +Depends: libc6 (= ${Source-Version}), lib64gcc1 +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: GNU C Library: 64bit Shared libraries for UltraSPARC [v9v optimized] + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + . + This set of libraries is optimized for SUN4V Niagara and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara and derivatives. If you install this on a machine without + such chips, it won't even be used. + . + WARNING: Some commercial programs do not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libc6-i686 +Architecture: i386 +Section: libs +Priority: extra +Pre-Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: Shared libraries [i686 optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for i686 machines, and will only be + used if you are running a 2.6 kernel on an i686 class CPU (check the + output of `uname -m'). This includes Pentium Pro, Pentium II/III/IV, + Celeron CPU's and similar class CPU's (including clones such as AMD + Athlon/Opteron, VIA C3 Nehemiah, but not VIA C3 Ezla). + . + This package includes support for NPTL. + . + WARNING: Some third-party binaries may not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libc6-xen +Architecture: i386 +Conflicts: libc6-i686 +Section: libs +Priority: extra +Pre-Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: Shared libraries [Xen version] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries are optimized for the Xen hypervisor, and will be + selected instead when running under Xen. + +Package: libc0.1-i686 +Architecture: kfreebsd-i386 +Section: libs +Priority: extra +Pre-Depends: libc6 (= ${Source-Version}) +Description: GNU C Library: Shared libraries [i686 optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for i686 machines, and will only be + used on an i686 class CPU (check the output of `uname -m'). This includes + Pentium Pro, Pentium II/III/IV, Celeron CPU's and similar class CPU's + (including clones such as AMD Athlon/Opteron, VIA C3 Nehemiah, but not VIA + C3 Ezla). + . + WARNING: Some third-party binaries may not work well with these libraries. + Most notably, IBM's JDK. If you experience problems with such + applications, you will need to remove this package. + +Package: libnss-dns-udeb +XC-Package-Type: udeb +Architecture: any +Section: debian-installer +Priority: extra +Description: GNU C Library: NSS helper for DNS - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains the DNS NSS helper needed for the Debian installer. + Do not install it on a normal system. + +Package: libnss-files-udeb +XC-Package-Type: udeb +Architecture: any +Section: debian-installer +Priority: extra +Description: GNU C Library: NSS helper for files - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains the files NSS helper needed for the Debian installer. + Do not install it on a normal system. + --- glibc-2.4.orig/debian/compat +++ glibc-2.4/debian/compat @@ -0,0 +1 @@ +4 --- glibc-2.4.orig/debian/copyright +++ glibc-2.4/debian/copyright @@ -0,0 +1,165 @@ +This is the Debian prepackaged version of the GNU C Library version +2.3.x + +It was put together by the GNU Libc Maintainers +from the following sources: + + + + +Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2003 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + 02110-1301 USA + +On Debian systems, the complete text of the GNU Library +General Public License can be found in `/usr/share/common-licenses/LGPL-2.1'. + +Additional Details (the following is taken from `info libc +Contributors' which also contains a list of credits): + + All code incorporated from 4.4 BSD is under the following + copyright: + + Copyright (C) 1991 Regents of the University of California. + All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, are permitted provided that the + following conditions are met: + + 1. Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + + 3. Neither the name of the University nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + OF SUCH DAMAGE. + + * The random number generation functions `random', `srandom', + `setstate' and `initstate', which are also the basis for the + `rand' and `srand' functions, were written by Earl T. Cohen for + the University of California at Berkeley and are copyrighted by the + Regents of the University of California. They have undergone minor + changes to fit into the GNU C library and to fit the ISO C + standard, but the functional code is Berkeley's. + + * The Internet resolver code is taken directly from BIND 4.9.5, + which is under both the Berkeley copyright above and also: + + Portions Copyright (C) 1993 by Digital Equipment Corporation. + + Permission to use, copy, modify, and distribute this software + for any purpose with or without fee is hereby granted, + provided that the above copyright notice and this permission + notice appear in all copies, and that the name of Digital + Equipment Corporation not be used in advertising or publicity + pertaining to distribution of the document or software + without specific, written prior permission. + + THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. + DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE + LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + * The code to support Sun RPC is taken verbatim from Sun's + RPCSRC-4.0 distribution, and is covered by this copyright: + + Copyright (C) 1984, Sun Microsystems, Inc. + + Sun RPC is a product of Sun Microsystems, Inc. and is + provided for unrestricted use provided that this legend is + included on all tape media and as a part of the software + program in whole or part. Users may copy or modify Sun RPC + without charge, but are not authorized to license or + distribute it to anyone else except as part of a product or + program developed by the user. + + SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND + INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND + FITNESS FOR A PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF + DEALING, USAGE OR TRADE PRACTICE. + + Sun RPC is provided with no support and without any + obligation on the part of Sun Microsystems, Inc. to assist in + its use, correction, modification or enhancement. + + SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT + TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY + PATENTS BY SUN RPC OR ANY PART THEREOF. + + In no event will Sun Microsystems, Inc. be liable for any + lost revenue or profits or other special, indirect and + consequential damages, even if Sun has been advised of the + possibility of such damages. + + Sun Microsystems, Inc. + 2550 Garcia Avenue + Mountain View, California 94043 + + * Some of the support code for Mach is taken from Mach 3.0 by CMU, + and is under the following copyright terms: + + Mach Operating System + Copyright (C) 1991,1990,1989 Carnegie Mellon University + All Rights Reserved. + + Permission to use, copy, modify and distribute this software + and its documentation is hereby granted, provided that both + the copyright notice and this permission notice appear in all + copies of the software, derivative works or modified + versions, and any portions thereof, and that both notices + appear in supporting documentation. + + CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS + IS" CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF + ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF + THIS SOFTWARE. + + Carnegie Mellon requests users of this software to return to + + Software Distribution Coordinator + School of Computer Science + Carnegie Mellon University + Pittsburgh PA 15213-3890 + + or any improvements or + extensions that they make and grant Carnegie Mellon the + rights to redistribute these changes. --- glibc-2.4.orig/debian/generate-supported.mk +++ glibc-2.4/debian/generate-supported.mk @@ -0,0 +1,11 @@ +#!/usr/bin/make + +include $(IN) + +all: + rm -f $(OUT) + touch $(OUT) + for locale in $(SUPPORTED-LOCALES); do \ + [ $$locale = true ] && continue; \ + echo $$locale | sed 's,/, ,' >> $(OUT); \ + done --- glibc-2.4.orig/debian/rules +++ glibc-2.4/debian/rules @@ -0,0 +1,196 @@ +#! /usr/bin/make -f +# -*- makefile -*- +# debian/rules file for GNU libc. +# Copyright 1998, 1999 by Joel Klecker +# Copyright 2000 Ben Collins +# Copyright 2003 Jeff Bailey +# This Makefile 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 of the License, or +# (at your option) any later version. + +# What are the phases to building glibc? + +# Unpack main tarball +# Do any necessary overlays +# Apply patches +# Determine how many builds there are to do. For Each build: + +# Create build directory +# Configure +# Build +# Test as desired +# Install to package directories + +# Run debian magic to build packages. + +# Things you may need to customise: + +# These are done as absolute paths so that in the case of filesystem size +# limitations, they can be overridden and spread all over. +build-tree := build-tree +stamp := $(CURDIR)/stamp-dir/ +DUMMY := $(shell mkdir -p $(stamp)) + +# The minimum package version with which these packages are compatible. +include debian/shlibver +shlib_dep = $(libc) (>= $(shlib_dep_ver)) + +# The version of the C library that locales needs for its format. +include debian/locales-depver + +# Beyond here you shouldn't need to customise anything: + +SHELL ?= =/bin/sh -e +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_GNU_CPU ?= $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_HOST_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM) +DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) +DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) +DEB_BUILD_GNU_CPU ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_CPU) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_BUILD_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM) + +DEB_HOST_GNU_CPU_ALT ?= +DEB_HOST_GNU_TYPE_ALT ?= + +DEB_SOURCE_PACKAGE := $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':')) + +DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ') + +DEB_TARBALL ?= $(shell ls glibc-[0-9.]*.tar.*) + +DEB_SRCDIR ?= $(shell ls -d $(build-tree)/glibc-*) +DEB_BUILDDIR ?= $(build-tree)/$(DEB_HOST_ARCH)-$(curpass) + +# The kernel uses different CPU appreviations (uname output) than the GNU +# tools do (config.sub). Map them. +KERNEL_HOST_CPU := $(subst powerpc,ppc,$(DEB_HOST_GNU_CPU)) + +# Support multiple makes at once based on number of processors +# Common wisdom says parallel make can be up to 2n+1. +# Should we do that to get faster builds? +NJOBS:=$(shell getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1) +ifeq ($(NJOBS),-1) + NJOBS:=1 +endif + +ifeq ($(NJOBS),0) + NJOBS=1 +endif + +# We can override its value by SETNJOBS environment variable. +ifdef SETNJOBS + NJOBS:=$(SETNJOBS) +endif + +# Default setup +GLIBC_PASSES ?= libc + +prefix=/usr +bindir=$(prefix)/bin +datadir=$(prefix)/share +includedir=$(prefix)/include +infodir=$(prefix)/share/info +docdir=$(prefix)/share/doc +mandir=$(prefix)/share/man +sbindir=$(prefix)/sbin +libexecdir=$(prefix)/lib + +BUILD_CC = gcc-4.1 + +RUN_TESTSUITE = yes + +# Set CC for cross-compiling +ifneq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH)) +CC = $(DEB_HOST_GNU_TYPE)-gcc +else +CC = $(BUILD_CC) +endif +# +# Set CXX for cross-compiling +ifneq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH)) +CXX = $(DEB_HOST_GNU_TYPE)-g++ +else +CXX = $(BUILD_CXX) +endif + +BUILD_CFLAGS = -O2 -g +HOST_CFLAGS = -pipe -O2 -fstrict-aliasing -g $(call xx,extra_cflags) + +configure_target := $(DEB_HOST_GNU_TYPE) + +# Normally we'll just use this for --build. If the architecture requires +# that build daemons be able to run a particular optimized library, then +# they can set the --build to match --host for that optimized build. +# Among other things this lets tests run. +configure_build := $(DEB_BUILD_GNU_TYPE) + +ifneq ($(NO_LOG),yes) +log_build = $(CURDIR)/log-build-$(call xx,configure_target)-$(curpass) +log_test = $(CURDIR)/log-test-$(call xx,configure_target)-$(curpass) +else +log_build := /dev/tty +log_test := /dev/tty +endif + +# Which build pass are we on? +curpass = $(filter-out %_,$(subst _,_ ,$@)) + +DEB_ARCH_REGULAR_PACKAGES = $(libc) $(libc)-dev $(libc)-dbg $(libc)-prof $(libc)-pic +DEB_INDEP_REGULAR_PACKAGES = glibc-doc +DEB_UDEB_PACKAGES = $(libc)-udeb libnss-dns-udeb libnss-files-udeb + +# Generic kernel version check +define kernel_check +(if [ $(CURRENT_KERNEL_VERSION) -lt $(1) ]; then \ + false; \ +fi) +endef + +# Include libidn for both NPTL and LinuxThreads targets. +standard-add-ons = libidn, + +# Pull in all the per-arch magic! + +-include debian/sysdeps/$(DEB_HOST_ARCH_OS).mk +-include debian/sysdeps/$(DEB_HOST_ARCH).mk + +include debian/sysdeps/depflags.mk + +# Don't run dh_strip on this package +NOSTRIP_$(libc)-dbg = 1 + +ifeq ($(threads),yes) +DEB_ARCH_REGULAR_PACKAGES += nscd +endif + +# And now the rules... +include debian/rules.d/*.mk + +clean:: debhelper-clean + rm -rf $(patsubst %,debian/tmp-%,$(GLIBC_PASSES)) + rm -rf $(build-tree) + rm -rf $(stamp) + rm -f log-* + rm -rf debian/include + +# Required Debian targets +binary-indep: build testroot debian/control $(build-tree) \ + $(patsubst %,$(stamp)install_%,$(GLIBC_PASSES)) \ + $(patsubst %,$(stamp)binaryinst_%,$(DEB_INDEP_REGULAR_PACKAGES)) +# NOTE: Putting install_ stamps before binaryinst_ stamps in the list is the +# wrong way to represent dependencies. Fix this. +binary-arch: build testroot debian/control $(build-tree) \ + $(patsubst %,$(stamp)install_%,$(GLIBC_PASSES)) \ + $(patsubst %,$(stamp)binaryinst_%,$(DEB_ARCH_REGULAR_PACKAGES)) \ + $(patsubst %,$(stamp)binaryinst_%,$(DEB_UDEB_PACKAGES)) + +binary: binary-indep binary-arch + +build: $(patsubst %,$(stamp)build_%,$(GLIBC_PASSES)) \ + $(patsubst %,$(stamp)check_%,$(GLIBC_PASSES)) + +testroot: + dh_testroot --- glibc-2.4.orig/debian/README +++ glibc-2.4/debian/README @@ -0,0 +1,37 @@ +This directory contains the files needed to build glibc for the Debian +GNU/Linux and GNU/Hurd distributions. + +If you have pulled this version from CVS, you will probably need to go +and get the tar.bz2 files that match the file 'version'. You can +generally find these at sources.redhat.com in pub/libc. Put both the +regular glibc tar.bz2 *AND* the matching linuxthreads tar.bz2. After +that follow the usual build procedures. + +Compiling the GNU C library yourself requires a lot of resources. For +a complete build using dpkg-buildpackage you need at least 750MB free +disk space and at least 16MB of RAM and 32MB of swap space (if you +have only that much you're better off not running X at the same +time). Note that the C library on the Hurd is also somewhat larger: +you'll need over 800MB of free disk space to build Hurdish packages. + +A complete build takes 45 minutes on a Pentium III 735Mhz machine, and +25 minutes to run the test suite. The cause for this is the intricate +Makefile structure of glibc which needs a lot of computing power for +make to figure out the automatically generated dependencies. If you +are building all of the optimized libraries for the IA32 family, allow +2.5 hours for this build. + +For Linux, you will need at least the kernel headers for the specific +kernel version required for your machine's architecture. These are +specified in the `debian/sysdeps/linux.mk' file, and can be overridden +by exporting the environment variable LINUX_SOURCE set to the path to +the desired kernel. + +For the Hurd, you will need to have installed the GNU Mach and Hurd +header files (which come with the `gnumach-dev' and `hurd-dev' +packages). See the Hurd source package's `INSTALL' file for more +information. + +Please consider reading the `FAQ' file in this directory. It is also +suggested that you also read the `README' and `INSTALL' files in the +top-level of the glibc source tree. --- glibc-2.4.orig/debian/locales-depver +++ glibc-2.4/debian/locales-depver @@ -0,0 +1,21 @@ +# When glibc is uploaded into unstable, the locales package is immediately +# available because it is arch:all. But libc binary parckages are processed +# by autobuilders and become available later. +# +# If compiling locales depend on a given version of localedef (for instance +# when ISO codes are updated), the idea is to first bump LOCALES_COMPAT_VER and +# make an upload without changing locales. When this version is available on +# all architectures in unstable, locales can be modified and LOCALES_DEP_VER +# is bumped too. +# +# LOCALES_COMPAT_VER must always contain two values during the transition phase +# so that dependencies in unstable can always be satisfied, and +# LOCALES_DEP_VER point to the highest value of LOCALES_COMPAT_VER when +# packages are available for all architectures in unstable. + +LOCALES_DEP_VER = 2.3.6-2 +LOCALES_COMPAT_VER = 2.3.6-2 2.3.5-3 + +# Previous versions: +# 2.3.6-2: Add RON to iso-4217.def +# 2.3.5-12: changes in localedef to accept preprocessor-like directives --- glibc-2.4.orig/debian/make-cvs-locales-patch.sh +++ glibc-2.4/debian/make-cvs-locales-patch.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -e + +# This script is designed to help make patches to update from the last +# release to the latest CVS. Hand it the argument of the directory from +# which to generate the diff. + +# This script is not robust. Feel free to improve it. Specifically, +# run this from the root of the package. + +# This file is in the PUBLIC DOMAIN +# written by Jeff Bailey jbailey@debian.org September 6th, 2002 + +if [ $# -ne 1 ]; then + echo "`basename $0`: script expects a CVS tree to diff against" + exit 1 +fi + +PATCHLIST=10_cvs debian/rules patch + +SRCDIR=build-tree/glibc-* + +# DESCRIPTION, DETAILS, DATE, PATCHLEVEL + +cat debian/patches/template.dpatch | sed -e "s/@DESCRIPTION@/Locales CVS Update/" -e "s/@DATE@/`date`/" -e "s/@PATCHLEVEL@/2/" > debian/patches/11_cvs_locales.dpatch + +diff -urN -x CVS $SRCDIR/localedata $1/localedata >>debian/patches/11_cvs_locales.dpatch + --- glibc-2.4.orig/debian/TODO +++ glibc-2.4/debian/TODO @@ -0,0 +1,41 @@ +Outstanding concerns +==================== + + - no entry + +TODO +==== + +* General: + + - Make sure that prep.sh and version aren't in the root of the source + package. + +* libc: + - Only add some libraries to the optimized packages and to /lib/tls, + instead of all of them? + - Add patch to display (or ignore) linux-gate.so.1 in ldd. + - Check dpkg-shlibdeps for linux-gate.so.1 handling. + - Don't do make install for libc6-i686 if we aren't going to use the + results - it's very slow. We may need to make install for nptl to + get the few headers that differ. + - Fix /usr/sbin/tzconfig to take a parameter. Right now we set the links + by hand in libc.postinst in the noninteractive case, but it would be + better if the tool could just do everything for us. + - Add alpha EV67 opt package support (#229251). + +* libc-dev: + + - What do we do for headers on 32/64 systems? Do we generate + #if wrappers for /usr/include? This looks like a non-issue since + only asm needs it. + - -dev support for library variants like nptl? 64-bit libraries are + covered. + +* locales: + + - locales debconf template is a bit difficult for newbie users. + Using localedata/locales/*, it can be readable. For example, + "ja_JP" -> "Japanese", "Japan". + + --- glibc-2.4.orig/debian/FAQ +++ glibc-2.4/debian/FAQ @@ -0,0 +1,124 @@ +Q1: Why does the Debian libc6-dev package create /usr/include/linux and +/usr/include/asm directories containing header files from a specific +kernel, instead of using the "established" convention of making those +directories into symlinks pointing to the currently installed kernel? + +A1: Occasionally, changes in the kernel headers cause problems with +the compilation of libc and of programs that use libc. To ensure that +users are not affected by these problems, we configure libc to use the +headers from a kernel that is known to work with libc and the programs +that depend on stable kernel headers. + +[Note: /usr/include/linux is now in the linux-kernel-headers package.] + +Q2: What if I want to compile a program that needs a feature from a +later kernel than is used by libc? + +A2: In practice, most programs will not have this problem. However, +depending on the scope of the problem you have several options available: + +If the situation is one like "kernel driver development", where all use +of the machine for development is expected to be against a different set +of kernel headers than are supplied with the "stock" libc6-dev, rebuilding +the glibc packages against that particular kernel will create a full set of +libc6 packages that are "compliant" with the new kernel. All development +done on machines with these packages installed will be done against the +new kernel. To build libc6-dev against your particular kernel, export the +environment variable LINUX_SOURCE, set to the path to that particular kernel +source directory and then build the package. + +If you want this new glibc package to stick against further upgrades, simply +use dselect and place the packages on HOLD. This will keep them from being +upgraded against your wishes. + +If there is just one particular program/package that needs different headers, +and your kernel of choice is installed in the usual place, you can use the +-I/usr/src/linux/include option on the gcc command line, when compiling that +specific program. + +Q3: My program is trying to use a kernel header that is in libc-dev, and +it is causing problems. (or) Why are the kernel headers not the same for +all architectures in Debian, for a given version of libc-dev? + +A3: For starters, you should never use kernel headers directly from user +space programs. You cannot be guaranteed a consistent interface across +different versions of the kernel, much less across architectures (even for +the same version of kernel source). + +Kernel headers are included with libc-dev _only_ to support those headers +in libc-dev. They are not there for userspace programs to include. If you +need kernel headers, then use one of the provided kernel-headers-x.x.x +packages provided for each architectures, or include the kernel headers +(or just the parts of the headers) you need directly in your source for +compilation. Only this way can you ensure a consistent state. + +Q4: Why does Debian's glibc seem to follow the stable CVS branch? + +A4: During our development cycle we follow the stable CVS branch so that +we can cause as little disruption as possible, and catch problems easier. +Differences between minor releases of glibc are known to be very large, +contain many changes, and generally affect all architectures differently. +We sync frequently with CVS so that we can take this large amount of +changes in smaller chunks, simplifying the process, and allowing us to +communicate problems to upstream much easier. + +Q5: How to setup my own language/regional (locale) setting? + +A5: Glibc provides "locale" defined in POSIX. Locale is a framework +to switch between multiple languages for users who can select to use +their language, country, characters, collation order, etc. For +example, some program display messages in your own language, if you +set the appropriate locale. Default locale is C (or POSIX) which +behaves traditional Unix with ASCII message. For more information, +look locale (5). + +If you want to use your own locale, install "locales" package. With +debconf interface, you can setup which locale is generated, and which +locale is used in default on your machine. + +Q6: I get this message when I run a program: + ld.so: Incorrectly built binary which accesses errno or h_errno directly. + ld.so: See /usr/share/doc/libc6/FAQ.gz. +A6: + +The program is broken. It probably says "extern int errno" somewhere, +instead of including . Errno in recent glibc versions is a macro, +which calls the function __errno_location; when glibc is built with +thread-local storage enabled, there is no extern int variable named errno. +In addition, "extern int errno" is not thread-safe. + +The application should continue to run for now, but when the warning message +is printed use of the NPTL threading library, and other new kernel-2.6 +features, it's worth trying to set environment variable LD_ASSUME_KERNEL=2.4.1 +(switch to LinuxThreads instead of NPTL). + +Please file a bug if the workaround doesn't work. + +NOTE: Currently this error message is suppressed, for the benefit of some +truly buggy programs which redirect stderr into something important, like a +network socket. + +Q7: I get this error when I compile an static linked application that's +compiled with glibc 2.2 or before: + gcc -o foo.o libbar.a + libbar.a(obj.o): In function `func(char *)': + : undefined reference to `__ctype_toupper' + +A7: +During glibc 2.3.x development, some symbols (__ctype_b, __ctype_toupper, +__ctype_tolower) are changed to hidden attributes. This means old static +linked applications/libraries built with glibc 2.2.x cannot be linked on glibc +2.3.x systems any more. + +But it made a lot of user applications unusable, we applied a workaround patch +for glibc in Sarge. Therefore your applications worked OK, and you didn't +need to consider about this problem. However, most other distros already +dropped such local modification. For that reason, we decided to drop +supporting such old static linked applications/libraries from Etch, you need +to recompile them. + +If you want to keep this workaround that was applied in Sarge for the present, +please recompile Debian glibc package with adding "glibc23-ctype-compat" line +at the end of debian/patches/00list, and install it on your local machine. +Note that we don't support this patch nowadays, please use it at your own +risk. --- glibc-2.4.orig/debian/debver2localesdep.pl +++ glibc-2.4/debian/debver2localesdep.pl @@ -0,0 +1,18 @@ +#!/usr/bin/perl + +for my $i (0..$#ARGV) { + $_ = $ARGV[$i]; + /(.*)-(.*)/m; + + $debver = $1; + $devrev = $2; + + @revs = split('\.', $devrev); + + $devrev = $revs[0]; + $devrev = "$devrev.$revs[1]" if defined($revs[1]) and $revs[1] ne "0"; + + print ", " if $i > 0; + print "glibc-$debver-$devrev"; +} +print "\n"; --- glibc-2.4.orig/debian/shlibver +++ glibc-2.4/debian/shlibver @@ -0,0 +1 @@ +shlib_dep_ver = 2.4-1 --- glibc-2.4.orig/debian/locales-all.README.Debian +++ glibc-2.4/debian/locales-all.README.Debian @@ -0,0 +1,14 @@ +The locales-all package contains precompiled locale files. +They cannot be put under /usr/lib/locale, otherwise they would +interfere with the locales package and could be removed by +locale-gen. They are shipped in /usr/lib/locales-all, and +there are two solutions to make use of them: + 1. Either set LOCPATH=/usr/lib/locales-all in your environment, + for instance by running (as root) + update-locale LOCPATH=/usr/lib/locales-all + 2. Or copy locale definitions into /usr/lib/locale/locale-archive + by running + localedef --add-to-archive /usr/lib/locales-all/* + But the locales package will overwrite /usr/lib/locale/locale-archive + so this solution works well only if the locales package is not + installed. --- glibc-2.4.orig/debian/make-cvs-patch.sh +++ glibc-2.4/debian/make-cvs-patch.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# This script is designed to help make patches to update from the last +# release to the latest CVS. Hand it the argument of the directory from +# which to generate the diff. + +# This script is not robust. Feel free to improve it. Specifically, +# run this from the root of the package. + +# This file is in the PUBLIC DOMAIN +# written by Jeff Bailey jbailey@debian.org September 6th, 2002 + +if [ $# -ne 1 ]; then + echo "`basename $0`: script expects a CVS tree to diff against" + exit 1 +fi + +debian/rules unpack + +SRCDIR=build-tree/glibc-* + +diff -urN -x CVS -x .cvsignore -x '*texi' -x '*manual*' $SRCDIR $1 >cvs.patch + --- glibc-2.4.orig/debian/.cvsignore +++ glibc-2.4/debian/.cvsignore @@ -0,0 +1,10 @@ +control +files +libc* +libnss-dns-udeb* +libnss-files-udeb* +glibc-doc* +locales* +tmp-* +nscd* +include --- glibc-2.4.orig/debian/locales.NEWS.Debian +++ glibc-2.4/debian/locales.NEWS.Debian @@ -0,0 +1,11 @@ +locales (2.3.6-7) unstable; urgency=low + + * Locale variables are now stored in /etc/default/locale and no more + /etc/environment. The reason is that Debian Policy forbids modifying + configuration files of other packages, and /etc/environment is a + configuration file for PAM. + Make sure to remove old definitions from /etc/environment, this file + is no more modified for the reason explained above. + + -- Denis Barbier Tue, 11 Apr 2006 21:24:13 +0200 + --- glibc-2.4.orig/.cvsignore +++ glibc-2.4/.cvsignore @@ -0,0 +1,4 @@ +glibc-* +patched +patched-source +unpacked-source