diff --git a/Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/relocation/MIPS_ElfRelocationHandler.java b/Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/relocation/MIPS_ElfRelocationHandler.java index 1701c8fe0e..80b326adc8 100644 --- a/Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/relocation/MIPS_ElfRelocationHandler.java +++ b/Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/relocation/MIPS_ElfRelocationHandler.java @@ -357,8 +357,14 @@ public class MIPS_ElfRelocationHandler } value = symbolValue; if (elfRelocationContext.extractAddend()) { - // extract addend based upon pointer size - addend = memory.getInt(relocationAddress); + // Extract addend based upon pointer size when saving 64-bit addend + // for packed relocation type + if (saveValue && program.getDefaultPointerSize() == 8) { + addend = memory.getLong(relocationAddress); + } + else { + addend = memory.getInt(relocationAddress); + } } newValue = value + addend;