[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...



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 ...]