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

[commits] r10066 - in /fsf/trunk/libc: ChangeLog elf/dl-load.c sysdeps/i386/i686/multiarch/memcmp-ssse3.S



Author: eglibc
Date: Sat Mar 20 00:03:33 2010
New Revision: 10066

Log:
Import glibc-mainline for 2010-03-20

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/elf/dl-load.c
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp-ssse3.S

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sat Mar 20 00:03:33 2010
@@ -1,3 +1,14 @@
+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

Modified: fsf/trunk/libc/elf/dl-load.c
==============================================================================
--- fsf/trunk/libc/elf/dl-load.c (original)
+++ fsf/trunk/libc/elf/dl-load.c Sat Mar 20 00:03:33 2010
@@ -1573,7 +1573,7 @@
 #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,
@@ -1657,7 +1657,10 @@
       if (__builtin_expect (! VALID_ELF_HEADER (ehdr->e_ident, expected,
 						EI_ABIVERSION)
 			    || !VALID_ELF_ABIVERSION (ehdr->e_ident[EI_OSABI],
-						      ehdr->e_ident[EI_ABIVERSION]),
+						      ehdr->e_ident[EI_ABIVERSION])
+			    || memcmp (&ehdr->e_ident[EI_PAD],
+				       &expected[EI_PAD],
+				       EI_NIDENT - EI_PAD) != 0,
 			    0))
 	{
 	  /* Something is wrong.  */
@@ -1701,6 +1704,9 @@
 	  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: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp-ssse3.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp-ssse3.S Sat Mar 20 00:03:33 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)