arm: Implement memcpy ifunc selection in C
commit802c1f1645d626c1297246d62f5586734686a128
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 4 Oct 2017 20:44:08 +0000 (4 17:44 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 6 Nov 2017 19:37:57 +0000 (6 17:37 -0200)
treec0ef0545b4d9382385f2242d3f86ae9fbd1bcda6
parentabcb584d0eae7270b35e1b3fed1f9661e26b8be0
arm: Implement memcpy ifunc selection in C

This patch refactor ARM memcpy ifunc selector to a C implementation.
No functional change is expected, including ifunc resolution rules.

It also adds some cleanup:

  - Internal memcpy hidden definition (__GI_memcpy) is now a hidden
    symbol.

  - No need to create hidden definition for the ifunc variants.

Checked on armv7-linux-gnueabihf and with a build for arm-linux-gnueabi,
arm-linux-gnueabihf with and without multiarch support and with both
GCC 7.1 and GCC mainline.  I also checked with the some possible
multiarch different configurations that trigger different memcpy
buids (__ARM_NEON__ && !__SOFT_FP__, !__ARM_NEON__ && !__SOFT_FP__, and
!__ARM_NEON__ && __SOFT_FP__).

* sysdeps/arm/arm-ifunc.h: New file.
* sysdeps/arm/armv7/multiarch/ifunc-memcpy.h: Likewise.
* sysdeps/arm/armv7/multiarch/memcpy.c: Likewise.
* sysdeps/arm/armv7/multiarch/memcpy_arm.S: Likewise.
* sysdeps/arm/armv7/multiarch/rtld-memcpy.S: Likewise.
* sysdeps/arm/armv7/multiarch/memcpy_neon.S [!__ARM_NEON__]
(__memcpy_neon): Avoid create hidden alias.
* sysdeps/arm/armv7/multiarch/memcpy_vfp.S [!__ARM_NEON_]
(__memcpy_vfp): Likewise.
* sysdeps/arm/armv7/multiarch/Makefile [$(subdir) = string]
(sysdep_routines): Add memcpy_arm.
* sysdeps/arm/armv7/multiarch/memcpy.S: Remove file.

Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
ChangeLog
sysdeps/arm/arm-ifunc.h [new file with mode: 0644]
sysdeps/arm/armv7/multiarch/Makefile
sysdeps/arm/armv7/multiarch/ifunc-memcpy.h [new file with mode: 0644]
sysdeps/arm/armv7/multiarch/memcpy.S [deleted file]
sysdeps/arm/armv7/multiarch/memcpy.c [new file with mode: 0644]
sysdeps/arm/armv7/multiarch/memcpy_arm.S [new file with mode: 0644]
sysdeps/arm/armv7/multiarch/memcpy_neon.S
sysdeps/arm/armv7/multiarch/memcpy_vfp.S
sysdeps/arm/armv7/multiarch/rtld-memcpy.S [new file with mode: 0644]