From 6056e01f7a677ba32a217ea1ecf78a7b32648ae1 Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Wed, 21 Sep 2022 14:26:26 -0400 Subject: [PATCH] GP-2592 corrected MIPS ELF .plt.got markup issue --- .../app/util/bin/format/elf/ElfDefaultGotPltMarkup.java | 3 +++ .../app/util/bin/format/elf/extend/MIPS_ElfExtension.java | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/elf/ElfDefaultGotPltMarkup.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/elf/ElfDefaultGotPltMarkup.java index baed2f3c30..306f62204d 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/elf/ElfDefaultGotPltMarkup.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/elf/ElfDefaultGotPltMarkup.java @@ -589,6 +589,9 @@ public class ElfDefaultGotPltMarkup { * @param data program data */ public static void setConstant(Data data) { + if (data == null) { + return; + } Memory memory = data.getProgram().getMemory(); MemoryBlock block = memory.getBlock(data.getAddress()); if (!block.isWrite() || block.getName().startsWith(ElfSectionHeaderConstants.dot_got)) { diff --git a/Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/extend/MIPS_ElfExtension.java b/Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/extend/MIPS_ElfExtension.java index 1c0091872f..11bf62ce73 100644 --- a/Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/extend/MIPS_ElfExtension.java +++ b/Ghidra/Processors/MIPS/src/main/java/ghidra/app/util/bin/format/elf/extend/MIPS_ElfExtension.java @@ -830,11 +830,12 @@ public class MIPS_ElfExtension extends ElfExtension { long imageShift = elfLoadHelper.getImageBaseWordAdjustmentOffset(); - // process local symbol got entries + // process global dynamic symbol got entries int gotEntryIndex = 1; for (int i = 0; i < gotSymbolIndex; i++) { monitor.checkCanceled(); - if (!elfSymbols[i].isFunction() || elfSymbols[i].getSectionHeaderIndex() != 0) { + if (!elfSymbols[i].isFunction() || !elfSymbols[i].isGlobal() || + elfSymbols[i].getSectionHeaderIndex() != 0) { continue; } Address gotEntryAddr = adjustTableEntryIfNonZero(mipsPltgotBase, ++gotEntryIndex,