glibc/sysdeps/aarch64
Szabolcs Nagy 2b8a3c86e7 aarch64: new ifunc resolver ABI
Passing a second argument to the ifunc resolver allows accessing
AT_HWCAP2 values from the resolver. AArch64 will start using AT_HWCAP2
on linux because for ilp32 to remain compatible with lp64 ABI no more
than 32bit hwcap flags can be in AT_HWCAP which is already used up.

Currently the relocation ordering logic does not guarantee that ifunc
resolvers can call libc apis or access libc objects, so only the
resolver arguments and runtime environment dependent instructions can
be used to do the dispatch (this affects ifunc resolvers outside of
the libc).

Since ifunc resolver is target specific and only supposed to be
called by the dynamic linker, the call ABI can be changed in a
backward compatible way:

Old call ABI passed hwcap as uint64_t, new abi sets the
_IFUNC_ARG_HWCAP flag in the hwcap and passes a second argument
that's a pointer to an extendible struct. A resolver has to check
the _IFUNC_ARG_HWCAP flag before accessing the second argument.

The new sys/ifunc.h installed header has the definitions for the
new ABI, everything is in the implementation reserved namespace.

An alternative approach is to try to support extern calls from ifunc
resolvers such as getauxval, but that seems non-trivial
https://sourceware.org/ml/libc-alpha/2017-01/msg00468.html

	* sysdeps/aarch64/Makefile: Install sys/ifunc.h and add tests.
	* sysdeps/aarch64/dl-irel.h (elf_ifunc_invoke): Update to new ABI.
	* sysdeps/aarch64/sys/ifunc.h: New file.
	* sysdeps/aarch64/tst-ifunc-arg-1.c: New file.
	* sysdeps/aarch64/tst-ifunc-arg-2.c: New file.
2019-07-04 11:13:32 +01:00
..
bits Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fpu Break more lines before not after operators. 2019-02-25 13:19:19 +00:00
multiarch aarch64: thunderx2 memmove performance improvements 2019-05-03 11:01:34 -07:00
nptl Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
sys aarch64: new ifunc resolver ABI 2019-07-04 11:13:32 +01:00
__longjmp.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
abort-instr.h Relocate AArch64 from ports to libc. 2014-02-11 11:36:00 +00:00
atomic-machine.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
bsd-_setjmp.S Relocate AArch64 from ports to libc. 2014-02-11 11:36:00 +00:00
bsd-setjmp.S Relocate AArch64 from ports to libc. 2014-02-11 11:36:00 +00:00
configure Require autoconf 2.69 2014-09-29 07:53:36 -07:00
configure.ac Relocate AArch64 from ports to libc. 2014-02-11 11:36:00 +00:00
crti.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
crtn.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
dl-dtprocnum.h aarch64: handle STO_AARCH64_VARIANT_PCS 2019-06-13 09:45:00 +01:00
dl-irel.h aarch64: new ifunc resolver ABI 2019-07-04 11:13:32 +01:00
dl-link.sym Relocate AArch64 from ports to libc. 2014-02-11 11:36:00 +00:00
dl-machine.h aarch64: handle STO_AARCH64_VARIANT_PCS 2019-06-13 09:45:00 +01:00
dl-sysdep.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
dl-tls.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
dl-tlsdesc.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
dl-tlsdesc.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
dl-trampoline.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
dl-tunables.list Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
e_sqrtl.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
Implies Remove sysdeps/aarch64/soft-fp directory. 2018-05-22 17:23:34 +00:00
jmpbuf-offsets.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
jmpbuf-unwind.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
ldsodefs.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
libc-tls.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
libm-test-ulps Add new exp and exp2 implementations 2018-09-05 16:22:00 +01:00
libm-test-ulps-name Do not hardcode platform names in manual/libm-err-tab.pl (bug 14139). 2016-11-04 16:49:06 +00:00
linkmap.h aarch64: handle STO_AARCH64_VARIANT_PCS 2019-06-13 09:45:00 +01:00
machine-gmon.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
Makefile aarch64: new ifunc resolver ABI 2019-07-04 11:13:32 +01:00
math-tests-trap.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
mcount.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
memchr.S aarch64: Optimized memchr specific to AmpereComputing emag 2019-02-01 08:14:21 -05:00
memcmp.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
memcpy.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
memmove.S This is an optimized memcpy/memmove for AArch64. Copies are split into 3 main 2016-06-20 17:41:33 +01:00
memset-reg.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
memset.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
memusage.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
preconfigure Remove relro configure test. 2014-06-27 16:51:22 +00:00
rawmemchr.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
setjmp.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
sfp-machine.h Break more lines before not after operators. 2019-02-25 13:19:19 +00:00
sotruss-lib.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
stackinfo.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
start.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
stpcpy.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strchr.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strchrnul.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strcmp.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strcpy.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
string_private.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strlen.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strncmp.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strnlen.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strrchr.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
sysdep.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tls-macros.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tlsdesc.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tlsdesc.sym aarch64: Use explicit offsets in _dl_tlsdesc_dynamic 2016-12-02 16:52:57 +01:00
tst-audit.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-ifunc-arg-1.c aarch64: new ifunc resolver ABI 2019-07-04 11:13:32 +01:00
tst-ifunc-arg-2.c aarch64: new ifunc resolver ABI 2019-07-04 11:13:32 +01:00
Versions Relocate AArch64 from ports to libc. 2014-02-11 11:36:00 +00:00