aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
AgeCommit message (Collapse)AuthorFilesLines
2019-01-02Update MIPS libm-test-ulps.Joseph Myers2-88/+88
* sysdeps/mips/mips32/libm-test-ulps: Update. * sysdeps/mips/mips64/libm-test-ulps: Likewise.
2019-01-02ARM: fix kernel assisted atomics with GCC 8 (bug 24034)Aurelien Jarno1-5/+13
The pre-ARMv7 CPUs are missing atomic compare and exchange and/or barrier instructions. Therefore those are implemented using kernel assistance, calling a kernel function at a specific address, and passing the arguments in the r0 to r4 registers. This is done by specifying registers for local variables. The a_ptr variable is placed in the r2 register and declared with __typeof (mem). According to the GCC documentation on local register variables, if mem is a constant pointer, the compiler may substitute the variable with its initializer in asm statements, which may cause the corresponding operand to appear in a different register. This happens in __libc_start_main with the pointer to the thread counter for static binaries (but not the shared ones): # ifdef SHARED unsigned int *ptr = __libc_pthread_functions.ptr_nthreads; # ifdef PTR_DEMANGLE PTR_DEMANGLE (ptr); # endif # else extern unsigned int __nptl_nthreads __attribute ((weak)); unsigned int *const ptr = &__nptl_nthreads; # endif This causes static binaries using threads to crash when the GNU libc is built with GCC 8 and most notably tst-cancel21-static. To fix that, use the same trick than for the volatile qualifier, defining a_ptr as a union. Changelog: [BZ #24034] * sysdeps/unix/sysv/linux/arm/atomic-machine.h (__arm_assisted_compare_and_exchange_val_32_acq): Use uint32_t rather than __typeof (...) for the a_ptr variable.
2019-01-01Add IPV6_MULTICAST_ALL from Linux 4.20 to bits/in.h.Joseph Myers1-0/+1
This patch adds the IPV6_MULTICAST_ALL constant from Linux 4.20 to bits/in.h. Tested for x86_64. * sysdeps/unix/sysv/linux/bits/in.h (IPV6_MULTICAST_ALL): New macro.
2019-01-01Add PACKET_IGNORE_OUTGOING from Linux 4.20 to netpacket/packet.h.Joseph Myers1-0/+1
This patch adds the PACKET_IGNORE_OUTGOING constant from Linux 4.20 to netpacket/packet.h. Tested for x86_64. * sysdeps/unix/sysv/linux/netpacket/packet.h (PACKET_IGNORE_OUTGOING): New macro.
2019-01-01Add HWCAP_SSBS from Linux 4.20 to AArch64 bits/hwcap.h.Joseph Myers1-0/+1
This patch adds the HWCAP_SSBS constant from Linux 4.20 to the AArch64 bits/hwcap.h. Tested with build-many-glibcs.py for aarch64-linux-gnu. * sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h (HWCAP_SSBS): New macro.
2019-01-01Update syscall-names.list for Linux 4.20.Joseph Myers1-2/+3
This patch updates sysdeps/unix/sysv/linux/syscall-names.list for Linux 4.20. Although there are no new syscalls, the riscv_flush_icache syscall has moved to asm/unistd.h (previously in asm/syscalls.h) and so now needs to be added to the list. Tested with build-many-glibcs.py. * sysdeps/unix/sysv/linux/syscall-names.list: Update kernel version to 4.20. (riscv_flush_icache): New syscall.
2019-01-01Update copyright dates not handled by scripts/update-copyrights.Joseph Myers1-1/+1
I've updated copyright dates in glibc for 2019. This is the patch for the changes not generated by scripts/update-copyrights and subsequent build / regeneration of generated files. Please remember to include 2019 in the dates for any new files added in future (which means updating any existing uncommitted patches you have that add new files to use the new copyright dates in them). * NEWS: Update copyright dates. * catgets/gencat.c (print_version): Likewise. * csu/version.c (banner): Likewise. * debug/catchsegv.sh: Likewise. * debug/pcprofiledump.c (print_version): Likewise. * debug/xtrace.sh (do_version): Likewise. * elf/ldconfig.c (print_version): Likewise. * elf/ldd.bash.in: Likewise. * elf/pldd.c (print_version): Likewise. * elf/sotruss.sh: Likewise. * elf/sprof.c (print_version): Likewise. * iconv/iconv_prog.c (print_version): Likewise. * iconv/iconvconfig.c (print_version): Likewise. * locale/programs/locale.c (print_version): Likewise. * locale/programs/localedef.c (print_version): Likewise. * login/programs/pt_chown.c (print_version): Likewise. * malloc/memusage.sh (do_version): Likewise. * malloc/memusagestat.c (print_version): Likewise. * malloc/mtrace.pl: Likewise. * manual/libc.texinfo: Likewise. * nptl/version.c (banner): Likewise. * nscd/nscd.c (print_version): Likewise. * nss/getent.c (print_version): Likewise. * nss/makedb.c (print_version): Likewise. * posix/getconf.c (main): Likewise. * scripts/test-installation.pl: Likewise. * sysdeps/unix/sysv/linux/lddlibc4.c (main): Likewise.
2019-01-01Update copyright dates with scripts/update-copyrights.Joseph Myers5983-5984/+5983
* All files with FSF copyright notices: Update copyright dates using scripts/update-copyrights. * locale/programs/charmap-kw.h: Regenerated. * locale/programs/locfile-kw.h: Likewise.
2018-12-31riscv: Use __has_include__ to include <asm/syscalls.h> [BZ #24022]H.J. Lu1-1/+5
<asm/syscalls.h> has been removed by commit 27f8899d6002e11a6e2d995e29b8deab5aa9cc25 Author: David Abdurachmanov <david.abdurachmanov@gmail.com> Date: Thu Nov 8 20:02:39 2018 +0100 riscv: add asm/unistd.h UAPI header Marcin Juszkiewicz reported issues while generating syscall table for riscv using 4.20-rc1. The patch refactors our unistd.h files to match some other architectures. - Add asm/unistd.h UAPI header, which has __ARCH_WANT_NEW_STAT only for 64-bit - Remove asm/syscalls.h UAPI header and merge to asm/unistd.h - Adjust kernel asm/unistd.h So now asm/unistd.h UAPI header should show all syscalls for riscv. <asm/syscalls.h> may be restored by Subject: [PATCH] riscv: restore asm/syscalls.h UAPI header Date: Tue, 11 Dec 2018 09:09:35 +0100 UAPI header asm/syscalls.h was merged into UAPI asm/unistd.h header, which did resolve issue with missing syscalls macros resulting in glibc (2.28) build failure. It also broke glibc in a different way: asm/syscalls.h is being used by glibc. I noticed this while doing Fedora 30/Rawhide mass rebuild. The patch returns asm/syscalls.h header and incl. it into asm/unistd.h. I plan to send a patch to glibc to use asm/unistd.h instead of asm/syscalls.h In the meantime, we use __has_include__, which was added to GCC 5, to check if <asm/syscalls.h> exists before including it. Tested with build-many-glibcs.py for riscv against kernel 4.19.12 and 4.20-rc7. [BZ #24022] * sysdeps/unix/sysv/linux/riscv/flush-icache.c: Check if <asm/syscalls.h> exists with __has_include__ before including it.
2018-12-28Update Alpha libm-test-ulpsAurelien Jarno1-40/+48
Changelog: * sysdeps/alpha/fpu/libm-test-ulps: Regenerated.
2018-12-26x86-64: Remove s_sincosf-sse2.SH.J. Lu3-568/+2
The current s_sincosf.c is faster than s_sincosf-sse2.S. On Broadwell with FMA disabled, bench-sincosf shows: Before After Improvement max 154.032 114.517 34% min 6.25 5.609 11% mean 14.8728 12.8589 15% * sysdeps/x86_64/fpu/s_sincosf.S: Removed. * sysdeps/x86_64/fpu/multiarch/s_sincosf-sse2.S: Likewise. * sysdeps/x86_64/fpu/multiarch/s_sincosf-sse2.c: New file.
2018-12-26Regenerate sysdeps/x86_64/fpu/libm-test-ulpsH.J. Lu1-0/+6
* sysdeps/x86_64/fpu/libm-test-ulps: Regenerated.
2018-12-26x86-64: Vectorize sincosf_poly and update s_sincosf-fma.cH.J. Lu5-340/+268
Add <sincosf_poly.h> and include it in s_sincosf.h to allow vectorized sincosf_poly. Add x86 sincosf_poly.h to vectorize sincosf_poly. On Broadwell, bench-sincosf shows: Before After Improvement max 160.273 114.198 40% min 6.25 5.625 11% mean 13.0325 10.6462 22% Vectorized sincosf_poly shows Before After Improvement max 138.653 114.198 21% min 5.004 5.625 -11% mean 11.5934 10.6462 9% Tested on x86-64 and i686 as well as with build-many-glibcs.py. * sysdeps/ieee754/flt-32/s_sincosf.h: Include <sincosf_poly.h>. (sincos_t, sincosf_poly, sinf_poly): Moved to ... * sysdeps/ieee754/flt-32/sincosf_poly.h: Here. New file. * sysdeps/x86/fpu/s_sincosf_data.c: New file. * sysdeps/x86/fpu/sincosf_poly.h: Likewise. * sysdeps/x86_64/fpu/multiarch/s_sincosf-fma.c: Just include <sysdeps/ieee754/flt-32/s_sincosf.c>.
2018-12-21Update nios2, sparc32 localplt.data for difftime changes (bug 24023).Joseph Myers2-0/+3
The recent difftime changes introduced localplt test failures on nios2 and sparc32, two configurations where some soft-fp functions are defined in / exported from libc.so, and where the difftime changes affected the particular set of floating-point operations used in libc.so. This patch adds those functions to localplt.data, alongside other such functions already there. (In the sparc32 case, and more generally on any platform where long double is a software floating-point type, it would probably be more efficient to avoid using long double at all in difftime, but that's a pre-existing issue.) Tested with build-many-glibcs.py for its nios2 and sparcv9 configurations. [BZ #24023] * sysdeps/unix/sysv/linux/nios2/localplt.data: Allow __floatundidf PLT reference in libc.so. * sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data: Allow _Q_lltoq and _Q_qtod PLT references in libc.so.
2018-12-21Add C-SKY portMao Han121-0/+12652
This patch add two abi combinations support for C-SKY ABIV2: soft-float little endian, hard float little endian. C-SKY ABI manual and architecture user guide are available from: https://github.com/c-sky/csky-doc * config.h.in (CSKYABI, CSKY_HARD_FLOAT): New Define. * scripts/build-many-glibcs.py: Add C-SKY targets. * sysdeps/csky/Implies: New file. * sysdeps/csky/Makefile: Likewise. * sysdeps/csky/abiv2/__longjmp.S: Likewise. * sysdeps/csky/abiv2/csky-mcount.S: Likewise. * sysdeps/csky/abiv2/dl-trampoline.S: Likewise. * sysdeps/csky/abiv2/memcmp.S: Likewise. * sysdeps/csky/abiv2/memcpy.S: Likewise. * sysdeps/csky/abiv2/memmove.S: Likewise. * sysdeps/csky/abiv2/memset.S: Likewise. * sysdeps/csky/abiv2/setjmp.S: Likewise. * sysdeps/csky/abiv2/start.S: Likewise. * sysdeps/csky/abiv2/strcmp.S: Likewise. * sysdeps/csky/abiv2/strcpy.S: Likewise. * sysdeps/csky/abiv2/strlen.S: Likewise. * sysdeps/csky/abiv2/tls-macros.h: Likewise. * sysdeps/csky/abort-instr.h: Likewise. * sysdeps/csky/atomic-machine.h: Likewise. * sysdeps/csky/bits/endian.h: Likewise. * sysdeps/csky/bits/fenv.h: Likewise. * sysdeps/csky/bits/link.h: Likewise. * sysdeps/csky/bits/setjmp.h: Likewise. * sysdeps/csky/bsd-_setjmp.S: Likewise. * sysdeps/csky/bsd-setjmp.S: Likewise. * sysdeps/csky/configure: Likewise. * sysdeps/csky/configure.ac: Likewise. * sysdeps/csky/dl-machine.h: Likewise. * sysdeps/csky/dl-procinfo.c: Likewise. * sysdeps/csky/dl-procinfo.h: Likewise. * sysdeps/csky/dl-sysdep.h: Likewise. * sysdeps/csky/dl-tls.h: Likewise. * sysdeps/csky/fpu/fclrexcpt.c: Likewise. * sysdeps/csky/fpu/fedisblxcpt.c: Likewise. * sysdeps/csky/fpu/feenablxcpt.c: Likewise. * sysdeps/csky/fpu/fegetenv.c: Likewise. * sysdeps/csky/fpu/fegetexcept.c: Likewise. * sysdeps/csky/fpu/fegetmode.c: Likewise. * sysdeps/csky/fpu/fegetround.c: Likewise. * sysdeps/csky/fpu/feholdexcpt.c: Likewise. * sysdeps/csky/fpu/fenv_libc.h: Likewise. * sysdeps/csky/fpu/fenv_private.h: Likewise. * sysdeps/csky/fpu/fesetenv.c: Likewise. * sysdeps/csky/fpu/fesetexcept.c: Likewise. * sysdeps/csky/fpu/fesetmode.c: Likewise. * sysdeps/csky/fpu/fesetround.c: Likewise. * sysdeps/csky/fpu/feupdateenv.c: Likewise. * sysdeps/csky/fpu/fgetexcptflg.c: Likewise. * sysdeps/csky/fpu/fix-fp-int-convert-overflow.h: Likewise. * sysdeps/csky/fpu/fraiseexcpt.c: Likewise. * sysdeps/csky/fpu/fsetexcptflg.c: Likewise. * sysdeps/csky/fpu/ftestexcept.c: Likewise. * sysdeps/csky/fpu/libm-test-ulps: Likewise. * sysdeps/csky/fpu/libm-test-ulps-name: Likewise. * sysdeps/csky/fpu_control.h: Likewise. * sysdeps/csky/gccframe.h: Likewise. * sysdeps/csky/jmpbuf-unwind.h: Likewise. * sysdeps/csky/ldsodefs.h: Likewise. * sysdeps/csky/libc-tls.c: Likewise. * sysdeps/csky/linkmap.h: Likewise. * sysdeps/csky/machine-gmon.h: Likewise. * sysdeps/csky/memusage.h: Likewise. * sysdeps/csky/nofpu/Implies: Likewise. * sysdeps/csky/nofpu/libm-test-ulps: Likewise. * sysdeps/csky/nofpu/libm-test-ulps-name: Likewise. * sysdeps/csky/nptl/Makefile: Likewise. * sysdeps/csky/nptl/bits/pthreadtypes-arch.h: Likewise. * sysdeps/csky/nptl/bits/semaphore.h: Likewise. * sysdeps/csky/nptl/pthread-offsets.h: Likewise. * sysdeps/csky/nptl/pthreaddef.h: Likewise. * sysdeps/csky/nptl/tcb-offsets.sym: Likewise. * sysdeps/csky/nptl/tls.h: Likewise. * sysdeps/csky/preconfigure: Likewise. * sysdeps/csky/sfp-machine.h: Likewise. * sysdeps/csky/sotruss-lib.c: Likewise. * sysdeps/csky/stackinfo.h: Likewise. * sysdeps/csky/sysdep.h: Likewise. * sysdeps/csky/tininess.h: Likewise. * sysdeps/csky/tst-audit.h: Likewise. * sysdeps/unix/sysv/linux/csky/Implies: Likewise. * sysdeps/unix/sysv/linux/csky/Makefile: Likewise. * sysdeps/unix/sysv/linux/csky/Versions: Likewise. * sysdeps/unix/sysv/linux/csky/abiv2/____longjmp_chk.S: Likewise. * sysdeps/unix/sysv/linux/csky/abiv2/clone.S: Likewise. * sysdeps/unix/sysv/linux/csky/abiv2/getcontext.S: Likewise. * sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S: Likewise. * sysdeps/unix/sysv/linux/csky/abiv2/swapcontext.S: Likewise. * sysdeps/unix/sysv/linux/csky/abiv2/syscall.S: Likewise. * sysdeps/unix/sysv/linux/csky/abiv2/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/csky/abiv2/ucontext_i.sym: Likewise. * sysdeps/unix/sysv/linux/csky/bits/procfs.h: Likewise. * sysdeps/unix/sysv/linux/csky/bits/shmlba.h: Likewise. * sysdeps/unix/sysv/linux/csky/c++-types.data: Likewise. * sysdeps/unix/sysv/linux/csky/configure: Likewise. * sysdeps/unix/sysv/linux/csky/configure.ac: Likewise. * sysdeps/unix/sysv/linux/csky/ipc_priv.h: Likewise. * sysdeps/unix/sysv/linux/csky/jmp_buf-macros.h: Likewise. * sysdeps/unix/sysv/linux/csky/kernel-features.h: Likewise. * sysdeps/unix/sysv/linux/csky/ld.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/ldconfig.h: Likewise. * sysdeps/unix/sysv/linux/csky/libBrokenLocale.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/libanl.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/libcrypt.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/libdl.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/libpthread.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/libresolv.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/librt.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/libthread_db.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/libutil.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/localplt.data: Likewise. * sysdeps/unix/sysv/linux/csky/makecontext.c: Likewise. * sysdeps/unix/sysv/linux/csky/profil-counter.h: Likewise. * sysdeps/unix/sysv/linux/csky/pt-vfork.S: Likewise. * sysdeps/unix/sysv/linux/csky/register-dump.h: Likewise. * sysdeps/unix/sysv/linux/csky/shlib-versions: Likewise. * sysdeps/unix/sysv/linux/csky/sigcontextinfo.h: Likewise. * sysdeps/unix/sysv/linux/csky/sys/cachectl.h: Likewise. * sysdeps/unix/sysv/linux/csky/sys/ucontext.h: Likewise. * sysdeps/unix/sysv/linux/csky/sys/user.h: Likewise. * sysdeps/unix/sysv/linux/csky/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/csky/sysdep.h: Likewise.
2018-12-19Remove x86 mathinline.h.Joseph Myers2-295/+32
After previous cleanups, the only code in the x86 bits/mathinline.h that is relevant with current compilers is the inline of __ieee754_atan2l that is conditional on __LIBC_INTERNAL_MATH_INLINES (i.e. for when libm itself is being built). This inline is something that does belong in glibc not GCC, since __ieee754_atan2l is a purely internal function name. This patch moves that inline to a new sysdeps/x86/fpu/math_private.h, removing the bits/mathinline.h header. Note that previously the inline was only for non-SSE 32-bit x86. That condition does not make sense, however, for a long double function; if it's not inlined, exactly the same x87 instruction will end up getting used by the out-of-line function, for both 32-bit and 64-bit. So that condition is not retained in the new version. Tested for x86_64 and x86. As expected, installed stripped shared libraries are unchanged for 32-bit x86, but installed stripped libm.so is changed for x86_64 because calls to __ieee754_atan2l start being inlined where previously they were out of line calls. (The same change to start inlining the function would presumably also apply for 32-bit built with -mfpmath=sse, but that's not a configuration I've tested.) * sysdeps/x86/fpu/math_private.h: New file. * sysdeps/x86/fpu/bits/mathinline.h: Remove.
2018-12-19Remove x86 mathinline.h sinh, cosh, tanh inlines.Joseph Myers1-16/+0
Continuing the removal of bits/mathinline.h inlines that would better be done by the compiler, this patch removes x86 inlines for sinh, cosh and tanh functions (inlines only previously present for fast-math, non-SSE 32-bit x86). I've filed <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88556> for adding such inlines as an optimization in GCC. I believe the only remaining part of the x86 bits/mathinline.h that does anything useful with current compilers after this patch is the __LIBC_INTERNAL_MATH_INLINES inline of __ieee754_atan2l; I intend to remove the whole header and move that inline to a sysdeps math_private.h header in a subsequent patch. Tested for x86_64 and x86. * sysdeps/x86/fpu/bits/mathinline.h (sinh): Remove inline definition. (cosh): Likewise. (tanh): Likewise.
2018-12-19Print cache size and geometry auxv types on LD_SHOW_AUXV=1Tulio Magno Quites Machado Filho1-2/+53
Add support for AT_L1I_CACHESIZE, AT_L1I_CACHEGEOMETRY, AT_L1D_CACHESIZE, AT_L1D_CACHEGEOMETRY, AT_L2_CACHESIZE, AT_L2_CACHEGEOMETRY, AT_L3_CACHESIZE and AT_L3_CACHEGEOMETRY when LD_SHOW_AUXV=1. AT_L*_CACHESIZE is printed as decimal and represent the number of bytes of the cache. AT_L*_CACHEGEOMETRY is treated in order to specify the cache line size and its associativity. Example output from a POWER8: AT_L1I_CACHESIZE: 32768 AT_L1I_CACHEGEOMETRY: 128B line size, 8-way set associative AT_L1D_CACHESIZE: 65536 AT_L1D_CACHEGEOMETRY: 128B line size, 8-way set associative AT_L2_CACHESIZE: 524288 AT_L2_CACHEGEOMETRY: 128B line size, 8-way set associative AT_L3_CACHESIZE: 8388608 AT_L3_CACHEGEOMETRY: 128B line size, 8-way set associative Some of the new types are longer than the previous ones, requiring to increase the indentation in order to keep the values aligned. * elf/dl-sysdep.c (auxvars): Add AT_L1I_CACHESIZE, AT_L1I_CACHEGEOMETRY, AT_L1D_CACHESIZE, AT_L1D_CACHEGEOMETRY, AT_L2_CACHESIZE, AT_L2_CACHEGEOMETRY, AT_L3_CACHESIZE and AT_L3_CACHEGEOMETRY. Fix indentation when printing the other fields. (_dl_show_auxv): Give a special treatment to AT_L1I_CACHEGEOMETRY, AT_L1D_CACHEGEOMETRY, AT_L2_CACHEGEOMETRY and AT_L3_CACHEGEOMETRY. * sysdeps/powerpc/dl-procinfo.h (cache_geometry): New function. (_dl_procinfo): Fix indentation when printing AT_HWCAP and AT_HWCAP2. Add support for AT_L1I_CACHEGEOMETRY, AT_L1D_CACHEGEOMETRY, AT_L2_CACHEGEOMETRY and AT_L3_CACHEGEOMETRY. Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2018-12-19hurd: Fix 64bit fcntl lock implementationSamuel Thibault1-3/+3
* sysdeps/mach/hurd/fcntl.c (__libc_fcntl): Test against 64bit `cmd' values in the 64bit value cases.
2018-12-18s390: Use generic kernel_sigaction.hAdhemerval Zanella1-26/+3
S390 kernel sigaction is the same as the Linux generic one. Checked with a s390-linux-gnu and s390x-linux-gnu build. * sysdeps/unix/sysv/linux/s390/kernel_sigaction.h: Use Linux generic kernel_sigction definition.
2018-12-18ia64: Remove kernel_sigaction.hAdhemerval Zanella1-7/+0
IA64 kernel_sigaction.h definition is the sama as the Linux generic one. Checked on ia64-linux-gnu. * sysdeps/unix/sysv/linux/ia64/kernel_sigaction.h: Remove file.
2018-12-18hppa: Remove kernel_sigaction.hAdhemerval Zanella1-18/+0
HPPA kernel_sigaction.h definition is the sama as the Linux generic one and old_kernel_sigaction is not used. Checked on hppa-linux-gnu. * sysdeps/unix/sysv/linux/hppa/kernel_sigaction.h: Remove file.
2018-12-18alpha: Use Linux generic sigaction implementationAdhemerval Zanella8-115/+22
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.
2018-12-18m68k: Fix sigaction kernel definition (BZ #23960)Adhemerval Zanella7-34/+23
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.
2018-12-18Remove __ASSUME_ST_INO_64_BIT.Joseph Myers7-43/+0
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.
2018-12-18S390: Cleanup ifunc-resolve.h.Stefan Liebler6-41/+6
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.
2018-12-18S390: Refactor gconv_simple ifunc handling.Stefan Liebler1-11/+12
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.
2018-12-18S390: Refactor wmemcmp ifunc handling.Stefan Liebler7-29/+96
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.
2018-12-18S390: Refactor wmemset ifunc handling.Stefan Liebler7-32/+126
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.
2018-12-18S390: Refactor wmemchr ifunc handling.Stefan Liebler7-32/+126
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.
2018-12-18S390: Refactor wcscspn ifunc handling.Stefan Liebler7-19/+100
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.
2018-12-18S390: Refactor wcspbrk ifunc handling.Stefan Liebler7-24/+114
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.
2018-12-18S390: Refactor wcsspn ifunc handling.Stefan Liebler7-24/+114
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.
2018-12-18S390: Refactor wcsrchr ifunc handling.Stefan Liebler7-19/+101
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.
2018-12-18S390: Refactor wcschrnul ifunc handling.Stefan Liebler7-20/+103
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.
2018-12-18S390: Refactor wcschr ifunc handling.Stefan Liebler7-32/+126
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.
2018-12-18S390: Refactor wcsncmp ifunc handling.Stefan Liebler7-18/+99
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.
2018-12-18S390: Refactor wcscmp ifunc handling.Stefan Liebler7-26/+112
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.
2018-12-18S390: Refactor wcsncat ifunc handling.Stefan Liebler7-19/+101
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.
2018-12-18S390: Refactor wcscat ifunc handling.Stefan Liebler7-20/+103
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.
2018-12-18S390: Refactor wcpncpy ifunc handling.Stefan Liebler7-20/+103
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.
2018-12-18S390: Refactor wcsncpy ifunc handling.Stefan Liebler7-21/+103
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.
2018-12-18S390: Refactor wcpcpy ifunc handling.Stefan Liebler7-20/+103
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.
2018-12-18S390: Refactor wcscpy ifunc handling.Stefan Liebler7-19/+101
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.
2018-12-18S390: Refactor wcsnlen ifunc handling.Stefan Liebler7-20/+103
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.
2018-12-18S390: Refactor wcslen ifunc handling.Stefan Liebler7-19/+105
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.
2018-12-18S390: Refactor memrchr ifunc handling.Stefan Liebler7-21/+102
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.
2018-12-18S390: Refactor memccpy ifunc handling.Stefan Liebler7-19/+105
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.
2018-12-18S390: Refactor rawmemchr ifunc handling.Stefan Liebler7-32/+118
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.
2018-12-18S390: Refactor memchr ifunc handling.Stefan Liebler10-105/+127
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.