glibc/sysdeps
Noah Goldstein ae308947ff x86: Add support for building {w}memcmp{eq} with explicit ISA level
1. Refactor files so that all implementations are in the multiarch
   directory
    - Moved the implementation portion of memcmp sse2 from memcmp.S to
      multiarch/memcmp-sse2.S

    - The non-multiarch file now only includes one of the
      implementations in the multiarch directory based on the compiled
      ISA level (only used for non-multiarch builds.  Otherwise we go
      through the ifunc selector).

2. Add ISA level build guards to different implementations.
    - I.e memcmp-avx2-movsb.S which is ISA level 3 will only build if
      compiled ISA level <= 3. Otherwise there is no reason to include
      it as we will always use one of the ISA level 4
      implementations (memcmp-evex-movbe.S).

3. Add new multiarch/rtld-{w}memcmp{eq}.S that just include the
   non-multiarch {w}memcmp{eq}.S which will in turn select the best
   implementation based on the compiled ISA level.

4. Refactor the ifunc selector and ifunc implementation list to use
   the ISA level aware wrapper macros that allow functions below the
   compiled ISA level (with a guranteed replacement) to be skipped.

Tested with and without multiarch on x86_64 for ISA levels:
{generic, x86-64-v2, x86-64-v3, x86-64-v4}

And m32 with and without multiarch.
2022-07-05 16:42:42 -07:00
..
aarch64 AArch64: Reset HWCAP2_AFP bits in FPCR for default fenv 2022-07-05 14:01:17 +01:00
alpha alpha: Remove _dl_skip_args usage 2022-05-30 16:32:22 -03:00
arc elf: Remove ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA 2022-06-15 11:29:55 -07:00
arm Add bounds check to __libc_ifunc_impl_list 2022-06-10 17:13:29 +01:00
csky csky: Remove _dl_skip_args usage 2022-05-30 16:32:33 -03:00
generic Fix hurd namespace issues for internal signal functions 2022-07-04 11:10:06 -03:00
gnu Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
hppa hppa: Remove _dl_skip_args usage (BZ# 29165) 2022-05-30 16:32:35 -03:00
htl htl: Fix initializing the key lock 2022-02-14 19:29:02 +01:00
hurd hurd: Fix pthread_kill on exiting/ted thread 2022-01-15 15:11:54 +01:00
i386 i386: Fix include paths for strspn, strcspn, and strpbrk 2022-06-17 16:25:27 -07:00
ia64 grep: egrep -> grep -E, fgrep -> grep -F 2022-06-05 12:09:02 -07:00
ieee754 i686: Use generic sincosf implementation for SSE2 version 2022-06-01 10:47:44 -03:00
m68k m68k: optimize RTLD_START 2022-06-25 00:22:02 +02:00
mach elf: Remove _dl_skip_args 2022-05-30 16:33:54 -03:00
microblaze microblaze: Remove _dl_skip_args usage 2022-05-30 16:33:14 -03:00
mips mips: Remove _dl_skip_args usage 2022-05-30 16:33:16 -03:00
nios2 Remove remnant reference to ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA 2022-06-15 13:02:17 -07:00
nptl Replace __libc_multiple_threads with __libc_single_threaded 2022-07-05 10:14:47 -03:00
or1k elf: Replace PI_STATIC_AND_HIDDEN with opposite HIDDEN_VAR_NEEDS_DYNAMIC_RELOC 2022-04-26 09:26:22 -07:00
posix Refactor internal-signals.h 2022-06-30 14:56:21 -03:00
powerpc Add bounds check to __libc_ifunc_impl_list 2022-06-10 17:13:29 +01:00
pthread nptl: Fix __libc_cleanup_pop_restore asynchronous restore (BZ#29214) 2022-06-08 09:23:02 -03:00
riscv riscv: Use memcpy to handle unaligned access when fixing R_RISCV_RELATIVE 2022-06-30 08:04:52 -07:00
s390 s390: use LC_ALL=C for readelf call 2022-06-21 10:16:44 +02:00
sh sh: Remove _dl_skip_args usage 2022-05-30 16:33:28 -03:00
sparc Add bounds check to __libc_ifunc_impl_list 2022-06-10 17:13:29 +01:00
unix Replace __libc_multiple_threads with __libc_single_threaded 2022-07-05 10:14:47 -03:00
wordsize-32 Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
wordsize-64 Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
x86 x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
x86_64 x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00