GP-4634 Refactored Function Compare Service and added action to add

functions to the last comparison window.
This commit is contained in:
ghidragon 2024-06-04 15:33:20 -04:00
parent c19facf226
commit ddd2f22c28
45 changed files with 2086 additions and 3015 deletions

View file

@ -23,9 +23,9 @@ import org.apache.commons.collections4.IteratorUtils;
import generic.lsh.vector.*;
import ghidra.app.decompiler.DecompileException;
import ghidra.app.plugin.core.functioncompare.FunctionComparisonProvider;
import ghidra.app.script.GhidraScript;
import ghidra.app.services.FunctionComparisonService;
import ghidra.app.services.MatchedFunctionComparisonModel;
import ghidra.app.tablechooser.*;
import ghidra.features.bsim.query.*;
import ghidra.features.bsim.query.client.Configuration;
@ -341,7 +341,7 @@ public class LocalBSimQueryScript extends GhidraScript {
class CompareMatchesExecutor implements TableChooserExecutor {
private FunctionComparisonService compareService;
private FunctionComparisonProvider comparisonProvider;
private MatchedFunctionComparisonModel model;
public CompareMatchesExecutor() {
compareService = state.getTool().getService(FunctionComparisonService.class);
@ -355,14 +355,11 @@ public class LocalBSimQueryScript extends GhidraScript {
@Override
public boolean execute(AddressableRowObject rowObject) {
LocalBSimMatch match = (LocalBSimMatch) rowObject;
if (comparisonProvider == null) {
comparisonProvider =
compareService.compareFunctions(match.getSourceFunc(), match.getTargetFunc());
}
else {
compareService.compareFunctions(match.getSourceFunc(), match.getTargetFunc(),
comparisonProvider);
if (model == null) {
model = new MatchedFunctionComparisonModel();
compareService.createCustomComparison(model, null);
}
model.addMatch(match.getSourceFunc(), match.getTargetFunc());
return false;
}
}