Merge remote-tracking branch 'origin/GP-2122_emteere_tmodereg_protect' into patch

This commit is contained in:
Ryan Kurtz
2022-07-25 03:02:56 -04:00

View File

@@ -1,6 +1,5 @@
/* ### /* ###
* IP: GHIDRA * IP: GHIDRA
* REVIEWED: YES
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -215,15 +214,17 @@ public class ArmAggressiveInstructionFinderAnalyzer extends AbstractAnalyzer {
new PseudoDisassemblerContext(curProgram.getProgramContext()); new PseudoDisassemblerContext(curProgram.getProgramContext());
// get the current value from the program context // get the current value from the program context
curValue = curProgram.getProgramContext().getValue(tmodeReg, entry, false); if (tmodeReg != null) {
// if it doesn't have one set, try to get it the last context from the instruction before curValue = curProgram.getProgramContext().getValue(tmodeReg, entry, false);
if (curValue == null) { // if it doesn't have one set, try to get it the last context from the instruction before
Instruction instr = listing.getInstructionBefore(entry); if (curValue == null) {
if (instr != null) { Instruction instr = listing.getInstructionBefore(entry);
curValue = if (instr != null) {
curProgram.getProgramContext().getValue(tmodeReg, instr.getMinAddress(), false); curValue =
if (curValue != null) { curProgram.getProgramContext().getValue(tmodeReg, instr.getMinAddress(), false);
pseudoContext.setValue(tmodeReg, entry, curValue); if (curValue != null) {
pseudoContext.setValue(tmodeReg, entry, curValue);
}
} }
} }
} }
@@ -257,7 +258,9 @@ public class ArmAggressiveInstructionFinderAnalyzer extends AbstractAnalyzer {
addsInfo = true; addsInfo = true;
} }
pseudoContext = new PseudoDisassemblerContext(curProgram.getProgramContext()); pseudoContext = new PseudoDisassemblerContext(curProgram.getProgramContext());
pseudoContext.setValue(tmodeReg, entry, curValue); if (tmodeReg != null) {
pseudoContext.setValue(tmodeReg, entry, curValue);
}
AddressSet body = AddressSet body =
pseudo.followSubFlows(entry, pseudoContext, 1000, new PseudoFlowProcessor() { pseudo.followSubFlows(entry, pseudoContext, 1000, new PseudoFlowProcessor() {
Object lastResults[] = null; Object lastResults[] = null;