mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
Merge remote-tracking branch 'origin/patch'
This commit is contained in:
commit
4be538b42e
3 changed files with 12 additions and 9 deletions
|
@ -15,8 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package ghidra.asm.wild;
|
package ghidra.asm.wild;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.hasItem;
|
import static org.hamcrest.Matchers.*;
|
||||||
import static org.hamcrest.Matchers.not;
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
@ -41,6 +40,7 @@ import ghidra.program.model.lang.LanguageID;
|
||||||
import ghidra.program.model.listing.Program;
|
import ghidra.program.model.listing.Program;
|
||||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||||
import ghidra.test.ClassicSampleX86ProgramBuilder;
|
import ghidra.test.ClassicSampleX86ProgramBuilder;
|
||||||
|
import ghidra.util.Msg;
|
||||||
import ghidra.util.NumericUtilities;
|
import ghidra.util.NumericUtilities;
|
||||||
|
|
||||||
public class WildSleighAssemblerTest extends AbstractGhidraHeadlessIntegrationTest {
|
public class WildSleighAssemblerTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||||
|
@ -136,10 +136,11 @@ public class WildSleighAssemblerTest extends AbstractGhidraHeadlessIntegrationTe
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void dumpResults(AssemblyResolutionResults results) {
|
protected void dumpResults(AssemblyResolutionResults results) {
|
||||||
System.err.println("results:" + results);
|
|
||||||
|
Msg.trace(this, "results:" + results);
|
||||||
for (AssemblyResolution res : results) {
|
for (AssemblyResolution res : results) {
|
||||||
if (res instanceof WildAssemblyResolvedPatterns pats) {
|
if (res instanceof WildAssemblyResolvedPatterns pats) {
|
||||||
System.err.println(pats.getInstruction());
|
Msg.trace(this, pats.getInstruction());
|
||||||
for (WildOperandInfo info : pats.getOperandInfo()) {
|
for (WildOperandInfo info : pats.getOperandInfo()) {
|
||||||
var choice_str = "?";
|
var choice_str = "?";
|
||||||
var choice = info.choice();
|
var choice = info.choice();
|
||||||
|
@ -147,7 +148,7 @@ public class WildSleighAssemblerTest extends AbstractGhidraHeadlessIntegrationTe
|
||||||
choice_str = choice.toString();
|
choice_str = choice.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
System.err.println(info.location() + ": " + info.wildcard() + " = " +
|
Msg.trace(this, info.location() + ": " + info.wildcard() + " = " +
|
||||||
info.expression() + "(" + info.path() + ") == " + choice_str.toString());
|
info.expression() + "(" + info.path() + ") == " + choice_str.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -317,7 +318,7 @@ public class WildSleighAssemblerTest extends AbstractGhidraHeadlessIntegrationTe
|
||||||
toy();
|
toy();
|
||||||
Collection<AssemblyParseResult> parses = asmToy.parseLine("add `Q1/r.`, #6");
|
Collection<AssemblyParseResult> parses = asmToy.parseLine("add `Q1/r.`, #6");
|
||||||
AssemblyParseResult one = Unique.assertOne(parses.stream().filter(p -> !p.isError()));
|
AssemblyParseResult one = Unique.assertOne(parses.stream().filter(p -> !p.isError()));
|
||||||
System.err.println("parse: " + one);
|
//System.err.println("parse: " + one);
|
||||||
|
|
||||||
Address addr0 = toy.getAddressFactory().getDefaultAddressSpace().getAddress(0);
|
Address addr0 = toy.getAddressFactory().getDefaultAddressSpace().getAddress(0);
|
||||||
AssemblyResolutionResults results = asmToy.resolveTree(one, addr0);
|
AssemblyResolutionResults results = asmToy.resolveTree(one, addr0);
|
||||||
|
@ -334,7 +335,7 @@ public class WildSleighAssemblerTest extends AbstractGhidraHeadlessIntegrationTe
|
||||||
toy();
|
toy();
|
||||||
Collection<AssemblyParseResult> parses = asmToy.parseLine("add r0, #`Q2[0,2..4]`");
|
Collection<AssemblyParseResult> parses = asmToy.parseLine("add r0, #`Q2[0,2..4]`");
|
||||||
AssemblyParseResult one = Unique.assertOne(parses.stream().filter(p -> !p.isError()));
|
AssemblyParseResult one = Unique.assertOne(parses.stream().filter(p -> !p.isError()));
|
||||||
System.err.println("parse: " + one);
|
//System.err.println("parse: " + one);
|
||||||
|
|
||||||
Address addr0 = toy.getAddressFactory().getDefaultAddressSpace().getAddress(0);
|
Address addr0 = toy.getAddressFactory().getDefaultAddressSpace().getAddress(0);
|
||||||
AssemblyResolutionResults results = asmToy.resolveTree(one, addr0);
|
AssemblyResolutionResults results = asmToy.resolveTree(one, addr0);
|
||||||
|
@ -353,7 +354,7 @@ public class WildSleighAssemblerTest extends AbstractGhidraHeadlessIntegrationTe
|
||||||
Address addr0 = toy.getAddressFactory().getDefaultAddressSpace().getAddress(0);
|
Address addr0 = toy.getAddressFactory().getDefaultAddressSpace().getAddress(0);
|
||||||
var allValidPatterns = new HashSet<AssemblyPatternBlock>();
|
var allValidPatterns = new HashSet<AssemblyPatternBlock>();
|
||||||
for (AssemblyParseResult p : parses) {
|
for (AssemblyParseResult p : parses) {
|
||||||
System.err.println("parse: " + p);
|
//System.err.println("parse: " + p);
|
||||||
AssemblyResolutionResults results = asmToy.resolveTree(p, addr0);
|
AssemblyResolutionResults results = asmToy.resolveTree(p, addr0);
|
||||||
dumpResults(results);
|
dumpResults(results);
|
||||||
allValidPatterns.addAll(getInstructionPatterns(results));
|
allValidPatterns.addAll(getInstructionPatterns(results));
|
||||||
|
@ -375,7 +376,7 @@ public class WildSleighAssemblerTest extends AbstractGhidraHeadlessIntegrationTe
|
||||||
Address addr0 = toy.getAddressFactory().getDefaultAddressSpace().getAddress(0);
|
Address addr0 = toy.getAddressFactory().getDefaultAddressSpace().getAddress(0);
|
||||||
var allValidPatterns = new HashSet<AssemblyPatternBlock>();
|
var allValidPatterns = new HashSet<AssemblyPatternBlock>();
|
||||||
for (AssemblyParseResult p : parses) {
|
for (AssemblyParseResult p : parses) {
|
||||||
System.err.println("parse: " + p);
|
//System.err.println("parse: " + p);
|
||||||
AssemblyResolutionResults results = asmToy.resolveTree(p, addr0);
|
AssemblyResolutionResults results = asmToy.resolveTree(p, addr0);
|
||||||
dumpResults(results);
|
dumpResults(results);
|
||||||
allValidPatterns.addAll(getInstructionPatterns(results));
|
allValidPatterns.addAll(getInstructionPatterns(results));
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
<logger name="docking" level="DEBUG"/>
|
<logger name="docking" level="DEBUG"/>
|
||||||
|
|
||||||
|
<logger name="ghidra" level="DEBUG" />
|
||||||
<logger name="ghidra.feature.fid" level="INFO" />
|
<logger name="ghidra.feature.fid" level="INFO" />
|
||||||
<logger name="ghidra.framework" level="DEBUG"/>
|
<logger name="ghidra.framework" level="DEBUG"/>
|
||||||
<logger name="ghidra.graph" level="DEBUG" />
|
<logger name="ghidra.graph" level="DEBUG" />
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
|
|
||||||
<logger name="docking" level="DEBUG"/>
|
<logger name="docking" level="DEBUG"/>
|
||||||
|
|
||||||
|
<logger name="ghidra" level="DEBUG" />
|
||||||
<logger name="ghidra.feature.fid" level="INFO" />
|
<logger name="ghidra.feature.fid" level="INFO" />
|
||||||
<logger name="ghidra.framework" level="DEBUG"/>
|
<logger name="ghidra.framework" level="DEBUG"/>
|
||||||
<logger name="ghidra.graph" level="DEBUG" />
|
<logger name="ghidra.graph" level="DEBUG" />
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue