about summary refs log tree commit diff
path: root/inet
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-07-11 13:25:25 -0700
committerH.J. Lu <hjl.tools@gmail.com>2015-08-03 14:32:47 -0700
commit00c7c14c2131849983307800f5917c32b58d29d9 (patch)
treecf3a3d18ecc48d10fb4e74a43f143e598539a136 /inet
parentb4bf7d64c8f7597cc03abd608b50064f7cca4f40 (diff)
downloadglibc-00c7c14c2131849983307800f5917c32b58d29d9.tar.gz
glibc-00c7c14c2131849983307800f5917c32b58d29d9.tar.xz
glibc-00c7c14c2131849983307800f5917c32b58d29d9.zip
Save and restore vector registers in x86-64 ld.so
This patch initiaizes GLRO(dl_x86_xstate) in dl_platform_init to
indicate if the processor supports SSE, AVX or AVX512.  It uses
this information to properly save and restore vector registers in
ld.so.  Now we can use SSE in ld.so and delete FOREIGN_CALL macros.

	[BZ #15128]
	* sysdeps/x86_64/Makefile [$(subdir) == elf] (tests): Add
	ifuncmain8.
	(modules-names): Add ifuncmod8.
	($(objpfx)ifuncmain8): New rule.
	* sysdeps/x86_64/dl-machine.h: Include <dl-procinfo.h> and
	<cpuid.h>.
	(elf_machine_runtime_setup): Use _dl_runtime_resolve_sse,
	_dl_runtime_resolve_avx, or _dl_runtime_resolve_avx512,
	_dl_runtime_profile_sse, _dl_runtime_profile_avx, or
	_dl_runtime_profile_avx512, based on HAS_ARCH_FEATURE.
	* sysdeps/x86_64/dl-trampoline.S: Rewrite.
	* sysdeps/x86_64/dl-trampoline.h: Likewise.
	* sysdeps/x86_64/ifuncmain8.c: New file.
	* sysdeps/x86_64/ifuncmod8.c: Likewise.
	* sysdeps/x86_64/nptl/tcb-offsets.sym (RTLD_SAVESPACE_SSE):
	Removed.
	* sysdeps/x86_64/nptl/tls.h (__128bits): Removed.
	(tcbhead_t): Change rtld_must_xmm_save to __glibc_unused1.
	Change rtld_savespace_sse to __glibc_unused2.
	(RTLD_CHECK_FOREIGN_CALL): Removed.
	(RTLD_ENABLE_FOREIGN_CALL): Likewise.
	(RTLD_PREPARE_FOREIGN_CALL): Likewise.
	(RTLD_FINALIZE_FOREIGN_CALL): Likewise.
Diffstat (limited to 'inet')
0 files changed, 0 insertions, 0 deletions