platform/upstream/glibc.git
9 years agoS390: Optimize strspn and wcsspn.
Stefan Liebler [Wed, 26 Aug 2015 08:26:24 +0000 (10:26 +0200)]
S390: Optimize strspn and wcsspn.

This patch provides optimized versions of strspn and wcsspn with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/strspn-c.c: New File.
* sysdeps/s390/multiarch/strspn-vx.S: Likewise.
* sysdeps/s390/multiarch/strspn.c: Likewise.
* sysdeps/s390/multiarch/wcsspn-c.c: Likewise.
* sysdeps/s390/multiarch/wcsspn-vx.S: Likewise.
* sysdeps/s390/multiarch/wcsspn.c: Likewise.
* wcsmbs/wcsspn.c: Use WCSSPN if defined.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strspn and
wcsspn functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strspn, wcsspn.
* string/test-strspn.c: Add wcsspn support.
* wcsmbs/test-wcsspn.c: New File.
* wcsmbs/Makefile (strop-tests): Add wcsspn.
* benchtests/bench-strspn.c: Add wcsspn support.
* benchtests/bench-wcsspn.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcsspn.

9 years agoS390: Optimize strrchr and wcsrchr.
Stefan Liebler [Wed, 26 Aug 2015 08:26:23 +0000 (10:26 +0200)]
S390: Optimize strrchr and wcsrchr.

This patch provides optimized versions of strrchr and wcsrchr with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/strrchr-c.c: New File.
* sysdeps/s390/multiarch/strrchr-vx.S: Likewise.
* sysdeps/s390/multiarch/strrchr.c: Likewise.
* sysdeps/s390/multiarch/wcsrchr-c.c: Likewise.
* sysdeps/s390/multiarch/wcsrchr-vx.S: Likewise.
* sysdeps/s390/multiarch/wcsrchr.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strrchr and
wcsrchr functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strrchr, wcsrchr.
* benchtests/bench-wcsrchr.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcsrchr.

9 years agoS390: Optimize strchrnul and wcschrnul.
Stefan Liebler [Wed, 26 Aug 2015 08:26:23 +0000 (10:26 +0200)]
S390: Optimize strchrnul and wcschrnul.

This patch provides optimized versions of strchrnul and wcschrnul with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/strchrnul-c.c: New File.
* sysdeps/s390/multiarch/strchrnul-vx.S: Likewise.
* sysdeps/s390/multiarch/strchrnul.c: Likewise.
* sysdeps/s390/multiarch/wcschrnul-c.c: Likewise.
* sysdeps/s390/multiarch/wcschrnul-vx.S: Likewise.
* sysdeps/s390/multiarch/wcschrnul.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strchrnul and
wcschrnul functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strchrnul, wcschrnul.
* wcsmbs/wcschrnul.c: Use WCSCHRNUL if defined.
* string/test-strchr.c: Add wcschrnul support.
* wcsmbs/test-wcschrnul.c: New File.
* wcsmbs/Makefile (strop-tests): Add wcschrnul.
* benchtests/bench-strchr.c: Add wcschrnul support.
* benchtests/bench-wcschrnul.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcschrnul.

9 years agoS390: Optimize strchr and wcschr.
Stefan Liebler [Wed, 26 Aug 2015 08:26:23 +0000 (10:26 +0200)]
S390: Optimize strchr and wcschr.

This patch provides optimized versions of strchr and wcschr with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/strchr-c.c: New File.
* sysdeps/s390/multiarch/strchr-vx.S: Likewise.
* sysdeps/s390/multiarch/strchr.c: Likewise.
* sysdeps/s390/multiarch/wcschr-c.c: Likewise.
* sysdeps/s390/multiarch/wcschr-vx.S: Likewise.
* sysdeps/s390/multiarch/wcschr.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strchr and
wcschr functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strchr, wcschr.
* string/strchr.c (STRCHR): Define and use macro.
* benchtests/bench-wcschr.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcschr.

9 years agoS390: Optimize strncmp and wcsncmp.
Stefan Liebler [Wed, 26 Aug 2015 08:26:22 +0000 (10:26 +0200)]
S390: Optimize strncmp and wcsncmp.

This patch provides optimized versions of strncmp and wcsncmp with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/strncmp-c.c: New File.
* sysdeps/s390/multiarch/strncmp-vx.S: Likewise.
* sysdeps/s390/multiarch/strncmp.c: Likewise.
* sysdeps/s390/multiarch/wcsncmp-c.c: Likewise.
* sysdeps/s390/multiarch/wcsncmp-vx.S: Likewise.
* sysdeps/s390/multiarch/wcsncmp.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strncmp and
wcsncmp functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strncmp, wcsncmp.
* wcsmbs/wcsncmp.c (WCSNCMP): Define and use macro.
* benchtests/bench-strncmp.c: Add wcsncmp support.
* benchtests/bench-wcsncmp.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcsncmp.

9 years agoS390: Optimize strcmp and wcscmp.
Stefan Liebler [Wed, 26 Aug 2015 08:26:22 +0000 (10:26 +0200)]
S390: Optimize strcmp and wcscmp.

This patch provides optimized versions of strcmp and wcscmp with the z13
vector instructions.

The architecture specific string.h had a typo, which leads to ommiting the
inline version in this file if __USE_STRING_INLINES is defined.
Tested this inline version by tweaking test-strcmp.c.

ChangeLog:

* sysdeps/s390/multiarch/strcmp-vx.S: New File.
* sysdeps/s390/multiarch/strcmp.c: Likewise.
* sysdeps/s390/multiarch/wcscmp-c.c: Likewise.
* sysdeps/s390/multiarch/wcscmp-vx.S: Likewise.
* sysdeps/s390/multiarch/wcscmp.c: Likewise.
* sysdeps/s390/s390-32/multiarch/strcmp.c: Likewise.
* sysdeps/s390/s390-64/multiarch/strcmp.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strcmp and
wcscmp functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strcmp, wcscmp.
* string/strcmp.c (STRCMP): Define and use macro.
* benchtests/bench-wcscmp.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcscmp.
* sysdeps/s390/bits/string.h: Fix typo: _HAVE_STRING_ARCH_strcmp
instead of _HAVE_STRING_ARCH_memchr.

9 years agoS390: Optimize strncat wcsncat.
Stefan Liebler [Wed, 26 Aug 2015 08:26:22 +0000 (10:26 +0200)]
S390: Optimize strncat wcsncat.

This patch provides optimized versions of strncat and wcsncat with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/strncat-c.c: New File.
* sysdeps/s390/multiarch/strncat-vx.S: Likewise.
* sysdeps/s390/multiarch/strncat.c: Likewise.
* sysdeps/s390/multiarch/wcsncat-c.c: Likewise.
* sysdeps/s390/multiarch/wcsncat-vx.S: Likewise.
* sysdeps/s390/multiarch/wcsncat.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strncat and
wcsncat functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strncat, wcsncat.
* wcsmbs/wcsncat.c (WCSNCAT): Define and use macro.
* string/test-strncat.c: Add wcsncat support.
* wcsmbs/test-wcsncat.c: New File.
* wcsmbs/Makefile (strop-tests): Add wcsncat.
* benchtests/bench-strncat.c: Add wcsncat support.
* benchtests/bench-wcsncat.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcsncat.

9 years agoS390: Optimize strcat and wcscat.
Stefan Liebler [Wed, 26 Aug 2015 08:26:21 +0000 (10:26 +0200)]
S390: Optimize strcat and wcscat.

This patch provides optimized versions of strcat and wcscat with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/strcat-c.c: New File.
* sysdeps/s390/multiarch/strcat-vx.S: Likewise.
* sysdeps/s390/multiarch/strcat.c: Likewise.
* sysdeps/s390/multiarch/wcscat-c.c: Likewise.
* sysdeps/s390/multiarch/wcscat-vx.S: Likewise.
* sysdeps/s390/multiarch/wcscat.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strcat and
wcscat functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strcat, wcscat.
* string/strcat.c (STRCAT): Define and use macro.
* wcsmbs/wcscat.c: Use WCSCAT if defined.
* string/test-strcat.c: Add wcscat support.
* wcsmbs/test-wcscat.c: New File.
* wcsmbs/Makefile (strop-tests): Add wcscat.
* benchtests/bench-strcat.c: Add wcscat support.
* benchtests/bench-wcscat.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcscat.

9 years agoS390: Optimize stpncpy and wcpncpy.
Stefan Liebler [Wed, 26 Aug 2015 08:26:21 +0000 (10:26 +0200)]
S390: Optimize stpncpy and wcpncpy.

This patch provides optimized versions of stpncpy and wcpncpy with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/stpncpy-c.c: New File.
* sysdeps/s390/multiarch/stpncpy-vx.S: Likewise.
* sysdeps/s390/multiarch/stpncpy.c: Likewise.
* sysdeps/s390/multiarch/wcpncpy-c.c: Likewise.
* sysdeps/s390/multiarch/wcpncpy-vx.S: Likewise.
* sysdeps/s390/multiarch/wcpncpy.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add stpncpy and
wcpncpy functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for stpncpy, wcpncpy.
* wcsmbs/wcpncpy.c: Use WCPNCPY if defined.
* string/test-stpncpy.c: Add wcpncpy support.
* wcsmbs/test-wcpncpy.c: New File.
* wcsmbs/Makefile (strop-tests): Add wcpncpy.
* benchtests/bench-stpncpy.c: Add wcpncpy support.
* benchtests/bench-wcpncpy.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcpncpy.

9 years agoS390: Optimize strncpy and wcsncpy.
Stefan Liebler [Wed, 26 Aug 2015 08:26:21 +0000 (10:26 +0200)]
S390: Optimize strncpy and wcsncpy.

This patch provides optimized versions of strncpy and wcsncpy with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/strncpy-vx.S: New File.
* sysdeps/s390/multiarch/strncpy.c: Likewise.
* sysdeps/s390/multiarch/wcsncpy-c.c: Likewise.
* sysdeps/s390/multiarch/wcsncpy-vx.S: Likewise.
* sysdeps/s390/multiarch/wcsncpy.c: Likewise.
* sysdeps/s390/s390-32/multiarch/strncpy.c: Likewise.
* sysdeps/s390/s390-64/multiarch/strncpy.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strncpy and
wcsncpy functions.
* wcsmbs/wcsncpy.c: Use WCSNCPY if defined.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strncpy, wcsncpy.
* string/test-strncpy.c: Add wcsncpy support.
* wcsmbs/test-wcsncpy.c: New File.
* wcsmbs/Makefile (strop-tests): Add wcsncpy.
* benchtests/bench-strncpy.c: Add wcsncpy support.
* benchtests/bench-wcsncpy.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcsncpy

9 years agoS390: Optimize stpcpy and wcpcpy.
Stefan Liebler [Wed, 26 Aug 2015 08:26:21 +0000 (10:26 +0200)]
S390: Optimize stpcpy and wcpcpy.

This patch provides optimized versions of stpcpy and wcpcpy with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/stpcpy-c.c: New File.
* sysdeps/s390/multiarch/stpcpy-vx.S: Likewise.
* sysdeps/s390/multiarch/stpcpy.c: Likewise.
* sysdeps/s390/multiarch/wcpcpy-c.c: Likewise.
* sysdeps/s390/multiarch/wcpcpy-vx.S: Likewise.
* sysdeps/s390/multiarch/wcpcpy.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add stpcpy and
wcpcpy functions.
* string/stpcpy.c: Use STPCPY if defined.
* wcsmbs/wcpcpy.c: Use WCPCPY if defined.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for stpcpy, wcpcpy.
* string/test-stpcpy.c: Add wcpcpy support.
* wcsmbs/test-wcpcpy.c: New File.
* wcsmbs/Makefile (strop-tests): Add wcpcpy.
* benchtests/bench-stpcpy.c: Add wcpcpy support.
* benchtests/bench-wcpcpy.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcpcpy.

9 years agoS390: Optimize strcpy and wcscpy.
Stefan Liebler [Wed, 26 Aug 2015 08:26:20 +0000 (10:26 +0200)]
S390: Optimize strcpy and wcscpy.

This patch provides optimized versions of strcpy and wcscpy with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/strcpy-vx.S: New File.
* sysdeps/s390/multiarch/strcpy.c: Likewise.
* sysdeps/s390/multiarch/wcscpy-c.c: Likewise.
* sysdeps/s390/multiarch/wcscpy-vx.S: Likewise.
* sysdeps/s390/multiarch/wcscpy.c: Likewise.
* sysdeps/s390/s390-32/multiarch/strcpy.c: Likewise.
* sysdeps/s390/s390-64/multiarch/strcpy.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strcpy and
wcscpy functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strcpy, wcscpy.
* benchtests/bench-wcscpy.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcscpy.

9 years agoS390: Optimize strnlen and wcsnlen.
Stefan Liebler [Wed, 26 Aug 2015 08:26:20 +0000 (10:26 +0200)]
S390: Optimize strnlen and wcsnlen.

This patch provides optimized versions of strnlen and wcsnlen with the z13
vector instructions.

ChangeLog:

* sysdeps/s390/multiarch/strnlen-c.c: New File.
* sysdeps/s390/multiarch/strnlen-vx.S: Likewise.
* sysdeps/s390/multiarch/strnlen.c: Likewise.
* sysdeps/s390/multiarch/wcsnlen-c.c: Likewise.
* sysdeps/s390/multiarch/wcsnlen-vx.S: Likewise.
* sysdeps/s390/multiarch/wcsnlen.c: Likewise.
* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strnlen and
wcsnlen functions.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc test for strnlen, wcsnlen.
* wcsmbs/wcsnlen.c: Use WCSNLEN if defined.
* string/test-strnlen.c: Add wcsnlen support.
* wcsmbs/test-wcsnlen.c: New File.
* wcsmbs/Makefile (strop-tests): Add wcsnlen.
* benchtests/bench-strnlen.c: Add wcsnlen support.
* benchtests/bench-wcsnlen.c: New File.
* benchtests/Makefile (wcsmbs-bench): Add wcsnlen.

9 years agoS390: Optimize strlen and wcslen.
Stefan Liebler [Wed, 26 Aug 2015 08:26:20 +0000 (10:26 +0200)]
S390: Optimize strlen and wcslen.

This patch provides optimized versions of strlen and wcslen with the z13 vector
instructions.
The helper macro IFUNC_VX_IMPL is introduced and is used to register all
__<func>_c() and __<func>_vx() functions within __libc_ifunc_impl_list()
to the ifunc test framework.

ChangeLog:

* sysdeps/s390/multiarch/Makefile: New File.
* sysdeps/s390/multiarch/strlen-c.c: Likewise.
* sysdeps/s390/multiarch/strlen-vx.S: Likewise.
* sysdeps/s390/multiarch/strlen.c: Likewise.
* sysdeps/s390/multiarch/wcslen-c.c: Likewise.
* sysdeps/s390/multiarch/wcslen-vx.S: Likewise.
* sysdeps/s390/multiarch/wcslen.c: Likewise.
* string/strlen.c (STRLEN): Define and use macro.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(IFUNC_VX_IMPL): New macro function.
(__libc_ifunc_impl_list): Add ifunc test for strlen, wcslen.
* benchtests/Makefile (wcsmbs-bench): New variable.
(string-bench-all): Added wcsmbs-bench.
* benchtests/bench-wcslen.c: New File.

9 years agoS390: Ifunc resolver macro for vector instructions.
Stefan Liebler [Wed, 26 Aug 2015 08:26:19 +0000 (10:26 +0200)]
S390: Ifunc resolver macro for vector instructions.

This patch introduces a s390 specific ifunc resolver macro for 32/64bit,
which chooses <func>_vx with vector instructions if HWCAP_S390_VX flag
in hwcaps is set or <func>_c if not.

ChangeLog:

* sysdeps/s390/multiarch/ifunc-resolve.h (s390_vx_libc_ifunc,
s390_vx_libc_ifunc2): New macro function.

9 years agoS390: configure check for vector instruction support in assembler.
Stefan Liebler [Wed, 26 Aug 2015 08:26:19 +0000 (10:26 +0200)]
S390: configure check for vector instruction support in assembler.

The S390 specific test checks if the assembler has support for the new z13
vector instructions by compiling a vector instruction. The .machine and
.machinemode directives are needed to compile the vector instruction without
-march=z13 option on 31/64 bit.
On success the macro HAVE_S390_VX_ASM_SUPPORT is defined. This macro is used
to determine if the optimized functions can be build without compile errors.
If the used assembler lacks vector support, then a warning is dumped while
configuring and only the common code functions are build.

The z13 instruction support was introduced in
"[Committed] S/390: Add support for IBM z13."
(https://sourceware.org/ml/binutils/2015-01/msg00197.html)

ChangeLog:

* config.h.in (HAVE_S390_VX_ASM_SUPPORT): New macro undefine.
* sysdeps/s390/configure.ac: Add test for S390 vector instruction
assembler support.
* sysdeps/s390/configure: Regenerated.

9 years agoS390: Add new s390 platform.
Stefan Liebler [Wed, 26 Aug 2015 08:26:19 +0000 (10:26 +0200)]
S390: Add new s390 platform.

The new IBM z13 is added to platform string array.
The macro _DL_PLATFORMS_COUNT is incremented to 8,
because it was not incremented by commit
"S/390: Sync AUXV capabilities and archs with kernel".

ChangeLog:

* sysdeps/s390/dl-procinfo.c (_dl_s390_cap_flags): Add z13.
* sysdeps/s390/dl-procinfo.h (_DL_PLATFORMS_COUNT): Increased.

9 years agoS390: Add hwcaps value for vector facility.
Stefan Liebler [Wed, 26 Aug 2015 08:26:19 +0000 (10:26 +0200)]
S390: Add hwcaps value for vector facility.

The HWCAP_S390_VX flag in hwcap field of auxiliary vector indicates
if the vector facility is available and the kernel is aware of it.
This can be tested with LD_SHOW_AUXV=1 <prog>.
Currently it does not show te, because it was not incremented
by commit "S/390: Add hwcap value for transactional execution.".
Thus _DL_HWCAP_COUNT is incremented by two.

ChangeLog:

* sysdeps/s390/dl-procinfo.c (_dl_s390_platforms): Add vector flag.
* sysdeps/s390/dl-procinfo.h: Add vector capability.
* sysdeps/unix/sysv/linux/s390/bits/hwcap.h (HWCAP_S390_VX): Define.

9 years agoS390: Refactor ifunc implementations and enable ifunc-test-framework.
Stefan Liebler [Wed, 26 Aug 2015 08:26:18 +0000 (10:26 +0200)]
S390: Refactor ifunc implementations and enable ifunc-test-framework.

On s390 all ifunc resolvers were implemented in multiarch/ifunc-resolve.c.
The resulting single object files has undefined references to all ifunc-functions.
This patch introduces one multiarch/<func>.c file for each of memcpy, memcmp
and memset with the function specific ifunc resolver. The different function
implementations are now implemented in multiarch/<func>-s390x.S
(moved from multiarch/<func>.S).

The new multiarch/ifunc-resolve.h file contains the ifunc-resolver macro
and other helper-macros. They are merged and are now used in common for
32/64bit. Therefore the __<func>_g5/__<func>_z900 functions were renamed to
__<func>_default.

This patch also enables testing the ifunc implementations by implementing
the function __libc_ifunc_impl_list. It uses the helper-macros of ifunc-resolve.h.

ChangeLog:

* sysdeps/s390/s390-32/multiarch/Makefile (sysdep_routines):
Remove ifunc-resolve, add memset-s390, memcpy-s390, memcmp-s390.
* sysdeps/s390/s390-32/multiarch/ifunc-resolve.c: Delete File.
* sysdeps/s390/s390-32/multiarch/memcmp.S: Move to ...
* sysdeps/s390/s390-32/multiarch/memcmp-s390.S: ... here.
(memcmp, bcmp): Use __memcmp_default as alias source.
* sysdeps/s390/s390-32/multiarch/memcmp.c: New File.
* sysdeps/s390/s390-32/memcmp.S (__memcmp_g5):
Rename to __memcmp_default.
* sysdeps/s390/s390-32/multiarch/memcpy.S: Move to ...
* sysdeps/s390/s390-32/multiarch/memcpy-s390.S: ... here.
(memcpy): Use __memcpy_default as alias source.
* sysdeps/s390/s390-32/multiarch/memcpy.c: New File.
* sysdeps/s390/s390-32/memcpy.S (__memcpy_g5):
Rename to __memcpy_default.
* sysdeps/s390/s390-32/multiarch/memset.S: Move to ...
* sysdeps/s390/s390-32/multiarch/memset-s390.S: ... here.
(memset): Use __memset_default as alias source.
* sysdeps/s390/s390-32/multiarch/memset.c: New File.
* sysdeps/s390/s390-32/memset.S (__memset_g5):
Rename to __memset_default.
* sysdeps/s390/s390-64/multiarch/Makefile (sysdep_routines):
Remove ifunc-resolve, add memset-s390x, memcpy-s390x, memcmp-s390x.
* sysdeps/s390/s390-64/multiarch/ifunc-resolve.c: Delete File.
* sysdeps/s390/s390-64/multiarch/memcmp.S: Move to ...
* sysdeps/s390/s390-64/multiarch/memcmp-s390x.S: ... here.
(memcmp, bcmp): Use __memcmp_default as alias source.
* sysdeps/s390/s390-64/multiarch/memcmp.c: New File.
* sysdeps/s390/s390-64/memcmp.S (__memcmp_z900):
Rename to __memcmp_default.
* sysdeps/s390/s390-64/multiarch/memcpy.S: Move to ...
* sysdeps/s390/s390-64/multiarch/memcpy-s390x.S: ... here.
(memcpy): Use __memcpy_default as alias source.
* sysdeps/s390/s390-64/multiarch/memcpy.c: New File.
* sysdeps/s390/s390-64/memcpy.S (__memcpy_z900):
Rename to __memcpy_default.
* sysdeps/s390/s390-64/multiarch/memset.S: Move to ...
* sysdeps/s390/s390-64/multiarch/memset-s390x.S: ... here.
(memset): Use __memset_default as alias source.
* sysdeps/s390/s390-64/multiarch/memset.c: New File.
* sysdeps/s390/s390-64/memset.S (__memset_z900):
Rename to __memset_default.
* sysdeps/s390/multiarch/ifunc-resolve.h: New File.
* sysdeps/s390/multiarch/ifunc-impl-list.c: New File.

9 years agoS390: Fix handling of DXC-byte in FPC-register.
Stefan Liebler [Wed, 26 Aug 2015 08:26:18 +0000 (10:26 +0200)]
S390: Fix handling of DXC-byte in FPC-register.

On s390, the DXC(data-exception-code)-byte in FPC(floating-point-control)-
register contains a code of the last occured exception.
If bits 6 and 7 of DXC-byte are zero, the bits 0-5 correspond to the
ieee-exception flag bits.
The current implementation always uses these bits as ieee-exception flag bits.
fetestexcept() reports any exception after the first usage of a
vector-instruction in a process, because it raises an "vector instruction
exception" with DXC-code 0xFE.
This patch fixes the handling of the DXC-byte. The DXC-Byte is only handled
if bits 6 and 7 are zero.

The #define _FPU_RESERVED is extended by the DXC-Byte.
Otherwise the tests math/test-fpucw-static and math/test-fpucw-ieee-static
fails, because DXC-Byte contains the vector instruction exception when reaching
main(). This exception was triggered by strrchr() call in __init_misc().
__init_misc() is called after __setfpucw () in __libc_init_first().

The field __ieee_instruction_pointer in struct fenv_t is renamed to __unused
because it is a relict from commit "Remove PTRACE_PEEKUSER"
(87b9b50f0d4b92248905e95a06a13c513dc45e59) and isnĀ“t used anymore.

ChangeLog:

[BZ #18610]
* sysdeps/s390/fpu/bits/fenv.h (fenv_t): Rename
__ieee_instruction_pointer to __unused.
* sysdeps/s390/fpu/fesetenv.c (__fesetenv): Remove usage of
__ieee_instruction_pointer.
* sysdeps/s390/fpu/fclrexcpt.c (feclearexcept): Fix dxc-field handling.
* sysdeps/s390/fpu/fgetexcptflg.c (fegetexceptflag): Likewise.
* sysdeps/s390/fpu/fsetexcptflg.c (fesetexceptflag): Likewise.
* sysdeps/s390/fpu/ftestexcept.c (fetestexcept): Likewise.
* sysdeps/s390/fpu/fpu_control.h (_FPU_RESERVED):
Mark dxc-field as reserved.

9 years agoNaCl: Call __nacl_main in preference to main.
Roland McGrath [Tue, 25 Aug 2015 20:37:07 +0000 (13:37 -0700)]
NaCl: Call __nacl_main in preference to main.

9 years agoUse SSE2 optimized strcmp in x86-64 ld.so
H.J. Lu [Tue, 25 Aug 2015 19:37:45 +0000 (12:37 -0700)]
Use SSE2 optimized strcmp in x86-64 ld.so

Since ld.so preserves vector registers now, we can use the same SSE2
optimized strcmp in x86-64 libc and ld.so.

* sysdeps/x86_64/strcmp.S: Remove "#if !IS_IN (libc)".

9 years agoDon't run tst-getpid2 with LD_BIND_NOW=1
H.J. Lu [Tue, 25 Aug 2015 18:37:31 +0000 (11:37 -0700)]
Don't run tst-getpid2 with LD_BIND_NOW=1

Since _dl_x86_64_save_sse and _dl_x86_64_restore_sse are removed now,
we don't need to run tst-getpid2 with LD_BIND_NOW=1.

[BZ #11214]
* sysdeps/unix/sysv/linux/Makefile (tst-getpid2-ENV): Removed.

9 years agoCall direct system calls for socket operations
Rajalakshmi Srinivasaraghavan [Tue, 25 Aug 2015 13:23:47 +0000 (10:23 -0300)]
Call direct system calls for socket operations

Explicit system calls for the socket operations were added in Linux kernel
in commit 86250b9d12ca for powerpc. This patch make use of those instead of
calling socketcall to save number of cycles on networking syscalls.

2015-08-25  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>

* sysdeps/unix/sysv/linux/powerpc/kernel-features.h: Define new macros.
* sysdeps/unix/sysv/linux/accept.c: Call direct system call.
* sysdeps/unix/sysv/linux/bind.c: Call direct system call.
* sysdeps/unix/sysv/linux/connect.c: Call direct system call.
* sysdeps/unix/sysv/linux/getpeername.c: Call direct system call.
* sysdeps/unix/sysv/linux/getsockname.c: Call direct system call.
* sysdeps/unix/sysv/linux/getsockopt.c: Call direct system call.
* sysdeps/unix/sysv/linux/listen.c: Call direct system call.
* sysdeps/unix/sysv/linux/recv.c: Call direct system call.
* sysdeps/unix/sysv/linux/recvfrom.c: Call direct system call.
* sysdeps/unix/sysv/linux/recvmsg.c: Call direct system call.
* sysdeps/unix/sysv/linux/send.c: Call direct system call.
* sysdeps/unix/sysv/linux/sendmsg.c: Call direct system call.
* sysdeps/unix/sysv/linux/sendto.c: Call direct system call.
* sysdeps/unix/sysv/linux/setsockopt.c: Call direct system call.
* sysdeps/unix/sysv/linux/shutdown.c: Call direct system call.
* sysdeps/unix/sysv/linux/socket.c: Call direct system call.
* sysdeps/unix/sysv/linux/socketpair.c: Call direct system call.

9 years agopowerpc: Fix tabort usage in syscalls
Paul E. Murphy [Fri, 21 Aug 2015 19:39:01 +0000 (14:39 -0500)]
powerpc: Fix tabort usage in syscalls

Fix usage of tabort in generated syscalls.  r0 has special meaning
when used with this instruction, thus it will not generate
persistent errors, nor return an error code.  This mitigates poor
CPU usage when performing elided critical sections.

Additionally, transactions should be aborted when entering a user
invoked syscall.  Otherwise the results of the transaction may be
undefined.

2015-08-25  Paul E. Murphy  <murphyp@linux.vnet.ibm.com>

* sysdeps/powerpc/powerpc32/sysdep.h (ABORT_TRANSACTION): Use
register other than r0 for tabort, it has special meaning.
* sysdeps/powerpc/powerpc64/sysdep.h (ABORT_TRANSACTION): Likewise
* sysdeps/unix.sysv/linux/powerpc/syscall.S (syscall): Abort
transaction before starting syscall.

9 years agopowerpc: Handle worstcase behavior in strstr() for POWER7
Rajalakshmi Srinivasaraghavan [Tue, 18 Aug 2015 17:10:56 +0000 (22:40 +0530)]
powerpc: Handle worstcase behavior in strstr() for POWER7

Instead of checking needle length, constant 'n' number of comparisons
is checked to fall back to default implementation.  This patch is tested
on powerpc64 and powerpc64le.

2015-08-25  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>

* sysdeps/powerpc/powerpc64/power7/strstr.S: Handle worst case.

9 years agoReplace %xmm[8-12] with %xmm[0-4]
H.J. Lu [Tue, 25 Aug 2015 15:51:09 +0000 (08:51 -0700)]
Replace %xmm[8-12] with %xmm[0-4]

Since ld.so preserves vector registers now, we can use %xmm[0-4] to
avoid the REX prefix.

* sysdeps/x86_64/strlen.S: Replace %xmm[8-12] with %xmm[0-4].

9 years agoRemove x86-64 rtld-xxx.c and rtld-xxx.S
H.J. Lu [Tue, 25 Aug 2015 15:49:50 +0000 (08:49 -0700)]
Remove x86-64 rtld-xxx.c and rtld-xxx.S

Since ld.so preserves vector registers now, we can use the regular,
non-ifunc string and memory functions in ld.so.

* sysdeps/x86_64/rtld-memcmp.c: Removed.
* sysdeps/x86_64/rtld-memset.S: Likewise.
* sysdeps/x86_64/rtld-strchr.S: Likewise.
* sysdeps/x86_64/rtld-strlen.S: Likewise.
* sysdeps/x86_64/multiarch/rtld-memcmp.c: Likewise.
* sysdeps/x86_64/multiarch/rtld-memset.S: Likewise.

9 years agoReplace %xmm8 with %xmm0
H.J. Lu [Tue, 25 Aug 2015 15:48:21 +0000 (08:48 -0700)]
Replace %xmm8 with %xmm0

Since ld.so preserves vector registers now, we can use %xmm0 to avoid
the REX prefix.

* sysdeps/x86_64/memset.S: Replace %xmm8 with %xmm0.

9 years agoadd bug 18240 to news.
Ondřej BĆ­lka [Tue, 25 Aug 2015 14:05:01 +0000 (16:05 +0200)]
add bug 18240 to news.

9 years agoHandle overflow in __hcreate_r
Ondřej BĆ­lka [Sat, 11 Jul 2015 15:44:10 +0000 (17:44 +0200)]
Handle overflow in __hcreate_r

Hi,

As in bugzilla entry there is overflow in hsearch when looking for prime
number as SIZE_MAX - 1 is divisible by 5. We fix that by rejecting large
inputs before looking for prime.

* misc/hsearch_r.c (__hcreate_r): Handle overflow.

9 years agoFix strcpy_chk and stpcpy_chk performance.
Ondřej BĆ­lka [Tue, 25 Aug 2015 10:23:24 +0000 (12:23 +0200)]
Fix strcpy_chk and stpcpy_chk performance.

Hi, as I wrote in previous patches a performance of checked strcpy and
stpcpy is terrible as these don't use sse2 and are around four times
slower that strcpy and stpcpy now.

As this bug shows that these functions are not performance sensitive I
decided just to improve generic implementation instead for easier
maintainance.

        * debug/strcpy_chk.c: Improve performance.
        * debug/stpcpy_chk.c: Likewise.
        * sysdeps/x86_64/strcpy_chk.S: Remove.
        * sysdeps/x86_64/stpcpy_chk.S: Remove.

9 years agoSave and restore vector registers in x86-64 ld.so
H.J. Lu [Tue, 25 Aug 2015 11:33:54 +0000 (04:33 -0700)]
Save and restore vector registers in x86-64 ld.so

This patch adds SSE, AVX and AVX512 versions of _dl_runtime_resolve
and _dl_runtime_profile, which save and restore the first 8 vector
registers used for parameter passing.  elf_machine_runtime_setup
selects the proper _dl_runtime_resolve or _dl_runtime_profile based
on _dl_x86_cpu_features.  It avoids race condition caused by
FOREIGN_CALL macros, which are only used for x86-64.

Performance impact of saving and restoring 8 vector registers are
negligible on Nehalem, Sandy Bridge, Ivy Bridge and Haswell when
ld.so is optimized with SSE2.

[BZ #15128]
* sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add
ifuncmain8.
(modules-names): Add ifuncmod8.
($(objpfx)ifuncmain8): New rule.
* sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and
<cpuid.h>.
(elf_machine_runtime_setup): Use _dl_runtime_resolve_sse,
_dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512,
_dl_runtime_profile_sse, _dl_runtime_profile_avx, or
_dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE.
* sysdeps/x86_64/dl-trampoline.S: Rewrite.
* sysdeps/x86_64/dl-trampoline.h: Likewise.
* sysdeps/x86_64/ifuncmain8.c: New file.
* sysdeps/x86_64/ifuncmod8.c: Likewise.
* sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE):
Removed.
* sysdeps/x86_64/nptl/tls.h (__128bits): Removed.
(tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1.
Change rtld_savespace_sse to __glibc_unused2.
(RTLD_CHECK_FOREIGN_CALL): Removed.
(RTLD_ENABLE_FOREIGN_CALL): Likewise.
(RTLD_PREPARE_FOREIGN_CALL): Likewise.
(RTLD_FINALIZE_FOREIGN_CALL): Likewise.

9 years agoNote bug 10882 as having been fixed in 2.16.
Joseph Myers [Mon, 24 Aug 2015 14:45:32 +0000 (14:45 +0000)]
Note bug 10882 as having been fixed in 2.16.

9 years ago2015-08-24 Wilco Dijkstra <wdijkstr@arm.com>
Wilco Dijkstra [Mon, 24 Aug 2015 13:49:46 +0000 (14:49 +0100)]
2015-08-24  Wilco Dijkstra  <wdijkstr@arm.com>

* sysdeps/aarch64/bzero.S (__bzero): Remove.

9 years ago2015-08-24 Wilco Dijkstra <wdijkstr@arm.com>
Wilco Dijkstra [Mon, 24 Aug 2015 13:40:39 +0000 (14:40 +0100)]
2015-08-24  Wilco Dijkstra  <wdijkstr@arm.com>

* sysdeps/aarch64/fpu/math_private.h (libc_feholdsetround_aarch64_ctx):
Unconditionally set __fpcr to avoid uninialized warning.
(libc_feholdsetround_noex_aarch64_ctx): Likewise.

9 years agoDon't use the main arena in retry path if it is corrupt
Siddhesh Poyarekar [Mon, 24 Aug 2015 09:03:07 +0000 (14:33 +0530)]
Don't use the main arena in retry path if it is corrupt

If allocation on a non-main arena fails, the main arena is used
without checking to see if it is corrupt.  Add a check that avoids the
main arena if it is corrupt.

* malloc/arena.c (arena_get_retry): Don't use main_arena if it is
corrupt.

9 years agoDrop unused first argument from arena_get2
Siddhesh Poyarekar [Mon, 24 Aug 2015 09:02:07 +0000 (14:32 +0530)]
Drop unused first argument from arena_get2

The arena pointer in the first argument to arena_get2 was used in the
old days before per-thread arenas.  They're unused now and hence can
be dropped.

ChangeLog:

* malloc/arena.c (arena_get2): Drop unused argument.
(arena_lock): Adjust.
(arena_get_retry): Likewise.

9 years agoRemove __ASSUME_IPC64
Andreas Schwab [Tue, 18 Aug 2015 08:29:30 +0000 (10:29 +0200)]
Remove __ASSUME_IPC64

PowerPC has always used __IPC_64 like most other architectures, which
means that __ASSUME_IPC64 can be always true.  Also, all other
architecture implementations that use the ipc syscall are effectively
identical to the generic version and can be removed.

9 years agomanual: skip build when perl is unavailable
Mike Frysinger [Thu, 23 Feb 2006 02:12:28 +0000 (21:12 -0500)]
manual: skip build when perl is unavailable

Do not try to generate the manual when perl is unavailable.  This
matches the behavior when makeinfo is unavailable.  Otherwise the
install step fails when trying to generate the libm section since
it runs a perl script.

9 years agopowerpc: Fix memchr for powerpc32.
Carlos Eduardo Seo [Tue, 11 Aug 2015 21:30:12 +0000 (18:30 -0300)]
powerpc: Fix memchr for powerpc32.

Fix a wrong #undef in memchr.c.

* sysdeps/powerpc/powerpc32/power4/multiarch/memchr.c: Replace
'#undef memcpy' by '#undef memchr'.

9 years agopowerpc: make memchr use memchr-power7.
Carlos Eduardo Seo [Tue, 11 Aug 2015 22:38:45 +0000 (19:38 -0300)]
powerpc: make memchr use memchr-power7.

In powerpc64, memchr was always pointing to the internal __GI_memchr
implementation.  This patch fixes that and makes it use the
optimized POWER7 version when adequate.

* sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c: Make
memchr not point to the internal __GI_memchr implementation.

9 years agoRevert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN"
H.J. Lu [Fri, 21 Aug 2015 16:57:15 +0000 (09:57 -0700)]
Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN"

This reverts commit 0c5b8b5941e036dcaac69cecee9f01fdf9218e6e.

9 years agoRevert "Fix a typo in linux lxstat.c"
H.J. Lu [Fri, 21 Aug 2015 16:57:02 +0000 (09:57 -0700)]
Revert "Fix a typo in linux lxstat.c"

This reverts commit e4ad5e722cec9a274cd84585d9c33f696e36f847.

9 years agoFix a typo in linux lxstat.c
H.J. Lu [Fri, 21 Aug 2015 15:32:36 +0000 (08:32 -0700)]
Fix a typo in linux lxstat.c

* sysdeps/unix/sysv/linux/lxstat.c (__lxstat): Fix a typo.

9 years agoAdd INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN
H.J. Lu [Fri, 21 Aug 2015 11:46:39 +0000 (04:46 -0700)]
Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN

For ia32 PIC, the first thing of many syscalls does is to call
__x86.get_pc_thunk.reg to load PC into reg in case there is an error,
which is required for setting errno.  In most cases, there are no
errors.  But we still call __x86.get_pc_thunk.reg.  This patch adds
INLINE_SYSCALL_RETURN and INLINE_SYSCALL_ERROR_RETURN so that i386
can optimize setting errno by branching to the internal __syscall_error
without PLT.

INLINE_SYSCALL_ERROR_RETURN is designed to take the negative error
number returned from the majority of Linux kernels for which negating
is a no-op with INTERNAL_SYSCALL_ERRNO.

With i386 INLINE_SYSCALL_RETURN, INLINE_SYSCALL_ERROR_RETURN and
i386 syscall inlining optimization for GCC 5, for
sysdeps/unix/sysv/linux/fchmodat.c with -O2 -march=i686
-mtune=generic, GCC 5.2 now generates:

<fchmodat>:
   0: push   %ebx
   1: mov    0x14(%esp),%eax
   5: mov    0x8(%esp),%ebx
   9: mov    0xc(%esp),%ecx
   d: mov    0x10(%esp),%edx
  11: test   $0xfffffeff,%eax
  16: jne    38 <fchmodat+0x38>
  18: test   $0x1,%ah
  1b: jne    48 <fchmodat+0x48>
  1d: mov    $0x132,%eax
  22: call   *%gs:0x10
  29: cmp    $0xfffff000,%eax
  2e: ja     58 <fchmodat+0x58>
  30: pop    %ebx
  31: ret
  32: lea    0x0(%esi),%esi
  38: pop    %ebx
  39: mov    $0xffffffea,%eax
  3e: jmp    3f <fchmodat+0x3f> 3f: R_386_PC32 __syscall_error
  43: nop
  44: lea    0x0(%esi,%eiz,1),%esi
  48: pop    %ebx
  49: mov    $0xffffffa1,%eax
  4e: jmp    4f <fchmodat+0x4f> 4f: R_386_PC32 __syscall_error
  53: nop
  54: lea    0x0(%esi,%eiz,1),%esi
  58: pop    %ebx
  59: jmp    5a <fchmodat+0x5a> 5a: R_386_PC32 __syscall_error

instead of

<fchmodat>:
   0: sub    $0x8,%esp
   3: mov    0x18(%esp),%eax
   7: mov    %ebx,(%esp)
   a: call   b <fchmodat+0xb> b: R_386_PC32 __x86.get_pc_thunk.bx
   f: add    $0x2,%ebx 11: R_386_GOTPC _GLOBAL_OFFSET_TABLE_
  15: mov    %edi,0x4(%esp)
  19: test   $0xfffffeff,%eax
  1e: jne    70 <fchmodat+0x70>
  20: test   $0x1,%ah
  23: jne    88 <fchmodat+0x88>
  25: mov    0x14(%esp),%edx
  29: mov    0x10(%esp),%ecx
  2d: mov    0xc(%esp),%edi
  31: xchg   %ebx,%edi
  33: mov    $0x132,%eax
  38: call   *%gs:0x10
  3f: xchg   %edi,%ebx
  41: cmp    $0xfffff000,%eax
  46: ja     58 <fchmodat+0x58>
  48: mov    (%esp),%ebx
  4b: mov    0x4(%esp),%edi
  4f: add    $0x8,%esp
  52: ret
  53: nop
  54: lea    0x0(%esi,%eiz,1),%esi
  58: mov    0x0(%ebx),%edx 5a: R_386_TLS_GOTIE __libc_errno
  5e: neg    %eax
  60: mov    %eax,%gs:(%edx)
  63: mov    $0xffffffff,%eax
  68: jmp    48 <fchmodat+0x48>
  6a: lea    0x0(%esi),%esi
  70: mov    0x0(%ebx),%eax 72: R_386_TLS_GOTIE __libc_errno
  76: movl   $0x16,%gs:(%eax)
  7d: mov    $0xffffffff,%eax
  82: jmp    48 <fchmodat+0x48>
  84: lea    0x0(%esi,%eiz,1),%esi
  88: mov    0x0(%ebx),%eax 8a: R_386_TLS_GOTIE __libc_errno
  8e: movl   $0x5f,%gs:(%eax)
  95: mov    $0xffffffff,%eax
  9a: jmp    48 <fchmodat+0x48>

* sysdeps/unix/sysdep.h (INLINE_SYSCALL_RETURN): New.
(INLINE_SYSCALL_ERROR_RETURN): Likewise.
* sysdeps/unix/sysv/linux/adjtime.c (ADJTIME): Use
INLINE_SYSCALL_RETURN and INLINE_SYSCALL_ERROR_RETURN.
* sysdeps/unix/sysv/linux/aio_sigqueue.c (__aio_sigqueue):
Likewise.
* sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise.
* sysdeps/unix/sysv/linux/eventfd.c (eventfd): Likewise.
* sysdeps/unix/sysv/linux/faccessat.c (faccessat): Likewise.
* sysdeps/unix/sysv/linux/fchmodat.c (fchmodat): Likewise.
* sysdeps/unix/sysv/linux/fcntl.c (do_fcntl): Likewise.
* sysdeps/unix/sysv/linux/fstatfs64.c (__fstatfs64): Likewise.
* sysdeps/unix/sysv/linux/ftruncate64.c (__ftruncate64): Likewise.
* sysdeps/unix/sysv/linux/futimens.c (futimens): Likewise.
* sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise.
* sysdeps/unix/sysv/linux/futimesat.c (futimesat): Likewise.
* sysdeps/unix/sysv/linux/fxstat.c (__fxstat): Likewise.
* sysdeps/unix/sysv/linux/fxstat64.c (___fxstat64): Likewise.
* sysdeps/unix/sysv/linux/fxstatat.c (__fxstatat): Likewise.
* sysdeps/unix/sysv/linux/fxstatat64.c (__fxstatat64): Likewise.
* sysdeps/unix/sysv/linux/gai_sigqueue.c (__gai_sigqueue):
Likewise.
* sysdeps/unix/sysv/linux/getpriority.c (__getpriority): Likewise.
* sysdeps/unix/sysv/linux/getrlimit64.c (__getrlimit64): Likewise.
* sysdeps/unix/sysv/linux/llseek.c (__llseek): Likewise.
* sysdeps/unix/sysv/linux/lutimes.c (lutimes): Likewise.
* sysdeps/unix/sysv/linux/lxstat.c (__lxstat): Likewise.
* sysdeps/unix/sysv/linux/lxstat64.c (___lxstat64): Likewise.
* sysdeps/unix/sysv/linux/mmap64.c (__mmap64): Likewise.
* sysdeps/unix/sysv/linux/mq_close.c (mq_close): Likewise.
* sysdeps/unix/sysv/linux/mq_open.c (__mq_open): Likewise.
* sysdeps/unix/sysv/linux/mq_unlink.c (mq_unlink): Likewise.
* sysdeps/unix/sysv/linux/msgget.c (msgget): Likewise.
* sysdeps/unix/sysv/linux/prlimit.c (prlimit): Likewise.
* sysdeps/unix/sysv/linux/pt-raise.c (raise): Likewise.
* sysdeps/unix/sysv/linux/raise.c (raise): Likewise.
* sysdeps/unix/sysv/linux/readahead.c (__readahead): Likewise.
* sysdeps/unix/sysv/linux/reboot.c (reboot): Likewise.
* sysdeps/unix/sysv/linux/semget.c (semget): Likewise.
* sysdeps/unix/sysv/linux/semop.c (semop): Likewise.
* sysdeps/unix/sysv/linux/semtimedop.c (semtimedop): Likewise.
* sysdeps/unix/sysv/linux/setrlimit64.c (setrlimit64): Likewise.
* sysdeps/unix/sysv/linux/shmat.c (shmat): Likewise.
* sysdeps/unix/sysv/linux/shmdt.c (shmdt): Likewise.
* sysdeps/unix/sysv/linux/shmget.c (shmget): Likewise.
* sysdeps/unix/sysv/linux/signalfd.c (signalfd): Likewise.
* sysdeps/unix/sysv/linux/sigpending.c (sigpending): Likewise.
* sysdeps/unix/sysv/linux/sigprocmask.c ( __sigprocmask): Likewise.
* sysdeps/unix/sysv/linux/sigqueue.c (__sigqueue): Likewise.
* sysdeps/unix/sysv/linux/speed.c (cfsetospeed): Likewise.
* sysdeps/unix/sysv/linux/statfs64.c (__statfs64): Likewise.
* sysdeps/unix/sysv/linux/sysctl.c (__sysctl): Likewise.
* sysdeps/unix/sysv/linux/tcsendbrk.c (tcsendbreak): Likewise.
* sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise.
* sysdeps/unix/sysv/linux/timer_getoverr.c (timer_getoverrun):
Likewise.
* sysdeps/unix/sysv/linux/timer_gettime.c (timer_gettime):
Likewise.
* sysdeps/unix/sysv/linux/timer_settime.c (timer_settime):
Likewise.
* sysdeps/unix/sysv/linux/truncate64.c (truncate64): Likewise.
* sysdeps/unix/sysv/linux/ustat.c (ustat): Likewise.
* sysdeps/unix/sysv/linux/utimensat.c (utimensat): Likewise.
* sysdeps/unix/sysv/linux/utimes.c (__utimes): Likewise.
* sysdeps/unix/sysv/linux/xmknod.c (__xmknod): Likewise.
* sysdeps/unix/sysv/linux/xmknodat.c (__xmknodat): Likewise.
* sysdeps/unix/sysv/linux/xstat.c (__xstat): Likewise.
* sysdeps/unix/sysv/linux/xstat64.c (___xstat64): Likewise.
* sysdeps/unix/sysv/linux/xstatconv.c (__xstat_conv): Likewise.
(__xstat64_conv): Likewise.
(__xstat32_conv): Likewise.
* sysdeps/unix/sysv/linux/sched_getaffinity.c
(__sched_getaffinity_new): Add libc_hidden_proto and
libc_hidden_def.  Use INLINE_SYSCALL_ERROR_RETURN.

9 years agoDon't use -Wno-strict-prototypes in timezone/.
Joseph Myers [Thu, 20 Aug 2015 20:51:22 +0000 (20:51 +0000)]
Don't use -Wno-strict-prototypes in timezone/.

The current timezone/ code from tzcode doesn't need
-Wno-strict-prototypes.  This patch removes it from the CFLAGS
settings in timezone/Makefile.

Tested for x86_64 that glibc still builds OK with the patch applied.

* timezone/Makefile (CFLAGS-zdump.c): Remove
-Wno-strict-prototypes.
(CFLAGS-zic.c): Likewise.
(CFLAGS-ialloc.c): Likewise.
(CFLAGS-scheck.c): Likewise.

9 years agoDon't use -Wno-error=undef.
Joseph Myers [Thu, 20 Aug 2015 20:50:05 +0000 (20:50 +0000)]
Don't use -Wno-error=undef.

This patch removes the use of -Wno-error=undef, so that -Wundef
warnings become errors.

Tested for x86_64, x86, mips64 (all three ABIs) and arm.

* Makeconfig [$(enable-werror) = yes] (+gccwarn): Do not add
-Wno-error=undef.

9 years agoAdd missing ChangeLog entry for the last commit
H.J. Lu [Thu, 20 Aug 2015 19:56:22 +0000 (12:56 -0700)]
Add missing ChangeLog entry for the last commit

9 years agoRemove the unused IFUNC files
H.J. Lu [Thu, 20 Aug 2015 19:47:20 +0000 (12:47 -0700)]
Remove the unused IFUNC files

sysdeps/i386/i686/multiarch/strcasestr-c.c became unused after

commit 1818483b15d22016b0eae41d37ee91cc87b37510
Author: Andreas Schwab <schwab@suse.de>
Date:   Wed Dec 18 11:53:27 2013 +1000

    Remove use of SSE4.2 functions for strstr on i686

which contains

-sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c
+sysdep_routines += strcspn-c strpbrk-c strspn-c

sysdeps/x86_64/multiarch/strcasestr.c became useless after

584b18eb4df61ccd447db2dfe8c8a7901f8c8598
Author: Ondřej BĆ­lka <neleai@seznam.cz>
Date:   Sat Dec 14 19:33:56 2013 +0100

    Add strstr with unaligned loads. Fixes bug 12100.

which changes sysdeps/x86_64/multiarch/strcasestr.c to

libc_ifunc (__strcasestr, __strcasestr_sse2);

This patch removes these file.

* i386/i686/multiarch/strcasestr-c.c: Removed.
* x86_64/multiarch/strcasestr.c: Likewise.
* x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list):
Remove strcasestr.

9 years agoDon't use -Wno-uninitialized in math/.
Joseph Myers [Thu, 20 Aug 2015 18:00:09 +0000 (18:00 +0000)]
Don't use -Wno-uninitialized in math/.

The uninitialized variable warnings in math/ having been fixed for all
the supported floating-point formats, this patch removes the use of
-Wno-uninitialized there, continuing with the goal of avoiding -Wno-
options in makefiles as far as possible..

Tested for x86_64 and x86 (full build and testsuite runs), and for
powerpc and mips64 (verified that glibc builds without errors).

* math/Makefile (CFLAGS): Don't add -Wno-uninitialized.

9 years agoFix uninitialized variable use in ldbl-128ibm nearbyintl.
Joseph Myers [Thu, 20 Aug 2015 17:28:09 +0000 (17:28 +0000)]
Fix uninitialized variable use in ldbl-128ibm nearbyintl.

Removing the use of -Wno-uninitialized for math/ shows errors for
ldbl-128ibm:

../sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c: In function '__nearbyintl':
../sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c:119:34: error: 'low' may be used uninitialized in this function [-Werror=maybe-uninitialized]
       u.d[1].d = high - u.d[0].d + low;
                                  ^
../sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c:119:23: error: 'high' may be used uninitialized in this function [-Werror=maybe-uninitialized]
       u.d[1].d = high - u.d[0].d + low;
                       ^

These errors are correct: if the high part of the argument is a NaN,
and the low part is nonzero but has absolute value less than 2^52,
those variables can be used uninitialized.  This patch rearranges the
code so that the variables are always initialized with the natural
values, and then possibly modified later, to avoid this uninitialized
use.  (Note that there are still other issues with this code and NaNs
that are not fixed by this patch.)  No bug filed in Bugzilla or
testcase added for the uninitialized use since it wasn't user-visible
with the compiler I tried (that is, I still got a NaN result).

Tested for powerpc.

* sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c: Always initialize
variables for high and low parts before possibly modifying them.

9 years agoMove x86_64 init-arch.h to sysdeps/x86/init-arch.h
H.J. Lu [Thu, 20 Aug 2015 11:29:23 +0000 (04:29 -0700)]
Move x86_64 init-arch.h to sysdeps/x86/init-arch.h

Move sysdeps/x86_64/multiarch/init-arch.h to sysdeps/x86/init-arch.h
which can be used for both i386 and x86_64.

* sysdeps/i386/i686/multiarch/init-arch.h: Removed.
* sysdeps/unix/sysv/linux/x86/init-arch.h: Likewise.
* sysdeps/x86_64/cacheinfo.c: Include <init-arch.h> instead
of "multiarch/init-arch.h".
* sysdeps/x86_64/multiarch/init-arch.h: Renamed to ...
* sysdeps/x86/init-arch.h: This.

9 years agoRemove x86 init-arch.c
H.J. Lu [Thu, 20 Aug 2015 11:19:59 +0000 (04:19 -0700)]
Remove x86 init-arch.c

Both files include sysdeps/x86_64/multiarch/init-arch.c which has been
removed.

* sysdeps/i386/i686/multiarch/init-arch.c: Removed.
* sysdeps/unix/sysv/linux/x86/init-arch.c: Likewise.

9 years agoFix exponents in manual.
Ondřej BĆ­lka [Sun, 12 Jul 2015 09:32:56 +0000 (11:32 +0200)]
Fix exponents in manual.

* manual/macros.texi: Add twoexp macro.
* manual/filesys.texi: Fix exponents.
* manual/llio.texi: Likewise.
* manual/stdio.texi: Likewise.

9 years agonptl: Document crash due to incorrect use of locks
Florian Weimer [Thu, 20 Aug 2015 06:44:09 +0000 (08:44 +0200)]
nptl: Document crash due to incorrect use of locks

9 years agoFix csqrt missing underflows (bug 18370).
Joseph Myers [Wed, 19 Aug 2015 22:42:01 +0000 (22:42 +0000)]
Fix csqrt missing underflows (bug 18370).

The csqrt implementations in glibc can miss underflow exceptions when
the real or imaginary part of the result becomes tiny in the course of
scaling down (in particular, multiplication by 0.5) and that scaling
is exact although the relevant part of the mathematical result isn't.
This patch forces the exception in a similar way to previous fixes.

Tested for x86_64 and x86.

[BZ #18370]
* math/s_csqrt.c (__csqrt): Force underflow exception for results
whose real or imaginary part has small absolute value.
* math/s_csqrtf.c (__csqrtf): Likewise.
* math/s_csqrtl.c (__csqrtl): Likewise.
* math/auto-libm-test-in: Add more tests of csqrt.
* math/auto-libm-test-out: Regenerated.
* sysdeps/i386/fpu/libm-test-ulps: Update.

9 years agorelocate localedata ChangeLog entries
Mike Frysinger [Wed, 19 Aug 2015 21:55:06 +0000 (17:55 -0400)]
relocate localedata ChangeLog entries

9 years agoPowerPC: Extend Program Priority Register support
Gabriel F. T. Gomes [Mon, 10 Aug 2015 13:58:12 +0000 (10:58 -0300)]
PowerPC: Extend Program Priority Register support

This patch adds extra inline functions to change the Program Priority
Register from ISA 2.07.

2015-08-19  Gabriel F. T. Gomes  <gftg@linux.vnet.ibm.com>

* sysdeps/powerpc/sys/platform/ppc.h (__ppc_set_ppr_med_high,
__ppc_set_ppr_very_low): New functions.
* manual/platform.texi: Add documentation about
__ppc_set_ppr_med_high and __ppc_set_ppr_very_low.

9 years agoMention BZ #18796 fix in NEWS.
Andrew Senkevich [Wed, 19 Aug 2015 16:48:52 +0000 (19:48 +0300)]
Mention BZ #18796 fix in NEWS.

9 years agoImprove stpncpy performance by using __strnlen/memcpy/memset rather than a
Wilco Dijkstra [Wed, 19 Aug 2015 15:28:21 +0000 (16:28 +0100)]
Improve stpncpy performance by using __strnlen/memcpy/memset rather than a
byte loop. Performance on bench-stpncpy is ~2x faster on average.

9 years ago [BZ #18796]
Andrew Senkevich [Wed, 19 Aug 2015 13:54:28 +0000 (16:54 +0300)]
[BZ #18796]
    * scripts/test-installation.pl: Don't add -lmvec to build options if
    libmvec wasn't built.

9 years agoAdd BZ #14341 to NEWS
H.J. Lu [Wed, 19 Aug 2015 13:01:58 +0000 (06:01 -0700)]
Add BZ #14341 to NEWS

9 years agoFix dynamic linker issue with bind-now
Petar Jovanovic [Tue, 19 Aug 2014 22:50:54 +0000 (00:50 +0200)]
Fix dynamic linker issue with bind-now

Fix the bind-now case when DT_REL and DT_JMPREL sections are separate
and there is a gap between them.

[BZ #14341]
* elf/dynamic-link.h (elf_machine_lazy_rel): Properly handle the
case when there is a gap between DT_REL and DT_JMPREL sections.
* sysdeps/x86_64/Makefile (tests): Add tst-split-dynreloc.
(LDFLAGS-tst-split-dynreloc): New.
(tst-split-dynreloc-ENV): Likewise.
* sysdeps/x86_64/tst-split-dynreloc.c: New file.
* sysdeps/x86_64/tst-split-dynreloc.lds: Likewise.

9 years agoMark __xstatXX_conv as hidden
H.J. Lu [Wed, 19 Aug 2015 11:40:35 +0000 (04:40 -0700)]
Mark __xstatXX_conv as hidden

__xstat_conv, __xstat64_conv and __xstat32_conv are internal to glibc.
They should be marked as hidden so that they can't be called without
PLT.

[BZ #18822]
* sysdeps/unix/sysv/linux/xstatconv.h (__xstat_conv): Add
attribute_hidden.
(__xstat64_conv): Likewise.
(__xstat32_conv): Likewise.

9 years agoCall __setcontext with HIDDEN_JUMPTARGET
H.J. Lu [Wed, 19 Aug 2015 11:39:47 +0000 (04:39 -0700)]
Call __setcontext with HIDDEN_JUMPTARGET

i386 __makecontext should call __setcontext with HIDDEN_JUMPTARGET.

[BZ #18822]
* sysdeps/unix/sysv/linux/i386/makecontext.S (__makecontext):
Don't load %ebx when calling __setcontext.  Call __setcontext
with HIDDEN_JUMPTARGET.
* sysdeps/unix/sysv/linux/i386/setcontext.S (__setcontext): Add
libc_hidden_def.

9 years agoUse x86-64 cacheinfo.c and sysconf.c for x86
H.J. Lu [Wed, 19 Aug 2015 11:27:04 +0000 (04:27 -0700)]
Use x86-64 cacheinfo.c and sysconf.c for x86

Since _dl_x86_cpu_features is always available, we can use x86-64
cacheinfo.c and sysconf.c for both i386 and x86-64.

* sysdeps/i386/i686/Makefile
[$(subdir) == string] (sysdep_routines): Moved to ...
* sysdeps/i386/Makefile: Here.
* sysdeps/i386/i686/cacheinfo.c: Moved to ...
* sysdeps/i386/cacheinfo.c: Here.
* sysdeps/unix/sysv/linux/i386/sysconf.c: Removed.
* sysdeps/unix/sysv/linux/i386/i686/sysconf.c: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sysconf.c: Moved to ...
* sysdeps/unix/sysv/linux/x86/sysconf.c: Here.

9 years agoAlso check __i586__/__i686__ for HAS_I586/HAS_I686
H.J. Lu [Wed, 19 Aug 2015 11:19:58 +0000 (04:19 -0700)]
Also check __i586__/__i686__ for HAS_I586/HAS_I686

* sysdeps/x86/cpu-features.h (HAS_I586): Defined to 1 if
__i586__ is defined.
(HAS_I686): Defined to 1 if __i686__ is defined.

9 years agoFix -Wundef warnings in elf/tst-execstack.c.
Joseph Myers [Wed, 19 Aug 2015 00:51:07 +0000 (00:51 +0000)]
Fix -Wundef warnings in elf/tst-execstack.c.

To remove -Wno-error=undef, we need to fix the remaining cases where
there are -Wundef warnings in the testsuite.  One of those places is
in elf/tst-execstack.c.

tst-execstack.c tests USE_PTHREADS with #if.  nptl/tst-execstack.c
defines USE_PTHREADS to 1 before including ../elf/tst-execstack.c,
while elf/tst-execstack.c, when compiled directly, leaves it
undefined.

This patch adds a setting of CPPFLAGS-tst-execstack.c to
elf/Makefile.  An alternative approach would be to rename
tst-execstack.c to tst-execstack-main.c and have two different
tst-execstack.c files include it, each with an appropriate
USE_PTHREADS #define.

Tested for x86_64.

* elf/Makefile [$(have-z-execstack) = yes]
(CPPFLAGS-tst-execstack.c): New variable.

9 years agoFix -Wundef warnings in login/tst-utmp.c.
Joseph Myers [Wed, 19 Aug 2015 00:50:17 +0000 (00:50 +0000)]
Fix -Wundef warnings in login/tst-utmp.c.

To remove -Wno-error=undef, we need to fix the remaining cases where
there are -Wundef warnings in the testsuite.  One of those places is
in login/tst-utmp.c.

When included from tst-utmpx.c, <utmpx.h> is included instead of
<utmp.h>, meaning the _HAVE_UT_* macros are not defined.  The test is
prepared for them not being defined, in that all the relevant
conditionals also include "defined UTMPX".  However, they test the
_HAVE_UT_* macros first, so resulting in -Wundef warnings.

This patch does the minimal fix of swapping the || operands.  This is
logically correct - avoiding checking a macro we know will not be
defined in the case where it is not defined.  It won't fix such
warnings for the case where the toplevel bits/utmp.h is used and most
_HAVE_UT_* aren't defined at all even when <utmp.h> is included, but
that case doesn't apply to any current glibc configuration.  Fixing it
would also be tricky in that, while glibc itself consistently uses
_HAVE_UT_* in ways that would work with 0 instead of undefined,
external packages that use the macros expect defined / undefined
instead of 1 / 0 (codesearch.debian.net shows uses by util-linux,
python-utmp, libsys-utmp-perl).

Tested for x86_64.

* login/tst-utmp.c [_HAVE_UT_TYPE || defined UTMPX]: Change
conditional to [defined UTMPX || _HAVE_UT_TYPE].
[_HAVE_UT_TV || defined UTMPX]: Change conditional to [defined
UTMPX || _HAVE_UT_TV].
[_HAVE_UT_TV - 0 || defined UTMPX]: Change conditional to [defined
UTMPX || _HAVE_UT_TV - 0].

9 years agoFix MIPS -Wundef warnings for __mips_isa_rev.
Joseph Myers [Tue, 18 Aug 2015 21:52:22 +0000 (21:52 +0000)]
Fix MIPS -Wundef warnings for __mips_isa_rev.

This patch fixes -Wundef warnings relating to __mips_isa_rev being
undefined.

Tested for mips64 (all three ABIs) that there is a clean build and
testsuite run with -Wno-error=undef removed (and my other -Wundef
patches applied).

* sysdeps/mips/dl-machine.h [__mips_isa_rev < 6]: Change
conditionals to [!defined __mips_isa_rev || __mips_isa_rev < 6].
* sysdeps/mips/machine-gmon.h [__mips_isa_rev < 6]: Likewise.

9 years agopowerpc: Add missing hwcap strings.
Carlos Eduardo Seo [Thu, 13 Aug 2015 17:33:06 +0000 (14:33 -0300)]
powerpc: Add missing hwcap strings.

Some features in hwcap.h do not have matching string descriptors
to be displayed when LD_SHOW_AUXV=1.  This patch fixes the problem.

2015-08-13  Carlos Eduardo Seo  <cseo@linux.vnet.ibm.com>

* sysdeps/powerpc/dl-procinfo.c:
(_dl_powerpc_cap_flags): Added missing strings for some
hwcap features.
* sysdeps/powerpc/dl-procinfo.h: Updated hwcap bit count.

9 years agoPort the 0x7efe...feff pattern to GCC 6.
Paul Eggert [Wed, 22 Jul 2015 05:50:29 +0000 (22:50 -0700)]
Port the 0x7efe...feff pattern to GCC 6.

See Steve Ellcey's bug report in:
https://sourceware.org/ml/libc-alpha/2015-07/msg00673.html
* string/memrchr.c (MEMRCHR):
* string/rawmemchr.c (RAWMEMCHR):
* string/strchr.c (strchr):
* string/strchrnul.c (STRCHRNUL):
Rewrite code to avoid issues with signed shift overflow.

9 years agoDefine HAS_CPUID/HAS_I586/HAS_I686 from -march=
H.J. Lu [Tue, 18 Aug 2015 14:59:49 +0000 (07:59 -0700)]
Define HAS_CPUID/HAS_I586/HAS_I686 from -march=

cpuid, i586 and i686 instructions are available if the processor
specified by -march= supports them.  We can use this information
to determine whether those instructions can be used safely.

* sysdeps/x86/cpu-features.c (init_cpu_features): Check
whether cpuid is available only if HAS_CPUID is 0.
* sysdeps/x86/cpu-features.h (HAS_CPUID): New.
(HAS_I586): Likewise.
(HAS_I686): Likewise.

9 years agoFix lang_lib/lang_term as per ISO 639-2 [BZ #16973]
Marko Myllynen [Tue, 11 Aug 2015 07:54:25 +0000 (10:54 +0300)]
Fix lang_lib/lang_term as per ISO 639-2 [BZ #16973]

lang_lib (which reflects ISO 639-2/B (bibliographic) codes) and
lang_term (which reflects ISO 639-2/T (terminology) codes) should be
identical except for those languages for which ISO 639-2 specifies
separate bibliographic/terminology values.

I used this Library of Congress page as the source:
http://www.loc.gov/standards/iso639-2/php/code_list.php

9 years agoregexp.h: update Versions to match file usage [BZ #18681]
Zack Weinberg [Mon, 17 Aug 2015 15:28:46 +0000 (11:28 -0400)]
regexp.h: update Versions to match file usage [BZ #18681]

Since the new regexp.c code uses the GLIBC_2.23 symbol, make sure we
declare it to avoid warnings/errors.

9 years agoNEWS: note fixed bug
Mike Frysinger [Tue, 18 Aug 2015 06:59:37 +0000 (02:59 -0400)]
NEWS: note fixed bug

9 years agohppa: start.S: rework references to fix PIE TEXTRELs [BZ #18421]
Alan Modra [Sat, 15 Aug 2015 02:15:49 +0000 (22:15 -0400)]
hppa: start.S: rework references to fix PIE TEXTRELs [BZ #18421]

The startup code was not using PIC friendly references leading to TEXTRELs
in every PIE ELF.

9 years agohppa: timerfd.h: move to common sys/timerfd.h
Mike Frysinger [Sat, 15 Aug 2015 02:14:28 +0000 (22:14 -0400)]
hppa: timerfd.h: move to common sys/timerfd.h

Use the common sys/timerfd.h to avoid duplication and move the
arch-specific settings into bits/timerfd.h.

9 years agohppa: signalfd.h: move to common sys/signalfd.h
Mike Frysinger [Sat, 15 Aug 2015 02:14:16 +0000 (22:14 -0400)]
hppa: signalfd.h: move to common sys/signalfd.h

Use the common sys/signalfd.h to avoid duplication and move the
arch-specific settings into bits/signalfd.h.

9 years agohppa: inotify.h: move to common sys/inotify.h
Mike Frysinger [Sat, 15 Aug 2015 02:14:00 +0000 (22:14 -0400)]
hppa: inotify.h: move to common sys/inotify.h

Use the common sys/inotify.h to avoid duplication and move the
arch-specific settings into bits/inotify.h.

9 years agohppa: eventfd.h: move to common sys/eventfd.h
Mike Frysinger [Sat, 15 Aug 2015 02:13:37 +0000 (22:13 -0400)]
hppa: eventfd.h: move to common sys/eventfd.h

Use the common sys/eventfd.h to avoid duplication and move the
arch-specific settings into bits/eventfd.h.

9 years agohppa: epoll.h: move to common sys/epoll.h
Mike Frysinger [Sat, 15 Aug 2015 02:12:54 +0000 (22:12 -0400)]
hppa: epoll.h: move to common sys/epoll.h

Use the common sys/epoll.h to avoid duplication and move the arch-specific
settings into bits/epoll.h.

9 years agohppa: sigaction.h: update define export based on __USE_XOPEN2K8
Mike Frysinger [Sat, 15 Aug 2015 02:11:50 +0000 (22:11 -0400)]
hppa: sigaction.h: update define export based on __USE_XOPEN2K8

This brings hppa in line with other ports by exporting a few more defines
based on the __USE_XOPEN2K8 define and not just __USE_MISC.

9 years agohppa: shm.h: add SHM_EXEC
Mike Frysinger [Sat, 15 Aug 2015 02:11:03 +0000 (22:11 -0400)]
hppa: shm.h: add SHM_EXEC

This brings hppa in line with all the other arches.

9 years agohppa: drop __ASSUME_LWS_CAS define
Mike Frysinger [Sat, 15 Aug 2015 02:09:30 +0000 (22:09 -0400)]
hppa: drop __ASSUME_LWS_CAS define

We require recent enough kernels for this now, and we've been hardcoding
it to 1, so drop it entirely now.

9 years agohppa: assume TLS everywhere
Mike Frysinger [Sat, 15 Aug 2015 02:07:40 +0000 (22:07 -0400)]
hppa: assume TLS everywhere

This brings hppa inline with all the other arches and main code where we
require TLS support everywhere.  That means dropping the defines USE_TLS
and USE___THREAD, and dropping the binutils check (since we already have
a version requirement that is new enough).

9 years agoFix csqrt spurious underflows (bug 18823).
Joseph Myers [Mon, 17 Aug 2015 23:02:54 +0000 (23:02 +0000)]
Fix csqrt spurious underflows (bug 18823).

The csqrt functions scale up small arguments to avoid underflows when
calling hypot functions.  However, even when hypot does not underflow,
a subsequent calculation of 0.5 * hypot can underflow.  This patch
duly increases the threshold and scale factor to avoid such underflows
as well.

Tested for x86_64, x86 and mips64.

[BZ #18823]
* math/s_csqrt.c (__csqrt): Increase threshold and scale factor
for scaling up small arguments.
* math/s_csqrtf.c (__csqrtf): Likewise.
* math/s_csqrtl.c (__csqrtl): Likewise.
* math/auto-libm-test-in: Add more tests of csqrt.
* math/auto-libm-test-out: Regenerated.

9 years agoAdd version set GLIBC_2.19 for linux/powerpc
Andreas Schwab [Mon, 17 Aug 2015 14:20:46 +0000 (16:20 +0200)]
Add version set GLIBC_2.19 for linux/powerpc

9 years agoDesupport regexp.h (bug 18681)
Zack Weinberg [Sun, 12 Jul 2015 19:27:34 +0000 (15:27 -0400)]
Desupport regexp.h (bug 18681)

9 years agoFix BZ #18084 -- backtrace (..., 0) dumps core on x86.
Paul Pluzhnikov [Sat, 15 Aug 2015 18:42:43 +0000 (11:42 -0700)]
Fix BZ #18084 -- backtrace (..., 0) dumps core on x86.
Other architectures also had bugs, or did unnecessary work.

9 years agostpncpy: fix bug number [BZ #18795]
Mike Frysinger [Sat, 15 Aug 2015 02:43:52 +0000 (22:43 -0400)]
stpncpy: fix bug number [BZ #18795]

The previous commit used 18975 instead of 18795.

9 years agostpncpy: fix size checking [BZ #18975]
Zack Weinberg [Fri, 14 Aug 2015 13:21:44 +0000 (09:21 -0400)]
stpncpy: fix size checking [BZ #18975]

I think the last clause of the conditional,

|| __n <= __bos (__dest)

may be backward.  The code should call the runtime-checking function
if __n is not constant, or if __n is known to be LARGER than the size
of the destination.

9 years agoFix fma spurious underflows (bug 18824).
Joseph Myers [Fri, 14 Aug 2015 17:15:06 +0000 (17:15 +0000)]
Fix fma spurious underflows (bug 18824).

Various fma implementations have logic that, when computing fma (x, y,
z) where z is large (so care needs taking to avoid internal overflow)
but x * y is small, scale x * y up instead of down to avoid internal
underflows resulting from scaling down.  (In these cases, x * y is
small enough that only its sign actually matters rather than the exact
value.)

The threshold for scaling up instead of down was correct for "if the
unscaled values were multiplied, the low part of the multiplication
could underflow", and the scaling was sufficient to ensure that the
low part of the multiplication did not underflow (given that cases of
very small x * y - less than half the least subnormal - were
previously dealt with).  However, the choice in the functions wasn't
between scaling up or no scaling, but between scaling up and scaling
down (scaling down actually being needed when x * y isn't so small
compared to z and so the exact value does matter).  Thus a larger
threshold is needed to ensure that scaling down doesn't produce values
the multiplication of whose low parts underflows.  This patch
increases the thresholds accordingly.

Tested for x86_64, x86 and mips64 (with the MIPS version of s_fmal.c
removed so that the ldbl-128 version gets tested instead of the
soft-fp one).

[BZ #18824]
* sysdeps/ieee754/dbl-64/s_fma.c (__fma): Increase threshold for
scaling x * y up instead of down.
* sysdeps/ieee754/ldbl-128/s_fmal.c (__fmal): Likewise.
* sysdeps/ieee754/ldbl-96/s_fmal.c (__fmal): Likewise.
* math/auto-libm-test-in: Add more tests of fma.
* math/auto-libm-test-out: Regenerated.

9 years agoRegenerated sysdeps/x86_64/fpu/libm-test-ulps with AVX2.
Paul Pluzhnikov [Fri, 14 Aug 2015 16:59:04 +0000 (09:59 -0700)]
Regenerated sysdeps/x86_64/fpu/libm-test-ulps with AVX2.

9 years agoRemove incorrect register mov in floorf/nearbyint on x86_64
Siddhesh Poyarekar [Fri, 14 Aug 2015 12:30:17 +0000 (05:30 -0700)]
Remove incorrect register mov in floorf/nearbyint on x86_64

The change in 0b5395f052ee09cd7e3d219af4e805c38058afb5 replaced calls
to __get_cpu_features@plt followed by a mov from rax to rdx, with a
single macro LOAD_RTLD_GLOBAL_RO_RDX.  It is pretty clear that there
was a typo in s_floorf and __nearbyint due to which the (now incorrect)
mov was not removed.  This patch removes that mov.

* sysdeps/x86_64/fpu/multiarch/s_floorf.S (__floorf): Remove
unnecessary movq.
* sysdeps/x86_64/fpu/multiarch/s_nearbyint.S (__nearbyint):
Likewise.

9 years agoAdd more random libm-test inputs.
Joseph Myers [Thu, 13 Aug 2015 23:23:23 +0000 (23:23 +0000)]
Add more random libm-test inputs.

This patch adds more test inputs to various libm functions found
through random generation to have larger ulps errors than previously
listed in libm-test-ulp, on at least one of x86_64 and x86.

Tested for x86_64 and x86.

* math/auto-libm-test-in: Add more tests of acos, acosh, asin,
asinh, atan, atan2, atanh, cabs, cbrt, cosh, csqrt, erf, erfc,
exp, exp2, lgamma, log, log1p, log2, pow, sin, sincos, tan, tanh
and tgamma.
* math/auto-libm-test-out: Regenerated.
* sysdeps/i386/fpu/libm-test-ulps: Update.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.

9 years agoFix tanh missing underflows (bug 16520).
Joseph Myers [Thu, 13 Aug 2015 16:40:39 +0000 (16:40 +0000)]
Fix tanh missing underflows (bug 16520).

Similar to various other bugs in this area, some tanh implementations
do not raise the underflow exception for subnormal arguments, when the
result is tiny and inexact.  This patch forces the exception in a
similar way to previous fixes.

Tested for x86_64, x86, mips64 and powerpc.

[BZ #16520]
* sysdeps/ieee754/dbl-64/s_tanh.c: Include <float.h>.
(__tanh): Force underflow exception for arguments with small
absolute value.
* sysdeps/ieee754/flt-32/s_tanhf.c: Include <float.h>.
(__tanhf): Force underflow exception for arguments with small
absolute value.
* sysdeps/ieee754/ldbl-128/s_tanhl.c: Include <float.h>.
(__tanhl): Force underflow exception for arguments with small
absolute value.
* sysdeps/ieee754/ldbl-128ibm/s_tanhl.c: Include <float.h>.
(__tanhl): Force underflow exception for arguments with small
absolute value.
* sysdeps/ieee754/ldbl-96/s_tanhl.c: Include <float.h>.
(__tanhl): Force underflow exception for arguments with small
absolute value.
* math/auto-libm-test-in: Add more tests of tanh.
* math/auto-libm-test-out: Regenerated.
* sysdeps/i386/fpu/libm-test-ulps: Update.

9 years agoCheck if cpuid is available in init_cpu_features
H.J. Lu [Thu, 13 Aug 2015 11:52:50 +0000 (04:52 -0700)]
Check if cpuid is available in init_cpu_features

Since not all i486 processors support cpuid, we call __get_cpuid_max to
check if cpuid is available before using it if not compiling for i586,
i686 nor x86-64.

* sysdeps/x86/cpu-features.c (init_cpu_features): Call
__get_cpuid_max if not compiling for i586, i686 nor x86-64.

9 years agoDon't include <cpuid.h> in elision-conf.h
H.J. Lu [Thu, 13 Aug 2015 10:46:13 +0000 (03:46 -0700)]
Don't include <cpuid.h> in elision-conf.h

Don't include the unused <cpuid.h> in Linux/x86 elision-conf.h.

* sysdeps/unix/sysv/linux/x86/elision-conf.h: Don't include
<cpuid.h>.