Commit Graph

4 Commits

Author SHA1 Message Date
Joseph Myers
bfff8b1bec Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Stefan Liebler
18d6c45e12 s390: Refactor ifunc resolvers due to false debuginfo.
This patch adjusts the s390 specific ifunc helper macros in ifunc-resolve.h to
use the common __ifunc macro, which uses gcc attribute ifunc to get rid of the
false debuginfo. Therefore the redirection construct is applied where needed.

Perhaps in future we can switch some of the internal symbols __GI_* from the
fallback variant to the ifunc function. But this change is not
straightforward due to a segmentation fault while linking libc.so with older
binutils on s390.

ChangeLog:

	[BZ #20478]
	* sysdeps/s390/multiarch/ifunc-resolve.h
	(s390_vx_libc_ifunc2, s390_libc_ifunc): Use __ifunc from libc-symbols.h
	to create ifunc symbols.
	(s390_vx_libc_ifunc_init, s390_vx_libc_ifunc_redirected
	, s390_vx_libc_ifunc2_redirected, s390_libc_ifunc_init): New define.
	* sysdeps/s390/multiarch/memchr.c: Redirect ifunced function in header
	for using it as type for ifunc function.
	* sysdeps/s390/multiarch/mempcpy.c: Likewise.
	* sysdeps/s390/multiarch/rawmemchr.c: Likewise.
	* sysdeps/s390/multiarch/stpcpy.c: Likewise.
	* sysdeps/s390/multiarch/stpncpy.c: Likewise.
	* sysdeps/s390/multiarch/strcat.c: Likewise.
	* sysdeps/s390/multiarch/strchr.c: Likewise.
	* sysdeps/s390/multiarch/strcmp.c: Likewise.
	* sysdeps/s390/multiarch/strcpy.c: Likewise.
	* sysdeps/s390/multiarch/strcspn.c: Likewise.
	* sysdeps/s390/multiarch/strlen.c: Likewise.
	* sysdeps/s390/multiarch/strncmp.c: Likewise.
	* sysdeps/s390/multiarch/strncpy.c: Likewise.
	* sysdeps/s390/multiarch/strnlen.c: Likewise.
	* sysdeps/s390/multiarch/strpbrk.c: Likewise.
	* sysdeps/s390/multiarch/strrchr.c: Likewise.
	* sysdeps/s390/multiarch/strspn.c: Likewise.
	* sysdeps/s390/multiarch/wcschr.c: Likewise.
	* sysdeps/s390/multiarch/wcscmp.c: Likewise.
	* sysdeps/s390/multiarch/wcspbrk.c: Likewise.
	* sysdeps/s390/multiarch/wcsspn.c: Likewise.
	* sysdeps/s390/multiarch/wmemchr.c: Likewise.
	* sysdeps/s390/multiarch/wmemset.c: Likewise.
	* sysdeps/s390/s390-32/multiarch/memcmp.c: Likewise.
	* sysdeps/s390/s390-32/multiarch/memcpy.c: Likewise.
	* sysdeps/s390/s390-32/multiarch/memset.c: Likewise.
	* sysdeps/s390/s390-64/multiarch/memcmp.c: Likewise.
	* sysdeps/s390/s390-64/multiarch/memcpy.c: Likewise.
	* sysdeps/s390/s390-64/multiarch/memset.c: Likewise.
2016-10-07 10:11:21 +02:00
Joseph Myers
f7a9f785e5 Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Stefan Liebler
31556246c3 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.
2015-08-26 10:26:18 +02:00