Commit Graph

34331 Commits

Author SHA1 Message Date
Wilco Dijkstra
90d3320d7f Refactor string benchtests
Refactor string benchtests by moving duplicated defines into
bench-string.h.

	* benchtests/bench-memchr.c: Cleanup defines.
	* benchtests/bench-memcmp.c: Likewise.
	* benchtests/bench-memset.c: Likewise.
	* benchtests/bench-memset-large.c: Likewise.
	* benchtests/bench-memset-walk.c: Likewise.
	* benchtests/bench-stpcpy.c: Likewise.
	* benchtests/bench-stpncpy.c: Likewise.
	* benchtests/bench-strcat.c: Likewise.
	* benchtests/bench-strchr.c: Likewise.
	* benchtests/bench-strcmp.c: Likewise.
	* benchtests/bench-strcpy.c: Likewise.
	* benchtests/bench-strcspn.c: Likewise.
	* benchtests/bench-string.h: Likewise.
	* benchtests/bench-strlen.c: Likewise.
	* benchtests/bench-strncat.c: Likewise.
	* benchtests/bench-strncmp.c: Likewise.
	* benchtests/bench-strncpy.c: Likewise.
	* benchtests/bench-strnlen.c: Likewise.
	* benchtests/bench-strpbrk.c: Likewise.
	* benchtests/bench-strrchr.c: Likewise.
	* benchtests/bench-strspn.c: Likewise.
2018-12-21 18:52:40 +00:00
Joseph Myers
5d025ea617 Update longlong.h.
This patch updates longlong.h from GCC.  There were no local changes
in glibc (the previous version was identical to the r232143 GCC
version, apart from copyright dates which had been updated in both
places), so this patch makes it identical to the version in GCC again.

Tested for x86_64 and x86.  Also tested with build-many-glibcs.py for
its RISC-V configurations, as the glibc architecture with the most
substantial changes in longlong.h in this patch.

	* stdlib/longlong.h: Update from GCC.
2018-12-21 18:45:03 +00:00
Joseph Myers
192963be49 Require GCC 5 or later to build glibc (bug 23993).
We know that building glibc with GCC 4.9 is broken on various
platforms (bug 23993).  As it's more than a year since we last
increased the minimum GCC version to build glibc, this patch changes
the requirement to be GCC 5 or later (indeed, based on 4.9 having been
required for building 2.26, it would be consistent in terms of timing
to require GCC 6 or later from the 2.30 release onwards).  It
deliberately just updates the configure test and corresponding
documentation, leaving removal of no-longer-needed __GNUC_PREREQ tests
for a separate patch.

In the NEWS entry, the requirement for a newer GCC version for
powerpc64le is reiterated (as in the entry for the 4.9 requirement in
2.26) to avoid suggesting the version requirement there has gone down.
(If that version goes up further as part of support for binary128 long
double, of course the wording would change at that time.)

Tested for x86_64.

	[BZ #23993]
	* configure.ac (libc_cv_compiler_ok): Require GCC 5 or later.
	* configure: Regenerated.
	* manual/install.texi (Tools for Compilation): Update minimum GCC
	version.
	* INSTALL: Regenerated.
2018-12-21 17:53:40 +00:00
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