S390: Refactor ifunc implementations and enable ifunc-test-framework.
commit31556246c3ac168a2dfec8f9036d913765bbb73d
authorStefan Liebler <stli@linux.vnet.ibm.com>
Wed, 26 Aug 2015 08:26:18 +0000 (26 10:26 +0200)
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Wed, 26 Aug 2015 08:26:18 +0000 (26 10:26 +0200)
tree217d34f9332e91ba25f71d3725e752a4bf69ef0e
parent5d96fe8c0dc3450bafe6c2aae2dabc76819df3e0
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.
24 files changed:
ChangeLog
sysdeps/s390/multiarch/ifunc-impl-list.c [new file with mode: 0644]
sysdeps/s390/multiarch/ifunc-resolve.h [moved from sysdeps/s390/s390-32/multiarch/ifunc-resolve.c with 59% similarity]
sysdeps/s390/s390-32/memcmp.S
sysdeps/s390/s390-32/memcpy.S
sysdeps/s390/s390-32/memset.S
sysdeps/s390/s390-32/multiarch/Makefile
sysdeps/s390/s390-32/multiarch/memcmp-s390.S [moved from sysdeps/s390/s390-32/multiarch/memcmp.S with 54% similarity]
sysdeps/s390/s390-32/multiarch/memcmp.c [new file with mode: 0644]
sysdeps/s390/s390-32/multiarch/memcpy-s390.S [moved from sysdeps/s390/s390-32/multiarch/memcpy.S with 55% similarity]
sysdeps/s390/s390-32/multiarch/memcpy.c [new file with mode: 0644]
sysdeps/s390/s390-32/multiarch/memset-s390.S [moved from sysdeps/s390/s390-32/multiarch/memset.S with 67% similarity]
sysdeps/s390/s390-32/multiarch/memset.c [new file with mode: 0644]
sysdeps/s390/s390-64/memcmp.S
sysdeps/s390/s390-64/memcpy.S
sysdeps/s390/s390-64/memset.S
sysdeps/s390/s390-64/multiarch/Makefile
sysdeps/s390/s390-64/multiarch/ifunc-resolve.c [deleted file]
sysdeps/s390/s390-64/multiarch/memcmp-s390x.S [moved from sysdeps/s390/s390-64/multiarch/memcmp.S with 53% similarity]
sysdeps/s390/s390-64/multiarch/memcmp.c [new file with mode: 0644]
sysdeps/s390/s390-64/multiarch/memcpy-s390x.S [moved from sysdeps/s390/s390-64/multiarch/memcpy.S with 54% similarity]
sysdeps/s390/s390-64/multiarch/memcpy.c [new file with mode: 0644]
sysdeps/s390/s390-64/multiarch/memset-s390x.S [moved from sysdeps/s390/s390-64/multiarch/memset.S with 66% similarity]
sysdeps/s390/s390-64/multiarch/memset.c [new file with mode: 0644]