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

[commits] r8705 - in /fsf/trunk/libc: ChangeLog sysdeps/posix/getaddrinfo.c sysdeps/x86_64/multiarch/strcmp.S



Author: eglibc
Date: Sun Jul 26 00:05:32 2009
New Revision: 8705

Log:
Import glibc-mainline for 2009-07-26

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/sysdeps/posix/getaddrinfo.c
    fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp.S

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sun Jul 26 00:05:32 2009
@@ -1,3 +1,15 @@
+2009-07-25  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* sysdeps/x86_64/multiarch/strcmp.S: Some more optimizations for
+	modern processor versions.  Patch by H.J. Lu <hongjiu.lu@xxxxxxxxx>.
+
+	[BZ #10448]
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): If NSS module contains no
+	callback we must touch the status to avoid using stale value.
+
+	* sysdeps/x86_64/multiarch/strcmp.S: Exclude unused code from being
+	compiled in.
+
 2009-07-24  Ulrich Drepper  <drepper@xxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/configure.in: Don't automatically include

Modified: fsf/trunk/libc/sysdeps/posix/getaddrinfo.c
==============================================================================
--- fsf/trunk/libc/sysdeps/posix/getaddrinfo.c (original)
+++ fsf/trunk/libc/sysdeps/posix/getaddrinfo.c Sun Jul 26 00:05:32 2009
@@ -833,6 +833,8 @@
 			       && inet6_status != NSS_STATUS_UNAVAIL)
 			status = inet6_status;
 		    }
+		  else
+		    status = NSS_STATUS_UNAVAIL;
 		}
 
 	      if (nss_next_action (nip, status) == NSS_ACTION_RETURN)

Modified: fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp.S
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp.S (original)
+++ fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp.S Sun Jul 26 00:05:32 2009
@@ -120,10 +120,8 @@
 	ja	LABEL(crosscache)	/* rsi: 16-byte load will cross cache line */
 	cmp	$0x30, %eax
 	ja	LABEL(crosscache)	/* rdi: 16-byte load will cross cache line */
-	movlpd	(%rdi), %xmm1
-	movlpd	(%rsi), %xmm2
-	movhpd	8(%rdi), %xmm1
-	movhpd	8(%rsi), %xmm2
+	movdqu	(%rdi), %xmm1
+	movdqu	(%rsi), %xmm2
 	pxor	%xmm0, %xmm0		/* clear %xmm0 for null char checks */
 	pcmpeqb	%xmm1, %xmm0		/* Any null chars? */
 	pcmpeqb	%xmm2, %xmm1		/* compare first 16 bytes for equality */
@@ -1457,6 +1455,9 @@
 	sub	%edx, %eax
 	ret
 
+#if 0
+	/* This code was in the origial submission but isn't used.
+	   --drepper */
 	.p2align 4
 LABEL(aftertail):
 	pcmpeqb	%xmm3, %xmm1
@@ -1467,6 +1468,8 @@
 	.p2align 4
 LABEL(exit):
 	lea	-16(%r9, %rcx), %rax	/* locate the exact offset for rdi */
+#endif
+
 LABEL(less32bytes):
 	lea	(%rdi, %rax), %rdi	/* locate the exact address for first operand(rdi) */
 	lea	(%rsi, %rcx), %rsi	/* locate the exact address for second operand(rsi) */
@@ -1487,11 +1490,8 @@
 	sub	%rdx, %r11
 	jbe	LABEL(strcmp_exitz)
 #endif
-	xor	%ecx, %ecx		/* clear %ecx */
-	xor	%eax, %eax		/* clear %eax */
-
-	movb	(%rsi, %rdx), %cl
-	movb	(%rdi, %rdx), %al
+	movzbl	(%rsi, %rdx), %ecx
+	movzbl	(%rdi, %rdx), %eax
 
 	sub	%ecx, %eax
 	ret