mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-06-01 14:53:17 +08:00
Merge branch 'GP-4291_ghidra1_PR-5784_astrelsky_ElfParseDynamicHeader'
(Closes #5784)
This commit is contained in:
@@ -702,15 +702,17 @@ public class ElfHeader implements StructConverter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ElfProgramHeader loadHeader = getProgramLoadHeaderContaining(vaddr);
|
ElfProgramHeader loadHeader = getProgramLoadHeaderContaining(vaddr);
|
||||||
if (loadHeader != null) {
|
if (loadHeader == null) {
|
||||||
long dynamicTableOffset = loadHeader.getOffset() +
|
// Assume p_offset can be used reliably if no corresponding PT_LOAD
|
||||||
(dynamicHeaders[0].getVirtualAddress() - loadHeader.getVirtualAddress());
|
loadHeader = dynamicHeaders[0];
|
||||||
dynamicTable = new ElfDynamicTable(reader, this, dynamicTableOffset,
|
|
||||||
dynamicHeaders[0].getVirtualAddress());
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
long dynamicTableOffset = loadHeader.getOffset() +
|
||||||
|
(dynamicHeaders[0].getVirtualAddress() - loadHeader.getVirtualAddress());
|
||||||
|
dynamicTable = new ElfDynamicTable(reader, this, dynamicTableOffset,
|
||||||
|
dynamicHeaders[0].getVirtualAddress());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else if (dynamicHeaders.length > 1) {
|
if (dynamicHeaders.length > 1) {
|
||||||
errorConsumer.accept("Multiple ELF Dynamic table program headers found");
|
errorConsumer.accept("Multiple ELF Dynamic table program headers found");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user