mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-11-22 04:05:39 +00:00
Merge remote-tracking branch 'origin/GP-4664_ghidragon_consolidating_function_compare_code--SQUASHED'
This commit is contained in:
commit
9840eee937
@ -25,8 +25,8 @@ import generic.lsh.vector.*;
|
||||
import ghidra.app.decompiler.DecompileException;
|
||||
import ghidra.app.script.GhidraScript;
|
||||
import ghidra.app.services.FunctionComparisonService;
|
||||
import ghidra.app.services.MatchedFunctionComparisonModel;
|
||||
import ghidra.app.tablechooser.*;
|
||||
import ghidra.features.base.codecompare.model.MatchedFunctionComparisonModel;
|
||||
import ghidra.features.bsim.query.*;
|
||||
import ghidra.features.bsim.query.client.Configuration;
|
||||
import ghidra.features.bsim.query.description.FunctionDescription;
|
||||
|
@ -36,6 +36,7 @@ import docking.widgets.table.RowObjectTableModel;
|
||||
import generic.lsh.vector.LSHVectorFactory;
|
||||
import generic.theme.GIcon;
|
||||
import ghidra.app.services.*;
|
||||
import ghidra.features.base.codecompare.model.MatchedFunctionComparisonModel;
|
||||
import ghidra.features.bsim.gui.BSimSearchPlugin;
|
||||
import ghidra.features.bsim.gui.filters.BSimFilterType;
|
||||
import ghidra.features.bsim.gui.filters.Md5BSimFilterType;
|
||||
|
@ -22,6 +22,7 @@ import java.awt.event.ItemListener;
|
||||
import javax.swing.*;
|
||||
|
||||
import docking.widgets.EmptyBorderButton;
|
||||
import docking.widgets.TitledPanel;
|
||||
import docking.widgets.button.GRadioButton;
|
||||
import docking.widgets.fieldpanel.FieldPanel;
|
||||
import docking.widgets.fieldpanel.internal.FieldPanelCoordinator;
|
||||
@ -38,7 +39,6 @@ import ghidra.app.util.viewer.format.FormatManager;
|
||||
import ghidra.app.util.viewer.listingpanel.*;
|
||||
import ghidra.app.util.viewer.multilisting.AddressTranslator;
|
||||
import ghidra.app.util.viewer.multilisting.MultiListingLayoutModel;
|
||||
import ghidra.app.util.viewer.util.TitledPanel;
|
||||
import ghidra.framework.data.DomainObjectMergeManager;
|
||||
import ghidra.framework.model.DomainObjectListener;
|
||||
import ghidra.framework.options.ToolOptions;
|
||||
|
@ -24,6 +24,7 @@ import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
import docking.widgets.EmptyBorderButton;
|
||||
import docking.widgets.TitledPanel;
|
||||
import docking.widgets.checkbox.GCheckBox;
|
||||
import docking.widgets.fieldpanel.FieldPanel;
|
||||
import docking.widgets.fieldpanel.internal.FieldPanelCoordinator;
|
||||
@ -41,7 +42,6 @@ import ghidra.app.util.viewer.listingpanel.*;
|
||||
import ghidra.app.util.viewer.multilisting.AddressTranslator;
|
||||
import ghidra.app.util.viewer.multilisting.MultiListingLayoutModel;
|
||||
import ghidra.app.util.viewer.util.AddressIndexMap;
|
||||
import ghidra.app.util.viewer.util.TitledPanel;
|
||||
import ghidra.framework.model.DomainObjectListener;
|
||||
import ghidra.framework.options.ToolOptions;
|
||||
import ghidra.framework.plugintool.PluginTool;
|
||||
|
@ -20,8 +20,8 @@ import java.awt.Color;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import docking.widgets.TitledPanel;
|
||||
import generic.theme.GColor;
|
||||
import ghidra.app.util.viewer.util.TitledPanel;
|
||||
|
||||
public class ListingPanelContainer extends JPanel {
|
||||
|
||||
|
@ -17,7 +17,7 @@ package ghidra.app.plugin.core.functioncompare.actions;
|
||||
|
||||
import docking.ActionContext;
|
||||
import docking.action.DockingAction;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonActionContext;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonActionContext;
|
||||
import ghidra.program.model.listing.Function;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.util.Msg;
|
||||
|
@ -17,21 +17,19 @@ package ghidra.app.services;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import ghidra.app.plugin.core.functioncompare.FunctionComparisonPlugin;
|
||||
import ghidra.app.plugin.core.functioncompare.FunctionComparisonProvider;
|
||||
import ghidra.framework.plugintool.ServiceInfo;
|
||||
import ghidra.features.base.codecompare.model.FunctionComparisonModel;
|
||||
import ghidra.features.base.codecompare.model.MatchedFunctionComparisonModel;
|
||||
import ghidra.program.model.listing.Function;
|
||||
import utility.function.Callback;
|
||||
|
||||
/**
|
||||
* Service interface to create comparisons between functions which will be displayed
|
||||
* side-by-side in a {@link FunctionComparisonProvider}. Each side in the
|
||||
* side-by-side in a function comparison window. Each side in the
|
||||
* display will allow the user to select one or more functions
|
||||
*
|
||||
* <p>Concurrent usage: All work performed by this service will be done asynchronously on the
|
||||
* Swing thread.
|
||||
*/
|
||||
@ServiceInfo(defaultProvider = FunctionComparisonPlugin.class)
|
||||
public interface FunctionComparisonService {
|
||||
|
||||
/**
|
||||
|
@ -1,181 +0,0 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
|
||||
import ghidra.app.nav.Navigatable;
|
||||
import ghidra.app.services.*;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.address.AddressSetView;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.program.model.symbol.ExternalLocation;
|
||||
import ghidra.program.util.ProgramLocation;
|
||||
import ghidra.util.datastruct.Duo.Side;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
||||
/**
|
||||
* This is a GoToService for a dual listing panel. It allows the goTo to occur relative to the
|
||||
* left or right listing panel of a dual listing panel, since the left and right sides can be
|
||||
* displaying totally different addresses.
|
||||
*/
|
||||
class DualListingGoToService implements GoToService {
|
||||
|
||||
private ListingCodeComparisonPanel dualListing;
|
||||
private Side side;
|
||||
private GoToOverrideService overrideService;
|
||||
private GoToService goToService;
|
||||
|
||||
/**
|
||||
* Constructs a goTo service for a dual listing panel.
|
||||
* @param goToService the GoToService that this overrides and that can be used when the
|
||||
* GoToService methods don't pertain specifically to the left or right listing panel.
|
||||
* @param dualListing the dual listing panel
|
||||
* @param side the LEFT or RIGHT side
|
||||
*/
|
||||
DualListingGoToService(GoToService goToService, ListingCodeComparisonPanel dualListing,
|
||||
Side side) {
|
||||
this.goToService = goToService;
|
||||
this.dualListing = dualListing;
|
||||
this.side = side;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GoToOverrideService getOverrideService() {
|
||||
return overrideService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goTo(ProgramLocation loc) {
|
||||
return dualGoTo(loc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goTo(Navigatable navigatable, Program program, Address address,
|
||||
Address refAddress) {
|
||||
return dualGoTo(new ProgramLocation(program, address));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goTo(ProgramLocation loc, Program program) {
|
||||
return dualGoTo(loc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goTo(Navigatable navigatable, ProgramLocation loc, Program program) {
|
||||
return dualGoTo(loc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goTo(Navigatable navigatable, Address goToAddress) {
|
||||
return dualGoTo(goToAddress);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the address to make sure the listing won't navigate outside the addresses
|
||||
* it currently has loaded. If it is not a valid address it will set a status message
|
||||
* on the dual listing.
|
||||
* @param addr the address to check
|
||||
* @return true if the address is valid for navigation.
|
||||
*/
|
||||
private boolean validateAddress(Address addr) {
|
||||
if (addr == null) {
|
||||
return false;
|
||||
}
|
||||
AddressSetView addresses = dualListing.getAddresses(side);
|
||||
if (!addresses.contains(addr)) {
|
||||
dualListing.setStatusInfo(
|
||||
"\"" + addr.toString() + "\" is outside the current listing's view.");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean dualGoTo(ProgramLocation loc) {
|
||||
if (loc == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Only go if the location address is in the listing's current address set.
|
||||
if (!validateAddress(loc.getAddress())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ListingPanel listingPanel = dualListing.getListingPanel(side);
|
||||
return listingPanel.goTo(loc);
|
||||
}
|
||||
|
||||
private boolean dualGoTo(Address addr) {
|
||||
|
||||
// Only go if the address is in the listing's current address set.
|
||||
if (!validateAddress(addr)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ListingPanel listingPanel = dualListing.getListingPanel(side);
|
||||
return listingPanel.goTo(addr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goTo(Address currentAddress, Address goToAddress) {
|
||||
return dualGoTo(goToAddress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goTo(Address goToAddress) {
|
||||
return dualGoTo(goToAddress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goTo(Address goToAddress, Program program) {
|
||||
return dualGoTo(goToAddress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goToExternalLocation(ExternalLocation extLoc, boolean checkNavigationOption) {
|
||||
throw new UnsupportedOperationException(
|
||||
"Connot Go To an external address from a dual listing view.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goToExternalLocation(Navigatable navigatable, ExternalLocation extLoc,
|
||||
boolean checkNavigationOption) {
|
||||
throw new UnsupportedOperationException(
|
||||
"Connot Go To an external address from a dual listing view.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goToQuery(Address fromAddr, QueryData queryData, GoToServiceListener listener,
|
||||
TaskMonitor monitor) {
|
||||
throw new UnsupportedOperationException(
|
||||
"Go To Address or Label is not allowed in a dual listing view.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean goToQuery(Navigatable navigatable, Address fromAddr, QueryData queryData,
|
||||
GoToServiceListener listener, TaskMonitor monitor) {
|
||||
throw new UnsupportedOperationException(
|
||||
"Go To Address or Label is not allowed in a dual listing view.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOverrideService(GoToOverrideService override) {
|
||||
overrideService = override;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Navigatable getDefaultNavigatable() {
|
||||
return goToService.getDefaultNavigatable();
|
||||
}
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
|
||||
import ghidra.app.services.GoToService;
|
||||
import ghidra.framework.plugintool.ServiceProvider;
|
||||
import ghidra.framework.plugintool.util.ServiceListener;
|
||||
import ghidra.util.datastruct.Duo.Side;
|
||||
|
||||
/**
|
||||
* This provides services, but overrides and implements its own goTo for one of the listing
|
||||
* panels in a dual listing code comparison panel.
|
||||
* If a goTo service is requested, this provides a goTo service that limits where you can go.
|
||||
* It constrains the goTo to addresses that are currently in the indicated listing panel of
|
||||
* the dual listing code comparison panel.
|
||||
*/
|
||||
class DualListingServiceProvider implements ServiceProvider {
|
||||
|
||||
private ServiceProvider serviceProvider;
|
||||
private DualListingGoToService dualListingGoToService;
|
||||
|
||||
/**
|
||||
* Constructor for a DualListingServiceProvider.
|
||||
* @param serviceProvider the service provider to use for acquiring services other than goTo.
|
||||
* @param panel the dual listing code comparison panel.
|
||||
* @param side LEFT or RIGHT
|
||||
*/
|
||||
DualListingServiceProvider(ServiceProvider serviceProvider, ListingCodeComparisonPanel panel,
|
||||
Side side) {
|
||||
this.serviceProvider = serviceProvider;
|
||||
GoToService goToService = serviceProvider.getService(GoToService.class);
|
||||
this.dualListingGoToService = new DualListingGoToService(goToService, panel, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addServiceListener(ServiceListener listener) {
|
||||
serviceProvider.addServiceListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getService(Class<T> serviceClass) {
|
||||
if (serviceClass == GoToService.class) {
|
||||
return serviceClass.cast(dualListingGoToService);
|
||||
}
|
||||
return serviceProvider.getService(serviceClass);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeServiceListener(ServiceListener listener) {
|
||||
serviceProvider.removeServiceListener(listener);
|
||||
}
|
||||
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.mem.MemoryBlock;
|
||||
|
||||
public interface AddressPixelMap {
|
||||
|
||||
public void createMapping(int width);
|
||||
|
||||
public Address getAddress(int pixel);
|
||||
|
||||
public int getPixel(Address address);
|
||||
|
||||
public MemoryBlock[] getBlocks();
|
||||
|
||||
public Rectangle getBlockPosition(MemoryBlock memoryBlock);
|
||||
|
||||
public void clear();
|
||||
|
||||
}
|
@ -1,122 +0,0 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.program.model.mem.MemoryBlock;
|
||||
|
||||
public class MemoryBlockMap implements AddressPixelMap {
|
||||
|
||||
private Program program;
|
||||
private MemoryBlock[] blocks;
|
||||
private float addressesPerPixel;
|
||||
private int[] pixels;
|
||||
|
||||
public MemoryBlockMap(Program program) {
|
||||
this.program = program;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createMapping(int width) {
|
||||
if (width <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
blocks = includeBlocks();
|
||||
pixels = new int[blocks.length];
|
||||
long totalSize = 0;
|
||||
for (MemoryBlock block : blocks) {
|
||||
totalSize += block.getSize();
|
||||
}
|
||||
addressesPerPixel = (float) totalSize / (float) width;
|
||||
for (int i = 0; i < blocks.length; i++) {
|
||||
pixels[i] = Math.round(blocks[i].getSize() / addressesPerPixel);
|
||||
}
|
||||
}
|
||||
|
||||
protected MemoryBlock[] includeBlocks() {
|
||||
return program.getMemory().getBlocks();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Address getAddress(int pixel) {
|
||||
if (pixels == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
int curPos = 0;
|
||||
for (int i = 0; i < pixels.length; i++) {
|
||||
int curSize = pixels[i];
|
||||
if (curPos + curSize > pixel) {
|
||||
return blocks[i].getStart().add(
|
||||
Math.round((pixel - curPos) * addressesPerPixel));
|
||||
}
|
||||
curPos += curSize;
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPixel(Address address) {
|
||||
if (address == null || pixels == null || blocks == null) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int curPixel = 0;
|
||||
for (int i = 0; i < blocks.length; i++) {
|
||||
MemoryBlock block = blocks[i];
|
||||
if (block.contains(address)) {
|
||||
long offset = address.subtract(block.getStart());
|
||||
return curPixel + Math.round(offset / addressesPerPixel);
|
||||
}
|
||||
curPixel += pixels[i];
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MemoryBlock[] getBlocks() {
|
||||
return blocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rectangle getBlockPosition(MemoryBlock block) {
|
||||
int x = 0;
|
||||
for (int i = 0; i < blocks.length; i++) {
|
||||
if (block == blocks[i]) {
|
||||
return new Rectangle(x, 0, pixels[i], 0);
|
||||
}
|
||||
x += pixels[i];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clear() {
|
||||
blocks = null;
|
||||
pixels = null;
|
||||
}
|
||||
|
||||
}
|
@ -13,11 +13,11 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
import ghidra.app.util.viewer.util.ComparisonData;
|
||||
import ghidra.features.base.codecompare.panel.ComparisonData;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.address.AddressSetView;
|
||||
import ghidra.program.model.listing.*;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import java.awt.Color;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
@ -36,8 +36,9 @@ import generic.theme.GIcon;
|
||||
import ghidra.app.plugin.core.functioncompare.actions.*;
|
||||
import ghidra.app.util.ListingHighlightProvider;
|
||||
import ghidra.app.util.viewer.format.*;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonPanel;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonPanelActionContext;
|
||||
import ghidra.app.util.viewer.listingpanel.*;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonPanelActionContext;
|
||||
import ghidra.framework.options.*;
|
||||
import ghidra.framework.plugintool.PluginTool;
|
||||
import ghidra.program.model.address.*;
|
||||
@ -250,7 +251,7 @@ public class ListingCodeComparisonPanel
|
||||
public ActionContext getActionContext(ComponentProvider provider, MouseEvent event) {
|
||||
|
||||
if (event == null) {
|
||||
DualListingActionContext context = new DualListingActionContext(provider, this);
|
||||
ListingComparisonActionContext context = new ListingComparisonActionContext(provider, this);
|
||||
return context;
|
||||
}
|
||||
|
||||
@ -273,7 +274,7 @@ public class ListingCodeComparisonPanel
|
||||
return new DefaultActionContext(provider).setContextObject(fieldHeaderLocation);
|
||||
}
|
||||
|
||||
return new DualListingActionContext(provider, this);
|
||||
return new ListingComparisonActionContext(provider, this);
|
||||
}
|
||||
|
||||
/**
|
@ -13,15 +13,15 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import docking.ComponentProvider;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonActionContext;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonActionContext;
|
||||
|
||||
/**
|
||||
* Action context for a ListingCodeComparisonPanel.
|
||||
*/
|
||||
public class DualListingActionContext extends CodeComparisonActionContext {
|
||||
public class ListingComparisonActionContext extends CodeComparisonActionContext {
|
||||
|
||||
private ListingCodeComparisonPanel codeComparisonPanel = null;
|
||||
|
||||
@ -30,7 +30,7 @@ public class DualListingActionContext extends CodeComparisonActionContext {
|
||||
* @param provider the provider that uses this action context.
|
||||
* @param panel the ListingCodeComparisonPanel that generated this context
|
||||
*/
|
||||
public DualListingActionContext(ComponentProvider provider, ListingCodeComparisonPanel panel) {
|
||||
public ListingComparisonActionContext(ComponentProvider provider, ListingCodeComparisonPanel panel) {
|
||||
super(provider, panel, panel.getActiveListingPanel().getFieldPanel());
|
||||
this.codeComparisonPanel = panel;
|
||||
}
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
@ -23,6 +23,7 @@ import docking.widgets.fieldpanel.FieldPanel;
|
||||
import docking.widgets.fieldpanel.internal.LayoutLockedFieldPanelCoordinator;
|
||||
import docking.widgets.fieldpanel.internal.LineLockedFieldPanelCoordinator;
|
||||
import docking.widgets.fieldpanel.support.ViewerPosition;
|
||||
import ghidra.app.util.viewer.listingpanel.ProgramLocationTranslator;
|
||||
import ghidra.app.util.viewer.util.AddressIndexMap;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.util.ListingAddressCorrelation;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@ -89,7 +89,7 @@ public class ListingDiffActionManager {
|
||||
toggleIgnoreRegisterNamesAction.setEnabled(isShowing);
|
||||
}
|
||||
|
||||
class ToggleIgnoreByteDiffsAction extends DualListingToggleDockingAction {
|
||||
class ToggleIgnoreByteDiffsAction extends ListingDisplayToggleAction {
|
||||
|
||||
ToggleIgnoreByteDiffsAction() {
|
||||
super("Toggle Ignore Byte Diffs", "DualListing");
|
||||
@ -117,7 +117,7 @@ public class ListingDiffActionManager {
|
||||
}
|
||||
}
|
||||
|
||||
class ToggleIgnoreConstantsAction extends DualListingToggleDockingAction {
|
||||
class ToggleIgnoreConstantsAction extends ListingDisplayToggleAction {
|
||||
|
||||
ToggleIgnoreConstantsAction() {
|
||||
super("Toggle Ignore Constants", "DualListing");
|
||||
@ -146,7 +146,7 @@ public class ListingDiffActionManager {
|
||||
}
|
||||
}
|
||||
|
||||
class ToggleIgnoreRegisterNamesAction extends DualListingToggleDockingAction {
|
||||
class ToggleIgnoreRegisterNamesAction extends ListingDisplayToggleAction {
|
||||
|
||||
ToggleIgnoreRegisterNamesAction() {
|
||||
super("Toggle Ignore Register Names", "DualListing");
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
/**
|
||||
* Interface defining a listener that gets notified when the ListingDiff's set of differences
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.*;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import static ghidra.GhidraOptions.*;
|
||||
|
||||
@ -30,6 +30,7 @@ import ghidra.app.plugin.core.marker.MarkerManager;
|
||||
import ghidra.app.services.*;
|
||||
import ghidra.app.util.ListingHighlightProvider;
|
||||
import ghidra.app.util.viewer.format.FormatManager;
|
||||
import ghidra.app.util.viewer.listingpanel.*;
|
||||
import ghidra.app.util.viewer.util.AddressIndexMap;
|
||||
import ghidra.app.util.viewer.util.FieldNavigator;
|
||||
import ghidra.framework.options.ToolOptions;
|
@ -13,11 +13,12 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import docking.DockingWindowManager;
|
||||
import ghidra.app.nav.Navigatable;
|
||||
import ghidra.app.services.*;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingPanel;
|
||||
import ghidra.app.util.viewer.util.AddressIndexMap;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.address.AddressSetView;
|
||||
@ -28,8 +29,8 @@ import ghidra.util.Msg;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
||||
/**
|
||||
* This is a GoToService for a dual listing panel. It allows the goTo to occur relative to the
|
||||
* left or right listing panel of a dual listing panel, since the left and right sides can be
|
||||
* This is a GoToService for a listing code compare panel. It allows the goTo to occur relative to
|
||||
* the left or right listing panel of a dual listing panel, since the left and right sides can be
|
||||
* displaying totally different addresses.
|
||||
*/
|
||||
class ListingDisplayGoToService implements GoToService {
|
||||
@ -126,7 +127,7 @@ class ListingDisplayGoToService implements GoToService {
|
||||
|
||||
@Override
|
||||
public Navigatable getDefaultNavigatable() {
|
||||
return new DualListingNavigator(listingPanel, this);
|
||||
return new ListingDisplayNavigator(listingPanel, this);
|
||||
}
|
||||
|
||||
private boolean doGoTo(Address addr) {
|
@ -13,13 +13,14 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import javax.swing.Icon;
|
||||
|
||||
import ghidra.app.nav.*;
|
||||
import ghidra.app.services.GoToService;
|
||||
import ghidra.app.util.ListingHighlightProvider;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingPanel;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.program.util.ProgramLocation;
|
||||
import ghidra.program.util.ProgramSelection;
|
||||
@ -28,7 +29,7 @@ import ghidra.util.UniversalIdGenerator;
|
||||
/**
|
||||
* Navigator for the listings contained in a ListingCodeComparisonPanel.
|
||||
*/
|
||||
class DualListingNavigator implements Navigatable {
|
||||
class ListingDisplayNavigator implements Navigatable {
|
||||
|
||||
private final ListingPanel listingPanel;
|
||||
private long id;
|
||||
@ -40,7 +41,7 @@ class DualListingNavigator implements Navigatable {
|
||||
* @param goToService which side LEFT or RIGHT
|
||||
* false means it's for the right side listing.
|
||||
*/
|
||||
DualListingNavigator(ListingPanel listingPanel, GoToService goToService) {
|
||||
ListingDisplayNavigator(ListingPanel listingPanel, GoToService goToService) {
|
||||
|
||||
this.listingPanel = listingPanel;
|
||||
this.goToService = goToService;
|
@ -13,16 +13,16 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.listingpanel;
|
||||
package ghidra.features.base.codecompare.listing;
|
||||
|
||||
import docking.ActionContext;
|
||||
import docking.action.ToggleDockingAction;
|
||||
import docking.widgets.fieldpanel.FieldPanel;
|
||||
|
||||
/**
|
||||
* Class that dual listing toggle actions should extend.
|
||||
* Class that listing display toggle actions should extend.
|
||||
*/
|
||||
abstract class DualListingToggleDockingAction extends ToggleDockingAction {
|
||||
abstract class ListingDisplayToggleAction extends ToggleDockingAction {
|
||||
|
||||
/**
|
||||
* Constructor that creates a toggle action for a dual listing.
|
||||
@ -30,7 +30,7 @@ abstract class DualListingToggleDockingAction extends ToggleDockingAction {
|
||||
* @param owner the owner of this action
|
||||
* @param supportsKeyBindings true if this action's key binding should be managed
|
||||
*/
|
||||
public DualListingToggleDockingAction(String name, String owner, boolean supportsKeyBindings) {
|
||||
public ListingDisplayToggleAction(String name, String owner, boolean supportsKeyBindings) {
|
||||
super(name, owner, supportsKeyBindings);
|
||||
}
|
||||
|
||||
@ -39,7 +39,7 @@ abstract class DualListingToggleDockingAction extends ToggleDockingAction {
|
||||
* @param name the name for this action
|
||||
* @param owner the owner of this action
|
||||
*/
|
||||
public DualListingToggleDockingAction(String name, String owner) {
|
||||
public ListingDisplayToggleAction(String name, String owner) {
|
||||
super(name, owner);
|
||||
}
|
||||
|
@ -13,11 +13,10 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.services;
|
||||
package ghidra.features.base.codecompare.model;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import ghidra.app.plugin.core.functioncompare.FunctionComparisonModelListener;
|
||||
import ghidra.program.model.listing.Function;
|
||||
import ghidra.util.datastruct.Duo;
|
||||
import ghidra.util.datastruct.Duo.Side;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.services;
|
||||
package ghidra.features.base.codecompare.model;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
@ -16,25 +16,27 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package ghidra.app.services;
|
||||
package ghidra.features.base.codecompare.model;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import ghidra.app.plugin.core.functioncompare.FunctionComparisonModelListener;
|
||||
import ghidra.app.plugin.core.functioncompare.FunctionComparisonProvider;
|
||||
import ghidra.app.services.FunctionComparisonService;
|
||||
import ghidra.program.model.listing.Function;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.util.datastruct.Duo.Side;
|
||||
|
||||
/**
|
||||
* A collection of {@link FunctionComparison function comparison}
|
||||
* objects that describe how functions may be compared. Each comparison object
|
||||
* is a mapping of a function (source) to a list of functions (targets).
|
||||
* A model for comparing one or more functions in a side by side display. The model supports the
|
||||
* concept of a set of function that can be selected for each side of the comparison. It also
|
||||
* maintains the selected function for each side. The default model simply has a single set
|
||||
* of functions that can be selected for either side of the comparison. The model supports the
|
||||
* concept of different sets of functions for each and even the idea the the active function for
|
||||
* one side can determine the set of functions for the other side. See
|
||||
* {@link MatchedFunctionComparisonModel}.
|
||||
* <p>
|
||||
* This model is intended to be used by the {@link FunctionComparisonProvider}
|
||||
* as the basis for its display. It should never be created manually, and should
|
||||
* only be accessed via the {@link FunctionComparisonService}.
|
||||
* This model is intended to be used by the the {@link FunctionComparisonService} to generate
|
||||
* a function comparison display window.
|
||||
* <p>
|
||||
* Note: Subscribers may register to be informed of changes to this model via the
|
||||
* {@link FunctionComparisonModelListener comparison model listener} interface.
|
@ -13,9 +13,8 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.plugin.core.functioncompare;
|
||||
package ghidra.features.base.codecompare.model;
|
||||
|
||||
import ghidra.app.services.FunctionComparisonModel;
|
||||
import ghidra.program.model.listing.Function;
|
||||
import ghidra.util.datastruct.Duo.Side;
|
||||
|
@ -16,7 +16,7 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package ghidra.app.services;
|
||||
package ghidra.features.base.codecompare.model;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
package ghidra.features.base.codecompare.panel;
|
||||
|
||||
import java.util.Objects;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
package ghidra.features.base.codecompare.panel;
|
||||
|
||||
import java.awt.Component;
|
||||
|
@ -13,9 +13,9 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
package ghidra.features.base.codecompare.panel;
|
||||
|
||||
import static ghidra.app.util.viewer.util.ComparisonData.*;
|
||||
import static ghidra.features.base.codecompare.panel.ComparisonData.*;
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
import java.awt.*;
|
||||
@ -29,8 +29,8 @@ import javax.swing.border.Border;
|
||||
import docking.ActionContext;
|
||||
import docking.ComponentProvider;
|
||||
import docking.action.*;
|
||||
import docking.widgets.TitledPanel;
|
||||
import generic.theme.GThemeDefaults.Colors.Palette;
|
||||
import ghidra.app.plugin.core.functioncompare.FunctionComparisonPanel;
|
||||
import ghidra.framework.plugintool.PluginTool;
|
||||
import ghidra.program.model.address.AddressSetView;
|
||||
import ghidra.program.model.listing.Function;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
package ghidra.features.base.codecompare.panel;
|
||||
|
||||
/**
|
||||
* Action context for a CodeComparisonPanel.
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
package ghidra.features.base.codecompare.panel;
|
||||
|
||||
import java.awt.Color;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
package ghidra.features.base.codecompare.panel;
|
||||
|
||||
import java.util.Objects;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
package ghidra.features.base.codecompare.panel;
|
||||
|
||||
import ghidra.program.model.address.AddressSet;
|
||||
import ghidra.program.model.address.AddressSetView;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
package ghidra.features.base.codecompare.panel;
|
||||
|
||||
import java.util.Objects;
|
||||
|
@ -13,9 +13,9 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.plugin.core.functioncompare;
|
||||
package ghidra.features.base.codecompare.panel;
|
||||
|
||||
import static ghidra.app.util.viewer.util.ComparisonData.*;
|
||||
import static ghidra.features.base.codecompare.panel.ComparisonData.*;
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
import java.awt.*;
|
||||
@ -34,8 +34,7 @@ import docking.ComponentProvider;
|
||||
import docking.action.*;
|
||||
import docking.widgets.tabbedpane.DockingTabRenderer;
|
||||
import generic.theme.GIcon;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingCodeComparisonPanel;
|
||||
import ghidra.app.util.viewer.util.*;
|
||||
import ghidra.features.base.codecompare.listing.ListingCodeComparisonPanel;
|
||||
import ghidra.framework.options.SaveState;
|
||||
import ghidra.framework.plugintool.PluginTool;
|
||||
import ghidra.program.model.address.AddressSet;
|
||||
@ -51,9 +50,6 @@ import help.HelpService;
|
||||
/**
|
||||
* A panel for displaying {@link Function functions}, {@link Data data}, or
|
||||
* {@link AddressSet address sets} side-by-side for comparison purposes
|
||||
* <p>
|
||||
* Note: This is strictly for a one-to-one comparison; if multiple items are to
|
||||
* be compared, use a {@link MultiFunctionComparisonPanel}
|
||||
*/
|
||||
public class FunctionComparisonPanel extends JPanel implements ChangeListener {
|
||||
private static final String ORIENTATION_PROPERTY_NAME = "ORIENTATION";
|
||||
@ -264,13 +260,13 @@ public class FunctionComparisonPanel extends JPanel implements ChangeListener {
|
||||
}
|
||||
}
|
||||
|
||||
void programClosed(Program program) {
|
||||
public void programClosed(Program program) {
|
||||
for (CodeComparisonPanel codeComparisonPanel : codeComparisonPanels) {
|
||||
codeComparisonPanel.programClosed(program);
|
||||
}
|
||||
}
|
||||
|
||||
CodeComparisonPanel getCodeComparisonPanelByName(String name) {
|
||||
public CodeComparisonPanel getCodeComparisonPanelByName(String name) {
|
||||
for (CodeComparisonPanel codeComparisonPanel : codeComparisonPanels) {
|
||||
if (name.equals(codeComparisonPanel.getName())) {
|
||||
return codeComparisonPanel;
|
||||
@ -471,7 +467,7 @@ public class FunctionComparisonPanel extends JPanel implements ChangeListener {
|
||||
*
|
||||
* @return null if there is no code comparison panel
|
||||
*/
|
||||
CodeComparisonPanel getCurrentComponent() {
|
||||
public CodeComparisonPanel getCurrentComponent() {
|
||||
return (CodeComparisonPanel) tabbedPane.getSelectedComponent();
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import ghidra.app.util.viewer.listingpanel.ListingDiffChangeListener;
|
||||
import ghidra.features.base.codecompare.listing.ListingDiffChangeListener;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.data.DataType;
|
||||
import ghidra.program.model.lang.Register;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.plugin.core.functioncompare;
|
||||
package ghidra.features.base.codecompare.model;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
import static org.junit.Assert.*;
|
||||
@ -24,8 +24,9 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import generic.test.AbstractGenericTest;
|
||||
import ghidra.app.services.DefaultFunctionComparisonModel;
|
||||
import ghidra.app.services.FunctionComparisonService;
|
||||
import ghidra.features.base.codecompare.model.DefaultFunctionComparisonModel;
|
||||
import ghidra.features.base.codecompare.model.FunctionComparisonModelListener;
|
||||
import ghidra.program.database.ProgramBuilder;
|
||||
import ghidra.program.model.data.ByteDataType;
|
||||
import ghidra.program.model.data.DataType;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.plugin.core.functioncompare;
|
||||
package ghidra.features.base.codecompare.model;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
import static org.junit.Assert.*;
|
||||
@ -25,7 +25,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import generic.test.AbstractGenericTest;
|
||||
import ghidra.app.services.*;
|
||||
import ghidra.app.services.FunctionComparisonService;
|
||||
import ghidra.program.database.ProgramBuilder;
|
||||
import ghidra.program.model.data.ByteDataType;
|
||||
import ghidra.program.model.data.DataType;
|
@ -13,14 +13,14 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.feature.vt.api.correlator.address;
|
||||
package ghidra.features.codecompare.correlator;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import ghidra.app.decompiler.*;
|
||||
import ghidra.codecompare.graphanalysis.Pinning;
|
||||
import ghidra.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.features.codecompare.graphanalysis.Pinning;
|
||||
import ghidra.features.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.block.*;
|
||||
import ghidra.program.model.listing.*;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.feature.vt.api.correlator.address;
|
||||
package ghidra.features.codecompare.correlator;
|
||||
|
||||
import ghidra.framework.options.Options;
|
||||
import ghidra.framework.options.ToolOptions;
|
@ -13,14 +13,14 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.feature.vt.api.correlator.address;
|
||||
package ghidra.features.codecompare.correlator;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import ghidra.app.util.viewer.listingpanel.PropertyBasedBackgroundColorModel;
|
||||
import ghidra.feature.vt.api.correlator.address.CodeCompareAddressCorrelation.CorrelationContainer;
|
||||
import ghidra.features.codecompare.correlator.CodeCompareAddressCorrelation.CorrelationContainer;
|
||||
import ghidra.program.database.IntRangeMap;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.listing.*;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
@ -25,7 +25,7 @@ import docking.action.DockingAction;
|
||||
import ghidra.app.decompiler.ClangToken;
|
||||
import ghidra.app.decompiler.DecompilerLocation;
|
||||
import ghidra.app.decompiler.component.DecompilerPanel;
|
||||
import ghidra.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.features.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.util.datastruct.Duo.Side;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.function.Consumer;
|
||||
@ -24,7 +24,6 @@ import docking.widgets.fieldpanel.support.ViewerPosition;
|
||||
import ghidra.GhidraOptions;
|
||||
import ghidra.app.decompiler.DecompileOptions;
|
||||
import ghidra.app.decompiler.component.*;
|
||||
import ghidra.codecompare.DiffClangHighlightController;
|
||||
import ghidra.framework.options.ToolOptions;
|
||||
import ghidra.framework.plugintool.PluginTool;
|
||||
import ghidra.program.model.address.Address;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
@ -27,7 +27,7 @@ import org.apache.commons.collections4.bidimap.DualHashBidiMap;
|
||||
import docking.widgets.fieldpanel.support.ViewerPosition;
|
||||
import ghidra.app.decompiler.*;
|
||||
import ghidra.app.decompiler.component.DecompilerPanel;
|
||||
import ghidra.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.features.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.program.model.pcode.HighFunction;
|
||||
import ghidra.program.util.ProgramLocation;
|
||||
import ghidra.util.exception.CancelledException;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
@ -13,15 +13,15 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
import ghidra.app.decompiler.*;
|
||||
import ghidra.app.decompiler.component.DecompileData;
|
||||
import ghidra.codecompare.graphanalysis.Pinning;
|
||||
import ghidra.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.features.codecompare.graphanalysis.Pinning;
|
||||
import ghidra.features.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.program.model.pcode.HighFunction;
|
||||
import ghidra.util.exception.CancelledException;
|
||||
import ghidra.util.task.TaskMonitor;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import java.awt.Color;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
@ -32,9 +32,8 @@ import docking.options.OptionsService;
|
||||
import generic.theme.GIcon;
|
||||
import ghidra.app.decompiler.component.DecompileData;
|
||||
import ghidra.app.decompiler.component.DecompilerPanel;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonPanel;
|
||||
import ghidra.codecompare.DiffClangHighlightController;
|
||||
import ghidra.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonPanel;
|
||||
import ghidra.features.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.framework.plugintool.PluginTool;
|
||||
import ghidra.program.model.listing.Function;
|
||||
import ghidra.program.model.listing.Program;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
@ -13,14 +13,13 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import ghidra.app.decompiler.ClangToken;
|
||||
import ghidra.codecompare.DiffClangHighlightController;
|
||||
import ghidra.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.features.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.util.exception.CancelledException;
|
||||
import ghidra.util.task.Task;
|
||||
import ghidra.util.task.TaskMonitor;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.*;
|
||||
@ -26,8 +26,7 @@ import generic.theme.GColor;
|
||||
import ghidra.app.decompiler.ClangSyntaxToken;
|
||||
import ghidra.app.decompiler.ClangToken;
|
||||
import ghidra.app.decompiler.component.*;
|
||||
import ghidra.codecompare.decompile.DecompilerCodeComparisonOptions;
|
||||
import ghidra.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.features.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.util.ColorUtils;
|
||||
import ghidra.util.SystemUtilities;
|
||||
import util.CollectionUtils;
|
@ -13,10 +13,10 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import ghidra.app.decompiler.ClangToken;
|
||||
import ghidra.codecompare.graphanalysis.TokenBin;
|
||||
import ghidra.features.codecompare.graphanalysis.TokenBin;
|
||||
|
||||
public interface DiffClangHighlightListener {
|
||||
|
@ -13,13 +13,13 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import java.awt.Component;
|
||||
|
||||
import docking.ComponentProvider;
|
||||
import ghidra.app.context.RestrictedAddressSetContext;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonActionContext;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonActionContext;
|
||||
|
||||
/**
|
||||
* Action context for a dual decompiler panel.
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.decompile;
|
||||
package ghidra.features.codecompare.decompile;
|
||||
|
||||
import ghidra.app.decompiler.ClangToken;
|
||||
|
@ -13,11 +13,11 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.graphanalysis;
|
||||
package ghidra.features.codecompare.graphanalysis;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import ghidra.codecompare.graphanalysis.Pinning.Side;
|
||||
import ghidra.features.codecompare.graphanalysis.Pinning.Side;
|
||||
import ghidra.program.model.pcode.HighFunction;
|
||||
import ghidra.program.model.pcode.PcodeBlockBasic;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.graphanalysis;
|
||||
package ghidra.features.codecompare.graphanalysis;
|
||||
|
||||
/**
|
||||
* N-gram hash on the control-flow graph rooted at specific node {@link CtrlVertex}.
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.graphanalysis;
|
||||
package ghidra.features.codecompare.graphanalysis;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -13,13 +13,13 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.graphanalysis;
|
||||
package ghidra.features.codecompare.graphanalysis;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.util.*;
|
||||
|
||||
import ghidra.codecompare.graphanalysis.Pinning.Side;
|
||||
import ghidra.features.codecompare.graphanalysis.Pinning.Side;
|
||||
import ghidra.program.model.pcode.*;
|
||||
|
||||
/**
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.graphanalysis;
|
||||
package ghidra.features.codecompare.graphanalysis;
|
||||
|
||||
/**
|
||||
* Sortable n-gram hash on the data-flow graph rooted at specific node {@link DataVertex}.
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.graphanalysis;
|
||||
package ghidra.features.codecompare.graphanalysis;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.graphanalysis;
|
||||
package ghidra.features.codecompare.graphanalysis;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.codecompare.graphanalysis;
|
||||
package ghidra.features.codecompare.graphanalysis;
|
||||
|
||||
import java.util.*;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.plugin.core.functioncompare;
|
||||
package ghidra.features.codecompare.plugin;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
@ -25,6 +25,8 @@ import ghidra.app.events.*;
|
||||
import ghidra.app.plugin.PluginCategoryNames;
|
||||
import ghidra.app.plugin.ProgramPlugin;
|
||||
import ghidra.app.services.*;
|
||||
import ghidra.features.base.codecompare.model.DefaultFunctionComparisonModel;
|
||||
import ghidra.features.base.codecompare.model.FunctionComparisonModel;
|
||||
import ghidra.framework.model.*;
|
||||
import ghidra.framework.plugintool.PluginInfo;
|
||||
import ghidra.framework.plugintool.PluginTool;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.plugin.core.functioncompare;
|
||||
package ghidra.features.codecompare.plugin;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
@ -34,9 +34,11 @@ import generic.theme.GIcon;
|
||||
import ghidra.app.plugin.core.functionwindow.FunctionRowObject;
|
||||
import ghidra.app.plugin.core.functionwindow.FunctionTableModel;
|
||||
import ghidra.app.services.*;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingCodeComparisonPanel;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingPanel;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.listing.ListingCodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.model.*;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.panel.FunctionComparisonPanel;
|
||||
import ghidra.framework.options.SaveState;
|
||||
import ghidra.framework.plugintool.ComponentProviderAdapter;
|
||||
import ghidra.program.model.listing.Function;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.plugin.core.functioncompare;
|
||||
package ghidra.features.codecompare.plugin;
|
||||
|
||||
/**
|
||||
* Allows subscribers to register for function comparison provider changes
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.plugin.core.functioncompare;
|
||||
package ghidra.features.codecompare.plugin;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
|
||||
@ -23,8 +23,10 @@ import java.awt.event.ItemListener;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import ghidra.app.services.FunctionComparisonModel;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.model.FunctionComparisonModel;
|
||||
import ghidra.features.base.codecompare.model.FunctionComparisonModelListener;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.panel.FunctionComparisonPanel;
|
||||
import ghidra.framework.plugintool.PluginTool;
|
||||
import ghidra.program.model.listing.Function;
|
||||
import ghidra.util.datastruct.Duo;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.plugin.core.functioncompare;
|
||||
package ghidra.features.codecompare.plugin;
|
||||
|
||||
import static ghidra.util.datastruct.Duo.Side.*;
|
||||
import static org.junit.Assert.*;
|
||||
@ -33,8 +33,10 @@ import docking.widgets.dialogs.TableSelectionDialog;
|
||||
import docking.widgets.table.GFilterTable;
|
||||
import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin;
|
||||
import ghidra.app.plugin.core.function.FunctionPlugin;
|
||||
import ghidra.app.services.FunctionComparisonModel;
|
||||
import ghidra.app.services.MatchedFunctionComparisonModel;
|
||||
import ghidra.features.base.codecompare.model.FunctionComparisonModel;
|
||||
import ghidra.features.base.codecompare.model.MatchedFunctionComparisonModel;
|
||||
import ghidra.features.base.codecompare.panel.FunctionComparisonPanel;
|
||||
import ghidra.features.codecompare.plugin.*;
|
||||
import ghidra.program.database.ProgramBuilder;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.data.ByteDataType;
|
@ -24,12 +24,12 @@ import java.awt.dnd.*;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import docking.dnd.*;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingCodeComparisonPanel;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingPanel;
|
||||
import ghidra.feature.vt.api.main.*;
|
||||
import ghidra.feature.vt.api.markuptype.VTMarkupType;
|
||||
import ghidra.feature.vt.gui.plugin.VTController;
|
||||
import ghidra.feature.vt.gui.task.ApplyMarkupAtDestinationAddressTask;
|
||||
import ghidra.features.base.codecompare.listing.ListingCodeComparisonPanel;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.util.ProgramLocation;
|
||||
import ghidra.util.Msg;
|
||||
|
@ -18,8 +18,8 @@ package ghidra.feature.vt.gui.duallisting;
|
||||
import docking.ComponentProvider;
|
||||
import ghidra.app.context.ListingActionContext;
|
||||
import ghidra.app.nav.Navigatable;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonPanel;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonPanelActionContext;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonPanelActionContext;
|
||||
|
||||
/**
|
||||
* Action context for a version tracking listing.
|
||||
|
@ -19,8 +19,8 @@ import javax.swing.Icon;
|
||||
|
||||
import ghidra.app.nav.*;
|
||||
import ghidra.app.util.ListingHighlightProvider;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingCodeComparisonPanel;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingPanel;
|
||||
import ghidra.features.base.codecompare.listing.ListingCodeComparisonPanel;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.program.util.ProgramLocation;
|
||||
import ghidra.program.util.ProgramSelection;
|
||||
|
@ -150,8 +150,7 @@ public class VTPlugin extends Plugin {
|
||||
|
||||
private void addCustomPlugins() {
|
||||
|
||||
List<String> names = new ArrayList<>(
|
||||
List.of("ghidra.app.plugin.core.functioncompare.FunctionComparisonPlugin"));
|
||||
List<String> names = new ArrayList<>(List.of("ghidra.features.codecompare.plugin"));
|
||||
List<Plugin> plugins = tool.getManagedPlugins();
|
||||
Set<String> existingNames =
|
||||
plugins.stream().map(c -> c.getName()).collect(Collectors.toSet());
|
||||
|
@ -39,8 +39,6 @@ import docking.widgets.label.GDLabel;
|
||||
import docking.widgets.table.threaded.ThreadedTableModel;
|
||||
import generic.theme.GIcon;
|
||||
import generic.theme.GThemeDefaults.Colors;
|
||||
import ghidra.app.plugin.core.functioncompare.FunctionComparisonPanel;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingCodeComparisonPanel;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingPanel;
|
||||
import ghidra.feature.vt.api.db.DeletedMatch;
|
||||
import ghidra.feature.vt.api.impl.VTEvent;
|
||||
@ -50,6 +48,8 @@ import ghidra.feature.vt.gui.actions.*;
|
||||
import ghidra.feature.vt.gui.duallisting.VTListingNavigator;
|
||||
import ghidra.feature.vt.gui.plugin.*;
|
||||
import ghidra.feature.vt.gui.util.MatchInfo;
|
||||
import ghidra.features.base.codecompare.listing.ListingCodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.panel.FunctionComparisonPanel;
|
||||
import ghidra.framework.model.*;
|
||||
import ghidra.framework.options.Options;
|
||||
import ghidra.framework.options.SaveState;
|
||||
|
@ -18,9 +18,9 @@ package ghidra.feature.vt.gui.provider.markuptable;
|
||||
import java.util.List;
|
||||
|
||||
import docking.DefaultActionContext;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonPanel;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonPanelActionContext;
|
||||
import ghidra.feature.vt.api.main.VTMarkupItem;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonPanelActionContext;
|
||||
|
||||
/**
|
||||
* Action context for the version tracking markup item provider.
|
||||
|
@ -39,9 +39,8 @@ import docking.widgets.table.GTable;
|
||||
import docking.widgets.table.RowObjectTableModel;
|
||||
import docking.widgets.table.threaded.ThreadedTableModel;
|
||||
import generic.theme.GIcon;
|
||||
import ghidra.app.plugin.core.functioncompare.FunctionComparisonPanel;
|
||||
import ghidra.app.util.viewer.listingpanel.*;
|
||||
import ghidra.app.util.viewer.util.CodeComparisonPanel;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingPanel;
|
||||
import ghidra.app.util.viewer.listingpanel.ProgramLocationListener;
|
||||
import ghidra.feature.vt.api.main.*;
|
||||
import ghidra.feature.vt.api.markuptype.VTMarkupType;
|
||||
import ghidra.feature.vt.gui.actions.*;
|
||||
@ -52,6 +51,9 @@ import ghidra.feature.vt.gui.filters.Filter.FilterEditingStatus;
|
||||
import ghidra.feature.vt.gui.plugin.*;
|
||||
import ghidra.feature.vt.gui.provider.markuptable.VTMarkupItemsTableModel.AppliedDestinationAddressTableColumn;
|
||||
import ghidra.feature.vt.gui.util.*;
|
||||
import ghidra.features.base.codecompare.listing.ListingCodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.panel.CodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.panel.FunctionComparisonPanel;
|
||||
import ghidra.framework.model.DomainObjectChangedEvent;
|
||||
import ghidra.framework.options.Options;
|
||||
import ghidra.framework.options.SaveState;
|
||||
|
@ -37,7 +37,6 @@ import docking.widgets.table.*;
|
||||
import docking.widgets.table.threaded.ThreadedTableModel;
|
||||
import generic.theme.GIcon;
|
||||
import ghidra.app.services.FunctionComparisonService;
|
||||
import ghidra.app.services.MatchedFunctionComparisonModel;
|
||||
import ghidra.feature.vt.api.impl.VTEvent;
|
||||
import ghidra.feature.vt.api.impl.VersionTrackingChangeRecord;
|
||||
import ghidra.feature.vt.api.main.*;
|
||||
@ -48,6 +47,7 @@ import ghidra.feature.vt.gui.filters.Filter.FilterEditingStatus;
|
||||
import ghidra.feature.vt.gui.plugin.*;
|
||||
import ghidra.feature.vt.gui.util.*;
|
||||
import ghidra.feature.vt.gui.util.AbstractVTMatchTableModel.*;
|
||||
import ghidra.features.base.codecompare.model.MatchedFunctionComparisonModel;
|
||||
import ghidra.framework.model.*;
|
||||
import ghidra.framework.options.Options;
|
||||
import ghidra.framework.options.SaveState;
|
||||
|
@ -34,7 +34,6 @@ import docking.widgets.table.threaded.ThreadedTableModel;
|
||||
import generic.theme.GColor;
|
||||
import generic.theme.GIcon;
|
||||
import ghidra.app.services.FunctionComparisonService;
|
||||
import ghidra.app.services.MatchedFunctionComparisonModel;
|
||||
import ghidra.feature.vt.api.impl.VTEvent;
|
||||
import ghidra.feature.vt.api.main.*;
|
||||
import ghidra.feature.vt.gui.actions.*;
|
||||
@ -44,6 +43,7 @@ import ghidra.feature.vt.gui.plugin.*;
|
||||
import ghidra.feature.vt.gui.provider.markuptable.DisplayableListingAddress;
|
||||
import ghidra.feature.vt.gui.provider.matchtable.MatchTableRenderer;
|
||||
import ghidra.feature.vt.gui.util.AbstractVTMatchTableModel.StatusTableColumn;
|
||||
import ghidra.features.base.codecompare.model.MatchedFunctionComparisonModel;
|
||||
import ghidra.feature.vt.gui.util.MatchInfo;
|
||||
import ghidra.feature.vt.gui.util.MatchStatusRenderer;
|
||||
import ghidra.framework.model.*;
|
||||
|
@ -34,7 +34,6 @@ import docking.action.ToggleDockingAction;
|
||||
import docking.options.editor.OptionsDialog;
|
||||
import docking.options.editor.OptionsPanel;
|
||||
import docking.widgets.tree.GTree;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingCodeComparisonPanel;
|
||||
import ghidra.feature.vt.api.correlator.program.ExactMatchInstructionsProgramCorrelatorFactory;
|
||||
import ghidra.feature.vt.api.correlator.program.SymbolNameProgramCorrelatorFactory;
|
||||
import ghidra.feature.vt.api.main.*;
|
||||
@ -53,6 +52,7 @@ import ghidra.feature.vt.gui.provider.onetomany.VTMatchSourceTableProvider;
|
||||
import ghidra.feature.vt.gui.task.*;
|
||||
import ghidra.feature.vt.gui.util.MatchInfo;
|
||||
import ghidra.feature.vt.gui.wizard.*;
|
||||
import ghidra.features.base.codecompare.listing.ListingCodeComparisonPanel;
|
||||
import ghidra.framework.main.DataTreeDialog;
|
||||
import ghidra.framework.main.datatree.DataTree;
|
||||
import ghidra.framework.main.datatree.ProjectDataTreePanel;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.app.util.viewer.util;
|
||||
package docking.widgets;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Dimension;
|
@ -29,9 +29,10 @@ import docking.widgets.dialogs.TableSelectionDialog;
|
||||
import docking.widgets.table.GFilterTable;
|
||||
import docking.widgets.table.GTable;
|
||||
import ghidra.app.cmd.disassemble.DisassembleCommand;
|
||||
import ghidra.app.plugin.core.functioncompare.*;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingCodeComparisonPanel;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingPanel;
|
||||
import ghidra.features.base.codecompare.listing.ListingCodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.panel.FunctionComparisonPanel;
|
||||
import ghidra.features.codecompare.plugin.*;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.address.AddressSet;
|
||||
import ghidra.program.model.listing.*;
|
||||
|
@ -26,6 +26,7 @@ import javax.swing.border.TitledBorder;
|
||||
|
||||
import org.junit.*;
|
||||
|
||||
import docking.widgets.TitledPanel;
|
||||
import docking.widgets.indexedscrollpane.IndexedScrollPane;
|
||||
import generic.test.TestUtils;
|
||||
import generic.theme.GThemeDefaults.Colors.Palette;
|
||||
@ -34,7 +35,6 @@ import ghidra.app.merge.*;
|
||||
import ghidra.app.merge.listing.*;
|
||||
import ghidra.app.merge.tool.ListingMergePanel;
|
||||
import ghidra.app.util.viewer.listingpanel.ListingPanel;
|
||||
import ghidra.app.util.viewer.util.TitledPanel;
|
||||
import ghidra.framework.main.FrontEndTool;
|
||||
import ghidra.framework.model.DomainFile;
|
||||
import ghidra.framework.model.DomainFolder;
|
||||
|
@ -23,11 +23,11 @@ import java.util.Set;
|
||||
|
||||
import org.junit.*;
|
||||
|
||||
import ghidra.app.plugin.core.functioncompare.FunctionComparisonPlugin;
|
||||
import ghidra.app.plugin.core.functioncompare.FunctionComparisonProvider;
|
||||
import ghidra.app.services.FunctionComparisonModel;
|
||||
import ghidra.codecompare.decompile.CDisplay;
|
||||
import ghidra.codecompare.decompile.DecompilerCodeComparisonPanel;
|
||||
import ghidra.features.base.codecompare.model.FunctionComparisonModel;
|
||||
import ghidra.features.codecompare.decompile.CDisplay;
|
||||
import ghidra.features.codecompare.decompile.DecompilerCodeComparisonPanel;
|
||||
import ghidra.features.codecompare.plugin.FunctionComparisonPlugin;
|
||||
import ghidra.features.codecompare.plugin.FunctionComparisonProvider;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.listing.*;
|
||||
import ghidra.test.*;
|
||||
|
Loading…
Reference in New Issue
Block a user