diff --git a/Ghidra/Debug/Debugger-api/build.gradle b/Ghidra/Debug/Debugger-api/build.gradle index 9d53c355f6..6a5af1d6ac 100644 --- a/Ghidra/Debug/Debugger-api/build.gradle +++ b/Ghidra/Debug/Debugger-api/build.gradle @@ -4,9 +4,9 @@ * 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. @@ -18,6 +18,7 @@ apply from: "${rootProject.projectDir}/gradle/javaProject.gradle" apply from: "${rootProject.projectDir}/gradle/jacocoProject.gradle" apply from: "${rootProject.projectDir}/gradle/javaTestProject.gradle" apply from: "${rootProject.projectDir}/gradle/distributableGhidraModule.gradle" +apply from: "${rootProject.projectDir}/gradle/javadoc.gradle" apply plugin: 'eclipse' eclipse.project.name = 'Debug Debugger-api' diff --git a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/app/services/DebuggerPlatformService.java b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/app/services/DebuggerPlatformService.java index 0cf60bc3e6..296e3a9e44 100644 --- a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/app/services/DebuggerPlatformService.java +++ b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/app/services/DebuggerPlatformService.java @@ -38,8 +38,8 @@ public interface DebuggerPlatformService { *
* If the trace's current mapper is applicable to the object, it will be returned. Otherwise, * the service will query the opinions for a new mapper, as in - * {@link #getNewMapper(TraceObject)} and set it as the current mapper before returning. If a - * new mapper is set, the trace is also initialized for that mapper. + * {@link #getNewMapper(Trace, TraceObject, long)} and set it as the current mapper before + * returning. If a new mapper is set, the trace is also initialized for that mapper. * * @param trace the trace * @param object the object for which a mapper is desired diff --git a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/emulation/DebuggerPcodeEmulatorFactory.java b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/emulation/DebuggerPcodeEmulatorFactory.java index 026acaccce..6a825ffee6 100644 --- a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/emulation/DebuggerPcodeEmulatorFactory.java +++ b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/emulation/DebuggerPcodeEmulatorFactory.java @@ -4,9 +4,9 @@ * 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. @@ -22,10 +22,6 @@ import ghidra.util.classfinder.ExtensionPoint; /** * A factory for configuring and creating a Debugger-integrated emulator - * - *
- * See {@link BytesDebuggerPcodeEmulatorFactory} for the default implementation. See the Taint - * Analyzer for the archetype of alternative implementations. */ public interface DebuggerPcodeEmulatorFactory extends ExtensionPoint { // TODO: Config options, use ModelFactory as a model diff --git a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/emulation/DebuggerPcodeMachine.java b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/emulation/DebuggerPcodeMachine.java index 5526ae0125..6fdc418491 100644 --- a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/emulation/DebuggerPcodeMachine.java +++ b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/emulation/DebuggerPcodeMachine.java @@ -4,9 +4,9 @@ * 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. @@ -20,10 +20,6 @@ import ghidra.pcode.exec.trace.TracePcodeMachine; /** * A Debugger-integrated emulator (or p-code machine) * - *
- * A common implementation is an emulator with concrete plus some auxiliary state. To realize such a
- * machine, please see {@link AuxDebuggerPcodeEmulator} and {@link AuxDebuggerEmulatorPartsFactory}.
- *
* @param
- * This is a hack, because {@link TraceObjectSchema} expects {@link TargetObject}, or a
+ * This is a hack, because {@link TraceObjectSchema} expects {@link TraceObject}, or a
* primitive. We instead need {@link TraceObject}. I'd add the method to the schema, except that
* trace stuff is not in its dependencies.
*
diff --git a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracermi/TraceRmiAcceptor.java b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracermi/TraceRmiAcceptor.java
index ece13a58cf..12f6fbc8b4 100644
--- a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracermi/TraceRmiAcceptor.java
+++ b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracermi/TraceRmiAcceptor.java
@@ -4,9 +4,9 @@
* 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.
@@ -34,6 +34,7 @@ public interface TraceRmiAcceptor {
*
* @return the connection, if successful
* @throws IOException if there was an error
+ * @throws CancelledException if {@link #cancel()} is called, usually from the user canceling
*/
TraceRmiConnection accept() throws IOException, CancelledException;
@@ -64,8 +65,8 @@ public interface TraceRmiAcceptor {
*
*
* If a different thread has called {@link #accept()}, it will fail. In this case, both
- * {@linkplain TraceRmiServiceListener#acceptCancelled(TraceRmiAcceptor)} and
- * {@linkplain TraceRmiServiceListener#acceptFailed(Exception)} may be invoked.
+ * {@link TraceRmiServiceListener#acceptCancelled(TraceRmiAcceptor)} and
+ * {@link TraceRmiServiceListener#acceptFailed(TraceRmiAcceptor, Exception)} may be invoked.
*/
void cancel();
}
diff --git a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracermi/TraceRmiServiceListener.java b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracermi/TraceRmiServiceListener.java
index 24034ded05..ed5bafc826 100644
--- a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracermi/TraceRmiServiceListener.java
+++ b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracermi/TraceRmiServiceListener.java
@@ -86,8 +86,9 @@ public interface TraceRmiServiceListener {
*
*
* The acceptor remains valid until one of three events occurs:
- * {@linkplain} #connected(TraceRmiConnection, ConnectMode, TraceRmiAcceptor)},
- * {@linkplain} #acceptCancelled(TraceRmiAcceptor)}, or {@linkplain} #acceptFailed(Exception)}.
+ * {@link #connected(TraceRmiConnection, ConnectMode, TraceRmiAcceptor)},
+ * {@link #acceptCancelled(TraceRmiAcceptor)}, or
+ * {@link #acceptFailed(TraceRmiAcceptor, Exception)}.
*
* @param acceptor the acceptor waiting
*/
diff --git a/Ghidra/Debug/Debugger-rmi-trace/build.gradle b/Ghidra/Debug/Debugger-rmi-trace/build.gradle
index 8fa654b6c5..8fda8790eb 100644
--- a/Ghidra/Debug/Debugger-rmi-trace/build.gradle
+++ b/Ghidra/Debug/Debugger-rmi-trace/build.gradle
@@ -19,6 +19,7 @@ apply from: "${rootProject.projectDir}/gradle/helpProject.gradle"
apply from: "${rootProject.projectDir}/gradle/jacocoProject.gradle"
apply from: "${rootProject.projectDir}/gradle/javaTestProject.gradle"
apply from: "${rootProject.projectDir}/gradle/distributableGhidraModule.gradle"
+apply from: "${rootProject.projectDir}/gradle/javadoc.gradle"
apply from: "${rootProject.projectDir}/gradle/hasProtobuf.gradle"
apply from: "${rootProject.projectDir}/gradle/hasPythonPackage.gradle"
diff --git a/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/debug/spi/tracermi/TraceRmiLaunchOpinion.java b/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/debug/spi/tracermi/TraceRmiLaunchOpinion.java
index 6d9388d074..cb9a308e5e 100644
--- a/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/debug/spi/tracermi/TraceRmiLaunchOpinion.java
+++ b/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/debug/spi/tracermi/TraceRmiLaunchOpinion.java
@@ -4,9 +4,9 @@
* 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.
@@ -22,7 +22,6 @@ import ghidra.app.plugin.core.debug.service.tracermi.TraceRmiHandler;
import ghidra.app.services.InternalTraceRmiService;
import ghidra.debug.api.tracermi.TraceRmiLaunchOffer;
import ghidra.framework.options.Options;
-import ghidra.framework.plugintool.PluginTool;
import ghidra.program.model.listing.Program;
import ghidra.util.classfinder.ExtensionPoint;
@@ -30,15 +29,14 @@ import ghidra.util.classfinder.ExtensionPoint;
* A factory of launch offers
*
*
- * Each factory is instantiated only once for the entire application, even when multiple tools are
- * open. Thus, {@link #init(PluginTool)} and {@link #dispose(PluginTool)} will be invoked for each
- * tool.
+ * Each opinion is instantiated only once for the entire application, even when multiple tools are
+ * open.
*/
public interface TraceRmiLaunchOpinion extends ExtensionPoint {
/**
* Register any options
*
- * @param tool the tool
+ * @param options the tool options
*/
default void registerOptions(Options options) {
}
@@ -75,7 +73,7 @@ public interface TraceRmiLaunchOpinion extends ExtensionPoint {
* @param plugin the Trace RMI launcher service plugin. NOTE: to get access to the Trace
* RMI (connection) service, use the {@link InternalTraceRmiService}, so that the
* offers can register the connection's resources. See
- * {@link TraceRmiHandler#registerResources(Collection)}. Resource registration is
+ * {@link TraceRmiHandler#registerTerminals(Collection)}. Terminal registration is
* required for the Disconnect button to completely terminate the back end.
* @param program the current program. While this is not always used by the launcher,
* it is implied that the user expects the debugger to do something with the current
diff --git a/Ghidra/Debug/Debugger/build.gradle b/Ghidra/Debug/Debugger/build.gradle
index 2cd52327a8..0117ab919c 100644
--- a/Ghidra/Debug/Debugger/build.gradle
+++ b/Ghidra/Debug/Debugger/build.gradle
@@ -18,6 +18,7 @@ apply from: "${rootProject.projectDir}/gradle/helpProject.gradle"
apply from: "${rootProject.projectDir}/gradle/jacocoProject.gradle"
apply from: "${rootProject.projectDir}/gradle/javaTestProject.gradle"
apply from: "${rootProject.projectDir}/gradle/distributableGhidraModule.gradle"
+apply from: "${rootProject.projectDir}/gradle/javadoc.gradle"
apply plugin: 'eclipse'
eclipse.project.name = 'Debug Debugger'
diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/StackUnwinder.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/StackUnwinder.java
index 486359a7e8..fd8ffb8e33 100644
--- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/StackUnwinder.java
+++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/StackUnwinder.java
@@ -58,12 +58,12 @@ import ghidra.util.task.TaskMonitor;
*
* The usage pattern is typically:
*
- *
* Typically, a frame is sought either by its level or by its function. Once found, several
diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/SymPcodeExecutorState.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/SymPcodeExecutorState.java
index dc7297774a..dc8e49edef 100644
--- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/SymPcodeExecutorState.java
+++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/SymPcodeExecutorState.java
@@ -214,8 +214,8 @@ public class SymPcodeExecutorState implements PcodeExecutorState
* There are two cases:
*
diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwoundFrame.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwoundFrame.java
index f638ca878c..f8d265d609 100644
--- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwoundFrame.java
+++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwoundFrame.java
@@ -115,7 +115,7 @@ public interface UnwoundFrame
* Note that a returned value of 0 indicates 2 to the power 64, which is just 1 too high to fit
diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/pcode/exec/DebuggerPcodeUtils.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/pcode/exec/DebuggerPcodeUtils.java
index 1fd25ce6a1..20992e9fc4 100644
--- a/Ghidra/Debug/Debugger/src/main/java/ghidra/pcode/exec/DebuggerPcodeUtils.java
+++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/pcode/exec/DebuggerPcodeUtils.java
@@ -4,9 +4,9 @@
* 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.
@@ -64,8 +64,7 @@ public enum DebuggerPcodeUtils {
* A p-code parser that can resolve labels from a trace or its mapped programs.
*/
public static class LabelBoundPcodeParser extends ErrorCollectingPcodeParser {
- record ProgSym(String sourceName, String nm, Address address) {
- }
+ record ProgSym(String sourceName, String nm, Address address) {}
private final DebuggerStaticMappingService mappings;
private final DebuggerCoordinates coordinates;
@@ -447,8 +446,8 @@ public enum DebuggerPcodeUtils {
* A p-code arithmetic on watch values
*
*
- * This is just a composition of four arithmetics. Using Pair> would be
- * unwieldy.
+ * This is just a composition of four arithmetics. Using {@code Pair>} would
+ * be unwieldy.
*/
public enum WatchValuePcodeArithmetic implements PcodeArithmetic
* The view composition is not hierarchical, as each may represent a different combination, and one
* type may appear in several compositions. The single-type views are named first, then the composed
* views:
+ *
*
- * For overwrite, the caller should first use
- * {@link #doAdjustExisting(Address, InstructionPrototype, Instruction)}.
+ * For overwrite, the caller should first use *
+ * {@link #doAdjustExisting(Address, Instruction)}.
*
* @param address the starting address of the instruction
* @param protoInstr the prototype instruction
@@ -228,7 +228,7 @@ public class DBTraceInstructionsView extends AbstractBaseDBTraceDefinedUnitsView
* If it encounters a delay-slotted instruction, it will recurse on the group, iterating in
* reverse order.
*
- * @param instructions the instructions to add
+ * @param it the iterator of instructions to add
* @param areDelaySlots true if the instructions are already reversed from being
* delay-slotted
* @return the last instruction added
diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/DefaultTraceSpan.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/DefaultTraceSpan.java
index 336eb86752..f06148bbaf 100644
--- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/DefaultTraceSpan.java
+++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/DefaultTraceSpan.java
@@ -4,9 +4,9 @@
* 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.
@@ -18,7 +18,7 @@ package ghidra.trace.model;
import java.util.Objects;
/**
- * NOTE: This is used to mark
diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/target/schema/TraceObjectSchema.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/target/schema/TraceObjectSchema.java
index 689fc389c8..6bbb9f4c7c 100644
--- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/target/schema/TraceObjectSchema.java
+++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/target/schema/TraceObjectSchema.java
@@ -390,13 +390,13 @@ public interface TraceObjectSchema {
* path. Thus, for a path of length n, the resulting list has n+1 entries. This is useful for
* searches along the ancestry of a given path:
*
- *
* All entries are non-null, though they may be {@link PrimitiveTraceObjectSchema#VOID}.
@@ -1009,17 +1009,17 @@ public interface TraceObjectSchema {
*
*
* This places some conventional restrictions / expectations on models where registers are given
- * on a frame-by-frame basis. The schema should present the {@link TraceRegisterContainer}
- * as the same object or a successor to {@link TraceStackFrame}, which must in turn be a
- * successor to {@link TraceStack}. The frame level (an index) must be in the path from stack to
- * frame. There can be no wildcards between the frame and the register container. For example,
- * the container for {@code Threads[1]} may be {@code Threads[1].Stack[n].Registers}, where
+ * on a frame-by-frame basis. The schema should present the {@link TraceRegisterContainer} as
+ * the same object or a successor to {@link TraceStackFrame}, which must in turn be a successor
+ * to {@link TraceStack}. The frame level (an index) must be in the path from stack to frame.
+ * There can be no wildcards between the frame and the register container. For example, the
+ * container for {@code Threads[1]} may be {@code Threads[1].Stack[n].Registers}, where
* {@code n} is the frame level. {@code Threads[1].Stack} would have the {@link TraceStack}
* interface, {@code Threads[1].Stack[0]} would have the {@link TraceStackFrame} interface, and
* {@code Threads[1].Stack[0].Registers} would have the {@link TraceRegisterContainer}
- * interface. Note it is not sufficient for {@link TraceRegisterContainer} to be a
- * successor of {@link TraceStack} with a single index between. There must be an
- * intervening {@link TraceStackFrame}, and the frame level (index) must precede it.
+ * interface. Note it is not sufficient for {@link TraceRegisterContainer} to be a successor of
+ * {@link TraceStack} with a single index between. There must be an intervening
+ * {@link TraceStackFrame}, and the frame level (index) must precede it.
*
* @param frameLevel the frame level. May be ignored if not applicable
* @param path the path of the seed object relative to the root
diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeManagerTest.java
index a3a9c1dd76..7d86bf4dbf 100644
--- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeManagerTest.java
+++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeManagerTest.java
@@ -1418,12 +1418,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
.create(Lifespan.nowOn(0), b.language.getRegister("r4"), LongDataType.dataType);
}
- assertEquals(thread, regCode.codeUnits().getThread());
- assertEquals(thread, regCode.data().getThread());
- assertEquals(thread, regCode.definedUnits().getThread());
- assertEquals(thread, regCode.instructions().getThread());
- assertEquals(thread, regCode.definedData().getThread());
- assertEquals(thread, regCode.undefinedData().getThread());
+ assertEquals(thread, regCode.getThread());
assertEquals(List.of(dR4), list(regCode.definedUnits().get(0, true)));
@@ -1441,7 +1436,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
}
assertEquals(1, frameCode.getFrameLevel());
- assertEquals(thread, frameCode.codeUnits().getThread());
+ assertEquals(thread, frameCode.getThread());
assertEquals(List.of(dR5), list(frameCode.definedUnits().get(0, true)));
}
diff --git a/Ghidra/Debug/ProposedUtils/build.gradle b/Ghidra/Debug/ProposedUtils/build.gradle
index e63a0535f3..e0cf4cdfc8 100644
--- a/Ghidra/Debug/ProposedUtils/build.gradle
+++ b/Ghidra/Debug/ProposedUtils/build.gradle
@@ -17,6 +17,7 @@ apply from: "${rootProject.projectDir}/gradle/javaProject.gradle"
apply from: "${rootProject.projectDir}/gradle/jacocoProject.gradle"
apply from: "${rootProject.projectDir}/gradle/javaTestProject.gradle"
apply from: "${rootProject.projectDir}/gradle/distributableGhidraModule.gradle"
+apply from: "${rootProject.projectDir}/gradle/javadoc.gradle"
apply plugin: 'eclipse'
eclipse.project.name = 'Debug ProposedUtils'
diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/graph/algo/TopologicalSorter.java b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/graph/algo/TopologicalSorter.java
index b708e5b633..2b313ebbb4 100644
--- a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/graph/algo/TopologicalSorter.java
+++ b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/graph/algo/TopologicalSorter.java
@@ -4,9 +4,9 @@
* 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.
@@ -40,7 +40,10 @@ import ghidra.graph.*;
*
* A-->B-->D, A-->C-->D yields either [A, B, C, D] or [A, C, B, D]
*
- * @see {@link https://en.wikipedia.org/wiki/Topological_sorting}
+ * @see Wikipedia: Topological
+ * Sorting
+ * @param
- * Each varnode is evaluated as in {@link #evaluateStorage(VariableStorage)} and then
+ * Each varnode is evaluated as in {@link #evaluateStorage(Program, VariableStorage)} and then
* concatenated. The lower-indexed varnodes in storage are the more significant pieces, similar
* to big endian.
*
diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBAnnotatedObject.java b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBAnnotatedObject.java
index 6165804e61..9e6d629f87 100644
--- a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBAnnotatedObject.java
+++ b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBAnnotatedObject.java
@@ -4,9 +4,9 @@
* 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.
@@ -34,12 +34,12 @@ import ghidra.util.database.annot.DBAnnotatedObjectInfo;
* fields from the record. These objects are managed using a {@link DBCachedObjectStore}. An example
* object definition:
*
- *
* See {@link DBCachedObjectStoreFactory} for example code that uses the example {@code DBPerson}
@@ -192,7 +192,7 @@ public class DBAnnotatedObject extends DatabaseObject {
}
/**
- * 2-arity version of {@link #update(DBObjectColumn...)}
+ * 3-arity version of {@link #update(DBObjectColumn...)}
*
* @param col1 a column
* @param col2 another column
diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedDomainObjectAdapter.java b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedDomainObjectAdapter.java
index dc2fb39581..c547e0aca8 100644
--- a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedDomainObjectAdapter.java
+++ b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedDomainObjectAdapter.java
@@ -4,9 +4,9 @@
* 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.
@@ -162,7 +162,7 @@ public abstract class DBCachedDomainObjectAdapter extends DBDomainObjectSupport
protected ReadWriteLock rwLock;
/**
- * @see {@link DBDomainObjectSupport}
+ * @see DBDomainObjectSupport
*/
protected DBCachedDomainObjectAdapter(DBHandle dbh, OpenMode openMode, TaskMonitor monitor,
String name, int timeInterval, int bufSize, Object consumer) {
diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedObjectStoreFactory.java b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedObjectStoreFactory.java
index 6cfdf7a15f..179ce06a4e 100644
--- a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedObjectStoreFactory.java
+++ b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedObjectStoreFactory.java
@@ -41,7 +41,7 @@ import ghidra.util.exception.VersionException;
* See {@link DBAnnotatedObject} for more documentation, including an example object definition. To
* create a store, e.g., for {@code Person}:
*
- *
* The factory manages tables on behalf of the domain object, so it is typically the first thing
@@ -159,7 +159,7 @@ public class DBCachedObjectStoreFactory {
* {@link DBAnnotatedObject} is sufficient. If context is required, then additional interfaces
* can be required via type intersection:
*
- *
* Note that this implementation uses {@link AbstractDBFieldCodec}, which is highly recommended.
@@ -194,25 +194,25 @@ public class DBCachedObjectStoreFactory {
* {@link BinaryField}. See {@link ByteDBFieldCodec} for the simplest example with actual
* encoding and decoding implementations. To use the example codec in an object:
*
- *
* Notice that {@code SomeObject} must implement {@code ContextProvider}. This restriction is
@@ -406,7 +406,7 @@ public class DBCachedObjectStoreFactory {
throws IllegalArgumentException, IllegalAccessException;
/**
- * Same as {@link #load(DBAnnotatedObject, DBRecord), but permits exceptions
+ * Same as {@link #load(DBAnnotatedObject, DBRecord)}, but permits exceptions
*/
protected abstract void doLoad(OT obj, DBRecord record)
throws IllegalArgumentException, IllegalAccessException;
diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/spatial/AbstractConstraintsTree.java b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/spatial/AbstractConstraintsTree.java
index c75715684d..73c9d754b2 100644
--- a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/spatial/AbstractConstraintsTree.java
+++ b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/spatial/AbstractConstraintsTree.java
@@ -119,7 +119,6 @@ public abstract class AbstractConstraintsTree< //
* {@link Collection#size()}. Filtering is performed by {@link TreeRecordVisitor}.
*
* @param parent the parent node
- * @param query a query to control the ordering of the children
* @return a collection of the children
*/
protected Collection
* Note that the map may copy, and possibly modify, the given value. The value returned is the
* value actually stored by the map. This may be useful when the map's values are identical to
* its records. This allows the creation of a "blank" entry with a given shape. The entry is
* then populated by the user.
*
- *
* This practice is preferred when the values are not simple, and/or when the shape is a
* property of the value. In other cases, e.g., when the value is an enum or a {@link Color},
- * then {@link DBTreeDataRecord#setValue(Object)} and {@link DBTreeDataRecord#getValue()} should
- * be implemented as field accessors.
+ * then {@link DBTreeDataRecord#setRecordValue(Object)} and
+ * {@link DBTreeDataRecord#getRecordValue()} should be implemented as field accessors.
*
* @param shape the shape of the entry
* @param value the value for the entry
@@ -151,6 +151,7 @@ public interface SpatialMap
* Removes a single matching entry, if found, from the map. If you have a reference to an entry
* obtained from this map, use {@link #remove(Entry)} instead. Otherwise, this is the preferred
* method.
@@ -164,6 +165,7 @@ public interface SpatialMap
* This method is preferred only when the given entry comes directly from this map.
* This spares the implementation from having to search for a matching entry. If the entry does
* not come from this map, it will behave like {@link #remove(BoundedShape, Object)}.
@@ -176,6 +178,7 @@ public interface SpatialMap
* Note that this may not necessarily be a quick operation, esp., if this map is the result of
* {@link #reduce(Object)}. In the worst case, all elements in the reduced map will be visited.
*
diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/utilities/util/SuppressableCallback.java b/Ghidra/Debug/ProposedUtils/src/main/java/utilities/util/SuppressableCallback.java
index c57d51a8f0..42d459d957 100644
--- a/Ghidra/Debug/ProposedUtils/src/main/java/utilities/util/SuppressableCallback.java
+++ b/Ghidra/Debug/ProposedUtils/src/main/java/utilities/util/SuppressableCallback.java
@@ -4,9 +4,9 @@
* 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.
@@ -35,7 +35,7 @@ import java.util.function.*;
* A common use case is for a method to suppress any recursive calls, i.e., it is self suppressing,
* e.g.:
*
- *
* This example is very trivial, but this sort of thing can easily happen in event driven
@@ -62,6 +62,8 @@ import java.util.function.*;
* resulting in unending oscillation between the requested states. A more robust solution demands we
* know the cause(s) of events. For now, the solution is to suppress event firing whenever a state
* change is due to receiving an event.
+ *
+ * @param
diff --git a/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/TaintPcodeThreadExecutor.java b/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/TaintPcodeThreadExecutor.java
index c3f9cc294c..653460d61b 100644
--- a/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/TaintPcodeThreadExecutor.java
+++ b/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/TaintPcodeThreadExecutor.java
@@ -4,9 +4,9 @@
* 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.
@@ -19,8 +19,8 @@ import org.apache.commons.lang3.tuple.Pair;
import ghidra.pcode.emu.DefaultPcodeThread;
import ghidra.pcode.emu.DefaultPcodeThread.PcodeThreadExecutor;
-import ghidra.pcode.exec.PcodeExecutor;
-import ghidra.pcode.exec.PcodeFrame;
+import ghidra.pcode.exec.*;
+import ghidra.pcode.exec.PcodeArithmetic.Purpose;
import ghidra.program.model.pcode.PcodeOp;
import ghidra.taint.model.TaintVec;
import ghidra.util.Msg;
@@ -52,9 +52,8 @@ public class TaintPcodeThreadExecutor extends PcodeThreadExecutor
- * See {@link AbstractTaintTracePcodeExecutorStatePiece} for framing. We'll store taint sets in the
+ * See {@link AbstractTaintPcodeExecutorStatePiece} for framing. We'll store taint sets in the
* trace's address property map, which is the recommended scheme for auxiliary state.
*/
public class TaintTracePcodeExecutorStatePiece
diff --git a/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/trace/TaintTraceSpace.java b/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/trace/TaintTraceSpace.java
index 14ac6fea75..3a87b2a840 100644
--- a/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/trace/TaintTraceSpace.java
+++ b/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/trace/TaintTraceSpace.java
@@ -37,8 +37,7 @@ public class TaintTraceSpace extends TaintSpace {
* Create the space
*
* @param space the address space
- * @param backing if present, the backing object
- * @param snap the source snap
+ * @param property the trace property backing this space
*/
public TaintTraceSpace(AddressSpace space, PcodeTracePropertyAccess
- * This package builds on {@link ghidra.pcode.emu.plain} to construct a trace-integrated emulator.
- * See that package for remarks about this "working solution." Those state components were factored
- * to accommodate the state components introduced by this package.
+ * This package builds on the emulation framework to construct a trace-integrated emulator. The
+ * framework's state components were designed to accommodate the state components introduced by this
+ * package.
*
*
* For this package, I recommend a bottom-up approach, since you should already be familiar with the
diff --git a/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/taint/model/package-info.java b/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/taint/model/package-info.java
index c64313fdff..b622281054 100644
--- a/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/taint/model/package-info.java
+++ b/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/taint/model/package-info.java
@@ -4,9 +4,9 @@
* 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.
@@ -17,12 +17,13 @@
* The Taint domain package
*
*
- * This package implements the domain of taint analysis. {@link TaintVec} models an array of bytes,
- * each having a {@link TaintSet}. A {@link TaintSet} is in turn made of several {@link TaintMarks}.
- * Each mark is a symbol with optional tags. We use the tags as a means of handling indirection, so
- * that we don't have to decide up front whether tainted offsets taint the values read and written
- * from memory. We allow them to be tainted, but add a tag to the mark, so they can be examined
- * and/or filtered by the user.
+ * This package implements the domain of taint analysis. {@link ghidra.taint.model.TaintVec} models
+ * an array of bytes, each having a {@link ghidra.taint.model.TaintSet}. A
+ * {@link ghidra.taint.model.TaintSet} is in turn made of several
+ * {@link ghidra.taint.model.TaintMark}s. Each mark is a symbol with optional tags. We use the tags
+ * as a means of handling indirection, so that we don't have to decide up front whether tainted
+ * offsets taint the values read and written from memory. We allow them to be tainted, but add a tag
+ * to the mark, so they can be examined and/or filtered by the user.
*
*
* To facilitate storage and presentation of taint, we will need to implement some
@@ -30,7 +31,8 @@
* parse method for sets and marks.
*
*
- * We recommend you read the documentation and source from the bottom up: {@link TaintMark},
- * {@link TaintSet}, {@link TaintVec}.
+ * We recommend you read the documentation and source from the bottom up:
+ * {@link ghidra.taint.model.TaintMark}, {@link ghidra.taint.model.TaintSet},
+ * {@link ghidra.taint.model.TaintVec}.
*/
package ghidra.taint.model;
+ *
*
* {@code
* StackUnwinder unwinder = new StackUnwinder(tool, coordinates.getPlatform());
* for (AnalysisUnwoundFrame
+ * }
- *
*
* @return the address (stack offset or register) of the return address
diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwindAnalysis.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwindAnalysis.java
index 5c91d186e7..f23fd84242 100644
--- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwindAnalysis.java
+++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwindAnalysis.java
@@ -419,16 +419,16 @@ public class UnwindAnalysis {
* function return.
*
* PcodeTraceMemoryAccess sharedData = access.getDataForSharedState();
*
*
+ *
* PcodeTraceRegisterAccess localData = access.getDataForLocalState(thread, 0);
*
*
+ *
+ *
+ *
+ * {@code
* PcodeTracePropertyAccess
+ * }
- *
+ *
+ *
+ *
*
*
*
*
- *
*
*
+ *
*
+ *
*
*
*
*
*
@@ -92,44 +92,52 @@ import ghidra.trace.model.thread.TraceThread;
* may be presented by a user-space debugger for a desktop operating system:
*
*
- *
- *
- *
- *
- *
- *
- *
+ *
*
+ *
*
- *
- *
+ *
*
+ *
*
+ *
+ *
*
* {@code
* List
+ * }
+ *
*
* {@code
* interface Person {
* // ...
* }
*
- * @DBAnnotatedObjectInfo(version = 1)
+ * @DBAnnotatedObjectInfo(version = 1)
* public class DBPerson extends DBAnnotatedObject implements Person {
* public static final String TABLE_NAME = "Person"; // Conventionally defined here
*
@@ -48,15 +48,15 @@ import ghidra.util.database.annot.DBAnnotatedObjectInfo;
* static final String ADDRESS_COLUMN_NAME = "Address";
*
* // Column handles
- * @DBAnnotatedColumn(NAME_COLUMN_NAME)
+ * @DBAnnotatedColumn(NAME_COLUMN_NAME)
* static DBObjectColumn NAME_COLUMN;
- * @DBAnnotatedColumn(ADDRESS_COLUMN_NAME)
+ * @DBAnnotatedColumn(ADDRESS_COLUMN_NAME)
* static DBObjectColumn ADDRESS_COLUMN;
*
* // Column-backed fields
- * @DBAnnotatedField(column = NAME_COLUMN_NAME, indexed = true)
+ * @DBAnnotatedField(column = NAME_COLUMN_NAME, indexed = true)
* private String name;
- * @DBAnnotatedField(column = ADDRESS_COLUMN_NAME)
+ * @DBAnnotatedField(column = ADDRESS_COLUMN_NAME)
* private String address;
*
* DBPerson(DBCachedObjectStore
+ * }
+ *
*
* {@code
* interface MyDomainObject {
* Person createPerson(String name, String address);
*
@@ -71,7 +71,7 @@ import ghidra.util.exception.VersionException;
* }
* }
*
- * @Override
+ * @Override
* public Person createPerson(String name, String address) {
* // Locking details elided
* DBPerson person = people.create();
@@ -79,19 +79,19 @@ import ghidra.util.exception.VersionException;
* return person;
* }
*
- * @Override
+ * @Override
* public Person getPerson(int id) {
* // Locking details elided
* return people.getAt(id);
* }
*
- * @Override
+ * @Override
* public Collection
+ * }
+ *
*
* {@code
* public interface MyContext {
* // ...
* }
@@ -175,14 +175,14 @@ public class DBCachedObjectStoreFactory {
* super(MyType.class, objectType, BinaryField.class, field, column);
* }
*
- * @Override
+ * @Override
* protected void doStore(OT obj, DBRecord record) {
* MyContext ctx = obj.getContext();
* // ...
* }
* // ...
* }
- *
+ * }
- * @DBAnnotatedObjectInfo(version = 1)
+ *
*
* {@code
+ * @DBAnnotatedObjectInfo(version = 1)
* public static class SomeObject extends DBAnnotatedObject implements ContextProvider {
* static final String MY_COLUMN_NAME = "My";
*
- * @DBAnnotatedColumn(MY_COLUMN_NAME)
+ * @DBAnnotatedColumn(MY_COLUMN_NAME)
* static DBObjectColumn MY_COLUMN;
*
- * @DBAnnotatedField(column = MY_COLUMN_NAME, codec = MyDBFieldCodec.class)
+ * @DBAnnotatedField(column = MY_COLUMN_NAME, codec = MyDBFieldCodec.class)
* private MyType my;
*
* // ...
*
- * @Override
+ * @Override
* public MyContext getContext() {
* // ...
* }
* }
- *
+ * }
+ *
*
+ * {@code
* class MyDBDataRecord extends DBTreeDataRecord
*
- *
* MyDBDataRecord rec = map.put(MyShape.create(args), null);
* rec.setSomething(6);
* rec.setAnother("My user data");
- *
+ * }
+ *
*
* {@code
* private final SuppressableCallback
+ * }> callback) {
callback.accept(stack.get().view);
diff --git a/Ghidra/Debug/TaintAnalysis/build.gradle b/Ghidra/Debug/TaintAnalysis/build.gradle
index 19bb73116f..b9977c8815 100644
--- a/Ghidra/Debug/TaintAnalysis/build.gradle
+++ b/Ghidra/Debug/TaintAnalysis/build.gradle
@@ -13,10 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-apply from: "$rootProject.projectDir/gradle/javaProject.gradle"
-apply from: "$rootProject.projectDir/gradle/jacocoProject.gradle"
-apply from: "$rootProject.projectDir/gradle/javaTestProject.gradle"
-apply from: "$rootProject.projectDir/gradle/distributableGhidraModule.gradle"
+apply from: "${rootProject.projectDir}/gradle/javaProject.gradle"
+apply from: "${rootProject.projectDir}/gradle/jacocoProject.gradle"
+apply from: "${rootProject.projectDir}/gradle/javaTestProject.gradle"
+apply from: "${rootProject.projectDir}/gradle/distributableGhidraModule.gradle"
+apply from: "${rootProject.projectDir}/gradle/javadoc.gradle"
apply plugin: 'eclipse'
eclipse.project.name = 'Debug TaintAnalysis'
diff --git a/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/TaintPartsFactory.java b/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/TaintPartsFactory.java
index 09f9b56669..52ff65142a 100644
--- a/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/TaintPartsFactory.java
+++ b/Ghidra/Debug/TaintAnalysis/src/main/java/ghidra/pcode/emu/taint/TaintPartsFactory.java
@@ -4,9 +4,9 @@
* 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.
@@ -51,12 +51,13 @@ import ghidra.taint.model.TaintVec;
*
*
+ *