freebsd-dev/libexec/rtld-elf
Konstantin Belousov 4352999e0e Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and
CPUID[7].%ebx (cpu_stdext_feature), %ecx (cpu_stdext_feature2) to the
ifunc resolvers on x86.

It is much more clean to use CPUID instruction in usermode to retrieve
this information than to pass AT_HWCAP aux vector from kernel, on
x86.  Still, the change does allow for use of AT_HWCAP on arches where it is
needed, by passing aux array to ifunc_init() initializer which should
prepare arguments for ifunc resolvers.

Current signature for resolvers on x86 is
	func_t iresolve(uint32_t cpu_feature, uint32_t cpu_feature2,
	    uint32_t cpu_stdext_feature, uint32_t cpu_stdext_feature2);
where arguments have identical meaning as the kernel variables of the
same name.  The ABIs allow to use resolvers with the void or shortened
list of arguments.

Reviewed by:	jhb
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D8448
2016-11-15 09:43:26 +00:00
..
aarch64 Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
amd64 Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
arm Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
i386 Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
mips Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
powerpc Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
powerpc64 Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
riscv Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
sparc64 Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
tests DIRDEPS_BUILD: Add some missing dirctories to the build. 2016-08-31 19:30:59 +00:00
debug.c Do not call callbacks for dl_iterate_phdr(3) with the rtld bind and 2016-01-20 07:21:33 +00:00
debug.h Remove historical GNUC test 2015-05-06 15:29:11 +00:00
libmap.c Rather than using the #define for path names, indirect through a char * 2015-10-31 04:39:55 +00:00
libmap.h Make the directory mapping functionality, which was previously only 2013-09-21 21:03:52 +00:00
Makefile Assert that there is no unresolved symbols during rtld linking. 2016-11-15 09:40:03 +00:00
Makefile.depend new depends 2015-06-16 23:37:19 +00:00
malloc.c libexec: minor spelling fixes in comments. 2016-05-01 19:39:23 +00:00
map_object.c Fix handling of DT_TEXTREL for an object with more than one read-only 2016-03-02 16:36:24 +00:00
paths.h Convert casperd(8) daemon to the libcasper. 2016-02-25 18:23:40 +00:00
rtld_lock.c Change compiler setting to make default visibility of the symbols for 2015-03-29 18:53:21 +00:00
rtld_lock.h Change compiler setting to make default visibility of the symbols for 2015-03-29 18:53:21 +00:00
rtld_printf.c Add the LD_LIBRARY_PATH_FDS environmental variable. 2014-06-20 17:08:32 +00:00
rtld_printf.h Add the LD_LIBRARY_PATH_FDS environmental variable. 2014-06-20 17:08:32 +00:00
rtld_tls.h Change compiler setting to make default visibility of the symbols for 2015-03-29 18:53:21 +00:00
rtld_utrace.h Move defines common between rtld and libsysdecode into the header, 2016-08-12 19:31:41 +00:00
rtld.1 mdoc: remove superfluous paragraph macros. 2014-06-23 18:40:21 +00:00
rtld.c Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
rtld.h Pass CPUID[1] %edx (cpu_feature), %ecx (cpu_feature2) and 2016-11-15 09:43:26 +00:00
Symbol.map Add rtld private interface for dso to detect dynamic loading 2015-01-03 18:09:53 +00:00
xmalloc.c Increase alignment to size of pointer if the alignment is too small. 2014-02-22 11:06:48 +00:00