GT-3511 revised fix for branch to self with invalid delay slot

This commit is contained in:
ghidra1 2020-01-29 13:01:06 -05:00
parent 92a1c0dccf
commit d73c362790
2 changed files with 2 additions and 5 deletions

View file

@ -1150,12 +1150,12 @@ public class Disassembler implements DisassemblerConflictHandler {
throws InsufficientBytesException, UnknownInstructionException, throws InsufficientBytesException, UnknownInstructionException,
AddressOverflowException, NestedDelaySlotException { AddressOverflowException, NestedDelaySlotException {
List<PseudoInstruction> delaySlotList = parseDelaySlots(inst, blockMemBuffer, block);
if (followFlow) { if (followFlow) {
processInstructionFlows(inst, block); processInstructionFlows(inst, block);
} }
List<PseudoInstruction> delaySlotList = parseDelaySlots(inst, blockMemBuffer, block);
block.addInstruction(inst); block.addInstruction(inst);
if (delaySlotList != null) { if (delaySlotList != null) {

View file

@ -174,9 +174,6 @@ class DisassemblerQueue {
branchFlow = currentBranchQueue.first(); branchFlow = currentBranchQueue.first();
currentBranchQueue.remove(branchFlow); currentBranchQueue.remove(branchFlow);
} }
if (processedBranchFlows.contains(branchFlow)) {
continue;
}
processedBranchFlows.add(branchFlow); processedBranchFlows.add(branchFlow);
Address blockAddr = branchFlow.getDestinationAddress(); Address blockAddr = branchFlow.getDestinationAddress();