aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-06-14 12:10:57 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-06-14 12:11:10 -0700
commit5c3e322d3be3803636e38bcaf083fb59b3a34f0c (patch)
treec28fc5c42069960659ebff1bffd1d0e71f4adcfd /ChangeLog
parent69052a3a95da37169a08f9e59b2cc1808312753c (diff)
downloadglibc-5c3e322d3be3803636e38bcaf083fb59b3a34f0c.zip
glibc-5c3e322d3be3803636e38bcaf083fb59b3a34f0c.tar.gz
glibc-5c3e322d3be3803636e38bcaf083fb59b3a34f0c.tar.bz2
x86-64: Implement memmove family IFUNC selectors in C
Implement memmove family IFUNC selectors in C. All internal calls within libc.so can use IFUNC on x86-64 since unlike x86, x86-64 supports PC-relative addressing to access the GOT entry so that it can call via PLT without using an extra register. For libc.a, we can't use IFUNC for functions which are called before IFUNC has been initialized. Use IFUNC internally reduces the icache footprint since libc.so and other codes in the process use the same implementations. This patch uses IFUNC for memmove family functions within libc. * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add memmove-sse2-unaligned-erms, memcpy_chk-nonshared, mempcpy_chk-nonshared and memmove_chk-nonshared. * sysdeps/x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add tests for __memmove_chk_erms, __memcpy_chk_erms and __mempcpy_chk_erms. Update comments. * sysdeps/x86_64/multiarch/ifunc-memmove.h: New file. * sysdeps/x86_64/multiarch/memcpy.c: Likewise. * sysdeps/x86_64/multiarch/memcpy_chk-nonshared.S: Likewise. * sysdeps/x86_64/multiarch/memcpy_chk.c: Likewise. * sysdeps/x86_64/multiarch/memmove-sse2-unaligned-erms.S: Likewise. * sysdeps/x86_64/multiarch/memmove.c: Likewise. * sysdeps/x86_64/multiarch/memmove_chk-nonshared.S: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise. * sysdeps/x86_64/multiarch/mempcpy.c: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk-nonshared.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.c: Likewise. * sysdeps/x86_64/multiarch/memcpy.S: Removed. * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memmove.S: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S (__mempcpy_chk_erms): New function. (__memmove_chk_erms): Likewise. (__memcpy_chk_erms): New alias.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog32
1 files changed, 32 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 6d96dbd..9b38a1e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,35 @@
+2017-06-14 H.J. Lu <hongjiu.lu@intel.com>
+ Erich Elsen <eriche@google.com>
+ Adhemerval Zanella <adhemerval.zanella@linaro.org>
+
+ * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
+ memmove-sse2-unaligned-erms, memcpy_chk-nonshared,
+ mempcpy_chk-nonshared and memmove_chk-nonshared.
+ * sysdeps/x86_64/multiarch/ifunc-impl-list.c
+ (__libc_ifunc_impl_list): Add tests for __memmove_chk_erms,
+ __memcpy_chk_erms and __mempcpy_chk_erms. Update comments.
+ * sysdeps/x86_64/multiarch/ifunc-memmove.h: New file.
+ * sysdeps/x86_64/multiarch/memcpy.c: Likewise.
+ * sysdeps/x86_64/multiarch/memcpy_chk-nonshared.S: Likewise.
+ * sysdeps/x86_64/multiarch/memcpy_chk.c: Likewise.
+ * sysdeps/x86_64/multiarch/memmove-sse2-unaligned-erms.S: Likewise.
+ * sysdeps/x86_64/multiarch/memmove.c: Likewise.
+ * sysdeps/x86_64/multiarch/memmove_chk-nonshared.S: Likewise.
+ * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise.
+ * sysdeps/x86_64/multiarch/mempcpy.c: Likewise.
+ * sysdeps/x86_64/multiarch/mempcpy_chk-nonshared.S: Likewise.
+ * sysdeps/x86_64/multiarch/mempcpy_chk.c: Likewise.
+ * sysdeps/x86_64/multiarch/memcpy.S: Removed.
+ * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise.
+ * sysdeps/x86_64/multiarch/memmove.S: Likewise.
+ * sysdeps/x86_64/multiarch/memmove_chk.S: Likewise.
+ * sysdeps/x86_64/multiarch/mempcpy.S: Likewise.
+ * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise.
+ * sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S
+ (__mempcpy_chk_erms): New function.
+ (__memmove_chk_erms): Likewise.
+ (__memcpy_chk_erms): New alias.
+
2017-06-14 Florian Weimer <fweimer@redhat.com>
* sysdeps/i386/i686/multiarch/strcspn-c.c: Add IS_IN (libc) guard.