From f7138da6f7d8e9d31aec7b3991507cd35c75b4db Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Mon, 11 Aug 2025 12:45:37 -0400 Subject: [PATCH] GP-5918 Corrected ELF Relocation regression for MIPS 64-bit introduced with GP-5826 in Ghidra 11.4.1 --- .../elf/relocation/MIPS_ElfRelocationHandler.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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;