]> sourceware.org Git - glibc.git/commit
S390: Do not call memcpy, memcmp, memset within libc.so via ifunc-plt.
authorStefan Liebler <stli@linux.vnet.ibm.com>
Tue, 24 May 2016 08:39:13 +0000 (10:39 +0200)
committerStefan Liebler <stli@linux.vnet.ibm.com>
Tue, 24 May 2016 08:39:13 +0000 (10:39 +0200)
commit71655832555411915d157b17253c8ffe0848533a
treed1adce32bdf4c1a431d1e40ea5d92cd0eece8335
parent074b0f27d9b9cdfb58c5c7e7f4129546084582b2
S390: Do not call memcpy, memcmp, memset within libc.so via ifunc-plt.

On s390, the memcpy, memcmp, memset functions are IFUNC symbols,
which are created with s390_libc_ifunc-macro.
This macro creates a __GI_ symbol which is set to the
ifunced symbol. Thus calls within libc.so to e.g. memcpy
result in a call to *ABS*+0x954c0@plt stub and afterwards
to the resolved memcpy-ifunc-variant.

This patch sets the __GI_ symbol to the default-ifunc-variant
to avoid the plt call. The __GI_ symbols are now created at the
default variant of ifunced function.

ChangeLog:

* sysdeps/s390/multiarch/ifunc-resolve.h (s390_libc_ifunc):
Remove __GI_ symbol.
* sysdeps/s390/s390-32/multiarch/memcmp-s390.S: Add __GI_memcmp symbol.
* sysdeps/s390/s390-64/multiarch/memcmp-s390x.S: Likewise.
* sysdeps/s390/s390-32/multiarch/memcpy-s390.S: Add __GI_memcpy symbol.
* sysdeps/s390/s390-64/multiarch/memcpy-s390x.S: Likewise.
* sysdeps/s390/s390-32/multiarch/memset-s390.S: Add __GI_memset symbol.
* sysdeps/s390/s390-64/multiarch/memset-s390x.S: Likewise.
ChangeLog
sysdeps/s390/multiarch/ifunc-resolve.h
sysdeps/s390/s390-32/multiarch/memcmp-s390.S
sysdeps/s390/s390-32/multiarch/memcpy-s390.S
sysdeps/s390/s390-32/multiarch/memset-s390.S
sysdeps/s390/s390-64/multiarch/memcmp-s390x.S
sysdeps/s390/s390-64/multiarch/memcpy-s390x.S
sysdeps/s390/s390-64/multiarch/memset-s390x.S
This page took 0.045933 seconds and 5 git commands to generate.