mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-13 14:50:17 +00:00
Make multi-arch ifunc support work with clang
This commit is contained in:
parent
66c8103bdf
commit
c4d57c29b5
@ -336,11 +336,15 @@ tests-static += $(tests-ifuncstatic)
|
|||||||
tests-internal += $(tests-ifuncstatic)
|
tests-internal += $(tests-ifuncstatic)
|
||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
tests-internal += \
|
tests-internal += \
|
||||||
ifuncmain1 ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
|
ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
|
||||||
ifuncmain1staticpic \
|
ifuncmain1staticpic \
|
||||||
ifuncmain2 ifuncmain2pic ifuncmain3 ifuncmain4 \
|
ifuncmain2 ifuncmain2pic ifuncmain3 ifuncmain4 \
|
||||||
ifuncmain5 ifuncmain5pic ifuncmain5staticpic \
|
ifuncmain5pic ifuncmain5staticpic \
|
||||||
ifuncmain7 ifuncmain7pic
|
ifuncmain7 ifuncmain7pic
|
||||||
|
ifneq ($(with-clang),yes)
|
||||||
|
# Skip over tests where lld errors with "cannot preempt symbol"
|
||||||
|
tests-internal += ifuncmain1 ifuncmain5
|
||||||
|
endif
|
||||||
ifunc-test-modules = ifuncdep1 ifuncdep1pic ifuncdep2 ifuncdep2pic \
|
ifunc-test-modules = ifuncdep1 ifuncdep1pic ifuncdep2 ifuncdep2pic \
|
||||||
ifuncdep5 ifuncdep5pic
|
ifuncdep5 ifuncdep5pic
|
||||||
extra-test-objs += $(ifunc-test-modules:=.o)
|
extra-test-objs += $(ifunc-test-modules:=.o)
|
||||||
|
@ -85,16 +85,21 @@ libm-sysdep_routines += e_exp-avx e_log-avx s_atan-avx \
|
|||||||
mplog-avx mpa-avx slowexp-avx \
|
mplog-avx mpa-avx slowexp-avx \
|
||||||
mpexp-avx
|
mpexp-avx
|
||||||
|
|
||||||
CFLAGS-e_atan2-avx.c = -msse2avx -DSSE2AVX
|
sse2avx-flags = -msse2avx -DSSE2AVX
|
||||||
CFLAGS-e_exp-avx.c = -msse2avx -DSSE2AVX
|
ifeq ($(with-clang),yes)
|
||||||
CFLAGS-e_log-avx.c = -msse2avx -DSSE2AVX
|
sse2avx-flags = -DSSE2AVX
|
||||||
CFLAGS-mpa-avx.c = -msse2avx -DSSE2AVX
|
endif
|
||||||
CFLAGS-mpexp-avx.c = -msse2avx -DSSE2AVX
|
|
||||||
CFLAGS-mplog-avx.c = -msse2avx -DSSE2AVX
|
CFLAGS-e_atan2-avx.c = $(sse2avx-flags)
|
||||||
CFLAGS-s_atan-avx.c = -msse2avx -DSSE2AVX
|
CFLAGS-e_exp-avx.c = $(sse2avx-flags)
|
||||||
CFLAGS-s_sin-avx.c = -msse2avx -DSSE2AVX
|
CFLAGS-e_log-avx.c = $(sse2avx-flags)
|
||||||
CFLAGS-slowexp-avx.c = -msse2avx -DSSE2AVX
|
CFLAGS-mpa-avx.c = $(sse2avx-flags)
|
||||||
CFLAGS-s_tan-avx.c = -msse2avx -DSSE2AVX
|
CFLAGS-mpexp-avx.c = $(sse2avx-flags)
|
||||||
|
CFLAGS-mplog-avx.c = $(sse2avx-flags)
|
||||||
|
CFLAGS-s_atan-avx.c = $(sse2avx-flags)
|
||||||
|
CFLAGS-s_sin-avx.c = $(sse2avx-flags)
|
||||||
|
CFLAGS-slowexp-avx.c = $(sse2avx-flags)
|
||||||
|
CFLAGS-s_tan-avx.c = $(sse2avx-flags)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(subdir),mathvec)
|
ifeq ($(subdir),mathvec)
|
||||||
|
@ -1770,8 +1770,9 @@ LABEL(strcmp_exitz):
|
|||||||
.p2align 4
|
.p2align 4
|
||||||
// XXX Same as code above
|
// XXX Same as code above
|
||||||
LABEL(Byte0):
|
LABEL(Byte0):
|
||||||
movzx (%rsi), %ecx
|
# Clang assembler objects to movzx here.
|
||||||
movzx (%rdi), %eax
|
movzbl (%rsi), %ecx
|
||||||
|
movzbl (%rdi), %eax
|
||||||
|
|
||||||
#if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
|
#if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
|
||||||
leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx
|
leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx
|
||||||
|
Loading…
Reference in New Issue
Block a user