riscv64: pass a null argument to ifunc resolvers.
glibc maintainer Florian Weimer pointed out that glibc passes a null first argument to riscv64 ifunc resolvers. While not super useful right now, that does make it much easier to switch to providing arguments in future, such as my favorite idea of passing a default set of hwprobe key/value pairs, along with a count of how many pairs. Test: treehugger Change-Id: Ibe2148dc28aa6ad230e6324b6d725fe472b7ef33
This commit is contained in:
parent
c4d3867b6c
commit
b08f79af78
1 changed files with 7 additions and 0 deletions
|
@ -57,6 +57,13 @@ ElfW(Addr) __bionic_call_ifunc_resolver(ElfW(Addr) resolver_addr) {
|
|||
hwcap = getauxval(AT_HWCAP);
|
||||
}
|
||||
return reinterpret_cast<ifunc_resolver_t>(resolver_addr)(hwcap);
|
||||
#elif defined(__riscv)
|
||||
// This argument and its value is just a placeholder for now,
|
||||
// but it means that if we do pass something in future (such as
|
||||
// getauxval() and/or hwprobe key/value pairs), callees will be able to
|
||||
// recognize what they're being given.
|
||||
typedef ElfW(Addr) (*ifunc_resolver_t)(void*);
|
||||
return reinterpret_cast<ifunc_resolver_t>(resolver_addr)(nullptr);
|
||||
#else
|
||||
typedef ElfW(Addr) (*ifunc_resolver_t)(void);
|
||||
return reinterpret_cast<ifunc_resolver_t>(resolver_addr)();
|
||||
|
|
Loading…
Reference in a new issue