mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-05-24 03:09:36 +08:00
GP-0: Fixing some javadoc
This commit is contained in:
@@ -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.
|
||||
@@ -30,8 +30,8 @@ import ghidra.util.exception.InvalidInputException;
|
||||
* <a id="examples"></a>
|
||||
* Example strings:
|
||||
* <ul>
|
||||
* <li>global{@link Namespace#DELIMITER ::}child1{@link Namespace#DELIMITER ::}child2
|
||||
* <li>child1
|
||||
* <li>global{@link Namespace#DELIMITER ::}child1{@link Namespace#DELIMITER ::}child2</li>
|
||||
* <li>child1</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* <a id="assumptions"></a>
|
||||
|
||||
@@ -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,11 +34,11 @@ import ghidra.program.util.ProgramSelection;
|
||||
* Subclasses should override the following methods if they are interested in the corresponding
|
||||
* events:
|
||||
* <ul>
|
||||
* <LI> {@link #programOpened(Program)}
|
||||
* <LI> {@link #programClosed(Program)}
|
||||
* <LI> {@link #locationChanged(ProgramLocation)}
|
||||
* <LI> {@link #selectionChanged(ProgramSelection)}
|
||||
* <LI> {@link #highlightChanged(ProgramSelection)}
|
||||
* <LI> {@link #programOpened(Program)}</LI>
|
||||
* <LI> {@link #programClosed(Program)}</LI>
|
||||
* <LI> {@link #locationChanged(ProgramLocation)}</LI>
|
||||
* <LI> {@link #selectionChanged(ProgramSelection)}</LI>
|
||||
* <LI> {@link #highlightChanged(ProgramSelection)}</LI>
|
||||
* </ul>
|
||||
*/
|
||||
public abstract class ProgramPlugin extends Plugin {
|
||||
|
||||
+4
-4
@@ -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.
|
||||
@@ -50,8 +50,8 @@ import ghidra.util.task.UnknownProgressWrappingTaskMonitor;
|
||||
* <p>
|
||||
* The string struct is found in a couple of different ways:
|
||||
* <ul>
|
||||
* <li>References from an instruction (see markupStaticStructRefsInFunction)
|
||||
* <li>Iterating through data segments and making educated guesses (see markupDataSegmentStructs)
|
||||
* <li>References from an instruction (see markupStaticStructRefsInFunction)</li>
|
||||
* <li>Iterating through data segments and making educated guesses (see markupDataSegmentStructs)</li>
|
||||
* </ul>
|
||||
* Some char[] data is only referenced from Golang string structs that exist temporarily
|
||||
* in registers after being set by an instruction that statically references the char[] data,
|
||||
|
||||
+10
-10
@@ -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.
|
||||
@@ -23,20 +23,20 @@ import javax.swing.JComponent;
|
||||
* It is intended to be used by the code completion process, especially the
|
||||
* CodeCompletionWindow. It encapsulates:
|
||||
* <ul>
|
||||
* <li> a description of the completion (what are you completing?)
|
||||
* <li> the actual String that will be inserted
|
||||
* <li> an optional Component that will be in the completion List
|
||||
* <li> the number of characters to remove before the insertion of the completion
|
||||
* <li> a description of the completion (what are you completing?)</li>
|
||||
* <li> the actual String that will be inserted</li>
|
||||
* <li> an optional Component that will be in the completion List</li>
|
||||
* <li> the number of characters to remove before the insertion of the completion</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* For example, if one wants to autocomplete a string "Runscr" into "runScript",
|
||||
* the fields may look as follows:
|
||||
* <ul>
|
||||
* <li> description: "runScript (Method)"
|
||||
* <li> insertion: "runScript"
|
||||
* <li> component: null or JLabel("runScript (Method)")
|
||||
* <li> description: "runScript (Method)"</li>
|
||||
* <li> insertion: "runScript"</li>
|
||||
* <li> component: null or JLabel("runScript (Method)")</li>
|
||||
* <li> charsToRemove: 6 (i.e. the length of "Runscr",
|
||||
* as it may be required later to correctly replace the string)
|
||||
* as it may be required later to correctly replace the string)</li>
|
||||
* </ul>
|
||||
*/
|
||||
public class CodeCompletion implements Comparable<CodeCompletion> {
|
||||
|
||||
@@ -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.
|
||||
@@ -58,9 +58,9 @@ import resources.Icons;
|
||||
* Dialog that shows files used for parsing C header files. The profile has a list of source header
|
||||
* files to parse, followed by parse options (compiler directives). Ghidra supplies a Windows
|
||||
* profile by default in core/parserprofiles. The user can do "save as" on this default profile to
|
||||
* create new profiles that will be written to the user's <home>/userprofiles directory. The
|
||||
* create new profiles that will be written to the user's {@code <home>/userprofiles} directory. The
|
||||
* CParserPlugin creates this directory if it doesn't exist.
|
||||
*
|
||||
* <p>
|
||||
* The data types resulting from the parse operation can either be added to the data type manager in
|
||||
* the current program, or written to an archive data file.
|
||||
*
|
||||
|
||||
+6
-4
@@ -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.
|
||||
@@ -79,8 +79,10 @@ public class FunctionTagTable extends GhidraTable {
|
||||
|
||||
/**
|
||||
* We need to override the renderer for the following cases:
|
||||
* <li>italicize tags that cannot be edited</li>
|
||||
* <li>disable rows in the source table that have already been added to the selected function </li>
|
||||
* <ul>
|
||||
* <li>italicize tags that cannot be edited</li>
|
||||
* <li>disable rows in the source table that have already been added to the selected function </li>
|
||||
* </ul>
|
||||
*/
|
||||
@Override
|
||||
public TableCellRenderer getCellRenderer(int row, int col) {
|
||||
|
||||
+6
-4
@@ -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.
|
||||
@@ -398,8 +398,10 @@ public class InsertBytesWidget extends ReusableDialogComponentProvider implement
|
||||
|
||||
/**
|
||||
* Verifies that the input entered by the user is valid. Meaning:
|
||||
* <li>The string represents a hex or binary number.</li>
|
||||
* <li>The string contains only full bytes.</li>
|
||||
* <ul>
|
||||
* <li>The string represents a hex or binary number.</li>
|
||||
* <li>The string contains only full bytes.</li>
|
||||
* </ul>
|
||||
*
|
||||
* @return true if input is valid
|
||||
*/
|
||||
|
||||
+9
-9
@@ -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,13 +40,13 @@ import resources.Icons;
|
||||
* The NextPrevCodeUnitPlugin generates a GoTo event based on where the cursor
|
||||
* is located in the program. The GoTo events provided by this plugin are:
|
||||
* <UL>
|
||||
* <LI>Next-Previous Instruction
|
||||
* <LI>Next-Previous Defined Data
|
||||
* <LI>Next-Previous Undefined Data
|
||||
* <LI>Next-Previous Function
|
||||
* <LI>Next-Previous Non-Function
|
||||
* <LI>Next-Previous Label
|
||||
* <LI>Next-Previous Bookmark
|
||||
* <LI>Next-Previous Instruction</LI>
|
||||
* <LI>Next-Previous Defined Data</LI>
|
||||
* <LI>Next-Previous Undefined Data</LI>
|
||||
* <LI>Next-Previous Function</LI>
|
||||
* <LI>Next-Previous Non-Function</LI>
|
||||
* <LI>Next-Previous Label</LI>
|
||||
* <LI>Next-Previous Bookmark</LI>
|
||||
* </UL>
|
||||
*/
|
||||
//@formatter:off
|
||||
|
||||
@@ -49,11 +49,11 @@ import utilities.util.FileUtilities;
|
||||
* Note: {@link GhidraBundle}, its implementations, and this class constitute a bridge between
|
||||
* OSGi's {@link Bundle} and Ghidra.
|
||||
* <ul>
|
||||
* <li> unqualified, "bundle" will mean {@link GhidraBundle}
|
||||
* <li> unqualified, "bundle" will mean {@link GhidraBundle}</li>
|
||||
* <li> use of OSGi types, including {@link Bundle} and {@link Framework}, should be package scoped
|
||||
* (not public)
|
||||
* (not public) </li>
|
||||
* <li> bundle lifecycle is simplified to "active"(same as OSGi "active" state) and "inactive"
|
||||
* (OSGi "uninstalled" state)
|
||||
* (OSGi "uninstalled" state)</li>
|
||||
* </ul>
|
||||
*/
|
||||
public class BundleHost {
|
||||
|
||||
+4
-4
@@ -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.
|
||||
@@ -25,8 +25,8 @@ import ghidra.program.model.listing.Program;
|
||||
* <p>
|
||||
* Specifically this provides the following:
|
||||
* <ul>
|
||||
* <li>Ability to specify if this is a min/max range field
|
||||
* <li>Allows hex input of the form "0x...." for hex values
|
||||
* <li>Ability to specify if this is a min/max range field</li>
|
||||
* <li>Allows hex input of the form "0x...." for hex values</li>
|
||||
* </ul>
|
||||
*/
|
||||
public class RangeFilterTextField extends IntegerTextField {
|
||||
|
||||
+4
-4
@@ -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.
|
||||
@@ -42,8 +42,8 @@ import help.HelpService;
|
||||
/**
|
||||
* Displays the results of a query from the {@link ScalarSearchPlugin}. Consists of 2 components:
|
||||
* <ul>
|
||||
* <li>The scalar table that is displayed to the user
|
||||
* <li>The range filter that allows the user to filter the scalar table via a min and max value.
|
||||
* <li>The scalar table that is displayed to the user</li>
|
||||
* <li>The range filter that allows the user to filter the scalar table via a min and max value.</li>
|
||||
* </ul>
|
||||
*/
|
||||
public class ScalarSearchProvider extends ComponentProviderAdapter {
|
||||
|
||||
+6
-6
@@ -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.
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
package ghidra.app.plugin.core.string;
|
||||
|
||||
import static ghidra.program.util.string.FoundString.DefinedState.DEFINED;
|
||||
import static ghidra.program.util.string.FoundString.DefinedState.*;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
@@ -31,9 +31,9 @@ import ghidra.program.util.string.FoundString;
|
||||
* Basic Algorithm: Uses a defined data iterator to find all defined data in a program. For
|
||||
* each defined data, strings are searched as follows:
|
||||
* <ol>
|
||||
* <li> is it a string? if so, add to the queue of results
|
||||
* <li> is it an array? if so, are they non-primitive elements? if so, recursively search them for strings.
|
||||
* <li> is it a composite (structure or union)? if so, recursively search each element of the structure.
|
||||
* <li> is it a string? if so, add to the queue of results</li>
|
||||
* <li> is it an array? if so, are they non-primitive elements? if so, recursively search them for strings.</li>
|
||||
* <li> is it a composite (structure or union)? if so, recursively search each element of the structure.</li>
|
||||
* </ol>
|
||||
* <p>
|
||||
* This class maintains a queue of all strings found at any given top-level data element. When
|
||||
|
||||
+5
-5
@@ -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.
|
||||
@@ -62,17 +62,17 @@ import ghidra.util.Msg;
|
||||
* <td>{@code "\033["}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code OSC}
|
||||
* <td>{@code OSC}</td>
|
||||
* <td>{@code ESC ]}</td>
|
||||
* <td>{@code "\033]"}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code ST}
|
||||
* <td>{@code ST}</td>
|
||||
* <td>{@code ESC \}</td>
|
||||
* <td>{@code "\033\\"}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code BEL}
|
||||
* <td>{@code BEL}</td>
|
||||
* <td>byte 0x07</td>
|
||||
* <td>{@code "\007"}</td>
|
||||
* </tr>
|
||||
|
||||
+5
-6
@@ -1,13 +1,12 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* 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.
|
||||
@@ -38,10 +37,10 @@ import ghidra.util.task.TaskMonitor;
|
||||
* The LSDA is comprised of:
|
||||
* <ul>
|
||||
* <li>A header that describes the bounds of exception handling support and encoding
|
||||
* modes for values found later in the LSDA table
|
||||
* modes for values found later in the LSDA table</li>
|
||||
* <li>A call site table that describes each location a 'throws' occurs and where
|
||||
* a corresponding catch block resides, and the actions to take.
|
||||
* <li>An action table, that describes what the runtime needs to do during unwind
|
||||
* a corresponding catch block resides, and the actions to take.</li>
|
||||
* <li>An action table, that describes what the runtime needs to do during unwind</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* The structures modeled here are described in detail in the C++ ABI.
|
||||
|
||||
+5
-5
@@ -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.
|
||||
@@ -39,16 +39,16 @@ import ghidra.util.SystemUtilities;
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>discarded and replaced by the existing data type
|
||||
* ({@link ConflictResult#USE_EXISTING})
|
||||
* ({@link ConflictResult#USE_EXISTING})</li>
|
||||
* <li>used to overwrite the existing data type
|
||||
* ({@link ConflictResult#REPLACE_EXISTING})
|
||||
* ({@link ConflictResult#REPLACE_EXISTING})</li>
|
||||
* </ul>
|
||||
* or the candidate data type was <b>NOT</b> matched with an existing data type,
|
||||
* and the new data type is:
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>kept, but renamed with a .conflictNNNN suffix to make it unique
|
||||
* ({@link ConflictResult#RENAME_AND_ADD})
|
||||
* ({@link ConflictResult#RENAME_AND_ADD})</li>
|
||||
* </ul>
|
||||
* <b>NOTE:</b> structures with alignment (instead of being statically laid out)
|
||||
* are not treated specially and will not match other aligned or non-aligned
|
||||
|
||||
+7
-8
@@ -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.
|
||||
@@ -31,7 +31,6 @@ import ghidra.program.model.listing.Program;
|
||||
import ghidra.program.model.mem.Memory;
|
||||
import ghidra.program.model.mem.MemoryBlock;
|
||||
import ghidra.program.model.util.CodeUnitInsertionException;
|
||||
import ghidra.util.Msg;
|
||||
import ghidra.util.classfinder.ExtensionPointProperties;
|
||||
import ghidra.util.exception.CancelledException;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
@@ -39,11 +38,11 @@ import ghidra.util.task.TaskMonitor;
|
||||
/**
|
||||
* Handles marking up and program info for basic ELF note (and note-like) sections.
|
||||
* <ul>
|
||||
* <li>NoteAbiTag
|
||||
* <li>NoteGnuBuildId
|
||||
* <li>NoteGnuProperty
|
||||
* <li>GnuDebugLink (not a note)
|
||||
* <li>ElfComment (not a note)
|
||||
* <li>NoteAbiTag</li>
|
||||
* <li>NoteGnuBuildId</li>
|
||||
* <li>NoteGnuProperty</li>
|
||||
* <li>GnuDebugLink (not a note)</li>
|
||||
* <li>ElfComment (not a note)</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* Runs after other ElfInfoProducers that have a normal priority.
|
||||
|
||||
+5
-5
@@ -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.
|
||||
@@ -30,10 +30,10 @@ import ghidra.program.model.lang.Register;
|
||||
* <p>
|
||||
* Assigning custom storage for the return value is complicated by:
|
||||
* <ul>
|
||||
* <li>golang storage allocations depend on the formal ordering of the return values
|
||||
* <li>stack storage must be last in a list of varnodes
|
||||
* <li>golang storage allocations depend on the formal ordering of the return values</li>
|
||||
* <li>stack storage must be last in a list of varnodes</li>
|
||||
* <li>the decompiler maps a structure's contents to the list of varnodes in an endian-dependent
|
||||
* manner.
|
||||
* manner.</li>
|
||||
* </ul>
|
||||
* To meet these complications, the structure's layout is modified to put all items that were
|
||||
* marked as being stack parameters to either the front or back of the structure.
|
||||
|
||||
+12
-11
@@ -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.
|
||||
@@ -28,16 +28,17 @@ import ghidra.util.task.TaskMonitor;
|
||||
|
||||
/**
|
||||
* Handles marking up and program info for Golang binaries.
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>NoteGoBuildId
|
||||
* <li>GoBuildInfo
|
||||
* <ul>
|
||||
* <li>Go version
|
||||
* <li>App path, main package
|
||||
* <li>Module dependency list
|
||||
* <li>Build settings / flags
|
||||
* </ul>
|
||||
* <li>NoteGoBuildId</li>
|
||||
* <li>GoBuildInfo</li>
|
||||
* <li>
|
||||
* <ul>
|
||||
* <li>Go version</li>
|
||||
* <li>App path, main package</li>
|
||||
* <li>Module dependency list</li>
|
||||
* <li>Build settings / flags</li>
|
||||
* </ul>
|
||||
* </li>
|
||||
* </ul>
|
||||
*/
|
||||
public class GolangElfInfoProducer implements ElfInfoProducer {
|
||||
|
||||
+4
-4
@@ -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.
|
||||
@@ -225,8 +225,8 @@ public class GoFuncData implements StructureMarkup<GoFuncData> {
|
||||
* <p>
|
||||
* The information that can be recovered about arguments is limited to:
|
||||
* <ul>
|
||||
* <li>the size of the argument
|
||||
* <li>general grouping (eg. grouping of arg values as a structure or array)
|
||||
* <li>the size of the argument</li>
|
||||
* <li>general grouping (eg. grouping of arg values as a structure or array)</li>
|
||||
* </ul>
|
||||
* Return value information is unknown and always represented as an "undefined" data type.
|
||||
*
|
||||
|
||||
+17
-13
@@ -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.
|
||||
@@ -58,22 +58,26 @@ import ghidra.util.task.UnknownProgressWrappingTaskMonitor;
|
||||
* <li>Find the GoBuildInfo struct. This struct is the easiest to locate, even when the binary
|
||||
* is stripped. This gives us the go pointerSize (probably same as ghidra pointer size) and the
|
||||
* goVersion. This struct does not rely on StructureMapping, allowing its use before a
|
||||
* DataTypeMapper is created.
|
||||
* <li>Create DataTypeMapper
|
||||
* <li>Find the runtime.firstmoduledata structure.
|
||||
* <ul>
|
||||
* <li>If there are symbols, just use the symbol or named memory block.
|
||||
* <li>If stripped:
|
||||
* DataTypeMapper is created.</li>
|
||||
* <li>Create DataTypeMapper</li>
|
||||
* <li>Find the runtime.firstmoduledata structure.</li>
|
||||
* <li>
|
||||
* <ul>
|
||||
* <li>If there are symbols, just use the symbol or named memory block.</li>
|
||||
* <li>If stripped:</li>
|
||||
* <li>
|
||||
* <ul>
|
||||
* <li>Find the pclntab. This has a magic signature, a pointerSize, and references
|
||||
* to a couple of tables that are also referenced in the moduledata structure.
|
||||
* to a couple of tables that are also referenced in the moduledata structure.</li>
|
||||
* <li>Search memory for a pointer to the pclntab struct. This should be the first
|
||||
* field of the moduledata structure. The values that are duplicated between the
|
||||
* two structures can be compared to ensure validity.
|
||||
* two structures can be compared to ensure validity.</li>
|
||||
* <li>Different binary formats (Elf vs PE) will determine which memory blocks to
|
||||
* search.
|
||||
* </ul>
|
||||
* </ul>
|
||||
* search.</li>
|
||||
* </ul>
|
||||
* </li>
|
||||
* </ul>
|
||||
* </li>
|
||||
* </ul>
|
||||
*/
|
||||
public class GoRttiMapper extends DataTypeMapper implements DataTypeMapperContext {
|
||||
|
||||
@@ -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.
|
||||
@@ -196,7 +196,7 @@ public class MachHeader implements StructConverter {
|
||||
/**
|
||||
* Parses only this {@link MachHeader}'s {@link SegmentCommand segments}
|
||||
*
|
||||
* @return A {@List} of this {@link MachHeader}'s {@link SegmentCommand segments}
|
||||
* @return A {@link List} of this {@link MachHeader}'s {@link SegmentCommand segments}
|
||||
* @throws IOException If there was an IO-related error
|
||||
*/
|
||||
public List<SegmentCommand> parseSegments() throws IOException {
|
||||
|
||||
@@ -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.
|
||||
@@ -260,7 +260,7 @@ public class CParserUtils {
|
||||
*
|
||||
* @param filenames names of files in order to parse, could include strings with
|
||||
* "#" at start, which are ignored as comments
|
||||
* @param args arguments for parsing, "-D<defn>=", "-I<includepath>"
|
||||
* @param args arguments for parsing, {@code -D<defn>=, -I<includepath>}
|
||||
*
|
||||
* @param dataFileName name of data type archive file (include the .gdt extension)
|
||||
*
|
||||
@@ -297,8 +297,9 @@ public class CParserUtils {
|
||||
*
|
||||
* @param filenames names of files in order to parse, could include strings with
|
||||
* "#" at start, which are ignored as comments
|
||||
* @param includePaths paths to include files, instead of using "-I<includepath>" in args
|
||||
* @param args arguments for parsing, "-D<defn>=", ( "-I<includepath>" use includePaths parm instead)
|
||||
* @param includePaths paths to include files, instead of using {@code -I<includepath>} in args
|
||||
* @param args arguments for parsing, {@code -D<defn>=}, ( {@code -I<includepath>} use
|
||||
* includePaths parm instead)
|
||||
*
|
||||
* @param dataFileName name of data type archive file (include the .gdt extension)
|
||||
*
|
||||
@@ -338,8 +339,8 @@ public class CParserUtils {
|
||||
*
|
||||
* @param filenames names of files in order to parse, could include strings with
|
||||
* "#" at start, which are ignored as comments
|
||||
* @param includePaths path to include files, could also be in args with "-I<includepath>"
|
||||
* @param args arguments for parsing, "-D<defn>=", "-I<includepath>"
|
||||
* @param includePaths path to include files, could also be in args with {@code -I<includepath>}
|
||||
* @param args arguments for parsing, {@code -D<defn>=, -I<includepath>}
|
||||
*
|
||||
* @param dataFileName name of data type archive file (include the .gdt extension)
|
||||
*
|
||||
@@ -391,11 +392,12 @@ public class CParserUtils {
|
||||
*
|
||||
* @param filenames names of files in order to parse, could include strings with
|
||||
* "#" at start, which are ignored as comments
|
||||
* @param args arguments for parsing, "-D<defn>=", ( "-I<includepath>" use includePaths parm instead)
|
||||
* @param args arguments for parsing, {@code -D<defn>=}, ({@code -I<includepath>} use
|
||||
* includePaths parm instead)
|
||||
*
|
||||
* @param existingDTMgr datatypes will be populated into this provided DTMgr, can pass Program or File DTMgr
|
||||
*
|
||||
* @param languageId language identication to use for data type organization definitions (int, long, ptr size)
|
||||
* @param languageId language identification to use for data type organization definitions (int, long, ptr size)
|
||||
* @param compileSpecId compiler specification to use for parsing
|
||||
*
|
||||
* @param monitor used to cancel or provide results
|
||||
@@ -431,12 +433,12 @@ public class CParserUtils {
|
||||
*
|
||||
* @param filenames names of files in order to parse, could include strings with
|
||||
* "#" at start, which are ignored as comments
|
||||
* @param includePaths paths to include files, instead of using "-I<includepath>" in args
|
||||
* @param args arguments for parsing, "-D<defn>=", ( "-I<includepath>" use includePaths parm instead)
|
||||
* @param includePaths paths to include files, instead of using {@code -I<includepath>} in args
|
||||
* @param args arguments for parsing, {@code -D<defn>=}, ( {@code -I<includepath>} use includePaths parm instead)
|
||||
*
|
||||
* @param existingDTMgr datatypes will be populated into this provided DTMgr, can pass Program or File DTMgr
|
||||
*
|
||||
* @param languageId language identication to use for data type organization definitions (int, long, ptr size)
|
||||
* @param languageId language identification to use for data type organization definitions (int, long, ptr size)
|
||||
* @param compileSpecId compiler specification to use for parsing
|
||||
*
|
||||
* @param monitor used to cancel or provide results
|
||||
@@ -508,8 +510,8 @@ public class CParserUtils {
|
||||
*
|
||||
* @param filenames names of files in order to parse, could include strings with
|
||||
* "#" at start, which are ignored as comments
|
||||
* @param includePaths paths to include files, instead of using "-I<includepath>" in args
|
||||
* @param args arguments for parsing, "-D<defn>=", ( "-I<includepath>" use includePaths parm instead)
|
||||
* @param includePaths paths to include files, instead of using {@code -I<includepath>} in args
|
||||
* @param args arguments for parsing, {@code -D<defn>=}, ( {@code -I<includepath>} use includePaths parm instead)
|
||||
*
|
||||
* @param dtMgr datatypes will be populated into this provided DTMgr, can pass Program or File DTMgr
|
||||
*
|
||||
|
||||
+5
-5
@@ -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.
|
||||
@@ -200,13 +200,13 @@ public class BoundedBufferedReader extends Reader {
|
||||
* true:
|
||||
* <ul>
|
||||
*
|
||||
* <li>The specified number of characters have been read,
|
||||
* <li>The specified number of characters have been read,</li>
|
||||
*
|
||||
* <li>The <code>read</code> method of the underlying stream returns
|
||||
* <code>-1</code>, indicating end-of-file, or
|
||||
* <code>-1</code>, indicating end-of-file, or</li>
|
||||
*
|
||||
* <li>The <code>ready</code> method of the underlying stream returns
|
||||
* <code>false</code>, indicating that further input requests would block.
|
||||
* <code>false</code>, indicating that further input requests would block.</li>
|
||||
*
|
||||
* </ul>
|
||||
* If the first <code>read</code> on the underlying stream returns
|
||||
|
||||
@@ -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.
|
||||
@@ -39,13 +39,13 @@ import ghidra.util.SystemUtilities;
|
||||
* <p>
|
||||
* Examples (pipes shown in red since they are hard to see):
|
||||
* <ul>
|
||||
* <li><b>file://dir/subdir</b> -- simplest example, locates a file on local computer filesystem.
|
||||
* <li><b>file://dir/subdir/example.zip<span style="color:red">|</span>zip://readme.txt</b> -- points to a file named "readme.txt" in a zip file.
|
||||
* <li><b>file://dir/subdir/example.zip<span style="color:red">|</span>zip://dir/nested.tar<span style="color:red">|</span>tar://file.txt</b> -- points to
|
||||
* a file inside a TAR archive, which is inside a ZIP archive, which is on the local filesystem.
|
||||
* <li><b>file://dir/subdir/example.zip?MD5=1234567<span style="color:red">|</span>zip://readme.txt?MD5=987654</b> --
|
||||
* <li><b>file://dir/subdir</b> -- simplest example, locates a file on local computer filesystem.</li>
|
||||
* <li><b>file://dir/subdir/example.zip</b><span style="color:red;font-weight:bold;">|</span><b>zip://readme.txt</b> -- points to a file named "readme.txt" in a zip file.</li>
|
||||
* <li><b>file://dir/subdir/example.zip</b><span style="color:red;font-weight:bold;">|</span><b>zip://dir/nested.tar</b><span style="color:red;font-weight:bold;">|</span><b>tar://file.txt</b> -- points to
|
||||
* a file inside a TAR archive, which is inside a ZIP archive, which is on the local filesystem.</li>
|
||||
* <li><b>file://dir/subdir/example.zip?MD5=1234567</b><span style="color:red;font-weight:bold;">|</span><b>zip://readme.txt?MD5=987654</b> --
|
||||
* points to a file named "readme.txt" (with a MD5 hash) in a zip file (that has another
|
||||
* MD5 hash).
|
||||
* MD5 hash).</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* See {@link FSRLRoot} for examples of how FSRL and FSRLRoot's are related.
|
||||
|
||||
@@ -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.
|
||||
@@ -26,11 +26,11 @@ package ghidra.formats.gfilesystem;
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>FSRLRoot [ file:// ]<br>
|
||||
* "file://"
|
||||
* "file://"</li>
|
||||
* <li>{@literal FSRLRoot [ file:// ] <---- FSRL [ /filename.txt ]}<br>
|
||||
* "file:///filename.txt"
|
||||
* "file:///filename.txt"</li>
|
||||
* <li>{@literal FSRLRoot [ file:// ] <---- FSRL [ /filename.txt ] <--- FSRLRoot [ subfs:// ]}<br>
|
||||
* "file:///filename.txt|subfs://"
|
||||
* "file:///filename.txt|subfs://"</li>
|
||||
* </ul>
|
||||
*/
|
||||
public class FSRLRoot extends FSRL {
|
||||
|
||||
@@ -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.
|
||||
@@ -57,8 +57,8 @@ import ghidra.util.task.TaskMonitor;
|
||||
* <p>
|
||||
* NOTE:
|
||||
* <ol>
|
||||
* <li>NO METHODS *SHOULD* EVER BE REMOVED FROM THIS CLASS.
|
||||
* <li>NO METHOD SIGNATURES *SHOULD* EVER BE CHANGED IN THIS CLASS.
|
||||
* <li>NO METHODS *SHOULD* EVER BE REMOVED FROM THIS CLASS.</li>
|
||||
* <li>NO METHOD SIGNATURES *SHOULD* EVER BE CHANGED IN THIS CLASS.</li>
|
||||
* </ol>
|
||||
* <p>
|
||||
* This class is used by GhidraScript.
|
||||
|
||||
@@ -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,12 +22,12 @@ import ghidra.xml.XmlPullParser;
|
||||
/**
|
||||
* ByteSearch post search rule when a pattern is found. Used when a pattern must have a certain
|
||||
* alignment at an offset from the location the pattern matches.
|
||||
*
|
||||
* <p>
|
||||
* The pattern can be constructed or restored from XML of the form,
|
||||
* where alignOffset=mark, alignmask=bits
|
||||
*
|
||||
* <align mark="0" bits="1"/>
|
||||
*
|
||||
* <pre>{@code
|
||||
* <align mark="0" bits="1"/>
|
||||
* }</pre>
|
||||
*/
|
||||
|
||||
public class AlignRule implements PostRule {
|
||||
|
||||
@@ -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.
|
||||
@@ -185,7 +185,7 @@ public class Pattern extends DittedBitSequence {
|
||||
}
|
||||
|
||||
/**
|
||||
* Read just the post patterns from the <patternpair> tags
|
||||
* Read just the post patterns from the {@code <patternpair>} tags
|
||||
* @param file is the file to read from
|
||||
* @param patternList collects the resulting Pattern objects
|
||||
* @param pfactory is the factory for constructing postrules and matchactions
|
||||
|
||||
@@ -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.
|
||||
@@ -27,28 +27,31 @@ import ghidra.xml.XmlPullParser;
|
||||
* To match, a sequence from the "pre" sequence set must first match, then one of the "post" patterns
|
||||
* is matched relative to the matching "pre" pattern. This class is really a storage object for the
|
||||
* patterns and provides a mechanism to read the pre/post patterns from an XML file.
|
||||
*
|
||||
* <p>
|
||||
* The larger pattern has the idea of bits of check, which means the number of bits that are fixed to
|
||||
* a value when matching (not don't care). There is a pre pattern bits of check and post pattern bits
|
||||
* of check. The bits of check are used to statistically gauge the accuracy of the pattern.
|
||||
*
|
||||
* <p>
|
||||
* An example of the XML format follows:
|
||||
* <patternpairs totalbits="32" postbits="16">
|
||||
* <prepatterns>
|
||||
* <data>0xe12fff1. </data>
|
||||
* <data>0xe12fff1e 0x46c0 </data>
|
||||
* <data>0xe12fff1e 0xe1a00000 </data>
|
||||
* </prepatterns>
|
||||
* <pre> {@code
|
||||
* <patternpairs totalbits="32" postbits="16">
|
||||
* <prepatterns>
|
||||
* <data>0xe12fff1. </data>
|
||||
* <data>0xe12fff1e 0x46c0 </data>
|
||||
* <data>0xe12fff1e 0xe1a00000 </data>
|
||||
* </prepatterns>
|
||||
*
|
||||
* <postpatterns>
|
||||
* <data> 0xe24dd... 11101001 00101101 .1...... ....0000 </data>
|
||||
* <data> 11101001 00101101 .1...... ....0000 0xe24dd... </data>
|
||||
* <data> 11101001 00101101 .1...... ....0000 0x........ 0xe24dd... </data>
|
||||
* <align mark="0" bits="3"/>
|
||||
* <setcontext name="TMode" value="0"/>
|
||||
* <funcstart/>
|
||||
* </postpatterns>
|
||||
* </patternpairs>
|
||||
* <postpatterns>
|
||||
* <data> 0xe24dd... 11101001 00101101 .1...... ....0000 </data>
|
||||
* <data> 11101001 00101101 .1...... ....0000 0xe24dd... </data>
|
||||
* <data> 11101001 00101101 .1...... ....0000 0x........ 0xe24dd... </data>
|
||||
* <align mark="0" bits="3"/>
|
||||
* <setcontext name="TMode" value="0"/>
|
||||
* <funcstart/>
|
||||
* </postpatterns>
|
||||
* </patternpairs>
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* Note: The post Patterns can also have a set of rules that must be satisfied along with one of the
|
||||
* Pattern DittedBitSequence matches.
|
||||
|
||||
@@ -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.
|
||||
@@ -462,18 +462,18 @@ public class DecompInterface {
|
||||
* The current predefined analysis class are:
|
||||
* <ul>
|
||||
* <li>"decompile" - this is the default, and performs all
|
||||
* analysis steps suitable for producing C code.
|
||||
* analysis steps suitable for producing C code.</li>
|
||||
* <li>"normalize" - omits type recovery from the analysis
|
||||
* and some of the final clean-up steps involved in
|
||||
* making valid C code. It is suitable for creating
|
||||
* normalized pcode syntax trees of the dataflow.
|
||||
* normalized pcode syntax trees of the dataflow.</li>
|
||||
* <li>"firstpass" - does no analysis, but produces an
|
||||
* unmodified syntax tree of the dataflow from the
|
||||
* <li>"register" - does ???.
|
||||
* unmodified syntax tree of the dataflow from the</li>
|
||||
* <li>"register" - does ???.</li>
|
||||
* <li>"paramid" - does required amount of decompilation
|
||||
* followed by analysis steps that send parameter
|
||||
* measure information for parameter id analysis.
|
||||
* raw pcode.
|
||||
* raw pcode.</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>
|
||||
|
||||
@@ -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.
|
||||
@@ -37,7 +37,7 @@ import utility.function.Dummy;
|
||||
* {@link #waitForResults()}.</li>
|
||||
* <li>For non-blocking usage, simply call
|
||||
* {@link #process(Iterator, Consumer)}, passing the consumer of the results.</li>
|
||||
* </ol>
|
||||
* </ul>
|
||||
* <p>
|
||||
*
|
||||
* @param <I> The input data needed by the supplied {@link QCallback}
|
||||
|
||||
@@ -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.
|
||||
@@ -27,11 +27,11 @@ import ghidra.util.exception.AssertException;
|
||||
* <p>
|
||||
* This type of node has the following layout within a single DataBuffer
|
||||
* (field size in bytes):
|
||||
* <pre>
|
||||
* <pre>{@code
|
||||
* | NodeType(1) | KeyCount(4) | PrevLeafId(4) | NextLeafId(4) | Key0(8) | RecOffset0(4) | IndFlag0(1) |...
|
||||
*
|
||||
* | KeyN(8) | RecOffsetN(4) | IndFlagN(1) |...<FreeSpace>... | RecN |... | Rec0 |
|
||||
* </pre>
|
||||
* }</pre>
|
||||
* IndFlag - if not zero the record has been stored within a chained DBBuffer
|
||||
* whose 4-byte integer buffer ID has been stored within this leaf at the record offset.
|
||||
*/
|
||||
|
||||
@@ -49,17 +49,17 @@ import utilities.util.reflection.ReflectionUtilities;
|
||||
* <p>
|
||||
* This also provides several useful convenience methods:
|
||||
* <ul>
|
||||
* <li>{@link #addLocalAction(DockingActionIf)}
|
||||
* <li>{@link #addToTool()}
|
||||
* <li>{@link #setVisible(boolean)}
|
||||
* <li>{@link #setTitle(String)}
|
||||
* <li>{@link #setIcon(Icon)}
|
||||
* <li>{@link #addLocalAction(DockingActionIf)}</li>
|
||||
* <li>{@link #addToTool()}</li>
|
||||
* <li>{@link #setVisible(boolean)}</li>
|
||||
* <li>{@link #setTitle(String)}</li>
|
||||
* <li>{@link #setIcon(Icon)}</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* There are a handful of stub methods that can be overridden as desired:
|
||||
* <ul>
|
||||
* <li>{@link #componentActivated()} and {@link #componentDeactived()}
|
||||
* <li>{@link #componentHidden()} and {@link #componentShown()}
|
||||
* <li>{@link #componentActivated()} and {@link #componentDeactived()}</li>
|
||||
* <li>{@link #componentHidden()} and {@link #componentShown()}</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>
|
||||
|
||||
+3
-3
@@ -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.
|
||||
@@ -86,7 +86,7 @@ public class KeyBindingOverrideKeyEventDispatcher implements KeyEventDispatcher
|
||||
* </ol>
|
||||
* Ghidra has altered this flow to be:
|
||||
* <ol>
|
||||
* <li><b>Reserved keybinding actions</b>
|
||||
* <li><b>Reserved keybinding actions</b></li>
|
||||
* <li>KeyListeners on the focused Component</li>
|
||||
* <li>InputMap and ActionMap actions for the Component</li>
|
||||
* <li><b>Ghidra tool-level actions</b></li>
|
||||
|
||||
@@ -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.
|
||||
@@ -21,8 +21,8 @@ import java.util.Map.Entry;
|
||||
/**
|
||||
* A class that tracks:
|
||||
* <ul>
|
||||
* <li>placeholders that are being used for a given provider
|
||||
* <li>placeholders that are no longer being used, which are available for reuse
|
||||
* <li>placeholders that are being used for a given provider</li>
|
||||
* <li>placeholders that are no longer being used, which are available for reuse </li>
|
||||
* </ul>
|
||||
*/
|
||||
class PlaceholderSet {
|
||||
|
||||
@@ -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,9 +51,9 @@ public interface Draggable {
|
||||
/**
|
||||
* Get the drag actions supported by this drag source:
|
||||
* <UL>
|
||||
* <li>DnDConstants.ACTION_MOVE
|
||||
* <li>DnDConstants.ACTION_COPY
|
||||
* <li>DnDConstants.ACTION_COPY_OR_MOVE
|
||||
* <li>DnDConstants.ACTION_MOVE</li>
|
||||
* <li>DnDConstants.ACTION_COPY</li>
|
||||
* <li>DnDConstants.ACTION_COPY_OR_MOVE</li>
|
||||
* </UL>
|
||||
*
|
||||
* @return the drag actions
|
||||
|
||||
@@ -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,9 +34,7 @@ import ghidra.util.exception.AssertException;
|
||||
* A utility class to easily show dialogs that require input from the user.
|
||||
*
|
||||
*
|
||||
* <h2>Option Dialogs</h2><br>
|
||||
* <blockquote>
|
||||
* <p>
|
||||
* <h2>Option Dialogs</h2>
|
||||
* The primary type of
|
||||
* dialog provided herein is the basic option dialog that allows the user to specify the buttons
|
||||
* that appear on the dialog. By default, the given option text will appear as a button(s),
|
||||
@@ -44,55 +42,37 @@ import ghidra.util.exception.AssertException;
|
||||
* {@link #showOptionNoCancelDialog(Component, String, String, String, String, int)} methods if
|
||||
* you do not want a <code>Cancel</code> button. To use this type of dialog you can use the
|
||||
* various <b><code>showOptionDialog*</code></b> methods.
|
||||
* </p>
|
||||
* <p>
|
||||
* Each of the option dialog methods will return a result, which is a number indicating the
|
||||
* choice made by the user. See each method for more details.
|
||||
* </p>
|
||||
* </blockquote>
|
||||
*
|
||||
*
|
||||
* <h3>Data Input and Choice Dialogs</h3><br>
|
||||
* <blockquote>
|
||||
* <p>
|
||||
* The methods listed here allow the user to either enter data from the keyboard or to choose
|
||||
* from a pre-populated list of data.
|
||||
* </p>
|
||||
* <blockquote>
|
||||
* {@link #showInputChoiceDialog(Component, String, String, String[], String, int)}<br>
|
||||
* {@link #showInputMultilineDialog(Component, String, String, String)}<br>
|
||||
* {@link #showInputSingleLineDialog(Component, String, String, String)}
|
||||
* </blockquote>
|
||||
* </blockquote>
|
||||
* <h3>Data Input and Choice Dialogs</h3>
|
||||
* The methods listed here allow the user to either enter data from the keyboard or to choose
|
||||
* from a pre-populated list of data.
|
||||
* <ul>
|
||||
* <li>{@link #showInputChoiceDialog(Component, String, String, String[], String, int)}</li>
|
||||
* <li>{@link #showInputMultilineDialog(Component, String, String, String)}</li>
|
||||
* <li>{@link #showInputSingleLineDialog(Component, String, String, String)}</li>
|
||||
* </ul>
|
||||
*
|
||||
*
|
||||
* <h3>Yes/No Dialogs</h3><br>
|
||||
* <blockquote>
|
||||
* <p>
|
||||
* <h3>Yes/No Dialogs</h3>
|
||||
* Finally, there are a series of methods that present <code>Yes</code> and <code>No</code> buttons in
|
||||
* a dialog. There are versions that do and do not have a <code>Cancel</code> button.
|
||||
* </p>
|
||||
* </blockquote>
|
||||
*
|
||||
*
|
||||
* <h3>Basic Message / Warning / Error Dialogs</h3><br>
|
||||
* <blockquote>
|
||||
* <p>
|
||||
* <h3>Basic Message / Warning / Error Dialogs</h3>
|
||||
* If you would like to display a simple message to the user, but do not require input from the
|
||||
* user, then you should use the various methods of {@link Msg}, such as
|
||||
* {@link Msg#showInfo(Object, Component, String, Object)}.
|
||||
* </p>
|
||||
* <p>
|
||||
* Note, the user will be unable to select any text shown in the message area of the dialog.
|
||||
* </p>
|
||||
* </blockquote>
|
||||
*
|
||||
* <h3>"Apply to All" / "Don't Show Again"</h3><br>
|
||||
* <blockquote>
|
||||
* <p>For more advanced input dialog usage, to include allowing the user to tell the dialog
|
||||
* <h3>"Apply to All" / "Don't Show Again"</h3>
|
||||
* For more advanced input dialog usage, to include allowing the user to tell the dialog
|
||||
* to remember a particular decision, or to apply a given choice to all future request, see
|
||||
* {@link OptionDialogBuilder}.
|
||||
* </blockquote>
|
||||
*
|
||||
* @see Msg
|
||||
* @see OptionDialogBuilder
|
||||
|
||||
+4
-4
@@ -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.
|
||||
@@ -77,7 +77,7 @@ import ghidra.util.task.SwingUpdateManager;
|
||||
* The simplest use case is to create a text field, create an autocompleter with a custom model, and
|
||||
* then attach and show.
|
||||
*
|
||||
* <pre>
|
||||
* <pre>{@code
|
||||
* JTextField field = new JTextField();
|
||||
*
|
||||
* AutocompletionModel<String> model = new AutocompletionModel<String>() {
|
||||
@@ -90,7 +90,7 @@ import ghidra.util.task.SwingUpdateManager;
|
||||
* completer.attachTo(field);
|
||||
* // ... Add the field to, e.g., a dialog, and show.
|
||||
*
|
||||
* </pre>
|
||||
* }</pre>
|
||||
*
|
||||
* @param <T> the type of suggestions presented by this autocompleter.
|
||||
*/
|
||||
|
||||
+6
-6
@@ -626,13 +626,13 @@ public class GhidraFileChooser extends ReusableDialogComponentProvider implement
|
||||
* Sets the <code>GhidraFileChooser</code> to allow the user to just
|
||||
* select files, just select
|
||||
* directories, or select both files and directories. The default is
|
||||
* <code>JFilesChooser.FILES_ONLY</code>.
|
||||
* {@link JFileChooser#FILES_ONLY}.
|
||||
*
|
||||
* @param mode the type of files to be displayed:
|
||||
* <ul>
|
||||
* <li>GhidraFileChooser.FILES_ONLY
|
||||
* <li>GhidraFileChooser.DIRECTORIES_ONLY
|
||||
* <li>GhidraFileChooser.FILES_AND_DIRECTORIES
|
||||
* <li>{@link GhidraFileChooser#FILES_ONLY}</li>
|
||||
* <li>{@link GhidraFileChooser#DIRECTORIES_ONLY}</li>
|
||||
* <li>{@link GhidraFileChooser#FILES_AND_DIRECTORIES}</li>
|
||||
* </ul>
|
||||
*
|
||||
* @exception IllegalArgumentException if <code>mode</code> is an
|
||||
@@ -1007,8 +1007,8 @@ public class GhidraFileChooser extends ReusableDialogComponentProvider implement
|
||||
* <ul>
|
||||
* <li>If the parent directory of the file exists, then the parent directory will be made
|
||||
* the current directory and the name of the file will be put into the filename
|
||||
* textfield; otherwise,
|
||||
* <li>If the parent file does <b>not</b> exist, then the selection is cleared.
|
||||
* textfield; otherwise,</li>
|
||||
* <li>If the parent file does <b>not</b> exist, then the selection is cleared.</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* If the given file is null, then the selected file state is cleared.
|
||||
|
||||
+4
-4
@@ -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.
|
||||
@@ -26,8 +26,8 @@ import utility.function.Dummy;
|
||||
/**
|
||||
* Default implementation of the {@link SearchListModel}. Since this model's primary purpose is
|
||||
* to also implement the {@link ListModel}, this class extends the AbstractListModel.
|
||||
* This model's primary type is T, but it implements the list model on SearchListEntry<T> to provide
|
||||
* more information for the custom rendering that groups items into categories.
|
||||
* This model's primary type is T, but it implements the list model on {@code SearchListEntry<T>}
|
||||
* to provide more information for the custom rendering that groups items into categories.
|
||||
*
|
||||
* @param <T> The type of items to display and select.
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
@@ -65,8 +65,8 @@ import utility.function.Callback;
|
||||
*
|
||||
* <b><u>Important Usage Notes</u></b>
|
||||
* <ul>
|
||||
* <li><b><a id="translation"></a>You must translate row values retrieved from the table using
|
||||
* this panel.</b>
|
||||
* <li><a id="translation"></a><b>You must translate row values retrieved from the table using
|
||||
* this panel.</b></li>
|
||||
* <p>
|
||||
* Since this class wraps the given table with a new model, you must use this class to
|
||||
* translate row number values. For example, when getting the selected row, the normal Java
|
||||
@@ -84,14 +84,14 @@ import utility.function.Callback;
|
||||
* </span>
|
||||
* </pre>
|
||||
*
|
||||
* <li><b>This class may set a new model on the given table, which can affect how tables are sized.</b>
|
||||
* <li><b>This class may set a new model on the given table, which can affect how tables are sized.</b></li>
|
||||
* <p>
|
||||
* If {@link JTable#getAutoCreateColumnsFromModel()} returns true, then the columns will
|
||||
* be recreated and resized when this class is constructed.
|
||||
* <li>The {@link TableFilter} used by this class will be passed the empty string ("") when
|
||||
* {@link TableFilter#acceptsRow(Object)} is called.
|
||||
* {@link TableFilter#acceptsRow(Object)} is called.</li>
|
||||
* <li><b>You cannot rely on {@link JTable#getRowCount()} to access all of the table data,
|
||||
* since the data may be filtered.</b>
|
||||
* since the data may be filtered.</b></li>
|
||||
* <p>
|
||||
* To get a row count that is always all of the model's data, call
|
||||
* {@link #getUnfilteredRowCount()}.
|
||||
|
||||
+8
-8
@@ -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.
|
||||
@@ -38,9 +38,9 @@ public class LocalDateSpinnerModel extends AbstractSpinnerModel {
|
||||
* @param maxDate maximum value for spinner model. (Can be null)
|
||||
* @param calendarField specifies the year, month, or day to increment/decrement. One of:
|
||||
* <ul>
|
||||
* <li><code>Calendar.YEAR</code>
|
||||
* <li><code>Calendar.MONTH</code>
|
||||
* <li><code>Calendar.DAY_OF_MONTH</code>
|
||||
* <li>{@link Calendar#YEAR}</li>
|
||||
* <li>{@link Calendar#MONTH}</li>
|
||||
* <li>{@link Calendar#DAY_OF_MONTH}</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
*/
|
||||
@@ -128,9 +128,9 @@ public class LocalDateSpinnerModel extends AbstractSpinnerModel {
|
||||
*
|
||||
* @param calendarField one of
|
||||
* <ul>
|
||||
* <li><code>Calendar.YEAR</code>
|
||||
* <li><code>Calendar.MONTH</code>
|
||||
* <li><code>Calendar.DAY_OF_MONTH</code>
|
||||
* <li>{@link Calendar#YEAR}</li>
|
||||
* <li>{@link Calendar#MONTH}</li>
|
||||
* <li>{@link Calendar#DAY_OF_MONTH}</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
*
|
||||
|
||||
+9
-9
@@ -191,18 +191,18 @@ public class TableUpdateJob<T> {
|
||||
* effect depends on the running job's state:
|
||||
* <ul>
|
||||
* <li>If the sort state hasn't happened yet, all it does is set the comparator for when
|
||||
* the sort occurs.
|
||||
* the sort occurs.</li>
|
||||
* <li>If the sort state has already been started or completed, then this method attempts
|
||||
* to stop the current process phase and cause the state machine to return to the sort
|
||||
* phase.
|
||||
* phase.</li>
|
||||
* <li>If the current job has already entered the DONE state, then the sort cannot take
|
||||
* effect in this job and a false value is returned to indicate the
|
||||
* sort was not handled by this job.
|
||||
* sort was not handled by this job.</li>
|
||||
* </ul>
|
||||
* @param newSortingContext the TableColumnComparator to use to sort the data.
|
||||
* @param forceSort True signals to re-sort, even if this is already sorted
|
||||
* @return true if the sort can be processed by this job, false if this job is essentially
|
||||
* already completed and therefor cannot perform the sort job.
|
||||
* already completed and therefore cannot perform the sort job.
|
||||
*/
|
||||
public synchronized boolean requestSort(TableSortingContext<T> newSortingContext,
|
||||
boolean forceSort) {
|
||||
@@ -225,16 +225,16 @@ public class TableUpdateJob<T> {
|
||||
* depends on the running job's state:
|
||||
* <ul>
|
||||
* <li>If the filter state hasn't happened yet, then nothing needs to be done as this job
|
||||
* will filter later anyway.
|
||||
* will filter later anyway.</li>
|
||||
* <li>If the filter state has already been started or completed, then this method
|
||||
* attempts to stop the current process phase and cause the state machine to return to
|
||||
* the filter phase.
|
||||
* the filter phase.</li>
|
||||
* <li>If the current job has already entered the DONE state, then the filter cannot take
|
||||
* effect in this job and a false value is returned to indicate the filter was not
|
||||
* handled by this job.
|
||||
* handled by this job.</li>
|
||||
* </ul>
|
||||
* @return true if the filter can be processed by this job, false if this job is essentially
|
||||
* already completed and therefor cannot perform the filter job.
|
||||
* already completed and therefore cannot perform the filter job.
|
||||
*/
|
||||
public synchronized boolean requestFilter() {
|
||||
if (currentState == DONE) {
|
||||
@@ -718,7 +718,7 @@ public class TableUpdateJob<T> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Wraps a comparator<T> to add progress monitoring and cancel checking
|
||||
* Wraps a {@link Comparator} to add progress monitoring and cancel checking
|
||||
*
|
||||
* @param <T> The type of data being sorted
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
@@ -30,7 +30,7 @@ import ghidra.util.exception.CancelledException;
|
||||
* the Java concurrent structures (e.g., {@link AtomicBoolean}). In order to keep the values of
|
||||
* this class's fields update-to-date, we have chosen to synchronize the package-level client of
|
||||
* this class. <b>If this class is ever made public, then most of the methods herein need to
|
||||
* be synchronized to prevent race conditions and to provide visibility.
|
||||
* be synchronized to prevent race conditions and to provide visibility.</b>
|
||||
*/
|
||||
class BasicTaskMonitor implements TaskMonitor {
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -26,7 +26,7 @@ import java.awt.Component;
|
||||
* {@link #TaskLauncher(Task, Component, int, int)}. Alternatively, for simpler uses,
|
||||
* see one of the many static convenience methods.
|
||||
*
|
||||
* <p><b><a id="modal_usage">Modal Usage</a></b><br>
|
||||
* <p><a id="modal_usage"><b>Modal Usage</b></a></p>
|
||||
* Most clients of this class should not be concerned with where
|
||||
* the dialog used by this class will appear. By default, it will be shown over
|
||||
* the active window, which is the desired
|
||||
@@ -63,13 +63,12 @@ public class TaskLauncher {
|
||||
/**
|
||||
* A convenience method to directly run a {@link MonitoredRunnable} in a separate
|
||||
* thread as a {@link Task}, displaying a non-modal progress dialog.
|
||||
* <p>
|
||||
* <code>
|
||||
* TaskLauncher.launchNonModal( "My task", <br>
|
||||
* null, // parent<br>
|
||||
* monitor -> { while ( !monitor.isCanceled() ) { longRunningWork(); } }<br>
|
||||
* <pre>{@code
|
||||
* TaskLauncher.launchNonModal("My task",
|
||||
* null, // parent
|
||||
* monitor -> { while (!monitor.isCanceled()) { longRunningWork(); } }
|
||||
* );
|
||||
* </code>
|
||||
* }</pre>
|
||||
*
|
||||
* <p>Note: the task created by this call will be both cancellable and have progress. If
|
||||
* you task cannot be cancelled or does not have progress, then do not use this
|
||||
@@ -93,13 +92,12 @@ public class TaskLauncher {
|
||||
/**
|
||||
* A convenience method to directly run a {@link MonitoredRunnable} in a separate
|
||||
* thread as a {@link Task}, displaying a <b>modal</b> progress dialog.
|
||||
* <p>
|
||||
* <code>
|
||||
* TaskLauncher.launchModal( "My task", <br>
|
||||
* null, // parent<br>
|
||||
* monitor -> { while ( !monitor.isCanceled() ) { longRunningWork(); } }<br>
|
||||
* <pre>{@code
|
||||
* TaskLauncher.launchModal("My task",
|
||||
* null, // parent
|
||||
* monitor -> { while (!monitor.isCanceled()) { longRunningWork(); } }
|
||||
* );
|
||||
* </code>
|
||||
* }</pre>
|
||||
*
|
||||
* <p>Note: the task created by this call will be both cancellable and have progress. If
|
||||
* you task cannot be cancelled or does not have progress, then do not use this
|
||||
@@ -128,11 +126,11 @@ public class TaskLauncher {
|
||||
* to have it immediately go away. If you desire this default behavior, then do not use
|
||||
* this convenience method.
|
||||
*
|
||||
* <p><code>
|
||||
* TaskLauncher.launchModal( "My task", <br>
|
||||
* monitor -> { { foo(); }<br>
|
||||
* <pre>{@code
|
||||
* TaskLauncher.launchModal("My task",
|
||||
* monitor -> { foo(); }
|
||||
* );
|
||||
* </code>
|
||||
* }</pre>
|
||||
*
|
||||
* <p>Note: the task created by this call will not be cancellable nor have progress. If
|
||||
* you need either of these behaviors, the do not use this
|
||||
|
||||
@@ -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,7 @@ public interface PcodeUseropLibrary<T> {
|
||||
/**
|
||||
* The class of the empty userop library.
|
||||
*
|
||||
* @see {@link PcodeUseropLibrary#nil()}
|
||||
* @see PcodeUseropLibrary#nil()
|
||||
*/
|
||||
final class EmptyPcodeUseropLibrary implements PcodeUseropLibrary<Object> {
|
||||
@Override
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* 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.
|
||||
@@ -105,15 +104,15 @@ public class CountLatch {
|
||||
* dormant until one of two things happen:
|
||||
* <ul>
|
||||
* <li>The count reaches zero due to invocations of the
|
||||
* {@link #decrement} method; or
|
||||
* {@link #decrement} method; or</li>
|
||||
* <li>Some other thread {@linkplain Thread#interrupt interrupts}
|
||||
* the current thread.
|
||||
* the current thread.</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>If the current thread:
|
||||
* <ul>
|
||||
* <li>has its interrupted status set on entry to this method; or
|
||||
* <li>is {@linkplain Thread#interrupt interrupted} while waiting,
|
||||
* <li>has its interrupted status set on entry to this method; or</li>
|
||||
* <li>is {@linkplain Thread#interrupt interrupted} while waiting,</li>
|
||||
* </ul>
|
||||
* then {@link InterruptedException} is thrown and the current thread's
|
||||
* interrupted status is cleared.
|
||||
@@ -138,10 +137,10 @@ public class CountLatch {
|
||||
* dormant until one of three things happen:
|
||||
* <ul>
|
||||
* <li>The count reaches zero due to invocations of the
|
||||
* {@link #decrement} method; or
|
||||
* {@link #decrement} method; or</li>
|
||||
* <li>Some other thread {@linkplain Thread#interrupt interrupts}
|
||||
* the current thread; or
|
||||
* <li>The specified waiting time elapses.
|
||||
* the current thread; or</li>
|
||||
* <li>The specified waiting time elapses.</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>If the count reaches zero then the method returns with the
|
||||
@@ -149,8 +148,8 @@ public class CountLatch {
|
||||
*
|
||||
* <p>If the current thread:
|
||||
* <ul>
|
||||
* <li>has its interrupted status set on entry to this method; or
|
||||
* <li>is {@linkplain Thread#interrupt interrupted} while waiting,
|
||||
* <li>has its interrupted status set on entry to this method; or</li>
|
||||
* <li>is {@linkplain Thread#interrupt interrupted} while waiting,</li>
|
||||
* </ul>
|
||||
* then {@link InterruptedException} is thrown and the current thread's
|
||||
* interrupted status is cleared.
|
||||
|
||||
@@ -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.
|
||||
@@ -38,25 +38,30 @@ import util.CollectionUtils;
|
||||
* a node 'a' dominates node 'b' if all paths from start to 'b' contain 'a';
|
||||
* a node always dominates itself (except in 'strict dominance', which is all
|
||||
* dominators except for itself)
|
||||
* </LI>
|
||||
*
|
||||
* <LI>
|
||||
* <B>post-dominance:</B>
|
||||
* A node 'b' is said to post-dominate node 'a' if all paths from 'a'
|
||||
* to END contain 'b'
|
||||
* </LI>
|
||||
*
|
||||
* <LI>
|
||||
* <B>immediate dominator:</B>
|
||||
* the closest dominator of a node
|
||||
* </LI>
|
||||
*
|
||||
* <LI>
|
||||
* <B>dominance tree:</B>
|
||||
* A dominator tree is a tree where each node's children are those nodes
|
||||
* it *immediately* dominates (a idom b)
|
||||
* </LI>
|
||||
*
|
||||
* <LI>
|
||||
* <B>dominance frontier:</B>
|
||||
* the immediate successors of the nodes dominated by 'a'; it is the set of
|
||||
* nodes where d's dominance stops.
|
||||
* </LI>
|
||||
*
|
||||
* <LI>
|
||||
* <B>strongly connected components:</B>
|
||||
@@ -64,8 +69,11 @@ import util.CollectionUtils;
|
||||
* from every other vertex. The strongly connected components
|
||||
* of an arbitrary directed graph form a partition into
|
||||
* subgraphs that are themselves strongly connected.
|
||||
* </LI>
|
||||
*
|
||||
* <LI>
|
||||
* <B>graph density:</B>
|
||||
* </LI>
|
||||
* <PRE>
|
||||
* E
|
||||
* Density = --------
|
||||
|
||||
@@ -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.
|
||||
@@ -48,11 +48,11 @@ import ghidra.graph.viewer.vertex.VisualGraphVertexShapeTransformer;
|
||||
*
|
||||
* <ul>
|
||||
* <li>Layout Space - the layout contains Point2D objects that represent positions of the
|
||||
* vertices.
|
||||
* vertices. </li>
|
||||
* <li>Graph Space - the space where the Layout points are transformed as the view is moved
|
||||
* around the screen (e.g., as the user pans)
|
||||
* around the screen (e.g., as the user pans)</li>
|
||||
* <li>View Space - the coordinate system of Java 2D rendering; scaling (zooming) transformations
|
||||
* are applied at this layer
|
||||
* are applied at this layer</li>
|
||||
* </ul>
|
||||
*
|
||||
* <P> Note: vertex relative means that the value is from inside the vertex, or the vertex's
|
||||
|
||||
+3
-3
@@ -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.
|
||||
@@ -49,7 +49,7 @@ import utility.function.Callback;
|
||||
* <LI>Results must be cached for speed, but may cleared as the graph is mutated</LI>
|
||||
* <LI>Algorithms must not block the UI thread</LI>
|
||||
* <LI>Related actions (i.e., hover vs. selection) should cancel any pending action, but not
|
||||
* unrelated actions (e.g., a new hover request should cancel a pending hover update)
|
||||
* unrelated actions (e.g., a new hover request should cancel a pending hover update)</LI>
|
||||
* </UL>
|
||||
*
|
||||
* Based on these requirements, we need to use multi-threading. Further complicating the need
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user