glibc/sysdeps/x86_64/multiarch
H.J. Lu e2e4f56056 Add _dl_x86_cpu_features to rtld_global
This patch adds _dl_x86_cpu_features to rtld_global in x86 ld.so
and initializes it early before __libc_start_main is called so that
cpu_features is always available when it is used and we can avoid
calling __init_cpu_features in IFUNC selectors.

	* sysdeps/i386/dl-machine.h: Include <cpu-features.c>.
	(dl_platform_init): Call init_cpu_features.
	* sysdeps/i386/dl-procinfo.c (_dl_x86_cpu_features): New.
	* sysdeps/i386/i686/cacheinfo.c
	(DISABLE_PREFERRED_MEMORY_INSTRUCTION): Removed.
	* sysdeps/i386/i686/multiarch/Makefile (aux): Remove init-arch.
	* sysdeps/i386/i686/multiarch/Versions: Removed.
	* sysdeps/i386/i686/multiarch/ifunc-defines.sym (KIND_OFFSET):
	Removed.
	* sysdeps/i386/ldsodefs.h: Include <cpu-features.h>.
	* sysdeps/unix/sysv/linux/x86/Makefile
	(libpthread-sysdep_routines): Remove init-arch.
	* sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Include
	<sysdeps/x86_64/dl-procinfo.c> instead of
	sysdeps/generic/dl-procinfo.c>.
	* sysdeps/x86/Makefile [$(subdir) == csu] (gen-as-const-headers):
	Add cpu-features-offsets.sym and rtld-global-offsets.sym.
	[$(subdir) == elf] (sysdep-dl-routines): Add dl-get-cpu-features.
	[$(subdir) == elf] (tests): Add tst-get-cpu-features.
	[$(subdir) == elf] (tests-static): Add
	tst-get-cpu-features-static.
	* sysdeps/x86/Versions: New file.
	* sysdeps/x86/cpu-features-offsets.sym: Likewise.
	* sysdeps/x86/cpu-features.c: Likewise.
	* sysdeps/x86/cpu-features.h: Likewise.
	* sysdeps/x86/dl-get-cpu-features.c: Likewise.
	* sysdeps/x86/libc-start.c: Likewise.
	* sysdeps/x86/rtld-global-offsets.sym: Likewise.
	* sysdeps/x86/tst-get-cpu-features-static.c: Likewise.
	* sysdeps/x86/tst-get-cpu-features.c: Likewise.
	* sysdeps/x86_64/dl-procinfo.c: Likewise.
	* sysdeps/x86_64/cacheinfo.c (__cpuid_count): Removed.
	Assume USE_MULTIARCH is defined and don't check it.
	(is_intel): Replace __cpu_features with GLRO(dl_x86_cpu_features).
	(is_amd): Likewise.
	(max_cpuid): Likewise.
	(intel_check_word): Likewise.
	(__cache_sysconf): Don't call __init_cpu_features.
	(__x86_preferred_memory_instruction): Removed.
	(init_cacheinfo): Don't call __init_cpu_features. Replace
	__cpu_features with GLRO(dl_x86_cpu_features).
	* sysdeps/x86_64/dl-machine.h: <cpu-features.c>.
	(dl_platform_init): Call init_cpu_features.
	* sysdeps/x86_64/ldsodefs.h: Include <cpu-features.h>.
	* sysdeps/x86_64/multiarch/Makefile (aux): Remove init-arch.
	* sysdeps/x86_64/multiarch/Versions: Removed.
	* sysdeps/x86_64/multiarch/cacheinfo.c: Likewise.
	* sysdeps/x86_64/multiarch/init-arch.c: Likewise.
	* sysdeps/x86_64/multiarch/ifunc-defines.sym (KIND_OFFSET):
	Removed.
	* sysdeps/x86_64/multiarch/init-arch.h: Rewrite.
2015-08-13 03:41:22 -07:00
..
bcopy.S
ifunc-defines.sym Add _dl_x86_cpu_features to rtld_global 2015-08-13 03:41:22 -07:00
ifunc-impl-list.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
init-arch.h Add _dl_x86_cpu_features to rtld_global 2015-08-13 03:41:22 -07:00
Makefile Add _dl_x86_cpu_features to rtld_global 2015-08-13 03:41:22 -07:00
memcmp-sse4.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcmp-ssse3.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcmp.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcpy_chk.S Use AVX unaligned memcpy only if AVX2 is available 2015-01-30 15:37:58 -08:00
memcpy-avx-unaligned.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcpy-sse2-unaligned.S Compile {memcpy,strcmp}-sse2-unaligned.S only for libc 2015-08-05 08:28:37 -07:00
memcpy-ssse3-back.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcpy-ssse3.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcpy.S Use AVX unaligned memcpy only if AVX2 is available 2015-01-30 15:37:58 -08:00
memmove_chk.c Use AVX unaligned memcpy only if AVX2 is available 2015-01-30 15:37:58 -08:00
memmove-avx-unaligned.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memmove-ssse3-back.S
memmove-ssse3.S
memmove.c Use AVX unaligned memcpy only if AVX2 is available 2015-01-30 15:37:58 -08:00
mempcpy_chk.S Use AVX unaligned memcpy only if AVX2 is available 2015-01-30 15:37:58 -08:00
mempcpy-avx-unaligned.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mempcpy-ssse3-back.S
mempcpy-ssse3.S
mempcpy.S Use AVX unaligned memcpy only if AVX2 is available 2015-01-30 15:37:58 -08:00
memset_chk.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memset-avx2.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memset.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rtld-memcmp.c
rtld-memset.S Add x86_64 memset optimized for AVX2 2014-06-19 15:14:08 -07:00
sched_cpucount.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
stpcpy-sse2-unaligned.S
stpcpy-ssse3.S
stpcpy.S
stpncpy-c.c
stpncpy-sse2-unaligned.S
stpncpy-ssse3.S
stpncpy.S
strcasecmp_l-ssse3.S
strcasecmp_l.S
strcasestr.c Add strstr with unaligned loads. Fixes bug 12100. 2013-12-14 20:08:13 +01:00
strcat-sse2-unaligned.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcat-ssse3.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcat.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strchr-sse2-no-bsf.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strchr.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcmp-sse2-unaligned.S Compile {memcpy,strcmp}-sse2-unaligned.S only for libc 2015-08-05 08:28:37 -07:00
strcmp-sse42.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcmp-ssse3.S Remove NOT_IN_libc 2014-11-24 15:03:45 +05:30
strcmp.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcpy-sse2-unaligned.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcpy-ssse3.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcpy.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcspn-c.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcspn.S Use strspn/strcspn/strpbrk ifunc in internal calls. 2015-05-12 20:18:51 +02:00
strncase_l-ssse3.S
strncase_l.S
strncat-c.c
strncat-sse2-unaligned.S
strncat-ssse3.S
strncat.S
strncmp-ssse3.S
strncmp.S
strncpy-c.c
strncpy-sse2-unaligned.S
strncpy-ssse3.S
strncpy.S
strpbrk-c.c
strpbrk.S
strspn-c.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strspn.S Use strspn/strcspn/strpbrk ifunc in internal calls. 2015-05-12 20:18:51 +02:00
strstr-sse2-unaligned.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strstr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-multiarch.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
varshift.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
varshift.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcscpy-c.c Remove NOT_IN_libc 2014-11-24 15:03:45 +05:30
wcscpy-ssse3.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcscpy.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wmemcmp-c.c Remove NOT_IN_libc 2014-11-24 15:03:45 +05:30
wmemcmp-sse4.S
wmemcmp-ssse3.S
wmemcmp.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00