commit 9da4bb316ffa558b1001e5441d2ba919ebb2cf13 broke strcmp.S compile

Jeff Chua jeff.chua.linux@gmail.com
Fri Aug 27 14:11:00 GMT 2010



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



More information about the Libc-alpha mailing list