[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[commits] r10116 - in /trunk: libc/ libc/bits/ libc/catgets/ libc/csu/ libc/debug/ libc/elf/ libc/iconv/ libc/include/ libc/locale/ li...



Author: joseph
Date: Fri Mar 26 14:08:35 2010
New Revision: 10116

Log:
Merge changes between r10031 and r10115 from /fsf/trunk.

Added:
    trunk/libc/libc-abis
      - copied unchanged from r10115, fsf/trunk/libc/libc-abis
    trunk/libc/posix/bug-glob3.c
      - copied unchanged from r10115, fsf/trunk/libc/posix/bug-glob3.c
    trunk/libc/scripts/gen-libc-abis
      - copied unchanged from r10115, fsf/trunk/libc/scripts/gen-libc-abis
    trunk/libc/sysdeps/unix/sysv/linux/getlogin.c
      - copied unchanged from r10115, fsf/trunk/libc/sysdeps/unix/sysv/linux/getlogin.c
    trunk/libc/sysdeps/unix/sysv/linux/getlogin_r.c
      - copied unchanged from r10115, fsf/trunk/libc/sysdeps/unix/sysv/linux/getlogin_r.c
    trunk/ports/sysdeps/arm/configure
      - copied unchanged from r10115, fsf/trunk/ports/sysdeps/arm/configure
    trunk/ports/sysdeps/arm/configure.in
      - copied unchanged from r10115, fsf/trunk/ports/sysdeps/arm/configure.in
    trunk/ports/sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S
      - copied unchanged from r10115, fsf/trunk/ports/sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S
    trunk/ports/sysdeps/unix/sysv/linux/alpha/bits/socket.h
      - copied unchanged from r10115, fsf/trunk/ports/sysdeps/unix/sysv/linux/alpha/bits/socket.h
    trunk/ports/sysdeps/unix/sysv/linux/alpha/creat.c
      - copied unchanged from r10115, fsf/trunk/ports/sysdeps/unix/sysv/linux/alpha/creat.c
Modified:
    trunk/libc/ChangeLog
    trunk/libc/Makerules
    trunk/libc/bits/time.h
    trunk/libc/catgets/gencat.c
    trunk/libc/csu/gmon-start.c
    trunk/libc/csu/version.c
    trunk/libc/debug/catchsegv.sh
    trunk/libc/debug/xtrace.sh
    trunk/libc/elf/dl-deps.c
    trunk/libc/elf/dl-load.c
    trunk/libc/elf/dl-lookup.c
    trunk/libc/elf/dl-sysdep.c
    trunk/libc/elf/ldconfig.c
    trunk/libc/elf/ldd.bash.in
    trunk/libc/elf/sprof.c
    trunk/libc/iconv/iconv_prog.c
    trunk/libc/iconv/iconvconfig.c
    trunk/libc/include/link.h
    trunk/libc/include/unistd.h
    trunk/libc/locale/programs/locale.c
    trunk/libc/locale/programs/localedef.c
    trunk/libc/locale/programs/simple-hash.c
    trunk/libc/locale/programs/simple-hash.h
    trunk/libc/locale/setlocale.c
    trunk/libc/localedata/ChangeLog
    trunk/libc/localedata/Makefile
    trunk/libc/localedata/locales/et_EE
    trunk/libc/malloc/malloc.c
    trunk/libc/malloc/memusage.sh
    trunk/libc/malloc/mtrace.pl
    trunk/libc/nptl/ChangeLog
    trunk/libc/nptl/pthread_cond_timedwait.c
    trunk/libc/nscd/nscd.c
    trunk/libc/nss/getent.c
    trunk/libc/posix/Makefile
    trunk/libc/posix/getconf.c
    trunk/libc/posix/glob.c
    trunk/libc/posix/tst-gnuglob.c
    trunk/libc/resolv/res_send.c
    trunk/libc/stdio-common/psiginfo.c
    trunk/libc/string/test-memcmp.c
    trunk/libc/sysdeps/generic/ldsodefs.h
    trunk/libc/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
    trunk/libc/sysdeps/posix/cuserid.c
    trunk/libc/sysdeps/posix/getaddrinfo.c
    trunk/libc/sysdeps/unix/getlogin.c
    trunk/libc/sysdeps/unix/getlogin_r.c
    trunk/libc/sysdeps/unix/sysv/linux/clock_getres.c
    trunk/libc/sysdeps/unix/sysv/linux/clock_gettime.c
    trunk/libc/sysdeps/unix/sysv/linux/clock_settime.c
    trunk/libc/sysdeps/unix/sysv/linux/dl-sysdep.c
    trunk/libc/sysdeps/unix/sysv/linux/ldsodefs.h
    trunk/libc/sysdeps/unix/sysv/linux/mmap64.c
    trunk/libc/sysdeps/x86_64/multiarch/strpbrk-c.c
    trunk/libc/wcsmbs/wchar.h
    trunk/libc/wctype/wctype.h
    trunk/ports/ChangeLog.alpha
    trunk/ports/ChangeLog.arm
    trunk/ports/ChangeLog.mips
    trunk/ports/sysdeps/alpha/bits/atomic.h
    trunk/ports/sysdeps/alpha/elf/configure
    trunk/ports/sysdeps/alpha/elf/configure.in
    trunk/ports/sysdeps/alpha/fpu/fegetenv.c
    trunk/ports/sysdeps/arm/dl-trampoline.S
    trunk/ports/sysdeps/arm/eabi/__longjmp.S
    trunk/ports/sysdeps/arm/eabi/arm-mcount.S
    trunk/ports/sysdeps/arm/memcpy.S
    trunk/ports/sysdeps/arm/memmove.S
    trunk/ports/sysdeps/arm/sysdep.h
    trunk/ports/sysdeps/mips/bits/atomic.h
    trunk/ports/sysdeps/mips/dl-lookup.c
    trunk/ports/sysdeps/unix/alpha/sysdep.h
    trunk/ports/sysdeps/unix/arm/sysdep.S
    trunk/ports/sysdeps/unix/sysv/linux/alpha/Versions
    trunk/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
    trunk/ports/sysdeps/unix/sysv/linux/alpha/dl-auxv.h
    trunk/ports/sysdeps/unix/sysv/linux/alpha/dl-sysdep.c
    trunk/ports/sysdeps/unix/sysv/linux/alpha/sys/user.h
    trunk/ports/sysdeps/unix/sysv/linux/arm/clone.S
    trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S
    trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/mmap64.S
    trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h
    trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c
    trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c
    trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/sigrestorer.S
    trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/syscall.S
    trunk/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h
    trunk/ports/sysdeps/unix/sysv/linux/arm/mmap.S
    trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S
    trunk/ports/sysdeps/unix/sysv/linux/arm/nptl/vfork.S
    trunk/ports/sysdeps/unix/sysv/linux/arm/sysdep.h

Modified: trunk/libc/ChangeLog
==============================================================================
--- trunk/libc/ChangeLog (original)
+++ trunk/libc/ChangeLog Fri Mar 26 14:08:35 2010
@@ -1,3 +1,180 @@
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdeps/generic/ldsodefs.h (_dl_random): Mark attribute_relro;
+
+	* stdio-common/psiginfo.c (psiginfo): Fix printf format
+	warning for si_band.
+
+	* locale/setlocale.c (free_category): Finish renaming
+	struct locale_data to __locale_data.
+
+	* csu/gmon-start.c (ENTRY_POINT, etext): Declare as char[], not void.
+	* elf/dl-sysdep.c (_end): Likewise.
+	* sysdeps/unix/sysv/dl-sysdep.c (frob_brk): Likewise with locally
+	declared _end, and associated variables.
+
+2010-03-26  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Don't assume success always
+	means aborting the loop over the NSS methods.
+
+2010-03-25  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Reset no_data before
+	each action.
+
+2010-03-26  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* malloc/malloc.c: Remove stale reference to website.
+
+2010-03-24  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #11389]
+	* bits/time.h: Define CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, and
+	CLOCK_MONOTONIC_COARSE.
+	* sysdeps/unix/sysv/linux/clock_getres.c: Handle CLOCK_MONOTONIC_RAW,
+	CLOCK_REALTIME_COARSE, and CLOCK_MONOTONIC_COARSE.
+	* sysdeps/unix/sysv/linux/clock_gettime.c: Likewise.
+	* sysdeps/unix/sysv/linux/clock_settime.c: Likewise.
+
+2010-03-25  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	* sysdeps/posix/cuserid.c: Fix typo.
+
+2010-03-16  Chris Demetriou  <cgd@xxxxxxxxxx>
+
+	[BZ #11394]
+	* locale/programs/simple-hash.c: Include inttypes.h.
+	(hashval_t): Defined to be uint32_t.
+	* locale/programs/simple_hash.h: Include inttypes.h.
+	(compute_hashval): Change return type to uint32_t.
+
+2010-03-24  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/getlogin_r.c: New file.
+	* sysdeps/unix/sysv/linux/getlogin.c: New file.
+	* sysdeps/unix/getlogin_r.c: Allow compiling getlogin as static
+	function.
+	* sysdeps/unix/getlogin.c: Likewise.  Move name variable to toplevel.
+	* include/unistd.h: Declare __getlogin_r_loginuid.
+
+	[BZ #11397]
+	* sysdeps/posix/cuserid.c (cuserid): Make sure the returned string
+	is NUL terminated.
+	Patch by Jonathan Geisler <jgeisler@xxxxxxxxxxxxxx>.
+
+	* sysdeps/unix/sysv/linux/mmap64.c: Allow variable shift values.
+
+2010-03-24  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	* sysdeps/x86_64/multiarch/strpbrk-c.c: Define only if SHARED
+	is defined.
+
+2010-03-22  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	* string/test-memcmp.c (check_result): New function.
+	(do_one_test): Use it.
+	(check1): New function.
+	(test_main): Use it.
+
+2010-03-24  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* posix/tst-gnuglob.c: Add tests with empty patterns.  For this
+	rewrite the tests to add support for failing glob calls.
+	Some other minor cleanups.
+	* posix/bug-glob3.c: New file.
+	* posix/Makefile (tests): Add bug-glob3.
+
+2010-03-24  Ulrich Drepper  <drepper@xxxxxxxxxx>
+	    Andreas Schwab  <andreas@xxxxxxxxxx>
+
+	* posix/glob.c (glob): Clean up gl_pathc and gl_pathv earlier.
+	If pattern is "" bail out early
+
+2010-03-23  Jakub Jelinek  <jakub@xxxxxxxxxx>
+
+	* elf/dl-lookup.c (do_lookup_x): If tab->entries is NULL,
+	but tab->size != 0, just unlock and goto success, without
+	allocating anything or entering anything into the hash table.
+	(_dl_debug_bindings): Temporarily set tab->entries to NULL
+	around do_lookup_x in undef_map->l_local_scope[0].  If
+	undef_map->l_symbolic_in_local_scope, lookup also in
+	symbolic_searchlist of following libraries in l_local_scope
+	that have DT_SYMBOLIC set.
+	* elf/dl-deps.c (_dl_map_object_deps): Compute
+	l_symbolic_in_local_scope.
+	* include/link.h (struct link_map): Add l_symbolic_in_local_scope
+	bitfield.
+
+2010-03-24  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #11410]
+	* wctype/wctype.h: Use <wchar.h> to get the wint_t definition.
+
+	* wcsmbs/wchar.h: Correct preprocessor directive indentation.  Move
+	C++ prototype handling to a better place.
+
+2010-03-18  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* elf/dl-load.c (open_verify): Extend expected to the full size of the
+	e_ident array.  When loading, check that the fields in e_ident we don't
+	know are zero to allow future extensions.
+
+2010-03-18  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	* sysdeps/i386/i686/multiarch/memcmp-ssse3.S: Update %xmm3
+	when exit from loop.
+
+2010-03-16  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	* resolv/res_send.c (__libc_res_nsend): Fix printing of server
+	address in debug statement.
+	(send_dg): Pass correct buffer pointer to DprintQ.
+
+2010-03-17  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* libc-abis: Add a few more entries.
+
+2010-03-16  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* elf/dl-load.c (VALID_ELF_ABIVERSION): Add additional osabi parameter.
+	Not used here.
+	(open_verify): Modify for extended VALID_ELF_ABIVERSION macro
+	interface.
+	* sysdeps/unix/sysv/linux/ldsodefs.h (VALID_ELF_ABIVERSION): Add
+	additional osabi parameter.  Only acceept nonzero ABI versions if osabi
+	is Linux.
+	Fix includes.
+	(expected2): Don't explicitly initialize EI_ABIVERSION byte.
+
+	* sysdeps/unix/sysv/linux/ldsodefs.h (VALID_ELF_ABIVERSION): Update
+	definition to follow generic code.
+
+2010-03-15  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* posix/getconf.c: Update copyright year.
+	* nss/getent.c: Likewise.
+	* iconv/iconvconfig.c: Likewise.
+	* iconv/iconv_prog.c: Likewise.
+	* elf/ldconfig.c: Likewise.
+	* catgets/gencat.c: Likewise.
+	* csu/version.c: Likewise.
+	* elf/ldd.bash.in: Likewise.
+	* elf/sprof.c (print_version): Likewise.
+	* locale/programs/locale.c: Likewise.
+	* locale/programs/localedef.c: Likewise.
+	* nscd/nscd.c (print_version): Likewise.
+	* debug/xtrace.sh: Likewise.
+	* malloc/memusage.sh: Likewise.
+	* malloc/mtrace.pl: Likewise.
+	* debug/catchsegv.sh: Likewise.
+
+	* Makerules: Add rule for libc-abis.h.
+	* csu/version.c: Use LIBC_ABIS_STRING string if available.
+	* elf/dl-load.c (VALID_ELF_ABIVERSION): Check using LIBC_ABI_MAX.
+	(open_verify): Only check EI_ABIVERSION bytes using VALID_ELF_HEADER.
+	Add extra call to VALID_ELF_ABIVERSION.
+
 2010-03-12  Ulrich Drepper  <drepper@xxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/sys/mount.h (UMOUNT_NOFOLLOW): Define.

Modified: trunk/libc/Makerules
==============================================================================
--- trunk/libc/Makerules (original)
+++ trunk/libc/Makerules Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2006,2007,2008,2009 Free Software Foundation, Inc.
+# Copyright (C) 1991-2006,2007,2008,2009,2010 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -109,6 +109,18 @@
 abi_versions_file := $(common-objpfx)abi-versions.h
 endif # avoid-generated
 endif # $(versioning) = yes
+
+ifndef avoid-generated
+before-compile := $(common-objpfx)libc-abis.h $(before-compile)
+libc-abis := $(firstword $(wildcard $(foreach D,$(add-ons), $(..)libc-abis)) \
+			 libc-abis)
+$(common-objpfx)libc-abis.h: $(..)scripts/gen-libc-abis $(libc-abis)
+	$(SHELL) $(..)scripts/gen-libc-abis \
+		 $(base-machine)-$(config-vendor)-$(config-os) \
+		 < $(libc-abis) > $@T
+	$(move-if-change) $@T $@
+common-generated += $(common-objpfx)libc-abis.h
+endif # avoid-generated
 
 # Make sure the subdirectory for object files gets created.
 ifdef objpfx
@@ -1461,7 +1473,7 @@
 ifneq (,$(strip $(objs-for-stubs)))
 	(cd $(objpfx).; $(OBJDUMP) -h $(patsubst $(objpfx)%,%,$^)) | \
 	$(AWK) '/\.gnu\.glibc-stub\./ { \
-	          sub(/\.gnu\.glibc-stub\./, "", $$2); \
+		  sub(/\.gnu\.glibc-stub\./, "", $$2); \
 		  stubs[$$2] = 1; } \
 		END { for (s in stubs) print "#define __stub_" s }' > $@T
 	mv -f $@T $@

Modified: trunk/libc/bits/time.h
==============================================================================
--- trunk/libc/bits/time.h (original)
+++ trunk/libc/bits/time.h Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* System-dependent timing definitions.  Generic version.
-   Copyright (C) 1996,1997,1999-2002,2003 Free Software Foundation, Inc.
+   Copyright (C) 1996,1997,1999-2002,2003,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -50,6 +50,12 @@
 #   define CLOCK_PROCESS_CPUTIME_ID	2
 /* Thread-specific CPU-time clock.  */
 #   define CLOCK_THREAD_CPUTIME_ID	3
+/* Monotonic system-wide clock, not adjusted for frequency scaling.  */
+#   define CLOCK_MONOTONIC_RAW		4
+/* Identifier for system-wide realtime clock, updated only on ticks.  */
+#   define CLOCK_REALTIME_COARSE	5
+/* Monotonic system-wide clock, updated only on ticks.  */
+#   define CLOCK_MONOTONIC_COARSE	6
 
 /* Flag to indicate time is absolute.  */
 #   define TIMER_ABSTIME		1

Modified: trunk/libc/catgets/gencat.c
==============================================================================
--- trunk/libc/catgets/gencat.c (original)
+++ trunk/libc/catgets/gencat.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1996.
 
@@ -250,7 +250,7 @@
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2009");
+"), "2010");
   fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
 }
 

Modified: trunk/libc/csu/gmon-start.c
==============================================================================
--- trunk/libc/csu/gmon-start.c (original)
+++ trunk/libc/csu/gmon-start.c Fri Mar 26 14:08:35 2010
@@ -31,9 +31,9 @@
 #ifdef ENTRY_POINT_DECL
 ENTRY_POINT_DECL(extern)
 #else
-extern void ENTRY_POINT;
+extern char ENTRY_POINT[];
 #endif
-extern void etext;
+extern char etext[];
 
 #ifndef TEXT_START
 # ifdef ENTRY_POINT_DECL

Modified: trunk/libc/csu/version.c
==============================================================================
--- trunk/libc/csu/version.c (original)
+++ trunk/libc/csu/version.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -18,6 +18,7 @@
 
 #include "version.h"
 #include <tls.h>
+#include <libc-abis.h>
 #include <gnu/libc-version.h>
 
 static const char __libc_release[] = RELEASE;
@@ -25,12 +26,15 @@
 
 static const char banner[] =
 "GNU C Library "PKGVERSION RELEASE" release version "VERSION", by Roland McGrath et al.\n\
-Copyright (C) 2009 Free Software Foundation, Inc.\n\
+Copyright (C) 2010 Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.\n\
 There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
 PARTICULAR PURPOSE.\n\
 Compiled by GNU CC version "__VERSION__".\n"
 #include "version-info.h"
+#ifdef LIBC_ABIS_STRING
+LIBC_ABIS_STRING
+#endif
 #ifdef GLIBC_OLDEST_ABI
 "The oldest ABI supported: " GLIBC_OLDEST_ABI ".\n"
 #endif

Modified: trunk/libc/debug/catchsegv.sh
==============================================================================
--- trunk/libc/debug/catchsegv.sh (original)
+++ trunk/libc/debug/catchsegv.sh Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1998,1999,2001,2003,2004,2006,2007,2008,2009
+# Copyright (C) 1998,1999,2001,2003,2004,2006,2007,2008,2009,2010
 # Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 # Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1998.
@@ -40,7 +40,7 @@
       ;;
     --v | --ve | --ver | --vers | --versi | --versio | --version)
       echo 'catchsegv @PKGVERSION@@VERSION@'
-      echo 'Copyright (C) 2009 Free Software Foundation, Inc.
+      echo 'Copyright (C) 2010 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 Written by Ulrich Drepper.'
@@ -97,7 +97,7 @@
 	      echo "$line"
 	    fi
 	    ;;
-         *) echo "$line"
+	 *) echo "$line"
 	    ;;
      esac
    done)

Modified: trunk/libc/debug/xtrace.sh
==============================================================================
--- trunk/libc/debug/xtrace.sh (original)
+++ trunk/libc/debug/xtrace.sh Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 #! @BASH@
-# Copyright (C) 1999, 2001-2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2001-2008, 2009, 2010 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 # Contributed by Ulrich Drepper <drepper@xxxxxxx>, 1999.
 
@@ -66,7 +66,7 @@
   printf $"Copyright (C) %s Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-" "2009"
+" "2010"
   printf $"Written by %s.
 " "Ulrich Drepper"
   exit 0

Modified: trunk/libc/elf/dl-deps.c
==============================================================================
--- trunk/libc/elf/dl-deps.c (original)
+++ trunk/libc/elf/dl-deps.c Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* Load the dependencies of a mapped object.
-   Copyright (C) 1996-2003, 2004, 2005, 2006, 2007
+   Copyright (C) 1996-2003, 2004, 2005, 2006, 2007, 2010
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -554,7 +554,12 @@
 	  cnt = _dl_build_local_scope (l_initfini, l);
 	  assert (cnt <= nlist);
 	  for (j = 0; j < cnt; j++)
-	    l_initfini[j]->l_reserved = 0;
+	    {
+	      l_initfini[j]->l_reserved = 0;
+	      if (j && __builtin_expect (l_initfini[j]->l_info[DT_SYMBOLIC]
+					 != NULL, 0))
+		l->l_symbolic_in_local_scope = true;
+	    }
 
 	  l->l_local_scope[0] =
 	    (struct r_scope_elem *) malloc (sizeof (struct r_scope_elem)

Modified: trunk/libc/elf/dl-load.c
==============================================================================
--- trunk/libc/elf/dl-load.c (original)
+++ trunk/libc/elf/dl-load.c Fri Mar 26 14:08:35 2010
@@ -1569,11 +1569,11 @@
 #ifndef VALID_ELF_HEADER
 # define VALID_ELF_HEADER(hdr,exp,size)	(memcmp (hdr, exp, size) == 0)
 # define VALID_ELF_OSABI(osabi)		(osabi == ELFOSABI_SYSV)
-# define VALID_ELF_ABIVERSION(ver)	(ver == 0)
+# define VALID_ELF_ABIVERSION(osabi,ver) (ver == 0)
 #elif defined MORE_ELF_HEADER_DATA
   MORE_ELF_HEADER_DATA;
 #endif
-  static const unsigned char expected[EI_PAD] =
+  static const unsigned char expected[EI_NIDENT] =
   {
     [EI_MAG0] = ELFMAG0,
     [EI_MAG1] = ELFMAG1,
@@ -1655,7 +1655,13 @@
 
       /* See whether the ELF header is what we expect.  */
       if (__builtin_expect (! VALID_ELF_HEADER (ehdr->e_ident, expected,
-						EI_PAD), 0))
+						EI_ABIVERSION)
+			    || !VALID_ELF_ABIVERSION (ehdr->e_ident[EI_OSABI],
+						      ehdr->e_ident[EI_ABIVERSION])
+			    || memcmp (&ehdr->e_ident[EI_PAD],
+				       &expected[EI_PAD],
+				       EI_NIDENT - EI_PAD) != 0,
+			    0))
 	{
 	  /* Something is wrong.  */
 	  const Elf32_Word *magp = (const void *) ehdr->e_ident;
@@ -1695,8 +1701,12 @@
 	     allowed here.  */
 	  else if (!VALID_ELF_OSABI (ehdr->e_ident[EI_OSABI]))
 	    errstring = N_("ELF file OS ABI invalid");
-	  else if (!VALID_ELF_ABIVERSION (ehdr->e_ident[EI_ABIVERSION]))
+	  else if (!VALID_ELF_ABIVERSION (ehdr->e_ident[EI_OSABI],
+					  ehdr->e_ident[EI_ABIVERSION]))
 	    errstring = N_("ELF file ABI version invalid");
+	  else if (memcmp (&ehdr->e_ident[EI_PAD], &expected[EI_PAD],
+			   EI_NIDENT - EI_PAD) != 0)
+	    errstring = N_("nonzero padding in e_ident");
 	  else
 	    /* Otherwise we don't know what went wrong.  */
 	    errstring = N_("internal error");

Modified: trunk/libc/elf/dl-lookup.c
==============================================================================
--- trunk/libc/elf/dl-lookup.c (original)
+++ trunk/libc/elf/dl-lookup.c Fri Mar 26 14:08:35 2010
@@ -1,5 +1,6 @@
 /* Look up a symbol in the loaded objects.
-   Copyright (C) 1995-2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1995-2005, 2006, 2007, 2009, 2010
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -414,6 +415,20 @@
 		  assert (!RTLD_CHECK_FOREIGN_CALL);
 #endif
 
+#ifdef SHARED
+		  /* If tab->entries is NULL, but tab->size is not, it means
+		     this is the second, conflict finding, lookup for
+		     LD_TRACE_PRELINKING in _dl_debug_bindings.  Don't
+		     allocate anything and don't enter anything into the
+		     hash table.  */
+		  if (__builtin_expect (tab->size, 0))
+		    {
+		      assert (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK);
+		      __rtld_lock_unlock_recursive (tab->lock);
+		      goto success;
+		    }
+#endif
+
 #define INITIAL_NUNIQUE_SYM_TABLE 31
 		  size = INITIAL_NUNIQUE_SYM_TABLE;
 		  entries = calloc (sizeof (struct unique_sym), size);
@@ -917,13 +932,48 @@
 	{
 	  const uint_fast32_t new_hash = dl_new_hash (undef_name);
 	  unsigned long int old_hash = 0xffffffff;
-
+	  struct unique_sym *saved_entries
+	    = GL(dl_ns)[LM_ID_BASE]._ns_unique_sym_table.entries;
+
+	  GL(dl_ns)[LM_ID_BASE]._ns_unique_sym_table.entries = NULL;
 	  do_lookup_x (undef_name, new_hash, &old_hash, *ref, &val,
 		       undef_map->l_local_scope[0], 0, version, 0, NULL,
 		       type_class, undef_map);
-
 	  if (val.s != value->s || val.m != value->m)
 	    conflict = 1;
+	  else if (__builtin_expect (undef_map->l_symbolic_in_local_scope, 0)
+		   && val.s
+		   && __builtin_expect (ELFW(ST_BIND) (val.s->st_info),
+					STB_GLOBAL) == STB_GNU_UNIQUE)
+	    {
+	      /* If it is STB_GNU_UNIQUE and undef_map's l_local_scope
+		 contains any DT_SYMBOLIC libraries, unfortunately there
+		 can be conflicts even if the above is equal.  As symbol
+		 resolution goes from the last library to the first and
+		 if a STB_GNU_UNIQUE symbol is found in some late DT_SYMBOLIC
+		 library, it would be the one that is looked up.  */
+	      struct sym_val val2 = { NULL, NULL };
+	      size_t n;
+	      struct r_scope_elem *scope = undef_map->l_local_scope[0];
+
+	      for (n = 0; n < scope->r_nlist; n++)
+		if (scope->r_list[n] == val.m)
+		  break;
+
+	      for (n++; n < scope->r_nlist; n++)
+		if (scope->r_list[n]->l_info[DT_SYMBOLIC] != NULL
+		    && do_lookup_x (undef_name, new_hash, &old_hash, *ref,
+				    &val2,
+				    &scope->r_list[n]->l_symbolic_searchlist,
+				    0, version, 0, NULL, type_class,
+				    undef_map) > 0)
+		  {
+		    conflict = 1;
+		    val = val2;
+		    break;
+		  }
+	    }
+	  GL(dl_ns)[LM_ID_BASE]._ns_unique_sym_table.entries = saved_entries;
 	}
 
       if (value->s)

Modified: trunk/libc/elf/dl-sysdep.c
==============================================================================
--- trunk/libc/elf/dl-sysdep.c (original)
+++ trunk/libc/elf/dl-sysdep.c Fri Mar 26 14:08:35 2010
@@ -47,7 +47,7 @@
 #endif
 
 extern char **_environ attribute_hidden;
-extern void _end attribute_hidden;
+extern char _end[] attribute_hidden;
 
 /* Protect SUID program against misuse of file descriptors.  */
 extern void __libc_check_standard_fds (void);
@@ -226,14 +226,14 @@
   if (GLRO(dl_platform) != NULL)
     GLRO(dl_platformlen) = strlen (GLRO(dl_platform));
 
-  if (__sbrk (0) == &_end)
+  if (__sbrk (0) == _end)
     /* The dynamic linker was run as a program, and so the initial break
        starts just after our bss, at &_end.  The malloc in dl-minimal.c
        will consume the rest of this page, so tell the kernel to move the
        break up that far.  When the user program examines its break, it
        will see this new value and not clobber our data.  */
     __sbrk (GLRO(dl_pagesize)
-	    - ((&_end - (void *) 0) & (GLRO(dl_pagesize) - 1)));
+	    - ((_end - (char *) 0) & (GLRO(dl_pagesize) - 1)));
 
   /* If this is a SUID program we make sure that FDs 0, 1, and 2 are
      allocated.  If necessary we are doing it ourself.  If it is not

Modified: trunk/libc/elf/ldconfig.c
==============================================================================
--- trunk/libc/elf/ldconfig.c (original)
+++ trunk/libc/elf/ldconfig.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@xxxxxxx>, 1999.
 
@@ -320,7 +320,7 @@
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2009");
+"), "2010");
   fprintf (stream, gettext ("Written by %s.\n"),
 	   "Andreas Jaeger");
 }

Modified: trunk/libc/elf/ldd.bash.in
==============================================================================
--- trunk/libc/elf/ldd.bash.in (original)
+++ trunk/libc/elf/ldd.bash.in Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 #! @BASH@
-# Copyright (C) 1996-2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2008, 2009, 2010 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -39,7 +39,7 @@
     printf $"Copyright (C) %s Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-" "2009"
+" "2010"
     printf $"Written by %s and %s.
 " "Roland McGrath" "Ulrich Drepper"
     exit 0
@@ -160,7 +160,7 @@
     for rtld in ${RTLDLIST}; do
       if test -x $rtld; then
 	verify_out=`${rtld} --verify "$file"`
-        ret=$?
+	ret=$?
 	case $ret in
 	[02]) RTLD=${rtld}; break;;
 	esac

Modified: trunk/libc/elf/sprof.c
==============================================================================
--- trunk/libc/elf/sprof.c (original)
+++ trunk/libc/elf/sprof.c Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* Read and display shared object profiling data.
-   Copyright (C) 1997-2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1997-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
 
@@ -261,7 +261,7 @@
     {
       /* We need exactly two non-option parameter.  */
       argp_help (&argp, stdout, ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR,
-                 program_invocation_short_name);
+		 program_invocation_short_name);
       exit (1);
     }
 
@@ -391,7 +391,7 @@
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
 "),
-	   "2009");
+	   "2010");
   fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
 }
 

Modified: trunk/libc/iconv/iconv_prog.c
==============================================================================
--- trunk/libc/iconv/iconv_prog.c (original)
+++ trunk/libc/iconv/iconv_prog.c Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* Convert text in given files from the specified from-set to the to-set.
-   Copyright (C) 1998-2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1998-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1998.
 
@@ -435,7 +435,7 @@
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2009");
+"), "2010");
   fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
 }
 
@@ -512,7 +512,7 @@
       if (n != (size_t) -1)
 	{
 	  /* All the input test is processed.  For state-dependent
-             character sets we have to flush the state now.  */
+	     character sets we have to flush the state now.  */
 	  outptr = outbuf;
 	  outlen = OUTBUF_SIZE;
 	  n = iconv (cd, NULL, NULL, &outptr, &outlen);

Modified: trunk/libc/iconv/iconvconfig.c
==============================================================================
--- trunk/libc/iconv/iconvconfig.c (original)
+++ trunk/libc/iconv/iconvconfig.c Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* Generate fastloading iconv module configuration files.
-   Copyright (C) 2000-2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2000-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2000.
 
@@ -399,7 +399,7 @@
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2009");
+"), "2010");
   fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
 }
 
@@ -996,24 +996,24 @@
    stoff    ???          String table
 
    hoff     8*hsize      Array of tuples
-                            string table offset
-                            module index
+			    string table offset
+			    module index
 
    moff     ???          Array of tuples
-                            canonical name offset
-                            from-internal module dir name offset
-                            from-internal module name off
-                            to-internal module dir name offset
-                            to-internal module name offset
-                            offset into other conversion table
+			    canonical name offset
+			    from-internal module dir name offset
+			    from-internal module name off
+			    to-internal module dir name offset
+			    to-internal module name offset
+			    offset into other conversion table
 
    ooff     ???          One or more of
-                            number of steps/modules
-                            one or more of tuple
-                              canonical name offset for output
-                              module dir name offset
-                              module name offset
-                         (following last entry with step count 0)
+			    number of steps/modules
+			    one or more of tuple
+			      canonical name offset for output
+			      module dir name offset
+			      module name offset
+			 (following last entry with step count 0)
 */
 
 static struct hash_entry *hash_table;

Modified: trunk/libc/include/link.h
==============================================================================
--- trunk/libc/include/link.h (original)
+++ trunk/libc/include/link.h Fri Mar 26 14:08:35 2010
@@ -1,6 +1,6 @@
 /* Data structure for communication from the run-time dynamic linker for
    loaded ELF shared objects.
-   Copyright (C) 1995-2006, 2007, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1995-2006, 2007, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -188,6 +188,10 @@
     unsigned int l_contiguous:1; /* Nonzero if inter-segment holes are
 				    mprotected or if no holes are present at
 				    all.  */
+    unsigned int l_symbolic_in_local_scope:1; /* Nonzero if l_local_scope
+						 during LD_TRACE_PRELINKING=1
+						 contains any DT_SYMBOLIC
+						 libraries.  */
 
     /* Collected information about own RPATH directories.  */
     struct r_search_path_struct l_rpath_dirs;

Modified: trunk/libc/include/unistd.h
==============================================================================
--- trunk/libc/include/unistd.h (original)
+++ trunk/libc/include/unistd.h Fri Mar 26 14:08:35 2010
@@ -176,6 +176,9 @@
    unless it is really necessary.  */
 #define __have_pipe2 __have_sock_cloexec
 
+extern int __getlogin_r_loginuid (char *name, size_t namesize)
+     attribute_hidden;
+
 __END_DECLS
 
 #endif

Modified: trunk/libc/locale/programs/locale.c
==============================================================================
--- trunk/libc/locale/programs/locale.c (original)
+++ trunk/libc/locale/programs/locale.c Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* Implementation of the locale program according to POSIX 9945-2.
-   Copyright (C) 1995-1997, 1999-2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1995-1997, 1999-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1995.
 
@@ -144,7 +144,7 @@
 #define DEFINE_CATEGORY(category, name, items, postload) \
     static struct cat_item category##_desc[] =				      \
       {									      \
-        NO_PAREN items							      \
+	NO_PAREN items							      \
       };
 
 #include "categories.def"
@@ -297,7 +297,7 @@
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2009");
+"), "2010");
   fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
 }
 
@@ -542,7 +542,7 @@
 	     because
 	     a) we are only interested in the first two fields
 	     b) these fields must be usable as file names and so must
-	        not be that long  */
+		not be that long  */
 	  char buf[BUFSIZ];
 	  char *alias;
 	  char *value;
@@ -889,7 +889,7 @@
 	    while (cnt > 1)
 	      {
 		printf ("%d;", *val == '\177' ? -1 : *val);
-                --cnt;
+		--cnt;
 		++val;
 	      }
 

Modified: trunk/libc/locale/programs/localedef.c
==============================================================================
--- trunk/libc/locale/programs/localedef.c (original)
+++ trunk/libc/locale/programs/localedef.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1995.
 
@@ -384,8 +384,8 @@
       /* We print some extra information.  */
       if (asprintf (&cp, gettext ("\
 System's directory for character maps : %s\n\
-                       repertoire maps: %s\n\
-                       locale path    : %s\n\
+		       repertoire maps: %s\n\
+		       locale path    : %s\n\
 %s"),
 		    CHARMAP_PATH, REPERTOIREMAP_PATH, LOCALE_PATH, gettext ("\
 For bug reporting instructions, please see:\n\
@@ -407,7 +407,7 @@
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2009");
+"), "2010");
   fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
 }
 

Modified: trunk/libc/locale/programs/simple-hash.c
==============================================================================
--- trunk/libc/locale/programs/simple-hash.c (original)
+++ trunk/libc/locale/programs/simple-hash.c Fri Mar 26 14:08:35 2010
@@ -21,6 +21,7 @@
 # include <config.h>
 #endif
 
+#include <inttypes.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -49,6 +50,7 @@
 # define bcopy(s, d, n)	memcpy ((d), (s), (n))
 #endif
 
+#define hashval_t uint32_t
 #include "hashval.h"
 
 extern void *xmalloc (size_t __n);

Modified: trunk/libc/locale/programs/simple-hash.h
==============================================================================
--- trunk/libc/locale/programs/simple-hash.h (original)
+++ trunk/libc/locale/programs/simple-hash.h Fri Mar 26 14:08:35 2010
@@ -19,6 +19,7 @@
 #ifndef _SIMPLE_HASH_H
 #define _SIMPLE_HASH_H
 
+#include <inttypes.h>
 #include <obstack.h>
 
 typedef struct hash_table
@@ -45,7 +46,7 @@
 			  const void **key, size_t *keylen, void **data)
      __THROW;
 
-extern unsigned long int compute_hashval (const void *key, size_t keylen)
+extern uint32_t compute_hashval (const void *key, size_t keylen)
      __THROW;
 extern unsigned long int next_prime (unsigned long int seed) __THROW;
 

Modified: trunk/libc/locale/setlocale.c
==============================================================================
--- trunk/libc/locale/setlocale.c (original)
+++ trunk/libc/locale/setlocale.c Fri Mar 26 14:08:35 2010
@@ -435,7 +435,7 @@
 
 static void __libc_freeres_fn_section
 free_category (int category,
-	       struct __locale_data *here, struct locale_data *c_data)
+	       struct __locale_data *here, struct __locale_data *c_data)
 {
   struct loaded_l10nfile *runp = _nl_locale_file_list[category];
 
@@ -451,7 +451,7 @@
   while (runp != NULL)
     {
       struct loaded_l10nfile *curr = runp;
-      struct __locale_data *data = (struct locale_data *) runp->data;
+      struct __locale_data *data = (struct __locale_data *) runp->data;
 
       if (data != NULL && data != c_data)
 	_nl_unload_locale (data);

Modified: trunk/libc/localedata/ChangeLog
==============================================================================
--- trunk/libc/localedata/ChangeLog (original)
+++ trunk/libc/localedata/ChangeLog Fri Mar 26 14:08:35 2010
@@ -1,3 +1,13 @@
+2010-03-24  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #10554]
+	* locales/et_EE: Change first_weekday and first_workday.
+	Patch by Priit Laes <plaes@xxxxxxxxx>.
+
+2010-02-16  Paul Pluzhnikov  <ppluzhnikov@xxxxxxxxxx>
+
+	* Makefile: Add missing gconv-modules dependency.
+
 2010-02-03  Ulrich Drepper  <drepper@xxxxxxxxxx>
 
 	[BZ #10414]

Modified: trunk/libc/localedata/Makefile
==============================================================================
--- trunk/libc/localedata/Makefile (original)
+++ trunk/libc/localedata/Makefile Fri Mar 26 14:08:35 2010
@@ -121,6 +121,8 @@
 install-others := $(addprefix $(inst_i18ndir)/, \
 			      $(addsuffix .gz, $(charmaps)) \
 			      $(locales))
+
+tests: $(objdir)/iconvdata/gconv-modules
 
 include ../Rules
 
@@ -327,3 +329,6 @@
 		LOCPATH=$(common-objpfx)localedata
 $(objpfx)mtrace-tst-leaks: $(objpfx)tst-leaks.out
 	$(common-objpfx)malloc/mtrace $(objpfx)tst-leaks.mtrace > $@
+
+$(objdir)/iconvdata/gconv-modules:
+	$(MAKE) -C ../iconvdata subdir=iconvdata $@

Modified: trunk/libc/localedata/locales/et_EE
==============================================================================
--- trunk/libc/localedata/locales/et_EE (original)
+++ trunk/libc/localedata/locales/et_EE Fri Mar 26 14:08:35 2010
@@ -209,7 +209,7 @@
 % letter;accent;case;specials
 
 order_start forward;backward/
-            ;forward;position
+	    ;forward;position
 
 % <CAPITAL> or <SMALL> letters first:
 
@@ -2197,8 +2197,8 @@
 <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
 <U0025><U005A><U0020><U0025><U0059>"
 week    7;19971130;4
-first_weekday 1
-first_workday 1
+first_weekday 2
+first_workday 2
 END LC_TIME
 
 LC_MESSAGES
@@ -2232,12 +2232,12 @@
 
 LC_ADDRESS
 postal_fmt      "<U0025><U0061><U0025><U004E>/
-                 <U0025><U0066><U0025><U004E>/
-                 <U0025><U0064><U0025><U004E>/
-                 <U0025><U0062><U0025><U004E>/
-                 <U0025><U0073><U0025><U0074><U0025><U0068><U0025><U0074><U0025><U0065><U0025><U0074><U0025><U0072><U0025><U004E>/
-                 <U0025><U0043><U002D><U0025><U007A><U0020><U0025><U0054><U0025><U004E>/
-                 <U0025><U0063><U0025><U004E>"
+		 <U0025><U0066><U0025><U004E>/
+		 <U0025><U0064><U0025><U004E>/
+		 <U0025><U0062><U0025><U004E>/
+		 <U0025><U0073><U0025><U0074><U0025><U0068><U0025><U0074><U0025><U0065><U0025><U0074><U0025><U0072><U0025><U004E>/
+		 <U0025><U0043><U002D><U0025><U007A><U0020><U0025><U0054><U0025><U004E>/
+		 <U0025><U0063><U0025><U004E>"
 country_name    "<U0045><U0065><U0073><U0074><U0069>"
 country_post    "<U0045><U0045>"
 country_ab2     "<U0045><U0045>"

Modified: trunk/libc/malloc/malloc.c
==============================================================================
--- trunk/libc/malloc/malloc.c (original)
+++ trunk/libc/malloc/malloc.c Fri Mar 26 14:08:35 2010
@@ -148,8 +148,7 @@
   Thread-safety: thread-safe unless NO_THREADS is defined
 
   Compliance: I believe it is compliant with the 1997 Single Unix Specification
-       (See http://www.opennc.org). Also SVID/XPG, ANSI C, and probably
-       others as well.
+       Also SVID/XPG, ANSI C, and probably others as well.
 
 * Synopsis of compile-time options:
 

Modified: trunk/libc/malloc/memusage.sh
==============================================================================
--- trunk/libc/malloc/memusage.sh (original)
+++ trunk/libc/malloc/memusage.sh Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 #! @BASH@
-# Copyright (C) 1999-2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1999-2008, 2009, 2010 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 # Contributed by Ulrich Drepper <drepper@xxxxxxx>, 1999.
 
@@ -73,7 +73,7 @@
   printf $"Copyright (C) %s Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-" "2009"
+" "2010"
   printf $"Written by %s.
 " "Ulrich Drepper"
   exit 0
@@ -99,9 +99,9 @@
     ;;
   --us | --usa | --usag | --usage)
     echo $"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]
-            [--buffer=SIZE] [--no-timer] [--time-based] [--total]
-            [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]
-            PROGRAM [PROGRAMOPTION]..."
+	    [--buffer=SIZE] [--no-timer] [--time-based] [--total]
+	    [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]
+	    PROGRAM [PROGRAMOPTION]..."
     exit 0
     ;;
   -n | --pr | --pro | --prog | --progn | --progna | --prognam | --progname)

Modified: trunk/libc/malloc/mtrace.pl
==============================================================================
--- trunk/libc/malloc/mtrace.pl (original)
+++ trunk/libc/malloc/mtrace.pl Fri Mar 26 14:08:35 2010
@@ -1,7 +1,7 @@
 #! @PERL@
 eval "exec @PERL@ -S $0 $@"
     if 0;
-# Copyright (C) 1997-2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1997-2008, 2009, 2010 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 # Contributed by Ulrich Drepper <drepper@xxxxxxx>, 1997.
 # Based on the mtrace.awk script.
@@ -46,7 +46,7 @@
 	$ARGV[0] eq "--vers" || $ARGV[0] eq "--versi" ||
 	$ARGV[0] eq "--versio" || $ARGV[0] eq "--version") {
 	print "mtrace $PKGVERSION$VERSION\n";
-	print "Copyright (C) 2009 Free Software Foundation, Inc.\n";
+	print "Copyright (C) 2010 Free Software Foundation, Inc.\n";
 	print "This is free software; see the source for copying conditions.  There is NO\n";
 	print "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n";
 	print "Written by Ulrich Drepper <drepper\@gnu.org>\n";

Modified: trunk/libc/nptl/ChangeLog
==============================================================================
--- trunk/libc/nptl/ChangeLog (original)
+++ trunk/libc/nptl/ChangeLog Fri Mar 26 14:08:35 2010
@@ -1,3 +1,10 @@
+2010-03-23  Luis Machado  <luisgpm@xxxxxxxxxx>
+
+	* pthread_cond_timedwait.c: Add check for
+	HAVE_CLOCK_GETTIME_VSYSCALL to use VDSO whenever possible.
+	(pthread_cond_timedwait): Use INTERNAL_VSYSCALL instead of
+	INTERNAL_SYSCALL.
+
 2010-03-09  Ulrich Drepper  <drepper@xxxxxxxxxx>
 
 	* pthread_create.c (__pthread_create_2_1): If priorities are incorrect

Modified: trunk/libc/nptl/pthread_cond_timedwait.c
==============================================================================
--- trunk/libc/nptl/pthread_cond_timedwait.c (original)
+++ trunk/libc/nptl/pthread_cond_timedwait.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2007, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Martin Schwidefsky <schwidefsky@xxxxxxxxxx>, 2003.
 
@@ -27,6 +27,14 @@
 
 #include <shlib-compat.h>
 
+#ifndef HAVE_CLOCK_GETTIME_VSYSCALL
+# undef INTERNAL_VSYSCALL
+# define INTERNAL_VSYSCALL INTERNAL_SYSCALL
+# undef INLINE_VSYSCALL
+# define INLINE_VSYSCALL INLINE_SYSCALL
+#else
+# include <bits/libc-vdso.h>
+#endif
 
 /* Cleanup handler, defined in pthread_cond_wait.c.  */
 extern void __condvar_cleanup (void *arg)
@@ -102,7 +110,7 @@
 #ifdef __NR_clock_gettime
 	INTERNAL_SYSCALL_DECL (err);
 	int ret;
-	ret = INTERNAL_SYSCALL (clock_gettime, err, 2,
+	ret = INTERNAL_VSYSCALL (clock_gettime, err, 2,
 				(cond->__data.__nwaiters
 				 & ((1 << COND_NWAITERS_SHIFT) - 1)),
 				&rt);

Modified: trunk/libc/nscd/nscd.c
==============================================================================
--- trunk/libc/nscd/nscd.c (original)
+++ trunk/libc/nscd/nscd.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998-2008, 2009 Free Software Foundation, Inc.
+/* Copyright (c) 1998-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@xxxxxxx>, 1998.
 
@@ -246,7 +246,7 @@
       openlog ("nscd", LOG_CONS | LOG_ODELAY, LOG_DAEMON);
 
       if (write_pid (_PATH_NSCDPID) < 0)
-        dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));
+	dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));
 
       if (!init_logfile ())
 	dbg_log (_("Could not create log file"));
@@ -433,7 +433,7 @@
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2009");
+"), "2010");
   fprintf (stream, gettext ("Written by %s.\n"),
 	   "Thorsten Kukuk and Ulrich Drepper");
 }
@@ -514,7 +514,7 @@
 	 the PID is the same as the current process' since tha latter
 	 can mean we re-exec.  */
       if ((n != 1 || kill (pid, 0) == 0) && pid != getpid ())
-        return 1;
+	return 1;
     }
 
   return 0;

Modified: trunk/libc/nss/getent.c
==============================================================================
--- trunk/libc/nss/getent.c (original)
+++ trunk/libc/nss/getent.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998-2008, 2009 Free Software Foundation, Inc.
+/* Copyright (c) 1998-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@xxxxxxx>, 1998.
 
@@ -84,7 +84,7 @@
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2009");
+"), "2010");
   fprintf (stream, gettext ("Written by %s.\n"), "Thorsten Kukuk");
 }
 

Modified: trunk/libc/posix/Makefile
==============================================================================
--- trunk/libc/posix/Makefile (original)
+++ trunk/libc/posix/Makefile Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-1999, 2000-2006, 2007, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1991-1999, 2000-2007, 2009, 2010 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -97,7 +97,7 @@
 		   tst-nice tst-nanosleep \
 		   transbug \
 		   tst-vfork1 tst-vfork2 tst-vfork3 tst-waitid \
-		   bug-glob1 bug-glob2 tst-sysconf \
+		   bug-glob1 bug-glob2 bug-glob3 tst-sysconf \
 		   tst-execvp1 tst-execvp2 tst-execlp1 tst-execlp2 \
 		   tst-execv1 tst-execv2 tst-execl1 tst-execl2 \
 		   tst-execve1 tst-execve2 tst-execle1 tst-execle2 \

Modified: trunk/libc/posix/getconf.c
==============================================================================
--- trunk/libc/posix/getconf.c (original)
+++ trunk/libc/posix/getconf.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 1995-2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 1995-2008, 2009, 2010 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
@@ -1105,7 +1105,7 @@
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2009");
+"), "2010");
       printf (gettext ("Written by %s.\n"), "Roland McGrath");
       return 0;
     }

Modified: trunk/libc/posix/glob.c
==============================================================================
--- trunk/libc/posix/glob.c (original)
+++ trunk/libc/posix/glob.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008
+/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -421,6 +421,24 @@
 	}
     }
 
+  if (!(flags & GLOB_APPEND))
+    {
+      pglob->gl_pathc = 0;
+      if (!(flags & GLOB_DOOFFS))
+	pglob->gl_pathv = NULL;
+      else
+	{
+	  size_t i;
+	  pglob->gl_pathv = (char **) malloc ((pglob->gl_offs + 1)
+					      * sizeof (char *));
+	  if (pglob->gl_pathv == NULL)
+	    return GLOB_NOSPACE;
+
+	  for (i = 0; i <= pglob->gl_offs; ++i)
+	    pglob->gl_pathv[i] = NULL;
+	}
+    }
+
   /* Find the filename.  */
   filename = strrchr (pattern, '/');
 #if defined __MSDOS__ || defined WINDOWS32
@@ -448,6 +466,12 @@
 	}
       else
 	{
+	  if (__builtin_expect (pattern[0] == '\0', 0))
+	    {
+	      dirs.gl_pathv = NULL;
+	      goto no_matches;
+	    }
+
 	  filename = pattern;
 #ifdef _AMIGA
 	  dirname = "";
@@ -495,7 +519,7 @@
 
       if (filename[0] == '\0'
 #if defined __MSDOS__ || defined WINDOWS32
-          && dirname[dirlen - 1] != ':'
+	  && dirname[dirlen - 1] != ':'
 	  && (dirlen < 3 || dirname[dirlen - 2] != ':'
 	      || dirname[dirlen - 1] != '/')
 #endif
@@ -529,24 +553,6 @@
 	      goto no_matches;
 	    }
 	  return val;
-	}
-    }
-
-  if (!(flags & GLOB_APPEND))
-    {
-      pglob->gl_pathc = 0;
-      if (!(flags & GLOB_DOOFFS))
-        pglob->gl_pathv = NULL;
-      else
-	{
-	  size_t i;
-	  pglob->gl_pathv = (char **) malloc ((pglob->gl_offs + 1)
-					      * sizeof (char *));
-	  if (pglob->gl_pathv == NULL)
-	    return GLOB_NOSPACE;
-
-	  for (i = 0; i <= pglob->gl_offs; ++i)
-	    pglob->gl_pathv[i] = NULL;
 	}
     }
 
@@ -567,7 +573,7 @@
 # else
 #  ifdef WINDOWS32
 	  if (home_dir == NULL || home_dir[0] == '\0')
-            home_dir = "c:/users/default"; /* poor default */
+	    home_dir = "c:/users/default"; /* poor default */
 #  else
 #   if ! _LIBC || __OPTION_EGLIBC_GETLOGIN
 	  if (home_dir == NULL || home_dir[0] == '\0')

Modified: trunk/libc/posix/tst-gnuglob.c
==============================================================================
--- trunk/libc/posix/tst-gnuglob.c (original)
+++ trunk/libc/posix/tst-gnuglob.c Fri Mar 26 14:08:35 2010
@@ -1,6 +1,6 @@
 /* Test the GNU extensions in glob which allow the user to provide callbacks
    for the filesystem access functions.
-   Copyright (C) 2001-2002, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2001-2002, 2007, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2001.
 
@@ -61,9 +61,9 @@
       { "..", 3, DT_DIR },
       { ".foo", 3, DT_REG },
       { "dir1lev3", 3, DT_DIR },
-        { ".", 4, DT_DIR },
-        { "..", 4, DT_DIR },
-        { "file1lev4", 4, DT_REG },
+	{ ".", 4, DT_DIR },
+	{ "..", 4, DT_DIR },
+	{ "file1lev4", 4, DT_REG },
       { "file1lev3", 3, DT_REG },
       { "file2lev3", 3, DT_REG },
     { "file2lev2", 2, DT_REG },
@@ -81,9 +81,9 @@
       { "..", 3, DT_DIR },
       { ".foo", 3, DT_REG },
       { ".dir", 3, DT_DIR },
-        { ".", 4, DT_DIR },
-        { "..", 4, DT_DIR },
-        { "hidden", 4, DT_REG }
+	{ ".", 4, DT_DIR },
+	{ "..", 4, DT_DIR },
+	{ "hidden", 4, DT_REG }
 };
 #define nfiles (sizeof (filesystem) / sizeof (filesystem[0]))
 
@@ -283,7 +283,7 @@
 static const char *
 flagstr (int flags)
 {
-  const char *strs[] =
+  static const char *const strs[] =
   {
     "GLOB_ERR", "GLOB_MARK", "GLOB_NOSORT", "GLOB_DOOFSS", "GLOB_NOCHECK",
     "GLOB_APPEND", "GLOB_NOESCAPE", "GLOB_PERIOD", "GLOB_MAGCHAR",
@@ -312,6 +312,29 @@
     }
 
   return buf;
+#undef nstrs
+}
+
+
+static const char *
+errstr (int val)
+{
+  static const char *const strs[] =
+    {
+      [GLOB_NOSPACE] = "GLOB_NOSPACE",
+      [GLOB_ABORTED] = "GLOB_ABORTED",
+      [GLOB_NOMATCH] = "GLOB_NOMATCH",
+      [GLOB_NOSYS] = "GLOB_NOSYS"
+    };
+#define nstrs (sizeof (strs) / sizeof (strs[0]))
+  static char buf[100];
+  if (val < 0 || val >= nstrs || strs[val] == NULL)
+    {
+      snprintf (buf, sizeof (buf), "GLOB_??? (%d)", val);
+      return buf;
+    }
+  return strs[val];
+#undef nstrs
 }
 
 
@@ -376,28 +399,34 @@
   gl.gl_lstat = my_stat;
   gl.gl_stat = my_stat;
 
-#define test(a, b, c...) \
+#define test(a, b, r, c...) \
   fmt = a;								      \
-  flags = b;								      \
+  flags = GLOB_ALTDIRFUNC | b;						      \
   errval = glob (fmt, flags, NULL, &gl);				      \
-  if (errval != 0)							      \
+  if (errval != r)							      \
     {									      \
-      printf ("glob (\"%s\", %s) failed: %s\n", fmt, flagstr (flags),	      \
-	      errval >= 0 && errval < nglob_errstring			      \
-	      ? glob_errstring[errval] : "???");			      \
+      if (r == 0)							      \
+	printf ("glob (\"%s\", %s) failed: %s\n", fmt, flagstr (flags),	      \
+		errval >= 0 && errval < nglob_errstring			      \
+		? glob_errstring[errval] : "???");			      \
+      else								      \
+	printf ("glob (\"%s\", %s) did not fail\n", fmt, flagstr (flags));    \
       result = 1;							      \
     }									      \
+  else if (r == 0)							      \
+    result |= test_result (fmt, flags, &gl, (const char *[]) { c, NULL });    \
   else									      \
-    result |= test_result (fmt, flags, &gl, (const char *[]) { c, NULL })
-
-  test ("*/*/*", GLOB_ALTDIRFUNC,
+    printf ("result for glob (\"%s\", %s) = %s\n\n", fmt, flagstr (flags),    \
+	    errstr (errval))
+
+  test ("*/*/*", 0, 0,
 	"dir1lev1/dir2lev2/dir1lev3",
 	"dir1lev1/dir2lev2/file1lev3",
 	"dir1lev1/dir2lev2/file2lev3",
 	"dir1lev1/dir3lev2/file3lev3",
 	"dir1lev1/dir3lev2/file4lev3");
 
-  test ("*/*/*", GLOB_ALTDIRFUNC | GLOB_PERIOD,
+  test ("*/*/*", GLOB_PERIOD, 0,
 	"dir1lev1/dir1lev2/.",
 	"dir1lev1/dir1lev2/..",
 	"dir1lev1/dir2lev2/.",
@@ -415,7 +444,7 @@
 	"dir2lev1/dir1lev2/.dir",
 	"dir2lev1/dir1lev2/.foo");
 
-  test ("*/*/.*", GLOB_ALTDIRFUNC,
+  test ("*/*/.*", 0, 0,
 	"dir1lev1/dir1lev2/.",
 	"dir1lev1/dir1lev2/..",
 	"dir1lev1/dir2lev2/.",
@@ -428,7 +457,7 @@
 	"dir2lev1/dir1lev2/.dir",
 	"dir2lev1/dir1lev2/.foo");
 
-  test ("*1*/*2*/.*", GLOB_ALTDIRFUNC,
+  test ("*1*/*2*/.*", 0, 0,
 	"dir1lev1/dir1lev2/.",
 	"dir1lev1/dir1lev2/..",
 	"dir1lev1/dir2lev2/.",
@@ -441,7 +470,7 @@
 	"dir2lev1/dir1lev2/.dir",
 	"dir2lev1/dir1lev2/.foo");
 
-  test ("*1*/*1*/.*", GLOB_ALTDIRFUNC,
+  test ("*1*/*1*/.*", 0, 0,
 	"dir1lev1/dir1lev2/.",
 	"dir1lev1/dir1lev2/..",
 	"dir2lev1/dir1lev2/.",
@@ -449,12 +478,16 @@
 	"dir2lev1/dir1lev2/.dir",
 	"dir2lev1/dir1lev2/.foo");
 
-  test ("\\/*", GLOB_ALTDIRFUNC,
+  test ("\\/*", 0, 0,
 	"/dir1lev1",
 	"/dir2lev1",
 	"/file1lev1",
 	"/file2lev1");
 
+  test ("", 0, GLOB_NOMATCH, NULL);
+
+  test ("", GLOB_NOCHECK, 0, "");
+
   globfree (&gl);
 
   return result;

Modified: trunk/libc/resolv/res_send.c
==============================================================================
--- trunk/libc/resolv/res_send.c (original)
+++ trunk/libc/resolv/res_send.c Fri Mar 26 14:08:35 2010
@@ -535,7 +535,10 @@
 
 		Dprint(statp->options & RES_DEBUG,
 		       (stdout, ";; Querying server (# %d) address = %s\n",
-			ns + 1, inet_ntop(AF_INET6, &nsap->sin6_addr,
+			ns + 1, inet_ntop(nsap->sin6_family,
+					  (nsap->sin6_family == AF_INET6
+					   ? &nsap->sin6_addr
+					   : &((struct sockaddr_in *) nsap)->sin_addr),
 					  tmpbuf, sizeof (tmpbuf))));
 
 		if (__builtin_expect (v_circuit, 0)) {
@@ -1201,7 +1204,7 @@
 			DprintQ((statp->options & RES_DEBUG) ||
 				(statp->pfcode & RES_PRF_REPLY),
 				(stdout, ";; old answer:\n"),
-				thisansp,
+				*thisansp,
 				(*thisresplenp > *thisanssizp)
 				? *thisanssizp : *thisresplenp);
 			goto wait;
@@ -1216,7 +1219,7 @@
 			DprintQ((statp->options & RES_DEBUG) ||
 				(statp->pfcode & RES_PRF_REPLY),
 				(stdout, ";; not our server:\n"),
-				thisansp,
+				*thisansp,
 				(*thisresplenp > *thisanssizp)
 				? *thisanssizp : *thisresplenp);
 			goto wait;
@@ -1233,7 +1236,7 @@
 			DprintQ(statp->options & RES_DEBUG,
 				(stdout,
 				 "server rejected query with EDNS0:\n"),
-				thisansp,
+				*thisansp,
 				(*thisresplenp > *thisanssizp)
 				? *thisanssizp : *thisresplenp);
 			/* record the error */
@@ -1258,7 +1261,7 @@
 			DprintQ((statp->options & RES_DEBUG) ||
 				(statp->pfcode & RES_PRF_REPLY),
 				(stdout, ";; wrong query name:\n"),
-				thisansp,
+				*thisansp,
 				(*thisresplenp > *thisanssizp)
 				? *thisanssizp : *thisresplenp);
 			goto wait;
@@ -1268,7 +1271,7 @@
 		    anhp->rcode == REFUSED) {
 			DprintQ(statp->options & RES_DEBUG,
 				(stdout, "server rejected query:\n"),
-				thisansp,
+				*thisansp,
 				(*thisresplenp > *thisanssizp)
 				? *thisanssizp : *thisresplenp);
 
@@ -1295,7 +1298,7 @@
 		    && anhp->aa == 0 && anhp->ra == 0 && anhp->arcount == 0) {
 			DprintQ(statp->options & RES_DEBUG,
 				(stdout, "referred query:\n"),
-				thisansp,
+				*thisansp,
 				(*thisresplenp > *thisanssizp)
 				? *thisanssizp : *thisresplenp);
 			goto next_ns;

Modified: trunk/libc/stdio-common/psiginfo.c
==============================================================================
--- trunk/libc/stdio-common/psiginfo.c (original)
+++ trunk/libc/stdio-common/psiginfo.c Fri Mar 26 14:08:35 2010
@@ -170,7 +170,7 @@
 	fprintf (fp, "%ld %d %ld)", (long int) pinfo->si_pid, pinfo->si_status,
 		 (long int) pinfo->si_uid);
       else if (pinfo->si_signo == SIGPOLL)
-	fprintf (fp, "%ld)", pinfo->si_band);
+	fprintf (fp, "%ld)", (long int) pinfo->si_band);
       else
 	fprintf (fp, "%ld %ld)",
 		 (long int) pinfo->si_pid, (long int) pinfo->si_uid);

Modified: trunk/libc/string/test-memcmp.c
==============================================================================
--- trunk/libc/string/test-memcmp.c (original)
+++ trunk/libc/string/test-memcmp.c Fri Mar 26 14:08:35 2010
@@ -37,9 +37,9 @@
   return ret;
 }
 
-static void
-do_one_test (impl_t *impl, const char *s1, const char *s2, size_t len,
-	     int exp_result)
+static int
+check_result (impl_t *impl, const char *s1, const char *s2, size_t len,
+	      int exp_result)
 {
   int result = CALL (impl, s1, s2, len);
   if ((exp_result == 0 && result != 0)
@@ -49,8 +49,18 @@
       error (0, 0, "Wrong result in function %s %d %d", impl->name,
 	     result, exp_result);
       ret = 1;
-      return;
-    }
+      return -1;
+    }
+
+  return 0;
+}
+
+static void
+do_one_test (impl_t *impl, const char *s1, const char *s2, size_t len,
+	     int exp_result)
+{
+  if (check_result (impl, s1, s2, len, exp_result) < 0)
+    return;
 
   if (HP_TIMING_AVAIL)
     {
@@ -177,12 +187,259 @@
     }
 }
 
+static void
+check1 (void)
+{
+  char s1[116], s2[116];
+  int n, exp_result;
+
+  s1[0] = -108;
+  s2[0] = -108;
+  s1[1] = 99;
+  s2[1] = 99;
+  s1[2] = -113;
+  s2[2] = -113;
+  s1[3] = 1;
+  s2[3] = 1;
+  s1[4] = 116;
+  s2[4] = 116;
+  s1[5] = 99;
+  s2[5] = 99;
+  s1[6] = -113;
+  s2[6] = -113;
+  s1[7] = 1;
+  s2[7] = 1;
+  s1[8] = 84;
+  s2[8] = 84;
+  s1[9] = 99;
+  s2[9] = 99;
+  s1[10] = -113;
+  s2[10] = -113;
+  s1[11] = 1;
+  s2[11] = 1;
+  s1[12] = 52;
+  s2[12] = 52;
+  s1[13] = 99;
+  s2[13] = 99;
+  s1[14] = -113;
+  s2[14] = -113;
+  s1[15] = 1;
+  s2[15] = 1;
+  s1[16] = -76;
+  s2[16] = -76;
+  s1[17] = -14;
+  s2[17] = -14;
+  s1[18] = -109;
+  s2[18] = -109;
+  s1[19] = 1;
+  s2[19] = 1;
+  s1[20] = -108;
+  s2[20] = -108;
+  s1[21] = -14;
+  s2[21] = -14;
+  s1[22] = -109;
+  s2[22] = -109;
+  s1[23] = 1;
+  s2[23] = 1;
+  s1[24] = 84;
+  s2[24] = 84;
+  s1[25] = -15;
+  s2[25] = -15;
+  s1[26] = -109;
+  s2[26] = -109;
+  s1[27] = 1;
+  s2[27] = 1;
+  s1[28] = 52;
+  s2[28] = 52;
+  s1[29] = -15;
+  s2[29] = -15;
+  s1[30] = -109;
+  s2[30] = -109;
+  s1[31] = 1;
+  s2[31] = 1;
+  s1[32] = 20;
+  s2[32] = 20;
+  s1[33] = -15;
+  s2[33] = -15;
+  s1[34] = -109;
+  s2[34] = -109;
+  s1[35] = 1;
+  s2[35] = 1;
+  s1[36] = 20;
+  s2[36] = 20;
+  s1[37] = -14;
+  s2[37] = -14;
+  s1[38] = -109;
+  s2[38] = -109;
+  s1[39] = 1;
+  s2[39] = 1;
+  s1[40] = 52;
+  s2[40] = 52;
+  s1[41] = -14;
+  s2[41] = -14;
+  s1[42] = -109;
+  s2[42] = -109;
+  s1[43] = 1;
+  s2[43] = 1;
+  s1[44] = 84;
+  s2[44] = 84;
+  s1[45] = -14;
+  s2[45] = -14;
+  s1[46] = -109;
+  s2[46] = -109;
+  s1[47] = 1;
+  s2[47] = 1;
+  s1[48] = 116;
+  s2[48] = 116;
+  s1[49] = -14;
+  s2[49] = -14;
+  s1[50] = -109;
+  s2[50] = -109;
+  s1[51] = 1;
+  s2[51] = 1;
+  s1[52] = 116;
+  s2[52] = 116;
+  s1[53] = -15;
+  s2[53] = -15;
+  s1[54] = -109;
+  s2[54] = -109;
+  s1[55] = 1;
+  s2[55] = 1;
+  s1[56] = -44;
+  s2[56] = -44;
+  s1[57] = -14;
+  s2[57] = -14;
+  s1[58] = -109;
+  s2[58] = -109;
+  s1[59] = 1;
+  s2[59] = 1;
+  s1[60] = -108;
+  s2[60] = -108;
+  s1[61] = -15;
+  s2[61] = -15;
+  s1[62] = -109;
+  s2[62] = -109;
+  s1[63] = 1;
+  s2[63] = 1;
+  s1[64] = -76;
+  s2[64] = -76;
+  s1[65] = -15;
+  s2[65] = -15;
+  s1[66] = -109;
+  s2[66] = -109;
+  s1[67] = 1;
+  s2[67] = 1;
+  s1[68] = -44;
+  s2[68] = -44;
+  s1[69] = -15;
+  s2[69] = -15;
+  s1[70] = -109;
+  s2[70] = -109;
+  s1[71] = 1;
+  s2[71] = 1;
+  s1[72] = -12;
+  s2[72] = -12;
+  s1[73] = -15;
+  s2[73] = -15;
+  s1[74] = -109;
+  s2[74] = -109;
+  s1[75] = 1;
+  s2[75] = 1;
+  s1[76] = -12;
+  s2[76] = -12;
+  s1[77] = -14;
+  s2[77] = -14;
+  s1[78] = -109;
+  s2[78] = -109;
+  s1[79] = 1;
+  s2[79] = 1;
+  s1[80] = 20;
+  s2[80] = -68;
+  s1[81] = -12;
+  s2[81] = 64;
+  s1[82] = -109;
+  s2[82] = -106;
+  s1[83] = 1;
+  s2[83] = 1;
+  s1[84] = -12;
+  s2[84] = -12;
+  s1[85] = -13;
+  s2[85] = -13;
+  s1[86] = -109;
+  s2[86] = -109;
+  s1[87] = 1;
+  s2[87] = 1;
+  s1[88] = -44;
+  s2[88] = -44;
+  s1[89] = -13;
+  s2[89] = -13;
+  s1[90] = -109;
+  s2[90] = -109;
+  s1[91] = 1;
+  s2[91] = 1;
+  s1[92] = -76;
+  s2[92] = -76;
+  s1[93] = -13;
+  s2[93] = -13;
+  s1[94] = -109;
+  s2[94] = -109;
+  s1[95] = 1;
+  s2[95] = 1;
+  s1[96] = -108;
+  s2[96] = -108;
+  s1[97] = -13;
+  s2[97] = -13;
+  s1[98] = -109;
+  s2[98] = -109;
+  s1[99] = 1;
+  s2[99] = 1;
+  s1[100] = 116;
+  s2[100] = 116;
+  s1[101] = -13;
+  s2[101] = -13;
+  s1[102] = -109;
+  s2[102] = -109;
+  s1[103] = 1;
+  s2[103] = 1;
+  s1[104] = 84;
+  s2[104] = 84;
+  s1[105] = -13;
+  s2[105] = -13;
+  s1[106] = -109;
+  s2[106] = -109;
+  s1[107] = 1;
+  s2[107] = 1;
+  s1[108] = 52;
+  s2[108] = 52;
+  s1[109] = -13;
+  s2[109] = -13;
+  s1[110] = -109;
+  s2[110] = -109;
+  s1[111] = 1;
+  s2[111] = 1;
+  s1[112] = 20;
+  s2[112] = 20;
+  s1[113] = -13;
+  s2[113] = -13;
+  s1[114] = -109;
+  s2[114] = -109;
+  s1[115] = 1;
+  s2[115] = 1;
+
+  n = 116;
+  exp_result = simple_memcmp (s1, s2, n);
+  FOR_EACH_IMPL (impl, 0)
+    check_result (impl, s1, s2, n, exp_result);
+}
+
 int
 test_main (void)
 {
   size_t i;
 
   test_init ();
+
+  check1 ();
 
   printf ("%23s", "");
   FOR_EACH_IMPL (impl, 0)

Modified: trunk/libc/sysdeps/generic/ldsodefs.h
==============================================================================
--- trunk/libc/sysdeps/generic/ldsodefs.h (original)
+++ trunk/libc/sysdeps/generic/ldsodefs.h Fri Mar 26 14:08:35 2010
@@ -756,7 +756,7 @@
 #endif
 
 /* Random data provided by the kernel.  */
-extern void *_dl_random attribute_hidden;
+extern void *_dl_random attribute_hidden attribute_relro;
 
 /* OS-dependent function to open the zero-fill device.  */
 extern int _dl_sysdep_open_zero_fill (void); /* dl-sysdep.c */

Modified: trunk/libc/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
==============================================================================
--- trunk/libc/sysdeps/i386/i686/multiarch/memcmp-ssse3.S (original)
+++ trunk/libc/sysdeps/i386/i686/multiarch/memcmp-ssse3.S Fri Mar 26 14:08:35 2010
@@ -269,6 +269,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_1_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_1_gobble_next)
@@ -352,6 +353,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_2_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_2_gobble_next)
@@ -434,6 +436,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_3_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_3_gobble_next)
@@ -516,6 +519,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_4_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_4_gobble_next)
@@ -598,6 +602,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_5_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_5_gobble_next)
@@ -680,6 +685,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_6_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_6_gobble_next)
@@ -762,6 +768,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_7_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_7_gobble_next)
@@ -844,6 +851,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_8_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_8_gobble_next)
@@ -926,6 +934,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_9_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_9_gobble_next)
@@ -1008,6 +1017,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_10_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_10_gobble_next)
@@ -1090,6 +1100,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_11_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_11_gobble_next)
@@ -1172,6 +1183,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_12_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_12_gobble_next)
@@ -1254,6 +1266,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_13_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_13_gobble_next)
@@ -1336,6 +1349,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_14_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_14_gobble_next)
@@ -1418,6 +1432,7 @@
 
 	lea	32(%edi), %edi
 	jz	L(shr_15_gobble_loop)
+	pand	%xmm0, %xmm3
 
 	cmp	$0, %ecx
 	jge	L(shr_15_gobble_next)

Modified: trunk/libc/sysdeps/posix/cuserid.c
==============================================================================
--- trunk/libc/sysdeps/posix/cuserid.c (original)
+++ trunk/libc/sysdeps/posix/cuserid.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996, 1998, 1999, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 1998, 1999, 2001, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -44,5 +44,6 @@
 
   if (s == NULL)
     s = name;
-  return strncpy (s, pwptr->pw_name, L_cuserid);
+  s[L_cuserid - 1] = '\0';
+  return strncpy (s, pwptr->pw_name, L_cuserid - 1);
 }

Modified: trunk/libc/sysdeps/posix/getaddrinfo.c
==============================================================================
--- trunk/libc/sysdeps/posix/getaddrinfo.c (original)
+++ trunk/libc/sysdeps/posix/getaddrinfo.c Fri Mar 26 14:08:35 2010
@@ -702,6 +702,7 @@
 
 	  while (!no_more)
 	    {
+	      no_data = 0;
 	      nss_gethostbyname4_r fct4
 		= __nss_lookup_function (nip, "gethostbyname4_r");
 	      if (fct4 != NULL)
@@ -816,17 +817,18 @@
 				    canon = name;
 				}
 			    }
-
-			  break;
+			  status = NSS_STATUS_SUCCESS;
 			}
-
-		      /* We can have different states for AF_INET and
-			 AF_INET6.  Try to find a useful one for both.  */
-		      if (inet6_status == NSS_STATUS_TRYAGAIN)
-			status = NSS_STATUS_TRYAGAIN;
-		      else if (status == NSS_STATUS_UNAVAIL
-			       && inet6_status != NSS_STATUS_UNAVAIL)
-			status = inet6_status;
+		      else
+			{
+			  /* We can have different states for AF_INET and
+			     AF_INET6.  Try to find a useful one for both.  */
+			  if (inet6_status == NSS_STATUS_TRYAGAIN)
+			    status = NSS_STATUS_TRYAGAIN;
+			  else if (status == NSS_STATUS_UNAVAIL
+				   && inet6_status != NSS_STATUS_UNAVAIL)
+			    status = inet6_status;
+			}
 		    }
 		  else
 		    status = NSS_STATUS_UNAVAIL;

Modified: trunk/libc/sysdeps/unix/getlogin.c
==============================================================================
--- trunk/libc/sysdeps/unix/getlogin.c (original)
+++ trunk/libc/sysdeps/unix/getlogin.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1996, 1997, 2010 Free Software 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,16 +25,20 @@
 
 #include <utmp.h>
 
+static char name[UT_NAMESIZE + 1];
+
 /* Return the login name of the user, or NULL if it can't be determined.
    The returned pointer, if not NULL, is good only until the next call.  */
 
+#ifdef STATIC
+STATIC
+#endif
 char *
 getlogin (void)
 {
   char tty_pathname[2 + 2 * NAME_MAX];
   char *real_tty_path = tty_pathname;
   char *result = NULL;
-  static char name[UT_NAMESIZE + 1];
   struct utmp *ut, line, buffer;
 
   /* Get name of tty connected to fd 0.  Return NULL if not a tty or

Modified: trunk/libc/sysdeps/unix/getlogin_r.c
==============================================================================
--- trunk/libc/sysdeps/unix/getlogin_r.c (original)
+++ trunk/libc/sysdeps/unix/getlogin_r.c Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* Reentrant function to return the current login name.  Unix version.
-   Copyright (C) 1991,92,96,97,98,2002 Free Software Foundation, Inc.
+   Copyright (C) 1991,92,96,97,98,2002,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -31,6 +31,9 @@
    If it cannot be determined or some other error occurred, return the error
    code.  Otherwise return 0.  */
 
+#ifdef STATIC
+STATIC
+#endif
 int
 getlogin_r (name, name_len)
      char *name;
@@ -96,4 +99,6 @@
 
   return result;
 }
+#ifndef STATIC
 libc_hidden_def (getlogin_r)
+#endif

Modified: trunk/libc/sysdeps/unix/sysv/linux/clock_getres.c
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/clock_getres.c (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/clock_getres.c Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* clock_getres -- Get the resolution of a POSIX clockid_t.  Linux version.
-   Copyright (C) 2003,2004,2005,2006, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2003,2004,2005,2006,2008,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -44,6 +44,9 @@
   SYSDEP_GETRES_CPUTIME							      \
   case CLOCK_REALTIME:							      \
   case CLOCK_MONOTONIC:							      \
+  case CLOCK_MONOTONIC_RAW:						      \
+  case CLOCK_REALTIME_COARSE:						      \
+  case CLOCK_MONOTONIC_COARSE:						      \
     SYSCALL_GETRES
 
 # define __libc_missing_posix_timers 0
@@ -80,6 +83,9 @@
   SYSDEP_GETRES_CPUTIME							      \
   case CLOCK_REALTIME:							      \
   case CLOCK_MONOTONIC:							      \
+  case CLOCK_MONOTONIC_RAW:						      \
+  case CLOCK_REALTIME_COARSE:						      \
+  case CLOCK_MONOTONIC_COARSE:						      \
     retval = maybe_syscall_getres (clock_id, res);			      \
     if (retval == 0)							      \
       break;								      \

Modified: trunk/libc/sysdeps/unix/sysv/linux/clock_gettime.c
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/clock_gettime.c (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/clock_gettime.c Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* clock_gettime -- Get current time from a POSIX clockid_t.  Linux version.
-   Copyright (C) 2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+   Copyright (C) 2003,2004,2005,2006,2007,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -80,6 +80,9 @@
   SYSDEP_GETTIME_CPUTIME						      \
   case CLOCK_REALTIME:							      \
   case CLOCK_MONOTONIC:							      \
+  case CLOCK_MONOTONIC_RAW:						      \
+  case CLOCK_REALTIME_COARSE:						      \
+  case CLOCK_MONOTONIC_COARSE:						      \
     retval = maybe_syscall_gettime (clock_id, tp);			      \
     if (retval == 0)							      \
       break;								      \

Modified: trunk/libc/sysdeps/unix/sysv/linux/clock_settime.c
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/clock_settime.c (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/clock_settime.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2006, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -45,7 +45,7 @@
       INTERNAL_SYSCALL_DECL (err);
       int r = INTERNAL_SYSCALL (clock_settime, err, 2, clock_id, tp);
       if (!INTERNAL_SYSCALL_ERROR_P (r, err))
-        return 0;
+	return 0;
 
       e = INTERNAL_SYSCALL_ERRNO (r, err);
 # ifndef __ASSUME_POSIX_TIMERS
@@ -90,6 +90,7 @@
 /* The REALTIME clock might be available.  Try the syscall first.  */
 # define SYSDEP_SETTIME \
   case CLOCK_REALTIME:							      \
+  case CLOCK_REALTIME_COARSE:						      \
     {									      \
       int e = EINVAL;							      \
 									      \

Modified: trunk/libc/sysdeps/unix/sysv/linux/dl-sysdep.c
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/dl-sysdep.c (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/dl-sysdep.c Fri Mar 26 14:08:35 2010
@@ -47,12 +47,12 @@
      Later Linux kernels have changed this behavior so that the initial
      break value is rounded up to the page boundary before we start.  */
 
-  extern void *__curbrk attribute_hidden;
-  extern void _end attribute_hidden;
-  void *const endpage = (void *) 0 + (((__curbrk - (void *) 0)
+  extern char *__curbrk attribute_hidden;
+  extern char _end[] attribute_hidden;
+  char *const endpage = (void *) 0 + (((__curbrk - (char *) 0)
 				       + GLRO(dl_pagesize) - 1)
 				      & -GLRO(dl_pagesize));
-  if (__builtin_expect (__curbrk >= &_end && __curbrk < endpage, 0))
+  if (__builtin_expect (__curbrk >= _end && __curbrk < endpage, 0))
     __brk (endpage);
 #endif
 }

Modified: trunk/libc/sysdeps/unix/sysv/linux/ldsodefs.h
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/ldsodefs.h (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/ldsodefs.h Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* Run-time dynamic linker data structures for loaded ELF shared objects.
-   Copyright (C) 2001, 2002, 2003, 2006, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2006, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -19,6 +19,7 @@
 
 #ifndef	_LDSODEFS_H
 
+#include <libc-abis.h>
 #include <kernel-features.h>
 
 /* Get the real definitions.  */
@@ -58,7 +59,8 @@
 					 || memcmp (hdr, expected2, size) == 0)
 #define VALID_ELF_OSABI(osabi)		(osabi == ELFOSABI_SYSV \
 					 || osabi == ELFOSABI_LINUX)
-#define VALID_ELF_ABIVERSION(ver)	(ver == 0)
+#define VALID_ELF_ABIVERSION(osabi,ver) \
+  (ver == 0 || (osabi == ELFOSABI_LINUX && ver < LIBC_ABI_MAX))
 #define MORE_ELF_HEADER_DATA \
   static const unsigned char expected2[EI_PAD] =	\
   {							\
@@ -69,8 +71,7 @@
     [EI_CLASS] = ELFW(CLASS),				\
     [EI_DATA] = byteorder,				\
     [EI_VERSION] = EV_CURRENT,				\
-    [EI_OSABI] = ELFOSABI_LINUX,			\
-    [EI_ABIVERSION] = 0					\
+    [EI_OSABI] = ELFOSABI_LINUX				\
   }
 
 #endif /* ldsodefs.h */

Modified: trunk/libc/sysdeps/unix/sysv/linux/mmap64.c
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/mmap64.c (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/mmap64.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999,2000,2001,2002,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999,2000,2001,2002,2006,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@xxxxxxxxxx>, 1999.
 
@@ -30,8 +30,13 @@
 #ifdef __NR_mmap2
 
 /* This is always 12, even on architectures where PAGE_SHIFT != 12.  */
-# ifndef MMAP2_PAGE_SHIFT
-#  define MMAP2_PAGE_SHIFT 12
+# if MMAP2_PAGE_SHIFT == -1
+static int page_shift;
+# else
+#  ifndef MMAP2_PAGE_SHIFT
+#   define MMAP2_PAGE_SHIFT 12
+#  endif
+# define page_shift MMAP2_PAGE_SHIFT
 # endif
 
 # ifndef __ASSUME_MMAP2_SYSCALL
@@ -44,7 +49,15 @@
 __mmap64 (void *addr, size_t len, int prot, int flags, int fd, off64_t offset)
 {
 #ifdef __NR_mmap2
-  if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
+# ifdef MMAP2_PAGE_SHIFT == -1
+  if (page_shift == 0)
+    {
+      int page_size = getpagesize ();
+      while ((1 << ++page_shift) != page_size)
+	;
+    }
+# endif
+  if (offset & ((1 << page_shift) - 1))
     {
       __set_errno (EINVAL);
       return MAP_FAILED;

Modified: trunk/libc/sysdeps/x86_64/multiarch/strpbrk-c.c
==============================================================================
--- trunk/libc/sysdeps/x86_64/multiarch/strpbrk-c.c (original)
+++ trunk/libc/sysdeps/x86_64/multiarch/strpbrk-c.c Fri Mar 26 14:08:35 2010
@@ -1,4 +1,8 @@
-#define USE_AS_STRPBRK
-#define STRCSPN_SSE2 __strpbrk_sse2
-#define STRCSPN_SSE42 __strpbrk_sse42
-#include "strcspn-c.c"
+/* Don't define multiple versions for strpbrk in static library since we
+   need strpbrk before the initialization happened.  */
+#ifdef SHARED
+# define USE_AS_STRPBRK
+# define STRCSPN_SSE2 __strpbrk_sse2
+# define STRCSPN_SSE42 __strpbrk_sse42
+# include "strcspn-c.c"
+#endif

Modified: trunk/libc/wcsmbs/wchar.h
==============================================================================
--- trunk/libc/wcsmbs/wchar.h (original)
+++ trunk/libc/wcsmbs/wchar.h Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -50,11 +50,6 @@
 # undef __need_wint_t
 # define __need_wint_t
 # include <stddef.h>
-
-/* Tell the caller that we provide correct C++ prototypes.  */
-#if defined __cplusplus && __GNUC_PREREQ (4, 4)
-# define __CORRECT_ISO_CPP_WCHAR_H_PROTO
-#endif
 
 /* We try to get wint_t from <stddef.h>, but not all GCC versions define it
    there.  So define it ourselves if it remains undefined.  */
@@ -74,6 +69,11 @@
 typedef __WINT_TYPE__ wint_t;
 __END_NAMESPACE_STD
 #  endif
+# endif
+
+/* Tell the caller that we provide correct C++ prototypes.  */
+# if defined __cplusplus && __GNUC_PREREQ (4, 4)
+#  define __CORRECT_ISO_CPP_WCHAR_H_PROTO
 # endif
 #endif
 
@@ -219,7 +219,7 @@
 extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc)
      __THROW __asm ("wcschr") __attribute_pure__;
 extern "C++" __const wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
-     __THROW __asm ("wcschr")  __attribute_pure__;
+     __THROW __asm ("wcschr") __attribute_pure__;
 #else
 extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
      __THROW __attribute_pure__;
@@ -892,7 +892,7 @@
 
 #endif /* wchar.h  */
 
-/* Undefined all __need_* constants in case we are included to get those
+/* Undefine all __need_* constants in case we are included to get those
    constants but the whole file was already read.  */
 #undef __need_mbstate_t
 #undef __need_wint_t

Modified: trunk/libc/wctype/wctype.h
==============================================================================
--- trunk/libc/wctype/wctype.h (original)
+++ trunk/libc/wctype/wctype.h Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2002,2005,2007,2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2002,2005,2007-2009,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -29,9 +29,9 @@
 #ifndef __need_iswxxx
 # define _WCTYPE_H	1
 
-/* Get wint_t from <stddef.h>.  */
+/* Get wint_t from <wchar.h>.  */
 # define __need_wint_t
-# include <stddef.h>
+# include <wchar.h>
 
 /* Constant expression of type `wint_t' whose value does not correspond
    to any member of the extended character set.  */
@@ -204,7 +204,7 @@
 
 
 /* The remaining definitions and declarations must not appear in the
-   <wcsmbs.h> header.  */
+   <wchar.h> header.  */
 #ifdef _WCTYPE_H
 
 /*

Modified: trunk/ports/ChangeLog.alpha
==============================================================================
--- trunk/ports/ChangeLog.alpha (original)
+++ trunk/ports/ChangeLog.alpha Fri Mar 26 14:08:35 2010
@@ -1,3 +1,67 @@
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S: New.
+
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/alpha/Versions: Update errlist-compat
+	for GLIBC_2.12.
+
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdeps/alpha/fpu/fegetenv.c: Add hidden alias.
+
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/alpha/dl-auxv.h (__libc_alpha_cache_shape):
+	Define extern here; move definition...
+	* sysdeps/unix/sysv/linux/alpha/dl-sysdep.c: ... here.
+
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/alpha/sys/user.h: Don't include asm/page.h.
+	(PAGE_SHIFT, PAGE_SIZE, PAGE_MASK): Define.
+
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (F_SETOWN_EX,
+	F_GETOWN_EX, F_OWNER_TID, F_OWNER_PID, F_OWNER_PGRP,
+	F_OWNER_GID, struct f_owner_ex): Define.
+	(F_SETOWN, F_GETOWN): Define with XPG7.
+
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdeps/unix/alpha/sysdep.h (PTR_MANGLE): Define for !PIC too.
+	(PTR_DEMANGLE): Likewise.
+
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdeps/unix/alpha/sysdep.h (INTERNAL_SYSCALL_ERROR_P,
+	INTERNAL_SYSCALL_ERRNO): "Use" the "other" variable in each macro.
+
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdep/unix/sysv/linux/alpha/creat.c: New.
+
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdep/alpha/elf/configure.in (libc_cv_alpha_hidden_gprel)
+	Adjust the test for gcc 4.5.
+	* sysdep/alpha/elf/configure: Rebuild.
+
+2010-03-26  Richard Henderson  <rth@xxxxxxxxxx>
+
+	* sysdeps/alpha/bits/atomic.h (__arch_exchange_8_int,
+	__arch_exchange_16_int, __arch_exchange_32_int,
+	__arch_exchange_64_int, __arch_exchange_and_add_32_int,
+	__arch_exchange_and_add_64_int): Use __typeof to get the
+	return type correct without warning.
+
+2010-03-23  Matt Turner  <mattst88@xxxxxxxxx>
+            Aurelien Jarno  <aurelien@xxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/alpha/bits/socket.h: New file.
+
 2010-01-12  Matt Turner  <mattst88@xxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Fix double-inclusion

Modified: trunk/ports/ChangeLog.arm
==============================================================================
--- trunk/ports/ChangeLog.arm (original)
+++ trunk/ports/ChangeLog.arm Fri Mar 26 14:08:35 2010
@@ -1,3 +1,53 @@
+2010-03-26  Thomas Schwinge  <thomas@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/arm/configure.in: New file.
+	* sysdeps/arm/configure: Generate.
+	* sysdeps/arm/sysdep.h (ENTRY, END): Add CFI statements.
+	* sysdeps/unix/arm/sysdep.S (__syscall_error): Likewise.
+	* sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h
+	(PSEUDO, DOCARGS_0, RESTORE_LR_0, DOCARGS_1, UNDOCARGS_1, DOCARGS_2)
+	(UNDOCARGS_2, DOCARGS_3, UNDOCARGS_3, DOCARGS_4, UNDOCARGS_4)
+	(DOCARGS_5, UNDOCARGS_5, RESTORE_LR_5, DOCARGS_6, UNDOCARGS_6):
+	Likewise.
+	[__ASSEMBLER__] (SINGLE_THREAD_P): Likewise.
+	* sysdeps/unix/sysv/linux/arm/eabi/sysdep.h (DO_CALL): Likewise.
+	* sysdeps/unix/sysv/linux/arm/sysdep.h
+	(POP_PC, SYSCALL_ERROR_HANDLER (__local_syscall_error))
+	(DOARGS_5, UNDOARGS_5, DOARGS_6, UNDOARGS_6, DOARGS_7, UNDOARGS_7):
+	Likewise.
+	* sysdeps/unix/sysv/linux/arm/eabi/sigrestorer.S
+	(__default_sa_restorer_v1, __default_sa_restorer_v2)
+	(__default_rt_sa_restorer_v1, __default_rt_sa_restorer_v2): Add END
+	statements.
+	* sysdeps/unix/sysv/linux/arm/eabi/syscall.S (syscall): Add CFI
+	statements.
+	* sysdeps/arm/memcpy.S (memcpy): Add CFI statements.
+	* sysdeps/arm/memmove.S (memmove): Likewise.
+	* sysdeps/unix/sysv/linux/arm/eabi/mmap64.S (__mmap64): Add CFI
+	statements.
+	* sysdeps/unix/sysv/linux/arm/mmap.S (__mmap): Likewise.
+	* sysdeps/arm/eabi/arm-mcount.S (__gnu_mcount_nc, _mcount): Add CFI
+	statements.
+	* sysdeps/arm/sysdep.h (CALL_MCOUNT): Likewise.
+	* sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c
+	(_Unwind_Resume): Add CFI statements.
+	* sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c
+	(_Unwind_Resume): Likewise.
+	* sysdeps/arm/dl-trampoline.S (_dl_runtime_resolve)
+	(_dl_runtime_profile) <CFI>: Only emit .debug_frame.
+	* sysdeps/arm/eabi/__longjmp.S (__longjmp): Add CFI statements.
+	* sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S (CALL_FAIL)
+	(CHECK_SP): Likewise
+	* sysdeps/unix/sysv/linux/arm/nptl/pt-vfork.S (SAVE_PID): Add CFI
+	statements.
+	* sysdeps/unix/sysv/linux/arm/nptl/vfork.S (SAVE_PID): Likewise.
+	* sysdeps/unix/sysv/linux/arm/clone.S (__clone): Add CFI statements.
+	* sysdeps/unix/sysv/linux/arm/eabi/sigrestorer.S (cfi_startproc):
+	Redefine for signal frames.
+	(__default_sa_restorer_v1, __default_sa_restorer_v2)
+	(__default_rt_sa_restorer_v1, __default_rt_sa_restorer_v2): Add CFI
+	statements.
+
 2010-02-10  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/arm/eabi/fegetenv.c, sysdeps/arm/fpu/fegetenv.c: Add

Modified: trunk/ports/ChangeLog.mips
==============================================================================
--- trunk/ports/ChangeLog.mips (original)
+++ trunk/ports/ChangeLog.mips Fri Mar 26 14:08:35 2010
@@ -1,3 +1,17 @@
+2010-03-24  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/mips/dl-lookup.c: Update from generic version.
+
+2010-03-23  Mischa Jonker  <mischa.jonker@xxxxxxxxxxxxxxx>
+
+	[BZ #11291]
+	* sysdeps/mips/bits/atomic.h
+	(__arch_compare_and_exchange_xxx_32_int,
+	__arch_compare_and_exchange_xxx_64_int,
+	__arch_exchange_xxx_32_int, __arch_exchange_xxx_64_int,
+	__arch_exchange_and_add_32_int, __arch_exchange_and_add_64_int):
+	Specify *mem as asm output as well as input.
+
 2010-02-10  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/mips/fpu/fegetenv.c: Add hidden alias.

Modified: trunk/ports/sysdeps/alpha/bits/atomic.h
==============================================================================
--- trunk/ports/sysdeps/alpha/bits/atomic.h (original)
+++ trunk/ports/sysdeps/alpha/bits/atomic.h Fri Mar 26 14:08:35 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -221,7 +221,7 @@
 
 #define __arch_exchange_8_int(mem, value, mb1, mb2)			\
 ({									\
-  unsigned long __ret, __tmp, __addr64, __sval;				\
+  unsigned long __tmp, __addr64, __sval; __typeof(*mem) __ret;		\
   __asm__ __volatile__ (						\
 		mb1							\
 	"	andnot	%[__addr8],7,%[__addr64]\n"			\
@@ -244,7 +244,7 @@
 
 #define __arch_exchange_16_int(mem, value, mb1, mb2)			\
 ({									\
-  unsigned long __ret, __tmp, __addr64, __sval;				\
+  unsigned long __tmp, __addr64, __sval; __typeof(*mem) __ret;		\
   __asm__ __volatile__ (						\
 		mb1							\
 	"	andnot	%[__addr16],7,%[__addr64]\n"			\
@@ -267,7 +267,7 @@
 
 #define __arch_exchange_32_int(mem, value, mb1, mb2)			\
 ({									\
-  signed int __ret, __tmp;						\
+  signed int __tmp; __typeof(*mem) __ret;				\
   __asm__ __volatile__ (						\
 		mb1							\
 	"1:	ldl_l	%[__ret],%[__mem]\n"				\
@@ -284,7 +284,7 @@
 
 #define __arch_exchange_64_int(mem, value, mb1, mb2)			\
 ({									\
-  unsigned long __ret, __tmp;						\
+  unsigned long __tmp; __typeof(*mem) __ret;				\
   __asm__ __volatile__ (						\
 		mb1							\
 	"1:	ldq_l	%[__ret],%[__mem]\n"				\
@@ -316,7 +316,7 @@
 
 #define __arch_exchange_and_add_32_int(mem, value, mb1, mb2)		\
 ({									\
-  signed int __ret, __tmp;						\
+  signed int __tmp; __typeof(*mem) __ret;				\
   __asm__ __volatile__ (						\
 		mb1							\
 	"1:	ldl_l	%[__ret],%[__mem]\n"				\
@@ -333,7 +333,7 @@
 
 #define __arch_exchange_and_add_64_int(mem, value, mb1, mb2)		\
 ({									\
-  unsigned long __ret, __tmp;						\
+  unsigned long __tmp; __typeof(*mem) __ret;				\
   __asm__ __volatile__ (						\
 		mb1							\
 	"1:	ldq_l	%[__ret],%[__mem]\n"				\

Modified: trunk/ports/sysdeps/alpha/elf/configure
==============================================================================
--- trunk/ports/sysdeps/alpha/elf/configure (original)
+++ trunk/ports/sysdeps/alpha/elf/configure Fri Mar 26 14:08:35 2010
@@ -71,13 +71,9 @@
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.c <<\EOF
-static int bar;
+static volatile int bar;
 int baz __attribute__((visibility("hidden")));
-
-int foo (void)
-{
-  return bar + baz;
-}
+int f(void) { return bar + baz; }
 EOF
 
 libc_cv_alpha_hidden_gprel=no

Modified: trunk/ports/sysdeps/alpha/elf/configure.in
==============================================================================
--- trunk/ports/sysdeps/alpha/elf/configure.in (original)
+++ trunk/ports/sysdeps/alpha/elf/configure.in Fri Mar 26 14:08:35 2010
@@ -53,13 +53,9 @@
 
 AC_CACHE_CHECK(for GP relative module local relocs, libc_cv_alpha_hidden_gprel, [dnl
 cat > conftest.c <<\EOF
-static int bar;
+static volatile int bar;
 int baz __attribute__((visibility("hidden")));
-
-int foo (void)
-{
-  return bar + baz;
-}
+int f(void) { return bar + baz; }
 EOF
 dnl
 

Modified: trunk/ports/sysdeps/alpha/fpu/fegetenv.c
==============================================================================
--- trunk/ports/sysdeps/alpha/fpu/fegetenv.c (original)
+++ trunk/ports/sysdeps/alpha/fpu/fegetenv.c Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* Store current floating-point environment.
-   Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
+   Copyright (C) 1997,99,2000,2001,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@xxxxxxxx>, 1997
 
@@ -45,3 +45,4 @@
 #endif
 
 versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2);
+libm_hidden_ver(__fegetenv, fegetenv)

Modified: trunk/ports/sysdeps/arm/dl-trampoline.S
==============================================================================
--- trunk/ports/sysdeps/arm/dl-trampoline.S (original)
+++ trunk/ports/sysdeps/arm/dl-trampoline.S Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* PLT trampolines.  ARM version.
-   Copyright (C) 2005 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -29,6 +29,7 @@
 	.text
 	.globl _dl_runtime_resolve
 	.type _dl_runtime_resolve, #function
+	.cfi_sections .debug_frame
 	cfi_startproc
 	.align 2
 _dl_runtime_resolve:
@@ -77,6 +78,7 @@
 #ifndef PROF
 	.globl _dl_runtime_profile
 	.type _dl_runtime_profile, #function
+	.cfi_sections .debug_frame
 	cfi_startproc
 	.align 2
 _dl_runtime_profile:

Modified: trunk/ports/sysdeps/arm/eabi/__longjmp.S
==============================================================================
--- trunk/ports/sysdeps/arm/eabi/__longjmp.S (original)
+++ trunk/ports/sysdeps/arm/eabi/__longjmp.S Fri Mar 26 14:08:35 2010
@@ -1,5 +1,6 @@
 /* longjmp for ARM.
-   Copyright (C) 1997, 1998, 2005, 2006, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 2005, 2006, 2009, 2010
+     Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -31,10 +32,21 @@
 	moveq	r0, #1		/* can't let setjmp() return zero! */
 
 #ifdef CHECK_SP
-	ldr	r4, [ip, #32]
+	ldr	r4, [ip, #32]	/* jmpbuf's sp */
+	cfi_undefined (r4)
 	CHECK_SP (r4)
 #endif
 	LOADREGS(ia, ip!, {v1-v6, sl, fp, sp, lr})
+	cfi_restore (v1)
+	cfi_restore (v2)
+	cfi_restore (v3)
+	cfi_restore (v4)
+	cfi_restore (v5)
+	cfi_restore (v6)
+	cfi_restore (sl)
+	cfi_restore (fp)
+	cfi_restore (sp)
+	cfi_restore (lr)
 
 #ifdef IS_IN_rtld
   	ldr	a2, 1f

Modified: trunk/ports/sysdeps/arm/eabi/arm-mcount.S
==============================================================================
--- trunk/ports/sysdeps/arm/eabi/arm-mcount.S (original)
+++ trunk/ports/sysdeps/arm/eabi/arm-mcount.S Fri Mar 26 14:08:35 2010
@@ -1,5 +1,5 @@
 /* Implementation of profiling support.  ARM EABI version.
-   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -46,10 +46,22 @@
 
 ENTRY(__gnu_mcount_nc)
 	push {r0, r1, r2, r3, lr}
+	cfi_adjust_cfa_offset (20)
+	cfi_rel_offset (r0, 0)
+	cfi_rel_offset (r1, 4)
+	cfi_rel_offset (r2, 8)
+	cfi_rel_offset (r3, 12)
+	cfi_rel_offset (lr, 16)
 	bic r1, lr, #1
 	ldr r0, [sp, #20]
 	bl __mcount_internal
 	pop {r0, r1, r2, r3, ip, lr}
+	cfi_adjust_cfa_offset (-24)
+	cfi_restore (r0)
+	cfi_restore (r1)
+	cfi_restore (r2)
+	cfi_restore (r3)
+	cfi_register (lr, ip)
 	bx ip
 END(__gnu_mcount_nc)
 
@@ -59,6 +71,13 @@
 
 ENTRY(_mcount)
 	stmdb sp!, {r0, r1, r2, r3, fp, lr}
+	cfi_adjust_cfa_offset (24)
+	cfi_rel_offset (r0, 0)
+	cfi_rel_offset (r1, 4)
+	cfi_rel_offset (r2, 8)
+	cfi_rel_offset (r3, 12)
+	cfi_rel_offset (fp, 16)
+	cfi_rel_offset (lr, 20)
 #ifdef __thumb2__
 	movs r0, fp
 	ittt ne
@@ -73,6 +92,13 @@
 	ldmia sp!, {r0, r1, r2, r3, fp, pc}
 #else
 	ldmia sp!, {r0, r1, r2, r3, fp, lr}
+	cfi_adjust_cfa_offset (-24)
+	cfi_restore (r0)
+	cfi_restore (r1)
+	cfi_restore (r2)
+	cfi_restore (r3)
+	cfi_restore (fp)
+	cfi_restore (lr)
 	bx lr
 #endif
 END(_mcount)

Modified: trunk/ports/sysdeps/arm/memcpy.S
==============================================================================
--- trunk/ports/sysdeps/arm/memcpy.S (original)
+++ trunk/ports/sysdeps/arm/memcpy.S Fri Mar 26 14:08:35 2010
@@ -58,6 +58,11 @@
 ENTRY(memcpy)
 
 		stmfd	sp!, {r0, r4, lr}
+		cfi_adjust_cfa_offset (12)
+		cfi_rel_offset (r4, 4)
+		cfi_rel_offset (lr, 8)
+
+		cfi_remember_state
 
 		subs	r2, r2, #4
 		blt	8f
@@ -69,6 +74,11 @@
 
 1:		subs	r2, r2, #(28)
 		stmfd	sp!, {r5 - r8}
+		cfi_adjust_cfa_offset (16)
+		cfi_rel_offset (r5, 0)
+		cfi_rel_offset (r6, 4)
+		cfi_rel_offset (r7, 8)
+		cfi_rel_offset (r8, 12)
 		blt	5f
 
 	CALGN(	ands	ip, r1, #31		)
@@ -121,6 +131,11 @@
 	CALGN(	bcs	2b			)
 
 7:		ldmfd	sp!, {r5 - r8}
+		cfi_adjust_cfa_offset (-16)
+		cfi_restore (r5)
+		cfi_restore (r6)
+		cfi_restore (r7)
+		cfi_restore (r8)
 
 8:		movs	r2, r2, lsl #31
 		ldrneb	r3, [r1], #1
@@ -132,10 +147,15 @@
 
 #if defined (__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)
 		ldmfd	sp!, {r0, r4, lr}
+		cfi_adjust_cfa_offset (-12)
+		cfi_restore (r4)
+		cfi_restore (lr)
 		bx      lr
 #else
 		ldmfd	sp!, {r0, r4, pc}
 #endif
+
+		cfi_restore_state
 
 9:		rsb	ip, ip, #4
 		cmp	ip, #2
@@ -169,6 +189,12 @@
 	CALGN(	bcc	15f			)
 
 11:		stmfd	sp!, {r5 - r9}
+		cfi_adjust_cfa_offset (20)
+		cfi_rel_offset (r5, 0)
+		cfi_rel_offset (r6, 4)
+		cfi_rel_offset (r7, 8)
+		cfi_rel_offset (r8, 12)
+		cfi_rel_offset (r9, 16)
 
 	PLD(	pld	[r1, #0]		)
 	PLD(	subs	r2, r2, #96		)
@@ -203,6 +229,12 @@
 	PLD(	bge	13b			)
 
 		ldmfd	sp!, {r5 - r9}
+		cfi_adjust_cfa_offset (-20)
+		cfi_restore (r5)
+		cfi_restore (r6)
+		cfi_restore (r7)
+		cfi_restore (r8)
+		cfi_restore (r9)
 
 14:		ands	ip, r2, #28
 		beq	16f

Modified: trunk/ports/sysdeps/arm/memmove.S
==============================================================================
--- trunk/ports/sysdeps/arm/memmove.S (original)
+++ trunk/ports/sysdeps/arm/memmove.S Fri Mar 26 14:08:35 2010
@@ -73,6 +73,12 @@
 #endif
 
 		stmfd	sp!, {r0, r4, lr}
+		cfi_adjust_cfa_offset (12)
+		cfi_rel_offset (r4, 4)
+		cfi_rel_offset (lr, 8)
+
+		cfi_remember_state
+
 		add	r1, r1, r2
 		add	r0, r0, r2
 		subs	r2, r2, #4
@@ -85,6 +91,11 @@
 
 1:		subs	r2, r2, #(28)
 		stmfd	sp!, {r5 - r8}
+		cfi_adjust_cfa_offset (16)
+		cfi_rel_offset (r5, 0)
+		cfi_rel_offset (r6, 4)
+		cfi_rel_offset (r7, 8)
+		cfi_rel_offset (r8, 12)
 		blt	5f
 
 	CALGN(	ands	ip, r1, #31		)
@@ -136,6 +147,11 @@
 	CALGN(	bcs	2b			)
 
 7:		ldmfd	sp!, {r5 - r8}
+		cfi_adjust_cfa_offset (-16)
+		cfi_restore (r5)
+		cfi_restore (r6)
+		cfi_restore (r7)
+		cfi_restore (r8)
 
 8:		movs	r2, r2, lsl #31
 		ldrneb	r3, [r1, #-1]!
@@ -144,12 +160,18 @@
 		strneb	r3, [r0, #-1]!
 		strcsb	r4, [r0, #-1]!
 		strcsb	ip, [r0, #-1]
+
 #if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__)
 		ldmfd	sp!, {r0, r4, lr}
+		cfi_adjust_cfa_offset (-12)
+		cfi_restore (r4)
+		cfi_restore (lr)
 		bx      lr
 #else
 		ldmfd	sp!, {r0, r4, pc}
 #endif
+
+		cfi_restore_state
 
 9:		cmp	ip, #2
 		ldrgtb	r3, [r1, #-1]!
@@ -182,6 +204,12 @@
 	CALGN(	bcc	15f			)
 
 11:		stmfd	sp!, {r5 - r9}
+		cfi_adjust_cfa_offset (20)
+		cfi_rel_offset (r5, 0)
+		cfi_rel_offset (r6, 4)
+		cfi_rel_offset (r7, 8)
+		cfi_rel_offset (r8, 12)

[... 1310 lines stripped ...]