GNU C Library master sources branch, fedora/master, updated. glibc-2.13-869-g51d0836

schwab@sourceware.org schwab@sourceware.org
Mon Mar 21 16:35:00 GMT 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, fedora/master has been updated
       via  51d0836e6ed57c6b269d52e64d107d17f29ac0ce (commit)
       via  d78bd28013d17cb9cd1b4fd07b08cf0ca3d11e35 (commit)
       via  950cbf9b33208b56fc44100fe17fbc40704f282f (commit)
       via  786e84c533d00573fa0ba7e701b1ecb03f0111fb (commit)
       via  c97a1282a4d9ff5d462fa5d8f20797ded3629500 (commit)
       via  2a1156010784332cbe4bf033ccedb19f52e56a75 (commit)
       via  83e5edd390eabe8f8e8e0d051f929b77a30c0767 (commit)
       via  042c49c681ca671215849a3788595b7eba90ffd0 (commit)
       via  8126d90480fa3e0c5c5cd0d02cb1c93174b45485 (commit)
       via  ccfe366e6fc64bb81183480bd2ae113041d3c84c (commit)
       via  049b59f78fdcb533fe2999ba73daa32c2f8cb758 (commit)
       via  101fdc24deea7f3895d82db9c89fa41af29a2f1e (commit)
       via  c6e13027abd4b9c2d694fb4d8b28ab8290ea5971 (commit)
       via  f6ce0f974b727437e383f69d17d51962c86bf31b (commit)
       via  028478fa40d85a73b19638dbe3f83b1acebf370c (commit)
       via  908ea63341bbbca534411a0581cd16ba36e08706 (commit)
       via  03592fc7ea512141f4c6f5f5f636d3b856563763 (commit)
       via  33f85a3fb9fe432e0ebf6a3481bc2d5e29cb605f (commit)
      from  630491da8ebd5291f94a39fe354738b940dcfea9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=51d0836e6ed57c6b269d52e64d107d17f29ac0ce

commit 51d0836e6ed57c6b269d52e64d107d17f29ac0ce
Author: Andreas Schwab <schwab@redhat.com>
Date:   Mon Mar 21 15:18:54 2011 +0100

    2.13.90-7

diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in
index f3487d0..3002c98 100644
--- a/fedora/glibc.spec.in
+++ b/fedora/glibc.spec.in
@@ -21,7 +21,7 @@
 Summary: The GNU libc libraries
 Name: glibc
 Version: %{glibcversion}
-Release: 6
+Release: 7
 # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
 # Things that are linked directly into dynamically linked programs
 # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional
@@ -1039,6 +1039,20 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Mon Mar 21 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-7
+- Update from master
+  - Handle page boundaries in x86 SSE4.2 strncmp (BZ#12597)
+  - Implement x86 cpuid handling of leaf4 for cache information (BZ#12587)
+  - Check size of pattern in wide character representation in fnmatch
+    (BZ #12583)
+  - Remove __restrict quals from wmemcmp prototype
+  - Fix copy relocations handling of unique objects (BZ#12510)
+- ldd: never run file directly
+- Ignore rpath elements containing non-isolated use of $ORIGIN when
+  privileged
+- Don't leave empty element in rpath when skipping the first element
+- Revert "Don't crash when dependencies are missing" (#688990)
+
 * Mon Mar  7 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-6
 - Update from master
   - Fix loading first object along a path when tracing

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d78bd28013d17cb9cd1b4fd07b08cf0ca3d11e35

commit d78bd28013d17cb9cd1b4fd07b08cf0ca3d11e35
Author: Andreas Schwab <schwab@redhat.com>
Date:   Mon Mar 21 15:00:21 2011 +0100

    Revert "Don't crash when dependencies are missing"
    
    This reverts commit f2092faf2b6bd491a1891d5d5e393a8bf85d01d7.

diff --git a/ChangeLog b/ChangeLog
index 2452341..920f5cc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -125,12 +125,6 @@
 	* elf/noload.c: Include <memcheck.h>.
 	(main): Call mtrace.  Close all opened handles.
 
-2011-02-17  Andreas Schwab  <schwab@redhat.com>
-
-	[BZ #12454]
-	* elf/dl-deps.c (_dl_map_object_deps): Signal error early when
-	dependencies are missing.
-
 2011-02-22  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
 	Fix __if_freereq crash: Unlike the generic version which uses free,
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
index 3890d00..501d608 100644
--- a/elf/dl-deps.c
+++ b/elf/dl-deps.c
@@ -492,10 +492,6 @@ _dl_map_object_deps (struct link_map *map,
   if (errno == 0 && errno_saved != 0)
     __set_errno (errno_saved);
 
-  if (errno_reason)
-    _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
-		      NULL, errstring);
-
   struct link_map **old_l_initfini = NULL;
   if (map->l_initfini != NULL && map->l_type == lt_loaded)
     {
@@ -692,4 +688,8 @@ Filters not supported with LD_TRACE_PRELINKING"));
     }
   if (old_l_initfini != NULL)
     _dl_scope_free (old_l_initfini);
+
+  if (errno_reason)
+    _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
+		      NULL, errstring);
 }

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=950cbf9b33208b56fc44100fe17fbc40704f282f

commit 950cbf9b33208b56fc44100fe17fbc40704f282f
Merge: 83e5edd 786e84c
Author: Andreas Schwab <schwab@redhat.com>
Date:   Mon Mar 21 11:14:44 2011 +0100

    Merge remote-tracking branch 'origin/master' into fedora/master

diff --cc ChangeLog
index 6dc4775,8e59560..2452341
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,23 -1,57 +1,77 @@@
+ 2011-03-20  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	[BZ #12597]
+ 	* string/test-strncmp.c (do_page_test): New function.
+ 	(check2): Likewise.
+ 	(test_main): Call check2.
+ 	* sysdeps/x86_64/multiarch/strcmp.S: Properly cross page boundary.
+ 
+ 2011-03-20  Ulrich Drepper  <drepper@gmail.com>
+ 
+ 	[BZ #12587]
+ 	* sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word):
+ 	Handle cache information in CPU leaf 4.
+ 	* sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise.
+ 
+ 2011-03-18  Ulrich Drepper  <drepper@gmail.com>
+ 
+ 	[BZ #12583]
+ 	* posix/fnmatch.c (fnmatch): Check size of pattern in wide
+ 	character representation.
+ 	Partly based on a patch by Tomas Hoger <thoger@redhat.com>.
+ 
+ 2011-03-16  Ryan S. Arnold  <rsa@us.ibm.com>
+ 
+ 	* sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S (isnanf): Fix
+ 	END(__isnan) to END(__isnanf) to match function entry point/label
+ 	EALIGN(__isnanf,...).
+ 
+ 2011-03-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* wcsmbs/wchar.h (wmemcmp): Remove __restrict qualifiers.
+ 
+ 2011-03-10  Ulrich Drepper  <drepper@gmail.com>
+ 
+ 	[BZ #12510]
+ 	* elf/dl-lookup.c (do_lookup_x): For copy relocations of unique objects
+ 	copy from the symbol referenced in the relocation to initialize the
+ 	used variable.
+ 	Patch by Piotr Bury <pbury@goahead.com>.
+ 	* elf/Makefile: Add rules to build and tst-unique3.
+ 	* include/bits/dlfcn.h: Remove _dl_mcount_wrapper_check declaration.
+ 	* elf/tst-unique3.cc: New file.
+ 	* elf/tst-unique3.h: New file.
+ 	* elf/tst-unique3lib.cc: New file.
+ 	* elf/tst-unique3lib2.cc: New file.
+ 
+ 	* elf/Makefile: Don't run tst-execstack* tests of SELinux is enabled.
+ 
+ 2011-03-10  Mike Frysinger  <vapier@gentoo.org>
+ 
+ 	* sysdeps/sparc/sparc64/elf/configure.in (libc_cv_sparc64_tls): Add
+ 	$LDFLAGS and -nostdlib -nostartfiles to linking step.  Change main
+ 	to _start.
+ 
 +2011-03-18  Andreas Schwab  <schwab@redhat.com>
 +
 +	* elf/ldd.bash.in: Never run file directly.
 +
 +2011-03-14  Andreas Schwab  <schwab@redhat.com>
 +
 +	* elf/dl-load.c (is_dst): Remove parameter secure, all callers
 +	changed.  Don't check for isolated use.
 +	(_dl_dst_substitute): Ignore rpath elements containing
 +	non-isolated use of $ORIGIN when privileged.
 +
 +	* elf/dl-load.c (_dl_dst_substitute): When skipping the first
 +	rpath element also skip the following colon.
 +	(expand_dynamic_string_token): Add is_path parameter and pass
 +	down to DL_DST_REQUIRED and _dl_dst_substitute.
 +	(decompose_rpath): Call expand_dynamic_string_token with
 +	non-zero is_path.  Ignore empty rpaths.
 +	(_dl_map_object_from_fd): Call expand_dynamic_string_token
 +	with zero is_path.
 +
  2011-03-06  Ulrich Drepper  <drepper@gmail.com>
  
  	* elf/dl-load.c (_dl_map_object): If we are looking for the first
diff --cc elf/Makefile
index f796b50,56cb1b1..259a241
--- a/elf/Makefile
+++ b/elf/Makefile
@@@ -200,10 -198,10 +200,10 @@@ tests += loadtest restest1 preloadtest 
  	 tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \
  	 tst-dlmodcount tst-dlopenrpath tst-deep1 \
  	 tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
 -	 unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \
 +	 unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \
  	 tst-audit1 tst-audit2 \
  	 tst-stackguard1 tst-addr1 tst-thrlock \
- 	 tst-unique1 tst-unique2 \
+ 	 tst-unique1 tst-unique2 tst-unique3 \
  	 tst-initorder
  #	 reldep9
  test-srcs = tst-pathopt

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=83e5edd390eabe8f8e8e0d051f929b77a30c0767

commit 83e5edd390eabe8f8e8e0d051f929b77a30c0767
Author: Andreas Schwab <schwab@redhat.com>
Date:   Fri Mar 18 16:22:52 2011 +0100

    ldd: never run file directly

diff --git a/ChangeLog b/ChangeLog
index 8d01a2a..6dc4775 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-03-18  Andreas Schwab  <schwab@redhat.com>
+
+	* elf/ldd.bash.in: Never run file directly.
+
 2011-03-14  Andreas Schwab  <schwab@redhat.com>
 
 	* elf/dl-load.c (is_dst): Remove parameter secure, all callers
diff --git a/elf/ldd.bash.in b/elf/ldd.bash.in
index 060f354..9e280b3 100644
--- a/elf/ldd.bash.in
+++ b/elf/ldd.bash.in
@@ -167,18 +167,6 @@ warning: you do not have execution permission for" "\`$file'" >&2
       fi
     done
     case $ret in
-    0)
-      # If the program exits with exit code 5, it means the process has been
-      # invoked with __libc_enable_secure.  Fall back to running it through
-      # the dynamic linker.
-      try_trace "$file"
-      rc=$?
-      if [ $rc = 5 ]; then
-	try_trace "$RTLD" "$file"
-	rc=$?
-      fi
-      [ $rc = 0 ] || result=1
-      ;;
     1)
       # This can be a non-ELF binary or no binary at all.
       nonelf "$file" || {
@@ -186,7 +174,7 @@ warning: you do not have execution permission for" "\`$file'" >&2
 	result=1
       }
       ;;
-    2)
+    0|2)
       try_trace "$RTLD" "$file" || result=1
       ;;
     *)

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=049b59f78fdcb533fe2999ba73daa32c2f8cb758

commit 049b59f78fdcb533fe2999ba73daa32c2f8cb758
Author: Andreas Schwab <schwab@redhat.com>
Date:   Wed Mar 9 18:42:06 2011 +0100

    Ignore rpath elements containing non-isolated use of $ORIGIN when privileged

diff --git a/ChangeLog b/ChangeLog
index 18ec918..8d01a2a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2011-03-14  Andreas Schwab  <schwab@redhat.com>
 
+	* elf/dl-load.c (is_dst): Remove parameter secure, all callers
+	changed.  Don't check for isolated use.
+	(_dl_dst_substitute): Ignore rpath elements containing
+	non-isolated use of $ORIGIN when privileged.
+
 	* elf/dl-load.c (_dl_dst_substitute): When skipping the first
 	rpath element also skip the following colon.
 	(expand_dynamic_string_token): Add is_path parameter and pass
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 00ea465..ed3552f 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -169,8 +169,7 @@ local_strdup (const char *s)
 
 
 static size_t
-is_dst (const char *start, const char *name, const char *str,
-	int is_path, int secure)
+is_dst (const char *start, const char *name, const char *str, int is_path)
 {
   size_t len;
   bool is_curly = false;
@@ -199,11 +198,6 @@ is_dst (const char *start, const char *name, const char *str,
 	   && (!is_path || name[len] != ':'))
     return 0;
 
-  if (__builtin_expect (secure, 0)
-      && ((name[len] != '\0' && (!is_path || name[len] != ':'))
-	  || (name != start + 1 && (!is_path || name[-2] != ':'))))
-    return 0;
-
   return len;
 }
 
@@ -218,13 +212,10 @@ _dl_dst_count (const char *name, int is_path)
     {
       size_t len;
 
-      /* $ORIGIN is not expanded for SUID/GUID programs (except if it
-	 is $ORIGIN alone) and it must always appear first in path.  */
       ++name;
-      if ((len = is_dst (start, name, "ORIGIN", is_path,
-			 INTUSE(__libc_enable_secure))) != 0
-	  || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0
-	  || (len = is_dst (start, name, "LIB", is_path, 0)) != 0)
+      if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0
+	  || (len = is_dst (start, name, "PLATFORM", is_path)) != 0
+	  || (len = is_dst (start, name, "LIB", is_path)) != 0)
 	++cnt;
 
       name = strchr (name + len, '$');
@@ -256,9 +247,16 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result,
 	  size_t len;
 
 	  ++name;
-	  if ((len = is_dst (start, name, "ORIGIN", is_path,
-			     INTUSE(__libc_enable_secure))) != 0)
+	  if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0)
 	    {
+	      /* $ORIGIN is not expanded for SUID/GUID programs
+		 (except if it is $ORIGIN alone) and it must always
+		 appear first in path.  */
+	      if (__builtin_expect (INTUSE(__libc_enable_secure), 0)
+		  && ((name[len] != '\0' && (!is_path || name[len] != ':'))
+		      || (name != start + 1 && (!is_path || name[-2] != ':'))))
+		repl = (const char *) -1;
+	      else
 #ifndef SHARED
 	      if (l == NULL)
 		repl = _dl_get_origin ();
@@ -266,9 +264,9 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result,
 #endif
 		repl = l->l_origin;
 	    }
-	  else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0)
+	  else if ((len = is_dst (start, name, "PLATFORM", is_path)) != 0)
 	    repl = GLRO(dl_platform);
-	  else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0)
+	  else if ((len = is_dst (start, name, "LIB", is_path)) != 0)
 	    repl = DL_DST_LIB;
 
 	  if (repl != NULL && repl != (const char *) -1)

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=101fdc24deea7f3895d82db9c89fa41af29a2f1e

commit 101fdc24deea7f3895d82db9c89fa41af29a2f1e
Author: Andreas Schwab <schwab@redhat.com>
Date:   Wed Mar 9 18:39:31 2011 +0100

    Don't leave empty element in rpath when skipping the first element

diff --git a/ChangeLog b/ChangeLog
index eb75e73..18ec918 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2011-03-14  Andreas Schwab  <schwab@redhat.com>
+
+	* elf/dl-load.c (_dl_dst_substitute): When skipping the first
+	rpath element also skip the following colon.
+	(expand_dynamic_string_token): Add is_path parameter and pass
+	down to DL_DST_REQUIRED and _dl_dst_substitute.
+	(decompose_rpath): Call expand_dynamic_string_token with
+	non-zero is_path.  Ignore empty rpaths.
+	(_dl_map_object_from_fd): Call expand_dynamic_string_token
+	with zero is_path.
+
 2011-03-06  Ulrich Drepper  <drepper@gmail.com>
 
 	* elf/dl-load.c (_dl_map_object): If we are looking for the first
diff --git a/elf/dl-load.c b/elf/dl-load.c
index f866066..00ea465 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1,5 +1,5 @@
 /* Map in a shared object's segments from the file.
-   Copyright (C) 1995-2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+   Copyright (C) 1995-2005, 2006, 2007, 2009, 2010, 2011 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
@@ -284,6 +284,10 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result,
 	      name += len;
 	      while (*name != '\0' && (!is_path || *name != ':'))
 		++name;
+	      /* Also skip following colon if this is the first rpath
+		 element, but keep an empty element at the end.  */
+	      if (wp == result && is_path && *name == ':' && name[1] != '\0')
+		++name;
 	    }
 	  else
 	    /* No DST we recognize.  */
@@ -310,7 +314,7 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result,
    belonging to the map is loaded.  In this case the path element
    containing $ORIGIN is left out.  */
 static char *
-expand_dynamic_string_token (struct link_map *l, const char *s)
+expand_dynamic_string_token (struct link_map *l, const char *s, int is_path)
 {
   /* We make two runs over the string.  First we determine how large the
      resulting string is and then we copy it over.  Since this is no
@@ -321,7 +325,7 @@ expand_dynamic_string_token (struct link_map *l, const char *s)
   char *result;
 
   /* Determine the number of DST elements.  */
-  cnt = DL_DST_COUNT (s, 1);
+  cnt = DL_DST_COUNT (s, is_path);
 
   /* If we do not have to replace anything simply copy the string.  */
   if (__builtin_expect (cnt, 0) == 0)
@@ -335,7 +339,7 @@ expand_dynamic_string_token (struct link_map *l, const char *s)
   if (result == NULL)
     return NULL;
 
-  return _dl_dst_substitute (l, s, result, 1);
+  return _dl_dst_substitute (l, s, result, is_path);
 }
 
 
@@ -551,13 +555,21 @@ decompose_rpath (struct r_search_path_struct *sps,
 
   /* Make a writable copy.  At the same time expand possible dynamic
      string tokens.  */
-  copy = expand_dynamic_string_token (l, rpath);
+  copy = expand_dynamic_string_token (l, rpath, 1);
   if (copy == NULL)
     {
       errstring = N_("cannot create RUNPATH/RPATH copy");
       goto signal_error;
     }
 
+  /* Ignore empty rpaths.  */
+  if (*copy == 0)
+    {
+      free (copy);
+      sps->dirs = (char *) -1;
+      return false;
+    }
+
   /* Count the number of necessary elements in the result array.  */
   nelems = 0;
   for (cp = copy; *cp != '\0'; ++cp)
@@ -2179,7 +2191,7 @@ _dl_map_object (struct link_map *loader, const char *name,
     {
       /* The path may contain dynamic string tokens.  */
       realname = (loader
-		  ? expand_dynamic_string_token (loader, name)
+		  ? expand_dynamic_string_token (loader, name, 0)
 		  : local_strdup (name));
       if (realname == NULL)
 	fd = -1;

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                       |   80 ++++++++++++++++--
 NEWS                                            |    4 +-
 elf/Makefile                                    |    9 ++-
 elf/dl-deps.c                                   |    8 +-
 elf/dl-load.c                                   |   56 +++++++-----
 elf/dl-lookup.c                                 |   18 +++-
 elf/ldd.bash.in                                 |   14 +---
 elf/tst-unique3.cc                              |   23 +++++
 elf/tst-unique3.h                               |    8 ++
 elf/tst-unique3lib.cc                           |   11 +++
 elf/tst-unique3lib2.cc                          |   12 +++
 fedora/glibc.spec.in                            |   16 ++++-
 include/bits/dlfcn.h                            |    1 -
 posix/fnmatch.c                                 |   13 +++-
 string/test-strncmp.c                           |   55 +++++++++++--
 sysdeps/i386/elf/configure                      |  102 ++++++++++++++++++++---
 sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S |    5 +-
 sysdeps/sparc/sparc64/elf/configure             |    6 +-
 sysdeps/sparc/sparc64/elf/configure.in          |    6 +-
 sysdeps/unix/sysv/linux/i386/sysconf.c          |   63 ++++++++++++--
 sysdeps/x86_64/cacheinfo.c                      |   49 +++++++++++
 sysdeps/x86_64/multiarch/strcmp.S               |   45 +++++++----
 wcsmbs/wchar.h                                  |    3 +-
 23 files changed, 499 insertions(+), 108 deletions(-)
 create mode 100644 elf/tst-unique3.cc
 create mode 100644 elf/tst-unique3.h
 create mode 100644 elf/tst-unique3lib.cc
 create mode 100644 elf/tst-unique3lib2.cc


hooks/post-receive
-- 
GNU C Library master sources



More information about the Glibc-cvs mailing list