This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
commit 9da4bb316ffa558b1001e5441d2ba919ebb2cf13 broke strcmp.S compile
- From: Jeff Chua <jeff dot chua dot linux at gmail dot com>
- To: GNU libc <libc-alpha at sources dot redhat dot com>, glibc-bugs at sourceware dot org, Ulrich Drepper <drepper at redhat dot com>
- Date: Fri, 27 Aug 2010 12:21:28 +0800 (SGT)
- Subject: commit 9da4bb316ffa558b1001e5441d2ba919ebb2cf13 broke strcmp.S compile
gcc version 4.4.5 20100816 (prerelease) (GCC)
GNU C Library development release version 2.12.90, by Roland McGrath et
al.
Compiling glibc resulted in the follow error:
gcc ../sysdeps/x86_64/multiarch/strncase_l.S -c -I../include
-I/v6/src2/glibc/glibc/build/string -I/v6/src2/glibc/glibc/build
-I../sysdeps/x86_64/elf -I../nptl/sysdeps/unix/sysv/linux/x86_64
-I../sysdeps/unix/sysv/linux/x86_64
-I../sysdeps/unix/sysv/linux/wordsize-64 -I../nptl/sysdeps/unix/sysv/linux
-I../nptl/sysdeps/pthread -I../sysdeps/pthread
-I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common
-I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../nptl/sysdeps/unix/sysv
-I../sysdeps/unix/sysv -I../sysdeps/unix/x86_64 -I../nptl/sysdeps/unix
-I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/x86_64/fpu
-I../sysdeps/x86_64/multiarch -I../nptl/sysdeps/x86_64 -I../sysdeps/x86_64
-I../sysdeps/wordsize-64 -I../sysdeps/ieee754/ldbl-96
-I../sysdeps/ieee754/dbl-64/wordsize-64 -I../sysdeps/ieee754/dbl-64
-I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic/elf
-I../sysdeps/generic -I../nptl -I.. -I../libio -I. -D_LIBC_REENTRANT
-include ../include/libc-symbols.h -DASSEMBLER -Wa,--noexecstack
-o /v6/src2/glibc/glibc/build/string/strncase_l.o -MD -MP -MF
/v6/src2/glibc/glibc/build/string/strncase_l.o.dt -MT
/v6/src2/glibc/glibc/build/string/strncase_l.o
../sysdeps/x86_64/multiarch/../strcmp.S: Assembler messages:
../sysdeps/x86_64/multiarch/../strcmp.S:118: Error: junk `ff' after
expression
../sysdeps/x86_64/multiarch/../strcmp.S:118: Error: 8-byte relocation
cannot be applied to 4-byte field
make[2]: *** [/v6/src2/glibc/glibc/build/string/strncase_l.o] Error 1
make[2]: Leaving directory `/v6/src2/glibc/glibc/string'
make[1]: *** [string/subdir_lib] Error 2
make[1]: Leaving directory `/v6/src2/glibc/glibc'
make: *** [all] Error 2
Reverting just _part_of_ the commit
9da4bb316ffa558b1001e5441d2ba919ebb2cf13 made it work again.
commit 9da4bb316ffa558b1001e5441d2ba919ebb2cf13
Author: Ulrich Drepper <drepper@redhat.com>
Date: Thu Aug 19 09:20:44 2010 -0700
Fix two typos in x86-64 SSE4.2 strncasecmp implementation.
Here's the section causing the problem ...
diff --git a/sysdeps/x86_64/multiarch/strcmp.S b/sysdeps/x86_64/multiarch/strcmp.S
index 45cd80b..54e5bbc 100644
--- a/sysdeps/x86_64/multiarch/strcmp.S
+++ b/sysdeps/x86_64/multiarch/strcmp.S
@@ -824,7 +824,7 @@ LABEL(loop_ashr_5_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $5, -16(%rdi, %rdx), %xmm0
-# if !defined USE_AS_STRCASECMP_L || !defined USE_AS_STRNCASECMP_L
+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
# else
movdqa (%rsi,%rdx), %xmm1
@@ -1112,7 +1112,7 @@ LABEL(loop_ashr_8_use_sse4_2):
pcmpistri $0x1a, %xmm1, %xmm0
# endif
jbe LABEL(use_sse4_2_exit)
-# if defined USE_AS_STRNCMP || defined USE_AS_STRCASECMP_L
+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
sub $16, %r11
jbe LABEL(strcmp_exitz_sse4_2)
# endif
Thanks,
Jeff