From dd917fba7af7cb344ae6245f8a99e884a7588b7c Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Wed, 29 Jun 2022 11:06:30 -0400 Subject: [PATCH] GP-2256 avoid ELF PLT disassembly when alternate instruction set exists --- .../util/bin/format/elf/ElfDefaultGotPltMarkup.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 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 be7b097223..985e7e5508 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 @@ -18,6 +18,7 @@ package ghidra.app.util.bin.format.elf; import java.util.*; import ghidra.app.cmd.refs.RemoveReferenceCmd; +import ghidra.app.util.PseudoDisassembler; import ghidra.program.disassemble.Disassembler; import ghidra.program.model.address.*; import ghidra.program.model.data.*; @@ -470,10 +471,13 @@ public class ElfDefaultGotPltMarkup { TaskMonitor monitor) throws CancelledException { try { - // Disassemble section. + // Disassemble PLT section. // Disassembly is only done so we can see all instructions since many - // of them are unreachable after applying relocations - disassemble(minAddress, maxAddress, program, monitor); + // of them are unreachable after applying relocations. Avoid disassembly + // when alternate instruction sets exist. + if (!PseudoDisassembler.hasLowBitCodeModeInAddrValues(program)) { + disassemble(minAddress, maxAddress, program, monitor); + } // Any symbols in the linkage section should be converted to External function thunks // This can be seen with ARM Android examples.