about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* alpha: Use Linux generic sigaction implementationAdhemerval Zanella2018-12-189-115/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Alpha rt_sigaction syscall uses a slight different kernel ABI than generic one: arch/alpha/kernel/signal.c 90 SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act, 91 struct sigaction __user *, oact, 92 size_t, sigsetsize, void __user *, restorer) Similar as sparc, the syscall expects a restorer function. However different than sparc, alpha defines the restorer as the 5th argument (sparc defines as the 4th). This patch removes the arch-specific alpha sigaction implementation, adapt the Linux generic one to different restore placements (through STUB macro), and make alpha use the Linux generic kernel_sigaction definition. Checked on alpha-linux-gnu and x86_64-linux-gnu (for sanity). * sysdeps/unix/sysv/linux/alpha/Makefile: Update comment about __syscall_rt_sigaction. * sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h (kernel_sigaction): Use Linux generic defintion. (STUB): Define. (__syscall_rt_sigreturn, __syscall_sigreturn): Add prototype. * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S (__syscall_rt_sigaction): Remove implementation. (__syscall_sigreturn, __syscall_rt_sigreturn): Define as global and hidden. * sysdeps/unix/sysv/linux/alpha/sigaction.c: Remove file. * sysdeps/unix/sysv/linux/alpha/sysdep.h (INLINE_SYSCALL, INTERNAL_SYSCALL): Remove definitions. * sysdeps/unix/sysv/linux/sigaction.c: Define STUB to accept both the action and signal set size. * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c (STUB): Redefine. * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c (STUB): Likewise.
* m68k: Fix sigaction kernel definition (BZ #23960)Adhemerval Zanella2018-12-188-34/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit b4a5d26d883 (linux: Consolidate sigaction implementation) added a wrong kernel_sigaction definition for m68k, meant for __NR_sigaction instead of __NR_rt_sigaction as used on generic Linux sigaction implementation. This patch fixes it by using the Linux generic definition meant for the RT kernel ABI. Checked the signal tests on emulated m68-linux-gnu (Aranym). It fixes the faulty signal/tst-sigaction and man works as expected. Adhemerval Zanella <adhemerval.zanella@linaro.org> James Clarke <jrtc27@jrtc27.com> [BZ #23960] * sysdeps/unix/sysv/linux/kernel_sigaction.h (HAS_SA_RESTORER): Define if SA_RESTORER is defined. (kernel_sigaction): Define sa_restorer if HAS_SA_RESTORER is defined. (SET_SA_RESTORER, RESET_SA_RESTORER): Define iff the macro are not already defined. * sysdeps/unix/sysv/linux/m68k/kernel_sigaction.h (SA_RESTORER, kernel_sigaction, SET_SA_RESTORER, RESET_SA_RESTORER): Remove definitions. (HAS_SA_RESTORER): Define. * sysdeps/unix/sysv/linux/sparc/kernel_sigaction.h (SA_RESTORER, SET_SA_RESTORER, RESET_SA_RESTORER): Remove definition. (HAS_SA_RESTORER): Define. * sysdeps/unix/sysv/linux/nios2/kernel_sigaction.h: Include generic kernel_sigaction after define SET_SA_RESTORER and RESET_SA_RESTORER. * sysdeps/unix/sysv/linux/powerpc/kernel_sigaction.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
* Remove __ASSUME_ST_INO_64_BIT.Joseph Myers2018-12-188-43/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kernel-features.h has a macro __ASSUME_ST_INO_64_BIT, with a comment "However, SH is lame, and still does not have a 64-bit inode field.". The macro is, in fact, defined to 0 by Alpha as well as SH. The Alpha case is, however, trivially useless: none of the files that test __ASSUME_ST_INO_64_BIT are built for Alpha (which gained kernel support for stat64 syscalls, with a 64-bit st_ino field, in Linux 2.6.4; the define to 0 for Alpha in glibc predates that). The SH kernel gained support for a 64-bit st_ino in struct stat64 in commit 760bcb1deec13c50e20399c84cb6a8ea41cc2820 ("sh: Fix fstatat64() syscall."), which is in Linux 2.6.22 and later. So the redefinition of __ASSUME_ST_INO_64_BIT to 0 is of no use for SH either; three of the files testing it do so immediately after a stat64-family syscall has been used, which will always have set the 64-bit st_ino correctly (in addition to the 32-bit __st_ino), while the relevant code __xstat32_conv executes only after such a syscall in the function calling __xstat32_conv. Thus this patch removes __ASSUME_ST_INO_64_BIT and code testing it. Removing the useless [!__ASSUME_ST_INO_64_BIT] code in __xstat32_conv renders the [_HAVE_STAT64___ST_INO] and [!_HAVE_STAT64___ST_INO] cases around it identical, so that conditional is also removed. Tested compilation with build-many-glibcs.py for its Alpha and SH configurations; also ran the glibc testsuite for x86_64 and x86. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_ST_INO_64_BIT): Remove macro definition. * sysdeps/unix/sysv/linux/alpha/kernel-features.h (__ASSUME_ST_INO_64_BIT): Do not undefine and define. * sysdeps/unix/sysv/linux/sh/kernel-features.h (__ASSUME_ST_INO_64_BIT): Likewise. * sysdeps/unix/sysv/linux/fxstat64.c: Do not include <kernel-features.h>. (___fxstat64) [_HAVE_STAT64___ST_INO && !__ASSUME_ST_INO_64_BIT]: Remove conditional code. * sysdeps/unix/sysv/linux/lxstat64.c: Do not include <kernel-features.h>. (___lxstat64) [_HAVE_STAT64___ST_INO && !__ASSUME_ST_INO_64_BIT]: Remove conditional code. * sysdeps/unix/sysv/linux/xstat64.c: Do not include <kernel-features.h>. (___xstat64) [_HAVE_STAT64___ST_INO && !__ASSUME_ST_INO_64_BIT]: Remove conditional code. * sysdeps/unix/sysv/linux/xstatconv.c: Do not include <kernel-features.h>. (__xstat32_conv) [_HAVE_STAT64___ST_INO]: Remove conditional code. [!_HAVE_STAT64___ST_INO]: Make code unconditional.
* S390: Cleanup ifunc-resolve.h.Stefan Liebler2018-12-187-41/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The ifunc macros s390_vx_libc* are no longer used and can be removed as all users are now relying on s390_libc_ifunc_expr. The same applies to s390_libc_ifunc. The macro s390_libc_ifunc_init is now renamed to s390_libc_ifunc_expr_stfle_init and the users are adjusted accordingly. ChangeLog: * sysdeps/s390/multiarch/ifunc-resolve.h (s390_vx_libc_ifunc, s390_vx_libc_ifunc_redirected, s390_vx_libc_ifunc2, s390_vx_libc_ifunc_init, s390_vx_libc_ifunc2_redirected, s390_libc_ifunc): Delete macro definition. (s390_libc_ifunc_init): Rename to s390_libc_ifunc_expr_stfle_init. * sysdeps/s390/bzero: Use s390_libc_ifunc_expr_stfle_init instead of s390_libc_ifunc_init. * sysdeps/s390/memcmp.c: Likewise. * sysdeps/s390/memcpy.c: Likewise. * sysdeps/s390/mempcpy.c: Likewise. * sysdeps/s390/memset.c: Likewise.
* S390: Refactor gconv_simple ifunc handling.Stefan Liebler2018-12-182-11/+17
| | | | | | | | | | | | | | | The ifunc handling for various __gconv_transform_* functions which are using IFUNC on s390x are adjusted in order to omit ifunc if the minimum architecture level already supports newer CPUs by default. Instead those functions are just an alias to the vector variants. Furthermore the ifunc-macro s390_libc_ifunc_expr is now used instead of s390_vx_libc_ifunc. ChangeLog: * sysdeps/s390/multiarch/gconv_simple.c (ICONV_VX_IFUNC): Define macro dependent on HAVE_S390_MIN_Z13_ZARCH_ASM_SUPPORT.
* S390: Refactor wmemcmp ifunc handling.Stefan Liebler2018-12-188-29/+111
| | | | | | | | | | | | | | | | | | | | | The ifunc handling for wmemcmp is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wmemcmp variants. * sysdeps/s390/Makefile (sysdep_routines): Add wmemcmp variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wmemcmp. * sysdeps/s390/multiarch/wmemcmp-c.c: Move to ... * sysdeps/s390/wmemcmp-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wmemcmp-vx.S: Move to ... * sysdeps/s390/wmemcmp-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wmemcmp.c: Move to ... * sysdeps/s390/wmemcmp.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wmemcmp.h: New file.
* S390: Refactor wmemset ifunc handling.Stefan Liebler2018-12-188-32/+141
| | | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wmemset 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 wmemset variants. * sysdeps/s390/Makefile (sysdep_routines): Add wmemset variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wmemset. * sysdeps/s390/multiarch/wmemset-c.c: Move to ... * sysdeps/s390/wmemset-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wmemset-vx.S: Move to ... * sysdeps/s390/wmemset-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wmemset.c: Move to ... * sysdeps/s390/wmemset.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wmemset.h: New file.
* S390: Refactor wmemchr ifunc handling.Stefan Liebler2018-12-188-32/+141
| | | | | | | | | | | | | | | | | | | | | | | 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.
* S390: Refactor wcscspn ifunc handling.Stefan Liebler2018-12-188-19/+115
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcscspn 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. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcscspn variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcscspn variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcscspn. * sysdeps/s390/multiarch/wcscspn-c.c: Move to ... * sysdeps/s390/wcscspn-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcscspn-vx.S: Move to ... * sysdeps/s390/wcscspn-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcscspn.c: Move to ... * sysdeps/s390/wcscspn.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcscspn.h: New file.
* S390: Refactor wcspbrk ifunc handling.Stefan Liebler2018-12-188-24/+129
| | | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcspbrk 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 wcspbrk variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcspbrk variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcspbrk. * sysdeps/s390/multiarch/wcspbrk-c.c: Move to ... * sysdeps/s390/wcspbrk-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcspbrk-vx.S: Move to ... * sysdeps/s390/wcspbrk-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcspbrk.c: Move to ... * sysdeps/s390/wcspbrk.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcspbrk.h: New file.
* S390: Refactor wcsspn ifunc handling.Stefan Liebler2018-12-188-24/+129
| | | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcsspn 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 wcsspn variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcsspn variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcsspn. * sysdeps/s390/multiarch/wcsspn-c.c: Move to ... * sysdeps/s390/wcsspn-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsspn-vx.S: Move to ... * sysdeps/s390/wcsspn-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsspn.c: Move to ... * sysdeps/s390/wcsspn.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcsspn.h: New file.
* S390: Refactor wcsrchr ifunc handling.Stefan Liebler2018-12-188-19/+116
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcsrchr 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. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcsrchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcsrchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcsrchr. * sysdeps/s390/multiarch/wcsrchr-c.c: Move to ... * sysdeps/s390/wcsrchr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsrchr-vx.S: Move to ... * sysdeps/s390/wcsrchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsrchr.c: Move to ... * sysdeps/s390/wcsrchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcsrchr.h: New file.
* S390: Refactor wcschrnul ifunc handling.Stefan Liebler2018-12-188-20/+118
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcschrnul 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. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcschrnul variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcschrnul variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcschrnul. * sysdeps/s390/multiarch/wcschrnul-c.c: Move to ... * sysdeps/s390/wcschrnul-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcschrnul-vx.S: Move to ... * sysdeps/s390/wcschrnul-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcschrnul.c: Move to ... * sysdeps/s390/wcschrnul.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcschrnul.h: New file.
* S390: Refactor wcschr ifunc handling.Stefan Liebler2018-12-188-32/+141
| | | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcschr 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 wcschr variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcschr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcschr. * sysdeps/s390/multiarch/wcschr-c.c: Move to ... * sysdeps/s390/wcschr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcschr-vx.S: Move to ... * sysdeps/s390/wcschr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcschr.c: Move to ... * sysdeps/s390/wcschr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcschr.h: New file.
* S390: Refactor wcsncmp ifunc handling.Stefan Liebler2018-12-188-18/+114
| | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcsncmp is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcsncmp variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcsncmp variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcsncmp. * sysdeps/s390/multiarch/wcsncmp-c.c: Move to ... * sysdeps/s390/wcsncmp-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsncmp-vx.S: Move to ... * sysdeps/s390/wcsncmp-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsncmp.c: Move to ... * sysdeps/s390/wcsncmp.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcsncmp.h: New file.
* S390: Refactor wcscmp ifunc handling.Stefan Liebler2018-12-188-26/+127
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcscmp is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcscmp variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcscmp variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcscmp. * sysdeps/s390/multiarch/wcscmp-c.c: Move to ... * sysdeps/s390/wcscmp-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcscmp-vx.S: Move to ... * sysdeps/s390/wcscmp-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcscmp.c: Move to ... * sysdeps/s390/wcscmp.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcscmp.h: New file.
* S390: Refactor wcsncat ifunc handling.Stefan Liebler2018-12-188-19/+116
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcsncat 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. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcsncat variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcsncat variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcsncat. * sysdeps/s390/multiarch/wcsncat-c.c: Move to ... * sysdeps/s390/wcsncat-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsncat-vx.S: Move to ... * sysdeps/s390/wcsncat-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsncat.c: Move to ... * sysdeps/s390/wcsncat.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcsncat.h: New file.
* S390: Refactor wcscat ifunc handling.Stefan Liebler2018-12-188-20/+118
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcscat 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. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcscat variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcscat variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcscat. * sysdeps/s390/multiarch/wcscat-c.c: Move to ... * sysdeps/s390/wcscat-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcscat-vx.S: Move to ... * sysdeps/s390/wcscat-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcscat.c: Move to ... * sysdeps/s390/wcscat.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcscat.h: New file.
* S390: Refactor wcpncpy ifunc handling.Stefan Liebler2018-12-188-20/+118
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcpncpy 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. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcpncpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcpncpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcpncpy. * sysdeps/s390/multiarch/wcpncpy-c.c: Move to ... * sysdeps/s390/wcpncpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcpncpy-vx.S: Move to ... * sysdeps/s390/wcpncpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcpncpy.c: Move to ... * sysdeps/s390/wcpncpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcpncpy.h: New file.
* S390: Refactor wcsncpy ifunc handling.Stefan Liebler2018-12-188-21/+118
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcsncpy 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. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcsncpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcsncpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcsncpy. * sysdeps/s390/multiarch/wcsncpy-c.c: Move to ... * sysdeps/s390/wcsncpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsncpy-vx.S: Move to ... * sysdeps/s390/wcsncpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsncpy.c: Move to ... * sysdeps/s390/wcsncpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcsncpy.h: New file.
* S390: Refactor wcpcpy ifunc handling.Stefan Liebler2018-12-188-20/+118
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcpcpy 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. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcpcpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcpcpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcpcpy. * sysdeps/s390/multiarch/wcpcpy-c.c: Move to ... * sysdeps/s390/wcpcpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcpcpy-vx.S: Move to ... * sysdeps/s390/wcpcpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcpcpy.c: Move to ... * sysdeps/s390/wcpcpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcpcpy.h: New file.
* S390: Refactor wcscpy ifunc handling.Stefan Liebler2018-12-188-19/+116
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcscpy 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. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcscpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcscpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcscpy. * sysdeps/s390/multiarch/wcscpy-c.c: Move to ... * sysdeps/s390/wcscpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcscpy-vx.S: Move to ... * sysdeps/s390/wcscpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcscpy.c: Move to ... * sysdeps/s390/wcscpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcscpy.h: New file.
* S390: Refactor wcsnlen ifunc handling.Stefan Liebler2018-12-188-20/+118
| | | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcsnlen 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 wcsnlen variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcsnlen variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcsnlen. * sysdeps/s390/multiarch/wcsnlen-c.c: Move to ... * sysdeps/s390/wcsnlen-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsnlen-vx.S: Move to ... * sysdeps/s390/wcsnlen-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsnlen.c: Move to ... * sysdeps/s390/wcsnlen.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcsnlen.h: New file.
* S390: Refactor wcslen ifunc handling.Stefan Liebler2018-12-188-19/+120
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for wcslen 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. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcslen variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcslen variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcslen. * sysdeps/s390/multiarch/wcslen-c.c: Move to ... * sysdeps/s390/wcslen-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcslen-vx.S: Move to ... * sysdeps/s390/wcslen-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcslen.c: Move to ... * sysdeps/s390/wcslen.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcslen.h: New file.
* S390: Refactor memrchr ifunc handling.Stefan Liebler2018-12-188-21/+117
| | | | | | | | | | | | | | | | | | | | | The ifunc handling for memrchr is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove memrchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add memrchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for memrchr. * sysdeps/s390/multiarch/memrchr-c.c: Move to ... * sysdeps/s390/memrchr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/memrchr-vx.S: Move to ... * sysdeps/s390/memrchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/memrchr.c: Move to ... * sysdeps/s390/memrchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-memrchr.h: New file.
* S390: Refactor memccpy ifunc handling.Stefan Liebler2018-12-188-19/+120
| | | | | | | | | | | | | | | | | | | | | The ifunc handling for memccpy is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove memccpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add memccpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for memccpy. * sysdeps/s390/multiarch/memccpy-c.c: Move to ... * sysdeps/s390/memccpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/memccpy-vx.S: Move to ... * sysdeps/s390/memccpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/memccpy.c: Move to ... * sysdeps/s390/memccpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-memccpy.h: New file.
* S390: Refactor rawmemchr ifunc handling.Stefan Liebler2018-12-188-32/+133
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for rawmemchr is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove rawmemchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add rawmemchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for rawmemchr. * sysdeps/s390/multiarch/rawmemchr-c.c: Move to ... * sysdeps/s390/rawmemchr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/rawmemchr-vx.S: Move to ... * sysdeps/s390/rawmemchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/rawmemchr.c: Move to ... * sysdeps/s390/rawmemchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-rawmemchr.h: New file.
* S390: Refactor memchr ifunc handling.Stefan Liebler2018-12-1811-105/+146
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ifunc handling for memchr is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. Note: The fallback s390-32/s390-64 ifunc variants with srst instruction are now moved to the unified memchr-z900.S file which can be used for 31/64bit. The s390-32/s390-64 files multiarch/memchr.c and memchr.S are deleted. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove memchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add memchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for memchr. * sysdeps/s390/multiarch/memchr-vx.S: Move to ... * sysdeps/s390/memchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/memchr.c: Move to ... * sysdeps/s390/memchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-memchr.h: New file. * sysdeps/s390/s390-64/memchr.S: Move to ... * sysdeps/s390/memchr-z900.S: ... here and adjust to be usable for 31/64bit and ifunc handling. * sysdeps/s390/s390-32/multiarch/memchr.c: Delete file. * sysdeps/s390/s390-64/multiarch/memchr.c: Likewise. * sysdeps/s390/s390-32/memchr.S: Likewise.
* S390: Refactor strcspn ifunc handling.Stefan Liebler2018-12-188-21/+126
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strcspn is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strcspn variants. * sysdeps/s390/Makefile (sysdep_routines): Add strcspn variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strcspn. * sysdeps/s390/multiarch/strcspn-c.c: Move to ... * sysdeps/s390/strcspn-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcspn-vx.S: Move to ... * sysdeps/s390/strcspn-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcspn.c: Move to ... * sysdeps/s390/strcspn.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strcspn.h: New file.
* S390: Refactor strpbrk ifunc handling.Stefan Liebler2018-12-188-21/+126
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strpbrk is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strpbrk variants. * sysdeps/s390/Makefile (sysdep_routines): Add strpbrk variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strpbrk. * sysdeps/s390/multiarch/strpbrk-c.c: Move to ... * sysdeps/s390/strpbrk-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strpbrk-vx.S: Move to ... * sysdeps/s390/strpbrk-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strpbrk.c: Move to ... * sysdeps/s390/strpbrk.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strpbrk.h: New file.
* S390: Refactor strspn ifunc handling.Stefan Liebler2018-12-188-20/+125
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strspn is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strspn variants. * sysdeps/s390/Makefile (sysdep_routines): Add strspn variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strspn. * sysdeps/s390/multiarch/strspn-c.c: Move to ... * sysdeps/s390/strspn-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strspn-vx.S: Move to ... * sysdeps/s390/strspn-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strspn.c: Move to ... * sysdeps/s390/strspn.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strspn.h: New file.
* S390: Refactor strrchr ifunc handling.Stefan Liebler2018-12-188-22/+128
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strrchr is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strrchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add strrchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strrchr. * sysdeps/s390/multiarch/strrchr-c.c: Move to ... * sysdeps/s390/strrchr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strrchr-vx.S: Move to ... * sysdeps/s390/strrchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strrchr.c: Move to ... * sysdeps/s390/strrchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strrchr.h: New file.
* S390: Refactor strchrnul ifunc handling.Stefan Liebler2018-12-188-19/+121
| | | | | | | | | | | | | | | | | | | | | The ifunc handling for strchrnul is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strchrnul variants. * sysdeps/s390/Makefile (sysdep_routines): Add strchrnul variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strchrnul. * sysdeps/s390/multiarch/strchrnul-c.c: Move to ... * sysdeps/s390/strchrnul-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strchrnul-vx.S: Move to ... * sysdeps/s390/strchrnul-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strchrnul.c: Move to ... * sysdeps/s390/strchrnul.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strchrnul.h: New file.
* S390: Refactor strchr ifunc handling.Stefan Liebler2018-12-188-22/+128
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strchr is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add strchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strchr. * sysdeps/s390/multiarch/strchr-c.c: Move to ... * sysdeps/s390/strchr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strchr-vx.S: Move to ... * sysdeps/s390/strchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strchr.c: Move to ... * sysdeps/s390/strchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strchr.h: New file.
* S390: Refactor strncmp ifunc handling.Stefan Liebler2018-12-188-20/+125
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strncmp is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strncmp variants. * sysdeps/s390/Makefile (sysdep_routines): Add strncmp variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strncmp. * sysdeps/s390/multiarch/strncmp-c.c: Move to ... * sysdeps/s390/strncmp-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strncmp-vx.S: Move to ... * sysdeps/s390/strncmp-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strncmp.c: Move to ... * sysdeps/s390/strncmp.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strncmp.h: New file.
* S390: Refactor strcmp ifunc handling.Stefan Liebler2018-12-1811-104/+138
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strcmp is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. Note: The fallback s390-32/s390-64 ifunc variants with clst instruction are now moved to the unified strcmp-z900.S file which can be used for 31/64bit. The s390-32/s390-64 files multiarch/strcmp.c and strcmp.S are deleted. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strcmp variants. * sysdeps/s390/Makefile (sysdep_routines): Add strcmp variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strcmp. * sysdeps/s390/multiarch/strcmp-vx.S: Move to ... * sysdeps/s390/strcmp-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcmp.c: Move to ... * sysdeps/s390/strcmp.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strcmp.h: New file. * sysdeps/s390/s390-64/strcmp.S: Move to ... * sysdeps/s390/strcmp-z900.S: ... here and adjust to be usable for 31/64bit and ifunc handling. * sysdeps/s390/s390-32/multiarch/strcmp.c: Delete file. * sysdeps/s390/s390-64/multiarch/strcmp.c: Likewise. * sysdeps/s390/s390-32/strcmp.S: Likewise.
* S390: Refactor strncat ifunc handling.Stefan Liebler2018-12-188-16/+123
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strncat is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strncat variants. * sysdeps/s390/Makefile (sysdep_routines): Add strncat variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strncat. * sysdeps/s390/multiarch/strncat-c.c: Move to ... * sysdeps/s390/strncat-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strncat-vx.S: Move to ... * sysdeps/s390/strncat-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strncat.c: Move to ... * sysdeps/s390/strncat.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strncat.h: New file.
* S390: Refactor strcat ifunc handling.Stefan Liebler2018-12-188-21/+123
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strcat is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strcat variants. * sysdeps/s390/Makefile (sysdep_routines): Add strcat variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strcat. * sysdeps/s390/multiarch/strcat-c.c: Move to ... * sysdeps/s390/strcat-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcat-vx.S: Move to ... * sysdeps/s390/strcat-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcat.c: Move to ... * sysdeps/s390/strcat.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strcat.h: New file.
* S390: Refactor stpncpy ifunc handling.Stefan Liebler2018-12-188-22/+128
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for stpncpy is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove stpncpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add stpncpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for stpncpy. * sysdeps/s390/multiarch/stpncpy-c.c: Move to ... * sysdeps/s390/stpncpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/stpncpy-vx.S: Move to ... * sysdeps/s390/stpncpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/stpncpy.c: Move to ... * sysdeps/s390/stpncpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-stpncpy.h: New file.
* S390: Refactor strncpy ifunc handling.Stefan Liebler2018-12-1811-66/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strncpy is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. Note: The fallback s390-32/s390-64 ifunc variants are now moved to the strncpy-z900.S files. The s390-32/s390-64 files multiarch/strncpy.c and strncpy.S are deleted. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strncpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add strncpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strncpy. * sysdeps/s390/multiarch/strncpy-vx.S: Move to ... * sysdeps/s390/strncpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strncpy.c: Move to ... * sysdeps/s390/strncpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strncpy.h: New file. * sysdeps/s390/s390-64/strncpy.S: Move to ... * sysdeps/s390/s390-64/strncpy-z900.S: ... here and adjust ifunc handling. * sysdeps/s390/s390-32/strncpy.S: Move to ... * sysdeps/s390/s390-32/strncpy-z900.S: ... here and adjust ifunc handling. * sysdeps/s390/s390-32/multiarch/strncpy.c: Delete file. * sysdeps/s390/s390-64/multiarch/strncpy.c: Likewise.
* S390: Refactor stpcpy ifunc handling.Stefan Liebler2018-12-188-26/+133
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for stpcpy is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove stpcpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add stpcpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for stpcpy. * sysdeps/s390/multiarch/stpcpy-c.c: Move to ... * sysdeps/s390/stpcpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/stpcpy-vx.S: Move to ... * sysdeps/s390/stpcpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/stpcpy.c: Move to ... * sysdeps/s390/stpcpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-stpcpy.h: New file.
* S390: Refactor strcpy ifunc handling.Stefan Liebler2018-12-1811-103/+142
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strcpy is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. Note: The fallback s390-32/s390-64 ifunc variants with mvst instruction are now moved to the unified strcpy-z900.S file which can be used for 31/64bit. The s390-32/s390-64 files multiarch/strcpy.c and strcpy.S are deleted. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strcpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add strcpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strcpy. * sysdeps/s390/multiarch/strcpy-vx.S: Move to ... * sysdeps/s390/strcpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcpy.c: Move to ... * sysdeps/s390/strcpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strcpy.h: New file. * sysdeps/s390/s390-64/strcpy.S: Move to ... * sysdeps/s390/strcpy-z900.S: ... here and adjust to be usable for 31/64bit and ifunc handling. * sysdeps/s390/s390-32/multiarch/strcpy.c: Delete file. * sysdeps/s390/s390-64/multiarch/strcpy.c: Likewise. * sysdeps/s390/s390-32/strcpy.S: Likewise.
* S390: Refactor strnlen ifunc handling.Stefan Liebler2018-12-188-21/+128
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strnlen is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strnlen variants. * sysdeps/s390/Makefile (sysdep_routines): Add strnlen variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strnlen. * sysdeps/s390/multiarch/strnlen-c.c: Move to ... * sysdeps/s390/strnlen-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strnlen-vx.S: Move to ... * sysdeps/s390/strnlen-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strnlen.c: Move to ... * sysdeps/s390/strnlen.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strnlen.h: New file.
* S390: Refactor strlen ifunc handling.Stefan Liebler2018-12-188-20/+123
| | | | | | | | | | | | | | | | | | | | | | The ifunc handling for strlen is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strlen variants. * sysdeps/s390/Makefile (sysdep_routines): Add strlen variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strlen. * sysdeps/s390/multiarch/strlen-c.c: Move to ... * sysdeps/s390/strlen-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strlen-vx.S: Move to ... * sysdeps/s390/strlen-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strlen.c: Move to ... * sysdeps/s390/strlen.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strlen.h: New file.
* S390: Add z13 memmem ifunc variant.Stefan Liebler2018-12-187-1/+228
| | | | | | | | | | | | | | | | The new vector variant of memmem is using the common code implementation, but instead of calling the default mem* functions, the vector variants are called. ChangeLog: * sysdeps/s390/Makefile (sysdep_routines): Add memmem variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add ifunc variants for memmem. * sysdeps/s390/ifunc-memmem.h: New file. * sysdeps/s390/memmem.c: Likewise. * sysdeps/s390/memmem-c.c: Likewise. * sysdeps/s390/memmem-vx.c: Likewise.
* S390: Add z13 strstr ifunc variant.Stefan Liebler2018-12-187-1/+201
| | | | | | | | | | | | | | | | The new vector variant of strstr is using the common code implementation, but instead of calling the default str* / mem* functions, the vector variants are called. ChangeLog: * sysdeps/s390/Makefile (sysdep_routines): Add strstr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add ifunc variants for strstr. * sysdeps/s390/ifunc-strstr.h: New file. * sysdeps/s390/strstr.c: Likewise. * sysdeps/s390/strstr-c.c: Likewise. * sysdeps/s390/strstr-vx.c: Likewise.
* S390: Add z13 memmove ifunc variant.Stefan Liebler2018-12-187-1/+230
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces a z13 specific ifunc variant for memmove. As the common code implementation, it checks if we can copy from the beginning to the end - with z196 memcpy implementation - or if we have to copy from the end to the beginning. The latter case is done by using vector load/store instructions. If vector instructions are not available, the common-code is used as fallback. Therefore it is implemented in memmove-c with a different name. Furthermore the ifunc logic decides if we need the common-code implementation at all. If vector instructions are supported due to the minimum architecture level set we can skip the common-code ifunc variant. ChangeLog: * sysdeps/s390/Makefile (sysdep_routines): Add memmove-c. * sysdeps/s390/ifunc-memcpy.h (HAVE_MEMMOVE_IFUNC, HAVE_MEMMOVE_IFUNC_AND_VX_SUPPORT, MEMMOVE_DEFAULT, HAVE_MEMMOVE_C, MEMMOVE_C, HAVE_MEMMOVE_Z13, MEMMOVE_Z13): New defines. * sysdeps/s390/memcpy-z900.S: Add z13 memmove implementation. * sysdeps/s390/memmove-c.c: New file. * sysdeps/s390/memmove.c: Likewise. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add ifunc variants for memmove.
* S390: Add configure check to detect z13 as mininum architecture level set.Stefan Liebler2018-12-184-0/+75
| | | | | | | | | | Add a configure check for z13 in the same way as done for z196. ChangeLog: * config.h.in (HAVE_S390_MIN_Z13_ZARCH_ASM_SUPPORT): New undefine. * sysdeps/s390/configure.ac: Add check for z13 support. * sysdeps/s390/configure: Regenerated.
* S390: Use memcpy for forward cases in memmove.Stefan Liebler2018-12-182-0/+27
| | | | | | | | | | The s390/s390x memcpy implementations are safe to be used by memmove. Starting with this commit, memmove is using memcpy for the forward cases on s390. ChangeLog: * sysdeps/s390/memcopy.h: New file.
* S390: Remove s390 specific implementation of bcopy.Stefan Liebler2018-12-183-156/+5
| | | | | | | | | | | | | | | | | Nowadays gcc is automatically replacing a call to bcopy with a call to memmove. Thus only old binaries will call the s390 specific bcopy implementation. The s390 specific implementation is using an own implementation for memcpy in the forward case and is relying on memmove in the backward case. After removing the s390 specific bcopy, the common code bcopy is used. It just performs a tail call to memmove. ChangeLog: * sysdeps/s390/s390-32/bcopy.S: Remove. * sysdeps/s390/s390-64/bcopy.S: Likewise.