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

[commits] r11997 - in /fsf/glibc-2_11-branch/libc: ./ elf/ hurd/ hurd/hurd/ malloc/ manual/ nptl/ nptl/sysdeps/unix/sysv/linux/i386/ p...



Author: eglibc
Date: Tue Nov  9 00:09:28 2010
New Revision: 11997

Log:
Import glibc-2.11 for 2010-11-09

Added:
    fsf/glibc-2_11-branch/libc/nptl/sysdeps/unix/sysv/linux/i386/Makefile   (with props)
    fsf/glibc-2_11-branch/libc/posix/bug-regex31.c
    fsf/glibc-2_11-branch/libc/posix/bug-regex31.input
    fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390-linux-gnu.data
    fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390x-linux-gnu.data
    fsf/glibc-2_11-branch/libc/sysdeps/i386/elf/Makefile   (with props)
Modified:
    fsf/glibc-2_11-branch/libc/ChangeLog
    fsf/glibc-2_11-branch/libc/INSTALL
    fsf/glibc-2_11-branch/libc/Makeconfig
    fsf/glibc-2_11-branch/libc/config.make.in
    fsf/glibc-2_11-branch/libc/configure
    fsf/glibc-2_11-branch/libc/configure.in
    fsf/glibc-2_11-branch/libc/elf/Makefile
    fsf/glibc-2_11-branch/libc/elf/dl-open.c
    fsf/glibc-2_11-branch/libc/elf/dl-sysdep.c
    fsf/glibc-2_11-branch/libc/elf/rtld-Rules
    fsf/glibc-2_11-branch/libc/hurd/hurd/fd.h
    fsf/glibc-2_11-branch/libc/hurd/hurdselect.c
    fsf/glibc-2_11-branch/libc/hurd/lookup-at.c
    fsf/glibc-2_11-branch/libc/malloc/malloc.c
    fsf/glibc-2_11-branch/libc/malloc/mcheck.c
    fsf/glibc-2_11-branch/libc/manual/arith.texi
    fsf/glibc-2_11-branch/libc/manual/locale.texi
    fsf/glibc-2_11-branch/libc/manual/memory.texi
    fsf/glibc-2_11-branch/libc/nptl/ChangeLog
    fsf/glibc-2_11-branch/libc/nptl/Makefile
    fsf/glibc-2_11-branch/libc/posix/Makefile
    fsf/glibc-2_11-branch/libc/posix/regcomp.c
    fsf/glibc-2_11-branch/libc/resolv/res_init.c
    fsf/glibc-2_11-branch/libc/stdlib/strtod_l.c
    fsf/glibc-2_11-branch/libc/sysdeps/mach/hurd/linkat.c
    fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-32/__longjmp.c
    fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-64/__longjmp.c
    fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/check_pf.c
    fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/getdents.c
    fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname.c
    fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname_r.c
    fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
    fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h
    fsf/glibc-2_11-branch/libc/sysdeps/x86_64/cacheinfo.c

Modified: fsf/glibc-2_11-branch/libc/ChangeLog
==============================================================================
--- fsf/glibc-2_11-branch/libc/ChangeLog (original)
+++ fsf/glibc-2_11-branch/libc/ChangeLog Tue Nov  9 00:09:28 2010
@@ -1,9 +1,15 @@
-2010-10-25  Ulrich Drepper  <drepper@xxxxxxxxxx>
-
-	[BZ #12159]
-	* sysdeps/x86_64/multiarch/strchr.S: Fix propagation of search byte
-	into all bytes of SSE register.
-	Patch by Richard Li <richardpku@xxxxxxxxx>.
+2010-10-24  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #12140]
+	* malloc/malloc.c (_int_free): Fill correct number of bytes when
+	perturbing.
+
+2010-09-09  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	* Makeconfig (sysd-rules-patterns): Add rtld-%:rtld-%.
+	(sysd-rules-targets): Remove duplicates.
+	* elf/rtld-Rules ($(objpfx)rtld-%.os): Add pattern rules with
+	rtld-%.$o dependency.
 
 2010-10-22  Andreas Schwab  <schwab@xxxxxxxxxx>
 
@@ -20,6 +26,174 @@
 	(do_preload): Use __RTLD_SECURE instead of is_preloaded.
 	(dlmopen_doit): Add __RTLD_SECURE to mode bits.
 
+2010-10-18  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	* elf/dl-open.c (dl_open_worker): Don't expand DST here, let
+	_dl_map_object do it.
+
+2010-10-15  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	* scripts/data/localplt-s390-linux-gnu.data: New file.
+	* scripts/data/localplt-s390x-linux-gnu.data: New file.
+
+2010-10-12  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #12078]
+	* posix/regcomp.c (parse_branch): One more memory leak plugged.
+	* posix/bug-regex31.input: Add test case.
+
+2010-10-11  Ulrich Drepper  <drepper@xxxxxxxxx>
+
+	* posix/bug-regex31.c: Rewrite to run multiple tests from stdin.
+	* posix/bug-regex31.input: New file.
+
+	[BZ #12078]
+	* posix/regcomp.c (parse_branch): Free memory when allocation failed.
+	(parse_sub_exp): Fix last change, use postorder.
+
+	* posix/bug-regex31.c: New file.
+	* posix/Makefile: Add rules to build and run bug-regex31.
+
+	* posix/regcomp.c (parse_bracket_exp): Add missing re_free calls.
+
+	[BZ #12078]
+	* posix/regcomp.c (parse_sub_exp): Free tree data when it is not used.
+
+	[BZ #12093]
+	* sysdeps/unix/sysv/linux/check_pf.c (__check_pf): ->ifa_addr might
+	be NULL.
+
+2010-09-15  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/getdents.c (__GETDENTS): When
+	implementing getdents64 using getdents syscall, set d_type if
+	__ASSUME_GETDENTS32_D_TYPE.
+
+2010-09-14  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	* sysdeps/s390/s390-32/__longjmp.c (__longjmp): Define register
+	variables after CHECK_SP call.
+	* sysdeps/s390/s390-64/__longjmp.c (__longjmp): Likewise.
+
+2010-09-08  Chung-Lin Tang  <cltang@xxxxxxxxxxxxxxxx>
+	    Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #11968]
+	* sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
+	(____longjmp_chk): Use %ebx for saving value across system call.
+	Add unwind info.
+
+2010-08-31  Mike Frysinger  <vapier@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/x86_64/sys/epoll.h: Fix typo.
+
+2010-08-31  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	[BZ #7066]
+	* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix array overflow when
+	shifting retval into place.
+
+2010-09-14  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* resolv/res_init.c (__res_vinit): Count the default server we added.
+
+2010-08-25  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #10851]
+	* resolv/res_init.c (__res_vinit): When no server address at all
+	is given default to loopback.
+
+2010-08-12  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	* sysdeps/i386/elf/Makefile: New file.
+
+2010-07-31  Samuel Thibault  <samuel.thibault@xxxxxxxxxxxx>
+
+	* hurd/hurdselect.c (_hurd_select): Round timeout up instead of down
+	when converting to ms.
+
+2010-07-29  Roland McGrath  <roland@xxxxxxxxxx>
+
+	[BZ 11856]
+	* manual/locale.texi (Yes-or-No Questions): Fix example code.
+
+2010-07-27  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	* manual/memory.texi (Malloc Tunable Parameters): Document
+	M_PERTURB.
+
+2010-07-26  Roland McGrath  <roland@xxxxxxxxxx>
+
+	[BZ #11840]
+	* configure.in (-fgnu89-inline check): Set and substitute
+	gnu89_inline, not libc_cv_gnu89_inline.
+	* configure: Regenerated.
+	* config.make.in (gnu89-inline-CFLAGS): Use @gnu89_inline@.
+
+2010-07-20  Roland McGrath  <roland@xxxxxxxxxx>
+
+	* elf/dl-sysdep.c (_dl_important_hwcaps): Add dsocaps mask to
+	dl_hwcap_mask as well as dl_hwcap.  Without this, dsocaps matching in
+	ld.so.cache was broken.  With it, there is no way to disable dsocaps
+	like LD_HWCAP_MASK can disable hwcaps.
+
+2010-07-05  Roland McGrath  <roland@xxxxxxxxxx>
+
+	* manual/arith.texi (Rounding Functions): Fix rint description
+	implicit in round description.
+
+2010-07-02  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* elf/Makefile: Fix linking for a few tests to make recent linker
+	happy.
+
+2010-06-02  Emilio Pozuelo Monfort  <pochu27@xxxxxxxxx>
+
+	* hurd/lookup-at.c (__file_name_lookup_at): Accept
+	AT_SYMLINK_FOLLOW in AT_FLAGS.  Fail with EINVAL if both
+	AT_SYMLINK_FOLLOW and AT_SYMLINK_NOFOLLOW are present
+	in AT_FLAGS.
+	* hurd/hurd/fd.h (__file_name_lookup_at): Update comment.
+	* sysdeps/mach/hurd/linkat.c (linkat): Pass O_NOLINK in FLAGS.
+
+2010-11-03  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	[BZ #12191]
+	* sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Round
+	__x86_64_data_cache_size_half, __x86_64_data_cache_size
+	__x86_64_shared_cache_size_half and __x86_64_shared_cache_size,
+	to multiple of 256 bytes.
+
+2010-11-03  Ulrich Drepper  <drepper@xxxxxxxxx>
+
+	[BZ #12167]
+	* sysdeps/unix/sysv/linux/ttyname.c (ttyname): Recognize new mangling
+	of inacessible symlinks.  Verify result of symlink before returning it.
+	* sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Likewise.
+	Patch mostly by Miklos Szeredi <miklos@xxxxxxxxxx>.
+
+2010-10-25  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #12159]
+	* sysdeps/x86_64/multiarch/strchr.S: Fix propagation of search byte
+	into all bytes of SSE register.
+	Patch by Richard Li <richardpku@xxxxxxxxx>.
+
+2010-10-22  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	* include/dlfcn.h (__RTLD_SECURE): Define.
+	* elf/dl-load.c (_dl_map_object): Remove preloaded parameter.  Use
+	mode & __RTLD_SECURE instead.
+	(open_path): Rename preloaded parameter to secure.
+	* sysdeps/generic/ldsodefs.h (_dl_map_object): Adjust declaration.
+	* elf/dl-open.c (dl_open_worker): Adjust call to _dl_map_object.
+	* elf/dl-deps.c (openaux): Likewise.
+	* elf/rtld.c (struct map_args): Remove is_preloaded.
+	(map_doit): Don't use it.
+	(dl_main): Likewise.
+	(do_preload): Use __RTLD_SECURE instead of is_preloaded.
+	(dlmopen_doit): Add __RTLD_SECURE to mode bits.
+
 2010-10-06  Ulrich Drepper  <drepper@xxxxxxxxx>
 
 	* string/bug-strstr1.c: New file.
@@ -32,6 +206,9 @@
 	when skipping input due to the shift table.
 
 2010-10-03  Ulrich Drepper  <drepper@xxxxxxxxx>
+
+	[BZ #12005]
+	* malloc/mcheck.c: Handle large requests.
 
 	[BZ #12077]
 	* sysdeps/x86_64/strcmp.S: Fix handling of remaining bytes in buffer

Modified: fsf/glibc-2_11-branch/libc/INSTALL
==============================================================================
--- fsf/glibc-2_11-branch/libc/INSTALL (original)
+++ fsf/glibc-2_11-branch/libc/INSTALL Tue Nov  9 00:09:28 2010
@@ -317,11 +317,12 @@
      Check the FAQ for any special compiler issues on particular
      platforms.
 
-   * GNU `binutils' 2.15 or later
+   * GNU `binutils'
 
      You must use GNU `binutils' (as and ld) to build the GNU C library.
      No other assembler or linker has the necessary functionality at the
-     moment.
+     moment.  The configure scripts checks for the appropriate version
+     for the platform.  Too-old versions will prevent building glibc.
 
    * GNU `texinfo' 3.12f
 
@@ -460,4 +461,3 @@
 errors or omissions in this manual, please report them to the bug
 database.  If you refer to specific sections of the manual, please
 include the section names for easier identification.
-

Modified: fsf/glibc-2_11-branch/libc/Makeconfig
==============================================================================
--- fsf/glibc-2_11-branch/libc/Makeconfig (original)
+++ fsf/glibc-2_11-branch/libc/Makeconfig Tue Nov  9 00:09:28 2010
@@ -686,7 +686,7 @@
 	   -include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \
 	   $(CPPFLAGS-$(suffix $@)) \
 	   $(foreach lib,$(libof-$(basename $(@F))) \
-		         $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
+			 $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
 	   $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
 override CFLAGS	= -std=gnu99 $(gnu89-inline-CFLAGS) \
 		  $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
@@ -957,7 +957,7 @@
 # emitted into sysd-rules.  A sysdeps Makeconfig fragment can
 # add its own special object file prefix to this list with e.g. foo-%:%
 # to have foo-*.? compiled from *.? using $(foo-CPPFLAGS).
-sysd-rules-patterns := %:% rtld-%:% m_%:s_%
+sysd-rules-patterns := %:% rtld-%:rtld-% rtld-%:% m_%:s_%
 
 # Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here.
 sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig))
@@ -966,8 +966,8 @@
 endif
 
 # Compute just the target patterns.  Makeconfig has set sysd-rules-patterns.
-sysd-rules-targets := $(foreach p,$(sysd-rules-patterns),\
-		      		$(firstword $(subst :, ,$p)))
+sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\
+					 $(firstword $(subst :, ,$p))))
 
 endif # Makeconfig not yet included
 

Modified: fsf/glibc-2_11-branch/libc/config.make.in
==============================================================================
--- fsf/glibc-2_11-branch/libc/config.make.in (original)
+++ fsf/glibc-2_11-branch/libc/config.make.in Tue Nov  9 00:09:28 2010
@@ -58,7 +58,7 @@
 enable-check-abi = @enable_check_abi@
 have-forced-unwind = @libc_cv_forced_unwind@
 have-fpie = @libc_cv_fpie@
-gnu89-inline-CFLAGS = @libc_cv_gnu89_inline@
+gnu89-inline-CFLAGS = @gnu89_inline@
 have-ssp = @libc_cv_ssp@
 have-selinux = @have_selinux@
 have-libaudit = @have_libaudit@

Modified: fsf/glibc-2_11-branch/libc/configure
==============================================================================
--- fsf/glibc-2_11-branch/libc/configure (original)
+++ fsf/glibc-2_11-branch/libc/configure Tue Nov  9 00:09:28 2010
@@ -681,7 +681,7 @@
 exceptions
 no_whole_archive
 libc_cv_have_initfini
-libc_cv_gnu89_inline
+gnu89_inline
 libc_cv_ssp
 fno_unit_at_a_time
 libc_cv_hashstyle
@@ -6890,9 +6890,9 @@
 { $as_echo "$as_me:$LINENO: result: $libc_cv_gnu89_inline" >&5
 $as_echo "$libc_cv_gnu89_inline" >&6; }
 if test $libc_cv_gnu89_inline = yes; then
-  libc_cv_gnu89_inline=-fgnu89-inline
-else
-  libc_cv_gnu89_inline=
+  gnu89_inline=-fgnu89-inline
+else
+  gnu89_inline=
 fi
 
 

Modified: fsf/glibc-2_11-branch/libc/configure.in
==============================================================================
--- fsf/glibc-2_11-branch/libc/configure.in (original)
+++ fsf/glibc-2_11-branch/libc/configure.in Tue Nov  9 00:09:28 2010
@@ -1776,11 +1776,11 @@
 fi
 rm -f conftest*])
 if test $libc_cv_gnu89_inline = yes; then
-  libc_cv_gnu89_inline=-fgnu89-inline
-else
-  libc_cv_gnu89_inline=
-fi
-AC_SUBST(libc_cv_gnu89_inline)
+  gnu89_inline=-fgnu89-inline
+else
+  gnu89_inline=
+fi
+AC_SUBST(gnu89_inline)
 
 if test $elf != yes; then
   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,

Modified: fsf/glibc-2_11-branch/libc/elf/Makefile
==============================================================================
--- fsf/glibc-2_11-branch/libc/elf/Makefile (original)
+++ fsf/glibc-2_11-branch/libc/elf/Makefile Tue Nov  9 00:09:28 2010
@@ -759,11 +759,11 @@
 $(objpfx)tst-tls9: $(libdl)
 $(objpfx)tst-tls9.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
 
-$(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so
-
-$(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so
-
-$(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so
+$(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so $(objpfx)tst-tlsmod7.so
+
+$(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so $(objpfx)tst-tlsmod9.so
+
+$(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so $(objpfx)tst-tlsmod11.so
 
 $(objpfx)tst-tls13: $(libdl)
 $(objpfx)tst-tls13.out: $(objpfx)tst-tlsmod13a.so

Modified: fsf/glibc-2_11-branch/libc/elf/dl-open.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/elf/dl-open.c (original)
+++ fsf/glibc-2_11-branch/libc/elf/dl-open.c Tue Nov  9 00:09:28 2010
@@ -220,35 +220,6 @@
 
   assert (_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT);
 
-  /* Maybe we have to expand a DST.  */
-  if (__builtin_expect (dst != NULL, 0))
-    {
-      size_t len = strlen (file);
-
-      /* Determine how much space we need.  We have to allocate the
-	 memory locally.  */
-      size_t required = DL_DST_REQUIRED (call_map, file, len,
-					 _dl_dst_count (dst, 0));
-
-      /* Get space for the new file name.  */
-      char *new_file = (char *) alloca (required + 1);
-
-      /* Generate the new file name.  */
-      _dl_dst_substitute (call_map, file, new_file, 0);
-
-      /* If the substitution failed don't try to load.  */
-      if (*new_file == '\0')
-	_dl_signal_error (0, "dlopen", NULL,
-			  N_("empty dynamic string token substitution"));
-
-      /* Now we have a new file name.  */
-      file = new_file;
-
-      /* It does not matter whether call_map is set even if we
-	 computed it only because of the DST.  Since the path contains
-	 a slash the value is not used.  See dl-load.c.  */
-    }
-
   /* Load the named object.  */
   struct link_map *new;
   args->map = new = _dl_map_object (call_map, file, lt_loaded, 0,

Modified: fsf/glibc-2_11-branch/libc/elf/dl-sysdep.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/elf/dl-sysdep.c (original)
+++ fsf/glibc-2_11-branch/libc/elf/dl-sysdep.c Tue Nov  9 00:09:28 2010
@@ -424,6 +424,11 @@
     {
       const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1];
       GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA;
+      /* Note that we add the dsocaps to the set already chosen by the
+	 LD_HWCAP_MASK environment variable (or default HWCAP_IMPORTANT).
+	 So there is no way to request ignoring an OS-supplied dsocap
+	 string and bit like you can ignore an OS-supplied HWCAP bit.  */
+      GLRO(dl_hwcap_mask) |= (uint64_t) mask << _DL_FIRST_EXTRA;
       size_t len;
       for (const char *p = dsocaps; p < dsocaps + dsocapslen; p += len + 1)
 	{

Modified: fsf/glibc-2_11-branch/libc/elf/rtld-Rules
==============================================================================
--- fsf/glibc-2_11-branch/libc/elf/rtld-Rules (original)
+++ fsf/glibc-2_11-branch/libc/elf/rtld-Rules Tue Nov  9 00:09:28 2010
@@ -1,6 +1,6 @@
 # Subroutine makefile for compiling libc modules linked into dynamic linker.
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2002,2003,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
@@ -56,7 +56,7 @@
 # Use the verbose option of ar and tar when not running silently.
 ifeq	"$(findstring s,$(MAKEFLAGS))" ""	# if not -s
 verbose := v
-else	   					# -s
+else						# -s
 verbose	:=
 endif						# not -s
 
@@ -93,6 +93,12 @@
 # These are the basic compilation rules corresponding to the Makerules ones.
 # The sysd-rules generated makefile already defines pattern rules for rtld-%
 # targets built from sysdeps source files.
+$(objpfx)rtld-%.os: rtld-%.S $(before-compile)
+	$(compile-command.S) $(rtld-CPPFLAGS)
+$(objpfx)rtld-%.os: rtld-%.s $(before-compile)
+	$(compile-command.s) $(rtld-CPPFLAGS)
+$(objpfx)rtld-%.os: rtld-%.c $(before-compile)
+	$(compile-command.c) $(rtld-CPPFLAGS)
 $(objpfx)rtld-%.os: %.S $(before-compile)
 	$(compile-command.S) $(rtld-CPPFLAGS)
 $(objpfx)rtld-%.os: %.s $(before-compile)
@@ -101,6 +107,9 @@
 	$(compile-command.c) $(rtld-CPPFLAGS)
 
 # The rules for generated source files.
+$(objpfx)rtld-%.os: $(objpfx)rtld-%.S $(before-compile); $(compile-command.S)
+$(objpfx)rtld-%.os: $(objpfx)rtld-%.s $(before-compile); $(compile-command.s)
+$(objpfx)rtld-%.os: $(objpfx)rtld-%.c $(before-compile); $(compile-command.c)
 $(objpfx)rtld-%.os: $(objpfx)%.S $(before-compile); $(compile-command.S)
 $(objpfx)rtld-%.os: $(objpfx)%.s $(before-compile); $(compile-command.s)
 $(objpfx)rtld-%.os: $(objpfx)%.c $(before-compile); $(compile-command.c)

Modified: fsf/glibc-2_11-branch/libc/hurd/hurd/fd.h
==============================================================================
--- fsf/glibc-2_11-branch/libc/hurd/hurd/fd.h (original)
+++ fsf/glibc-2_11-branch/libc/hurd/hurd/fd.h Tue Nov  9 00:09:28 2010
@@ -254,8 +254,9 @@
 			 const sigset_t *sigmask);
 
 /* Variant of file_name_lookup used in *at function implementations.
-   AT_FLAGS should contain only AT_SYMLINK_NOFOLLOW; other bits
-   cause EINVAL.  */
+   AT_FLAGS may only contain AT_SYMLINK_FOLLOW or AT_SYMLINK_NOFOLLOW,
+   which will remove and add O_NOLINK from FLAGS respectively.
+   Other bits cause EINVAL.  */
 extern file_t __file_name_lookup_at (int fd, int at_flags,
 				     const char *file_name,
 				     int flags, mode_t mode);

Modified: fsf/glibc-2_11-branch/libc/hurd/hurdselect.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/hurd/hurdselect.c (original)
+++ fsf/glibc-2_11-branch/libc/hurd/hurdselect.c Tue Nov  9 00:09:28 2010
@@ -52,7 +52,7 @@
   int firstfd, lastfd;
   mach_msg_timeout_t to = (timeout != NULL ?
 			   (timeout->tv_sec * 1000 +
-			    timeout->tv_nsec / 1000000) :
+			    (timeout->tv_nsec + 999999) / 1000000) :
 			   0);
   struct
     {

Modified: fsf/glibc-2_11-branch/libc/hurd/lookup-at.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/hurd/lookup-at.c (original)
+++ fsf/glibc-2_11-branch/libc/hurd/lookup-at.c Tue Nov  9 00:09:28 2010
@@ -30,8 +30,14 @@
   error_t err;
   file_t result;
 
+  if ((at_flags & AT_SYMLINK_FOLLOW) && (at_flags & AT_SYMLINK_NOFOLLOW))
+    return (__hurd_fail (EINVAL), MACH_PORT_NULL);
+
   flags |= (at_flags & AT_SYMLINK_NOFOLLOW) ? O_NOLINK : 0;
   at_flags &= ~AT_SYMLINK_NOFOLLOW;
+  if (at_flags & AT_SYMLINK_FOLLOW)
+    flags &= ~O_NOLINK;
+  at_flags &= ~AT_SYMLINK_FOLLOW;
   if (at_flags != 0)
     return (__hurd_fail (EINVAL), MACH_PORT_NULL);
 

Modified: fsf/glibc-2_11-branch/libc/malloc/malloc.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/malloc/malloc.c (original)
+++ fsf/glibc-2_11-branch/libc/malloc/malloc.c Tue Nov  9 00:09:28 2010
@@ -4850,7 +4850,7 @@
       }
 
     if (__builtin_expect (perturb_byte, 0))
-      free_perturb (chunk2mem(p), size - SIZE_SZ);
+      free_perturb (chunk2mem(p), size - 2 * SIZE_SZ);
 
     set_fastchunks(av);
     fb = &fastbin (av, fastbin_index(size));
@@ -4938,7 +4938,7 @@
       }
 
     if (__builtin_expect (perturb_byte, 0))
-      free_perturb (chunk2mem(p), size - SIZE_SZ);
+      free_perturb (chunk2mem(p), size - 2 * SIZE_SZ);
 
     /* consolidate backward */
     if (!prev_inuse(p)) {

Modified: fsf/glibc-2_11-branch/libc/malloc/mcheck.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/malloc/mcheck.c (original)
+++ fsf/glibc-2_11-branch/libc/malloc/mcheck.c Tue Nov  9 00:09:28 2010
@@ -1,5 +1,6 @@
 /* Standard debugging hooks for `malloc'.
-   Copyright (C) 1990-1997,1999,2000-2002,2007 Free Software Foundation, Inc.
+   Copyright (C) 1990-1997,1999,2000-2002,2007,2010
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written May 1989 by Mike Haertel.
 
@@ -25,6 +26,7 @@
 # include <stdint.h>
 # include <stdio.h>
 # include <libintl.h>
+# include <errno.h>
 #endif
 
 /* Old hook values.  */
@@ -209,6 +211,12 @@
   if (pedantic)
     mcheck_check_all ();
 
+  if (size > ~((size_t) 0) - (sizeof (struct hdr) + 1))
+    {
+      __set_errno (ENOMEM);
+      return NULL;
+    }
+
   __malloc_hook = old_malloc_hook;
   if (old_malloc_hook != NULL)
     hdr = (struct hdr *) (*old_malloc_hook) (sizeof (struct hdr) + size + 1,
@@ -241,6 +249,12 @@
 
   slop = (sizeof *hdr + alignment - 1) & -alignment;
 
+  if (size > ~((size_t) 0) - (slop + 1))
+    {
+      __set_errno (ENOMEM);
+      return NULL;
+    }
+
   __memalign_hook = old_memalign_hook;
   if (old_memalign_hook != NULL)
     block = (*old_memalign_hook) (alignment, slop + size + 1, caller);
@@ -275,6 +289,12 @@
 
   if (pedantic)
     mcheck_check_all ();
+
+  if (size > ~((size_t) 0) - (sizeof (struct hdr) + 1))
+    {
+      __set_errno (ENOMEM);
+      return NULL;
+    }
 
   if (ptr)
     {

Modified: fsf/glibc-2_11-branch/libc/manual/arith.texi
==============================================================================
--- fsf/glibc-2_11-branch/libc/manual/arith.texi (original)
+++ fsf/glibc-2_11-branch/libc/manual/arith.texi Tue Nov  9 00:09:28 2010
@@ -1407,7 +1407,8 @@
 @comment ISO
 @deftypefunx {long double} roundl (long double @var{x})
 These functions are similar to @code{rint}, but they round halfway
-cases away from zero instead of to the nearest even integer.
+cases away from zero instead of to the nearest integer (or other
+current rounding mode).
 @end deftypefun
 
 @comment math.h

Modified: fsf/glibc-2_11-branch/libc/manual/locale.texi
==============================================================================
--- fsf/glibc-2_11-branch/libc/manual/locale.texi (original)
+++ fsf/glibc-2_11-branch/libc/manual/locale.texi Tue Nov  9 00:09:28 2010
@@ -1210,7 +1210,7 @@
   /* @r{Prepare the @code{getline} call.}  */
   line = NULL;
   len = 0;
-  while (getline (&line, &len, stdout) >= 0)
+  while (getline (&line, &len, stdin) >= 0)
     @{
       /* @r{Check the response.}  */
       int res = rpmatch (line);

Modified: fsf/glibc-2_11-branch/libc/manual/memory.texi
==============================================================================
--- fsf/glibc-2_11-branch/libc/manual/memory.texi (original)
+++ fsf/glibc-2_11-branch/libc/manual/memory.texi Tue Nov  9 00:09:28 2010
@@ -702,6 +702,11 @@
 @item M_MMAP_MAX
 The maximum number of chunks to allocate with @code{mmap}.  Setting this
 to zero disables all use of @code{mmap}.
+@item M_PERTURB
+If non-zero, memory blocks are filled with values depending on some
+low order bits of this parameter when they are allocated (except when
+allocated by @code{calloc}) and freed.  This can be used to debug the
+use of uninitialized or freed heap memory.
 @end table
 
 @end deftypefun

Modified: fsf/glibc-2_11-branch/libc/nptl/ChangeLog
==============================================================================
--- fsf/glibc-2_11-branch/libc/nptl/ChangeLog (original)
+++ fsf/glibc-2_11-branch/libc/nptl/ChangeLog Tue Nov  9 00:09:28 2010
@@ -1,3 +1,18 @@
+2010-10-13  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	[BZ #12113]
+	* sysdeps/x86_64/pthreaddef.h (TCB_ALIGNMENT): Changed to 32.
+	* sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Defined with alignment
+	of "struct pthread".
+
+2010-08-12  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	* nptl/sysdeps/unix/sysv/linux/i386/Makefile: New file.
+
+2010-07-01  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* Makefile (tst-_res1): Add tst-_res1mod1 to dependency list.
+
 2010-10-13  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
 
 	[BZ #12113]

Modified: fsf/glibc-2_11-branch/libc/nptl/Makefile
==============================================================================
--- fsf/glibc-2_11-branch/libc/nptl/Makefile (original)
+++ fsf/glibc-2_11-branch/libc/nptl/Makefile Tue Nov  9 00:09:28 2010
@@ -489,7 +489,8 @@
 $(objpfx)tst-_res1mod2.so: $(objpfx)tst-_res1mod1.so
 LDFLAGS-tst-_res1mod1.so = -Wl,-soname,tst-_res1mod1.so
 LDFLAGS-tst-_res1mod2.so = -Wl,-soname,tst-_res1mod2.so
-$(objpfx)tst-_res1: $(objpfx)tst-_res1mod2.so $(shared-thread-library)
+$(objpfx)tst-_res1: $(objpfx)tst-_res1mod1.so $(objpfx)tst-_res1mod2.so \
+		    $(shared-thread-library)
 else
 $(objpfx)tst-cond11: $(common-objpfx)rt/librt.a
 $(objpfx)tst-cond19: $(common-objpfx)rt/librt.a

Added: fsf/glibc-2_11-branch/libc/nptl/sysdeps/unix/sysv/linux/i386/Makefile
==============================================================================
Binary file - no diff available.

Propchange: fsf/glibc-2_11-branch/libc/nptl/sysdeps/unix/sysv/linux/i386/Makefile
------------------------------------------------------------------------------
    svn:mime-type = audio/x-669-mod

Modified: fsf/glibc-2_11-branch/libc/posix/Makefile
==============================================================================
--- fsf/glibc-2_11-branch/libc/posix/Makefile (original)
+++ fsf/glibc-2_11-branch/libc/posix/Makefile Tue Nov  9 00:09:28 2010
@@ -82,7 +82,7 @@
 		   bug-regex17 bug-regex18 bug-regex19 bug-regex20 \
 		   bug-regex21 bug-regex22 bug-regex23 bug-regex24 \
 		   bug-regex25 bug-regex26 bug-regex27 bug-regex28 \
-		   bug-regex29 bug-regex30 \
+		   bug-regex29 bug-regex30 bug-regex31 \
 		   tst-nice tst-nanosleep tst-regex2 \
 		   transbug tst-rxspencer tst-pcre tst-boost \
 		   bug-ga1 tst-vfork1 tst-vfork2 tst-vfork3 tst-waitid \
@@ -109,6 +109,7 @@
 	     annexc annexc.out wordexp-tst.out bug-regex2-mem \
 	     bug-regex2.mtrace bug-regex14-mem bug-regex14.mtrace \
 	     bug-regex21-mem bug-regex21.mtrace \
+	     bug-regex31-mem bug-regex31.mtrace \
 	     tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \
 	     tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \
 	     bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \
@@ -222,7 +223,7 @@
 tests: $(objpfx)annexc.out
 ifeq (no,$(cross-compiling))
 tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \
-  $(objpfx)bug-regex21-mem $(objpfx)tst-rxspencer-mem \
+  $(objpfx)bug-regex21-mem $(objpfx)bug-regex31-mem $(objpfx)tst-rxspencer-mem\
   $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \
   $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem
 xtests: $(objpfx)bug-ga2-mem
@@ -250,6 +251,11 @@
 
 $(objpfx)bug-regex21-mem: $(objpfx)bug-regex21.out
 	$(common-objpfx)malloc/mtrace $(objpfx)bug-regex21.mtrace > $@
+
+bug-regex31-ENV = MALLOC_TRACE=$(objpfx)bug-regex31.mtrace
+
+$(objpfx)bug-regex31-mem: $(objpfx)bug-regex31.out
+	$(common-objpfx)malloc/mtrace $(objpfx)bug-regex31.mtrace > $@
 
 tst-vfork3-ENV = MALLOC_TRACE=$(objpfx)tst-vfork3.mtrace
 

Added: fsf/glibc-2_11-branch/libc/posix/bug-regex31.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/posix/bug-regex31.c (added)
+++ fsf/glibc-2_11-branch/libc/posix/bug-regex31.c Tue Nov  9 00:09:28 2010
@@ -1,0 +1,36 @@
+#include <mcheck.h>
+#include <regex.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+int
+main (void)
+{
+  mtrace ();
+
+  int res = 0;
+  char *buf = NULL;
+  size_t len = 0;
+  while (! feof (stdin))
+    {
+      ssize_t n = getline (&buf, &len, stdin);
+      if (n <= 0)
+	break;
+      if (buf[n - 1] == '\n')
+	buf[n - 1] = '\0';
+
+      regex_t regex;
+      int rc = regcomp (&regex, buf, REG_EXTENDED);
+      if (rc != 0)
+	printf ("%s: Error %d (expected)\n", buf, rc);
+      else
+	{
+	  printf ("%s: succeeded !\n", buf);
+	  res = 1;
+	}
+    }
+
+  free (buf);
+
+  return 0;
+}

Added: fsf/glibc-2_11-branch/libc/posix/bug-regex31.input
==============================================================================
--- fsf/glibc-2_11-branch/libc/posix/bug-regex31.input (added)
+++ fsf/glibc-2_11-branch/libc/posix/bug-regex31.input Tue Nov  9 00:09:28 2010
@@ -1,0 +1,4 @@
+[[][
+([0]
+([0]a
+([0]([0])

Modified: fsf/glibc-2_11-branch/libc/posix/regcomp.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/posix/regcomp.c (original)
+++ fsf/glibc-2_11-branch/libc/posix/regcomp.c Tue Nov  9 00:09:28 2010
@@ -2154,16 +2154,21 @@
       exp = parse_expression (regexp, preg, token, syntax, nest, err);
       if (BE (*err != REG_NOERROR && exp == NULL, 0))
 	{
+	  if (tree != NULL)
+	    postorder (tree, free_tree, NULL);
 	  return NULL;
 	}
       if (tree != NULL && exp != NULL)
 	{
-	  tree = create_tree (dfa, tree, exp, CONCAT);
-	  if (tree == NULL)
+	  bin_tree_t *newtree = create_tree (dfa, tree, exp, CONCAT);
+	  if (newtree == NULL)
 	    {
+	      postorder (exp, free_tree, NULL);
+	      postorder (tree, free_tree, NULL);
 	      *err = REG_ESPACE;
 	      return NULL;
 	    }
+	  tree = newtree;
 	}
       else if (tree == NULL)
 	tree = exp;
@@ -2412,7 +2417,11 @@
     {
       tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
       if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
-	*err = REG_EPAREN;
+	{
+	  if (tree != NULL)
+	    postorder (tree, free_tree, NULL);
+	  *err = REG_EPAREN;
+	}
       if (BE (*err != REG_NOERROR, 0))
 	return NULL;
     }
@@ -3022,6 +3031,10 @@
   if (BE (sbcset == NULL, 0))
 #endif /* RE_ENABLE_I18N */
     {
+      re_free (sbcset);
+#ifdef RE_ENABLE_I18N
+      re_free (mbcset);
+#endif
       *err = REG_ESPACE;
       return NULL;
     }

Modified: fsf/glibc-2_11-branch/libc/resolv/res_init.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/resolv/res_init.c (original)
+++ fsf/glibc-2_11-branch/libc/resolv/res_init.c Tue Nov  9 00:09:28 2010
@@ -176,13 +176,6 @@
 		statp->id = res_randomid();
 	}
 
-#ifdef USELOOPBACK
-	statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1);
-#else
-	statp->nsaddr.sin_addr.s_addr = INADDR_ANY;
-#endif
-	statp->nsaddr.sin_family = AF_INET;
-	statp->nsaddr.sin_port = htons(NAMESERVER_PORT);
 	statp->nscount = 0;
 	statp->ndots = 1;
 	statp->pfcode = 0;
@@ -321,24 +314,24 @@
 			nserv++;
 #ifdef _LIBC
 			nservall++;
-                    } else {
-                        struct in6_addr a6;
-                        char *el;
-
-                        if ((el = strchr(cp, '\n')) != NULL)
-                            *el = '\0';
+		    } else {
+			struct in6_addr a6;
+			char *el;
+
+			if ((el = strchr(cp, '\n')) != NULL)
+			    *el = '\0';
 			if ((el = strchr(cp, SCOPE_DELIMITER)) != NULL)
 			    *el = '\0';
-                        if ((*cp != '\0') &&
-                            (inet_pton(AF_INET6, cp, &a6) > 0)) {
-                            struct sockaddr_in6 *sa6;
-
-                            sa6 = malloc(sizeof(*sa6));
-                            if (sa6 != NULL) {
-                                sa6->sin6_family = AF_INET6;
-                                sa6->sin6_port = htons(NAMESERVER_PORT);
+			if ((*cp != '\0') &&
+			    (inet_pton(AF_INET6, cp, &a6) > 0)) {
+			    struct sockaddr_in6 *sa6;
+
+			    sa6 = malloc(sizeof(*sa6));
+			    if (sa6 != NULL) {
+				sa6->sin6_family = AF_INET6;
+				sa6->sin6_port = htons(NAMESERVER_PORT);
 				sa6->sin6_flowinfo = 0;
-                                sa6->sin6_addr = a6;
+				sa6->sin6_addr = a6;
 
 				if (__builtin_expect (el == NULL, 1))
 				    sa6->sin6_scope_id = 0;
@@ -365,9 +358,9 @@
 				statp->_u._ext.nsaddrs[nservall] = sa6;
 				statp->_u._ext.nssocks[nservall] = -1;
 				statp->_u._ext.nsmap[nservall] = MAXNS + 1;
-                                nservall++;
-                            }
-                        }
+				nservall++;
+			    }
+			}
 #endif
 		    }
 		    continue;
@@ -433,6 +426,12 @@
 #endif
 	    (void) fclose(fp);
 	}
+	if (__builtin_expect(statp->nscount == 0, 0)) {
+	    statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1);
+	    statp->nsaddr.sin_family = AF_INET;
+	    statp->nsaddr.sin_port = htons(NAMESERVER_PORT);
+	    statp->nscount = 1;
+	}
 	if (statp->defdname[0] == 0 &&
 	    __gethostname(buf, sizeof(statp->defdname) - 1) == 0 &&
 	    (cp = strchr(buf, '.')) != NULL)
@@ -538,12 +537,12 @@
 		} else if (!strncmp(cp, "no-check-names",
 				    sizeof("no-check-names") - 1)) {
 			statp->options |= RES_NOCHECKNAME;
-                } else if (!strncmp(cp, "edns0", sizeof("edns0") - 1)) {
+		} else if (!strncmp(cp, "edns0", sizeof("edns0") - 1)) {
 			statp->options |= RES_USE_EDNS0;
-                } else if (!strncmp(cp, "single-request-reopen",
+		} else if (!strncmp(cp, "single-request-reopen",
 				    sizeof("single-request-reopen") - 1)) {
 			statp->options |= RES_SNGLKUPREOP;
-                } else if (!strncmp(cp, "single-request",
+		} else if (!strncmp(cp, "single-request",
 				    sizeof("single-request") - 1)) {
 			statp->options |= RES_SNGLKUP;
 		} else {

Added: fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390-linux-gnu.data
==============================================================================
--- fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390-linux-gnu.data (added)
+++ fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390-linux-gnu.data Tue Nov  9 00:09:28 2010
@@ -1,0 +1,7 @@
+libc.so: _Unwind_Find_FDE
+libc.so: calloc
+libc.so: free
+libc.so: malloc
+libc.so: memalign
+libc.so: realloc
+libm.so: matherr

Added: fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390x-linux-gnu.data
==============================================================================
--- fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390x-linux-gnu.data (added)
+++ fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390x-linux-gnu.data Tue Nov  9 00:09:28 2010
@@ -1,0 +1,7 @@
+libc.so: _Unwind_Find_FDE
+libc.so: calloc
+libc.so: free
+libc.so: malloc
+libc.so: memalign
+libc.so: realloc
+libm.so: matherr

Modified: fsf/glibc-2_11-branch/libc/stdlib/strtod_l.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/stdlib/strtod_l.c (original)
+++ fsf/glibc-2_11-branch/libc/stdlib/strtod_l.c Tue Nov  9 00:09:28 2010
@@ -1491,7 +1491,9 @@
 			  register int i;
 			  (void) __mpn_lshift (&retval[used
 						       / BITS_PER_MP_LIMB],
-					       retval, RETURN_LIMB_SIZE,
+					       retval,
+					       (RETURN_LIMB_SIZE
+						- used / BITS_PER_MP_LIMB),
 					       used % BITS_PER_MP_LIMB);
 			  for (i = used / BITS_PER_MP_LIMB - 1; i >= 0; --i)
 			    retval[i] = 0;

Added: fsf/glibc-2_11-branch/libc/sysdeps/i386/elf/Makefile
==============================================================================
Binary file - no diff available.

Propchange: fsf/glibc-2_11-branch/libc/sysdeps/i386/elf/Makefile
------------------------------------------------------------------------------
    svn:mime-type = audio/x-669-mod

Modified: fsf/glibc-2_11-branch/libc/sysdeps/mach/hurd/linkat.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/mach/hurd/linkat.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/mach/hurd/linkat.c Tue Nov  9 00:09:28 2010
@@ -1,5 +1,5 @@
 /* Make a link between file names relative to open directories.  Hurd version.
-   Copyright (C) 2006 Free Software Foundation, Inc.
+   Copyright (C) 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
@@ -38,7 +38,9 @@
   file_t oldfile, linknode, todir;
   char *toname;
 
-  oldfile = __file_name_lookup_at (fromfd, flags, from, 0, 0);
+  /* POSIX says linkat doesn't follow symlinks by default, so pass
+     O_NOLINK.  That can be overridden by AT_SYMLINK_FOLLOW in FLAGS.  */
+  oldfile = __file_name_lookup_at (fromfd, flags, from, O_NOLINK, 0);
   if (oldfile == MACH_PORT_NULL)
     return -1;
 

Modified: fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-32/__longjmp.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-32/__longjmp.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-32/__longjmp.c Tue Nov  9 00:09:28 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2005, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2005, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Martin Schwidefsky (schwidefsky@xxxxxxxxxx).
 
@@ -29,15 +29,18 @@
 void
 __longjmp (__jmp_buf env, int val)
 {
-  register int r2 __asm ("%r2") = val == 0 ? 1 : val;
 #ifdef PTR_DEMANGLE
-  register uintptr_t r3 __asm ("%r3") = THREAD_GET_POINTER_GUARD ();
-  register void *r1 __asm ("%r1") = (void *) env;
+  uintptr_t guard = THREAD_GET_POINTER_GUARD ();
 # ifdef CHECK_SP
-  CHECK_SP (env, r3);
+  CHECK_SP (env, guard);
 # endif
 #elif defined CHECK_SP
   CHECK_SP (env, 0);
+#endif
+  register int r2 __asm ("%r2") = val == 0 ? 1 : val;
+#ifdef PTR_DEMANGLE
+  register uintptr_t r3 __asm ("%r3") = guard;
+  register void *r1 __asm ("%r1") = (void *) env;
 #endif
   /* Restore registers and jump back.  */
   asm volatile ("ld   %%f6,48(%1)\n\t"

Modified: fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-64/__longjmp.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-64/__longjmp.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-64/__longjmp.c Tue Nov  9 00:09:28 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2005, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Martin Schwidefsky (schwidefsky@xxxxxxxxxx).
 
@@ -29,15 +29,18 @@
 void
 __longjmp (__jmp_buf env, int val)
 {
-  register long int r2 __asm ("%r2") = val == 0 ? 1 : val;
 #ifdef PTR_DEMANGLE
-  register uintptr_t r3 __asm ("%r3") = THREAD_GET_POINTER_GUARD ();
-  register void *r1 __asm ("%r1") = (void *) env;
+  uintptr_t guard = THREAD_GET_POINTER_GUARD ();
 # ifdef CHECK_SP
-  CHECK_SP (env, r3);
+  CHECK_SP (env, guard);
 # endif
 #elif defined CHECK_SP
   CHECK_SP (env, 0);
+#endif
+  register long int r2 __asm ("%r2") = val == 0 ? 1 : val;
+#ifdef PTR_DEMANGLE
+  register uintptr_t r3 __asm ("%r3") = guard;
+  register void *r1 __asm ("%r1") = (void *) env;
 #endif
   /* Restore registers and jump back.  */
   asm volatile ("ld   %%f7,104(%1)\n\t"

Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/check_pf.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/check_pf.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/check_pf.c Tue Nov  9 00:09:28 2010
@@ -1,5 +1,5 @@
 /* Determine protocol families for which interfaces exist.  Linux version.
-   Copyright (C) 2003, 2006, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2006, 2007, 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
@@ -304,10 +304,13 @@
 
   struct ifaddrs *runp;
   for (runp = ifa; runp != NULL; runp = runp->ifa_next)
-    if (runp->ifa_addr->sa_family == PF_INET)
-      *seen_ipv4 = true;
-    else if (runp->ifa_addr->sa_family == PF_INET6)
-      *seen_ipv6 = true;
+    if (runp->ifa_addr != NULL)
+      {
+	if (runp->ifa_addr->sa_family == PF_INET)
+	  *seen_ipv4 = true;
+	else if (runp->ifa_addr->sa_family == PF_INET6)
+	  *seen_ipv6 = true;
+      }
 
   (void) freeifaddrs (ifa);
 #endif

Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/getdents.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/getdents.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/getdents.c Tue Nov  9 00:09:28 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995-2003, 2004, 2006, 2007
+/* Copyright (C) 1993, 1995-2004, 2006, 2007, 2010
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -285,7 +285,11 @@
 	DIRENT_SET_DP_INO(dp, kdp->d_ino);
 	dp->d_off = kdp->d_off;
 	dp->d_reclen = new_reclen;
+#ifdef __ASSUME_GETDENTS32_D_TYPE
+	dp->d_type = *((char *) kdp + kdp->d_reclen - 1);
+#else
 	dp->d_type = DT_UNKNOWN;
+#endif
 	memcpy (dp->d_name, kdp->d_name,
 		kdp->d_reclen - offsetof (struct kernel_dirent, d_name));
 

Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname.c Tue Nov  9 00:09:28 2010
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,93,1996-2002,2006,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993,1996-2002,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
@@ -131,6 +132,9 @@
   if (__builtin_expect (__tcgetattr (fd, &term) < 0, 0))
     return NULL;
 
+  if (__fxstat64 (_STAT_VER, fd, &st) < 0)
+    return NULL;
+
   /* We try using the /proc filesystem.  */
   *_fitoa_word (fd, __stpcpy (procname, "/proc/self/fd/"), 10, 0) = '\0';
 
@@ -161,13 +165,32 @@
     {
       if ((size_t) len >= buflen)
 	return NULL;
+
+#define UNREACHABLE_LEN strlen ("(unreachable)")
+      if (len > UNREACHABLE_LEN
+	  && memcmp (ttyname_buf, "(unreachable)", UNREACHABLE_LEN) == 0)
+	{
+	  memmove (ttyname_buf, ttyname_buf + UNREACHABLE_LEN,
+		   len - UNREACHABLE_LEN);
+	  len -= UNREACHABLE_LEN;
+	}
+
       /* readlink need not terminate the string.  */
       ttyname_buf[len] = '\0';
-      return ttyname_buf;
-    }
-
-  if (__fxstat64 (_STAT_VER, fd, &st) < 0)
-    return NULL;
+
+      /* Verify readlink result, fall back on iterating through devices.  */
+      if (ttyname_buf[0] == '/'
+	  && __xstat64 (_STAT_VER, ttyname_buf, &st1) == 0
+#ifdef _STATBUF_ST_RDEV
+	  && S_ISCHR (st1.st_mode)
+	  && st1.st_rdev == st.st_rdev
+#else
+	  && st1.st_ino == st.st_ino
+	  && st1.st_dev == st.st_dev
+#endif
+	  )
+	return ttyname_buf;
+    }
 
   if (__xstat64 (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode))
     {

Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname_r.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname_r.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname_r.c Tue Nov  9 00:09:28 2010
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,93,1995-2001,2003,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993,1995-2001,2003,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
@@ -122,6 +123,9 @@
   if (__builtin_expect (__tcgetattr (fd, &term) < 0, 0))
     return errno;
 
+  if (__fxstat64 (_STAT_VER, fd, &st) < 0)
+    return errno;
+
   /* We try using the /proc filesystem.  */
   *_fitoa_word (fd, __stpcpy (procname, "/proc/self/fd/"), 10, 0) = '\0';
 
@@ -145,12 +149,30 @@
 #endif
 			, 1))
     {
+#define UNREACHABLE_LEN strlen ("(unreachable)")
+      if (ret > UNREACHABLE_LEN
+	  && memcmp (buf, "(unreachable)", UNREACHABLE_LEN) == 0)
+	{
+	  memmove (buf, buf + UNREACHABLE_LEN, ret - UNREACHABLE_LEN);
+	  ret -= UNREACHABLE_LEN;
+	}
+
+      /* readlink need not terminate the string.  */
       buf[ret] = '\0';
-      return 0;
-    }
-
-  if (__fxstat64 (_STAT_VER, fd, &st) < 0)
-    return errno;
+
+      /* Verify readlink result, fall back on iterating through devices.  */
+      if (buf[0] == '/'
+	  && __xstat64 (_STAT_VER, buf, &st1) == 0
+#ifdef _STATBUF_ST_RDEV
+	  && S_ISCHR (st1.st_mode)
+	  && st1.st_rdev == st.st_rdev
+#else
+	  && st1.st_ino == st.st_ino
+	  && st1.st_dev == st.st_dev
+#endif
+	  )
+	return 0;
+    }
 
   /* Prepare the result buffer.  */
   memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/"));

Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S Tue Nov  9 00:09:28 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001,2004,2005,2006,2009 Free Software Foundation, Inc.
+/* Copyright (C) 2001,2004,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
@@ -49,9 +49,9 @@
 	.text
 ENTRY(____longjmp_chk)
 	/* Restore registers.  */
-	movq	(JB_RSP*8)(%rdi),%r8
-	movq	(JB_RBP*8)(%rdi),%r9
-	movq	(JB_PC*8)(%rdi),%rdx
+	movq	(JB_RSP*8)(%rdi), %r8
+	movq	(JB_RBP*8)(%rdi), %r9
+	movq	(JB_PC*8)(%rdi), %rdx
 #ifdef PTR_DEMANGLE
 	PTR_DEMANGLE (%r8)
 	PTR_DEMANGLE (%r9)
@@ -63,7 +63,9 @@
 
 	/* Save function parameters.  */
 	movq	%rdi, %r10
-	movl	%esi, %ecx
+	cfi_register (%rdi, %r10)
+	movl	%esi, %ebx
+	cfi_register (%rsi, %rbx)
 
 	xorl	%edi, %edi
 	leaq	-24(%rsp), %rsi
@@ -84,7 +86,9 @@
 .Lfail:	CALL_FAIL
 
 .Lok2:	movq	%r10, %rdi
-	movl	%ecx, %esi
+	cfi_restore (%rdi)
+	movl	%ebx, %esi
+	cfi_restore (%rsi)
 
 .Lok:	/* We add unwind information for the target here.  */
 	cfi_def_cfa(%rdi, 0)
@@ -96,11 +100,11 @@
 	cfi_offset(%r13,JB_R13*8)
 	cfi_offset(%r14,JB_R14*8)
 	cfi_offset(%r15,JB_R15*8)
-	movq	(JB_RBX*8)(%rdi),%rbx
-	movq	(JB_R12*8)(%rdi),%r12
-	movq	(JB_R13*8)(%rdi),%r13
-	movq	(JB_R14*8)(%rdi),%r14
-	movq	(JB_R15*8)(%rdi),%r15
+	movq	(JB_RBX*8)(%rdi), %rbx
+	movq	(JB_R12*8)(%rdi), %r12
+	movq	(JB_R13*8)(%rdi), %r13
+	movq	(JB_R14*8)(%rdi), %r14
+	movq	(JB_R15*8)(%rdi), %r15
 	/* Set return value for setjmp.  */
 	movl	%esi, %eax
 	movq	%r8,%rsp

Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h Tue Nov  9 00:09:28 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002-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
@@ -31,7 +31,7 @@
 #endif
 
 
-/* Flags to be passed to epoll_create2.  */
+/* Flags to be passed to epoll_create1.  */
 enum
   {
     EPOLL_CLOEXEC = 02000000,

Modified: fsf/glibc-2_11-branch/libc/sysdeps/x86_64/cacheinfo.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/x86_64/cacheinfo.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/x86_64/cacheinfo.c Tue Nov  9 00:09:28 2010
@@ -453,10 +453,10 @@
 
 
 /* Half the data cache size for use in memory and string routines, typically
-   L1 size.  */
+   L1 size, rounded to multiple of 256 bytes.  */
 long int __x86_64_data_cache_size_half attribute_hidden = 32 * 1024 / 2;
 /* Shared cache size for use in memory and string routines, typically
-   L2 or L3 size.  */
+   L2 or L3 size, rounded to multiple of 256 bytes.  */
 long int __x86_64_shared_cache_size_half attribute_hidden = 1024 * 1024 / 2;
 long int __x86_64_shared_cache_size attribute_hidden = 1024 * 1024;
 
@@ -657,10 +657,16 @@
     }
 
   if (data > 0)
-    __x86_64_data_cache_size_half = data / 2;
+    {
+      /* Round data cache size to multiple of 256 bytes.  */
+      data = data & ~255L;
+      __x86_64_data_cache_size_half = data / 2;
+    }
 
   if (shared > 0)
     {
+      /* Round shared cache size to multiple of 256 bytes.  */
+      shared = shared & ~255L;
       __x86_64_shared_cache_size_half = shared / 2;
       __x86_64_shared_cache_size = shared;
     }