This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC PATCH] aarch64: new ifunc resolver ABI


On 12/06/2019 11:09, Szabolcs Nagy wrote:
> 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.

for the record i'm still planning to commit this for 2.30.
will try to do it next week.

> > 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
> 
> 2019-06-12  Szabolcs Nagy  <szabolcs.nagy@arm.com>
> 
> 	* 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.
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]