S390: Use s390-64 specific ionv-modules on s390-32, too.
This patch reworks the existing s390 64bit specific iconv modules in order
to use them on s390 31bit, too.
Thus the parts for subdirectory iconvdata in sysdeps/s390/s390-64/Makefile
were moved to sysdeps/s390/Makefile so that they apply on 31bit, too.
All those modules are moved from sysdeps/s390/s390-64 directory to sysdeps/s390.
The iso-8859-1 to/from cp037 module was adjusted, to use brct (branch relative
on count) instruction on 31bit s390 instead of brctg, because the brctg is a
zarch instruction and is not available on a 31bit kernel.
The utf modules are using zarch instructions, thus the directive machinemode
zarch_nohighgprs was added to the inline assemblies to omit the high-gprs flag
in the shared libraries. Otherwise they can't be loaded on a 31bit kernel.
The ifunc resolvers were adjusted in order to call the etf3eh or vector variants
only if zarch instructions are available (64bit kernel in 31bit compat-mode).
Furthermore some variable types were changed. E.g. unsigned long long would be
a register pair on s390 31bit, but we want only one single register.
For variables of type size_t the register contents have to be enlarged from a
32bit to a 64bit value on 31bit, because the inline assemblies uses 64bit values
in such cases.
ChangeLog:
* sysdeps/s390/s390-64/Makefile (iconvdata-subdirectory):
Move to ...
* sysdeps/s390/Makefile: ... here.
* sysdeps/s390/s390-64/iso-8859-1_cp037_z900.c: Move to ...
* sysdeps/s390/iso-8859-1_cp037_z900.c: ... here.
(BRANCH_ON_COUNT): New define.
(TR_LOOP): Use BRANCH_ON_COUNT instead of brctg.
* sysdeps/s390/s390-64/utf16-utf32-z9.c: Move to ...
* sysdeps/s390/utf16-utf32-z9.c: ... here and adjust to
run on s390-32, too.
* sysdeps/s390/s390-64/utf8-utf16-z9.c: Move to ...
* sysdeps/s390/utf8-utf16-z9.c: ... here and adjust to
run on s390-32, too.
* sysdeps/s390/s390-64/utf8-utf32-z9.c: Move to ...
* sysdeps/s390/utf8-utf32-z9.c: ... here and adjust to
run on s390-32, too.
2016-05-25 23:18:05 +08:00
|
|
|
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
|
Rename cppflags-iterator.mk to libof-iterator.mk, remove extra-modules.mk.
cppflags-iterator.mk no longer has anything to do with CPPFLAGS; all
it does is set libof-$(foo) for a list of files. extra-modules.mk
does the same thing, but with a different input variable, and doesn't
let the caller control the module. Therefore, this patch gives
cppflags-iterator.mk a better name, removes extra-modules.mk, and
updates all uses of both.
* extra-modules.mk: Delete file.
* cppflags-iterator.mk: Rename to ...
* libof-iterator.mk: ...this. Adjust comments.
* Makerules, extra-lib.mk, benchtests/Makefile, elf/Makefile
* elf/rtld-Rules, iconv/Makefile, locale/Makefile, malloc/Makefile
* nscd/Makefile, sunrpc/Makefile, sysdeps/s390/Makefile:
Use libof-iterator.mk instead of cppflags-iterator.mk or
extra-modules.mk.
* benchtests/strcoll-inputs/filelist#en_US.UTF-8: Remove
extra-modules.mk and cppflags-iterator.mk, add libof-iterator.mk.
2017-05-09 03:52:26 +08:00
|
|
|
include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
|
S390: Use s390-64 specific ionv-modules on s390-32, too.
This patch reworks the existing s390 64bit specific iconv modules in order
to use them on s390 31bit, too.
Thus the parts for subdirectory iconvdata in sysdeps/s390/s390-64/Makefile
were moved to sysdeps/s390/Makefile so that they apply on 31bit, too.
All those modules are moved from sysdeps/s390/s390-64 directory to sysdeps/s390.
The iso-8859-1 to/from cp037 module was adjusted, to use brct (branch relative
on count) instruction on 31bit s390 instead of brctg, because the brctg is a
zarch instruction and is not available on a 31bit kernel.
The utf modules are using zarch instructions, thus the directive machinemode
zarch_nohighgprs was added to the inline assemblies to omit the high-gprs flag
in the shared libraries. Otherwise they can't be loaded on a 31bit kernel.
The ifunc resolvers were adjusted in order to call the etf3eh or vector variants
only if zarch instructions are available (64bit kernel in 31bit compat-mode).
Furthermore some variable types were changed. E.g. unsigned long long would be
a register pair on s390 31bit, but we want only one single register.
For variables of type size_t the register contents have to be enlarged from a
32bit to a 64bit value on 31bit, because the inline assemblies uses 64bit values
in such cases.
ChangeLog:
* sysdeps/s390/s390-64/Makefile (iconvdata-subdirectory):
Move to ...
* sysdeps/s390/Makefile: ... here.
* sysdeps/s390/s390-64/iso-8859-1_cp037_z900.c: Move to ...
* sysdeps/s390/iso-8859-1_cp037_z900.c: ... here.
(BRANCH_ON_COUNT): New define.
(TR_LOOP): Use BRANCH_ON_COUNT instead of brctg.
* sysdeps/s390/s390-64/utf16-utf32-z9.c: Move to ...
* sysdeps/s390/utf16-utf32-z9.c: ... here and adjust to
run on s390-32, too.
* sysdeps/s390/s390-64/utf8-utf16-z9.c: Move to ...
* sysdeps/s390/utf8-utf16-z9.c: ... here and adjust to
run on s390-32, too.
* sysdeps/s390/s390-64/utf8-utf32-z9.c: Move to ...
* sysdeps/s390/utf8-utf32-z9.c: ... here and adjust to
run on s390-32, too.
2016-05-25 23:18:05 +08:00
|
|
|
|
|
|
|
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
|
2018-08-10 15:07:43 +08:00
|
|
|
|
|
|
|
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
|
2018-12-18 20:57:04 +08:00
|
|
|
|
|
|
|
ifeq ($(subdir),string)
|
2018-12-18 20:57:05 +08:00
|
|
|
sysdep_routines += bzero memset memset-z900 \
|
2018-12-18 20:57:06 +08:00
|
|
|
memcmp memcmp-z900 \
|
2018-12-18 20:57:08 +08:00
|
|
|
mempcpy memcpy memcpy-z900 \
|
2018-12-18 20:57:09 +08:00
|
|
|
memmove memmove-c \
|
2018-12-18 20:57:09 +08:00
|
|
|
strstr strstr-vx strstr-c \
|
2018-12-18 20:57:10 +08:00
|
|
|
memmem memmem-vx memmem-c \
|
2018-12-18 20:57:10 +08:00
|
|
|
strlen strlen-vx strlen-c \
|
2018-12-18 20:57:10 +08:00
|
|
|
strnlen strnlen-vx strnlen-c \
|
2018-12-18 20:57:11 +08:00
|
|
|
strcpy strcpy-vx strcpy-z900 \
|
2018-12-18 20:57:11 +08:00
|
|
|
stpcpy stpcpy-vx stpcpy-c \
|
2018-12-18 20:57:11 +08:00
|
|
|
strncpy strncpy-vx strncpy-z900 \
|
2018-12-18 20:57:12 +08:00
|
|
|
stpncpy stpncpy-vx stpncpy-c \
|
2018-12-18 20:57:12 +08:00
|
|
|
strcat strcat-vx strcat-c \
|
2018-12-18 20:57:13 +08:00
|
|
|
strncat strncat-vx strncat-c \
|
2018-12-18 20:57:13 +08:00
|
|
|
strcmp strcmp-vx strcmp-z900 \
|
2018-12-18 20:57:14 +08:00
|
|
|
strncmp strncmp-vx strncmp-c \
|
2018-12-18 20:57:14 +08:00
|
|
|
strchr strchr-vx strchr-c \
|
2018-12-18 20:57:14 +08:00
|
|
|
strchrnul strchrnul-vx strchrnul-c \
|
2018-12-18 20:57:15 +08:00
|
|
|
strrchr strrchr-vx strrchr-c \
|
2018-12-18 20:57:15 +08:00
|
|
|
strspn strspn-vx strspn-c \
|
2018-12-18 20:57:15 +08:00
|
|
|
strpbrk strpbrk-vx strpbrk-c \
|
2018-12-18 20:57:16 +08:00
|
|
|
strcspn strcspn-vx strcspn-c \
|
2018-12-18 20:57:16 +08:00
|
|
|
memchr memchr-vx memchr-z900 \
|
2018-12-18 20:57:16 +08:00
|
|
|
rawmemchr rawmemchr-vx rawmemchr-c \
|
2018-12-18 20:57:17 +08:00
|
|
|
memccpy memccpy-vx memccpy-c \
|
|
|
|
memrchr memrchr-vx memrchr-c
|
2018-12-18 20:57:04 +08:00
|
|
|
endif
|
2018-12-18 20:57:17 +08:00
|
|
|
|
|
|
|
ifeq ($(subdir),wcsmbs)
|
2018-12-18 20:57:18 +08:00
|
|
|
sysdep_routines += wcslen wcslen-vx wcslen-c \
|
2018-12-18 20:57:18 +08:00
|
|
|
wcsnlen wcsnlen-vx wcsnlen-c \
|
2018-12-18 20:57:19 +08:00
|
|
|
wcscpy wcscpy-vx wcscpy-c \
|
2018-12-18 20:57:19 +08:00
|
|
|
wcpcpy wcpcpy-vx wcpcpy-c \
|
2018-12-18 20:57:19 +08:00
|
|
|
wcsncpy wcsncpy-vx wcsncpy-c \
|
2018-12-18 20:57:20 +08:00
|
|
|
wcpncpy wcpncpy-vx wcpncpy-c \
|
2018-12-18 20:57:20 +08:00
|
|
|
wcscat wcscat-vx wcscat-c \
|
2018-12-18 20:57:21 +08:00
|
|
|
wcsncat wcsncat-vx wcsncat-c \
|
2018-12-18 20:57:21 +08:00
|
|
|
wcscmp wcscmp-vx wcscmp-c \
|
2018-12-18 20:57:22 +08:00
|
|
|
wcsncmp wcsncmp-vx wcsncmp-c \
|
2018-12-18 20:57:22 +08:00
|
|
|
wcschr wcschr-vx wcschr-c \
|
2018-12-18 20:57:22 +08:00
|
|
|
wcschrnul wcschrnul-vx wcschrnul-c \
|
2018-12-18 20:57:23 +08:00
|
|
|
wcsrchr wcsrchr-vx wcsrchr-c \
|
2018-12-18 20:57:23 +08:00
|
|
|
wcsspn wcsspn-vx wcsspn-c \
|
2018-12-18 20:57:23 +08:00
|
|
|
wcspbrk wcspbrk-vx wcspbrk-c \
|
2018-12-18 20:57:24 +08:00
|
|
|
wcscspn wcscspn-vx wcscspn-c \
|
2018-12-18 20:57:24 +08:00
|
|
|
wmemchr wmemchr-vx wmemchr-c \
|
2018-12-18 20:57:25 +08:00
|
|
|
wmemset wmemset-vx wmemset-c \
|
|
|
|
wmemcmp wmemcmp-vx wmemcmp-c
|
2018-12-18 20:57:17 +08:00
|
|
|
endif
|