Commit Graph

23190 Commits

Author SHA1 Message Date
Istvan Kurucsai c0e82f1173 malloc: Check the alignment of mmapped chunks before unmapping.
* malloc/malloc.c (munmap_chunk): Verify chunk alignment.
2018-12-21 00:15:28 -05:00
Istvan Kurucsai ebe544bf6e malloc: Add more integrity checks to mremap_chunk.
* malloc/malloc.c (mremap_chunk): Additional checks.
2018-12-20 23:31:37 -05:00
Mao Han 5f72b00591 Add C-SKY port
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-21 09:48:04 +08:00
Albert ARIBAUD (3ADEV) ac253355ba Y2038: make __difftime compatible with 64-bit time
Provide a 64-bit-time version of __difftime (but do not assume
__time64_t is a signed int so that Gnulib can reuse the code)
and make the 32-bit version a wrapper of it.

Current difftime expects two time_t arguments and returns a
double. To preserve source-code compatibility, its 64-bit-time
equivalent expects two __time64_t arguments but still returns
a double.

This patch was tested by running 'make check' on branch
master then applying this patch and its two predecessors and
running 'make check' again, and checking that both 'make check'
yield identical results. This was done on x86_64-linux-gnu and
i686-linux-gnu.

This patch was also functionally tested with an ad hoc userland
C program which checks the result of difftime for various pairs
of 32-bit and, for 64-bit builds, of 64-bit time_t values too.
The program was built and run against a glibc with and without
the patch, and the results compared to ensure the patch does
not change the behavior of difftime.

* include/time.h (__difftime64): Add.
* time/difftime.c (subtract): convert to 64-bit time.
* time/difftime.c (__difftime64): Add.
* time/difftime.c (__difftime): Wrap around __difftime64.
2018-12-20 22:16:55 +01:00
H.J. Lu ab4169313c manual/examples: Remove redundant "if not"
Replace "if not, if not," with "if not,".

	* manual/examples/add.c: Remove redundant "if not".
	* manual/examples/argp-ex1.c: Likewise.
	* manual/examples/argp-ex2.c: Likewise.
	* manual/examples/argp-ex3.c: Likewise.
	* manual/examples/argp-ex4.c: Likewise.
	* manual/examples/atexit.c: Likewise.
	* manual/examples/db.c: Likewise.
	* manual/examples/dir.c: Likewise.
	* manual/examples/dir2.c: Likewise.
	* manual/examples/execinfo.c: Likewise.
	* manual/examples/filecli.c: Likewise.
	* manual/examples/filesrv.c: Likewise.
	* manual/examples/fmtmsgexpl.c: Likewise.
	* manual/examples/genpass.c: Likewise.
	* manual/examples/inetcli.c: Likewise.
	* manual/examples/inetsrv.c: Likewise.
	* manual/examples/isockad.c: Likewise.
	* manual/examples/longopt.c: Likewise.
	* manual/examples/memopen.c: Likewise.
	* manual/examples/memstrm.c: Likewise.
	* manual/examples/mkdirent.c: Likewise.
	* manual/examples/mkfsock.c: Likewise.
	* manual/examples/mkisock.c: Likewise.
	* manual/examples/mygetpass.c: Likewise.
	* manual/examples/pipe.c: Likewise.
	* manual/examples/popen.c: Likewise.
	* manual/examples/rprintf.c: Likewise.
	* manual/examples/search.c: Likewise.
	* manual/examples/select.c: Likewise.
	* manual/examples/setjmp.c: Likewise.
	* manual/examples/sigh1.c: Likewise.
	* manual/examples/sigusr.c: Likewise.
	* manual/examples/stpcpy.c: Likewise.
	* manual/examples/strdupa.c: Likewise.
	* manual/examples/strftim.c: Likewise.
	* manual/examples/subopt.c: Likewise.
	* manual/examples/swapcontext.c: Likewise.
	* manual/examples/termios.c: Likewise.
	* manual/examples/testopt.c: Likewise.
	* manual/examples/testpass.c: Likewise.
	* manual/examples/timeval_subtract.c: Likewise.
2018-12-20 07:53:57 -08:00
Joseph Myers da75c1b180 Remove x86 mathinline.h.
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-19 22:55:32 +00:00
Joseph Myers 515f463f52 Remove x86 mathinline.h sinh, cosh, tanh inlines.
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-19 21:48:03 +00:00
Tulio Magno Quites Machado Filho 1616d034b6 Print cache size and geometry auxv types on LD_SHOW_AUXV=1
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-19 19:08:02 -02:00
Andreas Schwab 61595e3d36 nscd: avoid assertion failure during persistent db check
nscd should not abort when it finds inconsistencies in the persistent db.
2018-12-19 11:44:28 +01:00
Samuel Thibault bbb7dc8475 hurd: Fix 64bit fcntl lock implementation
* sysdeps/mach/hurd/fcntl.c (__libc_fcntl): Test against 64bit `cmd'
	values in the 64bit value cases.
2018-12-19 02:17:22 +01:00
Adhemerval Zanella dfa6216f24 Fix BZ number for 43a45c2d82 2018-12-18 20:24:48 -02:00
Albert ARIBAUD (3ADEV) c4c2836ada Y2038: add function __ctime64_r
Tested with 'make check' on x86_64-linux-gnu and i686-linux.gnu.

	* include/time.h
	(__ctime64_r): Add.
	* time/ctime_r.c
	(__ctime64_r): Add.
	[__TIMESIZE != 64] (__ctime_r): Turn into a wrapper.
2018-12-18 23:13:55 +01:00
Albert ARIBAUD (3ADEV) 7755e50411 Y2038: add function __ctime64
Tested with 'make check' on x86_64-linux-gnu and i686-linux.gnu.

	* include/time.h
	(__ctime64): Add.
	* time/gmtime.c
	(__ctime64): Add.
	[__TIMESIZE != 64] (ctime): Turn into a wrapper.
2018-12-18 23:13:24 +01:00
Albert ARIBAUD (3ADEV) a1d346ce0d Y2038: add function __gmtime64_r
Tested with 'make check' on x86_64-linux-gnu and i686-linux.gnu.

	* include/time.h
	(__gmtime64_r): Add.
	* time/gmtime.c
	(__gmtime64_r): Add.
	[__TIMESIZE != 64] (__gmtime): Turn into a wrapper.
2018-12-18 23:12:30 +01:00
Albert ARIBAUD (3ADEV) 131db8b0c8 Y2038: add function __gmtime64
Tested with 'make check' on x86_64-linux-gnu and i686-linux.gnu.

	* include/time.h
	(__gmtime64): Add.
	* time/gmtime.c
	(__gmtime64): Add.
	[__TIMESIZE != 64] (__gmtime): Turn into a wrapper.
2018-12-18 23:11:40 +01:00
Albert ARIBAUD (3ADEV) 64c2277d2e Y2038: add function __localtime64_r
Tested with 'make check' on x86_64-linux-gnu and i686-linux.gnu.

	* include/time.h
	(__localtime64_r): Add.
	* time/localtime.c
	(__localtime64_r): Add.
	[__TIMESIZE != 64] (__localtime_r): Turn into a wrapper.
2018-12-18 23:11:08 +01:00
Adhemerval Zanella 64dd7a1630 s390: Use generic kernel_sigaction.h
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-18 19:52:23 -02:00
Adhemerval Zanella 8b1d5da566 ia64: Remove kernel_sigaction.h
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-18 19:52:23 -02:00
Adhemerval Zanella f9eabb197f hppa: Remove kernel_sigaction.h
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-18 19:52:23 -02:00
Adhemerval Zanella 56b98bf1fb alpha: Use Linux generic sigaction implementation
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-18 19:52:21 -02:00
Adhemerval Zanella 43a45c2d82 m68k: Fix sigaction kernel definition (BZ #23960)
Commit b4a5d26d88 (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-18 16:45:10 -02:00
Joseph Myers 646ce7e0be Remove __ASSUME_ST_INO_64_BIT.
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-18 13:35:39 +00:00
Stefan Liebler 80190d2b0e S390: Cleanup ifunc-resolve.h.
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-18 13:57:25 +01:00
Stefan Liebler 12f0dcb8da S390: Refactor gconv_simple ifunc handling.
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-18 13:57:25 +01:00
Stefan Liebler 25654a8c74 S390: Refactor wmemcmp ifunc handling.
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-18 13:57:25 +01:00
Stefan Liebler d2a7436c1c S390: Refactor wmemset ifunc handling.
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-18 13:57:24 +01:00
Stefan Liebler c62534ae52 S390: Refactor wmemchr ifunc handling.
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-18 13:57:24 +01:00
Stefan Liebler 79b44cf611 S390: Refactor wcscspn ifunc handling.
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-18 13:57:23 +01:00
Stefan Liebler 8e87c1f6d4 S390: Refactor wcspbrk ifunc handling.
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-18 13:57:23 +01:00
Stefan Liebler 8507e83190 S390: Refactor wcsspn ifunc handling.
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-18 13:57:23 +01:00
Stefan Liebler 4753713aae S390: Refactor wcsrchr ifunc handling.
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-18 13:57:22 +01:00
Stefan Liebler c09c1b6f01 S390: Refactor wcschrnul ifunc handling.
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-18 13:57:22 +01:00
Stefan Liebler cf3ccc31a3 S390: Refactor wcschr ifunc handling.
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-18 13:57:22 +01:00
Stefan Liebler e9873e1d47 S390: Refactor wcsncmp ifunc handling.
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-18 13:57:21 +01:00
Stefan Liebler 3459e23dd4 S390: Refactor wcscmp ifunc handling.
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-18 13:57:21 +01:00
Stefan Liebler 814a76e1bc S390: Refactor wcsncat ifunc handling.
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-18 13:57:20 +01:00
Stefan Liebler 3389cae427 S390: Refactor wcscat ifunc handling.
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-18 13:57:20 +01:00
Stefan Liebler c3081bcbd9 S390: Refactor wcpncpy ifunc handling.
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-18 13:57:19 +01:00
Stefan Liebler 0966dd8689 S390: Refactor wcsncpy ifunc handling.
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-18 13:57:19 +01:00
Stefan Liebler 0582e42845 S390: Refactor wcpcpy ifunc handling.
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-18 13:57:19 +01:00
Stefan Liebler 804f2e5c73 S390: Refactor wcscpy ifunc handling.
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-18 13:57:18 +01:00
Stefan Liebler c7e7cd266e S390: Refactor wcsnlen ifunc handling.
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-18 13:57:18 +01:00
Stefan Liebler 2e02d0b7a9 S390: Refactor wcslen ifunc handling.
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-18 13:57:17 +01:00
Stefan Liebler 89bfcbdf9d S390: Refactor memrchr ifunc handling.
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-18 13:57:17 +01:00
Stefan Liebler 196655ba54 S390: Refactor memccpy ifunc handling.
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-18 13:57:16 +01:00
Stefan Liebler 4c7b3cec11 S390: Refactor rawmemchr ifunc handling.
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-18 13:57:16 +01:00
Stefan Liebler 581a051c2e S390: Refactor memchr ifunc handling.
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.
2018-12-18 13:57:16 +01:00
Stefan Liebler 5d2ec20a99 S390: Refactor strcspn ifunc handling.
The ifunc handling for strcspn is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strcspn variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strcspn variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strcspn.
	* sysdeps/s390/multiarch/strcspn-c.c: Move to ...
	* sysdeps/s390/strcspn-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strcspn-vx.S: Move to ...
	* sysdeps/s390/strcspn-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strcspn.c: Move to ...
	* sysdeps/s390/strcspn.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strcspn.h: New file.
2018-12-18 13:57:15 +01:00
Stefan Liebler 572cca93fa S390: Refactor strpbrk ifunc handling.
The ifunc handling for strpbrk is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strpbrk variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strpbrk variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strpbrk.
	* sysdeps/s390/multiarch/strpbrk-c.c: Move to ...
	* sysdeps/s390/strpbrk-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strpbrk-vx.S: Move to ...
	* sysdeps/s390/strpbrk-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strpbrk.c: Move to ...
	* sysdeps/s390/strpbrk.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strpbrk.h: New file.
2018-12-18 13:57:15 +01:00
Stefan Liebler 483fc56978 S390: Refactor strspn ifunc handling.
The ifunc handling for strspn is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strspn variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strspn variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strspn.
	* sysdeps/s390/multiarch/strspn-c.c: Move to ...
	* sysdeps/s390/strspn-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strspn-vx.S: Move to ...
	* sysdeps/s390/strspn-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strspn.c: Move to ...
	* sysdeps/s390/strspn.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strspn.h: New file.
2018-12-18 13:57:15 +01:00
Stefan Liebler 26ea876087 S390: Refactor strrchr ifunc handling.
The ifunc handling for strrchr is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strrchr variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strrchr variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strrchr.
	* sysdeps/s390/multiarch/strrchr-c.c: Move to ...
	* sysdeps/s390/strrchr-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strrchr-vx.S: Move to ...
	* sysdeps/s390/strrchr-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strrchr.c: Move to ...
	* sysdeps/s390/strrchr.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strrchr.h: New file.
2018-12-18 13:57:14 +01:00
Stefan Liebler a1361e6561 S390: Refactor strchrnul ifunc handling.
The ifunc handling for strchrnul is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strchrnul variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strchrnul variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strchrnul.
	* sysdeps/s390/multiarch/strchrnul-c.c: Move to ...
	* sysdeps/s390/strchrnul-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strchrnul-vx.S: Move to ...
	* sysdeps/s390/strchrnul-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strchrnul.c: Move to ...
	* sysdeps/s390/strchrnul.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strchrnul.h: New file.
2018-12-18 13:57:14 +01:00
Stefan Liebler 32f12653d4 S390: Refactor strchr ifunc handling.
The ifunc handling for strchr is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strchr variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strchr variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strchr.
	* sysdeps/s390/multiarch/strchr-c.c: Move to ...
	* sysdeps/s390/strchr-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strchr-vx.S: Move to ...
	* sysdeps/s390/strchr-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strchr.c: Move to ...
	* sysdeps/s390/strchr.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strchr.h: New file.
2018-12-18 13:57:14 +01:00
Stefan Liebler 316b884219 S390: Refactor strncmp ifunc handling.
The ifunc handling for strncmp is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strncmp variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strncmp variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strncmp.
	* sysdeps/s390/multiarch/strncmp-c.c: Move to ...
	* sysdeps/s390/strncmp-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strncmp-vx.S: Move to ...
	* sysdeps/s390/strncmp-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strncmp.c: Move to ...
	* sysdeps/s390/strncmp.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strncmp.h: New file.
2018-12-18 13:57:13 +01:00
Stefan Liebler cdab85fe33 S390: Refactor strcmp ifunc handling.
The ifunc handling for strcmp is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

Note: The fallback s390-32/s390-64 ifunc variants with clst instruction
are now moved to the unified strcmp-z900.S file which can be used for
31/64bit. The s390-32/s390-64 files multiarch/strcmp.c and strcmp.S
are deleted.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strcmp variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strcmp variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strcmp.
	* sysdeps/s390/multiarch/strcmp-vx.S: Move to ...
	* sysdeps/s390/strcmp-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strcmp.c: Move to ...
	* sysdeps/s390/strcmp.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strcmp.h: New file.
	* sysdeps/s390/s390-64/strcmp.S: Move to ...
	* sysdeps/s390/strcmp-z900.S: ... here and adjust to be usable
	for 31/64bit and ifunc handling.
	* sysdeps/s390/s390-32/multiarch/strcmp.c: Delete file.
	* sysdeps/s390/s390-64/multiarch/strcmp.c: Likewise.
	* sysdeps/s390/s390-32/strcmp.S: Likewise.
2018-12-18 13:57:13 +01:00
Stefan Liebler b935335155 S390: Refactor strncat ifunc handling.
The ifunc handling for strncat is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strncat variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strncat variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strncat.
	* sysdeps/s390/multiarch/strncat-c.c: Move to ...
	* sysdeps/s390/strncat-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strncat-vx.S: Move to ...
	* sysdeps/s390/strncat-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strncat.c: Move to ...
	* sysdeps/s390/strncat.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strncat.h: New file.
2018-12-18 13:57:12 +01:00
Stefan Liebler 8e5a0afbbf S390: Refactor strcat ifunc handling.
The ifunc handling for strcat is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strcat variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strcat variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strcat.
	* sysdeps/s390/multiarch/strcat-c.c: Move to ...
	* sysdeps/s390/strcat-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strcat-vx.S: Move to ...
	* sysdeps/s390/strcat-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strcat.c: Move to ...
	* sysdeps/s390/strcat.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strcat.h: New file.
2018-12-18 13:57:12 +01:00
Stefan Liebler 25218822bd S390: Refactor stpncpy ifunc handling.
The ifunc handling for stpncpy is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove stpncpy variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add stpncpy variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for stpncpy.
	* sysdeps/s390/multiarch/stpncpy-c.c: Move to ...
	* sysdeps/s390/stpncpy-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/stpncpy-vx.S: Move to ...
	* sysdeps/s390/stpncpy-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/stpncpy.c: Move to ...
	* sysdeps/s390/stpncpy.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-stpncpy.h: New file.
2018-12-18 13:57:11 +01:00
Stefan Liebler d1bdbf3809 S390: Refactor strncpy ifunc handling.
The ifunc handling for strncpy is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

Note: The fallback s390-32/s390-64 ifunc variants are now moved to
the strncpy-z900.S files. The s390-32/s390-64 files multiarch/strncpy.c
and strncpy.S are deleted.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strncpy variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strncpy variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strncpy.
	* sysdeps/s390/multiarch/strncpy-vx.S: Move to ...
	* sysdeps/s390/strncpy-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strncpy.c: Move to ...
	* sysdeps/s390/strncpy.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strncpy.h: New file.
	* sysdeps/s390/s390-64/strncpy.S: Move to ...
	* sysdeps/s390/s390-64/strncpy-z900.S: ... here
	and adjust ifunc handling.
	* sysdeps/s390/s390-32/strncpy.S: Move to ...
	* sysdeps/s390/s390-32/strncpy-z900.S: ... here
	and adjust ifunc handling.
	* sysdeps/s390/s390-32/multiarch/strncpy.c: Delete file.
	* sysdeps/s390/s390-64/multiarch/strncpy.c: Likewise.
2018-12-18 13:57:11 +01:00
Stefan Liebler 970449311d S390: Refactor stpcpy ifunc handling.
The ifunc handling for stpcpy is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove stpcpy variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add stpcpy variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for stpcpy.
	* sysdeps/s390/multiarch/stpcpy-c.c: Move to ...
	* sysdeps/s390/stpcpy-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/stpcpy-vx.S: Move to ...
	* sysdeps/s390/stpcpy-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/stpcpy.c: Move to ...
	* sysdeps/s390/stpcpy.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-stpcpy.h: New file.
2018-12-18 13:57:11 +01:00
Stefan Liebler 914a4e0557 S390: Refactor strcpy ifunc handling.
The ifunc handling for strcpy is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

Note: The fallback s390-32/s390-64 ifunc variants with mvst instruction
are now moved to the unified strcpy-z900.S file which can be used for
31/64bit. The s390-32/s390-64 files multiarch/strcpy.c and strcpy.S
are deleted.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strcpy variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strcpy variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strcpy.
	* sysdeps/s390/multiarch/strcpy-vx.S: Move to ...
	* sysdeps/s390/strcpy-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strcpy.c: Move to ...
	* sysdeps/s390/strcpy.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strcpy.h: New file.
	* sysdeps/s390/s390-64/strcpy.S: Move to ...
	* sysdeps/s390/strcpy-z900.S: ... here and adjust to be usable
	for 31/64bit and ifunc handling.
	* sysdeps/s390/s390-32/multiarch/strcpy.c: Delete file.
	* sysdeps/s390/s390-64/multiarch/strcpy.c: Likewise.
	* sysdeps/s390/s390-32/strcpy.S: Likewise.
2018-12-18 13:57:10 +01:00
Stefan Liebler de10e44dda S390: Refactor strnlen ifunc handling.
The ifunc handling for strnlen is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strnlen variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strnlen variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strnlen.
	* sysdeps/s390/multiarch/strnlen-c.c: Move to ...
	* sysdeps/s390/strnlen-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strnlen-vx.S: Move to ...
	* sysdeps/s390/strnlen-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strnlen.c: Move to ...
	* sysdeps/s390/strnlen.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strnlen.h: New file.
2018-12-18 13:57:10 +01:00
Stefan Liebler ff3ca3743a S390: Refactor strlen ifunc handling.
The ifunc handling for strlen is adjusted in order to omit ifunc
variants if those will never be used as the minimum architecture level
already supports newer CPUs by default.
Glibc internal calls will then also use the "newer" ifunc variant.

ChangeLog:

	* sysdeps/s390/multiarch/Makefile
	(sysdep_routines): Remove strlen variants.
	* sysdeps/s390/Makefile (sysdep_routines): Add strlen variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Refactor ifunc handling for strlen.
	* sysdeps/s390/multiarch/strlen-c.c: Move to ...
	* sysdeps/s390/strlen-c.c: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strlen-vx.S: Move to ...
	* sysdeps/s390/strlen-vx.S: ... here and adjust ifunc handling.
	* sysdeps/s390/multiarch/strlen.c: Move to ...
	* sysdeps/s390/strlen.c: ... here and adjust ifunc handling.
	* sysdeps/s390/ifunc-strlen.h: New file.
2018-12-18 13:57:10 +01:00
Stefan Liebler d2c4c403fe S390: Add z13 memmem ifunc variant.
The new vector variant of memmem is using the common code
implementation, but instead of calling the default
mem* functions, the vector variants are called.

ChangeLog:

	* sysdeps/s390/Makefile (sysdep_routines): Add memmem variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Add ifunc variants for memmem.
	* sysdeps/s390/ifunc-memmem.h: New file.
	* sysdeps/s390/memmem.c: Likewise.
	* sysdeps/s390/memmem-c.c: Likewise.
	* sysdeps/s390/memmem-vx.c: Likewise.
2018-12-18 13:57:09 +01:00
Stefan Liebler 8c25dddd2e S390: Add z13 strstr ifunc variant.
The new vector variant of strstr is using the common code
implementation, but instead of calling the default
str* / mem* functions, the vector variants are called.

ChangeLog:

	* sysdeps/s390/Makefile (sysdep_routines): Add strstr variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Add ifunc variants for strstr.
	* sysdeps/s390/ifunc-strstr.h: New file.
	* sysdeps/s390/strstr.c: Likewise.
	* sysdeps/s390/strstr-c.c: Likewise.
	* sysdeps/s390/strstr-vx.c: Likewise.
2018-12-18 13:57:09 +01:00
Stefan Liebler cdd927d98c S390: Add z13 memmove ifunc variant.
This patch introduces a z13 specific ifunc variant for memmove.
As the common code implementation, it checks if we can copy from
the beginning to the end - with z196 memcpy implementation - or
if we have to copy from the end to the beginning.
The latter case is done by using vector load/store instructions.

If vector instructions are not available, the common-code is
used as fallback.  Therefore it is implemented in memmove-c with
a different name.
Furthermore the ifunc logic decides if we need the common-code
implementation at all.  If vector instructions are supported
due to the minimum architecture level set we can skip the
common-code ifunc variant.

ChangeLog:

	* sysdeps/s390/Makefile (sysdep_routines): Add memmove-c.
	* sysdeps/s390/ifunc-memcpy.h (HAVE_MEMMOVE_IFUNC,
	HAVE_MEMMOVE_IFUNC_AND_VX_SUPPORT, MEMMOVE_DEFAULT,
	HAVE_MEMMOVE_C, MEMMOVE_C,  HAVE_MEMMOVE_Z13, MEMMOVE_Z13):
	New defines.
	* sysdeps/s390/memcpy-z900.S: Add z13 memmove implementation.
	* sysdeps/s390/memmove-c.c: New file.
	* sysdeps/s390/memmove.c: Likewise.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Add ifunc variants for memmove.
2018-12-18 13:57:08 +01:00
Stefan Liebler 2ee1bc57ab S390: Add configure check to detect z13 as mininum architecture level set.
Add a configure check for z13 in the same way as done for z196.

ChangeLog:

	* config.h.in (HAVE_S390_MIN_Z13_ZARCH_ASM_SUPPORT): New undefine.
	* sysdeps/s390/configure.ac: Add check for z13 support.
	* sysdeps/s390/configure: Regenerated.
2018-12-18 13:57:08 +01:00
Stefan Liebler d097d97626 S390: Use memcpy for forward cases in memmove.
The s390/s390x memcpy implementations are safe to be
used by memmove.  Starting with this commit, memmove is
using memcpy for the forward cases on s390.

ChangeLog:

	* sysdeps/s390/memcopy.h: New file.
2018-12-18 13:57:07 +01:00
Stefan Liebler e099aab060 S390: Remove s390 specific implementation of bcopy.
Nowadays gcc is automatically replacing a call to bcopy
with a call to memmove.  Thus only old binaries will call
the s390 specific bcopy implementation.

The s390 specific implementation is using an own
implementation for memcpy in the forward case and is
relying on memmove in the backward case.

After removing the s390 specific bcopy, the common code
bcopy is used.  It just performs a tail call to memmove.

ChangeLog:
	* sysdeps/s390/s390-32/bcopy.S: Remove.
	* sysdeps/s390/s390-64/bcopy.S: Likewise.
2018-12-18 13:57:07 +01:00
Stefan Liebler 18eb862d45 S390: Refactor memcpy/mempcpy ifunc handling.
This patch moves all ifunc variants for memcpy/mempcpy
to sysdeps/s390/memcpy-z900.S. The configure-check/preprocessor logic
in sysdeps/s390/ifunc-memcpy.h decides if ifunc is needed at all
and which ifunc variants should be available.
E.g. if the compiler/assembler already supports z196 by default,
the older ifunc variants are not included.
If we only need the newest ifunc variant,
then we can skip ifunc at all.

Therefore the ifunc-resolvers and __libc_ifunc_impl_list are adjusted
in order to handle only the available ifunc variants.

ChangeLog:

	* sysdeps/s390/ifunc-memcpy.h: New File.
	* sysdeps/s390/memcpy.S: Move to ...
	* sysdeps/s390/memcpy-z900.S ... here.
	Move implementations from memcpy-s390x.s to here.
	* sysdeps/s390/multiarch/memcpy-s390x.S: Delete File.
	* sysdeps/s390/multiarch/Makefile (sysdep_routines):
	Remove memcpy/mempcpy variants.
	* sysdeps/s390/Makefile (sysdep_routines):
	Add memcpy/mempcpy variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Adjust ifunc variants for
	memcpy and mempcpy.
	* sysdeps/s390/multiarch/memcpy.c: Move ifunc resolver
	to ...
	* sysdeps/s390/memcpy.c: ... here.
	Adjust ifunc variants for memcpy.
	* sysdeps/s390/multiarch/mempcpy.c: Move to ...
	* sysdeps/s390/mempcpy.c: ... here.
	Adjust ifunc variants for mempcpy.
	* sysdeps/s390/mempcpy.S: Delete file.
2018-12-18 13:57:06 +01:00
Stefan Liebler df3eb8de31 S390: Unify 31/64bit memcpy.
The implementation of memcpy/mempcpy for s390-32 (31bit)
and s390-64 (64bit) is nearly the same.
This patch unifies it for maintability reasons.

__mem[p]cpy_z10 and __mem[p]cpy_z196 differs between 31 and 64bit:
-31bit needs .machinemode "zarch_nohighgprs" and llgfr   %r4,%r4
-lr vs lgr; lgr can be also used on 31bit as this ifunc variant
is only called if we are on a zarch machine.

__mem[p]cpy_default differs between 31 and 64bit:
-Some 31bit vs 64bit instructions (e.g. ltr vs ltgr.
Solved with 31/64 specific instruction macros).
-The address of mvc instruction is setup in different ways
(larl vs bras). Solved with #if defined __s390x__.

__memcpy_mvcle differs between 31 and 64bit:
-lr vs lgr; ahi vs aghi;
Solved with 31/64bit specific instruction macros.

Otherwise 31/64bit implementation has the same structure of the code.

ChangeLog:

	* sysdeps/s390/s390-64/memcpy.S: Move to ...
	* sysdeps/s390/memcpy.S: ... here.
	Adjust to be usable for 31/64bit.
	* sysdeps/s390/s390-32/memcpy.S: Delete File.
	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add memcpy.
	* sysdeps/s390/s390-32/multiarch/Makefile: Delete file.
	* sysdeps/s390/s390-64/multiarch/Makefile: Likewise.
	* sysdeps/s390/s390-64/multiarch/memcpy-s390x.S: Move to ...
	* sysdeps/s390/multiarch/memcpy-s390x.S: ... here.
	Adjust to be usable for 31/64bit.
	* sysdeps/s390/s390-32/multiarch/memcpy-s390.S: Delete File.
	* sysdeps/s390/s390-64/multiarch/memcpy.c: Move to ...
	* sysdeps/s390/multiarch/memcpy.c: ... here.
	* sysdeps/s390/s390-32/multiarch/memcpy.c: Delete File.
2018-12-18 13:57:06 +01:00
Stefan Liebler b7e024a838 S390: Refactor memcmp ifunc handling.
This patch moves all ifunc variants for memcmp
to sysdeps/s390/memcmp-z900.S. The configure-check/preprocessor logic
in sysdeps/s390/ifunc-memcmp.h decides if ifunc is needed at all
and which ifunc variants should be available.
E.g. if the compiler/assembler already supports z196 by default,
the older ifunc variants are not included.
If we only need the newest ifunc variant,
then we can skip ifunc at all.

Therefore the ifunc-resolvers and __libc_ifunc_impl_list are adjusted
in order to handle only the available ifunc variants.

ChangeLog:

	* sysdeps/s390/ifunc-memcmp.h: New File.
	* sysdeps/s390/memcmp.S: Move to ...
	* sysdeps/s390/memcmp-z900.S ... here.
	Move implementations from memcmp-s390x.s to here.
	* sysdeps/s390/multiarch/memcmp-s390x.S: Delete File.
	* sysdeps/s390/multiarch/Makefile (sysdep_routines):
	Remove memcmp variants.
	* sysdeps/s390/Makefile (sysdep_routines):
	Add memcmp variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Adjust ifunc variants for
	memcmp.
	* sysdeps/s390/multiarch/memcmp.c: Move ifunc resolver
	to ...
	* sysdeps/s390/memcmp.c: ... here.
	Adjust ifunc variants for memcmp.
2018-12-18 13:57:05 +01:00
Stefan Liebler 6c6b8c7470 S390: Unify 31/64bit memcmp.
The implementation of memcmp for s390-32 (31bit) and
s390-64 (64bit) is nearly the same.
This patch unifies it for maintability reasons.

__memcmp_z10 and __memcmp_z196 differs between 31 and 64bit:
-31bit needs .machinemode "zarch_nohighgprs" and llgfr   %r4,%r4
-lr vs lgr and some other instructions:
But lgr and co can be also used on 31bit as this ifunc variant
is only called if we are on a zarch machine.

__memcmp_default differs between 31 and 64bit:
-Some 31bit vs 64bit instructions (e.g. ltr vs ltgr.
Solved with 31/64 specific instruction macros).
-The address of mvc instruction is setup in different ways
(larl vs bras). Solved with #if defined __s390x__.

Otherwise 31/64bit implementation has the same structure of the code.

ChangeLog:

	* sysdeps/s390/s390-64/memcmp.S: Move to ...
	* sysdeps/s390/memcmp.S: ... here.
	Adjust to be usable for 31/64bit.
	* sysdeps/s390/s390-32/memcmp.S: Delete File.
	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add memcmp.
	* sysdeps/s390/s390-32/multiarch/Makefile (sysdep_routines):
	Remove memcmp.
	* sysdeps/s390/s390-64/multiarch/Makefile: Likewise.
	* sysdeps/s390/s390-64/multiarch/memcmp-s390x.S: Move to ...
	* sysdeps/s390/multiarch/memcmp-s390x.S: ... here.
	Adjust to be usable for 31/64bit.
	* sysdeps/s390/s390-32/multiarch/memcmp-s390.S: Delete File.
	* sysdeps/s390/s390-64/multiarch/memcmp.c: Move to ...
	* sysdeps/s390/multiarch/memcmp.c: ... here.
	* sysdeps/s390/s390-32/multiarch/memcmp.c: Delete File.
2018-12-18 13:57:05 +01:00
Stefan Liebler 07be392807 S390: Implement bzero with memset.
This patch removes the bzero s390 implementation with mvcle and
adds entry points for bzero in memset ifunc variants.
Therefore an ifunc resolver is implemented for bzero, too.

ChangeLog:

	* sysdeps/s390/s390-32/bzero.S: Delete file.
	* sysdeps/s390/s390-64/bzero.S: Likewise.
	* sysdeps/s390/Makefile (sysdep_routines): Add bzero.
	* sysdeps/s390/bzero.c: New file.
	* sysdeps/s390/memset-z900.S: Add bzero entry points.
	* sysdeps/s390/ifunc-memset.h: Add bzero function macros.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Add bzero ifunc variants.
2018-12-18 13:57:05 +01:00
Stefan Liebler 712a254a97 S390: Refactor memset ifunc handling.
This patch moves all ifunc variants for memset
to sysdeps/s390/memset-z900.S. The configure-check/preprocessor logic
in sysdeps/s390/ifunc-memset.h decides if ifunc is needed at all
and which ifunc variants should be available.
E.g. if the compiler/assembler already supports z196 by default,
the older ifunc variants are not included.
If we only need the newest ifunc variant,
then we can skip ifunc at all.

Therefore the ifunc-resolvers and __libc_ifunc_impl_list are adjusted
in order to handle only the available ifunc variants.

ChangeLog:

	* sysdeps/s390/ifunc-memset.h: New File.
	* sysdeps/s390/memset.S: Move to ...
	* sysdeps/s390/memset-z900.S ... here.
	Move implementations from memset-s390x.s to here.
	* sysdeps/s390/multiarch/memset-s390x.S: Delete File.
	* sysdeps/s390/multiarch/Makefile (sysdep_routines):
	Remove memset variants.
	* sysdeps/s390/Makefile (sysdep_routines):
	Add memset variants.
	* sysdeps/s390/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list): Adjust ifunc variants for
	memset.
	* sysdeps/s390/multiarch/memset.c: Move ifunc resolver
	to ...
	* sysdeps/s390/memset.c: ... here.
	Adjust ifunc variants for memset.
2018-12-18 13:57:04 +01:00
Stefan Liebler 5f1743d118 S390: Unify 31/64bit memset.
The implementation of memset for s390-32 (31bit) and
s390-64 (64bit) is nearly the same.
This patch unifies it for maintability reasons.

__memset_z10 and __memset_z196 differs between 31 and 64bit:
-31bit needs .machinemode "zarch_nohighgprs" and llgfr   %r4,%r4
-lr vs lgr and some other instructions:
But lgr and co can be also used on 31bit as this ifunc variant
is only called if we are on a zarch machine.

__memset_default differs between 31 and 64bit:
-Some 31bit vs 64bit instructions (e.g. ltr vs ltgr.
Solved with 31/64 specific instruction macros).
-The address of mvc instruction is setup in different ways
(larl vs bras). Solved with #if defined __s390x__.

Otherwise 31/64bit implementation has the same structure of the code.

ChangeLog:

	* sysdeps/s390/s390-64/memset.S: Move to ...
	* sysdeps/s390/memset.S: ... here.
	Adjust to be usable for 31/64bit.
	* sysdeps/s390/s390-32/memset.S: Delete File.
	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add memset.
	* sysdeps/s390/s390-32/multiarch/Makefile (sysdep_routines):
	Remove memset.
	* sysdeps/s390/s390-64/multiarch/Makefile: Likewise.
	* sysdeps/s390/s390-64/multiarch/memset-s390x.S: Move to ...
	* sysdeps/s390/multiarch/memset-s390x.S: ... here.
	Adjust to be usable for 31/64bit.
	* sysdeps/s390/s390-32/multiarch/memset-s390.S: Delete File.
	* sysdeps/s390/s390-64/multiarch/memset.c: Move to ...
	* sysdeps/s390/multiarch/memset.c: ... here.
	* sysdeps/s390/s390-32/multiarch/memset.c: Delete File.
2018-12-18 13:57:04 +01:00
Stefan Liebler e8023f2685 S390: Use hwcap instead of dl_hwcap in ifunc-resolvers.
The renaming of hwcap arguments in ifunc-resolvers is needed
in order to prepare for further commits which refactors
ifunc handling for memset, memcmp, and memcpy.  Now you are able
to use s390_libc_ifunc_init which stores the stfle bits
within the expression for an ifunc-resolver generated by
s390_libc_ifunc_expr.

ChangeLog:

	* sysdeps/s390/multiarch/ifunc-resolve.h
	(s390_libc_ifunc_init, s390_libc_ifunc,
	s390_vx_libc_ifunc2_redirected): Use hwcap instead of dl_hwcap.
2018-12-18 13:57:03 +01:00
Stefan Liebler b8686c0d70 S390: Add configure check to detect z10 as mininum architecture level set.
Add a configure check for z10 in the same way as done for z196.

ChangeLog:

	* config.h.in (HAVE_S390_MIN_Z10_ZARCH_ASM_SUPPORT): New undefine.
	* sysdeps/s390/configure.ac: Add check for z10 support.
	* sysdeps/s390/configure: Regenerated.
2018-12-18 13:57:03 +01:00
H.J. Lu cd815050e5 x86: Merge i386/x86_64 atomic-machine.h
Merge i386 and x86_64 atomic-machine.h to x86 atomic-machine.h.

Tested on i686 and x86_64 as well as with build-many-glibcs.py.

	* sysdeps/i386/atomic-machine.h: Merged with ...
	* sysdeps/x86_64/atomic-machine.h: To ...
	* sysdeps/x86/atomic-machine.h: This.  New file.
2018-12-18 04:25:26 -08:00
Florian Weimer 053c52b177 locale: Rewrite locale/gen-translit.pl in Python
This commit does not change the generated output file.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2018-12-18 11:36:29 +01:00
Florian Weimer 40e6c1ec1f localedata: Remove executable bit from localedata/locales/bi_VU [BZ #23995] 2018-12-18 10:56:21 +01:00
Albert ARIBAUD (3ADEV) bfb79db4c3 Fix __TIMERSIZE and @theglibcadj typos
Fix following typos in parent commit:
- ChangeLog: __TIMERSIZE should be __TIMESIZE
- manual/maint.texi: @theglibcadj should be @glibcadj
2018-12-18 10:47:26 +01:00
Albert ARIBAUD (3ADEV) 6e15f3e26b Y2038: add function __localtime64
Tested with 'make check' on x86_64-linux-gnu and i686-linux.gnu.

	* include/time.h
	(__localtime64): Add.
	* manual/maint.texi: Document Y2038 symbol handling.
	* time/localtime.c
	(__localtime64): Add.
	[__TIMERSIZE != 64] (__localtime): Turn into a wrapper.
2018-12-17 22:56:15 +01:00
Joseph Myers 551e81d9e3 Do not clobber r12 for ia64 syscalls.
GCC mainline now gives errors for an asm that clobbers the stack
pointer.  According to
<https://gcc.gnu.org/ml/gcc-patches/2018-12/msg00932.html> GCC
previously ignored such a clobber; thus, this patch removes it from
the clobbers for ia64 syscalls.

Tested with build-many-glibcs.py for ia64-linux-gnu.

	* sysdeps/unix/sysv/linux/ia64/sysdep.h (ASM_CLOBBERS_6_COMMON):
	Do not clobber r12.
2018-12-17 18:31:50 +00:00
Joseph Myers df648905e7 Add test that MAP_* constants agree with kernel.
Continuing the process of building up and using Python infrastructure
for extracting and using values in headers, this patch adds a test
that MAP_* constants from sys/mman.h agree with those in the Linux
kernel headers.  (Other sys/mman.h constants could be added to the
test separately.)

This set of constants has grown over time, so the generic code is
enhanced to allow saying extra constants are OK on either side of the
comparison (where the caller sets those parameters based on the Linux
kernel headers version, compared with the version the headers were
last updated from).  Although the test is a custom Python file, my
intention is to move in future to a single Python script for such
tests and text files it takes as inputs, once there are enough
examples to provide a guide to the common cases in such tests (I'd
like to end up with most or all such sets of constants copied from
kernel headers having such tests, and likewise for structure layouts
from the kernel).

The Makefile code is essentially the same as for tst-signal-numbers,
but I didn't try to find an object file to depend on to represent the
dependency on the headers used by the test (the conform/ tests don't
try to represent such header dependencies at all, for example).

Tested with build-many-glibcs.py, and also for x86_64 with older
kernel headers.

	* scripts/glibcextract.py (compare_macro_consts): Take parameters
	to allow extra macros from first or second sources.
	* sysdeps/unix/sysv/linux/tst-mman-consts.py: New file.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir) = misc]
	(tests-special): Add $(objpfx)tst-mman-consts.out.
	($(objpfx)tst-mman-consts.out): New makefile target.
2018-12-17 18:29:36 +00:00
Mao Han 6bbfc5c09f Add statx conditionals for wordsize-32 *xstat.c
Linux kernel have remove stat64 family from default syscall set, new
implementations with statx is needed when __ARCH_WANT_STAT64 is not
define. This patch add conditionals for relevant functions, using statx
system call to get information and then copy to the return buf, ref to
include/linux/fs.h from linux kernel.

	* sysdeps/unix/sysv/linux/Makefile: Add statx_cp.c.
	* sysdeps/unix/sysv/linux/fxstat64.c: Add conditionals for kernel
	without stat64 system call support.
	* sysdeps/unix/sysv/linux/fxstatat64.c: Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c: Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c: Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c: Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c: Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c: Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/statx_cp.c: New file.
	* sysdeps/unix/sysv/linux/statx_cp.c: Likewise.
	* sysdeps/unix/sysv/linux/statx_cp.h: Likewise.
	* sysdeps/unix/sysv/linux/wordsize-64/statx_cp.c: Likewise.
2018-12-17 09:20:02 +08:00
Paul Eggert ef202e530c regex: fix storage-exhaustion error
[BZ #18040]
* posix/regexec.c (get_subexp):
Do not continue if storage is exhausted.
2018-12-16 07:08:29 -08:00
Assaf Gordon 077caf61d8 regex: fix heap-use-after-free error
[BZ #18040]
Problem reported by Saito Takaaki <tails.saito@gmail.com> in
https://debbugs.gnu.org/32592
Call stack get_subexp->get_subexp_sub->clean_state_log_if_needed may
call extend_buffers which reallocates the re_string_t internal buffer.
Local variable 'buf' was not updated in such case, resulting in
use-after-free.
* posix/regexec.c (get_subexp): Update 'buf' after call to
get_subexp_sub.
2018-12-16 07:08:29 -08:00
Florian Weimer 0c1719e65b support: Do not require overflow builtin in support/blob_repeat.c
It is only available in GCC 5 and later.

Tested-by: Romain Naour <romain.naour@gmail.com>
2018-12-15 18:58:56 +01:00
Joseph Myers 033a2c0a20 Remove x86 mathinline.h asinh, acosh, atanh inlines.
Continuing the removal of bits/mathinline.h inlines that would better
be done by the compiler, this patch removes x86 inlines for asinh,
acosh and atanh functions (only for fast-math, non-SSE 32-bit x86).
I've filed <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88502> for
adding such inlines as an optimization in GCC.

Tested for x86_64 and x86.

	* sysdeps/x86/fpu/bits/mathinline.h (asinh): Remove inline
	definition.
	(acosh): Likewise.
	(atanh): Likewise.
2018-12-14 22:35:57 +00:00
Florian Weimer e361dc043d manual: Document thread/task IDs for Linux
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2018-12-14 21:11:09 +01:00
Gabriel F. T. Gomes bd51ff5ed0 Add tests for the long double version of ecvt and fcvt
The test case misc/tst-efgcvt.c only tests the double variants of the
Old-fashioned System V number-to-string functions: ecvt, fcvt, and their
re-entrant counterparts.  With a few macros, the code can be reused for
the long double versions of these functions.  A future patch will reuse
it again for IEEE long double on powerpc64le.

Tested for powerpc and powerpc64le.
2018-12-14 11:38:07 -02:00
Stefan Liebler 268bb71e47 Add missing libnss_testX.so requirement for tst-nss-test3.
Sometimes tst-nss-test3 fails with:
error: test-container.c:386: unable to open .../nss/libnss_test1.so for reading

The test tst-nss-test3 which runs in a container needs
libnss_test[12].so. (see e.g. tst-nss-test3.script).
Before this test was moved from tests to tests-container variable,
the requirement was met.  Thus this patch adds this requirement
also for tests in tests-container.

ChangeLog:

	* nss/Makefile (tst-nss-test3.out): New rule.
2018-12-14 09:50:53 +01:00
Joseph Myers db6df070cf Do not clobber sp in _hurd_stack_setup.
GCC mainline now gives errors for an asm that clobbers the stack
pointer.  According to
<https://gcc.gnu.org/ml/gcc-patches/2018-12/msg00932.html> GCC
previously ignored such a clobber; thus, this patch removes it from
_hurd_stack_setup.

Tested with build-many-glibcs.py for i686-gnu.

	* sysdeps/mach/hurd/i386/init-first.c (_hurd_stack_setup): Do not
	clobber sp.
2018-12-13 22:36:33 +00:00
Carlos O'Donell ade8b817fe x86: Add Hygon Dhyana support.
This patch fix Hygon Dhyana processor CPU Vendor ID detection
problem in glibc sysdep module, current glibc codes doesn't
recognize Dhyana CPU Vendor ID("HygonGenuine") and set kind to
arch_kind_other, which result to incorrect zero value for
__cache_sysconf() syscall. As Hygon Dhyana share most
architecture feature as AMD Family 17h, this patch add Hygon CPU
Vendor ID check and setup kind to arch_kind_amd and reuse AMD
code path, which lead to correct return value in
__cache_sysconf() syscall. we run the glibc test suite for both
Hygon Dhyana and AMD EPYC and found no failure case.

Background:
Chengdu Haiguang IC Design Co., Ltd (Hygon) is a Joint Venture
between AMD and Haiguang Information Technology Co.,Ltd., aims at
providing high performance x86 processor for China server market.
Its first generation processor codename is Dhyana, which
originates from AMD technology and shares most of the
architecture with AMD's family 17h, but with different CPU Vendor
ID("HygonGenuine")/Family series number(Family 18h).

Related Hygon kernel patch can be found on
http://lkml.kernel.org/r/5ce86123a7b9dad925ac583d88d2f921040e859b.1538583282.git.puwen@hygon.cn

Signed-off-by: fanjinke <fanjinke@hygon.cn>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2018-12-13 09:25:20 -05:00
Andreas Schwab f21e8f8ca4 Fix rwlock stall with PREFER_WRITER_NONRECURSIVE_NP (bug 23861)
In the read lock function (__pthread_rwlock_rdlock_full) there was a
code path which would fail to reload __readers while waiting for
PTHREAD_RWLOCK_RWAITING to change. This failure to reload __readers
into a local value meant that various conditionals used the old value
of __readers and with only two threads left it could result in an
indefinite stall of one of the readers (waiting for PTHREAD_RWLOCK_RWAITING
to go to zero, but it never would).
2018-12-13 12:22:30 +01:00
Andreas Schwab 3d265911c2 Reindent nptl/pthread_rwlock_common.c 2018-12-13 12:21:41 +01:00
Joseph Myers bf8ae8c09a Remove x86 mathinline.h hypot inline.
Continuing the removal of bits/mathinline.h inlines that would better
be done by the compiler, this patch removes an x86 inline for hypot
functions (only for fast-math, only for non-SSE 32-bit x86).  I've
filed <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88474> for adding
such an inline as an optimization in GCC.

Tested for x86_64 and x86.

	* sysdeps/x86/fpu/bits/mathinline.h (hypot): Remove inline
	definition.
2018-12-12 22:33:06 +00:00
Leonardo Sandoval de099757b6 benchtests: send non-consumable data to stderr
Non-consumable data, alias data not related to benchmarks, should be sent to
the standard error, thus pipelines can work as expected.

	* benchtests/scripts/compare_bench.py (do_compare): write to stderr in case
    stat is not present.
	* benchtests/scripts/compare_bench.py (plot_graphs): write to stderr in case
    timings field is not present. Also string showing the output filename goes
    into the stderr.
2018-12-12 11:05:22 -06:00
Leonardo Sandoval 1990185f5f benchtests: include --stats parameter
Allows user to pick a statistic, defaulting to min and mean, from command
line. At the same time, if stat does not exit, catch the run-time exception
and keep comparing the rest of benchmarked functions. Finally, take care of
division-by-zero exceptions and as the latter, keep comparing the rest of the
functions, turning the script a bit more fault tolerant thus useful.

	* benchtests/scripts/compare_bench.py (do_compare): Catch KeyError and
    ZeroDivisorError exceptions.
	* benchtests/scripts/compare_bench.py (compare_runs): Use stats argument to
    loop through user provided statistics.
	* benchtests/scripts/compare_bench.py (main): Include the --stats argument.
2018-12-12 11:05:22 -06:00