Merge remote-tracking branch 'origin/patch'

This commit is contained in:
Ryan Kurtz 2024-01-29 17:16:04 -05:00
commit 68b5d48f64
2 changed files with 14 additions and 40 deletions

View file

@ -79,6 +79,9 @@ public class TraceDisassembleCommand extends TypedBackgroundCommand<TraceProgram
public boolean applyToTyped(TraceProgramView view, TaskMonitor monitor) { public boolean applyToTyped(TraceProgramView view, TaskMonitor monitor) {
Disassembler disassembler = getDisassembler(view, monitor); Disassembler disassembler = getDisassembler(view, monitor);
MemBuffer buffer = getBuffer(view); MemBuffer buffer = getBuffer(view);
if (buffer == null) {
return true; // Memory space does not exist. Just go silently.
}
int limit = computeLimit(); int limit = computeLimit();
// TODO: limit is actually instruction count, not byte count :'( // TODO: limit is actually instruction count, not byte count :'(
InstructionBlock block = disassembler.pseudoDisassembleBlock(buffer, initialContext, limit); InstructionBlock block = disassembler.pseudoDisassembleBlock(buffer, initialContext, limit);

View file

@ -15,60 +15,26 @@
*/ */
package ghidra.feature.vt.gui.actions; package ghidra.feature.vt.gui.actions;
import java.util.ArrayList; import java.util.*;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import ghidra.feature.vt.api.correlator.program.CombinedFunctionAndDataReferenceProgramCorrelatorFactory; import ghidra.feature.vt.api.correlator.program.*;
import ghidra.feature.vt.api.correlator.program.DataReferenceProgramCorrelatorFactory; import ghidra.feature.vt.api.main.*;
import ghidra.feature.vt.api.correlator.program.DuplicateFunctionMatchProgramCorrelatorFactory;
import ghidra.feature.vt.api.correlator.program.ExactDataMatchProgramCorrelatorFactory;
import ghidra.feature.vt.api.correlator.program.ExactMatchBytesProgramCorrelatorFactory;
import ghidra.feature.vt.api.correlator.program.ExactMatchInstructionsProgramCorrelatorFactory;
import ghidra.feature.vt.api.correlator.program.ExactMatchMnemonicsProgramCorrelatorFactory;
import ghidra.feature.vt.api.correlator.program.FunctionReferenceProgramCorrelatorFactory;
import ghidra.feature.vt.api.correlator.program.SymbolNameProgramCorrelatorFactory;
import ghidra.feature.vt.api.correlator.program.VTAbstractReferenceProgramCorrelatorFactory;
import ghidra.feature.vt.api.main.VTAssociation;
import ghidra.feature.vt.api.main.VTAssociationManager;
import ghidra.feature.vt.api.main.VTAssociationStatus;
import ghidra.feature.vt.api.main.VTAssociationType;
import ghidra.feature.vt.api.main.VTMarkupItem;
import ghidra.feature.vt.api.main.VTMatch;
import ghidra.feature.vt.api.main.VTMatchSet;
import ghidra.feature.vt.api.main.VTProgramCorrelator;
import ghidra.feature.vt.api.main.VTProgramCorrelatorFactory;
import ghidra.feature.vt.api.main.VTSession;
import ghidra.feature.vt.api.util.VTAssociationStatusException; import ghidra.feature.vt.api.util.VTAssociationStatusException;
import ghidra.feature.vt.api.util.VTOptions; import ghidra.feature.vt.api.util.VTOptions;
import ghidra.feature.vt.gui.plugin.AddressCorrelatorManager; import ghidra.feature.vt.gui.plugin.AddressCorrelatorManager;
import ghidra.feature.vt.gui.task.ApplyMarkupItemTask; import ghidra.feature.vt.gui.task.ApplyMarkupItemTask;
import ghidra.feature.vt.gui.util.ImpliedMatchUtils; import ghidra.feature.vt.gui.util.*;
import ghidra.feature.vt.gui.util.MatchInfo;
import ghidra.feature.vt.gui.util.MatchInfoFactory;
import ghidra.feature.vt.gui.util.VTOptionDefines;
import ghidra.framework.options.ToolOptions; import ghidra.framework.options.ToolOptions;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressSetView; import ghidra.program.model.address.AddressSetView;
import ghidra.program.model.lang.OperandType; import ghidra.program.model.lang.OperandType;
import ghidra.program.model.listing.Data; import ghidra.program.model.listing.*;
import ghidra.program.model.listing.Function;
import ghidra.program.model.listing.Instruction;
import ghidra.program.model.listing.InstructionIterator;
import ghidra.program.model.listing.Program;
import ghidra.program.model.scalar.Scalar; import ghidra.program.model.scalar.Scalar;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.task.Task; import ghidra.util.task.*;
import ghidra.util.task.TaskMonitor;
import ghidra.util.task.WrappingTaskMonitor;
/** /**
* If their options are set, this command runs all of the * If their options are set, this command runs all of the
@ -503,6 +469,11 @@ public class AutoVersionTrackingTask extends Task {
MatchInfo matchInfo = matchInfoFactory.getMatchInfo(match, addressCorrelator); MatchInfo matchInfo = matchInfoFactory.getMatchInfo(match, addressCorrelator);
if (matchInfo.getSourceFunction() == null ||
matchInfo.getDestinationFunction() == null) {
continue;
}
ImpliedMatchUtils.updateImpliedMatchForAcceptedAssocation( ImpliedMatchUtils.updateImpliedMatchForAcceptedAssocation(
matchInfo.getSourceFunction(), matchInfo.getSourceFunction(),
matchInfo.getDestinationFunction(), session, matchInfo.getDestinationFunction(), session,