mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GP-1036 EXTERNAL Block Offset-Reference refactor
This commit is contained in:
@@ -222,12 +222,13 @@ public class PowerPC64_ElfRelocationHandler extends ElfRelocationHandler {
|
||||
case PowerPC64_ElfRelocationConstants.R_PPC64_UADDR64:
|
||||
case PowerPC64_ElfRelocationConstants.R_PPC64_ADDR64:
|
||||
case PowerPC64_ElfRelocationConstants.R_PPC64_GLOB_DAT:
|
||||
if (addend != 0 && isUnsupportedExternalRelocation(program, relocationAddress,
|
||||
symbolAddr, symbolName, addend, elfRelocationContext.getLog())) {
|
||||
addend = 0; // prefer bad fixup for EXTERNAL over really-bad fixup
|
||||
}
|
||||
value64 = symbolValue + addend;
|
||||
memory.setLong(relocationAddress, value64);
|
||||
if (addend != 0) {
|
||||
warnExternalOffsetRelocation(program, relocationAddress,
|
||||
symbolAddr, symbolName, addend, elfRelocationContext.getLog());
|
||||
applyComponentOffsetPointer(program, relocationAddress, addend);
|
||||
}
|
||||
break;
|
||||
case PowerPC64_ElfRelocationConstants.R_PPC64_TOC:
|
||||
memory.setLong(relocationAddress, toc);
|
||||
|
||||
@@ -91,12 +91,13 @@ public class PowerPC_ElfRelocationHandler extends ElfRelocationHandler {
|
||||
case PowerPC_ElfRelocationConstants.R_PPC_ADDR32:
|
||||
case PowerPC_ElfRelocationConstants.R_PPC_UADDR32:
|
||||
case PowerPC_ElfRelocationConstants.R_PPC_GLOB_DAT:
|
||||
if (addend != 0 && isUnsupportedExternalRelocation(program, relocationAddress,
|
||||
symbolAddr, symbolName, addend, elfRelocationContext.getLog())) {
|
||||
addend = 0; // prefer bad fixup for EXTERNAL over really-bad fixup
|
||||
}
|
||||
newValue = symbolValue + addend;
|
||||
memory.setInt(relocationAddress, newValue);
|
||||
if (addend != 0) {
|
||||
warnExternalOffsetRelocation(program, relocationAddress,
|
||||
symbolAddr, symbolName, addend, elfRelocationContext.getLog());
|
||||
applyComponentOffsetPointer(program, relocationAddress, addend);
|
||||
}
|
||||
break;
|
||||
case PowerPC_ElfRelocationConstants.R_PPC_ADDR24:
|
||||
newValue = (symbolValue + addend) >> 2;
|
||||
|
||||
Reference in New Issue
Block a user