i686: Implement IFUNC selectors in C

System Internals / glibc - H.J. Lu [gmail.com] - 4 August 2017 16:29 EDT

- sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add bcopy-ia32, bzero-ia32, rawmemchr-ia32 memchr-ia32, memcmp-ia32, memcpy-ia32, memmove-ia32, mempcpy-ia32, memset-ia32, strcat-ia32, strchr-ia32, strrchr-ia32, strcpy-ia32, strcmp-ia32, strcspn-ia32, strpbrk-ia32, strspn-ia32, strlen-ia32, stpcpy-ia32, stpncpy-ia32, memcpy_chk-nonshared, mempcpy_chk-nonshared, memmove_chk-nonshared and memset_chk-nonshared
- sysdeps/i386/i686/multiarch/bcopy-ia32.S: New file.
- sysdeps/i386/i686/multiarch/bcopy.c: Likewise.
- sysdeps/i386/i686/multiarch/bzero-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/bzero.c: Likewise.
- sysdeps/i386/i686/multiarch/ifunc-memmove.h: Likewise.
- sysdeps/i386/i686/multiarch/ifunc-memset.h: Likewise.
- sysdeps/i386/i686/multiarch/ifunc-sse2-bsf.h: Likewise.
- sysdeps/i386/i686/multiarch/ifunc-sse2-ssse3.h: Likewise.
- sysdeps/i386/i686/multiarch/ifunc-sse2.h: Likewise.
- sysdeps/i386/i686/multiarch/ifunc-sse4_2.h: Likewise.
- sysdeps/i386/i686/multiarch/ifunc-ssse3-sse4_2.h: Likewise.
- sysdeps/i386/i686/multiarch/memchr-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/memchr.c: Likewise.
- sysdeps/i386/i686/multiarch/memcmp-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/memcmp.c: Likewise.
- sysdeps/i386/i686/multiarch/memcpy-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/memcpy.c: Likewise.
- sysdeps/i386/i686/multiarch/memcpy_chk-nonshared.S: Likewise.
- sysdeps/i386/i686/multiarch/memcpy_chk.c: Likewise.
- sysdeps/i386/i686/multiarch/memmove-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/memmove.c: Likewise.
- sysdeps/i386/i686/multiarch/memmove_chk-nonshared.S: Likewise.
- sysdeps/i386/i686/multiarch/memmove_chk.c: Likewise.
- sysdeps/i386/i686/multiarch/mempcpy-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/mempcpy.c: Likewise.
- sysdeps/i386/i686/multiarch/mempcpy_chk-nonshared.S: Likewise.
- sysdeps/i386/i686/multiarch/mempcpy_chk.c: Likewise.
- sysdeps/i386/i686/multiarch/memrchr.c: Likewise.
- sysdeps/i386/i686/multiarch/memset-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/memset.c: Likewise.
- sysdeps/i386/i686/multiarch/memset_chk-nonshared.S: Likewise.
- sysdeps/i386/i686/multiarch/rawmemchr-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/rawmemchr.c: Likewise.
- sysdeps/i386/i686/multiarch/stpcpy-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/stpcpy-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/stpcpy.c: Likewise.
- sysdeps/i386/i686/multiarch/stpncpy-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/stpncpy.c: Likewise.
- sysdeps/i386/i686/multiarch/strcasecmp.c: Likewise.
- sysdeps/i386/i686/multiarch/strcasecmp_l.c: Likewise.
- sysdeps/i386/i686/multiarch/strcat-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/strcat.c: Likewise.
- sysdeps/i386/i686/multiarch/strchr-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/strchr.c: Likewise.
- sysdeps/i386/i686/multiarch/strcmp-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/strcmp.c: Likewise.
- sysdeps/i386/i686/multiarch/strcpy-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/strcpy.c: Likewise.
- sysdeps/i386/i686/multiarch/strcspn-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/strcspn.c: Likewise.
- sysdeps/i386/i686/multiarch/strlen-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/strlen.c: Likewise.
- sysdeps/i386/i686/multiarch/strncase.c: Likewise.
- sysdeps/i386/i686/multiarch/strncase_l.c: Likewise.
- sysdeps/i386/i686/multiarch/strncat.c: Likewise.
- sysdeps/i386/i686/multiarch/strncmp.c: Likewise.
- sysdeps/i386/i686/multiarch/strncpy.c: Likewise.
- sysdeps/i386/i686/multiarch/strnlen.c: Likewise.
- sysdeps/i386/i686/multiarch/strpbrk-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/strpbrk.c: Likewise.
- sysdeps/i386/i686/multiarch/strrchr-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/strrchr.c: Likewise.
- sysdeps/i386/i686/multiarch/strspn-ia32.S: Likewise.
- sysdeps/i386/i686/multiarch/strspn.c: Likewise.
- sysdeps/i386/i686/multiarch/wcschr.c: Likewise.
- sysdeps/i386/i686/multiarch/wcscmp.c: Likewise.
- sysdeps/i386/i686/multiarch/wcscpy.c: Likewise.
- sysdeps/i386/i686/multiarch/wcslen.c: Likewise.
- sysdeps/i386/i686/multiarch/wcsrchr.c: Likewise.
- sysdeps/i386/i686/multiarch/wmemcmp.c: Likewise.
- sysdeps/i386/i686/multiarch/bcopy.S: Removed.
- sysdeps/i386/i686/multiarch/bzero.S: Likewise.
- sysdeps/i386/i686/multiarch/memchr.S: Likewise.
- sysdeps/i386/i686/multiarch/memcmp.S: Likewise.
- sysdeps/i386/i686/multiarch/memcpy.S: Likewise.
- sysdeps/i386/i686/multiarch/memcpy_chk.S: Likewise.
- sysdeps/i386/i686/multiarch/memmove.S: Likewise.
- sysdeps/i386/i686/multiarch/memmove_chk.S: Likewise.
- sysdeps/i386/i686/multiarch/mempcpy.S: Likewise.
- sysdeps/i386/i686/multiarch/mempcpy_chk.S: Likewise.
- sysdeps/i386/i686/multiarch/memrchr.S: Likewise.
- sysdeps/i386/i686/multiarch/memset.S: Likewise.
- sysdeps/i386/i686/multiarch/memset_chk.S: Likewise.
- sysdeps/i386/i686/multiarch/rawmemchr.S: Likewise.
- sysdeps/i386/i686/multiarch/stpcpy.S: Likewise.
- sysdeps/i386/i686/multiarch/stpncpy.S: Likewise.
- sysdeps/i386/i686/multiarch/strcasecmp.S: Likewise.
- sysdeps/i386/i686/multiarch/strcasecmp_l.S: Likewise.
- sysdeps/i386/i686/multiarch/strcat.S: Likewise.
- sysdeps/i386/i686/multiarch/strcmp.S: Likewise.
- sysdeps/i386/i686/multiarch/strcpy.S: Likewise.
- sysdeps/i386/i686/multiarch/strcspn.S: Likewise.
- sysdeps/i386/i686/multiarch/strlen.S: Likewise.
- sysdeps/i386/i686/multiarch/strncase.S: Likewise.
- sysdeps/i386/i686/multiarch/strncase_l.S: Likewise.
- sysdeps/i386/i686/multiarch/strncat.S: Likewise.
- sysdeps/i386/i686/multiarch/strncmp.S: Likewise.
- sysdeps/i386/i686/multiarch/strncpy.S: Likewise.
- sysdeps/i386/i686/multiarch/strnlen.S: Likewise.
- sysdeps/i386/i686/multiarch/strpbrk.S: Likewise.
- sysdeps/i386/i686/multiarch/strrchr.S: Likewise.
- sysdeps/i386/i686/multiarch/strspn.S: Likewise.
- sysdeps/i386/i686/multiarch/wcschr.S: Likewise.
- sysdeps/i386/i686/multiarch/wcscmp.S: Likewise.
- sysdeps/i386/i686/multiarch/wcscpy.S: Likewise.
- sysdeps/i386/i686/multiarch/wcslen.S: Likewise.
- sysdeps/i386/i686/multiarch/wcsrchr.S: Likewise.
- sysdeps/i386/i686/multiarch/wmemcmp.S: Likewise.

973da22 i686: Implement IFUNC selectors in C
ChangeLog | 119 +++++++++++++++++++++
sysdeps/i386/i686/multiarch/Makefile | 13 ++-
sysdeps/i386/i686/multiarch/bcopy-ia32.S | 20 ++++
sysdeps/i386/i686/multiarch/bcopy.S | 59 ----------
sysdeps/i386/i686/multiarch/{wcsrchr.S => bcopy.c} | 27 ++---
sysdeps/i386/i686/multiarch/bzero-ia32.S | 38 +++++++
sysdeps/i386/i686/multiarch/bzero.S | 62 -----------
sysdeps/i386/i686/multiarch/{wcschr.S => bzero.c} | 30 +++---
sysdeps/i386/i686/multiarch/ifunc-memmove.h | 45 ++++++++
sysdeps/i386/i686/multiarch/ifunc-memset.h | 40 +++++++
sysdeps/i386/i686/multiarch/ifunc-sse2-bsf.h | 40 +++++++
sysdeps/i386/i686/multiarch/ifunc-sse2-ssse3.h | 40 +++++++
sysdeps/i386/i686/multiarch/ifunc-sse2.h | 34 ++++++
sysdeps/i386/i686/multiarch/ifunc-sse4_2.h | 34 ++++++
sysdeps/i386/i686/multiarch/ifunc-ssse3-sse4_2.h | 39 +++++++
sysdeps/i386/i686/multiarch/memchr-ia32.S | 35 ++++++
sysdeps/i386/i686/multiarch/memchr.S | 65 -----------
sysdeps/i386/i686/multiarch/{wcslen.S => memchr.c} | 29 +++--
sysdeps/i386/i686/multiarch/memcmp-ia32.S | 35 ++++++
sysdeps/i386/i686/multiarch/memcmp.S | 62 -----------
.../i386/i686/multiarch/{strnlen.S => memcmp.c} | 29 +++--
sysdeps/i386/i686/multiarch/memcpy-ia32.S | 31 ++++++
sysdeps/i386/i686/multiarch/memcpy.S | 78 --------------
sysdeps/i386/i686/multiarch/memcpy.c | 32 ++++++
sysdeps/i386/i686/multiarch/memcpy_chk-nonshared.S | 21 ++++
sysdeps/i386/i686/multiarch/memcpy_chk.S | 50 ---------
sysdeps/i386/i686/multiarch/memcpy_chk.c | 31 ++++++
sysdeps/i386/i686/multiarch/memmove-ia32.S | 31 ++++++
sysdeps/i386/i686/multiarch/memmove.S | 89 ---------------
sysdeps/i386/i686/multiarch/memmove.c | 32 ++++++
.../i386/i686/multiarch/memmove_chk-nonshared.S | 21 ++++
sysdeps/i386/i686/multiarch/memmove_chk.S | 94 ----------------
sysdeps/i386/i686/multiarch/memmove_chk.c | 31 ++++++
.../i686/multiarch/{strchr.S => mempcpy-ia32.S} | 46 +++-----
sysdeps/i386/i686/multiarch/mempcpy.S | 81 --------------
.../i386/i686/multiarch/{wcscmp.S => mempcpy.c} | 39 ++++---
.../i386/i686/multiarch/mempcpy_chk-nonshared.S | 21 ++++
sysdeps/i386/i686/multiarch/mempcpy_chk.S | 50 ---------
sysdeps/i386/i686/multiarch/mempcpy_chk.c | 31 ++++++
sysdeps/i386/i686/multiarch/memrchr.c | 32 ++++++
sysdeps/i386/i686/multiarch/memset-ia32.S | 33 ++++++
sysdeps/i386/i686/multiarch/memset.S | 75 -------------
sysdeps/i386/i686/multiarch/memset.c | 30 ++++++
sysdeps/i386/i686/multiarch/memset_chk-nonshared.S | 21 ++++
sysdeps/i386/i686/multiarch/memset_chk.S | 78 --------------
sysdeps/i386/i686/multiarch/memset_chk.c | 32 ++++++
sysdeps/i386/i686/multiarch/rawmemchr-ia32.S | 35 ++++++
sysdeps/i386/i686/multiarch/rawmemchr.S | 65 -----------
sysdeps/i386/i686/multiarch/rawmemchr.c | 35 ++++++
sysdeps/i386/i686/multiarch/stpcpy-ia32.S | 39 +++++++
sysdeps/i386/i686/multiarch/stpcpy.S | 9 --
sysdeps/i386/i686/multiarch/stpcpy.c | 36 +++++++
.../i686/multiarch/{memrchr.S => stpncpy-ia32.S} | 44 ++++----
sysdeps/i386/i686/multiarch/stpncpy.S | 8 --
sysdeps/i386/i686/multiarch/stpncpy.c | 34 ++++++
.../i686/multiarch/{strcasecmp.S => strcasecmp.c} | 34 +++---
sysdeps/i386/i686/multiarch/strcasecmp_l.S | 7 --
.../i686/multiarch/{wmemcmp.S => strcasecmp_l.c} | 35 +++---
sysdeps/i386/i686/multiarch/strcat-ia32.S | 33 ++++++
sysdeps/i386/i686/multiarch/strcat.S | 92 ----------------
sysdeps/i386/i686/multiarch/strcat.c | 30 ++++++
sysdeps/i386/i686/multiarch/strchr-ia32.S | 35 ++++++
sysdeps/i386/i686/multiarch/strchr.c | 32 ++++++
sysdeps/i386/i686/multiarch/strcmp-ia32.S | 33 ++++++
sysdeps/i386/i686/multiarch/strcmp.S | 95 ----------------
sysdeps/i386/i686/multiarch/strcmp.c | 30 ++++++
sysdeps/i386/i686/multiarch/strcpy-ia32.S | 33 ++++++
sysdeps/i386/i686/multiarch/strcpy.S | 116 --------------------
sysdeps/i386/i686/multiarch/strcpy.c | 30 ++++++
sysdeps/i386/i686/multiarch/strcspn-ia32.S | 33 ++++++
sysdeps/i386/i686/multiarch/strcspn.S | 75 -------------
sysdeps/i386/i686/multiarch/strcspn.c | 30 ++++++
sysdeps/i386/i686/multiarch/strlen-ia32.S | 30 ++++++
sysdeps/i386/i686/multiarch/strlen.S | 60 -----------
sysdeps/i386/i686/multiarch/strlen.c | 30 ++++++
.../i386/i686/multiarch/{strncase.S => strncase.c} | 34 +++---
sysdeps/i386/i686/multiarch/strncase_l.S | 7 --
sysdeps/i386/i686/multiarch/strncase_l.c | 35 ++++++
sysdeps/i386/i686/multiarch/strncat.S | 5 -
sysdeps/i386/i686/multiarch/strncat.c | 30 ++++++
sysdeps/i386/i686/multiarch/strncmp.S | 5 -
sysdeps/i386/i686/multiarch/strncmp.c | 30 ++++++
sysdeps/i386/i686/multiarch/strncpy.S | 5 -
sysdeps/i386/i686/multiarch/strncpy.c | 31 ++++++
.../i386/i686/multiarch/{wcscpy.S => strnlen.c} | 32 +++---
sysdeps/i386/i686/multiarch/strpbrk-ia32.S | 33 ++++++
sysdeps/i386/i686/multiarch/strpbrk.S | 5 -
sysdeps/i386/i686/multiarch/strpbrk.c | 30 ++++++
sysdeps/i386/i686/multiarch/strrchr-ia32.S | 35 ++++++
sysdeps/i386/i686/multiarch/strrchr.S | 57 ----------
sysdeps/i386/i686/multiarch/strrchr.c | 32 ++++++
sysdeps/i386/i686/multiarch/strspn-ia32.S | 33 ++++++
sysdeps/i386/i686/multiarch/strspn.S | 56 ----------
sysdeps/i386/i686/multiarch/strspn.c | 30 ++++++
sysdeps/i386/i686/multiarch/wcschr.c | 33 ++++++
sysdeps/i386/i686/multiarch/wcscmp.c | 33 ++++++
sysdeps/i386/i686/multiarch/wcscpy.c | 44 ++++++++
sysdeps/i386/i686/multiarch/wcslen.c | 31 ++++++
sysdeps/i386/i686/multiarch/wcsrchr.c | 30 ++++++
sysdeps/i386/i686/multiarch/wmemcmp.c | 30 ++++++
100 files changed, 2197 insertions(+), 1732 deletions(-)

Upstream: sourceware.org


  • Share