mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
Merge remote-tracking branch 'origin/patch'
This commit is contained in:
commit
fee687739b
4 changed files with 47 additions and 31 deletions
|
@ -161,6 +161,9 @@ public class DebuggerModelServiceProxyPlugin extends Plugin
|
||||||
@Override
|
@Override
|
||||||
public void elementAdded(DebuggerObjectModel element) {
|
public void elementAdded(DebuggerObjectModel element) {
|
||||||
modelListeners.fire.elementAdded(element);
|
modelListeners.fire.elementAdded(element);
|
||||||
|
if (currentModel == null) {
|
||||||
|
activateModel(element);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -189,12 +189,14 @@ public class DefaultTraceTimeViewport implements TraceTimeViewport {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean isLower(long lower) {
|
protected boolean isLower(long lower) {
|
||||||
synchronized (ordered) {
|
try (LockHold hold = trace.lockRead()) { // May not be necessary
|
||||||
Range<Long> range = spanSet.rangeContaining(lower);
|
synchronized (ordered) {
|
||||||
if (range == null) {
|
Range<Long> range = spanSet.rangeContaining(lower);
|
||||||
return false;
|
if (range == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return range.lowerEndpoint().longValue() == lower;
|
||||||
}
|
}
|
||||||
return range.lowerEndpoint().longValue() == lower;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,12 +267,12 @@ public class DefaultTraceTimeViewport implements TraceTimeViewport {
|
||||||
List<Range<Long>> ordered = new ArrayList<>();
|
List<Range<Long>> ordered = new ArrayList<>();
|
||||||
try (LockHold hold = trace.lockRead()) {
|
try (LockHold hold = trace.lockRead()) {
|
||||||
collectForkRanges(trace.getTimeManager(), snap, spanSet, ordered);
|
collectForkRanges(trace.getTimeManager(), snap, spanSet, ordered);
|
||||||
}
|
synchronized (this.ordered) {
|
||||||
synchronized (this.ordered) {
|
this.spanSet.clear();
|
||||||
this.spanSet.clear();
|
this.ordered.clear();
|
||||||
this.ordered.clear();
|
this.spanSet.addAll(spanSet);
|
||||||
this.spanSet.addAll(spanSet);
|
this.ordered.addAll(ordered);
|
||||||
this.ordered.addAll(ordered);
|
}
|
||||||
}
|
}
|
||||||
assert !ordered.isEmpty();
|
assert !ordered.isEmpty();
|
||||||
changeListeners.fire.run();
|
changeListeners.fire.run();
|
||||||
|
@ -325,41 +327,51 @@ public class DefaultTraceTimeViewport implements TraceTimeViewport {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isForked() {
|
public boolean isForked() {
|
||||||
synchronized (ordered) {
|
try (LockHold hold = trace.lockRead()) { // May not be necessary
|
||||||
return ordered.size() > 1;
|
synchronized (ordered) {
|
||||||
|
return ordered.size() > 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Range<Long>> getOrderedSpans() {
|
public List<Range<Long>> getOrderedSpans() {
|
||||||
synchronized (ordered) {
|
try (LockHold hold = trace.lockRead()) { // May not be necessary
|
||||||
return List.copyOf(ordered);
|
synchronized (ordered) {
|
||||||
|
return List.copyOf(ordered);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Range<Long>> getOrderedSpans(long snap) {
|
public List<Range<Long>> getOrderedSpans(long snap) {
|
||||||
synchronized (ordered) {
|
try (LockHold hold = trace.lockRead()) { // setSnap requires this
|
||||||
setSnap(snap);
|
synchronized (ordered) {
|
||||||
return getOrderedSpans();
|
setSnap(snap);
|
||||||
|
return getOrderedSpans();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Long> getOrderedSnaps() {
|
public List<Long> getOrderedSnaps() {
|
||||||
synchronized (ordered) {
|
try (LockHold hold = trace.lockRead()) { // May not be necessary
|
||||||
return ordered
|
synchronized (ordered) {
|
||||||
.stream()
|
return ordered
|
||||||
.map(Range::upperEndpoint)
|
.stream()
|
||||||
.collect(Collectors.toList());
|
.map(Range::upperEndpoint)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Long> getReversedSnaps() {
|
public List<Long> getReversedSnaps() {
|
||||||
synchronized (ordered) {
|
try (LockHold hold = trace.lockRead()) { // May not be necessary
|
||||||
return Lists.reverse(ordered)
|
synchronized (ordered) {
|
||||||
.stream()
|
return Lists.reverse(ordered)
|
||||||
.map(Range::upperEndpoint)
|
.stream()
|
||||||
.collect(Collectors.toList());
|
.map(Range::upperEndpoint)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,8 @@ import ghidra.framework.Application;
|
||||||
import ghidra.framework.options.SaveState;
|
import ghidra.framework.options.SaveState;
|
||||||
import ghidra.framework.plugintool.PluginTool;
|
import ghidra.framework.plugintool.PluginTool;
|
||||||
import ghidra.util.Msg;
|
import ghidra.util.Msg;
|
||||||
import ghidra.util.task.*;
|
import ghidra.util.task.TaskLauncher;
|
||||||
|
import ghidra.util.task.TaskMonitor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hosts the embedded OSGi framework and manages {@link GhidraBundle}s.
|
* Hosts the embedded OSGi framework and manages {@link GhidraBundle}s.
|
||||||
|
@ -261,7 +262,7 @@ public class BundleHost {
|
||||||
}
|
}
|
||||||
|
|
||||||
Bundle installFromPath(Path p) throws GhidraBundleException {
|
Bundle installFromPath(Path p) throws GhidraBundleException {
|
||||||
return installFromLoc("file://" + p.toAbsolutePath().normalize().toString());
|
return installFromLoc(p.toUri().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -48,7 +48,7 @@ public class GhidraJarBundle extends GhidraBundle {
|
||||||
public GhidraJarBundle(BundleHost bundleHost, ResourceFile file, boolean enabled,
|
public GhidraJarBundle(BundleHost bundleHost, ResourceFile file, boolean enabled,
|
||||||
boolean systemBundle) {
|
boolean systemBundle) {
|
||||||
super(bundleHost, file, enabled, systemBundle);
|
super(bundleHost, file, enabled, systemBundle);
|
||||||
this.bundleLocation = "file://" + file.getAbsolutePath().toString();
|
this.bundleLocation = file.toURI().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue