Cache referenced symbol table when pulling data in relocation section
Change-Id: I6ef21cedde1aca6fd1ec5e5d5634563f030eaab8
This commit is contained in:
committed by
Konstantin Zhuravlyov
parent
92467fd282
commit
8a6edb07d9
@@ -711,6 +711,10 @@ namespace elf {
|
|||||||
|
|
||||||
GElfStringTable* shstrtab() override;
|
GElfStringTable* shstrtab() override;
|
||||||
GElfStringTable* strtab() override;
|
GElfStringTable* strtab() override;
|
||||||
|
GElfSymbolTable* getReferencedSymbolTable(uint16_t index)
|
||||||
|
{
|
||||||
|
return static_cast<GElfSymbolTable*>(section(index));
|
||||||
|
}
|
||||||
GElfSymbolTable* getSymtab(uint16_t index) override
|
GElfSymbolTable* getSymtab(uint16_t index) override
|
||||||
{
|
{
|
||||||
if (section(index)->type() == SHT_SYMTAB)
|
if (section(index)->type() == SHT_SYMTAB)
|
||||||
@@ -1261,7 +1265,7 @@ namespace elf {
|
|||||||
bool GElfRelocationSection::pullData()
|
bool GElfRelocationSection::pullData()
|
||||||
{
|
{
|
||||||
section = elf->section(hdr.sh_info);
|
section = elf->section(hdr.sh_info);
|
||||||
symtab = elf->getSymtab(hdr.sh_link);
|
symtab = elf->getReferencedSymbolTable(hdr.sh_link);
|
||||||
Elf_Scn *lScn = elf_getscn(elf->e, ndxscn);
|
Elf_Scn *lScn = elf_getscn(elf->e, ndxscn);
|
||||||
assert(lScn);
|
assert(lScn);
|
||||||
Elf_Data *lData = elf_getdata(lScn, nullptr);
|
Elf_Data *lData = elf_getdata(lScn, nullptr);
|
||||||
|
|||||||
Reference in New Issue
Block a user