linker: Use load_bias to adjust search address in elf_addr_lookup
load_bias is the delta between a symbols address in memory and the value contained in the symbol table. Change-Id: I35c87b69025b64f7e4a1418ca766618f4533fb3e
This commit is contained in:
parent
86d9896273
commit
8e55381939
@ -798,7 +798,7 @@ static bool symbol_matches_soaddr(const ElfW(Sym)* sym, ElfW(Addr) soaddr) {
|
||||
}
|
||||
|
||||
ElfW(Sym)* soinfo::gnu_addr_lookup(const void* addr) {
|
||||
ElfW(Addr) soaddr = reinterpret_cast<ElfW(Addr)>(addr) - base;
|
||||
ElfW(Addr) soaddr = reinterpret_cast<ElfW(Addr)>(addr) - load_bias;
|
||||
|
||||
for (size_t i = 0; i < nbucket_; ++i) {
|
||||
uint32_t n = bucket_[i];
|
||||
@ -819,7 +819,7 @@ ElfW(Sym)* soinfo::gnu_addr_lookup(const void* addr) {
|
||||
}
|
||||
|
||||
ElfW(Sym)* soinfo::elf_addr_lookup(const void* addr) {
|
||||
ElfW(Addr) soaddr = reinterpret_cast<ElfW(Addr)>(addr) - base;
|
||||
ElfW(Addr) soaddr = reinterpret_cast<ElfW(Addr)>(addr) - load_bias;
|
||||
|
||||
// Search the library's symbol table for any defined symbol which
|
||||
// contains this address.
|
||||
|
Loading…
x
Reference in New Issue
Block a user