mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-15 04:20:28 +08:00
c62534ae52
The ifunc handling for wmemchr is adjusted in order to omit ifunc if the minimum architecture level already supports newer CPUs by default. Unfortunately the c ifunc variant can't be omitted at all as it is used by the z13 ifunc variant as fallback if the pointers are not 4-byte aligned. Glibc internal calls will use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wmemchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add wmemchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wmemchr. * sysdeps/s390/multiarch/wmemchr-c.c: Move to ... * sysdeps/s390/wmemchr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wmemchr-vx.S: Move to ... * sysdeps/s390/wmemchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wmemchr.c: Move to ... * sysdeps/s390/wmemchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wmemchr.h: New file.
104 lines
3.6 KiB
Makefile
104 lines
3.6 KiB
Makefile
ifeq ($(subdir),iconvdata)
|
|
ISO-8859-1_CP037_Z900-routines := iso-8859-1_cp037_z900
|
|
ISO-8859-1_CP037_Z900-map := gconv.map
|
|
|
|
UTF8_UTF32_Z9-routines := utf8-utf32-z9
|
|
UTF8_UTF32_Z9-map := gconv.map
|
|
|
|
UTF16_UTF32_Z9-routines := utf16-utf32-z9
|
|
UTF16_UTF32_Z9-map := gconv.map
|
|
|
|
UTF8_UTF16_Z9-routines := utf8-utf16-z9
|
|
UTF8_UTF16_Z9-map := gconv.map
|
|
|
|
s390x-iconv-modules = ISO-8859-1_CP037_Z900 UTF8_UTF16_Z9 UTF16_UTF32_Z9 UTF8_UTF32_Z9
|
|
|
|
extra-modules-left += $(s390x-iconv-modules)
|
|
include extra-module.mk
|
|
|
|
cpp-srcs-left := $(foreach mod,$(s390x-iconv-modules),$($(mod)-routines))
|
|
lib := iconvdata
|
|
include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
|
|
|
|
extra-objs += $(addsuffix .so, $(s390x-iconv-modules))
|
|
install-others += $(patsubst %, $(inst_gconvdir)/%.so, $(s390x-iconv-modules))
|
|
|
|
$(patsubst %, $(inst_gconvdir)/%.so, $(s390x-iconv-modules)) : \
|
|
$(inst_gconvdir)/%.so: $(objpfx)%.so $(+force)
|
|
$(do-install-program)
|
|
|
|
sysdeps-gconv-modules = ../sysdeps/s390/gconv-modules
|
|
endif
|
|
|
|
ifeq ($(subdir),elf)
|
|
ifeq ($(build-shared),yes)
|
|
tests += tst-dl-runtime-resolve-noaudit tst-dl-runtime-resolve-audit \
|
|
tst-dl-runtime-profile-noaudit
|
|
# FIXME: When both LD_PROFILE and LD_AUDIT are set, a segfault occurs.
|
|
#tests += tst-dl-runtime-profile-audit
|
|
modules-names += tst-dl-runtime-mod
|
|
$(objpfx)tst-dl-runtime-resolve-noaudit: $(objpfx)tst-dl-runtime-mod.so
|
|
$(objpfx)tst-dl-runtime-resolve-audit: $(objpfx)tst-dl-runtime-mod.so
|
|
$(objpfx)tst-dl-runtime-profile-noaudit: $(objpfx)tst-dl-runtime-mod.so
|
|
$(objpfx)tst-dl-runtime-profile-audit: $(objpfx)tst-dl-runtime-mod.so
|
|
$(objpfx)tst-dl-runtime-resolve-audit.out: $(objpfx)tst-auditmod1.so
|
|
$(objpfx)tst-dl-runtime-profile-audit.out: $(objpfx)tst-auditmod1.so
|
|
# The profiling output goes to $LD_PROFILE_OUTPUT/$LD_PROFILE.profile
|
|
env-profile = LD_PROFILE=$(objpfx)tst-dl-runtime-mod.so \
|
|
LD_PROFILE_OUTPUT=/
|
|
env-audit = LD_AUDIT=$(objpfx)tst-auditmod1.so
|
|
tst-dl-runtime-resolve-audit-ENV = $(env-audit)
|
|
tst-dl-runtime-profile-noaudit-ENV = $(env-profile)
|
|
tst-dl-runtime-profile-audit-ENV = $(env-profile) $(env-audit)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(subdir),string)
|
|
sysdep_routines += bzero memset memset-z900 \
|
|
memcmp memcmp-z900 \
|
|
mempcpy memcpy memcpy-z900 \
|
|
memmove memmove-c \
|
|
strstr strstr-vx strstr-c \
|
|
memmem memmem-vx memmem-c \
|
|
strlen strlen-vx strlen-c \
|
|
strnlen strnlen-vx strnlen-c \
|
|
strcpy strcpy-vx strcpy-z900 \
|
|
stpcpy stpcpy-vx stpcpy-c \
|
|
strncpy strncpy-vx strncpy-z900 \
|
|
stpncpy stpncpy-vx stpncpy-c \
|
|
strcat strcat-vx strcat-c \
|
|
strncat strncat-vx strncat-c \
|
|
strcmp strcmp-vx strcmp-z900 \
|
|
strncmp strncmp-vx strncmp-c \
|
|
strchr strchr-vx strchr-c \
|
|
strchrnul strchrnul-vx strchrnul-c \
|
|
strrchr strrchr-vx strrchr-c \
|
|
strspn strspn-vx strspn-c \
|
|
strpbrk strpbrk-vx strpbrk-c \
|
|
strcspn strcspn-vx strcspn-c \
|
|
memchr memchr-vx memchr-z900 \
|
|
rawmemchr rawmemchr-vx rawmemchr-c \
|
|
memccpy memccpy-vx memccpy-c \
|
|
memrchr memrchr-vx memrchr-c
|
|
endif
|
|
|
|
ifeq ($(subdir),wcsmbs)
|
|
sysdep_routines += wcslen wcslen-vx wcslen-c \
|
|
wcsnlen wcsnlen-vx wcsnlen-c \
|
|
wcscpy wcscpy-vx wcscpy-c \
|
|
wcpcpy wcpcpy-vx wcpcpy-c \
|
|
wcsncpy wcsncpy-vx wcsncpy-c \
|
|
wcpncpy wcpncpy-vx wcpncpy-c \
|
|
wcscat wcscat-vx wcscat-c \
|
|
wcsncat wcsncat-vx wcsncat-c \
|
|
wcscmp wcscmp-vx wcscmp-c \
|
|
wcsncmp wcsncmp-vx wcsncmp-c \
|
|
wcschr wcschr-vx wcschr-c \
|
|
wcschrnul wcschrnul-vx wcschrnul-c \
|
|
wcsrchr wcsrchr-vx wcsrchr-c \
|
|
wcsspn wcsspn-vx wcsspn-c \
|
|
wcspbrk wcspbrk-vx wcspbrk-c \
|
|
wcscspn wcscspn-vx wcscspn-c \
|
|
wmemchr wmemchr-vx wmemchr-c
|
|
endif
|