aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
AgeCommit message (Collapse)Author
2018-03-16Revert m68k __ieee754_sqrt changeWilco Dijkstra
Revert m68k __ieee754_sqrt change as it causes a build failure in one m68k configuration. m68k-linux-gnu now passes again. * sysdeps/m68k/m680x0/fpu/mathimpl.h (__ieee754_sqrt): Revert previous commit.
2018-03-15Remove all target specific __ieee754_sqrt(f/l) inlinesWilco Dijkstra
Remove the now unused target specific__ieee754_sqrt(f/l) inlines. Also remove inlines of sqrt which are for really old GCC versions. Removing these is desirable, under the general principle of leaving such inlining to the compiler rather than trying to do it in installed headers, especially when only very old compilers are affected. Note that removing inlines for __ieee754_sqrt disables inlining in the sqrt wrapper functions. Given the sqrt function will typically only be called for negative arguments, it doesn't matter whether the inlining happens or not. * sysdeps/aarch64/fpu/math_private.h (__ieee754_sqrt): Remove. (__ieee754_sqrtf): Remove. * sysdeps/alpha/fpu/math_private.h (__ieee754_sqrt): Remove. (__ieee754_sqrtf): Remove. * sysdeps/generic/math-type-macros.h (M_SQRT): Use sqrt. * sysdeps/m68k/m680x0/fpu/mathimpl.h (__ieee754_sqrt): Remove. * sysdeps/powerpc/fpu/math_private.h (__ieee754_sqrt): Remove. (__ieee754_sqrtf): Remove. * sysdeps/s390/fpu/bits/mathinline.h: Remove file. * sysdeps/sparc/fpu/bits/mathinline.h (sqrt) Remove. (sqrtf): Remove. (sqrtl): Remove. (__ieee754_sqrt): Remove. (__ieee754_sqrtf): Remove. (__ieee754_sqrtl): Remove. * sysdeps/m68k/m680x0/fpu/mathimpl.h (__ieee754_sqrt): Remove. * sysdeps/x86/fpu/math_private.h (__ieee754_sqrt): Remove. * sysdeps/x86_64/fpu/math_private.h (__ieee754_sqrt): Remove. (__ieee754_sqrtf): Remove. (__ieee754_sqrtl): Remove.
2018-03-15Rename all __ieee754_sqrt(f/l) calls to sqrt(f/l)Wilco Dijkstra
Use sqrt(f/l) to enable inlining by GCC - if inlining doesn't happen, the asm redirect ensures we will still call __ieee754_sqrt(f/l). * sysdeps/ieee754/dbl-64/e_acosh.c (__ieee754_acosh): Use sqrt. * sysdeps/ieee754/dbl-64/e_gamma_r.c (gamma_positive): Likewise. * sysdeps/ieee754/dbl-64/e_hypot.c (__ieee754_hypot): Likewise. * sysdeps/ieee754/dbl-64/e_j0.c (__ieee754_j0): Likewise. * sysdeps/ieee754/dbl-64/e_j1.c (__ieee754_j1): Likewise. * sysdeps/ieee754/dbl-64/e_jn.c (__ieee754_jn): Likewise. * sysdeps/ieee754/dbl-64/s_asinh.c (__asinh): Likewise. * sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c (__ieee754_acosh): Likewise. * sysdeps/ieee754/flt-32/e_acosf.c (__ieee754_acosf): Likewise. * sysdeps/ieee754/flt-32/e_acoshf.c (__ieee754_acoshf): Likewise. * sysdeps/ieee754/flt-32/e_asinf.c (__ieee754_asinf): Likewise. * sysdeps/ieee754/flt-32/e_gammaf_r.c (gammaf_positive): Likewise. * sysdeps/ieee754/flt-32/e_hypotf.c (__ieee754_hypotf): Likewise. * sysdeps/ieee754/flt-32/e_j0f.c (__ieee754_j0f): Likewise. * sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_j1f): Likewise. * sysdeps/ieee754/flt-32/e_powf.c (__ieee754_powf): Likewise. * sysdeps/ieee754/flt-32/s_asinhf.c (__asinhf): Likewise. * sysdeps/ieee754/ldbl-128/e_acoshl.c (__ieee754_acoshl): Use sqrtl. * sysdeps/ieee754/ldbl-128/e_acosl.c (__ieee754_acosl): Likewise. * sysdeps/ieee754/ldbl-128/e_asinl.c (__ieee754_asinl): Likewise. * sysdeps/ieee754/ldbl-128/e_gammal_r.c (gammal_positive): Likewise. * sysdeps/ieee754/ldbl-128/e_hypotl.c (__ieee754_hypotl): Likewise. * sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l): Likewise. * sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_j1l): Likewise. * sysdeps/ieee754/ldbl-128/e_jnl.c (__ieee754_jnl): Likewise. * sysdeps/ieee754/ldbl-128/e_powl.c (__ieee754_powl): Likewise. * sysdeps/ieee754/ldbl-128/s_asinhl.c (__ieee754_asinhl): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_acoshl.c (__ieee754_acoshl): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_acosl.c (__ieee754_acosl): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_asinl.c (__ieee754_asinl): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c (gammal_positive): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_hypotl.c (__ieee754_hypotl): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_j0l.c (__ieee754_j0l): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_j1l.c (__ieee754_j1l): Likewise * sysdeps/ieee754/ldbl-128ibm/e_jnl.c (__ieee754_jnl): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_powl.c (__ieee754_powl): Likewise. * sysdeps/ieee754/ldbl-128ibm/s_asinhl.c (__ieee754_asinhl): Likewise. * sysdeps/ieee754/ldbl-96/e_acoshl.c (__ieee754_acoshl): Use sqrtl. * sysdeps/ieee754/ldbl-96/e_asinl.c (__ieee754_asinl): Likewise. * sysdeps/ieee754/ldbl-96/e_gammal_r.c (gammal_positive): Likewise. * sysdeps/ieee754/ldbl-96/e_hypotl.c (__ieee754_hypotl): Likewise. * sysdeps/ieee754/ldbl-96/e_j0l.c (__ieee754_j0l): Likewise. * sysdeps/ieee754/ldbl-96/e_j1l.c (__ieee754_j1l): Likewise. * sysdeps/ieee754/ldbl-96/e_jnl.c (__ieee754_jnl): Likewise. * sysdeps/ieee754/ldbl-96/s_asinhl.c (__ieee754_asinhl): Likewise. * sysdeps/m68k/m680x0/fpu/e_pow.c (__ieee754_pow): Likewise. * sysdeps/powerpc/fpu/e_hypot.c (__ieee754_hypot): Likewise. * sysdeps/powerpc/fpu/e_hypotf.c (__ieee754_hypotf): Likewise.
2018-03-15Add support for sqrt asm redirectsWilco Dijkstra
This patch series cleans up the many uses of __ieee754_sqrt(f/l) in GLIBC. The goal is to enable GCC to do the inlining, and if this fails call the __ieee754_sqrt function. This is done by internally declaring sqrt with asm redirects. The compat symbols and sqrt wrappers need to disable the redirect. The redirect is also disabled if there are already redirects defined when using -ffinite-math-only. All math functions (but not math tests, non-library code and libnldbl) are built with -fno-math-errno which means GCC will typically inline sqrt as a single instruction. This means targets are no longer forced to add a special inline for sqrt. * include/math.h (sqrt): Declare with asm redirect. (sqrtf): Likewise. (sqrtl): Likewise. (sqrtf128): Likewise. * Makeconfig: Add -fno-math-errno for libc/libm, but build testsuite, nonlib and libnldbl with -fmath-errno. * math/w_sqrt_compat.c: Define NO_MATH_REDIRECT. * math/w_sqrt_template.c: Likewise. * math/w_sqrtf_compat.c: Likewise. * math/w_sqrtl_compat.c: Likewise. * sysdeps/i386/fpu/w_sqrt.c: Likewise. * sysdeps/i386/fpu/w_sqrt_compat.c: Likewise. * sysdeps/generic/math-type-macros-float128.h: Remove math.h and complex.h.
2018-03-15Remove more old-compilers parts of sysdeps/x86/fpu/bits/mathinline.h.Joseph Myers
This patch removes further parts of sysdeps/x86/fpu/bits/mathinline.h that are only of value for optimization with older compiler versions, in accordance with general principles of preferring the let the compiler deal with such inlining through built-in functions. In general, GCC supports inlining all these functions as of version 4.3 or earlier. However, some inlines in GCC may have had excessively restrictive conditions in past GCC versions (e.g. requiring -ffast-math when the inline is valid under broader conditions). (In particular, GCC had, before GCC 7, unnecessarily restrictive conditions on when it could apply floor and ceil inlines corresponding to the ones removed here. The same was true for rint, but bits/mathinline.h *also* was excessively restrictive there.) The removed sincos inlines are for __sincos etc. functions (not a public interface and not currently used in this header either; not in a part of the header ever used for building glibc itself). Likewise, the atan2 inlines included one for __atan2l, also not a public interface and not used for building glibc itself (calls inside glibc generally use __ieee754_atan2l, for which there is a separate __LIBC_INTERNAL_MATH_INLINES case in this header). Tested for x86_64 and x86. * sysdeps/x86/fpu/bits/mathinline.h [__FAST_MATH__] (__sincos_code): Remove define and undefine. [__FAST_MATH__] (__sincos): Remove inline function. [__FAST_MATH__] (__sincosf): Remove inline function. [__FAST_MATH__] (__sincosl): Remove inline function. (__atan2l): Remove inline functions. [!__GNUC_PREREQ (3, 4)] (__atan2_code): Remove macro. [!__GNUC_PREREQ (3, 4) && __FAST_MATH__] (atan2): Remove inline function. (floor): Remove inline function. (ceil): Likewise. [__FAST_MATH__] (__ldexp_code): Remove macro. [__FAST_MATH__] (ldexp): Remove inline function. [__FAST_MATH__ && __USE_ISOC99] (ldexpf): Likewise. [__FAST_MATH__ && __USE_ISOC99] (ldexpl): Likewise. [__FAST_MATH__ && __USE_ISOC99] (rint): Likewise. [__USE_ISOC99] (__lrint_code): Remove macro. [__USE_ISOC99] (__llrint_code): Likewise. [__USE_ISOC99] (lrintf): Remove inline function. [__USE_ISOC99] (lrint): Likewise. [__USE_ISOC99] (lrintl): Likewise. [__USE_ISOC99] (llrint): Likewise. [__USE_ISOC99] (llrintf): Likewise. [__USE_ISOC99] (llrintl): Likewise.
2018-03-15aarch64/strncmp: Use lsr instead of mov+lsrSiddhesh Poyarekar
A lsr can do what the mov and lsr did.
2018-03-14Remove old-GCC parts of x86 bits/mathinline.h.Joseph Myers
In accordance with the general principle of preferring to let the compiler optimize function calls based on their standard semantics rather than putting inline definitions of such functions in installed headers, this patch removes various such inline definitions in the x86 bits/mathinline.h that were already disabled for GCC 3.5 or later and so were only used with very old compilers (for which good optimization is particularly unimportant); along with those inlines, a definition of __M_SQRT2, which was only used in such inline functions, is also removed. This is similar to an early step in removing the string.h inlines; I intend to follow up with further removals of bits/mathinline.h inline definitions in appropriate logical groups (with GCC bugs filed in cases where GCC doesn't already support corresponding optimizations). Tested for x86_64 and x86. * sysdeps/x86/fpu/bits/mathinline.h [!__GNUC_PREREQ (3, 4)] (lrintf): Remove definitions used only with old GCC. [!__GNUC_PREREQ (3, 4)] (lrint): Likewise. [!__GNUC_PREREQ (3, 4)] (llrintf): Likewise. [!__GNUC_PREREQ (3, 4)] (llrint): Likewise. [!__GNUC_PREREQ (3, 4)] (fmaxf): Likewise. [!__GNUC_PREREQ (3, 4)] (fmax): Likewise. [!__GNUC_PREREQ (3, 4)] (fminf): Likewise. [!__GNUC_PREREQ (3, 4)] (fmin): Likewise. [!__GNUC_PREREQ (3, 4)] (rint): Likewise. [!__GNUC_PREREQ (3, 4)] (rintf): Likewise. [!__GNUC_PREREQ (3, 4)] (nearbyint): Likewise. [!__GNUC_PREREQ (3, 4)] (nearbyintf): Likewise. [!__GNUC_PREREQ (3, 4)] (ceil): Likewise. [!__GNUC_PREREQ (3, 4)] (ceilf): Likewise. [!__GNUC_PREREQ (3, 4)] (floor): Likewise. [!__GNUC_PREREQ (3, 4)] (floorf): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 5)] (tan): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 5)] (fmod): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 4)] (sin): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 4)] (cos): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 5)] (log10): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 5)] (asin): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 5)] (acos): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 4)] (atan): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 5)] (log1p): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 5)] (logb): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 5)] (log2): Likewise. [__FAST_MATH__ && !__GNUC_PREREQ (3, 5)] (drem): Likewise. [__FAST_MATH__] (__M_SQRT2): Remove macro.
2018-03-14aarch64/strncmp: Unbreak builds with old binutilsSiddhesh Poyarekar
Binutils 2.26.* and older do not support moves with shifted registers, so use a separate shift instruction instead.
2018-03-13aarch64: Improve strncmp for mutually misaligned inputsSiddhesh Poyarekar
The mutually misaligned inputs on aarch64 are compared with a simple byte copy, which is not very efficient. Enhance the comparison similar to strcmp by loading a double-word at a time. The peak performance improvement (i.e. 4k maxlen comparisons) due to this on the strncmp microbenchmark is as follows: falkor: 3.5x (up to 72% time reduction) cortex-a73: 3.5x (up to 71% time reduction) cortex-a53: 3.5x (up to 71% time reduction) All mutually misaligned inputs from 16 bytes maxlen onwards show upwards of 15% improvement and there is no measurable effect on the performance of aligned/mutually aligned inputs. * sysdeps/aarch64/strncmp.S (count): New macro. (strncmp): Store misaligned length in SRC1 in COUNT. (mutual_align): Adjust. (misaligned8): Load dword at a time when it is safe.
2018-03-12Lookup the startup server through /servers/startupDavid Michael
* sysdeps/mach/hurd/reboot.c: Include <hurd/paths.h> (reboot): Lookup _SERVERS_STARTUP instead of calling proc_getmsgport to get a port to the startup server.
2018-03-11nldbl-compat.c: Include math.h before nldbl-compat.h.Zack Weinberg
Jeff Law noticed that native PowerPC builds were broken by my having made math_ldbl_opt.h not include math.h. nldbl-compat.c formerly got math.h via libioP.h and math_ldbl_opt.h, *without* __NO_LONG_DOUBLE_MATH; after my change it got it via nldbl-compat.h *with* __NO_LONG_DOUBLE_MATH, but __NO_LONG_DOUBLE_MATH mode is forbidden on hosts that define __HAVE_DISTINCT_FLOAT128, so the build breaks. This is the quick fix. * sysdeps/ieee754/ldbl-opt/nldbl-compat.c: Include math.h before nldbl-compat.h.
2018-03-11hurd: add gscope supportSamuel Thibault
* elf/dl-support.c [!THREAD_GSCOPE_IN_TCB] (_dl_thread_gscope_count): Define variable. * sysdeps/generic/ldsodefs.h [!THREAD_GSCOPE_IN_TCB] (struct rtld_global): Add _dl_thread_gscope_count member. * sysdeps/mach/hurd/tls.h: Include <atomic.h>. [!defined __ASSEMBLER__] (THREAD_GSCOPE_GLOBAL, THREAD_GSCOPE_SET_FLAG, THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_WAIT): Define macros. * sysdeps/generic/tls.h: Document THREAD_GSCOPE_IN_TCB. * sysdeps/aarch64/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/alpha/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/arm/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/hppa/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/i386/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/ia64/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/m68k/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/microblaze/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/mips/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/nios2/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/powerpc/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/riscv/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/s390/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/sh/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/sparc/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/tile/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1. * sysdeps/x86_64/nptl/tls.h: Define THREAD_GSCOPE_IN_TCB to 1.
2018-03-10Don't include math.h/math_private.h in math_ldbl_opt.h.Zack Weinberg
The sysdeps/ieee754/ldbl-opt version of math_ldbl_opt.h includes math.h and math_private.h, despite not having any need for those headers itself; the sysdeps/generic version doesn't. About 20 files are relying on math_ldbl_opt.h to include math.h and/or math_private.h for them, even though none of them necessarily used on a platform that needs ldbl-opt support. * sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h: Don't include math.h or math_private.h. * sysdeps/alpha/fpu/s_isnan.c * sysdeps/ieee754/ldbl-128ibm/s_ceill.c * sysdeps/ieee754/ldbl-128ibm/s_floorl.c * sysdeps/ieee754/ldbl-128ibm/s_llrintl.c * sysdeps/ieee754/ldbl-128ibm/s_llroundl.c * sysdeps/ieee754/ldbl-128ibm/s_lrintl.c * sysdeps/ieee754/ldbl-128ibm/s_lroundl.c * sysdeps/ieee754/ldbl-128ibm/s_rintl.c * sysdeps/ieee754/ldbl-128ibm/s_roundl.c * sysdeps/ieee754/ldbl-128ibm/s_truncl.c * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c: * sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c * sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c * sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c: Include math_private.h. * sysdeps/ieee754/ldbl-64-128/s_finitel.c * sysdeps/ieee754/ldbl-64-128/s_fpclassifyl.c * sysdeps/ieee754/ldbl-64-128/s_isinfl.c * sysdeps/ieee754/ldbl-64-128/s_isnanl.c * sysdeps/ieee754/ldbl-64-128/s_signbitl.c * sysdeps/powerpc/power7/fpu/s_logb.c: Include math.h and math_private.h.
2018-03-10alpha/clone.S: Invoke .set noat/.set at around explicit uses of $atZack Weinberg
On Alpha, the register $at is, by default, reserved for use by the assembler, in the expansion of pseudo-instructions. It's also used by the special calling convention for _mcount. We get warnings from Alpha clone.S because the code to call _mcount isn't properly marked up to tell the assembler not to use $at itself. * sysdeps/unix/sysv/linux/alpha/clone.s (__clone): Wrap manual uses of $at in .set noat / .set at.
2018-03-10Remove hidden __libc_longjmpH.J. Lu
Since __libc_longjmp is a private interface for cancellation implementation in libpthread, there is no need to provide hidden __libc_longjmp in libc. Tested with build-many-glibcs.py. * include/setjmp.h (__libc_longjmp): Remove libc_hidden_proto. * setjmp/longjmp.c (__libc_longjmp): Remove libc_hidden_def. * sysdeps/s390/longjmp.c (__libc_longjmp): Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S (__libc_longjmp): Likewise.
2018-03-09sparc32: Add nop before __startcontext to stop unwinding [BZ #22919]Aurelien Jarno
On sparc32 tst-makecontext fails, as backtrace called within a context created by makecontext to yield infinite backtrace. Fix that the same way than nios2 by adding a nop just before __startcontext. This is needed as otherwise FDE lookup just repeatedly finds __setcontext's FDE in an infinite loop, due to the convention of using 'address - 1' for FDE lookup. Changelog: [BZ #22919] * sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S (__startcontext): Add nop before __startcontext, add explaining comments.
2018-03-07powerpc: Fix TLE build for SPE (BZ #22926)Adhemerval Zanella
Some SPE opcodes clashes with some recent PowerISA opcodes and until recently gas did not complain about it. However binutils recently changed it and now VLE configured gas does not support to assembler some instruction that might class with VLE (HTM for instance). It also does not help that glibc build hardware lock elision support as default (regardless of assembler support). Although runtime will not actually enables TLE on SPE hardware (since kernel will not advertise it), I see little advantage on adding HTM support on SPE built glibc. SPE uses an incompatible ABI which does not allow share the same build with default powerpc and HTM code slows down SPE without any benefict. This patch fixes it by only building HTM when SPE configuration is not used. Checked with a powerpc-linux-gnuspe build. I also did some sniff tests on a e500 hardware without any issue. [BZ #22926] * sysdeps/powerpc/powerpc32/sysdep.h (ABORT_TRANSACTION_IMPL): Define empty for __SPE__. * sysdeps/powerpc/sysdep.h (ABORT_TRANSACTION): Likewise. * sysdeps/unix/sysv/linux/powerpc/elision-lock.c (__lll_lock_elision): Do not build hardware transactional code for __SPE__. * sysdeps/unix/sysv/linux/powerpc/elision-trylock.c (__lll_trylock_elision): Likewise. * sysdeps/unix/sysv/linux/powerpc/elision-unlock.c (__lll_unlock_elision): Likewise.
2018-03-07Refactor Linux ARCH_FORK implementationAdhemerval Zanella
This patch refactors the ARCH_FORK macro and the required architecture specific header to simplify the required architecture definitions to provide the fork syscall semantic and proper document current Linux clone ABI variant. Instead of require the reimplementation of arch-fork.h header, this patch changes the ARCH_FORK to an inline function with clone ABI defined by kernel-features.h define. The generic kernel ABI meant for newer ports is used as default and redefine if the architecture requires. Checked on x86_64-linux-gnu and i686-linux-gnu. Also with a build for all the afected ABIs. * sysdeps/nptl/fork.c (ARCH_FORK): Replace by auch_fork. * sysdeps/unix/sysv/linux/alpha/arch-fork.h: Remove file. * sysdeps/unix/sysv/linux/riscv/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/aarch64/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/arm/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/hppa/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/i386/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/ia64/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/m68k/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/microblaze/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/mips/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/nios2/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/s390/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/sh/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/sparc/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/tile/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/arch-fork.h (arch_fork): New function. * sysdeps/unix/sysv/linux/aarch64/kernel-features.h: New file. * sysdeps/unix/sysv/linux/riscv/kernel-features.h: Likewise. * sysdeps/unix/sysv/linux/arm/kernel-features.h (__ASSUME_CLONE_BACKWARDS): Define. * sysdeps/unix/sysv/linux/createthread.c (ARCH_CLONE): Define to __clone2 if __NR_clone2 is defined. * sysdeps/unix/sysv/linux/hppa/kernel-features.h (__ASSUME_CLONE_BACKWARDS): Likewise. * sysdeps/unix/sysv/linux/i386/kernel-features.h (__ASSUME_CLONE_BACKWARDS): Likewise. * sysdeps/unix/sysv/linux/ia64/kernel-features.h (__ASSUME_CLONE2): Likewise. * sysdeps/unix/sysv/linux/microblaze/kernel-features.h (__ASSUME_CLONE_BACKWARDS3): Likewise. * sysdeps/unix/sysv/linux/kernel-features.h: Document possible clone variants and the define architecture can use. (__ASSUME_CLONE_DEFAULT): Define as default. * sysdeps/unix/sysv/linux/mips/kernel-features.h (__ASSUME_CLONE_BACKWARDS): Likewise. * sysdeps/unix/sysv/linux/powerpc/kernel-features.h (__ASSUME_CLONE_BACKWARDS): Likewise. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_CLONE_BACKWARDS2): Likewise.
2018-03-06aarch64: Fix branch target to loop16Siddhesh Poyarekar
I goofed up when changing the loop8 name to loop16 and missed on out the branch instance. Fixed and actually build tested this time. * sysdeps/aarch64/memcmp.S (more16): Fix branch target loop16.
2018-03-06aarch64: Optimized memcmp for medium to large sizesSiddhesh Poyarekar
This improved memcmp provides a fast path for compares up to 16 bytes and then compares 16 bytes at a time, thus optimizing loads from both sources. The glibc memcmp microbenchmark retains performance (with an error of ~1ns) for smaller compare sizes and reduces up to 31% of execution time for compares up to 4K on the APM Mustang. On Qualcomm Falkor this improves to almost 48%, i.e. it is almost 2x improvement for sizes of 2K and above. * sysdeps/aarch64/memcmp.S: Widen comparison to 16 bytes at a time.
2018-03-06Add missing start-of-file descriptive comment.Samuel Thibault
* io/futimens.c: Add missing start-of-file descriptive comment. * io/utime.c: Likewise. * misc/futimesat.c: Likewise. * misc/utimes.c: Likewise. * sysdeps/mach/hurd/futimesat.c: Likewise. * sysdeps/mach/hurd/utimes.c: Likewise. * sysdeps/posix/utime.c: Likewise. * sysdeps/posix/utimes.c: Likewise. * sysdeps/unix/sysv/linux/futimesat.c: Likewise. * sysdeps/unix/sysv/linux/generic/futimesat.c: Likewise. * sysdeps/unix/sysv/linux/generic/utimes.c: Likewise. * sysdeps/unix/sysv/linux/utimes.c: Likewise.
2018-03-06hurd: Add futimesat and utimensat supportSamuel Thibault
* sysdeps/mach/hurd/utime-helper.c (hurd_futimens): Rename function to hurd_futimes. * sysdeps/mach/hurd/utimes.c (__utimes): Update call accordingly. * sysdeps/mach/hurd/lutimes.c (__lutimes): Likewise. * sysdeps/mach/hurd/futimens.c: Include "utime-helper.c". (__futimens): Move implementation to... * sysdeps/mach/hurd/utime-helper.c (utime_ts_from_tspec, utime_tvalue_from_tspec): ... new helper functions. (hurd_futimens): New function. * sysdeps/mach/hurd/futimesat.c: New file. * sysdeps/mach/hurd/utimensat.c: New file.
2018-03-05hurd: Define and pass UTIME_NOW and UTIME_OMIT to new file_utimens RPCFlávio Cruz
* sysdeps/mach/hurd/bits/stat.h [__USE_ATFILE] (UTIME_NOW, UTIME_OMIT): New macros. * sysdeps/mach/hurd/futimens.c (__futimens): Try to use __file_utimens before reverting to converting time spec to time value and calling __file_utimes. * sysdeps/mach/hurd/utime-helper.c: New file. * sysdeps/mach/hurd/futimes.c: Include "utime-helper.c". (__futimes): Try to use utime_ts_from_tval and __file_utimens before reverting to utime_tvalue_from_tval and __file_utimes. * sysdeps/mach/hurd/lutimes.c: Include "utime-helper.c". (__lutimes): Just call hurd_futimens after lookup. * sysdeps/mach/hurd/utimes.c: Likewise.
2018-03-05hurd: Fix includability of <hurd/signal.h> in all standardsSamuel Thibault
* bits/sigaction.h: Add include guard. * sysdeps/unix/sysv/linux/alpha/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/hppa/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/s390/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/tile/bits/sigaction.h: Likewise. * hurd/hurd/signal.h: Include <bits/sigaction.h>.
2018-03-05Fix s390 -Os iconv build.Joseph Myers
Building glibc for s390 with -Os (32-bit only, with GCC 7) fails with: In file included from ../sysdeps/s390/multiarch/8bit-generic.c:370:0, from ebcdic-at-de.c:28: ../iconv/loop.c: In function '__to_generic_vx': ../iconv/loop.c:264:22: error: 'ch' may be used uninitialized in this function [-Werror=maybe-uninitialized] if (((Character) >> 7) == (0xe0000 >> 7)) \ ^~ In file included from ebcdic-at-de.c:28:0: ../sysdeps/s390/multiarch/8bit-generic.c:340:15: note: 'ch' was declared here uint32_t ch; \ ^ ../iconv/loop.c:325:7: note: in expansion of macro 'BODY' BODY ^~~~ It's fairly easy to see, looking at the (long) expansion of the BODY macro, that this is a false positive and the relevant variable 'ch' is always initialized before use, in one of two possible places. As such, disabling the warning for -Os with the DIAG_* macros is the natural approach to fix this build failure. However, because of the location at which the warning is reported, the disabling needs to go in iconv/loop.c, around the definition of UNICODE_TAG_HANDLER (not inside the definition), as that macro definition is where the uninitialized use is reported, whereas the code that needs to be reasoned about to see that the warning is a false positive is in the definition of BODY elsewhere. Thus, the patch adds such disabling in iconv/loop.c, with a comment pointing to the s390-specific code and a comment in the s390-specific code pointing to the generic file to alert people to the possible need to update one place when changing the other. It would be possible if desired to use #ifdef __s390__ around the disabling, though in general we try to avoid that sort of thing in generic files. (Or some extremely specialized macros for "disable -Wmaybe-uninitialized in this particular place" could be specified, defined to 0 in a lot of different files that include iconv/loop.c and to 1 in that particular s390 file.) Tested that this fixed -Os compilation for s390-linux-gnu with build-many-glibcs.py. * iconv/loop.c (UNICODE_TAG_HANDLER): Disable -Wmaybe-uninitialized for -Os. * sysdeps/s390/multiarch/8bit-generic.c (BODY): Add comment about this disabling.
2018-03-05Define _DIRENT_MATCHES_DIRENT64 regardlessAdhemerval Zanella
This patch defines _DIRENT_MATCHES_DIRENT64 to either 0 or 1 and adjust its usage from checking its definition to its value. Checked on a build for major Linux abis. * bits/dirent.h (__INO_T_MATCHES_INO64_T): Define regardless whether __INO_T_MATCHES_INO64_T is defined. * sysdeps/unix/sysv/linux/bits/dirent.h: Likewise. * dirent/alphasort.c: Check _DIRENT_MATCHES_DIRENT64 value instead of definition. * dirent/alphasort64.c: Likewise. * dirent/scandir.c: Likewise. * dirent/scandir64-tail.c: Likewise. * dirent/scandir64.c: Likewise. * dirent/scandirat.c: Likewise. * dirent/scandirat64.c: Likewise. * dirent/versionsort.c: Likewise. * dirent/versionsort64.c: Likewise. * include/dirent.h: Likewise.
2018-03-05nptl: Fix tst-cancel4 sendto testsAdhemerval Zanella
Now that send might be implemented calling sendto syscall on Linux, I am seeing some issue in some kernel configurations where tst-cancel4 sendto do not block as expected. The socket used to force the syscall blocking is used with default system configuration for buffer sending size, which might not be suffice to force blocking. This patch fixes it by explicit setting buffer socket lower than the buffer size used. It also enables sendto cancellation tests to work in both ways (since internally send is implemented routing to sendto on Linux kernel). The patch also removes unrequired make rules on some archictures for send/recv. The generic nptl Makefile already set the compiler flags required on some architectures for correct unwinding and libc object are not strictly required to support unwind (since pthread_cancel requires linking against libpthread). Checked on aarch64-linux-gnu and x86_64-linux-gnu. I also did a sniff test with tst-cancel{4,5} on a simulated mips64-linux-gnu. * nptl/tst-cancel4-common.h (set_socket_buffer): New function. * nptl/tst-cancel4-common.c (do_test): Call set_socket_buffer for socketpair endpoint. * nptl/tst-cancel4.c (tf_send): Call set_socket_buffer and use WRITE_BUFFER_SIZE as buffer size for sending socket. (tf_sendto): Use SOCK_STREAM instead of SOCK_DGRAM and fix an issue on system where send is implemented with sendto syscall. * sysdeps/unix/sysv/linux/mips/mips64/Makefile [$(subdir) = socket] (CFLAGS-recv.c, CFLAGS-send.c): Remove rules. [$(subdir) = nptl] (CFLAGS-recv.c, CFLAGS-send.c): Likewise. * sysdeps/unix/sysv/linux/riscv/rv64/Makefile: Remove file.
2018-03-05i386: Fix i386 sigaction sa_restorer initialization (BZ#21269)Adhemerval Zanella
This patch fixes the i386 sa_restorer field initialization for sigaction syscall for kernel with vDSO. As described in bug report, i386 Linux (and compat on x86_64) interprets SA_RESTORER clear with nonzero sa_restorer as a request for stack switching if the SS segment is 'funny'. This means that anything that tries to mix glibc's signal handling with segmentation (for instance through modify_ldt syscall) is randomly broken depending on what values lands in sa_restorer. The testcase added is based on Linux test tools/testing/selftests/x86/ldt_gdt.c, more specifically in do_multicpu_tests function. The main changes are: - C11 atomics instead of plain access. - Remove x86_64 support which simplifies the syscall handling and fallbacks. - Replicate only the test required to trigger the issue. Checked on i686-linux-gnu. [BZ #21269] * sysdeps/unix/sysv/linux/i386/Makefile (tests): Add tst-bz21269. * sysdeps/unix/sysv/linux/i386/sigaction.c (SET_SA_RESTORER): Clear sa_restorer for vDSO case. * sysdeps/unix/sysv/linux/i386/tst-bz21269.c: New file.
2018-03-04hurd: Add futimens supportSamuel Thibault
* sysdeps/mach/hurd/futimens.c: New file.
2018-03-04Separate out error_t definitionSamuel Thibault
so interfaces needing it can get it. * stdlib/errno.h (error_t): Move definition to... * bits/types/error_t.h: ... new header. * stdlib/Makefile (headers): Add bits/types/error_t.h. * sysdeps/mach/hurd/bits/errno.h (error_t): Move definition to... * sysdeps/mach/hurd/bits/types/error_t.h: ... new header. * sysdeps/mach/hurd/errnos.awk (error_t): Likewise. * hurd/hurd.h: Include <bits/types/error_t.h> * hurd/hurd/fd.h: Include <bits/types/error_t.h> * hurd/hurd/id.h: Include <errno.h> and <bits/types/error_t.h> * hurd/hurd/lookup.h: Include <errno.h> and <bits/types/error_t.h> * hurd/hurd/resource.h: Include <bits/types/error_t.h> * hurd/hurd/signal.h: Include <bits/types/error_t.h> * hurd/hurd/sigpreempt.h: Include <bits/types/error_t.h>
2018-03-04hurd: Add missing includeSamuel Thibault
* sysdeps/mach/hurd/dl-sysdep.c: Include <mach/machine/vm_param.h>.
2018-03-04hurd: Move mach/param.h to bits/mach/param.hSamuel Thibault
* mach/Makefile (headers): Move mach/param.h to bits/mach/param.h. * sysdeps/mach/i386/mach/param.h: Move file to ... * sysdeps/mach/i386/bits/mach/param.h: ... here. Update path in #error. * sysdeps/mach/hurd/bits/param.h: Include <bits/mach/param.h> instead of <mach/param.h>.
2018-03-02Fix powerpc ifunc-sel.h build for -Os.Joseph Myers
Compiling the testsuite for powerpc (multi-arch configurations) with -Os with GCC 7 fails with: In file included from ifuncmod1.c:7:0, from ifuncdep1.c:3: ../sysdeps/powerpc/ifunc-sel.h: In function 'ifunc_sel': ../sysdeps/powerpc/ifunc-sel.h:12:3: error: asm operand 2 probably doesn't match constraints [-Werror] __asm__ ("mflr 12\n\t" ^~~~~~~ ../sysdeps/powerpc/ifunc-sel.h:12:3: error: asm operand 3 probably doesn't match constraints [-Werror] ../sysdeps/powerpc/ifunc-sel.h:12:3: error: asm operand 4 probably doesn't match constraints [-Werror] ../sysdeps/powerpc/ifunc-sel.h:12:3: error: impossible constraint in 'asm' The "i" constraints on function pointers require the function call to be inlined so the compiler can see the constant function pointer arguments passed to the asm. This patch marks the relevant functions as always_inline accordingly. Tested that this fixes the -Os testsuite build for powerpc-linux-gnu-power4, powerpc64-linux-gnu, powerpc64le-linux-gnu with build-many-glibcs.py. * sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Make always_inline. (ifunc_one): Likewise.
2018-03-01nptl: Move pthread_atfork to libc_nonshared.aFlorian Weimer
libpthread_nonshared.a is unused after this, so remove it from the build. There is no ABI impact because pthread_atfork was implemented using __register_atfork in libc even before this change. pthread_atfork has to be a weak alias because pthread_* names are not reserved in libc. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2018-02-28Fix i386 fenv_private.h float128 for 32-bit --with-fpmath=sse (bug 22902).Joseph Myers
As discussed in bug 22902, the i386 fenv_private.h implementation has problems for float128 for the case of 32-bit glibc built with libgcc from GCC configured using --with-fpmath=sse. The optimized floating-point state handling in fenv_private.h needs to know which floating-point state - x87 or SSE - is used for each floating-point type, so that only one state needs updating / testing for libm code using that state internally. On 32-bit x86, the x87 rounding mode is always used for float128, but the x87 exception flags are only used when libgcc is built using x87 floating-point arithmetic; if libgcc is built for SSE arithmetic, the SSE exception flags are used. The choice of arithmetic with which libgcc is built is independent of that with which glibc is built. Thus, since glibc cannot tell the choice used in libgcc, the default implementations of libc_feholdexcept_setroundf128 and libc_feupdateenv_testf128 (which use the <fenv.h> functions, thus using both x87 and SSE state on processors that have both) need to be used; this patch updates the code accordingly. Tested for 32-bit x86; HJ reports testing in the --with-fpmath=sse case. [BZ #22902] * sysdeps/i386/fpu/fenv_private.h [!__x86_64__] (libc_feholdexcept_setroundf128): New macro. [!__x86_64__] (libc_feupdateenv_testf128): Likewise.
2018-02-28Use libc_hidden_* for strtoumax (bug 15105).Joseph Myers
On sparc, localplt test failures appear when building with -Os because of a call to strtoumax from sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c, and strtoumax is not inlined when building with -Os. This patch fixes those failures by using libc_hidden_proto and libc_hidden_def for strtoumax. Tested with build-many-glibcs.py for sparc64-linux-gnu-disable-multi-arch, sparc64-linux-gnu, sparcv9-linux-gnu-disable-multi-arch, sparcv9-linux-gnu that this fixes that test failure with -Os. [BZ #15105] * sysdeps/wordsize-32/strtoumax.c (strtoumax): Use libc_hidden_def. * sysdeps/wordsize-64/strtoumax.c (strtoumax): Likewise. * include/inttypes.h: New file.
2018-02-27hurd: fix timer_routines.c buildSamuel Thibault
* sysdeps/pthread/timer_routines.c: Include <timer_routines.h> instead of <internaltypes.h>.
2018-02-27hurd: fix gai_misc buildSamuel Thibault
* sysdeps/mach/hurd/gai_misc.h: New file.
2018-02-27hurd: fix timer_routines.c buildSamuel Thibault
* sysdeps/pthread/timer_routines.c: [!defined DELAYTIMER_MAX] (DELAYTIMER_MAX): Define to INT_MAX.
2018-02-27Move NPTL-specific code to NPTL-specific headerSamuel Thibault
* sysdeps/pthread/timer_routines.c: Include <timer_routines.h> instead of <nptl/pthreadP.h> (thread_attr_compare): Move function to... * sysdeps/nptl/timer_routines.h: ... new header.
2018-02-26linux/powerpc: sync sys/ptrace.h with Linux 4.15 [BZ #22433, #22807]Dmitry V. Levin
Tested with strace. * sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h (__ptrace_request): Add PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS, PTRACE_SETFPREGS, PTRACE_GETVRREGS, PTRACE_SETVRREGS, PTRACE_GETEVRREGS, PTRACE_SETEVRREGS, PTRACE_GETREGS64, PTRACE_SETREGS64, PTRACE_GET_DEBUGREG, PTRACE_SET_DEBUGREG, PTRACE_GETVSRREGS, PTRACE_SETVSRREGS, and PTRACE_SINGLEBLOCK.
2018-02-26powerpc: Undefine Linux ptrace macros that conflict with __ptrace_requestTulio Magno Quites Machado Filho
Linux ptrace headers define macros whose tokens conflict with the constants of enum __ptrace_request causing build errors when asm/ptrace.h or linux/ptrace.h are included before sys/ptrace.h. * sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h: Undefine Linux macros used in __ptrace_request. Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
2018-02-23Define GEN_AS_CONST_HEADERS when generating header files [BZ #22792]H.J. Lu
Glibc build generates header files to define constants from special .sym files. If a .sym file includes the same header file which it generates, it leads to circular dependency which may lead to build hang on a many-core machine. Define GEN_AS_CONST_HEADERS when generating header files to avoid circular dependency. <tcb-offsets.h> is needed for i686 and it isn't needed for x86-64 at least since glibc 2.23. Tested on i686 and x86-64. [BZ #22792] * Makerules ($(common-objpfx)%.h): Pass -DGEN_AS_CONST_HEADERS to $(CC). * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Include <tcb-offsets.h> only if GEN_AS_CONST_HEADERS isn't defined. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Don't include <tcb-offsets.h>.
2018-02-22Update sparc ulpsAdhemerval Zanella
* sysdeps/sparc/fpu/libm-test-ulps: Update.
2018-02-22Refactor atfork handlersAdhemerval Zanella
Current implementation (sysdeps/nptl/fork.c) replicates the atfork handlers list backward to invoke the child handlers after fork/clone syscall. The internal atfork handlers is implemented as a single-linked list so a lock-free algorithm can be used, trading fork mulithread call performance for some code complexity and dynamic stack allocation (since the backwards list should not fail). This patch refactor it to use a dynarary instead of a linked list. It simplifies the external variables need to be exported and also the internal atfork handler member definition. The downside is a serialization of fork call in multithread, since to operate on the dynarray the internal lock should be used. However as noted by Florian, it already acquires external locks for malloc and libio so it is already hitting some lock contention. Besides, posix_spawn should be faster and more scalable to run external programs in multithread environments. Checked on x86_64-linux-gnu. * nptl/Makefile (routines): Remove unregister-atfork. * nptl/register-atfork.c (fork_handler_pool): Remove variable. (fork_handler_alloc): Remove function. (fork_handlers, fork_handler_init): New variables. (__fork_lock): Rename to atfork_lock. (__register_atfork, __unregister_atfork, libc_freeres_fn): Rewrite to use a dynamic array to add/remove atfork handlers. * sysdeps/nptl/fork.c (__libc_fork): Likewise. * sysdeps/nptl/fork.h (__fork_lock, __fork_handlers, __linkin_atfork): Remove declaration. (fork_handler): Remove next, refcntr, and need_signal member. (__run_fork_handler_type): New enum. (__run_fork_handlers): New prototype. * sysdeps/nptl/libc-lockP.h (__libc_atfork): Remove declaration.
2018-02-22Rename nptl-signals.h to internal-signals.hAdhemerval Zanella
This patch renames the nptl-signals.h header to internal-signals.h. On Linux the definitions and functions are not only NPTL related, but used for other POSIX definitions as well (for instance SIGTIMER for posix times, SIGSETXID for id functions, and signal block/restore helpers) and since generic functions will be places and used in generic implementation it makes more sense to decouple it from NPTL. Checked on x86_64-linux-gnu. * sysdeps/nptl/nptl-signals.h: Move to ... * sysdeps/generic/internal-signals.h: ... here. Adjust internal comments. * sysdeps/unix/sysv/linux/internal-signals.h: Add include guards. (__nptl_is_internal_signal): Rename to __is_internal_signal. (__nptl_clear_internal_signals): Rename to __clear_internal_signals. * sysdeps/unix/sysv/linux/raise.c: Adjust nptl-signal.h to include-signals.h rename. * nptl/pthreadP.h: Likewise. * sysdeps/unix/sysv/linux/spawni.c (__spawni_child): Call __is_internal_signal instead of __nptl_is_internal_signal.
2018-02-22RISC-V: fmax/fmin: Handle signalling NaNs correctly.Andrew Waterman
RISC-V's fmax(sNAN,4) returns 4 but glibc expects it to return qNAN. * sysdeps/riscv/rvd/s_fmax.c (__fmax): Handle sNaNs correctly. * sysdeps/riscv/rvd/s_fmin.c (__fmin): Likewise. * sysdeps/riscv/rvf/s_fmaxf.c (__fmaxf): Likewise. * sysdeps/riscv/rvf/s_fminf.c (__fminf): Likewise.
2018-02-22RISC-V: Do not initialize $gp in TLS macros.DJ Delorie
RISC-V TLS doesn't require GP to be initialized, and doing so breaks TLS in a shared object.
2018-02-22aarch64/strcmp: fix misaligned loop jump targetSiddhesh Poyarekar
I accidentally set the loop jump back label as misaligned8 instead of do_misaligned. The typo is harmless but it's always nice to not have to unnecessarily execute those two instructions. * sysdeps/aarch64/strcmp.S (do_misaligned): Jump back to do_misaligned, not misaligned8.
2018-02-22IFUNC for Cavium ThunderX2Steve Ellcey
* sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add memcpy_thunderx2. * sysdeps/aarch64/multiarch/ifunc-impl-list.c (MAX_IFUNC): Increment to 4. (__libc_ifunc_impl_list): Add __memcpy_thunderx2. * sysdeps/aarch64/multiarch/memcpy.c (libc_ifunc): Add IS_THUNDERX2 and IS_THUNDERX2PA checks. * sysdeps/aarch64/multiarch/memcpy_thunderx.S (USE_THUNDERX2): Use macro to set name appropriately. (memcpy): Use USE_THUNDERX2 macro to modify prefetches. * sysdeps/aarch64/multiarch/memcpy_thunderx2.S: New file. * sysdeps/unix/sysv/linux/aarch64/cpu-features.h (IS_THUNDERX2PA): New macro. (IS_THUNDERX2): New macro.