aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
AgeCommit message (Collapse)Author
2018-12-18S390: Refactor wcscpy ifunc handling.Stefan Liebler
The ifunc handling for wcscpy is adjusted in order to omit ifunc if the minimum architecture level already supports newer CPUs by default. Unfortunately the c ifunc variant can't be omitted at all as it is used by the z13 ifunc variant as fallback if the pointers are not 4-byte aligned. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcscpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcscpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcscpy. * sysdeps/s390/multiarch/wcscpy-c.c: Move to ... * sysdeps/s390/wcscpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcscpy-vx.S: Move to ... * sysdeps/s390/wcscpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcscpy.c: Move to ... * sysdeps/s390/wcscpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcscpy.h: New file.
2018-12-18S390: Refactor wcsnlen ifunc handling.Stefan Liebler
The ifunc handling for wcsnlen is adjusted in order to omit ifunc if the minimum architecture level already supports newer CPUs by default. Unfortunately the c ifunc variant can't be omitted at all as it is used by the z13 ifunc variant as fallback if the pointers are not 4-byte aligned. Glibc internal calls will use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcsnlen variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcsnlen variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcsnlen. * sysdeps/s390/multiarch/wcsnlen-c.c: Move to ... * sysdeps/s390/wcsnlen-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsnlen-vx.S: Move to ... * sysdeps/s390/wcsnlen-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcsnlen.c: Move to ... * sysdeps/s390/wcsnlen.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcsnlen.h: New file.
2018-12-18S390: Refactor wcslen ifunc handling.Stefan Liebler
The ifunc handling for wcslen is adjusted in order to omit ifunc if the minimum architecture level already supports newer CPUs by default. Unfortunately the c ifunc variant can't be omitted at all as it is used by the z13 ifunc variant as fallback if the pointers are not 4-byte aligned. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove wcslen variants. * sysdeps/s390/Makefile (sysdep_routines): Add wcslen variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for wcslen. * sysdeps/s390/multiarch/wcslen-c.c: Move to ... * sysdeps/s390/wcslen-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcslen-vx.S: Move to ... * sysdeps/s390/wcslen-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/wcslen.c: Move to ... * sysdeps/s390/wcslen.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-wcslen.h: New file.
2018-12-18S390: Refactor memrchr ifunc handling.Stefan Liebler
The ifunc handling for memrchr is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove memrchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add memrchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for memrchr. * sysdeps/s390/multiarch/memrchr-c.c: Move to ... * sysdeps/s390/memrchr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/memrchr-vx.S: Move to ... * sysdeps/s390/memrchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/memrchr.c: Move to ... * sysdeps/s390/memrchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-memrchr.h: New file.
2018-12-18S390: Refactor memccpy ifunc handling.Stefan Liebler
The ifunc handling for memccpy is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove memccpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add memccpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for memccpy. * sysdeps/s390/multiarch/memccpy-c.c: Move to ... * sysdeps/s390/memccpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/memccpy-vx.S: Move to ... * sysdeps/s390/memccpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/memccpy.c: Move to ... * sysdeps/s390/memccpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-memccpy.h: New file.
2018-12-18S390: Refactor rawmemchr ifunc handling.Stefan Liebler
The ifunc handling for rawmemchr is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove rawmemchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add rawmemchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for rawmemchr. * sysdeps/s390/multiarch/rawmemchr-c.c: Move to ... * sysdeps/s390/rawmemchr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/rawmemchr-vx.S: Move to ... * sysdeps/s390/rawmemchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/rawmemchr.c: Move to ... * sysdeps/s390/rawmemchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-rawmemchr.h: New file.
2018-12-18S390: Refactor memchr ifunc handling.Stefan Liebler
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-18S390: Refactor strcspn ifunc handling.Stefan Liebler
The ifunc handling for strcspn is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strcspn variants. * sysdeps/s390/Makefile (sysdep_routines): Add strcspn variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strcspn. * sysdeps/s390/multiarch/strcspn-c.c: Move to ... * sysdeps/s390/strcspn-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcspn-vx.S: Move to ... * sysdeps/s390/strcspn-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcspn.c: Move to ... * sysdeps/s390/strcspn.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strcspn.h: New file.
2018-12-18S390: Refactor strpbrk ifunc handling.Stefan Liebler
The ifunc handling for strpbrk is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strpbrk variants. * sysdeps/s390/Makefile (sysdep_routines): Add strpbrk variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strpbrk. * sysdeps/s390/multiarch/strpbrk-c.c: Move to ... * sysdeps/s390/strpbrk-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strpbrk-vx.S: Move to ... * sysdeps/s390/strpbrk-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strpbrk.c: Move to ... * sysdeps/s390/strpbrk.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strpbrk.h: New file.
2018-12-18S390: Refactor strspn ifunc handling.Stefan Liebler
The ifunc handling for strspn is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strspn variants. * sysdeps/s390/Makefile (sysdep_routines): Add strspn variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strspn. * sysdeps/s390/multiarch/strspn-c.c: Move to ... * sysdeps/s390/strspn-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strspn-vx.S: Move to ... * sysdeps/s390/strspn-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strspn.c: Move to ... * sysdeps/s390/strspn.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strspn.h: New file.
2018-12-18S390: Refactor strrchr ifunc handling.Stefan Liebler
The ifunc handling for strrchr is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strrchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add strrchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strrchr. * sysdeps/s390/multiarch/strrchr-c.c: Move to ... * sysdeps/s390/strrchr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strrchr-vx.S: Move to ... * sysdeps/s390/strrchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strrchr.c: Move to ... * sysdeps/s390/strrchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strrchr.h: New file.
2018-12-18S390: Refactor strchrnul ifunc handling.Stefan Liebler
The ifunc handling for strchrnul is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strchrnul variants. * sysdeps/s390/Makefile (sysdep_routines): Add strchrnul variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strchrnul. * sysdeps/s390/multiarch/strchrnul-c.c: Move to ... * sysdeps/s390/strchrnul-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strchrnul-vx.S: Move to ... * sysdeps/s390/strchrnul-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strchrnul.c: Move to ... * sysdeps/s390/strchrnul.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strchrnul.h: New file.
2018-12-18S390: Refactor strchr ifunc handling.Stefan Liebler
The ifunc handling for strchr is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strchr variants. * sysdeps/s390/Makefile (sysdep_routines): Add strchr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strchr. * sysdeps/s390/multiarch/strchr-c.c: Move to ... * sysdeps/s390/strchr-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strchr-vx.S: Move to ... * sysdeps/s390/strchr-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strchr.c: Move to ... * sysdeps/s390/strchr.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strchr.h: New file.
2018-12-18S390: Refactor strncmp ifunc handling.Stefan Liebler
The ifunc handling for strncmp is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strncmp variants. * sysdeps/s390/Makefile (sysdep_routines): Add strncmp variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strncmp. * sysdeps/s390/multiarch/strncmp-c.c: Move to ... * sysdeps/s390/strncmp-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strncmp-vx.S: Move to ... * sysdeps/s390/strncmp-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strncmp.c: Move to ... * sysdeps/s390/strncmp.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strncmp.h: New file.
2018-12-18S390: Refactor strcmp ifunc handling.Stefan Liebler
The ifunc handling for strcmp is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. Note: The fallback s390-32/s390-64 ifunc variants with clst instruction are now moved to the unified strcmp-z900.S file which can be used for 31/64bit. The s390-32/s390-64 files multiarch/strcmp.c and strcmp.S are deleted. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strcmp variants. * sysdeps/s390/Makefile (sysdep_routines): Add strcmp variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strcmp. * sysdeps/s390/multiarch/strcmp-vx.S: Move to ... * sysdeps/s390/strcmp-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcmp.c: Move to ... * sysdeps/s390/strcmp.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strcmp.h: New file. * sysdeps/s390/s390-64/strcmp.S: Move to ... * sysdeps/s390/strcmp-z900.S: ... here and adjust to be usable for 31/64bit and ifunc handling. * sysdeps/s390/s390-32/multiarch/strcmp.c: Delete file. * sysdeps/s390/s390-64/multiarch/strcmp.c: Likewise. * sysdeps/s390/s390-32/strcmp.S: Likewise.
2018-12-18S390: Refactor strncat ifunc handling.Stefan Liebler
The ifunc handling for strncat is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strncat variants. * sysdeps/s390/Makefile (sysdep_routines): Add strncat variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strncat. * sysdeps/s390/multiarch/strncat-c.c: Move to ... * sysdeps/s390/strncat-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strncat-vx.S: Move to ... * sysdeps/s390/strncat-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strncat.c: Move to ... * sysdeps/s390/strncat.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strncat.h: New file.
2018-12-18S390: Refactor strcat ifunc handling.Stefan Liebler
The ifunc handling for strcat is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strcat variants. * sysdeps/s390/Makefile (sysdep_routines): Add strcat variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strcat. * sysdeps/s390/multiarch/strcat-c.c: Move to ... * sysdeps/s390/strcat-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcat-vx.S: Move to ... * sysdeps/s390/strcat-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcat.c: Move to ... * sysdeps/s390/strcat.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strcat.h: New file.
2018-12-18S390: Refactor stpncpy ifunc handling.Stefan Liebler
The ifunc handling for stpncpy is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove stpncpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add stpncpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for stpncpy. * sysdeps/s390/multiarch/stpncpy-c.c: Move to ... * sysdeps/s390/stpncpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/stpncpy-vx.S: Move to ... * sysdeps/s390/stpncpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/stpncpy.c: Move to ... * sysdeps/s390/stpncpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-stpncpy.h: New file.
2018-12-18S390: Refactor strncpy ifunc handling.Stefan Liebler
The ifunc handling for strncpy is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. Note: The fallback s390-32/s390-64 ifunc variants are now moved to the strncpy-z900.S files. The s390-32/s390-64 files multiarch/strncpy.c and strncpy.S are deleted. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strncpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add strncpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strncpy. * sysdeps/s390/multiarch/strncpy-vx.S: Move to ... * sysdeps/s390/strncpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strncpy.c: Move to ... * sysdeps/s390/strncpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strncpy.h: New file. * sysdeps/s390/s390-64/strncpy.S: Move to ... * sysdeps/s390/s390-64/strncpy-z900.S: ... here and adjust ifunc handling. * sysdeps/s390/s390-32/strncpy.S: Move to ... * sysdeps/s390/s390-32/strncpy-z900.S: ... here and adjust ifunc handling. * sysdeps/s390/s390-32/multiarch/strncpy.c: Delete file. * sysdeps/s390/s390-64/multiarch/strncpy.c: Likewise.
2018-12-18S390: Refactor stpcpy ifunc handling.Stefan Liebler
The ifunc handling for stpcpy is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove stpcpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add stpcpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for stpcpy. * sysdeps/s390/multiarch/stpcpy-c.c: Move to ... * sysdeps/s390/stpcpy-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/stpcpy-vx.S: Move to ... * sysdeps/s390/stpcpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/stpcpy.c: Move to ... * sysdeps/s390/stpcpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-stpcpy.h: New file.
2018-12-18S390: Refactor strcpy ifunc handling.Stefan Liebler
The ifunc handling for strcpy is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. Note: The fallback s390-32/s390-64 ifunc variants with mvst instruction are now moved to the unified strcpy-z900.S file which can be used for 31/64bit. The s390-32/s390-64 files multiarch/strcpy.c and strcpy.S are deleted. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strcpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add strcpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strcpy. * sysdeps/s390/multiarch/strcpy-vx.S: Move to ... * sysdeps/s390/strcpy-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strcpy.c: Move to ... * sysdeps/s390/strcpy.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strcpy.h: New file. * sysdeps/s390/s390-64/strcpy.S: Move to ... * sysdeps/s390/strcpy-z900.S: ... here and adjust to be usable for 31/64bit and ifunc handling. * sysdeps/s390/s390-32/multiarch/strcpy.c: Delete file. * sysdeps/s390/s390-64/multiarch/strcpy.c: Likewise. * sysdeps/s390/s390-32/strcpy.S: Likewise.
2018-12-18S390: Refactor strnlen ifunc handling.Stefan Liebler
The ifunc handling for strnlen is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strnlen variants. * sysdeps/s390/Makefile (sysdep_routines): Add strnlen variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strnlen. * sysdeps/s390/multiarch/strnlen-c.c: Move to ... * sysdeps/s390/strnlen-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strnlen-vx.S: Move to ... * sysdeps/s390/strnlen-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strnlen.c: Move to ... * sysdeps/s390/strnlen.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strnlen.h: New file.
2018-12-18S390: Refactor strlen ifunc handling.Stefan Liebler
The ifunc handling for strlen is adjusted in order to omit ifunc variants if those will never be used as the minimum architecture level already supports newer CPUs by default. Glibc internal calls will then also use the "newer" ifunc variant. ChangeLog: * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove strlen variants. * sysdeps/s390/Makefile (sysdep_routines): Add strlen variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Refactor ifunc handling for strlen. * sysdeps/s390/multiarch/strlen-c.c: Move to ... * sysdeps/s390/strlen-c.c: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strlen-vx.S: Move to ... * sysdeps/s390/strlen-vx.S: ... here and adjust ifunc handling. * sysdeps/s390/multiarch/strlen.c: Move to ... * sysdeps/s390/strlen.c: ... here and adjust ifunc handling. * sysdeps/s390/ifunc-strlen.h: New file.
2018-12-18S390: Add z13 memmem ifunc variant.Stefan Liebler
The new vector variant of memmem is using the common code implementation, but instead of calling the default mem* functions, the vector variants are called. ChangeLog: * sysdeps/s390/Makefile (sysdep_routines): Add memmem variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add ifunc variants for memmem. * sysdeps/s390/ifunc-memmem.h: New file. * sysdeps/s390/memmem.c: Likewise. * sysdeps/s390/memmem-c.c: Likewise. * sysdeps/s390/memmem-vx.c: Likewise.
2018-12-18S390: Add z13 strstr ifunc variant.Stefan Liebler
The new vector variant of strstr is using the common code implementation, but instead of calling the default str* / mem* functions, the vector variants are called. ChangeLog: * sysdeps/s390/Makefile (sysdep_routines): Add strstr variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add ifunc variants for strstr. * sysdeps/s390/ifunc-strstr.h: New file. * sysdeps/s390/strstr.c: Likewise. * sysdeps/s390/strstr-c.c: Likewise. * sysdeps/s390/strstr-vx.c: Likewise.
2018-12-18S390: Add z13 memmove ifunc variant.Stefan Liebler
This patch introduces a z13 specific ifunc variant for memmove. As the common code implementation, it checks if we can copy from the beginning to the end - with z196 memcpy implementation - or if we have to copy from the end to the beginning. The latter case is done by using vector load/store instructions. If vector instructions are not available, the common-code is used as fallback. Therefore it is implemented in memmove-c with a different name. Furthermore the ifunc logic decides if we need the common-code implementation at all. If vector instructions are supported due to the minimum architecture level set we can skip the common-code ifunc variant. ChangeLog: * sysdeps/s390/Makefile (sysdep_routines): Add memmove-c. * sysdeps/s390/ifunc-memcpy.h (HAVE_MEMMOVE_IFUNC, HAVE_MEMMOVE_IFUNC_AND_VX_SUPPORT, MEMMOVE_DEFAULT, HAVE_MEMMOVE_C, MEMMOVE_C, HAVE_MEMMOVE_Z13, MEMMOVE_Z13): New defines. * sysdeps/s390/memcpy-z900.S: Add z13 memmove implementation. * sysdeps/s390/memmove-c.c: New file. * sysdeps/s390/memmove.c: Likewise. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add ifunc variants for memmove.
2018-12-18S390: Add configure check to detect z13 as mininum architecture level set.Stefan Liebler
Add a configure check for z13 in the same way as done for z196. ChangeLog: * config.h.in (HAVE_S390_MIN_Z13_ZARCH_ASM_SUPPORT): New undefine. * sysdeps/s390/configure.ac: Add check for z13 support. * sysdeps/s390/configure: Regenerated.
2018-12-18S390: Use memcpy for forward cases in memmove.Stefan Liebler
The s390/s390x memcpy implementations are safe to be used by memmove. Starting with this commit, memmove is using memcpy for the forward cases on s390. ChangeLog: * sysdeps/s390/memcopy.h: New file.
2018-12-18S390: Remove s390 specific implementation of bcopy.Stefan Liebler
Nowadays gcc is automatically replacing a call to bcopy with a call to memmove. Thus only old binaries will call the s390 specific bcopy implementation. The s390 specific implementation is using an own implementation for memcpy in the forward case and is relying on memmove in the backward case. After removing the s390 specific bcopy, the common code bcopy is used. It just performs a tail call to memmove. ChangeLog: * sysdeps/s390/s390-32/bcopy.S: Remove. * sysdeps/s390/s390-64/bcopy.S: Likewise.
2018-12-18S390: Refactor memcpy/mempcpy ifunc handling.Stefan Liebler
This patch moves all ifunc variants for memcpy/mempcpy to sysdeps/s390/memcpy-z900.S. The configure-check/preprocessor logic in sysdeps/s390/ifunc-memcpy.h decides if ifunc is needed at all and which ifunc variants should be available. E.g. if the compiler/assembler already supports z196 by default, the older ifunc variants are not included. If we only need the newest ifunc variant, then we can skip ifunc at all. Therefore the ifunc-resolvers and __libc_ifunc_impl_list are adjusted in order to handle only the available ifunc variants. ChangeLog: * sysdeps/s390/ifunc-memcpy.h: New File. * sysdeps/s390/memcpy.S: Move to ... * sysdeps/s390/memcpy-z900.S ... here. Move implementations from memcpy-s390x.s to here. * sysdeps/s390/multiarch/memcpy-s390x.S: Delete File. * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove memcpy/mempcpy variants. * sysdeps/s390/Makefile (sysdep_routines): Add memcpy/mempcpy variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Adjust ifunc variants for memcpy and mempcpy. * sysdeps/s390/multiarch/memcpy.c: Move ifunc resolver to ... * sysdeps/s390/memcpy.c: ... here. Adjust ifunc variants for memcpy. * sysdeps/s390/multiarch/mempcpy.c: Move to ... * sysdeps/s390/mempcpy.c: ... here. Adjust ifunc variants for mempcpy. * sysdeps/s390/mempcpy.S: Delete file.
2018-12-18S390: Unify 31/64bit memcpy.Stefan Liebler
The implementation of memcpy/mempcpy for s390-32 (31bit) and s390-64 (64bit) is nearly the same. This patch unifies it for maintability reasons. __mem[p]cpy_z10 and __mem[p]cpy_z196 differs between 31 and 64bit: -31bit needs .machinemode "zarch_nohighgprs" and llgfr %r4,%r4 -lr vs lgr; lgr can be also used on 31bit as this ifunc variant is only called if we are on a zarch machine. __mem[p]cpy_default differs between 31 and 64bit: -Some 31bit vs 64bit instructions (e.g. ltr vs ltgr. Solved with 31/64 specific instruction macros). -The address of mvc instruction is setup in different ways (larl vs bras). Solved with #if defined __s390x__. __memcpy_mvcle differs between 31 and 64bit: -lr vs lgr; ahi vs aghi; Solved with 31/64bit specific instruction macros. Otherwise 31/64bit implementation has the same structure of the code. ChangeLog: * sysdeps/s390/s390-64/memcpy.S: Move to ... * sysdeps/s390/memcpy.S: ... here. Adjust to be usable for 31/64bit. * sysdeps/s390/s390-32/memcpy.S: Delete File. * sysdeps/s390/multiarch/Makefile (sysdep_routines): Add memcpy. * sysdeps/s390/s390-32/multiarch/Makefile: Delete file. * sysdeps/s390/s390-64/multiarch/Makefile: Likewise. * sysdeps/s390/s390-64/multiarch/memcpy-s390x.S: Move to ... * sysdeps/s390/multiarch/memcpy-s390x.S: ... here. Adjust to be usable for 31/64bit. * sysdeps/s390/s390-32/multiarch/memcpy-s390.S: Delete File. * sysdeps/s390/s390-64/multiarch/memcpy.c: Move to ... * sysdeps/s390/multiarch/memcpy.c: ... here. * sysdeps/s390/s390-32/multiarch/memcpy.c: Delete File.
2018-12-18S390: Refactor memcmp ifunc handling.Stefan Liebler
This patch moves all ifunc variants for memcmp to sysdeps/s390/memcmp-z900.S. The configure-check/preprocessor logic in sysdeps/s390/ifunc-memcmp.h decides if ifunc is needed at all and which ifunc variants should be available. E.g. if the compiler/assembler already supports z196 by default, the older ifunc variants are not included. If we only need the newest ifunc variant, then we can skip ifunc at all. Therefore the ifunc-resolvers and __libc_ifunc_impl_list are adjusted in order to handle only the available ifunc variants. ChangeLog: * sysdeps/s390/ifunc-memcmp.h: New File. * sysdeps/s390/memcmp.S: Move to ... * sysdeps/s390/memcmp-z900.S ... here. Move implementations from memcmp-s390x.s to here. * sysdeps/s390/multiarch/memcmp-s390x.S: Delete File. * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove memcmp variants. * sysdeps/s390/Makefile (sysdep_routines): Add memcmp variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Adjust ifunc variants for memcmp. * sysdeps/s390/multiarch/memcmp.c: Move ifunc resolver to ... * sysdeps/s390/memcmp.c: ... here. Adjust ifunc variants for memcmp.
2018-12-18S390: Unify 31/64bit memcmp.Stefan Liebler
The implementation of memcmp for s390-32 (31bit) and s390-64 (64bit) is nearly the same. This patch unifies it for maintability reasons. __memcmp_z10 and __memcmp_z196 differs between 31 and 64bit: -31bit needs .machinemode "zarch_nohighgprs" and llgfr %r4,%r4 -lr vs lgr and some other instructions: But lgr and co can be also used on 31bit as this ifunc variant is only called if we are on a zarch machine. __memcmp_default differs between 31 and 64bit: -Some 31bit vs 64bit instructions (e.g. ltr vs ltgr. Solved with 31/64 specific instruction macros). -The address of mvc instruction is setup in different ways (larl vs bras). Solved with #if defined __s390x__. Otherwise 31/64bit implementation has the same structure of the code. ChangeLog: * sysdeps/s390/s390-64/memcmp.S: Move to ... * sysdeps/s390/memcmp.S: ... here. Adjust to be usable for 31/64bit. * sysdeps/s390/s390-32/memcmp.S: Delete File. * sysdeps/s390/multiarch/Makefile (sysdep_routines): Add memcmp. * sysdeps/s390/s390-32/multiarch/Makefile (sysdep_routines): Remove memcmp. * sysdeps/s390/s390-64/multiarch/Makefile: Likewise. * sysdeps/s390/s390-64/multiarch/memcmp-s390x.S: Move to ... * sysdeps/s390/multiarch/memcmp-s390x.S: ... here. Adjust to be usable for 31/64bit. * sysdeps/s390/s390-32/multiarch/memcmp-s390.S: Delete File. * sysdeps/s390/s390-64/multiarch/memcmp.c: Move to ... * sysdeps/s390/multiarch/memcmp.c: ... here. * sysdeps/s390/s390-32/multiarch/memcmp.c: Delete File.
2018-12-18S390: Implement bzero with memset.Stefan Liebler
This patch removes the bzero s390 implementation with mvcle and adds entry points for bzero in memset ifunc variants. Therefore an ifunc resolver is implemented for bzero, too. ChangeLog: * sysdeps/s390/s390-32/bzero.S: Delete file. * sysdeps/s390/s390-64/bzero.S: Likewise. * sysdeps/s390/Makefile (sysdep_routines): Add bzero. * sysdeps/s390/bzero.c: New file. * sysdeps/s390/memset-z900.S: Add bzero entry points. * sysdeps/s390/ifunc-memset.h: Add bzero function macros. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add bzero ifunc variants.
2018-12-18S390: Refactor memset ifunc handling.Stefan Liebler
This patch moves all ifunc variants for memset to sysdeps/s390/memset-z900.S. The configure-check/preprocessor logic in sysdeps/s390/ifunc-memset.h decides if ifunc is needed at all and which ifunc variants should be available. E.g. if the compiler/assembler already supports z196 by default, the older ifunc variants are not included. If we only need the newest ifunc variant, then we can skip ifunc at all. Therefore the ifunc-resolvers and __libc_ifunc_impl_list are adjusted in order to handle only the available ifunc variants. ChangeLog: * sysdeps/s390/ifunc-memset.h: New File. * sysdeps/s390/memset.S: Move to ... * sysdeps/s390/memset-z900.S ... here. Move implementations from memset-s390x.s to here. * sysdeps/s390/multiarch/memset-s390x.S: Delete File. * sysdeps/s390/multiarch/Makefile (sysdep_routines): Remove memset variants. * sysdeps/s390/Makefile (sysdep_routines): Add memset variants. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Adjust ifunc variants for memset. * sysdeps/s390/multiarch/memset.c: Move ifunc resolver to ... * sysdeps/s390/memset.c: ... here. Adjust ifunc variants for memset.
2018-12-18S390: Unify 31/64bit memset.Stefan Liebler
The implementation of memset for s390-32 (31bit) and s390-64 (64bit) is nearly the same. This patch unifies it for maintability reasons. __memset_z10 and __memset_z196 differs between 31 and 64bit: -31bit needs .machinemode "zarch_nohighgprs" and llgfr %r4,%r4 -lr vs lgr and some other instructions: But lgr and co can be also used on 31bit as this ifunc variant is only called if we are on a zarch machine. __memset_default differs between 31 and 64bit: -Some 31bit vs 64bit instructions (e.g. ltr vs ltgr. Solved with 31/64 specific instruction macros). -The address of mvc instruction is setup in different ways (larl vs bras). Solved with #if defined __s390x__. Otherwise 31/64bit implementation has the same structure of the code. ChangeLog: * sysdeps/s390/s390-64/memset.S: Move to ... * sysdeps/s390/memset.S: ... here. Adjust to be usable for 31/64bit. * sysdeps/s390/s390-32/memset.S: Delete File. * sysdeps/s390/multiarch/Makefile (sysdep_routines): Add memset. * sysdeps/s390/s390-32/multiarch/Makefile (sysdep_routines): Remove memset. * sysdeps/s390/s390-64/multiarch/Makefile: Likewise. * sysdeps/s390/s390-64/multiarch/memset-s390x.S: Move to ... * sysdeps/s390/multiarch/memset-s390x.S: ... here. Adjust to be usable for 31/64bit. * sysdeps/s390/s390-32/multiarch/memset-s390.S: Delete File. * sysdeps/s390/s390-64/multiarch/memset.c: Move to ... * sysdeps/s390/multiarch/memset.c: ... here. * sysdeps/s390/s390-32/multiarch/memset.c: Delete File.
2018-12-18S390: Use hwcap instead of dl_hwcap in ifunc-resolvers.Stefan Liebler
The renaming of hwcap arguments in ifunc-resolvers is needed in order to prepare for further commits which refactors ifunc handling for memset, memcmp, and memcpy. Now you are able to use s390_libc_ifunc_init which stores the stfle bits within the expression for an ifunc-resolver generated by s390_libc_ifunc_expr. ChangeLog: * sysdeps/s390/multiarch/ifunc-resolve.h (s390_libc_ifunc_init, s390_libc_ifunc, s390_vx_libc_ifunc2_redirected): Use hwcap instead of dl_hwcap.
2018-12-18S390: Add configure check to detect z10 as mininum architecture level set.Stefan Liebler
Add a configure check for z10 in the same way as done for z196. ChangeLog: * config.h.in (HAVE_S390_MIN_Z10_ZARCH_ASM_SUPPORT): New undefine. * sysdeps/s390/configure.ac: Add check for z10 support. * sysdeps/s390/configure: Regenerated.
2018-12-18x86: Merge i386/x86_64 atomic-machine.hH.J. Lu
Merge i386 and x86_64 atomic-machine.h to x86 atomic-machine.h. Tested on i686 and x86_64 as well as with build-many-glibcs.py. * sysdeps/i386/atomic-machine.h: Merged with ... * sysdeps/x86_64/atomic-machine.h: To ... * sysdeps/x86/atomic-machine.h: This. New file.
2018-12-17Do not clobber r12 for ia64 syscalls.Joseph Myers
GCC mainline now gives errors for an asm that clobbers the stack pointer. According to <https://gcc.gnu.org/ml/gcc-patches/2018-12/msg00932.html> GCC previously ignored such a clobber; thus, this patch removes it from the clobbers for ia64 syscalls. Tested with build-many-glibcs.py for ia64-linux-gnu. * sysdeps/unix/sysv/linux/ia64/sysdep.h (ASM_CLOBBERS_6_COMMON): Do not clobber r12.
2018-12-17Add test that MAP_* constants agree with kernel.Joseph Myers
Continuing the process of building up and using Python infrastructure for extracting and using values in headers, this patch adds a test that MAP_* constants from sys/mman.h agree with those in the Linux kernel headers. (Other sys/mman.h constants could be added to the test separately.) This set of constants has grown over time, so the generic code is enhanced to allow saying extra constants are OK on either side of the comparison (where the caller sets those parameters based on the Linux kernel headers version, compared with the version the headers were last updated from). Although the test is a custom Python file, my intention is to move in future to a single Python script for such tests and text files it takes as inputs, once there are enough examples to provide a guide to the common cases in such tests (I'd like to end up with most or all such sets of constants copied from kernel headers having such tests, and likewise for structure layouts from the kernel). The Makefile code is essentially the same as for tst-signal-numbers, but I didn't try to find an object file to depend on to represent the dependency on the headers used by the test (the conform/ tests don't try to represent such header dependencies at all, for example). Tested with build-many-glibcs.py, and also for x86_64 with older kernel headers. * scripts/glibcextract.py (compare_macro_consts): Take parameters to allow extra macros from first or second sources. * sysdeps/unix/sysv/linux/tst-mman-consts.py: New file. * sysdeps/unix/sysv/linux/Makefile [$(subdir) = misc] (tests-special): Add $(objpfx)tst-mman-consts.out. ($(objpfx)tst-mman-consts.out): New makefile target.
2018-12-17Add statx conditionals for wordsize-32 *xstat.cMao Han
Linux kernel have remove stat64 family from default syscall set, new implementations with statx is needed when __ARCH_WANT_STAT64 is not define. This patch add conditionals for relevant functions, using statx system call to get information and then copy to the return buf, ref to include/linux/fs.h from linux kernel. * sysdeps/unix/sysv/linux/Makefile: Add statx_cp.c. * sysdeps/unix/sysv/linux/fxstat64.c: Add conditionals for kernel without stat64 system call support. * sysdeps/unix/sysv/linux/fxstatat64.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c: Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/statx_cp.c: New file. * sysdeps/unix/sysv/linux/statx_cp.c: Likewise. * sysdeps/unix/sysv/linux/statx_cp.h: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/statx_cp.c: Likewise.
2018-12-14Remove x86 mathinline.h asinh, acosh, atanh inlines.Joseph Myers
Continuing the removal of bits/mathinline.h inlines that would better be done by the compiler, this patch removes x86 inlines for asinh, acosh and atanh functions (only for fast-math, non-SSE 32-bit x86). I've filed <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88502> for adding such inlines as an optimization in GCC. Tested for x86_64 and x86. * sysdeps/x86/fpu/bits/mathinline.h (asinh): Remove inline definition. (acosh): Likewise. (atanh): Likewise.
2018-12-13Do not clobber sp in _hurd_stack_setup.Joseph Myers
GCC mainline now gives errors for an asm that clobbers the stack pointer. According to <https://gcc.gnu.org/ml/gcc-patches/2018-12/msg00932.html> GCC previously ignored such a clobber; thus, this patch removes it from _hurd_stack_setup. Tested with build-many-glibcs.py for i686-gnu. * sysdeps/mach/hurd/i386/init-first.c (_hurd_stack_setup): Do not clobber sp.
2018-12-13x86: Add Hygon Dhyana support.Carlos O'Donell
This patch fix Hygon Dhyana processor CPU Vendor ID detection problem in glibc sysdep module, current glibc codes doesn't recognize Dhyana CPU Vendor ID("HygonGenuine") and set kind to arch_kind_other, which result to incorrect zero value for __cache_sysconf() syscall. As Hygon Dhyana share most architecture feature as AMD Family 17h, this patch add Hygon CPU Vendor ID check and setup kind to arch_kind_amd and reuse AMD code path, which lead to correct return value in __cache_sysconf() syscall. we run the glibc test suite for both Hygon Dhyana and AMD EPYC and found no failure case. Background: Chengdu Haiguang IC Design Co., Ltd (Hygon) is a Joint Venture between AMD and Haiguang Information Technology Co.,Ltd., aims at providing high performance x86 processor for China server market. Its first generation processor codename is Dhyana, which originates from AMD technology and shares most of the architecture with AMD's family 17h, but with different CPU Vendor ID("HygonGenuine")/Family series number(Family 18h). Related Hygon kernel patch can be found on http://lkml.kernel.org/r/5ce86123a7b9dad925ac583d88d2f921040e859b.1538583282.git.puwen@hygon.cn Signed-off-by: fanjinke <fanjinke@hygon.cn> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2018-12-12Remove x86 mathinline.h hypot inline.Joseph Myers
Continuing the removal of bits/mathinline.h inlines that would better be done by the compiler, this patch removes an x86 inline for hypot functions (only for fast-math, only for non-SSE 32-bit x86). I've filed <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88474> for adding such an inline as an optimization in GCC. Tested for x86_64 and x86. * sysdeps/x86/fpu/bits/mathinline.h (hypot): Remove inline definition.
2018-12-12timespec_get (posix): Fix copyright headerFlorian Weimer
The “any later version” clause was missing. This change was approved in principle by the FSF in RT ticket #1316403. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2018-12-12powerpc: Add missing CFI register information (bug #23614)Tulio Magno Quites Machado Filho
Add CFI information about the offset of registers stored in the stack frame. [BZ #23614] * sysdeps/powerpc/powerpc64/addmul_1.S (FUNC): Add CFI offset for registers saved in the stack frame. * sysdeps/powerpc/powerpc64/lshift.S (__mpn_lshift): Likewise. * sysdeps/powerpc/powerpc64/mul_1.S (__mpn_mul_1): Likewise. Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com> Reviewed-by: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
2018-12-11Fix powf overflow handling in non-nearest rounding mode [BZ #23961]Szabolcs Nagy
The threshold value at which powf overflows depends on the rounding mode and the current check did not take this into account. So when the result was rounded away from zero it could become infinity without setting errno to ERANGE. Example: pow(0x1.7ac7cp+5, 23) is 0x1.fffffep+127 + 0.1633ulp If the result goes above 0x1.fffffep+127 + 0.5ulp then errno is set, which is fine in nearest rounding mode, but powf(0x1.7ac7cp+5, 23) is inf in upward rounding mode powf(-0x1.7ac7cp+5, 23) is -inf in downward rounding mode and the previous implementation did not set errno in these cases. The fix tries to avoid affecting the common code path or calling a function that may introduce a stack frame, so float arithmetics is used to check the rounding mode and the threshold is selected accordingly. [BZ #23961] * math/auto-libm-test-in: Add new test case. * math/auto-libm-test-out-pow: Regenerated. * sysdeps/ieee754/flt-32/e_powf.c (__powf): Fix overflow check.
2018-12-10Move tst-signal-numbers to Python.Joseph Myers
This patch converts the tst-signal-numbers test from shell + awk to Python. As with gen-as-const, the point is not so much that shell and awk are problematic for this code, as that it's useful to build up general infrastructure in Python for use of a range of code involving extracting values from C headers. This patch moves some code from gen-as-const.py to a new glibcextract.py, which also gains functions relating to listing macros, and comparing the values of a set of macros from compiling two different pieces of code. It's not just signal numbers that should have such tests; pretty much any case where glibc copies constants from Linux kernel headers should have such tests that the values and sets of constants agree except where differences are known to be OK. Much the same also applies to structure layouts (although testing those without hardcoding lists of fields to test will be more complicated). Given this patch, another test for a set of macros would essentially be just a call to glibcextract.compare_macro_consts (plus boilerplate code - and we could move to having separate text files defining such tests, like the .sym inputs to gen-as-const, so that only a single Python script is needed for most such tests). Some such tests would of course need new features, e.g. where the set of macros changes in new kernel versions (so you need to allow new macro names on the kernel side if the kernel headers are newer than the version known to glibc, and extra macros on the glibc side if the kernel headers are older). tst-syscall-list.sh could become a Python script that uses common code to generate lists of macros but does other things with its own custom logic. There are a few differences from the existing shell + awk test. Because the new test evaluates constants using the compiler, no special handling is needed any more for one signal name being defined to another. Because asm/signal.h now needs to pass through the compiler, not just the preprocessor, stddef.h is included as well (given the asm/signal.h issue that it requires an externally provided definition of size_t). The previous code defined __ASSEMBLER__ with asm/signal.h; this is removed (__ASSEMBLY__, a different macro, eliminates the requirement for stddef.h on some but not all architectures). Tested for x86_64, and with build-many-glibcs.py. * scripts/glibcextract.py: New file. * scripts/gen-as-const.py: Do not import os.path, re, subprocess or tempfile. Import glibcexctract. (compute_c_consts): Remove. Moved to glibcextract.py. (gen_test): Update reference to compute_c_consts. (main): Likewise. * sysdeps/unix/sysv/linux/tst-signal-numbers.py: New file. * sysdeps/unix/sysv/linux/tst-signal-numbers.sh: Remove. * sysdeps/unix/sysv/linux/Makefile ($(objpfx)tst-signal-numbers.out): Use tst-signal-numbers.py. Redirect stderr as well as stdout.