[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r3615 - in /trunk: libc/ libc/crypt/ libc/debug/ libc/elf/ libc/iconv/ libc/iconvdata/ libc/include/ libc/inet/ libc/intl/ l...
- To: commits@xxxxxxxxxx
- Subject: [commits] r3615 - in /trunk: libc/ libc/crypt/ libc/debug/ libc/elf/ libc/iconv/ libc/iconvdata/ libc/include/ libc/inet/ libc/intl/ l...
- From: joseph@xxxxxxxxxx
- Date: Tue, 25 Sep 2007 15:22:17 -0000
Author: joseph
Date: Tue Sep 25 08:22:16 2007
New Revision: 3615
Log:
Merge changes between r3467 and r3614 from /fsf/trunk.
Added:
trunk/libc/crypt/sha256-crypt.c
- copied unchanged from r3614, fsf/trunk/libc/crypt/sha256-crypt.c
trunk/libc/crypt/sha256.c
- copied unchanged from r3614, fsf/trunk/libc/crypt/sha256.c
trunk/libc/crypt/sha256.h
- copied unchanged from r3614, fsf/trunk/libc/crypt/sha256.h
trunk/libc/crypt/sha256c-test.c
- copied unchanged from r3614, fsf/trunk/libc/crypt/sha256c-test.c
trunk/libc/crypt/sha256test.c
- copied unchanged from r3614, fsf/trunk/libc/crypt/sha256test.c
trunk/libc/crypt/sha512-crypt.c
- copied unchanged from r3614, fsf/trunk/libc/crypt/sha512-crypt.c
trunk/libc/crypt/sha512.c
- copied unchanged from r3614, fsf/trunk/libc/crypt/sha512.c
trunk/libc/crypt/sha512.h
- copied unchanged from r3614, fsf/trunk/libc/crypt/sha512.h
trunk/libc/crypt/sha512c-test.c
- copied unchanged from r3614, fsf/trunk/libc/crypt/sha512c-test.c
trunk/libc/crypt/sha512test.c
- copied unchanged from r3614, fsf/trunk/libc/crypt/sha512test.c
trunk/libc/debug/tst-chk4.cc
- copied unchanged from r3614, fsf/trunk/libc/debug/tst-chk4.cc
trunk/libc/debug/tst-chk5.cc
- copied unchanged from r3614, fsf/trunk/libc/debug/tst-chk5.cc
trunk/libc/debug/tst-chk6.cc
- copied unchanged from r3614, fsf/trunk/libc/debug/tst-chk6.cc
trunk/libc/debug/tst-lfschk4.cc
- copied unchanged from r3614, fsf/trunk/libc/debug/tst-lfschk4.cc
trunk/libc/debug/tst-lfschk5.cc
- copied unchanged from r3614, fsf/trunk/libc/debug/tst-lfschk5.cc
trunk/libc/debug/tst-lfschk6.cc
- copied unchanged from r3614, fsf/trunk/libc/debug/tst-lfschk6.cc
trunk/libc/iconvdata/mac-centraleurope.c
- copied unchanged from r3614, fsf/trunk/libc/iconvdata/mac-centraleurope.c
trunk/libc/localedata/charmaps/MAC-CENTRALEUROPE
- copied unchanged from r3614, fsf/trunk/libc/localedata/charmaps/MAC-CENTRALEUROPE
trunk/libc/rt/bits/
- copied from r3614, fsf/trunk/libc/rt/bits/
trunk/libc/stdio-common/isoc99_fscanf.c
- copied unchanged from r3614, fsf/trunk/libc/stdio-common/isoc99_fscanf.c
trunk/libc/stdio-common/isoc99_scanf.c
- copied unchanged from r3614, fsf/trunk/libc/stdio-common/isoc99_scanf.c
trunk/libc/stdio-common/isoc99_sscanf.c
- copied unchanged from r3614, fsf/trunk/libc/stdio-common/isoc99_sscanf.c
trunk/libc/stdio-common/isoc99_vfscanf.c
- copied unchanged from r3614, fsf/trunk/libc/stdio-common/isoc99_vfscanf.c
trunk/libc/stdio-common/isoc99_vscanf.c
- copied unchanged from r3614, fsf/trunk/libc/stdio-common/isoc99_vscanf.c
trunk/libc/stdio-common/isoc99_vsscanf.c
- copied unchanged from r3614, fsf/trunk/libc/stdio-common/isoc99_vsscanf.c
trunk/libc/stdio-common/scanf13.c
- copied unchanged from r3614, fsf/trunk/libc/stdio-common/scanf13.c
trunk/libc/stdio-common/scanf14.c
- copied unchanged from r3614, fsf/trunk/libc/stdio-common/scanf14.c
trunk/libc/stdio-common/scanf15.c
- copied unchanged from r3614, fsf/trunk/libc/stdio-common/scanf15.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fscanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fwscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fwscanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_scanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_scanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_sscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_sscanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_swscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_swscanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfscanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfwscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfwscanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vscanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vsscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vsscanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vswscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vswscanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vwscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vwscanf.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_wscanf.c
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_wscanf.c
trunk/libc/sysdeps/unix/sysv/linux/i386/call_fallocate.S
- copied unchanged from r3614, fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/call_fallocate.S
trunk/libc/wcsmbs/isoc99_fwscanf.c
- copied unchanged from r3614, fsf/trunk/libc/wcsmbs/isoc99_fwscanf.c
trunk/libc/wcsmbs/isoc99_swscanf.c
- copied unchanged from r3614, fsf/trunk/libc/wcsmbs/isoc99_swscanf.c
trunk/libc/wcsmbs/isoc99_vfwscanf.c
- copied unchanged from r3614, fsf/trunk/libc/wcsmbs/isoc99_vfwscanf.c
trunk/libc/wcsmbs/isoc99_vswscanf.c
- copied unchanged from r3614, fsf/trunk/libc/wcsmbs/isoc99_vswscanf.c
trunk/libc/wcsmbs/isoc99_vwscanf.c
- copied unchanged from r3614, fsf/trunk/libc/wcsmbs/isoc99_vwscanf.c
trunk/libc/wcsmbs/isoc99_wscanf.c
- copied unchanged from r3614, fsf/trunk/libc/wcsmbs/isoc99_wscanf.c
trunk/libc/wcsmbs/wcsatcliff.c
- copied unchanged from r3614, fsf/trunk/libc/wcsmbs/wcsatcliff.c
Modified:
trunk/libc/ChangeLog
trunk/libc/NEWS
trunk/libc/Versions.def
trunk/libc/crypt/Makefile
trunk/libc/crypt/crypt-entry.c
trunk/libc/debug/Makefile
trunk/libc/debug/Versions
trunk/libc/debug/fortify_fail.c
trunk/libc/debug/tst-chk1.c
trunk/libc/elf/dl-lookup.c
trunk/libc/elf/dl-object.c
trunk/libc/elf/dl-runtime.c
trunk/libc/elf/dl-sym.c
trunk/libc/iconv/iconv_open.c
trunk/libc/iconvdata/Makefile
trunk/libc/iconvdata/TESTS
trunk/libc/iconvdata/gconv-modules
trunk/libc/iconvdata/tst-tables.sh
trunk/libc/include/features.h
trunk/libc/include/link.h
trunk/libc/include/stdio.h
trunk/libc/include/wchar.h
trunk/libc/inet/inet_net.c
trunk/libc/inet/tst-network.c
trunk/libc/intl/dcigettext.c
trunk/libc/intl/gettextP.h
trunk/libc/intl/loadmsgcat.c
trunk/libc/io/bits/fcntl2.h
trunk/libc/io/fcntl.h
trunk/libc/io/sys/stat.h
trunk/libc/libio/bits/stdio-ldbl.h
trunk/libc/libio/bits/stdio.h
trunk/libc/libio/bits/stdio2.h
trunk/libc/libio/libio.h
trunk/libc/libio/libioP.h
trunk/libc/libio/stdio.h
trunk/libc/locale/programs/charmap-dir.c
trunk/libc/localedata/ChangeLog
trunk/libc/localedata/locales/de_CH
trunk/libc/math/bits/cmathcalls.h
trunk/libc/misc/bits/syslog-ldbl.h
trunk/libc/misc/bits/syslog.h
trunk/libc/misc/sys/cdefs.h
trunk/libc/misc/sys/syslog.h
trunk/libc/po/cs.po
trunk/libc/posix/regcomp.c
trunk/libc/posix/unistd.h
trunk/libc/resolv/ns_print.c
trunk/libc/rt/Makefile
trunk/libc/rt/Versions
trunk/libc/rt/mq_open.c
trunk/libc/rt/mqueue.h
trunk/libc/socket/sys/socket.h
trunk/libc/stdio-common/Makefile
trunk/libc/stdio-common/Versions
trunk/libc/stdio-common/vfscanf.c
trunk/libc/stdlib/stdlib.h
trunk/libc/string/bits/string3.h
trunk/libc/string/stratcliff.c
trunk/libc/string/string.h
trunk/libc/sysdeps/alpha/fpu/bits/mathinline.h
trunk/libc/sysdeps/generic/ldsodefs.h
trunk/libc/sysdeps/i386/fpu/bits/mathinline.h
trunk/libc/sysdeps/i386/i486/bits/string.h
trunk/libc/sysdeps/i386/i586/memcpy.S
trunk/libc/sysdeps/i386/i586/mempcpy.S
trunk/libc/sysdeps/i386/i586/memset.S
trunk/libc/sysdeps/ia64/fpu/bits/mathinline.h
trunk/libc/sysdeps/ieee754/ldbl-opt/Makefile
trunk/libc/sysdeps/ieee754/ldbl-opt/Versions
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-compat.c
trunk/libc/sysdeps/ieee754/ldbl-opt/nldbl-compat.h
trunk/libc/sysdeps/posix/getaddrinfo.c
trunk/libc/sysdeps/powerpc/fpu/bits/mathinline.h
trunk/libc/sysdeps/s390/bits/string.h
trunk/libc/sysdeps/s390/fpu/bits/mathinline.h
trunk/libc/sysdeps/sparc/fpu/bits/mathinline.h
trunk/libc/sysdeps/sparc/sparc32/elf/start.S
trunk/libc/sysdeps/sparc/sparc64/elf/start.S
trunk/libc/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
trunk/libc/sysdeps/unix/sysv/linux/i386/Makefile
trunk/libc/sysdeps/unix/sysv/linux/i386/bits/fcntl.h
trunk/libc/sysdeps/unix/sysv/linux/i386/posix_fallocate.c
trunk/libc/sysdeps/unix/sysv/linux/i386/posix_fallocate64.c
trunk/libc/sysdeps/unix/sysv/linux/i386/syscalls.list
trunk/libc/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h
trunk/libc/sysdeps/unix/sysv/linux/mq_open.c
trunk/libc/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
trunk/libc/sysdeps/unix/sysv/linux/s390/bits/fcntl.h
trunk/libc/sysdeps/unix/sysv/linux/sh/bits/fcntl.h
trunk/libc/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h
trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
trunk/libc/sysdeps/unix/sysv/linux/sys/sysmacros.h
trunk/libc/sysdeps/unix/sysv/linux/syscalls.list
trunk/libc/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h
trunk/libc/sysdeps/x86_64/cacheinfo.c
trunk/libc/sysdeps/x86_64/fpu/bits/mathinline.h
trunk/libc/sysdeps/x86_64/memcpy.S
trunk/libc/wcsmbs/Makefile
trunk/libc/wcsmbs/Versions
trunk/libc/wcsmbs/bits/wchar-ldbl.h
trunk/libc/wcsmbs/bits/wchar2.h
trunk/libc/wcsmbs/wchar.h
trunk/libc/wcsmbs/wcsnlen.c
trunk/ports/ChangeLog.arm
trunk/ports/ChangeLog.hppa
trunk/ports/ChangeLog.mips
trunk/ports/sysdeps/hppa/nptl/tls.h
trunk/ports/sysdeps/unix/sysv/linux/arm/bits/fcntl.h
trunk/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h
trunk/ports/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h
trunk/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
trunk/ports/sysdeps/unix/sysv/linux/mips/bits/fcntl.h
Modified: trunk/libc/ChangeLog
==============================================================================
--- trunk/libc/ChangeLog (original)
+++ trunk/libc/ChangeLog Tue Sep 25 08:22:16 2007
@@ -1,3 +1,421 @@
+2007-09-24 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #5058]
+ * intl/gettextP.h (struct loaded_domain): Add conversions_lock member.
+ * intl/loadmsgcat.c (_nl_load_domain): Initialize conversions_lock.
+ (_nl_unload_domain): Finalize conversions_lock.
+ * intl/dcigettext.c (_nl_find_msg): Take conversions_lock before
+ handling table of known conversions.
+
+2007-09-24 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * sysdeps/posix/getaddrinfo.c (getaddrinfo): Use
+ close_not_cancel_no_status instead of close.
+
+2007-09-13 Aurelien Jarno <aurelien@xxxxxxxxxxx>
+
+ [BZ #5028]
+ * posix/regcomp.c (lookup_collation_sequence_value): Check that
+ nrules != 0 for multibyte chars.
+
+2007-09-23 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * resolv/ns_print.c (ns_sprintrrf): Handle ns_t_a6 and ns_t_opt.
+ Provide better error message in case the type is unknown.
+
+ [BZ #4963]
+ * wcsmbs/wcsnlen.c: Don't reference before checking the length.
+ * string/stratcliff.c: Make usable to test wide char functions.
+ * wcsmbs/wcsatcliff.c: New file.
+ * wcsmbs/Makefiel (tests): Add wcsatcliff.
+
+ [BZ #4972]
+ * iconvdata/Makefile (modules): Add MAC-CENTRALEUROPE.
+ (distribute): Add mac-centraleurope.c.
+ (gen-8bit-gap-modules): Add mac-centraleurope.
+ * iconvdata/mac-centraleurope.c: New file.
+ * iconvdata/gconv-modules: Add entries for MAC-CENTRALEUROPE.
+ * iconvdata/TESTS: Likewise.
+ * iconvdata/tst-tables.sh: Likewise.
+
+ [BZ #5043]
+ * iconv/iconv_open.c (iconv_open): For large codeset names use malloc.
+
+2007-09-21 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/x86_64/cacheinfo.c (__x86_64_data_cache_size_half): Renamed
+ from __x86_64_core_cache_size_half.
+ (init_cacheinfo): Compute shared cache size for AMD processors with
+ shared L3 correctly.
+ * sysdeps/x86_64/memcpy.S: Adjust for __x86_64_data_cache_size_half
+ name change.
+ Patch in large parts by Evandro Menezes.
+
+2007-09-19 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * elf/dl-lookup.c (add_dependency): Handle failing memory
+ allocation for dependency list. Remove unnecessary check.
+
+ * sysdeps/posix/getaddrinfo.c (getaddrinfo): Avoid unnecessary
+ open/close when determining source addresses.
+
+ * crypt/Makefile (libcrypt-routines): Add sha256-crypt, sha256,
+ sha512-crypt, and sha512.
+ (tests): Add sha256test, sha256c-test, sha512test, and sha512c-test.
+ (distribute): Add sha256.h and sha512.h.
+ * crypt/crypt-entry.c (crypt): Recognize the new $5$ and $6$ prefixes
+ and call the appropriate code.
+ * crypt/sha256-crypt.c: New file.
+ * crypt/sha256.c: New file.
+ * crypt/sha256.h: New file.
+ * crypt/sha256c-test.c: New file.
+ * crypt/sha256test.c: New file.
+ * crypt/sha512-crypt.c: New file.
+ * crypt/sha512.c: New file.
+ * crypt/sha512.h: New file.
+ * crypt/sha512c-test.c: New file.
+ * crypt/sha512test.c: New file.
+
+2007-09-19 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * misc/bits/syslog.h (syslog): Remove extraneous argument from
+ the inline, pass __USE_FORTIFY_LEVEL - 1 as second argument to
+ __syslog_chk.
+
+2007-09-18 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * locale/programs/charmap-dir.c (charmap_aliases): Use %ms instead of
+ %as in fscanf format strings.
+
+ * sysdeps/sparc/sparc32/elf/start.S: Remove cfi_* markup.
+ * sysdeps/sparc/sparc64/elf/start.S: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__thread_start):
+ Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S (__thread_start):
+ Likewise.
+
+ * sysdeps/generic/ldsodefs.h (DL_LOOKUP_GSCOPE_LOCK): New definition.
+ * elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Or in
+ DL_LOOKUP_GSCOPE_LOCK into flags after THREAD_GSCOPE_SET_FLAG ().
+ * elf/dl-sym.c (do_sym): Likewise.
+ * include/link.h (struct link_map): Add l_serial field.
+ * elf/dl-object.c (_dl_new_object): Initialize l_serial.
+ * elf/dl-lookup.c (add_dependency): Add flags argument.
+ Remember map->l_serial, if DL_LOOKUP_GSCOPE_LOCK is among
+ flags, use THREAD_GSCOPE_RESET_FLAG before and
+ THREAD_GSCOPE_SET_FLAG after
+ __rtld_lock_lock_recursive (GL(dl_load_lock)) to avoid deadlock.
+ Don't dereference map until it has been found on some list.
+ If map->l_serial changed, return -1.
+
+2007-09-17 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * include/stdio.h (__isoc99_fscanf, __isoc99_scanf,
+ __isoc99_sscanf, __isoc99_vscanf): New prototypes.
+ (__isoc99_vsscanf, __isoc99_vfscanf): New prototypes, add
+ libc_hidden_proto.
+ * include/wchar.h (__isoc99_fwscanf, __isoc99_wscanf,
+ __isoc99_swscanf, __isoc99_vwscanf): New prototypes.
+ (__isoc99_vswscanf, __isoc99_vfwscanf): New prototypes,
+ add libc_hidden_proto.
+ * libio/stdio.h (fscanf, scanf, sscanf, vfscanf, vscanf,
+ vsscanf): Redirect to __isoc99_* if strict ISO C99 or POSIX
+ conformance requested.
+ * wcsmbs/wchar.h (fwscanf, wscanf, swscanf, vfwscanf, vwscanf,
+ vswscanf): Redirect to __isoc99_* if strict ISO C99 or POSIX
+ conformance requested.
+ * libio/bits/stdio-ldbl.h (fscanf, scanf, sscanf, vfscanf, vscanf,
+ vsscanf): Redirect to __nldbl___isoc99_* if strict ISO C99 or POSIX
+ conformance requested.
+ * wcsmbs/bits/wchar-ldbl.h (fwscanf, wscanf, swscanf, vfwscanf,
+ vwscanf, vswscanf): Redirect to __nldbl___isoc99_* if strict
+ ISO C99 or POSIX conformance requested.
+ * stdio-common/Versions (libc): Export __isoc99_scanf@@GLIBC_2.7,
+ __isoc99_vscanf@@GLIBC_2.7, __isoc99_fscanf@@GLIBC_2.7,
+ __isoc99_vfscanf@@GLIBC_2.7, __isoc99_sscanf@@GLIBC_2.7
+ and __isoc99_vsscanf@@GLIBC_2.7.
+ * stdio-common/Makefile (routines): Add isoc99_scanf, isoc99_vscanf,
+ isoc99_fscanf, isoc99_vfscanf, isoc99_sscanf and isoc99_vsscanf.
+ (tests): Add scanf14.
+ (CFLAGS-vfprintf.c, CFLAGS-fprintf.c, CFLAGS-printf.c,
+ CFLAGS-vfwprintf.c, CFLAGS-vfscanf.c, CFLAGS-vfwscanf.c,
+ CFLAGS-fscanf.c, CFLAGS-scanf.c, CFLAGS-isoc99_vfscanf.c,
+ CFLAGS-isoc99_vscanf.c, CFLAGS-isoc99_fscanf.c,
+ CFLAGS-isoc99_scanf.c): Add $(exceptions).
+ (CFLAGS-scanf15.c): Add various -I paths to prevent the compiler
+ from using internal headers.
+ * wcsmbs/Versions (libc): Export __isoc99_wscanf@@GLIBC_2.7,
+ __isoc99_vwscanf@@GLIBC_2.7, __isoc99_fwscanf@@GLIBC_2.7,
+ __isoc99_vfwscanf@@GLIBC_2.7, __isoc99_swscanf@@GLIBC_2.7
+ and __isoc99_vswscanf@@GLIBC_2.7.
+ * wcsmbs/Makefile (routines): Add isoc99_wscanf, isoc99_vwscanf,
+ isoc99_fwscanf, isoc99_vfwscanf, isoc99_swscanf and isoc99_vswscanf.
+ (CFLAGS-isoc99_wscanf.c, CFLAGS-isoc99_fwscanf.c,
+ CFLAGS-isoc99_vwscanf.c, CFLAGS-isoc99_vfwscanf.c): Add $(exceptions).
+ (CPPFLAGS): Add -D_IO_MTSAFE_IO if needed.
+ * stdio-common/isoc99_scanf.c: New file.
+ * stdio-common/isoc99_vsscanf.c: New file.
+ * stdio-common/isoc99_vscanf.c: New file.
+ * stdio-common/isoc99_vfscanf.c: New file.
+ * stdio-common/isoc99_fscanf.c: New file.
+ * stdio-common/isoc99_sscanf.c: New file.
+ * wcsmbs/isoc99_fwscanf.c: New file.
+ * wcsmbs/isoc99_vswscanf.c: New file.
+ * wcsmbs/isoc99_swscanf.c: New file.
+ * wcsmbs/isoc99_wscanf.c: New file.
+ * wcsmbs/isoc99_vwscanf.c: New file.
+ * wcsmbs/isoc99_vfwscanf.c: New file.
+ * libio/libio.h (_IO_FLAGS2_SCANF_STD): Define.
+ * libio/libioP.h (_IO_acquire_lock_clear_flags2_fct): Also
+ clear _IO_FLAGS2_SCANF_STD bit from _flags2.
+ * stdio-common/vfscanf.c (_IO_vfscanf_internal): Don't
+ handle %as, %aS and %a[ if _IO_FLAGS2_SCANF_STD is set in _flags2.
+ * stdio-common/scanf14.c: New test.
+ * stdio-common/scanf15.c: New test.
+ * sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Add
+ isoc99_scanf, isoc99_fscanf, isoc99_sscanf,
+ isoc99_vscanf, isoc99_vfscanf, isoc99_vsscanf,
+ isoc99_wscanf, isoc99_fwscanf, isoc99_swscanf,
+ isoc99_vwscanf, isoc99_vfwscanf and isoc99_vswscanf.
+ * sysdeps/ieee754/ldbl-opt/Versions (libc): Export
+ __nldbl___isoc99_scanf@@GLIBC_2.7,
+ __nldbl___isoc99_fscanf@@GLIBC_2.7,
+ __nldbl___isoc99_sscanf@@GLIBC_2.7,
+ __nldbl___isoc99_vscanf@@GLIBC_2.7,
+ __nldbl___isoc99_vfscanf@@GLIBC_2.7,
+ __nldbl___isoc99_vsscanf@@GLIBC_2.7,
+ __nldbl___isoc99_wscanf@@GLIBC_2.7,
+ __nldbl___isoc99_fwscanf@@GLIBC_2.7,
+ __nldbl___isoc99_swscanf@@GLIBC_2.7,
+ __nldbl___isoc99_vwscanf@@GLIBC_2.7,
+ __nldbl___isoc99_vfwscanf@@GLIBC_2.7
+ and __nldbl___isoc99_vswscanf@@GLIBC_2.7.
+ * sysdeps/ieee754/ldbl-opt/nldbl-compat.h (__isoc99_scanf,
+ __isoc99_fscanf, __isoc99_sscanf, __isoc99_vscanf,
+ __isoc99_vfscanf, __isoc99_vsscanf, __isoc99_wscanf,
+ __isoc99_fwscanf, __isoc99_swscanf, __isoc99_vwscanf,
+ __isoc99_vfwscanf, __isoc99_vswscanf): Add NLDBL_DECL.
+ * sysdeps/ieee754/ldbl-opt/nldbl-compat.c
+ (__nldbl___isoc99_scanf, __nldbl___isoc99_fscanf,
+ __nldbl___isoc99_sscanf, __nldbl___isoc99_vscanf,
+ __nldbl___isoc99_vfscanf, __nldbl___isoc99_vsscanf,
+ __nldbl___isoc99_wscanf, __nldbl___isoc99_fwscanf,
+ __nldbl___isoc99_swscanf, __nldbl___isoc99_vwscanf,
+ __nldbl___isoc99_vfwscanf, __nldbl___isoc99_vswscanf): New
+ functions.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfscanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_swscanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vwscanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_wscanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_scanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_sscanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vsscanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fwscanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfwscanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vswscanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vscanf.c: New file.
+ * sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fscanf.c: New file.
+
+ * stdio-common/Makefile (tests): Add scanf13.
+ (scanf13-ENV): New.
+ * stdio-common/vfscanf.c (_IO_vfscanf_internal): Handle
+ m modifier followed by l.
+ (STRING_ARG): Add width argument.
+ (_IO_vfscanf_internal) <case L_('c')>: Handle %mc.
+ <case L_('C')>: Handle %mlc and %mC.
+ <case L_('s'), case L_('S'), case L_('[')>: Adjust STRING_ARG
+ arguments.
+ * stdio-common/scanf13.c: New test.
+
+ * libio/libioP.h (_IO_acquire_lock_clear_flags2_fct): Clear
+ the _IO_FLAGS2_FORTIFY bit from _flags2 rather than _flags.
+
+2007-09-18 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Correct return value
+ type and __THROW marker of splice, vmsplice, and tee.
+ * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/syscalls.list: Mark splice, vmsplice, and tee
+ as cancellation points.
+
+2003-11-01 Daniel Jacobowitz <dan@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_discover_osversion): Don't
+ parse more than three parts of the version number.
+
+2007-09-15 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * stdio-common/vfscanf.c (_IO_vfwscanf): Add support for 'm'
+ modifier. Patch by Jakub Jelinek.
+
+2007-08-26 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/i386/Makefile (sysdep_routines): Add
+ call_fallocate in misc subdir.
+ * sysdeps/unix/sysv/linux/i386/call_fallocate.S: New file.
+ * sysdeps/unix/sysv/linux/i386/syscalls.list (fallocate64): Remove.
+ * sysdeps/unix/sysv/linux/i386/posix_fallocate.c: Use __call_fallocate
+ instead of __fallocate64.
+ * sysdeps/unix/sysv/linux/i386/posix_fallocate64.c: Likewise.
+
+2007-09-15 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * rt/Versions (librt): Export __mq_open_2@@GLIBC_2.7.
+ * rt/Makefile (headers): Add bits/mqueue2.h.
+ * rt/mqueue.h: Include bits/mqueue2.h if -D_FORTIFY_SOURCE=2,
+ optimizing with GCC and __va_arg_pack_len is defined.
+ * rt/bits/mqueue2.h: New file.
+ * rt/mq_open.c (__mq_open): Renamed from mq_open.
+ (mq_open): New strong_alias.
+ (__mq_open_2): New function.
+ * sysdeps/unix/sysv/linux/mq_open.c (__mq_open): Renamed from mq_open.
+ (mq_open): New strong_alias.
+ (__mq_open_2): New function.
+ * debug/Versions (libc): Export __fortify_fail@@GLIBC_PRIVATE.
+ * Versions.def (librt): Add GLIBC_2.7 version.
+ * debug/fortify_fail.c (__fortify_fail): Add libc_hidden_def.
+ * include/stdio.h (__fortify_fail): Add libc_hidden_proto.
+
+ * misc/sys/cdefs.h (__errordecl, __va_arg_pack_len): Define.
+ * io/fcntl.h: Include bits/fcntl2.h when __va_arg_pack_len
+ is defined rather than when not C++.
+ * io/bits/fcntl2.h (__open_alias, __open64_alias, __openat_alias,
+ __openat64_alias): New redirects.
+ (__open_too_many_args, __open_missing_mode, __open64_too_many_args,
+ __open64_missing_mode, __openat_too_many_args, __openat_missing_mode,
+ __openat64_too_many_args, __openat64_missing_mode): New __errordecls.
+ (open, open64, openat, openat64): Rewrite as __extern_always_inline
+ functions instead of function-like macros.
+
+2007-09-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/i386/i586/memcpy.S (__memcpy_chk): New definition.
+ * sysdeps/i386/i586/mempcpy.S (__memcpy_chk): New definition.
+ * sysdeps/i386/i586/memset.S (__memset_chk): New definition.
+
+2007-09-15 Mike Frysinger <vapier@xxxxxxxxxx>
+
+ * inet/inet_net.c: Reset digit to 0 for inputs starting with "0x".
+ * inet/tst-network.c (tests): Add edge case tests for "0", "0x", "0x0".
+
+2007-09-14 Mike Frysinger <vapier@xxxxxxxxxx>
+
+ * inet/tst-network.c: Increment ERRORS for failing tests.
+
+2007-09-07 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * misc/sys/cdefs.h (__va_arg_pack): Define for GCC 4.3+.
+ * misc/bits/syslog.h (syslog): When __va_arg_pack is defined,
+ implement as __extern_always_inline function.
+ (vsyslog): Define as __extern_always_inline function unconditionally.
+ * libio/bits/stdio2.h (sprintf, snprintf, printf, fprintf):
+ When __va_arg_pack is defined, implement as __extern_always_inline
+ functions.
+ (vsprintf, vsnprintf, vprintf, vfprintf): Define as
+ __extern_always_inline functions unconditionally.
+ * libio/bits/stdio.h (vprintf): Ifdef out the inline when
+ bits/stdio2.h will be included.
+ * wcsmbs/bits/wchar2.h (__swprintf_alias): New redirect.
+ (swprintf, wprintf, fwprintf): When __va_arg_pack is defined,
+ implement as __extern_always_inline functions.
+ (vswprintf, vwprintf, vfwprintf): Define as
+ __extern_always_inline functions unconditionally.
+ * debug/tst-chk1.c (do_test): Enable remaining tests for C++.
+
+2007-09-03 Jakub Jelinek <jakub@xxxxxxxxxx>
+
+ * misc/sys/cdefs.h (__extern_inline, __extern_always_inline): Only
+ define in C++ for GCC 4.3+, in C++ always use __gnu_inline__
+ attribute.
+ * include/features.h (__USE_EXTERN_INLINES): Define only when
+ __extern_inline is defined.
+ * stdlib/stdlib.h: Include bits/stdlib.h when __extern_always_inline
+ is defined instead of when not __cplusplus.
+ * misc/sys/syslog.h: Include bits/syslog.h when __extern_always_inline
+ is defined instead of when not __cplusplus.
+ * socket/sys/socket.h: Include bits/socket2.h when
+ __extern_always_inline is defined instead of when not __cplusplus.
+ * libio/stdio.h: Include bits/stdio2.h when __extern_always_inline
+ is defined instead of when not __cplusplus.
+ * posix/unistd.h: Include bits/unistd.h when __extern_always_inline
+ is defined instead of when not __cplusplus.
+ * string/string.h: Include bits/string3.h when __extern_always_inline
+ is defined instead of when not __cplusplus.
+ * wcsmbs/wchar.h: Include bits/wchar2.h when __extern_always_inline
+ is defined instead of when not __cplusplus.
+ (btowc, wctob): Don't guard the inlines with ifndef __cplusplus.
+ * io/fcntl.h: Don't include bits/fcntl2.h if __extern_always_inline
+ is not defined.
+ * misc/bits/syslog-ldbl.h: Guard *_chk stuff with
+ defined __extern_always_inline instead of !defined __cplusplus.
+ * libio/bits/stdio-ldbl.h: Likewise.
+ * wcsmbs/bits/wchar-ldbl.h: Likewise.
+ * misc/bits/syslog.h (syslog): Don't define for C++.
+ (vsyslog): Use __extern_always_inline function for C++ instead of
+ a macro.
+ * libio/bits/stdio.h (__STDIO_INLINE): Define to __extern_inline
+ whenever that macro is defined.
+ (vprintf): Don't provide the inline for C++.
+ (fread_unlocked, fwrite_unlocked): Don't define the macros for C++.
+ * libio/bits/stdio2.h (sprintf, snprintf, printf, fprintf): Don't
+ define the macros for C++.
+ (vsprintf, vsnprintf, vprintf, vfprintf): Define as
+ __extern_always_inline functions for C++.
+ * io/sys/stat.h (stat, lstat, fstat, fstatat, mknod, mknodat,
+ stat64, lstat64, fstat64, fstatat64): Don't define if not
+ __USE_EXTERN_INLINES.
+ * wcsmbs/bits/wchar2.h: Fix #error message.
+ (swprintf, wprintf, fwprintf): Don't define the macros for C++.
+ (vswprintf, vwprintf, vfwprintf): Define using
+ __extern_always_inline functions for C++.
+ * string/bits/string3.h: Don't #undef macros if __cplusplus.
+ (memcpy, memmove, mempcpy, memset, bcopy, bzero, strcpy, stpcpy,
+ strncpy, strcat, strncat): Define as __extern_always_inline
+ functions instead of macros for C++.
+ * math/bits/cmathcalls.h: Guard __extern_inline routines with
+ defined __extern_inline.
+ * sysdeps/alpha/fpu/bits/mathinline.h (__MATH_INLINE): Define
+ to __extern_inline whenever that macro is defined.
+ * sysdeps/ia64/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
+ * sysdeps/i386/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
+ * sysdeps/i386/i486/bits/string.h (__STRING_INLINE): Likewise.
+ * sysdeps/s390/bits/string.h (__STRING_INLINE): Likewise.
+ * sysdeps/s390/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
+ * sysdeps/powerpc/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
+ * sysdeps/x86_64/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
+ * sysdeps/sparc/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
+ * sysdeps/unix/sysv/linux/sys/sysmacros.h (gnu_dev_major,
+ gnu_dev_minor, gnu_dev_makedev): Remove __extern_inline from
+ prototypes. Only provide __extern_inline routines if
+ __USE_EXTERN_INLINES.
+ * debug/Makefile: Add rules to build and run tst-{,lfs}chk{4,5,6}
+ tests.
+ * debug/tst-chk1.c (do_prepare, do_test): Allow compilation as C++.
+ For now avoid some *printf tests in C++. Skip all testing
+ if __USE_FORTIFY_LEVEL is defined, but __extern_always_inline macro
+ is not.
+ * debug/tst-chk4.cc: New file.
+ * debug/tst-chk5.cc: New file.
+ * debug/tst-chk6.cc: New file.
+ * debug/tst-lfschk4.cc: New file.
+ * debug/tst-lfschk5.cc: New file.
+ * debug/tst-lfschk6.cc: New file.
+ * include/wchar.h (__vfwprintf_chk, __vswprintf_chk): Avoid
+ prototypes in C++.
+ * include/stdio.h (__sprintf_chk, __snprintf_chk, __vsprintf_chk,
+ __vsnprintf_chk, __printf_chk, __fprintf_chk, __vprintf_chk,
+ __vfprintf_chk, __fgets_unlocked_chk, __fgets_chk): Likewise.
+
+2007-09-13 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * po/cs.po: Update from translation team.
+
2007-09-11 Roland McGrath <roland@xxxxxxxxxx>
* posix/Makefile ($(objpfx)getconf.speclist): Make it empty if cross
Modified: trunk/libc/NEWS
==============================================================================
--- trunk/libc/NEWS (original)
+++ trunk/libc/NEWS Tue Sep 25 08:22:16 2007
@@ -1,9 +1,39 @@
-GNU C Library NEWS -- history of user-visible changes. 2007-4-25
+GNU C Library NEWS -- history of user-visible changes. 2007-9-19
Copyright (C) 1992-2006, 2007 Free Software Foundation, Inc.
See the end for copying conditions.
Please send GNU C library bug reports via <http://sources.redhat.com/bugzilla/>
using `glibc' in the "product" field.
+
+Version 2.7
+
+* More checking functions: fread, fread_unlocked, open*, mq_open.
+ Implemented by Jakub Jelinek and Ulrich Drepper.
+
+* Extend fortification to C++. Implemented by Jakub Jelinek.
+
+* Implement 'm' modifier for scanf. Add stricter C99/SUS compliance
+ by not recognizing 'a' as a modifier when those specs are requested.
+ Implemented by Jakub Jelinek.
+
+* PPC optimizations to math and string functions.
+ Implemented by Steven Munroe.
+
+* New interfaces: mkostemp, mkostemp64. Like mkstemp* but allow additonal
+ options to be passed. Implemented by Ulrich Drepper.
+
+* More CPU set manipulation functions. Implemented by Ulrich Drepper.
+
+* Handle private futexes in the NPTL implementation.
+ Implemented by Jakub Jelinek and Ulrich Drepper.
+
+* Add support for O_CLOEXEC. Implement in Hurd. Use throughout libc.
+ Implemented by Roland McGrath and Ulrich Drepper.
+
+* Linux/x86-64 vDSO support. Implemented by Ulrich Drepper.
+
+* SHA-256 and SHA-512 based password encryption.
+ Implemented by Ulrich Drepper.
Version 2.6
Modified: trunk/libc/Versions.def
==============================================================================
--- trunk/libc/Versions.def (original)
+++ trunk/libc/Versions.def Tue Sep 25 08:22:16 2007
@@ -100,6 +100,7 @@
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
+ GLIBC_2.7
}
libutil {
GLIBC_2.0
Modified: trunk/libc/crypt/Makefile
==============================================================================
--- trunk/libc/crypt/Makefile (original)
+++ trunk/libc/crypt/Makefile Tue Sep 25 08:22:16 2007
@@ -1,4 +1,4 @@
-# Copyright (C) 1996, 2000, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1996, 2000, 2001, 2007 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
@@ -26,12 +26,13 @@
extra-libs := libcrypt
extra-libs-others := $(extra-libs)
-libcrypt-routines := crypt-entry md5-crypt md5 crypt crypt_util
+libcrypt-routines := crypt-entry md5-crypt md5 sha256-crypt sha256 \
+ sha512-crypt sha512 crypt crypt_util
-tests := cert md5test md5c-test
+tests := cert md5test md5c-test sha256test sha256c-test sha512test sha512c-test
distribute := ufc-crypt.h crypt-private.h ufc.c speeds.c README.ufc-crypt \
- Banner md5.h
+ Banner md5.h sha256.h sha512.h
include ../Makeconfig
@@ -40,6 +41,8 @@
endif
$(objpfx)md5test: $(objpfx)md5.o
+$(objpfx)sha256test: $(objpfx)sha256.o
+$(objpfx)sha512test: $(objpfx)sha512.o
include ../Rules
Modified: trunk/libc/crypt/crypt-entry.c
==============================================================================
--- trunk/libc/crypt/crypt-entry.c (original)
+++ trunk/libc/crypt/crypt-entry.c Tue Sep 25 08:22:16 2007
@@ -1,7 +1,7 @@
/*
* UFC-crypt: ultra fast crypt(3) implementation
*
- * Copyright (C) 1991, 1992, 1993, 1996, 1997 Free Software Foundation, Inc.
+ * Copyright (C) 1991,1992,1993,1996,1997,2007 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
@@ -55,12 +55,24 @@
extern char *__md5_crypt_r (const char *key, const char *salt, char *buffer,
int buflen);
extern char *__md5_crypt (const char *key, const char *salt);
+extern char *__sha256_crypt_r (const char *key, const char *salt,
+ char *buffer, int buflen);
+extern char *__sha256_crypt (const char *key, const char *salt);
+extern char *__sha512_crypt_r (const char *key, const char *salt,
+ char *buffer, int buflen);
+extern char *__sha512_crypt (const char *key, const char *salt);
#endif
/* Define our magic string to mark salt for MD5 encryption
replacement. This is meant to be the same as for other MD5 based
encryption implementations. */
static const char md5_salt_prefix[] = "$1$";
+
+/* Magic string for SHA256 encryption. */
+static const char sha256_salt_prefix[] = "$5$";
+
+/* Magic string for SHA512 encryption. */
+static const char sha512_salt_prefix[] = "$6$";
/* For use by the old, non-reentrant routines (crypt/encrypt/setkey) */
extern struct crypt_data _ufc_foobar;
@@ -84,6 +96,16 @@
if (strncmp (md5_salt_prefix, salt, sizeof (md5_salt_prefix) - 1) == 0)
return __md5_crypt_r (key, salt, (char *) data,
sizeof (struct crypt_data));
+
+ /* Try to find out whether we have to use SHA256 encryption replacement. */
+ if (strncmp (sha256_salt_prefix, salt, sizeof (sha256_salt_prefix) - 1) == 0)
+ return __sha256_crypt_r (key, salt, (char *) data,
+ sizeof (struct crypt_data));
+
+ /* Try to find out whether we have to use SHA512 encryption replacement. */
+ if (strncmp (sha512_salt_prefix, salt, sizeof (sha512_salt_prefix) - 1) == 0)
+ return __sha512_crypt_r (key, salt, (char *) data,
+ sizeof (struct crypt_data));
#endif
/*
@@ -126,6 +148,14 @@
/* Try to find out whether we have to use MD5 encryption replacement. */
if (strncmp (md5_salt_prefix, salt, sizeof (md5_salt_prefix) - 1) == 0)
return __md5_crypt (key, salt);
+
+ /* Try to find out whether we have to use SHA256 encryption replacement. */
+ if (strncmp (sha256_salt_prefix, salt, sizeof (sha256_salt_prefix) - 1) == 0)
+ return __sha256_crypt (key, salt);
+
+ /* Try to find out whether we have to use SHA512 encryption replacement. */
+ if (strncmp (sha512_salt_prefix, salt, sizeof (sha512_salt_prefix) - 1) == 0)
+ return __sha512_crypt (key, salt);
#endif
return __crypt_r (key, salt, &_ufc_foobar);
Modified: trunk/libc/debug/Makefile
==============================================================================
--- trunk/libc/debug/Makefile (original)
+++ trunk/libc/debug/Makefile Tue Sep 25 08:22:16 2007
@@ -83,15 +83,37 @@
CFLAGS-tst-chk1.c = -Wno-format
CFLAGS-tst-chk2.c = -Wno-format
CFLAGS-tst-chk3.c = -Wno-format
+CFLAGS-tst-chk4.cc = -Wno-format
+CFLAGS-tst-chk5.cc = -Wno-format
+CFLAGS-tst-chk6.cc = -Wno-format
+CFLAGS-tst-lfschk1.c = -Wno-format
+CFLAGS-tst-lfschk2.c = -Wno-format
+CFLAGS-tst-lfschk3.c = -Wno-format
+CFLAGS-tst-lfschk4.cc = -Wno-format
+CFLAGS-tst-lfschk5.cc = -Wno-format
+CFLAGS-tst-lfschk6.cc = -Wno-format
tst-chk1-ENV = LOCPATH=$(common-objpfx)localedata
tst-chk2-ENV = LOCPATH=$(common-objpfx)localedata
tst-chk3-ENV = LOCPATH=$(common-objpfx)localedata
+tst-chk4-ENV = LOCPATH=$(common-objpfx)localedata
+tst-chk5-ENV = LOCPATH=$(common-objpfx)localedata
+tst-chk6-ENV = LOCPATH=$(common-objpfx)localedata
tst-lfschk1-ENV = LOCPATH=$(common-objpfx)localedata
tst-lfschk2-ENV = LOCPATH=$(common-objpfx)localedata
tst-lfschk3-ENV = LOCPATH=$(common-objpfx)localedata
+tst-lfschk4-ENV = LOCPATH=$(common-objpfx)localedata
+tst-lfschk5-ENV = LOCPATH=$(common-objpfx)localedata
+tst-lfschk6-ENV = LOCPATH=$(common-objpfx)localedata
+LDFLAGS-tst-chk4 = -lstdc++
+LDFLAGS-tst-chk5 = -lstdc++
+LDFLAGS-tst-chk6 = -lstdc++
+LDFLAGS-tst-lfschk4 = -lstdc++
+LDFLAGS-tst-lfschk5 = -lstdc++
+LDFLAGS-tst-lfschk6 = -lstdc++
tests = tst-chk1 tst-chk2 tst-chk3 \
- tst-lfschk1 tst-lfschk2 tst-lfschk3 test-strcpy_chk test-stpcpy_chk
+ tst-lfschk1 tst-lfschk2 tst-lfschk3 test-strcpy_chk test-stpcpy_chk \
+ tst-chk4 tst-chk5 tst-chk6 tst-lfschk4 tst-lfschk5 tst-lfschk6
tests-$(OPTION_EGLIBC_BACKTRACE) += backtrace-tst
extra-libs = libSegFault libpcprofile
Modified: trunk/libc/debug/Versions
==============================================================================
--- trunk/libc/debug/Versions (original)
+++ trunk/libc/debug/Versions Tue Sep 25 08:22:16 2007
@@ -42,4 +42,7 @@
GLIBC_2.7 {
__fread_chk; __fread_unlocked_chk;
}
+ GLIBC_PRIVATE {
+ __fortify_fail;
+ }
}
Modified: trunk/libc/debug/fortify_fail.c
==============================================================================
--- trunk/libc/debug/fortify_fail.c (original)
+++ trunk/libc/debug/fortify_fail.c Tue Sep 25 08:22:16 2007
@@ -32,3 +32,4 @@
__libc_message (2, "*** %s ***: %s terminated\n",
msg, __libc_argv[0] ?: "<unknown>");
}
+libc_hidden_def (__fortify_fail)
Modified: trunk/libc/debug/tst-chk1.c
==============================================================================
--- trunk/libc/debug/tst-chk1.c (original)
+++ trunk/libc/debug/tst-chk1.c Tue Sep 25 08:22:16 2007
@@ -49,7 +49,7 @@
}
const char *strs = "abcdefgh\nABCDEFGHI\nabcdefghij\nABCDEFGHIJ";
- if (write (temp_fd, strs, strlen (strs)) != strlen (strs))
+ if ((size_t) write (temp_fd, strs, strlen (strs)) != strlen (strs))
{
puts ("could not write test strings into file");
unlink (temp_filename);
@@ -102,7 +102,7 @@
chk_fail_ok = 0; \
FAIL (); \
}
-#if __USE_FORTIFY_LEVEL >= 2
+#if __USE_FORTIFY_LEVEL >= 2 && (!defined __cplusplus || defined __va_arg_pack)
#define CHK_FAIL2_START CHK_FAIL_START
#define CHK_FAIL2_END CHK_FAIL_END
#else
@@ -142,6 +142,12 @@
#endif
);
+#if defined __USE_FORTIFY_LEVEL && !defined __extern_always_inline
+ printf ("Test skipped");
+ if (l0 == 0)
+ return 0;
+#endif
+
/* These ops can be done without runtime checking of object size. */
memcpy (buf, "abcdefghij", 10);
memmove (buf + 1, buf, 9);
@@ -280,7 +286,7 @@
CHK_FAIL_END
CHK_FAIL_START
- p = mempcpy (buf + 6, "abcde", l0 + 5);
+ p = (char *) mempcpy (buf + 6, "abcde", l0 + 5);
CHK_FAIL_END
CHK_FAIL_START
@@ -303,6 +309,7 @@
stpncpy (buf + 6, "cd", l0 + 5);
CHK_FAIL_END
+# if !defined __cplusplus || defined __va_arg_pack
CHK_FAIL_START
sprintf (buf + 8, "%d", num1);
CHK_FAIL_END
@@ -310,6 +317,7 @@
CHK_FAIL_START
snprintf (buf + 8, l0 + 3, "%d", num2);
CHK_FAIL_END
+# endif
memcpy (buf, str1 + 2, l0 + 9);
CHK_FAIL_START
@@ -330,18 +338,18 @@
CHK_FAIL_END
CHK_FAIL_START
- p = mempcpy (a.buf1 + 6, "abcde", l0 + 5);
+ p = (char *) mempcpy (a.buf1 + 6, "abcde", l0 + 5);
CHK_FAIL_END
CHK_FAIL_START
memset (a.buf1 + 9, 'j', l0 + 2);
CHK_FAIL_END
-#if __USE_FORTIFY_LEVEL >= 2
-# define O 0
-#else
-# define O 1
-#endif
+# if __USE_FORTIFY_LEVEL >= 2
+# define O 0
+# else
+# define O 1
+# endif
CHK_FAIL_START
strcpy (a.buf1 + (O + 4), str1 + 5);
@@ -355,6 +363,7 @@
strncpy (a.buf1 + (O + 6), "X", l0 + 4);
CHK_FAIL_END
+# if !defined __cplusplus || defined __va_arg_pack
CHK_FAIL_START
sprintf (a.buf1 + (O + 7), "%d", num1);
CHK_FAIL_END
@@ -362,6 +371,7 @@
CHK_FAIL_START
snprintf (a.buf1 + (O + 7), l0 + 3, "%d", num2);
CHK_FAIL_END
+# endif
memcpy (a.buf1, str1 + (3 - O), l0 + 8 + O);
CHK_FAIL_START
@@ -919,7 +929,8 @@
else
{
const char *sendstr = "abcdefgh\nABCDEFGH\n0123456789\n";
- if (send (sp[0], sendstr, strlen (sendstr), 0) != strlen (sendstr))
+ if ((size_t) send (sp[0], sendstr, strlen (sendstr), 0)
+ != strlen (sendstr))
FAIL ();
char recvbuf[12];
@@ -951,29 +962,30 @@
struct sockaddr_un sa_un;
sl = sizeof (sa_un);
- if (recvfrom (sp[1], recvbuf, sizeof recvbuf, MSG_PEEK, &sa_un, &sl)
+ if (recvfrom (sp[1], recvbuf, sizeof recvbuf, MSG_PEEK,
+ (struct sockaddr *) &sa_un, &sl)
!= sizeof recvbuf
|| memcmp (recvbuf, sendstr, sizeof recvbuf) != 0)
FAIL ();
sl = sizeof (sa_un);
if (recvfrom (sp[1], recvbuf + 6, l0 + sizeof recvbuf - 7, MSG_PEEK,
- &sa_un, &sl) != sizeof recvbuf - 7
+ (struct sockaddr *) &sa_un, &sl) != sizeof recvbuf - 7
|| memcmp (recvbuf + 6, sendstr, sizeof recvbuf - 7) != 0)
FAIL ();
#if __USE_FORTIFY_LEVEL >= 1
CHK_FAIL_START
sl = sizeof (sa_un);
- if (recvfrom (sp[1], recvbuf + 1, sizeof recvbuf, MSG_PEEK, &sa_un, &sl)
- != sizeof recvbuf)
+ if (recvfrom (sp[1], recvbuf + 1, sizeof recvbuf, MSG_PEEK,
+ (struct sockaddr *) &sa_un, &sl) != sizeof recvbuf)
FAIL ();
CHK_FAIL_END
CHK_FAIL_START
sl = sizeof (sa_un);
if (recvfrom (sp[1], recvbuf + 4, l0 + sizeof recvbuf - 3, MSG_PEEK,
- &sa_un, &sl) != sizeof recvbuf - 3)
+ (struct sockaddr *) &sa_un, &sl) != sizeof recvbuf - 3)
FAIL ();
CHK_FAIL_END
#endif
Modified: trunk/libc/elf/dl-lookup.c
==============================================================================
--- trunk/libc/elf/dl-lookup.c (original)
+++ trunk/libc/elf/dl-lookup.c Tue Sep 25 08:22:16 2007
@@ -86,36 +86,42 @@
/* Add extra dependency on MAP to UNDEF_MAP. */
static int
internal_function
-add_dependency (struct link_map *undef_map, struct link_map *map)
+add_dependency (struct link_map *undef_map, struct link_map *map, int flags)
{
struct link_map **list;
struct link_map *runp;
unsigned int act;
unsigned int i;
int result = 0;
+ unsigned long long int serial;
/* Avoid self-references and references to objects which cannot be
unloaded anyway. */
if (undef_map == map)
return 0;
+ /* Save serial number of the target MAP. */
+ serial = map->l_serial;
+
/* Make sure nobody can unload the object while we are at it. */
- __rtld_lock_lock_recursive (GL(dl_load_lock));
-
- /* Avoid references to objects which cannot be unloaded anyway. */
- if (map->l_type != lt_loaded
- || (map->l_flags_1 & DF_1_NODELETE) != 0)
- goto out;
-
- /* If the object with the undefined reference cannot be removed ever
- just make sure the same is true for the object which contains the
- definition. */
- if (undef_map->l_type != lt_loaded
- || (undef_map->l_flags_1 & DF_1_NODELETE) != 0)
- {
- map->l_flags_1 |= DF_1_NODELETE;
- goto out;
- }
+ if (__builtin_expect (flags & DL_LOOKUP_GSCOPE_LOCK, 0))
+ {
+ /* We can't just call __rtld_lock_lock_recursive (GL(dl_load_lock))
+ here, that can result in ABBA deadlock. */
+ THREAD_GSCOPE_RESET_FLAG ();
+ __rtld_lock_lock_recursive (GL(dl_load_lock));
+ THREAD_GSCOPE_SET_FLAG ();
+ /* While MAP value won't change, after THREAD_GSCOPE_RESET_FLAG ()
+ it can e.g. point to unallocated memory. So avoid the optimizer
+ treating the above read from MAP->l_serial as ensurance it
+ can safely dereference it. */
+ map = atomic_forced_read (map);
+ }
+ else
+ __rtld_lock_lock_recursive (GL(dl_load_lock));
+
+ /* From this point on it is unsafe to dereference MAP, until it
+ has been found in one of the lists. */
/* Determine whether UNDEF_MAP already has a reference to MAP. First
look in the normal dependencies. */
@@ -125,7 +131,7 @@
for (i = 0; list[i] != NULL; ++i)
if (list[i] == map)
- goto out;
+ goto out_check;
}
/* No normal dependency. See whether we already had to add it
@@ -135,7 +141,7 @@
for (i = 0; i < act; ++i)
if (list[i] == map)
- goto out;
+ goto out_check;
/* The object is not yet in the dependency list. Before we add
it make sure just one more time the object we are about to
@@ -148,7 +154,29 @@
if (runp != NULL)
{
- /* The object is still available. Add the reference now. */
+ /* The object is still available. */
+
+ /* MAP could have been dlclosed, freed and then some other dlopened
+ library could have the same link_map pointer. */
+ if (map->l_serial != serial)
+ goto out_check;
+
+ /* Avoid references to objects which cannot be unloaded anyway. */
+ assert (map->l_type == lt_loaded);
+ if ((map->l_flags_1 & DF_1_NODELETE) != 0)
+ goto out;
+
+ /* If the object with the undefined reference cannot be removed ever
+ just make sure the same is true for the object which contains the
+ definition. */
+ if (undef_map->l_type != lt_loaded
+ || (undef_map->l_flags_1 & DF_1_NODELETE) != 0)
+ {
+ map->l_flags_1 |= DF_1_NODELETE;
+ goto out;
+ }
+
+ /* Add the reference now. */
if (__builtin_expect (act >= undef_map->l_reldepsmax, 0))
{
/* Allocate more memory for the dependency list. Since this
@@ -169,13 +197,13 @@
}
/* If we didn't manage to allocate memory for the list this is
- no fatal mistake. We simply increment the use counter of the
- referenced object and don't record the dependencies. This
- means this increment can never be reverted and the object
- will never be unloaded. This is semantically the correct
+ no fatal mistake. We simply make sure the referenced object
+ cannot be unloaded. This is semantically the correct
behavior. */
if (__builtin_expect (act < undef_map->l_reldepsmax, 1))
undef_map->l_reldeps[undef_map->l_reldepsact++] = map;
+ else
+ map->l_flags_1 |= DF_1_NODELETE;
/* Display information if we are debugging. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0))
@@ -196,6 +224,11 @@
__rtld_lock_unlock_recursive (GL(dl_load_lock));
return result;
+
+ out_check:
+ if (map->l_serial != serial)
+ result = -1;
+ goto out;
}
static void
@@ -227,9 +260,11 @@
bump_num_relocations ();
- /* No other flag than DL_LOOKUP_ADD_DEPENDENCY is allowed if we look
- up a versioned symbol. */
- assert (version == NULL || (flags & ~(DL_LOOKUP_ADD_DEPENDENCY)) == 0);
+ /* No other flag than DL_LOOKUP_ADD_DEPENDENCY or DL_LOOKUP_GSCOPE_LOCK
+ is allowed if we look up a versioned symbol. */
+ assert (version == NULL
+ || (flags & ~(DL_LOOKUP_ADD_DEPENDENCY | DL_LOOKUP_GSCOPE_LOCK))
+ == 0);
size_t i = 0;
if (__builtin_expect (skip_map != NULL, 0))
@@ -335,10 +370,12 @@
runtime lookups. */
&& (flags & DL_LOOKUP_ADD_DEPENDENCY) != 0
/* Add UNDEF_MAP to the dependencies. */
- && add_dependency (undef_map, current_value.m) < 0)
+ && add_dependency (undef_map, current_value.m, flags) < 0)
/* Something went wrong. Perhaps the object we tried to reference
was just removed. Try finding another definition. */
- return _dl_lookup_symbol_x (undef_name, undef_map, ref, symbol_scope,
+ return _dl_lookup_symbol_x (undef_name, undef_map, ref,
+ (flags & DL_LOOKUP_GSCOPE_LOCK)
+ ? undef_map->l_scope : symbol_scope,
version, type_class, flags, skip_map);
/* The object is used. */
Modified: trunk/libc/elf/dl-object.c
==============================================================================
--- trunk/libc/elf/dl-object.c (original)
+++ trunk/libc/elf/dl-object.c Tue Sep 25 08:22:16 2007
@@ -103,6 +103,7 @@
else
GL(dl_ns)[nsid]._ns_loaded = new;
++GL(dl_ns)[nsid]._ns_nloaded;
+ new->l_serial = GL(dl_load_adds);
++GL(dl_load_adds);
/* If we have no loader the new object acts as it. */
Modified: trunk/libc/elf/dl-runtime.c
==============================================================================
--- trunk/libc/elf/dl-runtime.c (original)
+++ trunk/libc/elf/dl-runtime.c Tue Sep 25 08:22:16 2007
@@ -100,7 +100,10 @@
we are not using any threads (yet). */
int flags = DL_LOOKUP_ADD_DEPENDENCY;
if (!RTLD_SINGLE_THREAD_P)
- THREAD_GSCOPE_SET_FLAG ();
+ {
+ THREAD_GSCOPE_SET_FLAG ();
+ flags |= DL_LOOKUP_GSCOPE_LOCK;
+ }
result = _dl_lookup_symbol_x (strtab + sym->st_name, l, &sym, l->l_scope,
version, ELF_RTYPE_CLASS_PLT, flags, NULL);
@@ -192,7 +195,10 @@
we are not using any threads (yet). */
int flags = DL_LOOKUP_ADD_DEPENDENCY;
if (!RTLD_SINGLE_THREAD_P)
- THREAD_GSCOPE_SET_FLAG ();
+ {
+ THREAD_GSCOPE_SET_FLAG ();
+ flags |= DL_LOOKUP_GSCOPE_LOCK;
+ }
result = _dl_lookup_symbol_x (strtab + refsym->st_name, l,
&defsym, l->l_scope, version,
Modified: trunk/libc/elf/dl-sym.c
==============================================================================
--- trunk/libc/elf/dl-sym.c (original)
+++ trunk/libc/elf/dl-sym.c Tue Sep 25 08:22:16 2007
@@ -123,7 +123,8 @@
args.name = name;
args.map = match;
args.vers = vers;
- args.flags = flags | DL_LOOKUP_ADD_DEPENDENCY;
+ args.flags
+ = flags | DL_LOOKUP_ADD_DEPENDENCY | DL_LOOKUP_GSCOPE_LOCK;
args.refp = &ref;
THREAD_GSCOPE_SET_FLAG ();
Modified: trunk/libc/iconv/iconv_open.c
==============================================================================
--- trunk/libc/iconv/iconv_open.c (original)
+++ trunk/libc/iconv/iconv_open.c Tue Sep 25 08:22:16 2007
@@ -18,8 +18,10 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <alloca.h>
#include <errno.h>
#include <iconv.h>
+#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
@@ -30,28 +32,49 @@
iconv_t
iconv_open (const char *tocode, const char *fromcode)
{
- char *tocode_conv;
- char *fromcode_conv;
- size_t tocode_len;
- size_t fromcode_len;
- __gconv_t cd;
- int res;
-
/* Normalize the name. We remove all characters beside alpha-numeric,
'_', '-', '/', '.', and ':'. */
- tocode_len = strlen (tocode);
- tocode_conv = (char *) alloca (tocode_len + 3);
+ size_t tocode_len = strlen (tocode) + 3;
+ char *tocode_conv;
+ bool tocode_usealloca = __libc_use_alloca (tocode_len);
+ if (tocode_usealloca)
+ tocode_conv = (char *) alloca (tocode_len);
+ else
+ {
+ tocode_conv = (char *) malloc (tocode_len);
+ if (tocode_conv == NULL)
+ return (iconv_t) -1;
+ }
strip (tocode_conv, tocode);
tocode = (tocode_conv[2] == '\0' && tocode[0] != '\0'
? upstr (tocode_conv, tocode) : tocode_conv);
- fromcode_len = strlen (fromcode);
- fromcode_conv = (char *) alloca (fromcode_len + 3);
+ size_t fromcode_len = strlen (fromcode) + 3;
+ char *fromcode_conv;
+ bool fromcode_usealloca = __libc_use_alloca (fromcode_len);
+ if (fromcode_usealloca)
+ fromcode_conv = (char *) alloca (fromcode_len);
+ else
+ {
+ fromcode_conv = (char *) malloc (fromcode_len);
+ if (fromcode_conv == NULL)
+ {
+ if (! tocode_usealloca)
+ free (tocode_conv);
+ return (iconv_t) -1;
+ }
+ }
strip (fromcode_conv, fromcode);
fromcode = (fromcode_conv[2] == '\0' && fromcode[0] != '\0'
? upstr (fromcode_conv, fromcode) : fromcode_conv);
- res = __gconv_open (tocode, fromcode, &cd, 0);
+ __gconv_t cd;
+ int res = __gconv_open (tocode, fromcode, &cd, 0);
+
+ if (! fromcode_usealloca)
+ free (fromcode_conv);
+ if (! tocode_usealloca)
+ free (tocode_conv);
if (__builtin_expect (res, __GCONV_OK) != __GCONV_OK)
{
@@ -59,7 +82,7 @@
if (res == __GCONV_NOCONV || res == __GCONV_NODB)
__set_errno (EINVAL);
- return (iconv_t) -1;
+ cd = (iconv_t) -1;
}
return (iconv_t) cd;
Modified: trunk/libc/iconvdata/Makefile
==============================================================================
--- trunk/libc/iconvdata/Makefile (original)
+++ trunk/libc/iconvdata/Makefile Tue Sep 25 08:22:16 2007
@@ -61,7 +61,8 @@
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 MIK BRF
+ IBM1364 IBM1371 IBM1388 IBM1390 IBM1399 ISO_11548-1 MIK BRF \
+ MAC-CENTRALEUROPE
modules.so := $(addsuffix .so, $(modules-y))
@@ -200,7 +201,7 @@
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 mik.c \
- brf.c
+ brf.c mac-centraleurope.c
# We build the transformation modules only when we build shared libs.
ifeq (yes,$(build-shared))
@@ -241,7 +242,8 @@
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 mik brf
+ iso8859-11 ibm866nav pt154 rk1048 mik brf \
+ mac-centraleurope
gen-special-modules := iso8859-7jp
Modified: trunk/libc/iconvdata/TESTS
==============================================================================
--- trunk/libc/iconvdata/TESTS (original)
+++ trunk/libc/iconvdata/TESTS Tue Sep 25 08:22:16 2007
@@ -167,3 +167,5 @@
ISO_11548-1 ISO_11548-1 - UTF8
MIK MIK Y UTF8
BRF BRF - UTF8
+MAC-SAMI MAC-SAMI Y UTF8
+MAC-CENTRALEUROPE MAC-CENTRALEUROPE Y UTF8
Modified: trunk/libc/iconvdata/gconv-modules
==============================================================================
--- trunk/libc/iconvdata/gconv-modules (original)
+++ trunk/libc/iconvdata/gconv-modules Tue Sep 25 08:22:16 2007
@@ -1911,3 +1911,8 @@
# from to module cost
module BRF// INTERNAL BRF 1
module INTERNAL BRF// BRF 1
+
+# from to module cost
+alias CP1282// MAC-CENTRALEUROPE//
+module MAC-CENTRALEUROPE// INTERNAL MAC-CENTRALEUROPE 1
+module INTERNAL MAC-CENTRALEUROPE// MAC-CENTRALEUROPE 1
Modified: trunk/libc/iconvdata/tst-tables.sh
==============================================================================
--- trunk/libc/iconvdata/tst-tables.sh (original)
+++ trunk/libc/iconvdata/tst-tables.sh Tue Sep 25 08:22:16 2007
@@ -210,6 +210,7 @@
RK1048
MIK
BRF
+ MAC-CENTRALEUROPE
#
# Multibyte encodings come here
#
Modified: trunk/libc/include/features.h
==============================================================================
--- trunk/libc/include/features.h (original)
+++ trunk/libc/include/features.h Tue Sep 25 08:22:16 2007
@@ -340,7 +340,8 @@
/* Decide whether we can define 'extern inline' functions in headers. */
#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
- && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__
+ && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ \
+ && defined __extern_inline
# define __USE_EXTERN_INLINES 1
#endif
Modified: trunk/libc/include/link.h
==============================================================================
--- trunk/libc/include/link.h (original)
+++ trunk/libc/include/link.h Tue Sep 25 08:22:16 2007
@@ -286,6 +286,8 @@
ElfW(Addr) l_relro_addr;
size_t l_relro_size;
+ unsigned long long int l_serial;
+
/* Audit information. This array apparent must be the last in the
structure. Never add something after it. */
struct auditstate
Modified: trunk/libc/include/stdio.h
==============================================================================
--- trunk/libc/include/stdio.h (original)
+++ trunk/libc/include/stdio.h Tue Sep 25 08:22:16 2007
@@ -27,6 +27,7 @@
_G_va_list __arg)
__attribute__ ((__format__ (__scanf__, 2, 0)));
+#ifndef __cplusplus
extern int __sprintf_chk (char *, int, size_t, const char *, ...) __THROW;
extern int __snprintf_chk (char *, size_t, int, size_t, const char *, ...)
__THROW;
@@ -40,6 +41,23 @@
extern int __vfprintf_chk (FILE *, int, const char *, _G_va_list);
extern char *__fgets_unlocked_chk (char *buf, size_t size, int n, FILE *fp);
extern char *__fgets_chk (char *buf, size_t size, int n, FILE *fp);
+#endif
+
+extern int __isoc99_fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) __wur;
+extern int __isoc99_scanf (__const char *__restrict __format, ...) __wur;
+extern int __isoc99_sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __THROW;
+extern int __isoc99_vfscanf (FILE *__restrict __s,
+ __const char *__restrict __format,
+ _G_va_list __arg) __wur;
+extern int __isoc99_vscanf (__const char *__restrict __format,
+ _G_va_list __arg) __wur;
+extern int __isoc99_vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format,
+ _G_va_list __arg) __THROW;
+libc_hidden_proto (__isoc99_vsscanf)
+libc_hidden_proto (__isoc99_vfscanf)
/* Prototypes for compatibility functions. */
extern FILE *__new_tmpfile (void);
@@ -65,6 +83,7 @@
__attribute__ ((__noreturn__));
extern void __libc_message (int do_abort, __const char *__fnt, ...);
extern void __fortify_fail (const char *msg) __attribute__ ((noreturn));
+libc_hidden_proto (__fortify_fail)
/* Acquire ownership of STREAM. */
extern void __flockfile (FILE *__stream);
Modified: trunk/libc/include/wchar.h
==============================================================================
--- trunk/libc/include/wchar.h (original)
+++ trunk/libc/include/wchar.h Tue Sep 25 08:22:16 2007
@@ -152,6 +152,7 @@
__const wchar_t *__restrict __format,
__gnuc_va_list __arg)
/* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
+#ifndef __cplusplus
extern int __vfwprintf_chk (FILE *__restrict __s, int __flag,
const wchar_t *__restrict __format,
__gnuc_va_list __arg)
@@ -163,6 +164,24 @@
/* __attribute__ ((__format__ (__wprintf__, 5, 0))) */;
libc_hidden_proto (__vfwprintf_chk)
libc_hidden_proto (__vswprintf_chk)
+#endif
+
+extern int __isoc99_fwscanf (__FILE *__restrict __stream,
+ __const wchar_t *__restrict __format, ...);
+extern int __isoc99_wscanf (__const wchar_t *__restrict __format, ...);
+extern int __isoc99_swscanf (__const wchar_t *__restrict __s,
+ __const wchar_t *__restrict __format, ...)
+ __THROW;
+extern int __isoc99_vfwscanf (__FILE *__restrict __s,
+ __const wchar_t *__restrict __format,
+ __gnuc_va_list __arg);
+extern int __isoc99_vwscanf (__const wchar_t *__restrict __format,
+ __gnuc_va_list __arg);
+extern int __isoc99_vswscanf (__const wchar_t *__restrict __s,
+ __const wchar_t *__restrict __format,
+ __gnuc_va_list __arg) __THROW;
+libc_hidden_proto (__isoc99_vswscanf)
+libc_hidden_proto (__isoc99_vfwscanf)
/* Internal functions. */
extern size_t __mbsrtowcs_l (wchar_t *dst, const char **src, size_t len,
Modified: trunk/libc/inet/inet_net.c
==============================================================================
--- trunk/libc/inet/inet_net.c (original)
+++ trunk/libc/inet/inet_net.c Tue Sep 25 08:22:16 2007
@@ -55,7 +55,7 @@
if (*cp == '0')
digit = 1, base = 8, cp++;
if (*cp == 'x' || *cp == 'X')
- base = 16, cp++;
+ digit = 0, base = 16, cp++;
while ((c = *cp) != 0) {
if (isdigit(c)) {
if (base == 8 && (c == '8' || c == '9'))
Modified: trunk/libc/inet/tst-network.c
==============================================================================
--- trunk/libc/inet/tst-network.c (original)
+++ trunk/libc/inet/tst-network.c Tue Sep 25 08:22:16 2007
@@ -34,7 +34,10 @@
{"1.0", 0x100},
{"1", 0x1},
{"192.168.0.0", 0xC0A80000},
+ {"0", 0},
+ {"0x0", 0},
/* Now some invalid addresses. */
+ {"0x", INADDR_NONE},
{"141.30.225.2800", INADDR_NONE},
{"141.76.1.1.1", INADDR_NONE},
{"141.76.1.11.", INADDR_NONE},
@@ -61,6 +64,7 @@
if (res != tests[i].number)
{
+ ++errors;
printf ("Test failed for inet_network (\"%s\"):\n",
tests[i].network);
printf ("Expected return value %u (0x%x) but got %u (0x%x).\n",
Modified: trunk/libc/intl/dcigettext.c
==============================================================================
--- trunk/libc/intl/dcigettext.c (original)
+++ trunk/libc/intl/dcigettext.c Tue Sep 25 08:22:16 2007
@@ -854,6 +854,9 @@
/* We are supposed to do a conversion. */
const char *encoding = get_output_charset (domainbinding);
+ /* Protect against reallocation of the table. */
+ __libc_rwlock_rdlock (domain->conversions_lock);
+
/* Search whether a table with converted translations for this
encoding has already been allocated. */
size_t nconversions = domain->nconversions;
@@ -870,8 +873,25 @@
}
}
+ __libc_rwlock_unlock (domain->conversions_lock);
+
if (convd == NULL)
{
+ /* We have to allocate a new conversions table. */
+ __libc_rwlock_wrlock (domain->conversions_lock);
+
+ /* Maybe in the meantime somebody added the translation.
+ Recheck. */
+ for (i = nconversions; i > 0; )
+ {
+ i--;
+ if (strcmp (domain->conversions[i].encoding, encoding) == 0)
+ {
+ convd = &domain->conversions[i];
+ goto found_convd;
+ }
+ }
+
/* Allocate a table for the converted translations for this
encoding. */
struct converted_domain *new_conversions =
@@ -880,9 +900,13 @@
(nconversions + 1) * sizeof (struct converted_domain));
if (__builtin_expect (new_conversions == NULL, 0))
- /* Nothing we can do, no more memory. We cannot use the
- translation because it might be encoded incorrectly. */
- return (char *) -1;
+ {
+ /* Nothing we can do, no more memory. We cannot use the
+ translation because it might be encoded incorrectly. */
+ unlock_fail:
+ __libc_rwlock_unlock (domain->conversions_lock);
+ return (char *) -1;
+ }
domain->conversions = new_conversions;
@@ -891,7 +915,7 @@
if (__builtin_expect (encoding == NULL, 0))
/* Nothing we can do, no more memory. We cannot use the
translation because it might be encoded incorrectly. */
- return (char *) -1;
+ goto unlock_fail;
convd = &new_conversions[nconversions];
convd->encoding = encoding;
@@ -993,6 +1017,9 @@
convd->conv_tab = NULL;
/* Here domain->conversions is still == new_conversions. */
domain->nconversions++;
+
+ found_convd:
+ __libc_rwlock_unlock (domain->conversions_lock);
}
if (
Modified: trunk/libc/intl/gettextP.h
==============================================================================
--- trunk/libc/intl/gettextP.h (original)
+++ trunk/libc/intl/gettextP.h Tue Sep 25 08:22:16 2007
@@ -147,6 +147,7 @@
/* Cache of charset conversions of the translated strings. */
struct converted_domain *conversions;
size_t nconversions;
+ __libc_rwlock_define (, conversions_lock);
const struct expression *plural;
unsigned long int nplurals;
Modified: trunk/libc/intl/loadmsgcat.c
==============================================================================
--- trunk/libc/intl/loadmsgcat.c (original)
+++ trunk/libc/intl/loadmsgcat.c Tue Sep 25 08:22:16 2007
@@ -1,5 +1,5 @@
/* Load needed message catalogs.
- Copyright (C) 1995-2005 Free Software Foundation, Inc.
+ Copyright (C) 1995-2005, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -1252,6 +1252,7 @@
/* No caches of converted translations so far. */
domain->conversions = NULL;
domain->nconversions = 0;
+ __libc_rwlock_init (domain->conversions_lock);
/* Get the header entry and look for a plural specification. */
nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen);
@@ -1290,6 +1291,7 @@
}
if (domain->conversions != NULL)
free (domain->conversions);
+ __libc_rwlock_fini (domain->conversions_lock);
if (domain->malloced)
free (domain->malloced);
Modified: trunk/libc/io/bits/fcntl2.h
==============================================================================
--- trunk/libc/io/bits/fcntl2.h (original)
+++ trunk/libc/io/bits/fcntl2.h Tue Sep 25 08:22:16 2007
@@ -25,161 +25,149 @@
appropriate third/fourth parameter. */
#ifndef __USE_FILE_OFFSET64
extern int __open_2 (__const char *__path, int __oflag) __nonnull ((1));
+extern int __REDIRECT (__open_alias, (__const char *__path, int __oflag, ...),
+ open) __nonnull ((1));
#else
-extern int __REDIRECT (__open_2, (__const char *__file, int __oflag),
+extern int __REDIRECT (__open_2, (__const char *__path, int __oflag),
__open64_2) __nonnull ((1));
+extern int __REDIRECT (__open_alias, (__const char *__path, int __oflag, ...),
+ open64) __nonnull ((1));
#endif
+__errordecl (__open_too_many_args,
+ "open can be called either with 2 or 3 arguments, not more");
+__errordecl (__open_missing_mode,
+ "open with O_CREAT in second argument needs 3 arguments");
-#define open(fname, flags, ...) \
- (__extension__ \
- ({ int ___r; \
- /* If the compiler complains about an invalid type, excess elements, \
- etc. in the initialization this means a parameter of the wrong type \
- has been passed to open. */ \
- int ___arr[] = { __VA_ARGS__ }; \
- if (__builtin_constant_p (flags) && ((flags) & O_CREAT) != 0) \
- { \
- /* If the compiler complains about the size of this array type the \
- mode parameter is missing since O_CREAT has been used. */ \
- typedef int __open_missing_mode[((flags) & O_CREAT) != 0 \
- ? ((long int) sizeof (___arr) \
- - (long int) sizeof (int)) : 1];\
- } \
- if (sizeof (___arr) == 0) \
- { \
- if (__builtin_constant_p (flags) && ((flags) & O_CREAT) == 0) \
- ___r = open (fname, flags); \
- else \
- ___r = __open_2 (fname, flags); \
- } \
- else \
- { \
- /* If the compiler complains about the size of this array type too \
- many parameters have been passed to open. */ \
- typedef int __open_too_many_args[-(sizeof (___arr) \
- > sizeof (int))]; \
- ___r = open (fname, flags, ___arr[0]); \
- } \
- ___r; \
- }))
+__extern_always_inline int
+open (__const char *__path, int __oflag, ...)
+{
+ if (__va_arg_pack_len () > 1)
+ __open_too_many_args ();
+
+ if (__builtin_constant_p (__oflag))
+ {
+ if ((__oflag & O_CREAT) != 0 && __va_arg_pack_len () < 1)
+ {
+ __open_missing_mode ();
+ return __open_2 (__path, __oflag);
+ }
+ return __open_alias (__path, __oflag, __va_arg_pack ());
+ }
+
+ if (__va_arg_pack_len () < 1)
+ return __open_2 (__path, __oflag);
+
+ return __open_alias (__path, __oflag, __va_arg_pack ());
+}
#ifdef __USE_LARGEFILE64
extern int __open64_2 (__const char *__path, int __oflag) __nonnull ((1));
+extern int __REDIRECT (__open64_alias, (__const char *__path, int __oflag,
+ ...), open64) __nonnull ((1));
+__errordecl (__open64_too_many_args,
+ "open64 can be called either with 2 or 3 arguments, not more");
+__errordecl (__open64_missing_mode,
+ "open64 with O_CREAT in second argument needs 3 arguments");
-# define open64(fname, flags, ...) \
- (__extension__ \
- ({ int ___r; \
- /* If the compiler complains about an invalid type, excess elements, \
- etc. in the initialization this means a parameter of the wrong type \
- has been passed to open64. */ \
- int ___arr[] = { __VA_ARGS__ }; \
- if (__builtin_constant_p (flags) && ((flags) & O_CREAT) != 0) \
- { \
- /* If the compiler complains about the size of this array type the \
- mode parameter is missing since O_CREAT has been used. */ \
- typedef int __open_missing_mode[((flags) & O_CREAT) != 0 \
- ? ((long int) sizeof (___arr) \
- - (long int) sizeof (int)) : 1];\
- } \
- if (sizeof (___arr) == 0) \
- { \
- if (__builtin_constant_p (flags) && ((flags) & O_CREAT) == 0) \
- ___r = open64 (fname, flags); \
- else \
- ___r = __open64_2 (fname, flags); \
- } \
- else \
- { \
- /* If the compiler complains about the size of this array type too \
- many parameters have been passed to open64. */ \
- typedef int __open_too_many_args[-(sizeof (___arr) \
- > sizeof (int))]; \
- ___r = open64 (fname, flags, ___arr[0]); \
- } \
- ___r; \
- }))
+__extern_always_inline int
+open64 (__const char *__path, int __oflag, ...)
+{
+ if (__va_arg_pack_len () > 1)
+ __open64_too_many_args ();
+
+ if (__builtin_constant_p (__oflag))
+ {
+ if ((__oflag & O_CREAT) != 0 && __va_arg_pack_len () < 1)
+ {
+ __open64_missing_mode ();
+ return __open64_2 (__path, __oflag);
+ }
+ return __open64_alias (__path, __oflag, __va_arg_pack ());
+ }
+
+ if (__va_arg_pack_len () < 1)
+ return __open64_2 (__path, __oflag);
+
+ return __open64_alias (__path, __oflag, __va_arg_pack ());
+}
#endif
+
#ifdef __USE_ATFILE
# ifndef __USE_FILE_OFFSET64
extern int __openat_2 (int __fd, __const char *__path, int __oflag)
__nonnull ((2));
+extern int __REDIRECT (__openat_alias, (int __fd, __const char *__path,
+ int __oflag, ...), openat)
+ __nonnull ((2));
# else
-extern int __REDIRECT (__openat_2, (int __fd, __const char *__file,
+extern int __REDIRECT (__openat_2, (int __fd, __const char *__path,
int __oflag), __openat64_2)
__nonnull ((2));
+extern int __REDIRECT (__openat_alias, (int __fd, __const char *__path,
+ int __oflag, ...), openat64)
+ __nonnull ((2));
# endif
+__errordecl (__openat_too_many_args,
+ "openat can be called either with 3 or 4 arguments, not more");
+__errordecl (__openat_missing_mode,
+ "openat with O_CREAT in third argument needs 4 arguments");
-# define openat(fd, fname, flags, ...) \
- (__extension__ \
- ({ int ___r; \
- /* If the compiler complains about an invalid type, excess elements, \
- etc. in the initialization this means a parameter of the wrong type \
- has been passed to openat. */ \
- int ___arr[] = { __VA_ARGS__ }; \
- if (__builtin_constant_p (flags) && ((flags) & O_CREAT) != 0) \
- { \
- /* If the compiler complains about the size of this array type the \
- mode parameter is missing since O_CREAT has been used. */ \
- typedef int __open_missing_mode[((flags) & O_CREAT) != 0 \
- ? ((long int) sizeof (___arr) \
- - (long int) sizeof (int)) : 1];\
- } \
- if (sizeof (___arr) == 0) \
- { \
- if (__builtin_constant_p (flags) && ((flags) & O_CREAT) == 0) \
- ___r = openat (fd, fname, flags); \
- else \
- ___r = __openat_2 (fd, fname, flags); \
- } \
- else \
- { \
- /* If the compiler complains about the size of this array type too \
- many parameters have been passed to openat. */ \
- typedef int __open_too_many_args[-(sizeof (___arr) \
- > sizeof (int))]; \
- ___r = openat (fd, fname, flags, ___arr[0]); \
- } \
- ___r; \
- }))
+__extern_always_inline int
+openat (int __fd, __const char *__path, int __oflag, ...)
+{
+ if (__va_arg_pack_len () > 1)
+ __openat_too_many_args ();
+
+ if (__builtin_constant_p (__oflag))
+ {
+ if ((__oflag & O_CREAT) != 0 && __va_arg_pack_len () < 1)
+ {
+ __openat_missing_mode ();
+ return __openat_2 (__fd, __path, __oflag);
+ }
+ return __openat_alias (__fd, __path, __oflag, __va_arg_pack ());
+ }
+
+ if (__va_arg_pack_len () < 1)
+ return __openat_2 (__fd, __path, __oflag);
+
+ return __openat_alias (__fd, __path, __oflag, __va_arg_pack ());
+}
# ifdef __USE_LARGEFILE64
extern int __openat64_2 (int __fd, __const char *__path, int __oflag)
__nonnull ((2));
+extern int __REDIRECT (__openat64_alias, (int __fd, __const char *__path,
+ int __oflag, ...), openat64)
+ __nonnull ((2));
+__errordecl (__openat64_too_many_args,
+ "openat64 can be called either with 3 or 4 arguments, not more");
+__errordecl (__openat64_missing_mode,
+ "openat64 with O_CREAT in third argument needs 4 arguments");
-# define openat64(fd, fname, flags, ...) \
- (__extension__ \
- ({ int ___r; \
- /* If the compiler complains about an invalid type, excess elements, \
- etc. in the initialization this means a parameter of the wrong type \
- has been passed to openat64. */ \
- int ___arr[] = { __VA_ARGS__ }; \
- if (__builtin_constant_p (flags) && ((flags) & O_CREAT) != 0) \
- { \
- /* If the compiler complains about the size of this array type the \
- mode parameter is missing since O_CREAT has been used. */ \
- typedef int __open_missing_mode[((flags) & O_CREAT) != 0 \
- ? ((long int) sizeof (___arr) \
- - (long int) sizeof (int)) : 1];\
- } \
- if (sizeof (___arr) == 0) \
- { \
- if (__builtin_constant_p (flags) && ((flags) & O_CREAT) == 0) \
- ___r = openat64 (fd, fname, flags); \
- else \
- ___r = __openat64_2 (fd, fname, flags); \
- } \
- else \
- { \
- /* If the compiler complains about the size of this array type too \
- many parameters have been passed to openat64. */ \
- typedef int __open_too_many_args[-(sizeof (___arr) \
- > sizeof (int))]; \
- ___r = openat64 (fd, fname, flags, ___arr[0]); \
- } \
- ___r; \
- }))
+__extern_always_inline int
+openat64 (int __fd, __const char *__path, int __oflag, ...)
+{
+ if (__va_arg_pack_len () > 1)
+ __openat64_too_many_args ();
+
+ if (__builtin_constant_p (__oflag))
+ {
+ if ((__oflag & O_CREAT) != 0 && __va_arg_pack_len () < 1)
+ {
+ __openat64_missing_mode ();
+ return __openat64_2 (__fd, __path, __oflag);
+ }
+ return __openat64_alias (__fd, __path, __oflag, __va_arg_pack ());
+ }
+
+ if (__va_arg_pack_len () < 1)
+ return __openat64_2 (__fd, __path, __oflag);
+
+ return __openat64_alias (__fd, __path, __oflag, __va_arg_pack ());
+}
# endif
#endif
Modified: trunk/libc/io/fcntl.h
==============================================================================
--- trunk/libc/io/fcntl.h (original)
+++ trunk/libc/io/fcntl.h Tue Sep 25 08:22:16 2007
@@ -211,8 +211,9 @@
#endif
-/* Define some macros helping to catch common problems. */
-#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
+/* Define some inlines helping to catch common problems. */
+#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline \
+ && defined __va_arg_pack_len
# include <bits/fcntl2.h>
#endif
Modified: trunk/libc/io/sys/stat.h
==============================================================================
--- trunk/libc/io/sys/stat.h (original)
+++ trunk/libc/io/sys/stat.h Tue Sep 25 08:22:16 2007
@@ -444,7 +444,7 @@
__mode_t __mode, __dev_t *__dev)
__THROW __nonnull ((3, 5));
-#if defined __GNUC__ && __GNUC__ >= 2
+#if defined __GNUC__ && __GNUC__ >= 2 && defined __USE_EXTERN_INLINES
/* Inlined versions of the real stat and mknod functions. */
__extern_inline int
Modified: trunk/libc/libio/bits/stdio-ldbl.h
==============================================================================
--- trunk/libc/libio/bits/stdio-ldbl.h (original)
+++ trunk/libc/libio/bits/stdio-ldbl.h Tue Sep 25 08:22:16 2007
@@ -1,5 +1,5 @@
/* -mlong-double-64 compatibility mode for stdio functions.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -28,9 +28,17 @@
__LDBL_REDIR_DECL (vfprintf)
__LDBL_REDIR_DECL (vprintf)
__LDBL_REDIR_DECL (vsprintf)
+#if defined __USE_ISOC99 && !defined __USE_GNU \
+ && !defined __REDIRECT \
+ && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
+__LDBL_REDIR1_DECL (fscanf, __nldbl___isoc99_fscanf)
+__LDBL_REDIR1_DECL (scanf, __nldbl___isoc99_scanf)
+__LDBL_REDIR1_DECL (sscanf, __nldbl___isoc99_sscanf)
+#else
__LDBL_REDIR_DECL (fscanf)
__LDBL_REDIR_DECL (scanf)
__LDBL_REDIR_DECL (sscanf)
+#endif
__END_NAMESPACE_STD
#if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
@@ -42,9 +50,16 @@
#ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
+# if !defined __USE_GNU && !defined __REDIRECT \
+ && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
+__LDBL_REDIR1_DECL (vfscanf, __nldbl___isoc99_vfscanf)
+__LDBL_REDIR1_DECL (vscanf, __nldbl___isoc99_vscanf)
+__LDBL_REDIR1_DECL (vsscanf, __nldbl___isoc99_vsscanf)
+# else
__LDBL_REDIR_DECL (vfscanf)
__LDBL_REDIR_DECL (vsscanf)
__LDBL_REDIR_DECL (vscanf)
+# endif
__END_NAMESPACE_C99
#endif
@@ -58,7 +73,7 @@
__LDBL_REDIR_DECL (obstack_vprintf)
#endif
-#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
+#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
__LDBL_REDIR_DECL (__sprintf_chk)
__LDBL_REDIR_DECL (__vsprintf_chk)
# if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
Modified: trunk/libc/libio/bits/stdio.h
==============================================================================
--- trunk/libc/libio/bits/stdio.h (original)
+++ trunk/libc/libio/bits/stdio.h Tue Sep 25 08:22:16 2007
@@ -21,7 +21,7 @@
# error "Never include <bits/stdio.h> directly; use <stdio.h> instead."
#endif
-#ifdef __cplusplus
+#ifndef __extern_inline
# define __STDIO_INLINE inline
#else
# define __STDIO_INLINE __extern_inline
@@ -29,12 +29,16 @@
#ifdef __USE_EXTERN_INLINES
+/* For -D_FORTIFY_SOURCE{,=2} bits/stdio2.h will define a different
+ inline. */
+# if !(__USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline)
/* Write formatted output to stdout from argument list ARG. */
__STDIO_INLINE int
vprintf (__const char *__restrict __fmt, _G_va_list __arg)
{
return vfprintf (stdout, __fmt, __arg);
}
+# endif
/* Read a character from stdin. */
__STDIO_INLINE int
@@ -135,7 +139,8 @@
#endif /* Use extern inlines. */
-#if defined __USE_MISC && defined __GNUC__ && defined __OPTIMIZE__
+#if defined __USE_MISC && defined __GNUC__ && defined __OPTIMIZE__ \
+ && !defined __cplusplus
/* Perform some simple optimizations. */
# define fread_unlocked(ptr, size, n, stream) \
(__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) \
Modified: trunk/libc/libio/bits/stdio2.h
==============================================================================
--- trunk/libc/libio/bits/stdio2.h (original)
+++ trunk/libc/libio/bits/stdio2.h Tue Sep 25 08:22:16 2007
@@ -27,11 +27,26 @@
__const char *__restrict __format,
_G_va_list __ap) __THROW;
-#define sprintf(str, ...) \
+#ifdef __va_arg_pack
+__extern_always_inline int
+__NTH (sprintf (char *__restrict __s, __const char *__restrict __fmt, ...))
+{
+ return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
+ __bos (__s), __fmt, __va_arg_pack ());
+}
+#elif !defined __cplusplus
+# define sprintf(str, ...) \
__builtin___sprintf_chk (str, __USE_FORTIFY_LEVEL - 1, __bos (str), \
__VA_ARGS__)
-#define vsprintf(str, fmt, ap) \
- __builtin___vsprintf_chk (str, __USE_FORTIFY_LEVEL - 1, __bos (str), fmt, ap)
+#endif
+
+__extern_always_inline int
+__NTH (vsprintf (char *__restrict __s, __const char *__restrict __fmt,
+ _G_va_list __ap))
+{
+ return __builtin___vsprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
+ __bos (__s), __fmt, __ap);
+}
#if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
@@ -42,12 +57,27 @@
size_t __slen, __const char *__restrict __format,
_G_va_list __ap) __THROW;
-# define snprintf(str, len, ...) \
+# ifdef __va_arg_pack
+__extern_always_inline int
+__NTH (snprintf (char *__restrict __s, size_t __n,
+ __const char *__restrict __fmt, ...))
+{
+ return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
+ __bos (__s), __fmt, __va_arg_pack ());
+}
+# elif !defined __cplusplus
+# define snprintf(str, len, ...) \
__builtin___snprintf_chk (str, len, __USE_FORTIFY_LEVEL - 1, __bos (str), \
__VA_ARGS__)
-# define vsnprintf(str, len, fmt, ap) \
- __builtin___vsnprintf_chk (str, len, __USE_FORTIFY_LEVEL - 1, __bos (str), \
- fmt, ap)
+# endif
+
+__extern_always_inline int
+__NTH (vsnprintf (char *__restrict __s, size_t __n,
+ __const char *__restrict __fmt, _G_va_list __ap))
+{
+ return __builtin___vsnprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
+ __bos (__s), __fmt, __ap);
+}
#endif
@@ -61,14 +91,42 @@
extern int __vprintf_chk (int __flag, __const char *__restrict __format,
_G_va_list __ap);
-# define printf(...) \
+# ifdef __va_arg_pack
+__extern_always_inline int
+fprintf (FILE *__restrict __stream, __const char *__restrict __fmt, ...)
+{
+ return __fprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt,
+ __va_arg_pack ());
+}
+
+__extern_always_inline int
+printf (__const char *__restrict __fmt, ...)
+{
+ return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
+}
+# elif !defined __cplusplus
+# define printf(...) \
__printf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
-# define fprintf(stream, ...) \
+# define fprintf(stream, ...) \
__fprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
-# define vprintf(format, ap) \
- __vprintf_chk (__USE_FORTIFY_LEVEL - 1, format, ap)
-# define vfprintf(stream, format, ap) \
- __vfprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, format, ap)
+# endif
+
+__extern_always_inline int
+vprintf (__const char *__restrict __fmt, _G_va_list __ap)
+{
+#ifdef __USE_EXTERN_INLINES
+ return __vfprintf_chk (stdout, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+#else
+ return __vprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+#endif
+}
+
+__extern_always_inline int
+vfprintf (FILE *__restrict __stream,
+ __const char *__restrict __fmt, _G_va_list __ap)
+{
+ return __vfprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+}
#endif
Modified: trunk/libc/libio/libio.h
==============================================================================
--- trunk/libc/libio/libio.h (original)
+++ trunk/libc/libio/libio.h Tue Sep 25 08:22:16 2007
@@ -143,6 +143,9 @@
# define _IO_FLAGS2_FORTIFY 4
#endif
#define _IO_FLAGS2_USER_WBUF 8
+#ifdef _LIBC
+# define _IO_FLAGS2_SCANF_STD 16
+#endif
/* These are "formatting flags" matching the iostream fmtflags enum values. */
#define _IO_SKIPWS 01
Modified: trunk/libc/libio/libioP.h
==============================================================================
--- trunk/libc/libio/libioP.h (original)
+++ trunk/libc/libio/libioP.h Tue Sep 25 08:22:16 2007
@@ -974,7 +974,7 @@
_IO_acquire_lock_clear_flags2_fct (_IO_FILE **p)
{
_IO_FILE *fp = *p;
- fp->_flags &= ~_IO_FLAGS2_FORTIFY;
+ fp->_flags2 &= ~(_IO_FLAGS2_FORTIFY | _IO_FLAGS2_SCANF_STD);
if ((fp->_flags & _IO_USER_LOCK) == 0)
_IO_funlockfile (fp);
}
Modified: trunk/libc/libio/stdio.h
==============================================================================
--- trunk/libc/libio/stdio.h (original)
+++ trunk/libc/libio/stdio.h Tue Sep 25 08:22:16 2007
@@ -410,6 +410,34 @@
/* Read formatted input from S. */
extern int sscanf (__const char *__restrict __s,
__const char *__restrict __format, ...) __THROW;
+
+#if defined __USE_ISOC99 && !defined __USE_GNU \
+ && (!defined __LDBL_COMPAT || !defined __REDIRECT) \
+ && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
+# ifdef __REDIRECT
+/* For strict ISO C99 or POSIX compliance disallow %as, %aS and %a[
+ GNU extension which conflicts with valid %a followed by letter
+ s, S or [. */
+extern int __REDIRECT (fscanf, (FILE *__restrict __stream,
+ __const char *__restrict __format, ...),
+ __isoc99_fscanf) __wur;
+extern int __REDIRECT (scanf, (__const char *__restrict __format, ...),
+ __isoc99_scanf) __wur;
+extern int __REDIRECT (sscanf, (__const char *__restrict __s,
+ __const char *__restrict __format, ...),
+ __isoc99_sscanf) __THROW;
+# else
+extern int __isoc99_fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) __wur;
+extern int __isoc99_scanf (__const char *__restrict __format, ...) __wur;
+extern int __isoc99_sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __THROW;
+# define fscanf __isoc99_fscanf
+# define scanf __isoc99_scanf
+# define sscanf __isoc99_sscanf
+# endif
+#endif
+
__END_NAMESPACE_STD
#ifdef __USE_ISOC99
@@ -433,6 +461,42 @@
extern int vsscanf (__const char *__restrict __s,
__const char *__restrict __format, _G_va_list __arg)
__THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
+
+# if !defined __USE_GNU \
+ && (!defined __LDBL_COMPAT || !defined __REDIRECT) \
+ && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
+# ifdef __REDIRECT
+/* For strict ISO C99 or POSIX compliance disallow %as, %aS and %a[
+ GNU extension which conflicts with valid %a followed by letter
+ s, S or [. */
+extern int __REDIRECT (vfscanf,
+ (FILE *__restrict __s,
+ __const char *__restrict __format, _G_va_list __arg),
+ __isoc99_vfscanf)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) __wur;
+extern int __REDIRECT (vscanf, (__const char *__restrict __format,
+ _G_va_list __arg), __isoc99_vfscanf)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) __wur;
+extern int __REDIRECT (vsscanf,
+ (__const char *__restrict __s,
+ __const char *__restrict __format, _G_va_list __arg),
+ __isoc99_vsscanf)
+ __THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
+# else
+extern int __isoc99_vfscanf (FILE *__restrict __s,
+ __const char *__restrict __format,
+ _G_va_list __arg) __wur;
+extern int __isoc99_vscanf (__const char *__restrict __format,
+ _G_va_list __arg) __wur;
+extern int __isoc99_vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format,
+ _G_va_list __arg) __THROW;
+# define vfscanf __isoc99_vfscanf
+# define vscanf __isoc99_vsscanf
+# define vsscanf __isoc99_vsscanf
+# endif
+# endif
+
__END_NAMESPACE_C99
#endif /* Use ISO C9x. */
@@ -838,7 +902,7 @@
#ifdef __USE_EXTERN_INLINES
# include <bits/stdio.h>
#endif
-#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
+#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
# include <bits/stdio2.h>
#endif
#ifdef __LDBL_COMPAT
Modified: trunk/libc/locale/programs/charmap-dir.c
==============================================================================
--- trunk/libc/locale/programs/charmap-dir.c (original)
+++ trunk/libc/locale/programs/charmap-dir.c Tue Sep 25 08:22:16 2007
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002, 2003, 2005, 2007
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software; you can redistribute it and/or modify
Modified: trunk/libc/localedata/ChangeLog
==============================================================================
--- trunk/libc/localedata/ChangeLog (original)
+++ trunk/libc/localedata/ChangeLog Tue Sep 25 08:22:16 2007
@@ -1,3 +1,11 @@
+2007-09-23 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #4556]
+ * locales/de_CH: Fix d_fmt.
+
+ [BZ #4972]
+ * charmaps/MAC-CENTRALEUROPE: New file.
+
2007-08-24 Ulrich Drepper <drepper@xxxxxxxxxx>
[BZ #3842]
Modified: trunk/libc/localedata/locales/de_CH
==============================================================================
--- trunk/libc/localedata/locales/de_CH (original)
+++ trunk/libc/localedata/locales/de_CH Tue Sep 25 08:22:16 2007
@@ -15,7 +15,6 @@
% Date: 1996-10-15
% Users: general
% Repertoiremap: mnemonic.ds
-% Charset: ISO-8859-1
% Distribution and use is free, also
% for commercial purposes.
@@ -30,7 +29,7 @@
language "German"
territory "Switzerland"
revision "1.0"
-date "2000-06-29"
+date "2007-09-23"
%
category "de_CH:2000";LC_IDENTIFICATION
category "de_CH:2000";LC_CTYPE
@@ -114,7 +113,7 @@
"<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
"<U0044><U0065><U007A><U0065><U006D><U0062><U0065><U0072>"
d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>"
+d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
Modified: trunk/libc/math/bits/cmathcalls.h
==============================================================================
--- trunk/libc/math/bits/cmathcalls.h (original)
+++ trunk/libc/math/bits/cmathcalls.h Tue Sep 25 08:22:16 2007
@@ -132,7 +132,8 @@
/* Now some optimized versions. GCC has handy notations for these
functions. Recent GCC handles these as builtin functions so does
not need inlines. */
-#if defined __GNUC__ && !__GNUC_PREREQ (2, 97) && defined __OPTIMIZE__
+#if defined __GNUC__ && !__GNUC_PREREQ (2, 97) && defined __OPTIMIZE__ \
+ && defined __extern_inline
/* Imaginary part of Z. */
__extern_inline _Mdouble_
Modified: trunk/libc/misc/bits/syslog-ldbl.h
==============================================================================
--- trunk/libc/misc/bits/syslog-ldbl.h (original)
+++ trunk/libc/misc/bits/syslog-ldbl.h Tue Sep 25 08:22:16 2007
@@ -27,7 +27,7 @@
__LDBL_REDIR_DECL (vsyslog)
#endif
-#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
+#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
__LDBL_REDIR_DECL (__syslog_chk)
# ifdef __USE_BSD
Modified: trunk/libc/misc/bits/syslog.h
==============================================================================
--- trunk/libc/misc/bits/syslog.h (original)
+++ trunk/libc/misc/bits/syslog.h Tue Sep 25 08:22:16 2007
@@ -1,5 +1,5 @@
/* Checking macros for syslog functions.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -25,8 +25,16 @@
extern void __syslog_chk (int __pri, int __flag, __const char *__fmt, ...)
__attribute__ ((__format__ (__printf__, 3, 4)));
-#define syslog(pri, ...) \
+#ifdef __va_arg_pack
+__extern_always_inline void
+syslog (int __pri, __const char *__fmt, ...)
+{
+ return __syslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
+}
+#elif !defined __cplusplus
+# define syslog(pri, ...) \
__syslog_chk (pri, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
+#endif
#ifdef __USE_BSD
@@ -34,6 +42,9 @@
__gnuc_va_list __ap)
__attribute__ ((__format__ (__printf__, 3, 0)));
-# define vsyslog(pri, fmt, ap) \
- __vsyslog_chk (pri, __USE_FORTIFY_LEVEL - 1, fmt, ap)
+__extern_always_inline void
+vsyslog (int __pri, __const char *__fmt, __gnuc_va_list __ap)
+{
+ return __vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+}
#endif
Modified: trunk/libc/misc/sys/cdefs.h
==============================================================================
--- trunk/libc/misc/sys/cdefs.h (original)
+++ trunk/libc/misc/sys/cdefs.h Tue Sep 25 08:22:16 2007
@@ -132,6 +132,7 @@
#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
#define __bos0(ptr) __builtin_object_size (ptr, 0)
#define __warndecl(name, msg) extern void name (void)
+#define __errordecl(name, msg) extern void name (void)
/* Support for flexible arrays. */
@@ -281,13 +282,22 @@
/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
inline semantics, unless -fgnu89-inline is used. */
-#ifdef __GNUC_STDC_INLINE__
-# define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
-# define __extern_always_inline \
+#if !defined __cplusplus || __GNUC_PREREQ (4,3)
+# if defined __GNUC_STDC_INLINE__ || defined __cplusplus
+# define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
+# define __extern_always_inline \
extern __always_inline __attribute__ ((__gnu_inline__))
-#else
-# define __extern_inline extern __inline
-# define __extern_always_inline extern __always_inline
+# else
+# define __extern_inline extern __inline
+# define __extern_always_inline extern __always_inline
+# endif
+#endif
+
+/* GCC 4.3 and above allow passing all anonymous arguments of an
+ __extern_always_inline function to some other vararg function. */
+#if __GNUC_PREREQ (4,3)
+# define __va_arg_pack() __builtin_va_arg_pack ()
+# define __va_arg_pack_len() __builtin_va_arg_pack_len ()
#endif
/* It is possible to compile containing GCC extensions even if GCC is
Modified: trunk/libc/misc/sys/syslog.h
==============================================================================
--- trunk/libc/misc/sys/syslog.h (original)
+++ trunk/libc/misc/sys/syslog.h Tue Sep 25 08:22:16 2007
@@ -203,7 +203,7 @@
/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
+#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
# include <bits/syslog.h>
#endif
#ifdef __LDBL_COMPAT
Modified: trunk/libc/po/cs.po
==============================================================================
--- trunk/libc/po/cs.po (original)
+++ trunk/libc/po/cs.po Tue Sep 25 08:22:16 2007
@@ -5,1562 +5,5239 @@
# Thanks to:
# Petr Kolar <Petr.Kolar@xxxxxxxx>
# Stanislav Brabec <utx@xxxxxxxxxxxxxxxxx>, 1998.
+# Petr Pisar <petr.pisar@xxxxxxxx>, 2007.
#
# Describe of some function:
# error(status, errnum, "message") => "progname: message: error_message"
# perror("message") => "message: error_message"
#
# Notes:
-# host, name, hostname - jméno, název, oznaèení?
+# host, name, hostname - jméno, název, oznaÄenÃ?
# Untranslated: netid, nettype
# Translations of "socket" => "soket",
-# byte => bajt, "out of memory" => "nedostatek pamìti"
+# byte => bajt, "out of memory" => "nedostatek pamÄti"
+# collation something => ???
+# ellipsis range => ???
#
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.1.3\n"
-"POT-Creation-Date: 2000-02-16 10:39-0800\n"
-"PO-Revision-Date: 2000-04-18 13:36+02:00\n"
-"Last-Translator: Vladimir Michl <Vladimir.Michl@xxxxxxxxx>\n"
-"Language-Team: Czech <cs@xxxxxx>\n"
+"Project-Id-Version: libc 2.6.1\n"
+"POT-Creation-Date: 2007-08-04 11:37+0200\n"
+"PO-Revision-Date: 2007-08-29 22:15+0200\n"
+"Last-Translator: Petr Pisar <petr.pisar@xxxxxxxx>\n"
+"Language-Team: Czech <translation-team-cs@xxxxxxxxxxxxxxxxxxxxx>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+#: argp/argp-help.c:228
+#, c-format
+msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
+msgstr "%.*s: Parametr ARGP_HELP_FMT vyžaduje hodnotu"
+
+#: argp/argp-help.c:238
+#, c-format
+msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
+msgstr "%.*s: Neznámý parametr ARGP_HELP_FMT"
+
+# Garbage -> nesmysly
+#: argp/argp-help.c:251
+#, c-format
+msgid "Garbage in ARGP_HELP_FMT: %s"
+msgstr "Smetà v ARGP_HELP_FMT: %s"
+
+#: argp/argp-help.c:1215
+msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
+msgstr "Argumenty požadované dlouhými pÅepÃnaÄi jsou také požadovány jejich krátkými formami."
+
+#: argp/argp-help.c:1601
+msgid "Usage:"
+msgstr "PoužitÃ:"
+
+#: argp/argp-help.c:1605
+msgid " or: "
+msgstr " nebo: "
+
+#: argp/argp-help.c:1617
+msgid " [OPTION...]"
+msgstr " [PÅEPÃNAÄâ¦]"
+
+#: argp/argp-help.c:1644
+#, c-format
+msgid "Try `%s --help' or `%s --usage' for more information.\n"
+msgstr "VÃce informacà zÃskáte pÅÃkazy â%s --helpâ nebo â%s --usageâ.\n"
+
+#: argp/argp-help.c:1672
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr ""
+"Chyby v programu oznamujte na adrese %s (pouze anglicky),\n"
+"pÅipomÃnky k pÅekladu zasÃlejte na adresu\n"
+"<translation-team-cs@xxxxxxxxxxxxxxxxxxxxx> (Äesky).\n"
+
+#: argp/argp-parse.c:102
+msgid "Give this help list"
+msgstr "VypÃÅ¡e tuto nápovÄdu"
+
+#: argp/argp-parse.c:103
+msgid "Give a short usage message"
+msgstr "VypÃÅ¡e krátký návod na použitÃ"
+
+#: argp/argp-parse.c:104
+msgid "Set the program name"
+msgstr "Nastavà název programu"
+
+#: argp/argp-parse.c:106
+msgid "Hang for SECS seconds (default 3600)"
+msgstr "PoÄkánà SECS sekund (implicitnÄ 3600)"
+
+#: argp/argp-parse.c:167
+msgid "Print program version"
+msgstr "VypÃÅ¡e oznaÄenà verze programu"
+
+#: argp/argp-parse.c:183
+msgid "(PROGRAM ERROR) No version known!?"
+msgstr "(CHYBA PROGRAMU) Neznámá verze!?"
+
+#: argp/argp-parse.c:623
+#, c-format
+msgid "%s: Too many arguments\n"
+msgstr "%s: PÅÃliÅ¡ mnoho argumentů\n"
+
+#: argp/argp-parse.c:766
+msgid "(PROGRAM ERROR) Option should have been recognized!?"
+msgstr "(CHYBA PROGRAMU) PÅepÃnaÄ mÄl být rozpoznán!?"
+
+#: assert/assert-perr.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
+msgstr "%s%s%s:%u: %s%sNeoÄekávaná chyba: %s.\n"
+
+#: assert/assert.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
+msgstr "%s%s%s:%u: %s%sPÅedpoklad â%sâ nesplnÄn.\n"
+
[... 15714 lines stripped ...]