mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 10:49:34 +02:00
GP-0: Fix tests. Add "requireCanonical" parameter
This commit is contained in:
parent
c198419b7e
commit
ab97c34205
13 changed files with 43 additions and 33 deletions
|
@ -283,7 +283,7 @@ public class DBTraceObjectBreakpointLocation
|
|||
return object.getAncestorsRoot(getLifespan(), procMatcher)
|
||||
.flatMap(proc -> proc.getSource(object)
|
||||
.querySuccessorsInterface(getLifespan(),
|
||||
TraceObjectThread.class))
|
||||
TraceObjectThread.class, true))
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -226,9 +226,8 @@ public class DBTraceObjectBreakpointSpec
|
|||
@Override
|
||||
public Collection<? extends TraceObjectBreakpointLocation> getLocations() {
|
||||
try (LockHold hold = object.getTrace().lockRead()) {
|
||||
return object
|
||||
.querySuccessorsInterface(getLifespan(), TraceObjectBreakpointLocation.class)
|
||||
.collect(Collectors.toSet());
|
||||
return object.querySuccessorsInterface(getLifespan(),
|
||||
TraceObjectBreakpointLocation.class, true).collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -242,7 +242,8 @@ public enum DBTraceObjectRegisterSupport {
|
|||
protected void onSpaceAddedCheckTransferToPlatformRegisters(TracePlatform platform,
|
||||
TraceObject regContainer, TraceMemorySpace mem) {
|
||||
for (TraceObjectValPath path : it(
|
||||
regContainer.querySuccessorsTargetInterface(Lifespan.ALL, TargetRegister.class))) {
|
||||
regContainer.querySuccessorsTargetInterface(Lifespan.ALL, TargetRegister.class,
|
||||
true))) {
|
||||
TraceObject registerObject =
|
||||
path.getDestination(platform.getTrace().getObjectManager().getRootObject());
|
||||
onSpaceAddedCheckTransferObjectToPlatformRegister(registerObject, platform, mem);
|
||||
|
@ -437,7 +438,7 @@ public enum DBTraceObjectRegisterSupport {
|
|||
public void onMappingAddedCheckTransferMemoryMapped(TraceObject root,
|
||||
TraceGuestPlatformMappedRange mapped) {
|
||||
for (TraceObjectValPath path : it(
|
||||
root.querySuccessorsTargetInterface(Lifespan.ALL, TargetRegister.class))) {
|
||||
root.querySuccessorsTargetInterface(Lifespan.ALL, TargetRegister.class, true))) {
|
||||
TraceObject registerObject = path.getDestination(root);
|
||||
onMappingAddedCheckTransferRegisterObjectMemoryMapped(registerObject, mapped);
|
||||
}
|
||||
|
|
|
@ -240,7 +240,7 @@ public class DBTraceObjectModule implements TraceObjectModule, DBTraceObjectInte
|
|||
@Override
|
||||
public Collection<? extends TraceObjectSection> getSections() {
|
||||
try (LockHold hold = object.getTrace().lockRead()) {
|
||||
return object.querySuccessorsInterface(getLifespan(), TraceObjectSection.class)
|
||||
return object.querySuccessorsInterface(getLifespan(), TraceObjectSection.class, true)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,8 +93,7 @@ public class DBTraceObjectStack implements TraceObjectStack, DBTraceObjectInterf
|
|||
@Override
|
||||
public int getDepth() {
|
||||
try (LockHold hold = object.getTrace().lockRead()) {
|
||||
return object
|
||||
.querySuccessorsInterface(computeSpan(), TraceObjectStackFrame.class)
|
||||
return object.querySuccessorsInterface(computeSpan(), TraceObjectStackFrame.class, true)
|
||||
.map(f -> f.getLevel())
|
||||
.reduce(Integer::max)
|
||||
.map(m -> m + 1)
|
||||
|
@ -210,8 +209,7 @@ public class DBTraceObjectStack implements TraceObjectStack, DBTraceObjectInterf
|
|||
}
|
||||
|
||||
protected Stream<TraceObjectStackFrame> doGetFrames(long snap) {
|
||||
return object
|
||||
.querySuccessorsInterface(Lifespan.at(snap), TraceObjectStackFrame.class)
|
||||
return object.querySuccessorsInterface(Lifespan.at(snap), TraceObjectStackFrame.class, true)
|
||||
.sorted(Comparator.comparing(f -> f.getLevel()));
|
||||
}
|
||||
|
||||
|
|
|
@ -876,16 +876,16 @@ public class DBTraceObject extends DBAnnotatedObject implements TraceObject {
|
|||
|
||||
@Override
|
||||
public Stream<? extends TraceObjectValPath> querySuccessorsTargetInterface(Lifespan span,
|
||||
Class<? extends TargetObject> targetIf) {
|
||||
PathMatcher matcher = getTargetSchema().searchFor(targetIf, true);
|
||||
Class<? extends TargetObject> targetIf, boolean requireCanonical) {
|
||||
PathMatcher matcher = getTargetSchema().searchFor(targetIf, requireCanonical);
|
||||
return getSuccessors(span, matcher).filter(p -> isActuallyInterface(p, targetIf));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <I extends TraceObjectInterface> Stream<I> querySuccessorsInterface(Lifespan span,
|
||||
Class<I> ifClass) {
|
||||
return querySuccessorsTargetInterface(span, TraceObjectInterfaceUtils.toTargetIf(ifClass))
|
||||
.map(p -> p.getDestination(this).queryInterface(ifClass));
|
||||
Class<I> ifClass, boolean requireCanonical) {
|
||||
return querySuccessorsTargetInterface(span, TraceObjectInterfaceUtils.toTargetIf(ifClass),
|
||||
requireCanonical).map(p -> p.getDestination(this).queryInterface(ifClass));
|
||||
}
|
||||
|
||||
protected void doDelete() {
|
||||
|
|
|
@ -466,10 +466,11 @@ public interface TraceObject extends TraceUniqueObject {
|
|||
*
|
||||
* @param span the span which the found paths must intersect
|
||||
* @param targetIf the target interface class
|
||||
* @param requireCanonical if the objects must be found within their canonical container
|
||||
* @return the stream of found paths to values
|
||||
*/
|
||||
Stream<? extends TraceObjectValPath> querySuccessorsTargetInterface(Lifespan span,
|
||||
Class<? extends TargetObject> targetIf);
|
||||
Class<? extends TargetObject> targetIf, boolean requireCanonical);
|
||||
|
||||
/**
|
||||
* Search for successors providing the given interface and retrieve those interfaces
|
||||
|
@ -477,10 +478,11 @@ public interface TraceObject extends TraceUniqueObject {
|
|||
* @param <I> the interface type
|
||||
* @param span the span which the found objects must intersect
|
||||
* @param ifClass the interface class
|
||||
* @param requireCanonical if the objects must be found within their canonical container
|
||||
* @return the stream of interfaces
|
||||
*/
|
||||
<I extends TraceObjectInterface> Stream<I> querySuccessorsInterface(Lifespan span,
|
||||
Class<I> ifClass);
|
||||
Class<I> ifClass, boolean requireCanonical);
|
||||
|
||||
/**
|
||||
* Delete this object along with parent and child value entries referring to it
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue