mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
Javadoc Fixes
This commit is contained in:
parent
9a470a9dc7
commit
ebde7cd6d2
659 changed files with 1690 additions and 3968 deletions
|
@ -58,7 +58,7 @@ import ghidra.util.task.*;
|
||||||
* indicates locations for where classes for plugins and data types should
|
* indicates locations for where classes for plugins and data types should
|
||||||
* be searched; the Plugin path can include jar files just like a classpath.
|
* be searched; the Plugin path can include jar files just like a classpath.
|
||||||
* The Plugin path can be changed by using the <i>Edit Plugin Path</i> dialog,
|
* The Plugin path can be changed by using the <i>Edit Plugin Path</i> dialog,
|
||||||
* displayed from the <i>Edit->Edit Plugin Path...</i> menu option on the main
|
* displayed from the <i>Edit->Edit Plugin Path...</i> menu option on the main
|
||||||
* Ghidra project window.
|
* Ghidra project window.
|
||||||
*
|
*
|
||||||
* @see ghidra.GhidraLauncher
|
* @see ghidra.GhidraLauncher
|
||||||
|
|
|
@ -31,7 +31,7 @@ import ghidra.util.task.TaskMonitor;
|
||||||
* in the area will be replaced with the new dataType, except when the existing data
|
* in the area will be replaced with the new dataType, except when the existing data
|
||||||
* or the given dataType is a pointer. If the existing dataType is a pointer, then
|
* or the given dataType is a pointer. If the existing dataType is a pointer, then
|
||||||
* it will be changed into a pointer to the given dataType. If the given dataType
|
* it will be changed into a pointer to the given dataType. If the given dataType
|
||||||
* is a pointer and the existing data is >= to the size of a pointer, it will become
|
* is a pointer and the existing data is >= to the size of a pointer, it will become
|
||||||
* a pointer to the existing type. If the existing dataType is less than the size
|
* a pointer to the existing type. If the existing dataType is less than the size
|
||||||
* of a pointer, then a pointer to dataType will only be created if there are
|
* of a pointer, then a pointer to dataType will only be created if there are
|
||||||
* enough undefined bytes following to make a pointer.
|
* enough undefined bytes following to make a pointer.
|
||||||
|
|
|
@ -31,7 +31,7 @@ import ghidra.program.model.listing.Program;
|
||||||
* the existing data will be changed into a pointer to the given dataType. If the given dataType
|
* the existing data will be changed into a pointer to the given dataType. If the given dataType
|
||||||
* is a default-pointer, it will become a pointer to the existing type.
|
* is a default-pointer, it will become a pointer to the existing type.
|
||||||
*
|
*
|
||||||
* @see DataUtilities#createData(Program, Address, DataType, boolean, ghidra.program.model.data.DataUtilities.ClearDataMode)
|
* @see DataUtilities#createData(Program, Address, DataType, int, boolean, DataUtilities.ClearDataMode)
|
||||||
*/
|
*/
|
||||||
public class CreateDataCmd implements Command {
|
public class CreateDataCmd implements Command {
|
||||||
|
|
||||||
|
|
|
@ -48,9 +48,8 @@ public class ArmDisassembleCommand extends DisassembleCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for DisassembleCommand.
|
* Constructor for ArmDisassembleCommand.
|
||||||
* @param startSet set of addresses to be the start of a disassembly. The
|
* @param start address to be the start of a disassembly.
|
||||||
* Command object will attempt to start a disassembly at each address in this set.
|
|
||||||
* @param restrictedSet addresses that can be disassembled.
|
* @param restrictedSet addresses that can be disassembled.
|
||||||
* a null set implies no restrictions
|
* a null set implies no restrictions
|
||||||
* @param thumbMode pass true if the disassembling in Thumb Mode
|
* @param thumbMode pass true if the disassembling in Thumb Mode
|
||||||
|
@ -70,10 +69,6 @@ public class ArmDisassembleCommand extends DisassembleCommand {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @see ghidra.framework.cmd.BackgroundCommand#applyTo(ghidra.framework.model.DomainObject, ghidra.util.task.TaskMonitor)
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
synchronized public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
synchronized public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
||||||
Program program = (Program) obj;
|
Program program = (Program) obj;
|
||||||
|
|
|
@ -110,7 +110,7 @@ public class DisassembleCommand extends BackgroundCommand {
|
||||||
* {@link #setSeedContext(DisassemblerContextImpl)} method.
|
* {@link #setSeedContext(DisassemblerContextImpl)} method.
|
||||||
* The defaultSeedContext should remain unchanged while disassembler command
|
* The defaultSeedContext should remain unchanged while disassembler command
|
||||||
* is actively running.
|
* is actively running.
|
||||||
* @param contextOverrideValue context override value or null
|
* @param initialContextValue the initial context value to set or null to clear it
|
||||||
*/
|
*/
|
||||||
public void setInitialContext(RegisterValue initialContextValue) {
|
public void setInitialContext(RegisterValue initialContextValue) {
|
||||||
if (initialContextValue != null) {
|
if (initialContextValue != null) {
|
||||||
|
@ -129,9 +129,6 @@ public class DisassembleCommand extends BackgroundCommand {
|
||||||
this.enableAnalysis = enable;
|
this.enableAnalysis = enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ghidra.framework.cmd.Command#getStatusMsg()
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public String getStatusMsg() {
|
public String getStatusMsg() {
|
||||||
if (disassemblyPerformed) {
|
if (disassemblyPerformed) {
|
||||||
|
@ -147,10 +144,6 @@ public class DisassembleCommand extends BackgroundCommand {
|
||||||
return "Disassembler requires a start which is an undefined code unit";
|
return "Disassembler requires a start which is an undefined code unit";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @see ghidra.framework.cmd.BackgroundCommand#applyTo(ghidra.framework.model.DomainObject, ghidra.util.task.TaskMonitor)
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
synchronized public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
synchronized public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
||||||
Program program = (Program) obj;
|
Program program = (Program) obj;
|
||||||
|
|
|
@ -48,9 +48,8 @@ public class Hcs12DisassembleCommand extends DisassembleCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for DisassembleCommand.
|
* Constructor for Hcs12DisassembleCommand.
|
||||||
* @param startSet set of addresses to be the start of a disassembly. The
|
* @param start address to be the start of a disassembly.
|
||||||
* Command object will attempt to start a disassembly at each address in this set.
|
|
||||||
* @param restrictedSet addresses that can be disassembled.
|
* @param restrictedSet addresses that can be disassembled.
|
||||||
* a null set implies no restrictions
|
* a null set implies no restrictions
|
||||||
* @param xgMode pass true if the disassembling in XGATE Mode
|
* @param xgMode pass true if the disassembling in XGATE Mode
|
||||||
|
@ -70,10 +69,6 @@ public class Hcs12DisassembleCommand extends DisassembleCommand {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @see ghidra.framework.cmd.BackgroundCommand#applyTo(ghidra.framework.model.DomainObject, ghidra.util.task.TaskMonitor)
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
synchronized public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
synchronized public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
||||||
Program program = (Program) obj;
|
Program program = (Program) obj;
|
||||||
|
|
|
@ -27,7 +27,7 @@ import ghidra.util.exception.CancelledException;
|
||||||
import ghidra.util.task.TaskMonitor;
|
import ghidra.util.task.TaskMonitor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command object for performing Arm/Thumb disassembly
|
* Command object for performing Mips disassembly
|
||||||
*/
|
*/
|
||||||
public class MipsDisassembleCommand extends DisassembleCommand {
|
public class MipsDisassembleCommand extends DisassembleCommand {
|
||||||
|
|
||||||
|
@ -48,9 +48,8 @@ public class MipsDisassembleCommand extends DisassembleCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for DisassembleCommand.
|
* Constructor for MipsDisassembleCommand.
|
||||||
* @param startSet set of addresses to be the start of a disassembly. The
|
* @param start address to be the start of a disassembly.
|
||||||
* Command object will attempt to start a disassembly at each address in this set.
|
|
||||||
* @param restrictedSet addresses that can be disassembled.
|
* @param restrictedSet addresses that can be disassembled.
|
||||||
* a null set implies no restrictions
|
* a null set implies no restrictions
|
||||||
* @param mips16Mode pass true if the disassembling in mips16e Mode
|
* @param mips16Mode pass true if the disassembling in mips16e Mode
|
||||||
|
@ -60,9 +59,6 @@ public class MipsDisassembleCommand extends DisassembleCommand {
|
||||||
this.mips16Mode = mips16Mode;
|
this.mips16Mode = mips16Mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ghidra.framework.cmd.Command#getName()
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "Disassemble " + (mips16Mode ? "Mips16" : "Mips");
|
return "Disassemble " + (mips16Mode ? "Mips16" : "Mips");
|
||||||
|
@ -78,10 +74,6 @@ public class MipsDisassembleCommand extends DisassembleCommand {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @see ghidra.framework.cmd.BackgroundCommand#applyTo(ghidra.framework.model.DomainObject, ghidra.util.task.TaskMonitor)
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
synchronized public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
synchronized public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
||||||
Program program = (Program) obj;
|
Program program = (Program) obj;
|
||||||
|
|
|
@ -50,8 +50,7 @@ public class PowerPCDisassembleCommand extends DisassembleCommand {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for PowerPCDisassembleCommand.
|
* Constructor for PowerPCDisassembleCommand.
|
||||||
* @param startSet set of addresses to be the start of a disassembly. The
|
* @param start address to be the start of a disassembly.
|
||||||
* Command object will attempt to start a disassembly at each address in this set.
|
|
||||||
* @param restrictedSet addresses that can be disassembled.
|
* @param restrictedSet addresses that can be disassembled.
|
||||||
* a null set implies no restrictions
|
* a null set implies no restrictions
|
||||||
* @param vleMode pass true if the disassembling in PowerISA VLE Mode, otherwise
|
* @param vleMode pass true if the disassembling in PowerISA VLE Mode, otherwise
|
||||||
|
@ -62,9 +61,6 @@ public class PowerPCDisassembleCommand extends DisassembleCommand {
|
||||||
this.vleMode = vleMode;
|
this.vleMode = vleMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ghidra.framework.cmd.Command#getName()
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "Disassemble " + (vleMode ? "PPC-VLE" : "PPC");
|
return "Disassemble " + (vleMode ? "PPC-VLE" : "PPC");
|
||||||
|
@ -80,10 +76,6 @@ public class PowerPCDisassembleCommand extends DisassembleCommand {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @see ghidra.framework.cmd.BackgroundCommand#applyTo(ghidra.framework.model.DomainObject, ghidra.util.task.TaskMonitor)
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
synchronized public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
synchronized public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
||||||
Program program = (Program) obj;
|
Program program = (Program) obj;
|
||||||
|
|
|
@ -49,11 +49,15 @@ public class ApplyFunctionDataTypesCmd extends BackgroundCommand {
|
||||||
* Constructs a new command to apply all function signature data types
|
* Constructs a new command to apply all function signature data types
|
||||||
* in the given data type manager.
|
* in the given data type manager.
|
||||||
*
|
*
|
||||||
* @param dtm data type manager containing the function signature data types
|
* @param managers list of data type managers containing the function signature data types
|
||||||
* @param set set of addresses containing labels to match against function names.
|
* @param set set of addresses containing labels to match against function names.
|
||||||
* The addresses must not already be included in the body of any existing function.
|
* The addresses must not already be included in the body of any existing function.
|
||||||
* If null, all symbols will be processed
|
* If null, all symbols will be processed
|
||||||
* @param source the source of this command
|
* @param source the source of this command.
|
||||||
|
* @param alwaysReplace true to always replace the existing function signature with the
|
||||||
|
* function signature data type.
|
||||||
|
* @param createBookmarksEnabled true to create a bookmark when a function signature
|
||||||
|
* has been applied.
|
||||||
*/
|
*/
|
||||||
public ApplyFunctionDataTypesCmd(List<DataTypeManager> managers, AddressSetView set,
|
public ApplyFunctionDataTypesCmd(List<DataTypeManager> managers, AddressSetView set,
|
||||||
SourceType source, boolean alwaysReplace, boolean createBookmarksEnabled) {
|
SourceType source, boolean alwaysReplace, boolean createBookmarksEnabled) {
|
||||||
|
|
|
@ -112,7 +112,8 @@ public class CallDepthChangeInfo {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new CallDepthChangeInfo object.
|
* Construct a new CallDepthChangeInfo object.
|
||||||
* @param func function to examine
|
* @param function function to examine
|
||||||
|
* @param restrictSet set of addresses to restrict flow flowing to.
|
||||||
* @param frameReg register that is to have it's depth(value) change tracked
|
* @param frameReg register that is to have it's depth(value) change tracked
|
||||||
* @param monitor monitor used to cancel the operation
|
* @param monitor monitor used to cancel the operation
|
||||||
*
|
*
|
||||||
|
@ -132,8 +133,8 @@ public class CallDepthChangeInfo {
|
||||||
* Construct a new CallDepthChangeInfo object.
|
* Construct a new CallDepthChangeInfo object.
|
||||||
*
|
*
|
||||||
* @param program program containing the function to examime
|
* @param program program containing the function to examime
|
||||||
* @param restrictedSet set of addresses to restrict flow flowing to.
|
|
||||||
* @param addr address within the function to examine
|
* @param addr address within the function to examine
|
||||||
|
* @param restrictSet set of addresses to restrict flow flowing to.
|
||||||
* @param frameReg register that is to have it's depth(value) change tracked
|
* @param frameReg register that is to have it's depth(value) change tracked
|
||||||
* @param monitor monitor used to cancel the operation
|
* @param monitor monitor used to cancel the operation
|
||||||
* @throws CancelledException
|
* @throws CancelledException
|
||||||
|
@ -735,13 +736,13 @@ public class CallDepthChangeInfo {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* Checks the indicated function in the program to determine if it is a jump thunk
|
// * Checks the indicated function in the program to determine if it is a jump thunk
|
||||||
* through a function pointer.
|
// * through a function pointer.
|
||||||
* @param func the function to check
|
// * @param func the function to check
|
||||||
* @param monitor status monitor for indicating progress and allowing cancel.
|
// * @param monitor status monitor for indicating progress and allowing cancel.
|
||||||
* @returntrue if check if this is a jump thunk through a function pointer
|
// * @return true if check if this is a jump thunk through a function pointer
|
||||||
*/
|
// */
|
||||||
// private boolean checkThunk(Function func, TaskMonitor monitor) {
|
// private boolean checkThunk(Function func, TaskMonitor monitor) {
|
||||||
// Instruction instr = program.getListing().getInstructionAt(func.getEntryPoint());
|
// Instruction instr = program.getListing().getInstructionAt(func.getEntryPoint());
|
||||||
// if (instr == null) {
|
// if (instr == null) {
|
||||||
|
@ -832,16 +833,17 @@ public class CallDepthChangeInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param minAddress
|
* @param addr the address to get the stack pointer depth at.
|
||||||
* @return
|
* @return the stack pointer depth at the address.
|
||||||
*/
|
*/
|
||||||
public int getSPDepth(Address addr) {
|
public int getSPDepth(Address addr) {
|
||||||
return getRegDepth(addr, stackReg);
|
return getRegDepth(addr, stackReg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param minAddress
|
* @param addr the address to get the register depth at.
|
||||||
* @return
|
* @param reg the register to get the depth of.
|
||||||
|
* @return the depth of the register at the address.
|
||||||
*/
|
*/
|
||||||
public int getRegDepth(Address addr, Register reg) {
|
public int getRegDepth(Address addr, Register reg) {
|
||||||
// OK lets CHEAT...
|
// OK lets CHEAT...
|
||||||
|
@ -874,8 +876,9 @@ public class CallDepthChangeInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param minAddress
|
* @param addr the address of the register value to get the representation of.
|
||||||
* @return
|
* @param reg the register to get the representation of.
|
||||||
|
* @return the string representation of the register value.
|
||||||
*/
|
*/
|
||||||
public String getRegValueRepresentation(Address addr, Register reg) {
|
public String getRegValueRepresentation(Address addr, Register reg) {
|
||||||
return symEval.getRegisterValueRepresentation(addr, reg);
|
return symEval.getRegisterValueRepresentation(addr, reg);
|
||||||
|
|
|
@ -665,10 +665,11 @@ public class CreateFunctionCmd extends BackgroundCommand {
|
||||||
/**
|
/**
|
||||||
* Recompute function body. An open transaction must already exist.
|
* Recompute function body. An open transaction must already exist.
|
||||||
* @param program the program the function is in.
|
* @param program the program the function is in.
|
||||||
* @param function the function to be fixed up. A null function will return false.
|
* @param func the function to be fixed up. A null function will return false.
|
||||||
* @param monitor task monitor
|
* @param monitor task monitor
|
||||||
* @return true if successful, false if cancelled or unable to fixup function or
|
* @return true if successful, false if unable to fixup function or
|
||||||
* no function found containing the start address of the indicated instruction
|
* no function found containing the start address of the indicated instruction
|
||||||
|
* @throws CancelledException if the function fixup is cancelled.
|
||||||
*/
|
*/
|
||||||
public static boolean fixupFunctionBody(Program program, Function func, TaskMonitor monitor)
|
public static boolean fixupFunctionBody(Program program, Function func, TaskMonitor monitor)
|
||||||
throws CancelledException {
|
throws CancelledException {
|
||||||
|
|
|
@ -64,12 +64,12 @@ public class CreateThunkFunctionCmd extends BackgroundCommand {
|
||||||
* converted to a thunk, otherwise an error will result.
|
* converted to a thunk, otherwise an error will result.
|
||||||
* @param referencedFunctionAddr the function address to which this thunk refers. If no function
|
* @param referencedFunctionAddr the function address to which this thunk refers. If no function
|
||||||
* exists at that specified referencedFunctionAddr one will be created per the following scheme:
|
* exists at that specified referencedFunctionAddr one will be created per the following scheme:
|
||||||
* <pre><ul>
|
* <br><ul>
|
||||||
* <li>If referencedFunctionAddr is not contained within a memory block, an external function will
|
* <li>If referencedFunctionAddr is not contained within a memory block, an external function will<br>
|
||||||
* be created (a check will be done to look for an previously defined external location)</li>
|
* be created (a check will be done to look for an previously defined external location)</li>
|
||||||
* <li>If referencedFunctionAddr corresponds to an instruction, a new function will be
|
* <li>If referencedFunctionAddr corresponds to an instruction, a new function will be<br>
|
||||||
* created at that address.</li>
|
* created at that address.</li>
|
||||||
* </ul></pre>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
public CreateThunkFunctionCmd(Address entry, AddressSetView body,
|
public CreateThunkFunctionCmd(Address entry, AddressSetView body,
|
||||||
Address referencedFunctionAddr, List<Address> referringThunkAddresses) {
|
Address referencedFunctionAddr, List<Address> referringThunkAddresses) {
|
||||||
|
@ -88,12 +88,12 @@ public class CreateThunkFunctionCmd extends BackgroundCommand {
|
||||||
* converted to a thunk, otherwise an error will result.
|
* converted to a thunk, otherwise an error will result.
|
||||||
* @param referencedFunctionAddr the function address to which this thunk refers. If no function
|
* @param referencedFunctionAddr the function address to which this thunk refers. If no function
|
||||||
* exists at that specified referencedFunctionAddr one will be created per the following scheme:
|
* exists at that specified referencedFunctionAddr one will be created per the following scheme:
|
||||||
* <pre><ul>
|
* <br><ul>
|
||||||
* <li>If referencedFunctionAddr is not contained within a memory block, an external function will
|
* <li>If referencedFunctionAddr is not contained within a memory block, an external function will<br>
|
||||||
* be created (a check will be done to look for an previously defined external location)</li>
|
* be created (a check will be done to look for an previously defined external location)</li>
|
||||||
* <li>If referencedFunctionAddr corresponds to an instruction, a new function will be
|
* <li>If referencedFunctionAddr corresponds to an instruction, a new function will be<br>
|
||||||
* created at that address.</li>
|
* created at that address.</li>
|
||||||
* </ul></pre>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
public CreateThunkFunctionCmd(Address entry, AddressSetView body,
|
public CreateThunkFunctionCmd(Address entry, AddressSetView body,
|
||||||
Address referencedFunctionAddr) {
|
Address referencedFunctionAddr) {
|
||||||
|
@ -113,14 +113,14 @@ public class CreateThunkFunctionCmd extends BackgroundCommand {
|
||||||
* converted to a thunk, otherwise an error will result.
|
* converted to a thunk, otherwise an error will result.
|
||||||
* @param referencedSymbol the symbol which identifies the intended function to which this thunk refers.
|
* @param referencedSymbol the symbol which identifies the intended function to which this thunk refers.
|
||||||
* If no function exists at that specified referencedSymbol location, one will be created per the following scheme:
|
* If no function exists at that specified referencedSymbol location, one will be created per the following scheme:
|
||||||
* <pre><ul>
|
* <br><ul>
|
||||||
* <li>If referencedFunctionAddr is not contained within a memory block, an external function will
|
* <li>If referencedFunctionAddr is not contained within a memory block, an external function will<br>
|
||||||
* be created (a check will be done to look for an previously defined external location)</li>
|
* be created (a check will be done to look for an previously defined external location)</li>
|
||||||
* <li>If referencedFunctionAddr corresponds to an instruction, a new function will be
|
* <li>If referencedFunctionAddr corresponds to an instruction, a new function will be<br>
|
||||||
* created at that address.</li>
|
* created at that address.</li>
|
||||||
* <li>If referencedSymbol corresponds to an external CODE symbol, it will be converted to an
|
* <li>If referencedSymbol corresponds to an external CODE symbol, it will be converted to an<br>
|
||||||
* external FUNCTION</li>
|
* external FUNCTION</li>
|
||||||
* </ul></pre>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
public CreateThunkFunctionCmd(Address entry, AddressSetView body, Symbol referencedSymbol) {
|
public CreateThunkFunctionCmd(Address entry, AddressSetView body, Symbol referencedSymbol) {
|
||||||
this(entry, body, (Address) null);
|
this(entry, body, (Address) null);
|
||||||
|
|
|
@ -31,7 +31,7 @@ import ghidra.util.exception.InvalidInputException;
|
||||||
* <a name="examples"></a>
|
* <a name="examples"></a>
|
||||||
* Example strings:
|
* Example strings:
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>global{@link NamespaceUtils#NAMESPACE_DELIMITER <delimiter>}child1{@link NamespaceUtils#NAMESPACE_DELIMITER <delimiter>}child2
|
* <li>global{@link Namespace#NAMESPACE_DELIMITER ::}child1{@link Namespace#NAMESPACE_DELIMITER ::}child2
|
||||||
* <li>child1
|
* <li>child1
|
||||||
* </ul>
|
* </ul>
|
||||||
* <p>
|
* <p>
|
||||||
|
|
|
@ -34,17 +34,17 @@ import javax.swing.JComponent;
|
||||||
status = PluginStatus.HIDDEN,
|
status = PluginStatus.HIDDEN,
|
||||||
packageName = CorePluginPackage.NAME,
|
packageName = CorePluginPackage.NAME,
|
||||||
category = PluginCategoryNames.UNMANAGED,
|
category = PluginCategoryNames.UNMANAGED,
|
||||||
shortDescription = "Program Merge Manager",
|
shortDescription = "DataType Archive Merge Manager",
|
||||||
description = "Manage merge of Programs"
|
description = "Manage merge of DataType Archives"
|
||||||
)
|
)
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
public class DataTypeArchiveMergeManagerPlugin extends MergeManagerPlugin {
|
public class DataTypeArchiveMergeManagerPlugin extends MergeManagerPlugin {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for plugin that handles multi-user merge of programs.
|
* Constructor for plugin that handles multi-user merge of data type archives.
|
||||||
* @param tool the tool with the active program to be merged
|
* @param tool the tool
|
||||||
* @param mergeManager the merge manager that will control the merge process
|
* @param mergeManager the merge manager that will control the merge process
|
||||||
* @param program the current program
|
* @param dataTypeArchive the data type archive
|
||||||
*/
|
*/
|
||||||
public DataTypeArchiveMergeManagerPlugin( PluginTool tool,
|
public DataTypeArchiveMergeManagerPlugin( PluginTool tool,
|
||||||
DataTypeArchiveMergeManager mergeManager,
|
DataTypeArchiveMergeManager mergeManager,
|
||||||
|
@ -68,9 +68,6 @@ public class DataTypeArchiveMergeManagerPlugin extends MergeManagerPlugin {
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see ghidra.framework.plugintool.Plugin#dispose()
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
protected void dispose() {
|
protected void dispose() {
|
||||||
provider.dispose();
|
provider.dispose();
|
||||||
|
|
|
@ -606,9 +606,7 @@ public abstract class MergeManager implements DomainObjectMergeManager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the current phase progress area in the default merge panel.
|
* Updates the current phase progress area in the default merge panel.
|
||||||
* @param currentProgressPercentage the progress percentage completed for the current phase.
|
* @param description a message describing what is currently occurring in this phase.
|
||||||
* This should be a value from 0 to 100.
|
|
||||||
* @param progressMessage a message indicating what is currently occurring in this phase.
|
|
||||||
* Null indicates to use the default message.
|
* Null indicates to use the default message.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -40,7 +40,7 @@ public abstract class MergeManagerPlugin extends Plugin implements ProgramaticUs
|
||||||
* Constructor for plugin that handles multi-user merge of programs.
|
* Constructor for plugin that handles multi-user merge of programs.
|
||||||
* @param tool the tool with the active program to be merged
|
* @param tool the tool with the active program to be merged
|
||||||
* @param mergeManager the merge manager that will control the merge process
|
* @param mergeManager the merge manager that will control the merge process
|
||||||
* @param program the current program
|
* @param domainObject the current domain object
|
||||||
*/
|
*/
|
||||||
public MergeManagerPlugin(PluginTool tool, MergeManager mergeManager,
|
public MergeManagerPlugin(PluginTool tool, MergeManager mergeManager,
|
||||||
UndoableDomainObject domainObject) {
|
UndoableDomainObject domainObject) {
|
||||||
|
|
|
@ -233,9 +233,7 @@ public class ProgramMultiUserMergeManager extends MergeManager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the listing merge panel.
|
* Show the listing merge panel.
|
||||||
* @param show true indicates to show the Listing merge panel.
|
* @param goToAddress the address to goto.
|
||||||
* false indicates show the default component.
|
|
||||||
* @param goToAddress
|
|
||||||
*/
|
*/
|
||||||
public void showListingMergePanel(final Address goToAddress) {
|
public void showListingMergePanel(final Address goToAddress) {
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
|
|
@ -1345,7 +1345,7 @@ public class DataTypeMergeManager implements MergeResolver {
|
||||||
* Get the resolved data type for either the return type or a variable.
|
* Get the resolved data type for either the return type or a variable.
|
||||||
* @param id id of FunctionDefinition
|
* @param id id of FunctionDefinition
|
||||||
* @param paramID ID of either the return type or a variable
|
* @param paramID ID of either the return type or a variable
|
||||||
* @param index >=0 is the index of the variable; <0 means the paramID is
|
* @param index >=0 is the index of the variable; <0 means the paramID is
|
||||||
* the return type
|
* the return type
|
||||||
* @param resolvedDataTypes hashtable to use for resolving
|
* @param resolvedDataTypes hashtable to use for resolving
|
||||||
* @return resolved data type or the default data type if the data type
|
* @return resolved data type or the default data type if the data type
|
||||||
|
|
|
@ -2316,8 +2316,7 @@ abstract class AbstractFunctionMerger implements ListingMergeConstants {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the panel for resolving a conflict due to a variable being removed.
|
* Creates the panel for resolving a conflict due to a variable being removed.
|
||||||
* @param entryPt the function entry point for the function variables.
|
* @param lvc the local variable conflict
|
||||||
* @param vars variables from the different programs [0]=Original, [1]=Latest, [2]=My
|
|
||||||
* @param monitor status monitor
|
* @param monitor status monitor
|
||||||
* @return the panel
|
* @return the panel
|
||||||
*/
|
*/
|
||||||
|
@ -2390,7 +2389,7 @@ abstract class AbstractFunctionMerger implements ListingMergeConstants {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the progress message details associated with this phase of the merge.
|
* Updates the progress message details associated with this phase of the merge.
|
||||||
* @param progressMessage a message indicating what is currently occurring in this phase.
|
* @param message a message indicating what is currently occurring in this phase.
|
||||||
* Null indicates to use the default message.
|
* Null indicates to use the default message.
|
||||||
*/
|
*/
|
||||||
protected void updateProgressMessage(String message) {
|
protected void updateProgressMessage(String message) {
|
||||||
|
|
|
@ -190,7 +190,7 @@ abstract class AbstractListingMerger implements ListingMerger, ListingMergeConst
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return an address set that contains all addresses that make up the code
|
/** Return an address set that contains all addresses that make up the code
|
||||||
* units containing the indicated address in the LATEST, MY, & ORIGINAL programs.
|
* units containing the indicated address in the LATEST, MY, & ORIGINAL programs.
|
||||||
* @param addr the address
|
* @param addr the address
|
||||||
* @return the code unit address set
|
* @return the code unit address set
|
||||||
*/
|
*/
|
||||||
|
@ -199,8 +199,8 @@ abstract class AbstractListingMerger implements ListingMerger, ListingMergeConst
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return an address set that contains all addresses that make up the code
|
/** Return an address set that contains all addresses that make up the code
|
||||||
* units containing the indicated addresses in the LATEST, MY, & ORIGINAL programs.
|
* units containing the indicated addresses in the LATEST, MY, & ORIGINAL programs.
|
||||||
* @param addr the addresses
|
* @param addrs the addresses
|
||||||
* @return the code unit address set
|
* @return the code unit address set
|
||||||
*/
|
*/
|
||||||
protected AddressSetView getCodeUnitAddressSet(AddressSet addrs) {
|
protected AddressSetView getCodeUnitAddressSet(AddressSet addrs) {
|
||||||
|
@ -332,7 +332,7 @@ abstract class AbstractListingMerger implements ListingMerger, ListingMergeConst
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the progress bar associated with this phase of the merge.
|
* Updates the progress bar associated with this phase of the merge.
|
||||||
* Before beginning to auto-merge the <code>totalChanges</code> and <code>changeNum<\code> must be set.
|
* Before beginning to auto-merge the <code>totalChanges</code> and <code>changeNum</code> must be set.
|
||||||
* This method should then be called as changes are made to update the change bar.
|
* This method should then be called as changes are made to update the change bar.
|
||||||
* This assumes that each change is equivalent in terms of shown progress.
|
* This assumes that each change is equivalent in terms of shown progress.
|
||||||
* @param increment the number of changes completed relative to the total
|
* @param increment the number of changes completed relative to the total
|
||||||
|
@ -353,7 +353,7 @@ abstract class AbstractListingMerger implements ListingMerger, ListingMergeConst
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the progress message details associated with this phase of the merge.
|
* Updates the progress message details associated with this phase of the merge.
|
||||||
* @param progressMessage a message indicating what is currently occurring in this phase.
|
* @param message a message indicating what is currently occurring in this phase.
|
||||||
* Null indicates to use the default message.
|
* Null indicates to use the default message.
|
||||||
*/
|
*/
|
||||||
protected void updateProgressMessage(String message) {
|
protected void updateProgressMessage(String message) {
|
||||||
|
@ -376,7 +376,7 @@ abstract class AbstractListingMerger implements ListingMerger, ListingMergeConst
|
||||||
* phase of the merge.
|
* phase of the merge.
|
||||||
* @param myPercentComplete the progress percentage completed for this merger.
|
* @param myPercentComplete the progress percentage completed for this merger.
|
||||||
* This should be a value from 0 to 100.
|
* This should be a value from 0 to 100.
|
||||||
* @param progressMessage a message indicating what is currently occurring in this phase.
|
* @param message a message indicating what is currently occurring in this phase.
|
||||||
* Null indicates to use the default message.
|
* Null indicates to use the default message.
|
||||||
*/
|
*/
|
||||||
protected void updateProgress(int myPercentComplete, String message) {
|
protected void updateProgress(int myPercentComplete, String message) {
|
||||||
|
|
|
@ -45,9 +45,9 @@ import ghidra.util.task.TaskMonitor;
|
||||||
* program and the modified program being checked into version control.
|
* program and the modified program being checked into version control.
|
||||||
* <br>Indirect conflicts include:
|
* <br>Indirect conflicts include:
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>bytes & code units</li>
|
* <li>bytes & code units</li>
|
||||||
* <li>bytes & equates</li>
|
* <li>bytes & equates</li>
|
||||||
* <li>code units & equates</li>
|
* <li>code units & equates</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* <br>Important: This class is intended to be used only for a single program
|
* <br>Important: This class is intended to be used only for a single program
|
||||||
* version merge. It should be constructed, followed by an autoMerge(), and lastly
|
* version merge. It should be constructed, followed by an autoMerge(), and lastly
|
||||||
|
|
|
@ -53,7 +53,6 @@ public abstract class ConflictPanel extends ChoiceComponent {
|
||||||
* row or 0 is returned.
|
* row or 0 is returned.
|
||||||
* Each button or check box has an associated value that can be bitwise 'OR'ed together
|
* Each button or check box has an associated value that can be bitwise 'OR'ed together
|
||||||
* to get the entire choice for the row.
|
* to get the entire choice for the row.
|
||||||
* @param row the row of the conflict resolution table.
|
|
||||||
* @return the choice(s) currently selected.
|
* @return the choice(s) currently selected.
|
||||||
*/
|
*/
|
||||||
public abstract int getUseForAllChoice();
|
public abstract int getUseForAllChoice();
|
||||||
|
|
|
@ -191,14 +191,8 @@ public class ExternalFunctionMerger extends AbstractFunctionMerger implements Li
|
||||||
/**
|
/**
|
||||||
* Manages changes and conflicts for externals between the latest versioned
|
* Manages changes and conflicts for externals between the latest versioned
|
||||||
* program and the modified program being checked into version control.
|
* program and the modified program being checked into version control.
|
||||||
* @param mergeManager the top level merge manager for merging a program version.
|
* @param listingMergeManager the top level merge manager for merging a program version.
|
||||||
* @param resultPgm the program to be updated with the result of the merge.
|
* @param showListingPanel true to show the listing panel.
|
||||||
* This is the program that will actually get checked in.
|
|
||||||
* @param originalPgm the program that was checked out.
|
|
||||||
* @param latestPgm the latest checked-in version of the program.
|
|
||||||
* @param myPgm the program requesting to be checked in.
|
|
||||||
* @param latestChanges the address set of changes between original and latest versioned program.
|
|
||||||
* @param myChanges the address set of changes between original and my modified program.
|
|
||||||
*/
|
*/
|
||||||
public ExternalFunctionMerger(ListingMergeManager listingMergeManager,
|
public ExternalFunctionMerger(ListingMergeManager listingMergeManager,
|
||||||
boolean showListingPanel) {
|
boolean showListingPanel) {
|
||||||
|
|
|
@ -1654,7 +1654,7 @@ class FunctionMerger extends AbstractFunctionMerger implements ListingMerger {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return an address set that contains all addresses that make up the code
|
/** Return an address set that contains all addresses that make up the code
|
||||||
* units containing the indicated address in the LATEST, MY, & ORIGINAL programs.
|
* units containing the indicated address in the LATEST, MY, & ORIGINAL programs.
|
||||||
* @param addr the address
|
* @param addr the address
|
||||||
* @return the code unit address set
|
* @return the code unit address set
|
||||||
*/
|
*/
|
||||||
|
@ -1663,7 +1663,7 @@ class FunctionMerger extends AbstractFunctionMerger implements ListingMerger {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return an address set that contains all addresses that make up the code
|
/** Return an address set that contains all addresses that make up the code
|
||||||
* units containing the indicated addresses in the LATEST, MY, & ORIGINAL programs.
|
* units containing the indicated addresses in the LATEST, MY, & ORIGINAL programs.
|
||||||
* @param addr the addresses
|
* @param addr the addresses
|
||||||
* @return the code unit address set
|
* @return the code unit address set
|
||||||
*/
|
*/
|
||||||
|
@ -1762,7 +1762,7 @@ class FunctionMerger extends AbstractFunctionMerger implements ListingMerger {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the progress bar associated with this phase of the merge.
|
* Updates the progress bar associated with this phase of the merge.
|
||||||
* Before beginning to auto-merge the <code>totalChanges</code> and <code>changeNum<\code> must be set.
|
* Before beginning to auto-merge the <code>totalChanges</code> and <code>changeNum</code> must be set.
|
||||||
* This method should then be called as changes are made to update the change bar.
|
* This method should then be called as changes are made to update the change bar.
|
||||||
* This assumes that each change is equivalent in terms of shown progress.
|
* This assumes that each change is equivalent in terms of shown progress.
|
||||||
* @param increment the number of changes completed relative to the total
|
* @param increment the number of changes completed relative to the total
|
||||||
|
|
|
@ -42,7 +42,7 @@ import ghidra.util.task.TaskMonitor;
|
||||||
* <li>functions</li>
|
* <li>functions</li>
|
||||||
* <li>symbols</li>
|
* <li>symbols</li>
|
||||||
* <li>references [memory, stack, and external]</li>
|
* <li>references [memory, stack, and external]</li>
|
||||||
* <li>comments [plate, pre, end-of-line, repeatable, and post]/li>
|
* <li>comments [plate, pre, end-of-line, repeatable, and post]</li>
|
||||||
* <li>properties</li>
|
* <li>properties</li>
|
||||||
* <li>bookmarks</li>
|
* <li>bookmarks</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
|
|
|
@ -35,10 +35,10 @@ interface ListingMerger {
|
||||||
* Performs the automatic merge for all changes in my Checked Out program version.
|
* Performs the automatic merge for all changes in my Checked Out program version.
|
||||||
* It also determines the conflicts requiring manual resolution.
|
* It also determines the conflicts requiring manual resolution.
|
||||||
* @param monitor task monitor for informing the user of progress.
|
* @param monitor task monitor for informing the user of progress.
|
||||||
* @param progressMin minimum progress value, between 0 & 100, for this auto merge.
|
* @param progressMin minimum progress value, between 0 & 100, for this auto merge.
|
||||||
* The merge manager's progress should be updated from progressMin to progressMax
|
* The merge manager's progress should be updated from progressMin to progressMax
|
||||||
* as the autoMerge occurs.
|
* as the autoMerge occurs.
|
||||||
* @param progressMax maximum progress value, between 0 & 100, for this auto merge.
|
* @param progressMax maximum progress value, between 0 & 100, for this auto merge.
|
||||||
* @throws ProgramConflictException if the programs for different versions are not compatible.
|
* @throws ProgramConflictException if the programs for different versions are not compatible.
|
||||||
* @throws MemoryAccessException if memory can't be accessed to get/set byte values.
|
* @throws MemoryAccessException if memory can't be accessed to get/set byte values.
|
||||||
* @throws CancelledException if the user cancels the merge.
|
* @throws CancelledException if the user cancels the merge.
|
||||||
|
|
|
@ -364,7 +364,8 @@ public class ListingMergePanel extends JPanel
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param navigator
|
* Adds a button press listener.
|
||||||
|
* @param listener the listener to add.
|
||||||
*/
|
*/
|
||||||
public void addButtonPressedListener(ButtonPressedListener listener) {
|
public void addButtonPressedListener(ButtonPressedListener listener) {
|
||||||
for (ListingPanel listingPanel : listingPanels) {
|
for (ListingPanel listingPanel : listingPanels) {
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class ListingMergePanelPlugin extends Plugin implements ProgramaticUseOnl
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
* @param tool merge tool
|
* @param tool merge tool
|
||||||
* @param mergeManager merge manager
|
* @param mergePanel merge panel
|
||||||
*/
|
*/
|
||||||
public ListingMergePanelPlugin(PluginTool tool, ListingMergePanel mergePanel) {
|
public ListingMergePanelPlugin(PluginTool tool, ListingMergePanel mergePanel) {
|
||||||
super(tool);
|
super(tool);
|
||||||
|
|
|
@ -73,6 +73,7 @@ public class ProgramTreeMergeManager implements MergeResolver {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new manager for merging trees
|
* Construct a new manager for merging trees
|
||||||
|
* @param mergeManager the program merge manager
|
||||||
* @param resultProgram latest version of the Program that is the
|
* @param resultProgram latest version of the Program that is the
|
||||||
* destination for changes applied from the source program
|
* destination for changes applied from the source program
|
||||||
* @param myProgram source of changes to apply to the destination
|
* @param myProgram source of changes to apply to the destination
|
||||||
|
@ -82,7 +83,6 @@ public class ProgramTreeMergeManager implements MergeResolver {
|
||||||
* resultProgram and latestProgram start out as being identical
|
* resultProgram and latestProgram start out as being identical
|
||||||
* @param latestChangeSet change set of the destination program
|
* @param latestChangeSet change set of the destination program
|
||||||
* @param myChangeSet change set for the source program
|
* @param myChangeSet change set for the source program
|
||||||
* @param monitor
|
|
||||||
*/
|
*/
|
||||||
public ProgramTreeMergeManager(ProgramMultiUserMergeManager mergeManager,
|
public ProgramTreeMergeManager(ProgramMultiUserMergeManager mergeManager,
|
||||||
Program resultProgram, Program myProgram, Program originalProgram,
|
Program resultProgram, Program myProgram, Program originalProgram,
|
||||||
|
@ -592,9 +592,9 @@ public class ProgramTreeMergeManager implements MergeResolver {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Covers case 6: dest content changed, source content changed;
|
* Covers case 6: dest content changed, source content changed;
|
||||||
* case 7: dest name change & content changed, source name changed & content changed
|
* case 7: dest name change & content changed, source name changed & content changed
|
||||||
* case 8: dest name & content changed, source content changed
|
* case 8: dest name & content changed, source content changed
|
||||||
* case 9: dest content changed, source name & content changed
|
* case 9: dest content changed, source name & content changed
|
||||||
* @throws CancelledException
|
* @throws CancelledException
|
||||||
*/
|
*/
|
||||||
private void keepOtherOrCreateTree(ProgramModule origRoot, ProgramModule sourceRoot, ProgramModule destRoot,
|
private void keepOtherOrCreateTree(ProgramModule origRoot, ProgramModule sourceRoot, ProgramModule destRoot,
|
||||||
|
@ -738,7 +738,7 @@ public class ProgramTreeMergeManager implements MergeResolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Case 4: destination Name & content changed, source name changed
|
* Case 4: destination Name & content changed, source name changed
|
||||||
* @param sourceRoot source root module
|
* @param sourceRoot source root module
|
||||||
* @param sourceTreeName source tree name
|
* @param sourceTreeName source tree name
|
||||||
* @param destTreeName destination tree name
|
* @param destTreeName destination tree name
|
||||||
|
@ -793,7 +793,7 @@ public class ProgramTreeMergeManager implements MergeResolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Case 5: destination Name changed, source name & content changed
|
* Case 5: destination Name changed, source name & content changed
|
||||||
* @param sourceRoot source root module
|
* @param sourceRoot source root module
|
||||||
* @param sourceTreeName source tree name
|
* @param sourceTreeName source tree name
|
||||||
* @param destTreeName destination tree name
|
* @param destTreeName destination tree name
|
||||||
|
|
|
@ -164,7 +164,7 @@ public class ConflictUtility {
|
||||||
* Creates a standard address set conflict count message. This indicates
|
* Creates a standard address set conflict count message. This indicates
|
||||||
* which address or address range with conflicts you are resolving of some
|
* which address or address range with conflicts you are resolving of some
|
||||||
* total number of addresses or address ranges with conflicts.
|
* total number of addresses or address ranges with conflicts.
|
||||||
* @param caddressNum the current conflicting address number.
|
* @param addressNum the current conflicting address number.
|
||||||
* @param totalAddresses the total number of conflicting addresses.
|
* @param totalAddresses the total number of conflicting addresses.
|
||||||
* @param isRange true if the current conflict is for an address range.
|
* @param isRange true if the current conflict is for an address range.
|
||||||
* @return the message string containing HTML tags.
|
* @return the message string containing HTML tags.
|
||||||
|
|
|
@ -34,20 +34,24 @@ import ghidra.program.util.ProgramSelection;
|
||||||
* <p>
|
* <p>
|
||||||
* Subclasses should override the following methods if they are interested
|
* Subclasses should override the following methods if they are interested
|
||||||
* in the corresponding events:
|
* in the corresponding events:
|
||||||
|
* <ul>
|
||||||
* <LI> <code>programOpened(Program)</code>
|
* <LI> <code>programOpened(Program)</code>
|
||||||
* <LI> <code>programClosed(Program)</code>
|
* <LI> <code>programClosed(Program)</code>
|
||||||
* <LI> <code>locationChanged(ProgramLocation)</code>
|
* <LI> <code>locationChanged(ProgramLocation)</code>
|
||||||
* <LI> <code>selectionChanged(ProgramSelection) </code>
|
* <LI> <code>selectionChanged(ProgramSelection) </code>
|
||||||
* <LI> <code>highlightChanged(ProgramSelection) </code>
|
* <LI> <code>highlightChanged(ProgramSelection) </code>
|
||||||
* </LI>
|
* </LI>
|
||||||
|
* </ul>
|
||||||
* <br>
|
* <br>
|
||||||
* This class will handle the enablement and add to popup state for
|
* This class will handle the enablement and add to popup state for
|
||||||
* plugin actions when subclasses call any of the following methods:
|
* plugin actions when subclasses call any of the following methods:
|
||||||
|
* <ul>
|
||||||
* <LI><code>enableOnHighlight(PluginAction)</code>
|
* <LI><code>enableOnHighlight(PluginAction)</code>
|
||||||
* <LI><code>enableOnLocation(PluginAction)</code>
|
* <LI><code>enableOnLocation(PluginAction)</code>
|
||||||
* <LI><code>enableOnProgram(PluginAction)</code>
|
* <LI><code>enableOnProgram(PluginAction)</code>
|
||||||
* <LI><code>enableOnSelection(PluginAction)</code>
|
* <LI><code>enableOnSelection(PluginAction)</code>
|
||||||
* </LI>
|
* </LI>
|
||||||
|
* </ul>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public abstract class ProgramPlugin extends Plugin {
|
public abstract class ProgramPlugin extends Plugin {
|
||||||
|
@ -63,7 +67,6 @@ public abstract class ProgramPlugin extends Plugin {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new program plugin
|
* Constructs a new program plugin
|
||||||
* @param name plugin name the name of this plugin
|
|
||||||
* @param plugintool tool the parent tool for this plugin
|
* @param plugintool tool the parent tool for this plugin
|
||||||
* @param consumeLocationChange true if this plugin should consume ProgramLocation events
|
* @param consumeLocationChange true if this plugin should consume ProgramLocation events
|
||||||
* @param consumeSelectionChange true if this plugin should consume ProgramSelection events
|
* @param consumeSelectionChange true if this plugin should consume ProgramSelection events
|
||||||
|
|
|
@ -40,10 +40,10 @@ public class AnalysisBackgroundCommand extends MergeableBackgroundCommand {
|
||||||
private boolean markAsAnalyzed;
|
private boolean markAsAnalyzed;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When command is called, call this analyzer with the given address set
|
* Background Command to perform Auto Analysis on a program.
|
||||||
*
|
*
|
||||||
* @param analyzer the analyzer to call
|
* @param mgr the program's AutoAnalysisManager.
|
||||||
* @param set the set to pass to the analyzer
|
* @param markAsAnalyzed true to set the analyzed flag after analysis.
|
||||||
*/
|
*/
|
||||||
public AnalysisBackgroundCommand(AutoAnalysisManager mgr, boolean markAsAnalyzed) {
|
public AnalysisBackgroundCommand(AutoAnalysisManager mgr, boolean markAsAnalyzed) {
|
||||||
super("Auto Analysis", true, true, false);
|
super("Auto Analysis", true, true, false);
|
||||||
|
@ -51,9 +51,6 @@ public class AnalysisBackgroundCommand extends MergeableBackgroundCommand {
|
||||||
this.markAsAnalyzed = markAsAnalyzed;
|
this.markAsAnalyzed = markAsAnalyzed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see ghidra.framework.cmd.BackgroundCommand#applyTo(ghidra.framework.model.DomainObject, ghidra.util.task.TaskMonitor)
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
||||||
if (markAsAnalyzed) {
|
if (markAsAnalyzed) {
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class ArchiveDialog extends DialogComponentProvider {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define the Main panel for the dialog here.
|
* Define the Main panel for the dialog here.
|
||||||
* @return JPanel the completed <CODE>Main Panel<\CODE>
|
* @return JPanel the completed <CODE>Main Panel</CODE>
|
||||||
*/
|
*/
|
||||||
protected JPanel buildMainPanel() {
|
protected JPanel buildMainPanel() {
|
||||||
GridBagLayout gbl = new GridBagLayout();
|
GridBagLayout gbl = new GridBagLayout();
|
||||||
|
|
|
@ -217,7 +217,7 @@ public class AssembleDockingAction extends DockingAction {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the location in the code viewer's {@link FieldPane} for the field at the given
|
* Retrieve the location in the code viewer's {@link FieldPanel} for the field at the given
|
||||||
* address having the given header text
|
* address having the given header text
|
||||||
* @param addr the address
|
* @param addr the address
|
||||||
* @param fieldName the name of the field
|
* @param fieldName the name of the field
|
||||||
|
|
|
@ -208,7 +208,7 @@ public class AssemblyDualTextField {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the description of an error encountered during parsing or assembling
|
* Represents the description of an error encountered during parsing or assembling
|
||||||
* @note not used until error descriptions improve
|
* NOTE: not used until error descriptions improve
|
||||||
*/
|
*/
|
||||||
static class AssemblyError extends AssemblyCompletion {
|
static class AssemblyError extends AssemblyCompletion {
|
||||||
private String text;
|
private String text;
|
||||||
|
@ -488,7 +488,7 @@ public class AssemblyDualTextField {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the visibility of the text box(es)
|
* Set the visibility of the text box(es)
|
||||||
* @param determines whether both are hidden, the dual variant is shown, or the single variant is shown.
|
* @param visibility the VisibilityMode to set.
|
||||||
*/
|
*/
|
||||||
public void setVisible(VisibilityMode visibility) {
|
public void setVisible(VisibilityMode visibility) {
|
||||||
switch (visibility) {
|
switch (visibility) {
|
||||||
|
@ -510,7 +510,7 @@ public class AssemblyDualTextField {
|
||||||
/**
|
/**
|
||||||
* Add a focus listener to the box(es)
|
* Add a focus listener to the box(es)
|
||||||
*
|
*
|
||||||
* @note The listener will not fire when focus passes among the linked boxes of the dual variant.
|
* NOTE: The listener will not fire when focus passes among the linked boxes of the dual variant.
|
||||||
* @param listener the listener
|
* @param listener the listener
|
||||||
*/
|
*/
|
||||||
public void addFocusListener(FocusListener listener) {
|
public void addFocusListener(FocusListener listener) {
|
||||||
|
|
|
@ -81,10 +81,6 @@ public class BlockModelServicePlugin extends ProgramPlugin
|
||||||
|
|
||||||
private StringWithChoicesEditor editor;
|
private StringWithChoicesEditor editor;
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
* @param plugintool tool
|
|
||||||
*/
|
|
||||||
public BlockModelServicePlugin(PluginTool tool) {
|
public BlockModelServicePlugin(PluginTool tool) {
|
||||||
|
|
||||||
super(tool, false, false);
|
super(tool, false, false);
|
||||||
|
@ -128,9 +124,8 @@ public class BlockModelServicePlugin extends ProgramPlugin
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle an option change
|
* Handle an option change
|
||||||
* @param options options object containing the property that changed
|
* @param newOptions options object containing the property that changed
|
||||||
* @param group
|
* @param optionName name of option that changed
|
||||||
* @param name name of option that changed
|
|
||||||
* @param oldValue old value of the option
|
* @param oldValue old value of the option
|
||||||
* @param newValue new value of the option
|
* @param newValue new value of the option
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -162,9 +162,6 @@ public class BookmarkDeleteCmd implements Command {
|
||||||
return presentationName;
|
return presentationName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ghidra.framework.cmd.Command#applyTo(ghidra.framework.plugintool.PluginTool, ghidra.framework.model.DomainObject)
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public boolean applyTo(DomainObject obj) {
|
public boolean applyTo(DomainObject obj) {
|
||||||
|
|
||||||
|
@ -244,17 +241,11 @@ public class BookmarkDeleteCmd implements Command {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ghidra.framework.cmd.Command#getStatusMsg()
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public String getStatusMsg() {
|
public String getStatusMsg() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ghidra.framework.cmd.Command#getName()
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return presentationName;
|
return presentationName;
|
||||||
|
|
|
@ -43,10 +43,12 @@ public class BookmarkEditCmd implements Command {
|
||||||
private String presentationName;
|
private String presentationName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a Bookmark. When setting a bookmark, all fields are used except the address
|
* Edit a Bookmark. When editing a bookmark, all fields are used except the address
|
||||||
* which is determined by the first address within each range of the set.
|
* which is determined by the first address within each range of the set.
|
||||||
* @param template bookmark template
|
* @param set list of bookmark addresses.
|
||||||
* @param set list off bookmark addresses
|
* @param type the bookmark type.
|
||||||
|
* @param category the bookmark category.
|
||||||
|
* @param comment the bookmark comment.
|
||||||
*/
|
*/
|
||||||
public BookmarkEditCmd(AddressSetView set, String type, String category, String comment) {
|
public BookmarkEditCmd(AddressSetView set, String type, String category, String comment) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
@ -59,10 +61,12 @@ public class BookmarkEditCmd implements Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a Bookmark. When setting a bookmark, all fields are used except the address
|
* Edit a Bookmark. When editing a bookmark, all fields are used except the address
|
||||||
* which is provided by the addrs parameter.
|
* which is provided by the addrs parameter.
|
||||||
* @param template bookmark template
|
* @param addr the bookmark address.
|
||||||
* @param set list off bookmark addresses
|
* @param type the bookmark type.
|
||||||
|
* @param category the bookmark category.
|
||||||
|
* @param comment the bookmark comment.
|
||||||
*/
|
*/
|
||||||
public BookmarkEditCmd(Address addr, String type, String category, String comment) {
|
public BookmarkEditCmd(Address addr, String type, String category, String comment) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
@ -90,9 +94,7 @@ public class BookmarkEditCmd implements Command {
|
||||||
return presentationName;
|
return presentationName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @see ghidra.framework.cmd.Command#applyTo(ghidra.framework.plugintool.PluginTool, ghidra.framework.model.DomainObject)
|
|
||||||
*/
|
|
||||||
public boolean applyTo(DomainObject obj) {
|
public boolean applyTo(DomainObject obj) {
|
||||||
|
|
||||||
BookmarkManager mgr = ((Program) obj).getBookmarkManager();
|
BookmarkManager mgr = ((Program) obj).getBookmarkManager();
|
||||||
|
@ -113,16 +115,12 @@ public class BookmarkEditCmd implements Command {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @see ghidra.framework.cmd.Command#getStatusMsg()
|
|
||||||
*/
|
|
||||||
public String getStatusMsg() {
|
public String getStatusMsg() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @see ghidra.framework.cmd.Command#getName()
|
|
||||||
*/
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return presentationName;
|
return presentationName;
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,6 @@ public class ClearCmd extends BackgroundCommand {
|
||||||
* use {@link #ClearCmd(AddressSetView,ClearOptions)}.
|
* use {@link #ClearCmd(AddressSetView,ClearOptions)}.
|
||||||
*
|
*
|
||||||
* @param view the addresses over which to clear
|
* @param view the addresses over which to clear
|
||||||
* @param options the options used while clearing
|
|
||||||
*/
|
*/
|
||||||
public ClearCmd(AddressSetView view) {
|
public ClearCmd(AddressSetView view) {
|
||||||
this(view, null, view.getNumAddresses() < EVENT_LIMIT);
|
this(view, null, view.getNumAddresses() < EVENT_LIMIT);
|
||||||
|
|
|
@ -71,9 +71,6 @@ public class ClearFlowAndRepairCmd extends BackgroundCommand {
|
||||||
this.repairFunctions = repair;
|
this.repairFunctions = repair;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ghidra.framework.cmd.BackgroundCommand#applyTo(ghidra.framework.plugintool.PluginTool, ghidra.framework.model.DomainObject, ghidra.util.task.TaskMonitor)
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
public boolean applyTo(DomainObject obj, TaskMonitor monitor) {
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ public interface ColorizingService {
|
||||||
* @param set The address at which the given color will be applied
|
* @param set The address at which the given color will be applied
|
||||||
* @param color The color to apply
|
* @param color The color to apply
|
||||||
*
|
*
|
||||||
* @see #clearBackgroundColor(AddressSetView))
|
* @see #clearBackgroundColor(AddressSetView)
|
||||||
* @see #getBackgroundColor(Address)
|
* @see #getBackgroundColor(Address)
|
||||||
*/
|
*/
|
||||||
public void setBackgroundColor(AddressSetView set, Color color);
|
public void setBackgroundColor(AddressSetView set, Color color);
|
||||||
|
|
|
@ -839,11 +839,11 @@ public abstract class CompositeEditorPanel extends JPanel
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the drag actions supported by this drag source:
|
* Get the drag actions supported by this drag source:
|
||||||
* <UL>
|
* <ul>
|
||||||
* <li>DnDConstants.ACTION_MOVE
|
* <li>DnDConstants.ACTION_MOVE
|
||||||
* <li>DnDConstants.ACTION_COPY
|
* <li>DnDConstants.ACTION_COPY
|
||||||
* <li>DnDConstants.ACTION_COPY_OR_MOVE
|
* <li>DnDConstants.ACTION_COPY_OR_MOVE
|
||||||
* </li>
|
* </ul>
|
||||||
*
|
*
|
||||||
* @return the drag actions
|
* @return the drag actions
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
*/
|
*/
|
||||||
package ghidra.app.plugin.core.datamgr.archive;
|
package ghidra.app.plugin.core.datamgr.archive;
|
||||||
|
|
||||||
|
import ghidra.program.model.data.DataTypeManager;
|
||||||
|
|
||||||
public interface ArchiveManagerListener {
|
public interface ArchiveManagerListener {
|
||||||
/**
|
/**
|
||||||
* Called when a new Archive is opened.
|
* Called when a new Archive is opened.
|
||||||
|
|
|
@ -53,13 +53,13 @@ import ghidra.util.exception.UsrException;
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @todo Change the PseudoCodeUnit's getComment(int) method or change its
|
* TODO Change the PseudoCodeUnit's getComment(int) method or change its
|
||||||
* getPreview(int) method not to call getComment(int) and then change
|
* getPreview(int) method not to call getComment(int) and then change
|
||||||
* this class to not handle the UnsupportedOperationException.
|
* this class to not handle the UnsupportedOperationException.
|
||||||
* @todo are the category and names correct?
|
* TODO are the category and names correct?
|
||||||
* @todo decide how to represent multiple selections in the display
|
* TODO decide how to represent multiple selections in the display
|
||||||
*
|
*
|
||||||
* @todo Potential user options:
|
* TODO Potential user options:
|
||||||
* -look ahead count
|
* -look ahead count
|
||||||
* -to or to not display multiple selections
|
* -to or to not display multiple selections
|
||||||
* -change the format of the preview displayed
|
* -change the format of the preview displayed
|
||||||
|
|
|
@ -92,7 +92,7 @@ class InstructionInfoProvider extends ComponentProviderAdapter implements Domain
|
||||||
/**
|
/**
|
||||||
* Define the Main panel.
|
* Define the Main panel.
|
||||||
*
|
*
|
||||||
* @return JPanel the completed <CODE>Main Panel<\CODE>
|
* @return JPanel the completed <CODE>Main Panel</CODE>
|
||||||
*/
|
*/
|
||||||
protected JPanel buildMainPanel(boolean isDynamic) {
|
protected JPanel buildMainPanel(boolean isDynamic) {
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ public class MnemonicSearchPlugin extends Plugin {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the selection region from the program, builds the search string, and pops
|
* Retrieves the selection region from the program, builds the search string, and pops
|
||||||
* up the @{link MemSearchDialog}.
|
* up the {@link MemSearchDialog}.
|
||||||
*
|
*
|
||||||
* @param context
|
* @param context
|
||||||
* @param useOps
|
* @param useOps
|
||||||
|
|
|
@ -49,14 +49,16 @@ import docking.action.MenuData;
|
||||||
* tool. Selection is based on the initial selection or if there is no selection
|
* tool. Selection is based on the initial selection or if there is no selection
|
||||||
* then on where the cursor is located in the program.<BR>
|
* then on where the cursor is located in the program.<BR>
|
||||||
* This plugin provides the following types of selection:<BR>
|
* This plugin provides the following types of selection:<BR>
|
||||||
* <UL>Select by following the flow from the specified address(es) onward.
|
* <ul>
|
||||||
* Properties indicate whether or not CALLS or JUMPS should be followed.</UL>
|
* <li>Select by following the flow from the specified address(es) onward.
|
||||||
* <UL>Select the subroutine(s) for the specified address(es).</UL>
|
* Properties indicate whether or not CALLS or JUMPS should be followed.</li>
|
||||||
* <UL>Select the function(s) for the specified address(es).</UL>
|
* <li>Select the subroutine(s) for the specified address(es).</li>
|
||||||
* <UL>Select dead subroutine(s) for the specified address(es).</UL>
|
* <li>Select the function(s) for the specified address(es).</li>
|
||||||
* <UL>Select the current program changes.</UL>
|
* <li>Select dead subroutine(s) for the specified address(es).</li>
|
||||||
* <UL>Select by following the flow to the specified address(es).
|
* <li>Select the current program changes.</li>
|
||||||
* Properties indicate whether or not CALLS or JUMPS should be followed.</UL>
|
* <li>Select by following the flow to the specified address(es).
|
||||||
|
* Properties indicate whether or not CALLS or JUMPS should be followed.</li>
|
||||||
|
* </UL>
|
||||||
*/
|
*/
|
||||||
//@formatter:off
|
//@formatter:off
|
||||||
@PluginInfo(
|
@PluginInfo(
|
||||||
|
|
|
@ -32,7 +32,7 @@ import ghidra.util.table.field.*;
|
||||||
import ghidra.util.task.TaskMonitor;
|
import ghidra.util.task.TaskMonitor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Table model for the Search -> For Strings... result dialog.
|
* Table model for the Search -> For Strings... result dialog.
|
||||||
* <p>
|
* <p>
|
||||||
*/
|
*/
|
||||||
public class StringTableModel extends AddressBasedTableModel<FoundString> {
|
public class StringTableModel extends AddressBasedTableModel<FoundString> {
|
||||||
|
|
|
@ -52,7 +52,7 @@ import ghidra.util.task.TaskLauncher;
|
||||||
import resources.ResourceManager;
|
import resources.ResourceManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component provider for the Search -> For Strings... result dialog.
|
* Component provider for the Search -> For Strings... result dialog.
|
||||||
*/
|
*/
|
||||||
public class StringTableProvider extends ComponentProviderAdapter implements DomainObjectListener {
|
public class StringTableProvider extends ComponentProviderAdapter implements DomainObjectListener {
|
||||||
private static final ImageIcon ICON = ResourceManager.loadImage("images/kmessedwords.png");
|
private static final ImageIcon ICON = ResourceManager.loadImage("images/kmessedwords.png");
|
||||||
|
|
|
@ -40,8 +40,6 @@ public class EditExternalLocationAction extends DockingAction {
|
||||||
* Creates the action for editing an existing external location or external function in the
|
* Creates the action for editing an existing external location or external function in the
|
||||||
* symbol tree.
|
* symbol tree.
|
||||||
* @param plugin the symbol tree plugin, which owns this action.
|
* @param plugin the symbol tree plugin, which owns this action.
|
||||||
* @param contextClass context class specific to plugin to be used to differentiate
|
|
||||||
* ProgramSymbolActionContext instances.
|
|
||||||
*/
|
*/
|
||||||
public EditExternalLocationAction(Plugin plugin) {
|
public EditExternalLocationAction(Plugin plugin) {
|
||||||
super("Edit External Location", plugin.getName());
|
super("Edit External Location", plugin.getName());
|
||||||
|
|
|
@ -73,7 +73,7 @@ import ghidra.util.table.AddressSetTableModel;
|
||||||
import ghidra.util.task.TaskMonitor;
|
import ghidra.util.task.TaskMonitor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <h1>Ghidra Script Development.</h1>
|
* <h2>Ghidra Script Development.</h2>
|
||||||
* In order to write a script:
|
* In order to write a script:
|
||||||
* <ol>
|
* <ol>
|
||||||
* <li>Ghidra script must be written in Java.</li>
|
* <li>Ghidra script must be written in Java.</li>
|
||||||
|
@ -96,11 +96,11 @@ import ghidra.util.task.TaskMonitor;
|
||||||
* }
|
* }
|
||||||
* }
|
* }
|
||||||
* </pre>
|
* </pre>
|
||||||
* <h2>Ghidra Script State</h2>
|
* <h3>Ghidra Script State</h3>
|
||||||
* <blockquote>
|
* <blockquote>
|
||||||
* <p>
|
* <p>
|
||||||
* All scripts, when run, will be handed the current state in the form of class
|
* All scripts, when run, will be handed the current state in the form of class
|
||||||
* instance variable. These variables are:</p>
|
* instance variable. These variables are:
|
||||||
* <ol>
|
* <ol>
|
||||||
* <li><code>currentProgram</code>: the active program</li>
|
* <li><code>currentProgram</code>: the active program</li>
|
||||||
* <li><code>currentAddress</code>: the address of the current cursor location in the tool</li>
|
* <li><code>currentAddress</code>: the address of the current cursor location in the tool</li>
|
||||||
|
@ -113,7 +113,7 @@ import ghidra.util.task.TaskMonitor;
|
||||||
* </ol>
|
* </ol>
|
||||||
* </blockquote>
|
* </blockquote>
|
||||||
*
|
*
|
||||||
* <h2>Hello World Example</h2>
|
* <h3>Hello World Example</h3>
|
||||||
* This example, when run, will simply print "Hello World" into the Ghidra console.
|
* This example, when run, will simply print "Hello World" into the Ghidra console.
|
||||||
* <pre>
|
* <pre>
|
||||||
* public class HelloWorldScript extends GhidraScript {
|
* public class HelloWorldScript extends GhidraScript {
|
||||||
|
@ -957,16 +957,15 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* <p>
|
* <p>
|
||||||
* For examples, see the included <code>FormatExampleScript</code>.
|
* For examples, see the included <code>FormatExampleScript</code>.
|
||||||
* <p>
|
* <p>
|
||||||
* <b><u>Note:</u> This method will not:
|
* <b><u>Note:</u> This method will not:</b>
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>print out the name of the script, as does {@link #println(String)}</li>
|
* <li><b>print out the name of the script, as does {@link #println(String)}</b></li>
|
||||||
* <li>print a newline</li>
|
* <li><b>print a newline</b></li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* </b>
|
|
||||||
* If you would like the name of the script to precede you message, then you must add that
|
* If you would like the name of the script to precede you message, then you must add that
|
||||||
* yourself. The {@link #println(String)} does this via the following code:
|
* yourself. The {@link #println(String)} does this via the following code:
|
||||||
* <pre>
|
* <pre>
|
||||||
* String messageWithSource = getScriptName() + "> " + message;
|
* String messageWithSource = getScriptName() + "> " + message;
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param message the message to format
|
* @param message the message to format
|
||||||
|
@ -992,7 +991,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* If you would like the name of the script to precede you message, then you must add that
|
* If you would like the name of the script to precede you message, then you must add that
|
||||||
* yourself. The {@link #println(String)} does this via the following code:
|
* yourself. The {@link #println(String)} does this via the following code:
|
||||||
* <pre>
|
* <pre>
|
||||||
* String messageWithSource = getScriptName() + "> " + message;
|
* String messageWithSource = getScriptName() + "> " + message;
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param message the message to print
|
* @param message the message to print
|
||||||
|
@ -2002,7 +2001,6 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* invalid or missing .properties value.
|
* invalid or missing .properties value.
|
||||||
* </li>
|
* </li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
* (in headless mode or when using using .properties file)
|
* (in headless mode or when using using .properties file)
|
||||||
|
@ -2085,7 +2083,6 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* the .properties value (if it exists), or throws an Exception if there is an invalid
|
* the .properties value (if it exists), or throws an Exception if there is an invalid
|
||||||
* or missing .properties value.</li>
|
* or missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
* (in headless mode or when using .properties file)
|
* (in headless mode or when using .properties file)
|
||||||
|
@ -2193,7 +2190,6 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* representing the .properties value (if it exists), or throws an Exception if there
|
* representing the .properties value (if it exists), or throws an Exception if there
|
||||||
* is an invalid or missing .properties value.</li>
|
* is an invalid or missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
* (in headless mode or when using .properties file)
|
* (in headless mode or when using .properties file)
|
||||||
* @param approveButtonText the approve button text (in GUI mode - typically, this would be
|
* @param approveButtonText the approve button text (in GUI mode - typically, this would be
|
||||||
|
@ -2280,7 +2276,6 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* project, then that value is returned. Otherwise, an Exception is thrown if there is
|
* project, then that value is returned. Otherwise, an Exception is thrown if there is
|
||||||
* an invalid or missing .properties value.</li>
|
* an invalid or missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (GUI) or the variable name (headless or when
|
* @param title the title of the dialog (GUI) or the variable name (headless or when
|
||||||
* using .properties file)
|
* using .properties file)
|
||||||
|
@ -2359,7 +2354,6 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* or missing .properties value.
|
* or missing .properties value.
|
||||||
* </li>
|
* </li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
* (in headless mode or when using .properties file)
|
* (in headless mode or when using .properties file)
|
||||||
|
@ -2439,7 +2433,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* .properties value (if it exists), or throws an Exception if there is an invalid or
|
* .properties value (if it exists), or throws an Exception if there is an invalid or
|
||||||
* missing .properties value.</li>
|
* missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
*
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
* (in headless mode or when using .properties file)
|
* (in headless mode or when using .properties file)
|
||||||
|
@ -2512,7 +2506,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* .properties value (if it exists), or throws an Exception if there is an invalid or
|
* .properties value (if it exists), or throws an Exception if there is an invalid or
|
||||||
* missing .properties value.</li>
|
* missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
*
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
* (in headless mode or when using .properties file)
|
* (in headless mode or when using .properties file)
|
||||||
|
@ -2586,7 +2580,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* .properties byte pattern value (if it exists), or throws an Exception if there is
|
* .properties byte pattern value (if it exists), or throws an Exception if there is
|
||||||
* an invalid or missing .properties value.</li>
|
* an invalid or missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
*
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable
|
||||||
* name (in headless mode or when using .properties file)
|
* name (in headless mode or when using .properties file)
|
||||||
|
@ -2645,7 +2639,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* then that value is returned. Otherwise, an Exception is thrown if there is an
|
* then that value is returned. Otherwise, an Exception is thrown if there is an
|
||||||
* invalid or missing .properties value.</li>
|
* invalid or missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
*
|
||||||
*
|
*
|
||||||
* @param title the title of the pop-up dialog (in GUI mode) or the variable name (in
|
* @param title the title of the pop-up dialog (in GUI mode) or the variable name (in
|
||||||
* headless mode)
|
* headless mode)
|
||||||
|
@ -2740,7 +2734,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* then that value is returned. Otherwise, an Exception is thrown if there is an invalid
|
* then that value is returned. Otherwise, an Exception is thrown if there is an invalid
|
||||||
* or missing .properties value.</li>
|
* or missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
*
|
||||||
* @param title the title of the pop-up dialog (in GUI mode) or the variable name (in headless
|
* @param title the title of the pop-up dialog (in GUI mode) or the variable name (in headless
|
||||||
* mode or when using .properties file)
|
* mode or when using .properties file)
|
||||||
* @throws IllegalArgumentException if in headless mode, there was a missing or invalid domain
|
* @throws IllegalArgumentException if in headless mode, there was a missing or invalid domain
|
||||||
|
@ -2824,10 +2818,9 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* .properties value (if it exists), or throws an Exception if there is an invalid or
|
* .properties value (if it exists), or throws an Exception if there is an invalid or
|
||||||
* missing .properties value.</li>
|
* missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
|
||||||
* <p>
|
* <p>
|
||||||
* Note that in both headless and GUI modes, you may specify "PI" or "E" and get the
|
* Note that in both headless and GUI modes, you may specify "PI" or "E" and get the
|
||||||
* corresponding floating point value to 15 decimal places.</p>
|
* corresponding floating point value to 15 decimal places.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
|
@ -2887,7 +2880,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* .properties value (if it exists), or throws an Exception if there is an invalid or
|
* .properties value (if it exists), or throws an Exception if there is an invalid or
|
||||||
* missing .properties value.</li>
|
* missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
*
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
* (in headless mode or when using .properties file)
|
* (in headless mode or when using .properties file)
|
||||||
|
@ -2930,7 +2923,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* not null or an empty String, it is returned. In all other cases, an exception
|
* not null or an empty String, it is returned. In all other cases, an exception
|
||||||
* is thrown.</li>
|
* is thrown.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
*
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
* (in headless mode or when using .properties file)
|
* (in headless mode or when using .properties file)
|
||||||
|
@ -3004,7 +2997,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* .properties value (if it exists and is a valid choice), or throws an Exception if
|
* .properties value (if it exists and is a valid choice), or throws an Exception if
|
||||||
* there is an invalid or missing .properties value.</li>
|
* there is an invalid or missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
* (in headless mode or when using .properties file)
|
* (in headless mode or when using .properties file)
|
||||||
* @param message the message to display next to the input field (in GUI mode) or the second
|
* @param message the message to display next to the input field (in GUI mode) or the second
|
||||||
|
@ -3130,7 +3123,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* by searching for a property name equal to a space-separated concatenation of the
|
* by searching for a property name equal to a space-separated concatenation of the
|
||||||
* String parameters (title + " " + message). If that property name exists and
|
* String parameters (title + " " + message). If that property name exists and
|
||||||
* represents a list (one or more) of valid choice(s) in the form
|
* represents a list (one or more) of valid choice(s) in the form
|
||||||
* "choice1;choice2;choice3;..." (<-- note the quotes surrounding the choices), then
|
* "choice1;choice2;choice3;..." (<-- note the quotes surrounding the choices), then
|
||||||
* an Object array of those choices is returned. Otherwise, an Exception is thrown if
|
* an Object array of those choices is returned. Otherwise, an Exception is thrown if
|
||||||
* there is an invalid or missing .properties value.</li>
|
* there is an invalid or missing .properties value.</li>
|
||||||
*</ol>
|
*</ol>
|
||||||
|
@ -3204,7 +3197,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* by searching for a property name equal to a space-separated concatenation of the
|
* by searching for a property name equal to a space-separated concatenation of the
|
||||||
* String parameters (title + " " + message). If that property name exists and
|
* String parameters (title + " " + message). If that property name exists and
|
||||||
* represents a list (one or more) of valid choice(s) in the form
|
* represents a list (one or more) of valid choice(s) in the form
|
||||||
* "choice1;choice2;choice3;..." (<-- note the quotes surrounding the choices), then
|
* "choice1;choice2;choice3;..." (<-- note the quotes surrounding the choices), then
|
||||||
* an Object array of those choices is returned. Otherwise, an Exception is thrown if
|
* an Object array of those choices is returned. Otherwise, an Exception is thrown if
|
||||||
* there is an invalid or missing .properties value. NOTE: the choice names for
|
* there is an invalid or missing .properties value. NOTE: the choice names for
|
||||||
* this method must match those in the stringRepresentationOfChoices array.</li>
|
* this method must match those in the stringRepresentationOfChoices array.</li>
|
||||||
|
@ -3296,7 +3289,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
|
||||||
* then that value is returned. Otherwise, an Exception is thrown if there is an
|
* then that value is returned. Otherwise, an Exception is thrown if there is an
|
||||||
* invalid or missing .properties value.</li>
|
* invalid or missing .properties value.</li>
|
||||||
* </ol>
|
* </ol>
|
||||||
* </p>
|
*
|
||||||
*
|
*
|
||||||
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
* @param title the title of the dialog (in GUI mode) or the first part of the variable name
|
||||||
* (in headless mode)
|
* (in headless mode)
|
||||||
|
|
|
@ -370,7 +370,7 @@ public class ScriptInfo {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the script menu path as a string.
|
* Returns the script menu path as a string.
|
||||||
* For example, "Path1->Path2->Path3".
|
* For example,{@literal "Path1->Path2->Path3"}.
|
||||||
* @return the script menu path as a string
|
* @return the script menu path as a string
|
||||||
*/
|
*/
|
||||||
public String getMenuPathAsString() {
|
public String getMenuPathAsString() {
|
||||||
|
|
|
@ -93,16 +93,18 @@ public interface BlockModelService {
|
||||||
/**
|
/**
|
||||||
* Get new instance of the active Basic Block model for the current program.
|
* Get new instance of the active Basic Block model for the current program.
|
||||||
* @return new Basic Block model instance or null if program is not open.
|
* @return new Basic Block model instance or null if program is not open.
|
||||||
* @depricated use getActiveBlockModel(Program) instead
|
* @deprecated use getActiveBlockModel(Program) instead
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CodeBlockModel getActiveBlockModel();
|
public CodeBlockModel getActiveBlockModel();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get new instance of the active Basic Block model for the current program.
|
* Get new instance of the active Basic Block model for the current program.
|
||||||
* @param includeExternals externals are included if true
|
* @param includeExternals externals are included if true
|
||||||
* @return new Basic Block model instance or null if program is not open.
|
* @return new Basic Block model instance or null if program is not open.
|
||||||
* @depricated use getActiveBlockModel(Program, boolean) instead
|
* @deprecated use getActiveBlockModel(Program, boolean) instead
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CodeBlockModel getActiveBlockModel(boolean includeExternals);
|
public CodeBlockModel getActiveBlockModel(boolean includeExternals);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -129,16 +131,18 @@ public interface BlockModelService {
|
||||||
/**
|
/**
|
||||||
* Get new instance of the active Subroutine Block model for the current program.
|
* Get new instance of the active Subroutine Block model for the current program.
|
||||||
* @return new Subroutine Block model instance or null if program is not open
|
* @return new Subroutine Block model instance or null if program is not open
|
||||||
* @depricated use getActiveSubroutineModel(Program) instead
|
* @deprecated use getActiveSubroutineModel(Program) instead
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CodeBlockModel getActiveSubroutineModel();
|
public CodeBlockModel getActiveSubroutineModel();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get new instance of the active Subroutine Block model for the current program.
|
* Get new instance of the active Subroutine Block model for the current program.
|
||||||
* @param includeExternals externals are included if true
|
* @param includeExternals externals are included if true
|
||||||
* @return new Subroutine Block model instance or null if program is not open
|
* @return new Subroutine Block model instance or null if program is not open
|
||||||
* @depricated use getActiveSubroutineModel(Program) instead
|
* @deprecated use getActiveSubroutineModel(Program) instead
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CodeBlockModel getActiveSubroutineModel(boolean includeExternals);
|
public CodeBlockModel getActiveSubroutineModel(boolean includeExternals);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -167,8 +171,9 @@ public interface BlockModelService {
|
||||||
* @param modelName name of registered block model
|
* @param modelName name of registered block model
|
||||||
* @return new model instance or null if program is not open.
|
* @return new model instance or null if program is not open.
|
||||||
* @throws NotFoundException if specified model is not registered
|
* @throws NotFoundException if specified model is not registered
|
||||||
* @depricated use getNewModelByName(String, Program) instead
|
* @deprecated use getNewModelByName(String, Program) instead
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CodeBlockModel getNewModelByName(String modelName)
|
public CodeBlockModel getNewModelByName(String modelName)
|
||||||
throws NotFoundException;
|
throws NotFoundException;
|
||||||
|
|
||||||
|
@ -178,8 +183,9 @@ public interface BlockModelService {
|
||||||
* @param includeExternals externals are included if true
|
* @param includeExternals externals are included if true
|
||||||
* @return new model instance or null if program is not open.
|
* @return new model instance or null if program is not open.
|
||||||
* @throws NotFoundException if specified model is not registered
|
* @throws NotFoundException if specified model is not registered
|
||||||
* @depricated use getNewModelByName(String, Program, boolean) instead
|
* @deprecated use getNewModelByName(String, Program, boolean) instead
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CodeBlockModel getNewModelByName(String modelName, boolean includeExternals)
|
public CodeBlockModel getNewModelByName(String modelName, boolean includeExternals)
|
||||||
throws NotFoundException;
|
throws NotFoundException;
|
||||||
|
|
||||||
|
|
|
@ -65,14 +65,14 @@ public interface ClipboardContentProviderService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return whether the given context is valid for actions on popup menus.
|
* Return whether the given context is valid for actions on popup menus.
|
||||||
* @param contextObject the context of where the popup menu will be
|
* @param context the context of where the popup menu will be positioned.
|
||||||
* positioned
|
|
||||||
*/
|
*/
|
||||||
public boolean isValidContext(ActionContext context);
|
public boolean isValidContext(ActionContext context);
|
||||||
|
|
||||||
|
// TODO needs updating. Assumed copyAddToPopup became copy(TaskMonitor monitor)
|
||||||
/**
|
/**
|
||||||
* Returns true if copy should be enabled; false if it should be disabled. This method can
|
* Returns true if copy should be enabled; false if it should be disabled. This method can
|
||||||
* be used in conjunction with {@link #copyAddToPopup()} in order to add menu items to
|
* be used in conjunction with {@link #copy(TaskMonitor)} in order to add menu items to
|
||||||
* popup menus but to have them enabled when appropriate.
|
* popup menus but to have them enabled when appropriate.
|
||||||
*/
|
*/
|
||||||
public boolean enableCopy();
|
public boolean enableCopy();
|
||||||
|
@ -83,9 +83,10 @@ public interface ClipboardContentProviderService {
|
||||||
*/
|
*/
|
||||||
public boolean enableCopySpecial();
|
public boolean enableCopySpecial();
|
||||||
|
|
||||||
|
// TODO needs updating. Assumed pasteAddToPopup became paste(Transferable pasteData)
|
||||||
/**
|
/**
|
||||||
* Returns true if paste should be enabled; false if it should be disabled. This method can
|
* Returns true if paste should be enabled; false if it should be disabled. This method can
|
||||||
* be used in conjunction with {@link #pasteAddToPopup()} in order to add menu items to
|
* be used in conjunction with {@link #paste(Transferable)} in order to add menu items to
|
||||||
* popup menus but to have them enabled when appropriate.
|
* popup menus but to have them enabled when appropriate.
|
||||||
*/
|
*/
|
||||||
public boolean enablePaste();
|
public boolean enablePaste();
|
||||||
|
|
|
@ -119,7 +119,6 @@ public interface CodeViewerService {
|
||||||
/**
|
/**
|
||||||
* Set a listing panel on the code viewer.
|
* Set a listing panel on the code viewer.
|
||||||
* @param listingPanel the panel to add.
|
* @param listingPanel the panel to add.
|
||||||
* @param listener the listener to be notified if the new listingPanel is to be removed.
|
|
||||||
*/
|
*/
|
||||||
public void setListingPanel(ListingPanel listingPanel);
|
public void setListingPanel(ListingPanel listingPanel);
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ public interface ConsoleService {
|
||||||
* Appends message to the console text area.
|
* Appends message to the console text area.
|
||||||
*
|
*
|
||||||
* For example:
|
* For example:
|
||||||
* "originator> message"
|
* "originator> message"
|
||||||
*
|
*
|
||||||
* @param originator a descriptive name of the message creator
|
* @param originator a descriptive name of the message creator
|
||||||
* @param message the message to appear in the console
|
* @param message the message to appear in the console
|
||||||
|
@ -108,7 +108,7 @@ public interface ConsoleService {
|
||||||
* implementation. If this method cannot be supported,
|
* implementation. If this method cannot be supported,
|
||||||
* please throw {@link UnsupportedOperationException}.
|
* please throw {@link UnsupportedOperationException}.
|
||||||
*
|
*
|
||||||
* @return number of characters >= 0
|
* @return number of characters >= 0
|
||||||
*
|
*
|
||||||
* @throws UnsupportedOperationException
|
* @throws UnsupportedOperationException
|
||||||
*/
|
*/
|
||||||
|
@ -124,10 +124,10 @@ public interface ConsoleService {
|
||||||
* implementation. If this method cannot be supported,
|
* implementation. If this method cannot be supported,
|
||||||
* please throw {@link UnsupportedOperationException}.
|
* please throw {@link UnsupportedOperationException}.
|
||||||
*
|
*
|
||||||
* @param offset the offset into the console representing the desired start of the text >= 0
|
* @param offset the offset into the console representing the desired start of the text >= 0
|
||||||
* @param length the length of the desired string >= 0
|
* @param length the length of the desired string >= 0
|
||||||
*
|
*
|
||||||
* @return the text, in a String of length >= 0
|
* @return the text, in a String of length >= 0
|
||||||
*
|
*
|
||||||
* @throws UnsupportedOperationException
|
* @throws UnsupportedOperationException
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -34,7 +34,7 @@ public interface DataService {
|
||||||
* location is contained within the current program selection, the entire
|
* location is contained within the current program selection, the entire
|
||||||
* selection is examined.
|
* selection is examined.
|
||||||
*
|
*
|
||||||
* @param programActionContext contains program, location, and selection information
|
* @param context the context containing program, location, and selection information
|
||||||
* @return true if create data is allowed, else false.
|
* @return true if create data is allowed, else false.
|
||||||
*/
|
*/
|
||||||
public boolean isCreateDataAllowed(ListingActionContext context);
|
public boolean isCreateDataAllowed(ListingActionContext context);
|
||||||
|
@ -44,8 +44,8 @@ public interface DataService {
|
||||||
*
|
*
|
||||||
* @param dt
|
* @param dt
|
||||||
* dataType to create at the location
|
* dataType to create at the location
|
||||||
* @param location
|
* @param context
|
||||||
* program location to create the data type
|
* the context containing program, location, and selection information
|
||||||
* @param enableConflictHandling
|
* @param enableConflictHandling
|
||||||
* if true, the service may prompt the user to resolve data conflicts
|
* if true, the service may prompt the user to resolve data conflicts
|
||||||
* @return true if the data could be created at the current location
|
* @return true if the data could be created at the current location
|
||||||
|
|
|
@ -53,7 +53,6 @@ public interface HoverService {
|
||||||
* @param programLocation the program location where the mouse is hovering.
|
* @param programLocation the program location where the mouse is hovering.
|
||||||
* @param fieldLocation the precise mouse location within the field viewer
|
* @param fieldLocation the precise mouse location within the field viewer
|
||||||
* @param field the field over which the mouse is hovering
|
* @param field the field over which the mouse is hovering
|
||||||
* @param event the last mouse motion event over the field viewer component (i.e., FieldPanel).
|
|
||||||
* @return The component to be shown for the given location information.
|
* @return The component to be shown for the given location information.
|
||||||
*/
|
*/
|
||||||
public JComponent getHoverComponent(Program program, ProgramLocation programLocation,
|
public JComponent getHoverComponent(Program program, ProgramLocation programLocation,
|
||||||
|
|
|
@ -104,8 +104,8 @@ public interface MarkerService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A group name for highlights. This is intended to be used with
|
* A group name for highlights. This is intended to be used with
|
||||||
* {@link #setMarkerForGroup(String, MarkerSet)} and
|
* {@link #setMarkerForGroup(String, MarkerSet, Program)} and
|
||||||
* {@link #removeMarkerForGroup(String, MarkerSet)}
|
* {@link #removeMarkerForGroup(String, MarkerSet, Program)}
|
||||||
*/
|
*/
|
||||||
public final static String HIGHLIGHT_GROUP = "HIGHLIGHT_GROUP";
|
public final static String HIGHLIGHT_GROUP = "HIGHLIGHT_GROUP";
|
||||||
|
|
||||||
|
@ -233,7 +233,6 @@ public interface MarkerService {
|
||||||
*
|
*
|
||||||
* @deprecated use {@link #removeMarker(MarkerSet,Program)}
|
* @deprecated use {@link #removeMarker(MarkerSet,Program)}
|
||||||
* @param markerManager marker manager to be removed from navigation bars.
|
* @param markerManager marker manager to be removed from navigation bars.
|
||||||
* @param program The program with which the markers are associated.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void removeMarker(MarkerSet markerManager);
|
public void removeMarker(MarkerSet markerManager);
|
||||||
|
@ -241,7 +240,7 @@ public interface MarkerService {
|
||||||
/**
|
/**
|
||||||
* Return the markerset with the given name;
|
* Return the markerset with the given name;
|
||||||
*
|
*
|
||||||
* @param The name of the marker set for which to search
|
* @param name The name of the marker set for which to search
|
||||||
* @param program The program with which the created markers will be associated.
|
* @param program The program with which the created markers will be associated.
|
||||||
* @return the markerset with the given name;
|
* @return the markerset with the given name;
|
||||||
*/
|
*/
|
||||||
|
@ -252,8 +251,7 @@ public interface MarkerService {
|
||||||
* see the <a href="#usage">recommended usage</a> for more information.
|
* see the <a href="#usage">recommended usage</a> for more information.
|
||||||
*
|
*
|
||||||
* @deprecated use {@link #getMarkerSet(String, Program)}
|
* @deprecated use {@link #getMarkerSet(String, Program)}
|
||||||
* @param The name of the marker set for which to search
|
* @param name The name of the marker set for which to search
|
||||||
* @param program The program with which the created markers will be associated.
|
|
||||||
* @return the markerset with the given name;
|
* @return the markerset with the given name;
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
|
@ -266,7 +264,7 @@ public interface MarkerService {
|
||||||
* @param groupName The name to associate the marker set with.
|
* @param groupName The name to associate the marker set with.
|
||||||
* @param markerSet The marker set to add to this service
|
* @param markerSet The marker set to add to this service
|
||||||
* @param program The program with which the markers are associated.
|
* @param program The program with which the markers are associated.
|
||||||
* @see #removeMarkerForGroup(String, MarkerSet)
|
* @see #removeMarkerForGroup(String, MarkerSet, Program)
|
||||||
*/
|
*/
|
||||||
public void setMarkerForGroup(String groupName, MarkerSet markerSet, Program program);
|
public void setMarkerForGroup(String groupName, MarkerSet markerSet, Program program);
|
||||||
|
|
||||||
|
@ -277,7 +275,7 @@ public interface MarkerService {
|
||||||
* @param markerSet The marker set to add to this service
|
* @param markerSet The marker set to add to this service
|
||||||
* @param program The program with which the markers are associated. May be null if the
|
* @param program The program with which the markers are associated. May be null if the
|
||||||
* marker is
|
* marker is
|
||||||
* @see #setMarkerForGroup(String, MarkerSet)
|
* @see #setMarkerForGroup(String, MarkerSet, Program)
|
||||||
*/
|
*/
|
||||||
public void removeMarkerForGroup(String groupName, MarkerSet markerSet, Program program);
|
public void removeMarkerForGroup(String groupName, MarkerSet markerSet, Program program);
|
||||||
|
|
||||||
|
|
|
@ -44,9 +44,8 @@ public class EditFieldNameDialog extends DialogComponentProvider {
|
||||||
/**
|
/**
|
||||||
* Construct a new dialog.
|
* Construct a new dialog.
|
||||||
*
|
*
|
||||||
* @param Frame parent for the dialog, null value is acceptable if no parent
|
* @param title title for the dialog, null value is acceptable if no title
|
||||||
* @param model object that controls the enablement and settings for
|
* @param tool the plugin tool
|
||||||
* labels and does the work of adding or editing labels
|
|
||||||
*/
|
*/
|
||||||
public EditFieldNameDialog(String title, PluginTool tool) {
|
public EditFieldNameDialog(String title, PluginTool tool) {
|
||||||
super(title, true, true, true, false);
|
super(title, true, true, true, false);
|
||||||
|
|
|
@ -77,7 +77,6 @@ public class MemoryBlockUtils {
|
||||||
* @param isOverlay if true, the block will be created in a new overlay space for that block
|
* @param isOverlay if true, the block will be created in a new overlay space for that block
|
||||||
* @param name the name of the new block.
|
* @param name the name of the new block.
|
||||||
* @param start the starting address of the new block.
|
* @param start the starting address of the new block.
|
||||||
* @param is source of the data used to fill the block or null for zero initialization.
|
|
||||||
* @param length the length of the new block
|
* @param length the length of the new block
|
||||||
* @param comment the comment text to associate with the new block.
|
* @param comment the comment text to associate with the new block.
|
||||||
* @param source the source of the block (This field is not well defined - currently another comment)
|
* @param source the source of the block (This field is not well defined - currently another comment)
|
||||||
|
|
|
@ -66,10 +66,7 @@ public class ToolTipUtils {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return dataType details as HTML.
|
* Return dataType details as HTML.
|
||||||
* @param dataType
|
* @param dataType the dataType to be represented
|
||||||
* @param htmlFragmentOnly if true only a fragment of HTML, suitable for combining
|
|
||||||
* with other fragments will be Returned. If false, the fragment will be enclosed
|
|
||||||
* within an HTML tag element.
|
|
||||||
* @return dataType details formatted as HTML
|
* @return dataType details formatted as HTML
|
||||||
*/
|
*/
|
||||||
public static HTMLDataTypeRepresentation getHTMLRepresentation(DataType dataType) {
|
public static HTMLDataTypeRepresentation getHTMLRepresentation(DataType dataType) {
|
||||||
|
|
|
@ -29,7 +29,8 @@ public interface SelectLanguagePanelListener {
|
||||||
/**
|
/**
|
||||||
* This method is invoked every time a languauge is selected.
|
* This method is invoked every time a languauge is selected.
|
||||||
* NOTE: the language could be null.
|
* NOTE: the language could be null.
|
||||||
* @param language the selected language.
|
* @param langID the selected language id.
|
||||||
|
* @param compilerSpecID the selected compiler spec id.
|
||||||
*/
|
*/
|
||||||
public void selectIDValidation(LanguageID langID, CompilerSpecID compilerSpecID);
|
public void selectIDValidation(LanguageID langID, CompilerSpecID compilerSpecID);
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,10 +92,9 @@ public class SetEquateDialog extends DialogComponentProvider {
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param parent the parent frame to host the dialog.
|
* @param tool the EquatePlugin that launched this dialog(used to validate input)
|
||||||
* @param plugin the EquatePlugin that launched this dialog(used to validate input)
|
* @param program the program the equate is located in.
|
||||||
* @param labelText a text string indicating the numeric value being equated.
|
* @param value the equate value to set.
|
||||||
* @param equates a list of equates that already exist for this numeric value.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public SetEquateDialog(PluginTool tool, Program program, Scalar value) {
|
public SetEquateDialog(PluginTool tool, Program program, Scalar value) {
|
||||||
|
|
|
@ -69,7 +69,6 @@ public interface ByteProvider extends Closeable {
|
||||||
* Returns true if the specified index is valid.
|
* Returns true if the specified index is valid.
|
||||||
* @param index the index in the byte provider
|
* @param index the index in the byte provider
|
||||||
* @return returns true if the specified index is valid
|
* @return returns true if the specified index is valid
|
||||||
* @exception IOException if an I/O error occurs
|
|
||||||
*/
|
*/
|
||||||
public boolean isValidIndex(long index);
|
public boolean isValidIndex(long index);
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class GhidraRandomAccessFile {
|
||||||
* but adds buffering to limit the amount.
|
* but adds buffering to limit the amount.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* <a name="mode"><p> The <tt>mode</tt> argument specifies the access mode
|
* <a name="mode"></a><p> The <tt>mode</tt> argument specifies the access mode
|
||||||
* in which the file is to be opened. The permitted values and their
|
* in which the file is to be opened. The permitted values and their
|
||||||
* meanings are:
|
* meanings are:
|
||||||
*
|
*
|
||||||
|
@ -198,13 +198,13 @@ public class GhidraRandomAccessFile {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads up to <code>len</code> bytes of data from this file into an
|
* Reads up to <code>length</code> bytes of data from this file into an
|
||||||
* array of bytes. This method blocks until at least one byte of input
|
* array of bytes. This method blocks until at least one byte of input
|
||||||
* is available.
|
* is available.
|
||||||
*
|
*
|
||||||
* @param b the buffer into which the data is read.
|
* @param b the buffer into which the data is read.
|
||||||
* @param off the start offset of the data.
|
* @param offset the start offset of the data.
|
||||||
* @param len the maximum number of bytes read.
|
* @param length the maximum number of bytes read.
|
||||||
* @return the total number of bytes read into the buffer, or
|
* @return the total number of bytes read into the buffer, or
|
||||||
* <code>-1</code> if there is no more data because the end of
|
* <code>-1</code> if there is no more data because the end of
|
||||||
* the file has been reached.
|
* the file has been reached.
|
||||||
|
|
|
@ -60,7 +60,7 @@ public class RandomAccessByteProvider implements ByteProvider {
|
||||||
/**
|
/**
|
||||||
* Constructs a byte provider using the specified file and permissions string
|
* Constructs a byte provider using the specified file and permissions string
|
||||||
* @param file the file to open for random access
|
* @param file the file to open for random access
|
||||||
* @param string indicating permissions used for open
|
* @param permissions indicating permissions used for open
|
||||||
* @throws FileNotFoundException if the file does not exist
|
* @throws FileNotFoundException if the file does not exist
|
||||||
*/
|
*/
|
||||||
public RandomAccessByteProvider(File file, String permissions) throws IOException {
|
public RandomAccessByteProvider(File file, String permissions) throws IOException {
|
||||||
|
|
|
@ -35,25 +35,19 @@ public class RandomAccessMutableByteProvider extends RandomAccessByteProvider im
|
||||||
/**
|
/**
|
||||||
* Constructs a byte provider using the specified file and permissions string
|
* Constructs a byte provider using the specified file and permissions string
|
||||||
* @param file the file to open for random access
|
* @param file the file to open for random access
|
||||||
* @param string indicating permissions used for open
|
* @param permissions indicating permissions used for open
|
||||||
* @throws FileNotFoundException if the file does not exist
|
* @throws FileNotFoundException if the file does not exist
|
||||||
*/
|
*/
|
||||||
public RandomAccessMutableByteProvider(File file, String permissions) throws IOException {
|
public RandomAccessMutableByteProvider(File file, String permissions) throws IOException {
|
||||||
super(file, permissions);
|
super(file, permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ghidra.app.util.bin.ByteProvider#writeByte(long, byte)
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public void writeByte(long index, byte value) throws IOException {
|
public void writeByte(long index, byte value) throws IOException {
|
||||||
randomAccessFile.seek(index);
|
randomAccessFile.seek(index);
|
||||||
randomAccessFile.write(value);
|
randomAccessFile.write(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see ghidra.app.util.bin.ByteProvider#writeBytes(long, byte[])
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public void writeBytes(long index, byte[] values) throws IOException {
|
public void writeBytes(long index, byte[] values) throws IOException {
|
||||||
randomAccessFile.seek(index);
|
randomAccessFile.seek(index);
|
||||||
|
|
|
@ -145,7 +145,7 @@ public class CoffSectionHeader implements StructConverter {
|
||||||
/**
|
/**
|
||||||
* Returns true if this section is byte oriented and aligned and should assume
|
* Returns true if this section is byte oriented and aligned and should assume
|
||||||
* an addressable unit size of 1.
|
* an addressable unit size of 1.
|
||||||
* @returns true if byte aligned, false if word aligned
|
* @return true if byte aligned, false if word aligned
|
||||||
*/
|
*/
|
||||||
public boolean isExplicitlyByteAligned() {
|
public boolean isExplicitlyByteAligned() {
|
||||||
return (s_reserved & CoffSectionHeaderReserved.EXPLICITLY_BYTE_ALIGNED) != 0;
|
return (s_reserved & CoffSectionHeaderReserved.EXPLICITLY_BYTE_ALIGNED) != 0;
|
||||||
|
|
|
@ -113,7 +113,7 @@ public class DIEAggregate {
|
||||||
* which is skipped.
|
* which is skipped.
|
||||||
* <p>
|
* <p>
|
||||||
* Used when a DIEA is composed of a head DIE with a different TAG type than the rest of
|
* Used when a DIEA is composed of a head DIE with a different TAG type than the rest of
|
||||||
* the DIEs. (ie. a dw_tag_call_site -> dw_tag_sub DIEA)
|
* the DIEs. (ie. a dw_tag_call_site -> dw_tag_sub DIEA)
|
||||||
*
|
*
|
||||||
* @param source
|
* @param source
|
||||||
* @return
|
* @return
|
||||||
|
@ -794,11 +794,7 @@ public class DIEAggregate {
|
||||||
* Parses a range list from the debug_ranges section.
|
* Parses a range list from the debug_ranges section.
|
||||||
* See DWARF4 Section 2.17.3 (Non-Contiguous Address Ranges).
|
* See DWARF4 Section 2.17.3 (Non-Contiguous Address Ranges).
|
||||||
* <p>
|
* <p>
|
||||||
* This method is similar to {@link DWARFLocation#parseLocationList(long, DebugInfoEntry)}
|
|
||||||
* and may have the same gotchas that need to be ported over.
|
|
||||||
* <p>
|
|
||||||
* @param attribute attribute ie. {@link DWARFAttribute#DW_AT_ranges}
|
* @param attribute attribute ie. {@link DWARFAttribute#DW_AT_ranges}
|
||||||
* @param debug_ranges debug_ranges section byte provider
|
|
||||||
* @return list of ranges
|
* @return list of ranges
|
||||||
* @throws IOException if an I/O error occurs
|
* @throws IOException if an I/O error occurs
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -111,15 +111,15 @@ public class DWARFCompilationUnit {
|
||||||
* leaves the input stream at the next compilation unit to read), otherwise throws
|
* leaves the input stream at the next compilation unit to read), otherwise throws
|
||||||
* an IOException if there was an unrecoverable error.
|
* an IOException if there was an unrecoverable error.
|
||||||
*
|
*
|
||||||
* @param debugInfoBR
|
* @param dwarfProgram the dwarf program.
|
||||||
* @param debugAbbrBR
|
* @param debugInfoBR the debug info binary reader.
|
||||||
* @param cuNumber
|
* @param debugAbbrBR the debug abbreviation binary reader
|
||||||
* @param helper
|
* @param cuNumber the compilation unit number
|
||||||
* @param monitor
|
* @param monitor the current task monitor
|
||||||
* @return
|
* @return the read compilation unit.
|
||||||
* @throws DWARFException
|
* @throws DWARFException if an invalid or unsupported DWARF version is read.
|
||||||
* @throws IOException
|
* @throws IOException if the length of the compilation unit is invalid.
|
||||||
* @throws CancelledException
|
* @throws CancelledException if the task has been canceled.
|
||||||
*/
|
*/
|
||||||
public static DWARFCompilationUnit readCompilationUnit(DWARFProgram dwarfProgram,
|
public static DWARFCompilationUnit readCompilationUnit(DWARFProgram dwarfProgram,
|
||||||
BinaryReader debugInfoBR, BinaryReader debugAbbrBR, int cuNumber, TaskMonitor monitor)
|
BinaryReader debugInfoBR, BinaryReader debugAbbrBR, int cuNumber, TaskMonitor monitor)
|
||||||
|
@ -198,18 +198,6 @@ public class DWARFCompilationUnit {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This ctor is public only for junit tests. Do not use directly.
|
* This ctor is public only for junit tests. Do not use directly.
|
||||||
*
|
|
||||||
* @param dwarfProgram
|
|
||||||
* @param startOffset
|
|
||||||
* @param endOffset
|
|
||||||
* @param length
|
|
||||||
* @param format
|
|
||||||
* @param version
|
|
||||||
* @param abbreviationOffset
|
|
||||||
* @param pointerSize
|
|
||||||
* @param compUnitNumber
|
|
||||||
* @param firstDIEOffset
|
|
||||||
* @param codeToAbbreviationMap
|
|
||||||
*/
|
*/
|
||||||
public DWARFCompilationUnit(DWARFProgram dwarfProgram, long startOffset, long endOffset,
|
public DWARFCompilationUnit(DWARFProgram dwarfProgram, long startOffset, long endOffset,
|
||||||
long length, int format, short version, long abbreviationOffset, byte pointerSize,
|
long length, int format, short version, long abbreviationOffset, byte pointerSize,
|
||||||
|
|
|
@ -171,7 +171,7 @@ public class DWARFUtil {
|
||||||
* A lightweight attempt to get nesting (ie. namespaces and such) information
|
* A lightweight attempt to get nesting (ie. namespaces and such) information
|
||||||
* from gnu mangled name strings.
|
* from gnu mangled name strings.
|
||||||
* <p>
|
* <p>
|
||||||
* For example, "_ZN19class1_inline_funcs3fooEv" ->
|
* For example, "_ZN19class1_inline_funcs3fooEv" ->
|
||||||
* [19 chars]'class1_inline_funcs', [3 chars]'foo'
|
* [19 chars]'class1_inline_funcs', [3 chars]'foo'
|
||||||
* <p>
|
* <p>
|
||||||
* @param s
|
* @param s
|
||||||
|
@ -257,8 +257,8 @@ public class DWARFUtil {
|
||||||
/**
|
/**
|
||||||
* Creates a name for anon types based on their position in their parent's childList.
|
* Creates a name for anon types based on their position in their parent's childList.
|
||||||
* <p>
|
* <p>
|
||||||
* @param die
|
* @param diea the die aggregate.
|
||||||
* @return
|
* @return the anonymous name of the die aggregate.
|
||||||
*/
|
*/
|
||||||
public static String getAnonNameForMeFromParentContext(DIEAggregate diea) {
|
public static String getAnonNameForMeFromParentContext(DIEAggregate diea) {
|
||||||
DebugInfoEntry parent = diea.getHeadFragment().getParent();
|
DebugInfoEntry parent = diea.getHeadFragment().getParent();
|
||||||
|
@ -286,9 +286,9 @@ public class DWARFUtil {
|
||||||
* <p>
|
* <p>
|
||||||
* Example: "anon_struct_for_field1_field2"
|
* Example: "anon_struct_for_field1_field2"
|
||||||
* <p>
|
* <p>
|
||||||
* Falls back to {@link #getAnonNameForMeFromParentContext(DebugInfoEntry)} if no siblings found.
|
* Falls back to {@link #getAnonNameForMeFromParentContext(DIEAggregate)} if no siblings found.
|
||||||
* @param die
|
* @param diea the die aggregate.
|
||||||
* @return
|
* @return the anonymous name of the die aggregate.
|
||||||
*/
|
*/
|
||||||
public static String getAnonNameForMeFromParentContext2(DIEAggregate diea) {
|
public static String getAnonNameForMeFromParentContext2(DIEAggregate diea) {
|
||||||
DebugInfoEntry parent = diea.getHeadFragment().getParent();
|
DebugInfoEntry parent = diea.getHeadFragment().getParent();
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class DWARFDataTypeImporter {
|
||||||
* This identity mapping doesn't always work because datatype instances are often clone()'d
|
* This identity mapping doesn't always work because datatype instances are often clone()'d
|
||||||
* which will break this mapping.
|
* which will break this mapping.
|
||||||
* <p>
|
* <p>
|
||||||
* Places where we know clone()ing happens the mapping is
|
* Places where we know cloning happens the mapping is
|
||||||
* {@link #updateMapping(DataType, DataType) updated}.
|
* {@link #updateMapping(DataType, DataType) updated}.
|
||||||
*/
|
*/
|
||||||
private IdentityHashMap<DataType, DWARFDataType> dataTypeInstanceToDDTMap =
|
private IdentityHashMap<DataType, DWARFDataType> dataTypeInstanceToDDTMap =
|
||||||
|
@ -371,7 +371,7 @@ public class DWARFDataTypeImporter {
|
||||||
* If an existing Enum with the same name is found in the DTM, and it doesn't have
|
* If an existing Enum with the same name is found in the DTM, and it doesn't have
|
||||||
* any conflicting enum values, merge this enum into the existing enum.
|
* any conflicting enum values, merge this enum into the existing enum.
|
||||||
* <p>
|
* <p>
|
||||||
* This method takes liberties with the normal DWARF->Ghidra Impl DataType->Ghidra DB DataType
|
* This method takes liberties with the normal{@literal DWARF->Ghidra Impl DataType->Ghidra DB DataType}
|
||||||
* workflow to be able to merge values into previous db enum datatypes.
|
* workflow to be able to merge values into previous db enum datatypes.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
|
@ -1101,14 +1101,13 @@ public class DWARFDataTypeImporter {
|
||||||
* <p>
|
* <p>
|
||||||
* There is some hacky logic here to handle situations where a pointer refers back to
|
* There is some hacky logic here to handle situations where a pointer refers back to
|
||||||
* itself via a struct:
|
* itself via a struct:
|
||||||
* <pre>
|
* <pre>{@literal
|
||||||
* PTRa
|
|
||||||
* +-> STRUCT1 (creates empty struct)
|
* +-> STRUCT1 (creates empty struct)
|
||||||
* +-> Field1: PTRa
|
* +-> Field1: PTRa
|
||||||
* +-> STRUCT1 (empty struct returned from cache)
|
* +-> STRUCT1 (empty struct returned from cache)
|
||||||
* ( ptr instance created pointing to empty struct)
|
* ( ptr instance created pointing to empty struct)
|
||||||
* ( struct fields populated )
|
* ( struct fields populated )
|
||||||
* </pre>
|
* }</pre>
|
||||||
* The struct creation code will stop the recursive loop after the second time
|
* The struct creation code will stop the recursive loop after the second time
|
||||||
* makeDataTypeForPointer() is hit because there will be an empty struct in the cache.
|
* makeDataTypeForPointer() is hit because there will be an empty struct in the cache.
|
||||||
*
|
*
|
||||||
|
|
|
@ -127,7 +127,7 @@ public class DWARFDataTypeManager {
|
||||||
* <p>
|
* <p>
|
||||||
* A {@link DataTypeGraphComparator} is used to walk the 'impl' DataType object graph
|
* A {@link DataTypeGraphComparator} is used to walk the 'impl' DataType object graph
|
||||||
* in lock-step with the resultant 'db' DataType object graph, and the mapping between
|
* in lock-step with the resultant 'db' DataType object graph, and the mapping between
|
||||||
* the 'impl' object and its creator DIEA (held in {@link #currentImplDataTypeToDIE})
|
* the 'impl' object and its creator DIEA (held in {@link DWARFDataType})
|
||||||
* is used to create a mapping to the resultant 'db' DataType's path.
|
* is used to create a mapping to the resultant 'db' DataType's path.
|
||||||
*
|
*
|
||||||
* @param diea DWARF {@link DIEAggregate} with datatype information that needs to be converted
|
* @param diea DWARF {@link DIEAggregate} with datatype information that needs to be converted
|
||||||
|
@ -225,14 +225,12 @@ public class DWARFDataTypeManager {
|
||||||
/**
|
/**
|
||||||
* Returns a Ghidra {@link DataType} corresponding to the specified {@link DIEAggregate},
|
* Returns a Ghidra {@link DataType} corresponding to the specified {@link DIEAggregate},
|
||||||
* or the specified defaultValue if the DIEA param is null or does not map to an already
|
* or the specified defaultValue if the DIEA param is null or does not map to an already
|
||||||
* defined datatype (registered with {@link #addType(long, DataType, DWARFImportSummary)}).
|
* defined datatype (registered with {@link #addDataType(long, DataType, DWARFSourceInfo)}).
|
||||||
* <p>
|
* <p>
|
||||||
* @param diea {@link DIEAggregate} that defines a data type
|
* @param diea {@link DIEAggregate} that defines a data type
|
||||||
* @param defaultValue Ghidra {@link DataType} to return if the specified DIEA is null
|
* @param defaultValue Ghidra {@link DataType} to return if the specified DIEA is null
|
||||||
* or not already defined.
|
* or not already defined.
|
||||||
* @return Ghidra {@link DataType}
|
* @return Ghidra {@link DataType}
|
||||||
* @throws DWARFExpressionException
|
|
||||||
* @throws IOException
|
|
||||||
*/
|
*/
|
||||||
public DataType getDataType(DIEAggregate diea, DataType defaultValue) {
|
public DataType getDataType(DIEAggregate diea, DataType defaultValue) {
|
||||||
if (diea == null) {
|
if (diea == null) {
|
||||||
|
@ -259,7 +257,7 @@ public class DWARFDataTypeManager {
|
||||||
/**
|
/**
|
||||||
* Returns a Ghidra {@link DataType} corresponding to the specified DIE (based on its
|
* Returns a Ghidra {@link DataType} corresponding to the specified DIE (based on its
|
||||||
* offset), or the specified defaultValue if the DIE does not map to a defined
|
* offset), or the specified defaultValue if the DIE does not map to a defined
|
||||||
* datatype (registered with {@link #addType(long, DataType, DWARFImportSummary)}).
|
* datatype (registered with {@link #addDataType(long, DataType, DWARFSourceInfo)}).
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
* @param dieOffset offset of a DIE record that defines a data type
|
* @param dieOffset offset of a DIE record that defines a data type
|
||||||
|
@ -599,7 +597,7 @@ public class DWARFDataTypeManager {
|
||||||
* Does the actual import work. Updates the {@link #importSummary summary} object
|
* Does the actual import work. Updates the {@link #importSummary summary} object
|
||||||
* with information about the types imported and errors encountered.
|
* with information about the types imported and errors encountered.
|
||||||
*
|
*
|
||||||
* @param TaskMonitor monitor to watch for cancel
|
* @param monitor to watch for cancel
|
||||||
* @throws IOException if errors are encountered reading data
|
* @throws IOException if errors are encountered reading data
|
||||||
* @throws DWARFException if errors are encountered processing
|
* @throws DWARFException if errors are encountered processing
|
||||||
* @throws CancelledException if the {@link TaskMonitor} is canceled by the user.
|
* @throws CancelledException if the {@link TaskMonitor} is canceled by the user.
|
||||||
|
@ -756,7 +754,7 @@ public class DWARFDataTypeManager {
|
||||||
* but the impls can't be shared without excessive over-engineering.
|
* but the impls can't be shared without excessive over-engineering.
|
||||||
* <p>
|
* <p>
|
||||||
* This impl uses DataType's that have already been resolved and committed to the DTM, and
|
* This impl uses DataType's that have already been resolved and committed to the DTM, and
|
||||||
* a cache mapping entry of the DWARF die -> DataType has been registered via {@link #addDataType(long, DataType, DWARFSourceInfo)}.
|
* a cache mapping entry of the DWARF die -> DataType has been registered via {@link #addDataType(long, DataType, DWARFSourceInfo)}.
|
||||||
* <p>
|
* <p>
|
||||||
* This approach is necessary because of speed issues that arise if the referred datatypes
|
* This approach is necessary because of speed issues that arise if the referred datatypes
|
||||||
* are created from scratch from the DWARF information and then have to go through a
|
* are created from scratch from the DWARF information and then have to go through a
|
||||||
|
|
|
@ -175,7 +175,7 @@ public class DWARFParser {
|
||||||
/**
|
/**
|
||||||
* Imports DWARF information according to the {@link DWARFImportOptions} set.
|
* Imports DWARF information according to the {@link DWARFImportOptions} set.
|
||||||
* <p>
|
* <p>
|
||||||
* {@link #checkPreconditions()} must be called before this.
|
* {@link DWARFProgram#checkPreconditions(TaskMonitor)} must be called before this.
|
||||||
* <p>
|
* <p>
|
||||||
* @return
|
* @return
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
|
|
|
@ -657,7 +657,8 @@ public class DWARFProgram implements Closeable {
|
||||||
/**
|
/**
|
||||||
* Returns the count of the DIE records in this compilation unit.
|
* Returns the count of the DIE records in this compilation unit.
|
||||||
* <p>
|
* <p>
|
||||||
* Only valid if called after {@link #readDIEs()} and before {@link #clearEntries()}.
|
* Only valid if called after {@link #checkPreconditions(TaskMonitor)}
|
||||||
|
* and before {@link #clearDIEIndexes()}.
|
||||||
* @return number of DIE records in the compunit.
|
* @return number of DIE records in the compunit.
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
* @throws CancelledException
|
* @throws CancelledException
|
||||||
|
@ -667,7 +668,8 @@ public class DWARFProgram implements Closeable {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Releases the memory used by the DIE entries read by {@link #readDIEs()}.
|
* Releases the memory used by the DIE entries read when invoking
|
||||||
|
* {@link #checkPreconditions(TaskMonitor)}.
|
||||||
*/
|
*/
|
||||||
public void clearDIEIndexes() {
|
public void clearDIEIndexes() {
|
||||||
offsetMap.clear();
|
offsetMap.clear();
|
||||||
|
|
|
@ -62,9 +62,9 @@ public interface ElfConstants {
|
||||||
|
|
||||||
/**Invalid class*/
|
/**Invalid class*/
|
||||||
public static final byte ELF_CLASS_NONE = 0;
|
public static final byte ELF_CLASS_NONE = 0;
|
||||||
/**32-bit objects*/
|
/**{@code 32-bit objects}*/
|
||||||
public static final byte ELF_CLASS_32 = 1;
|
public static final byte ELF_CLASS_32 = 1;
|
||||||
/**64-bit objects*/
|
/**{@code 64-bit objects}*/
|
||||||
public static final byte ELF_CLASS_64 = 2;
|
public static final byte ELF_CLASS_64 = 2;
|
||||||
/**?*/
|
/**?*/
|
||||||
public static final byte ELF_CLASS_NUM = 3;
|
public static final byte ELF_CLASS_NUM = 3;
|
||||||
|
@ -107,7 +107,7 @@ public interface ElfConstants {
|
||||||
public static final byte ELFOSABI_IRIX = 8;
|
public static final byte ELFOSABI_IRIX = 8;
|
||||||
/**free bsd*/
|
/**free bsd*/
|
||||||
public static final byte ELFOSABI_FREEBSD = 9;
|
public static final byte ELFOSABI_FREEBSD = 9;
|
||||||
/**compaq tru64 unix*/
|
/**{@code compaq tru64 unix}*/
|
||||||
public static final byte ELFOSABI_TRUE64 = 10;
|
public static final byte ELFOSABI_TRUE64 = 10;
|
||||||
/**novell modesto*/
|
/**novell modesto*/
|
||||||
public static final byte ELFOSABI_MODESTO = 11;
|
public static final byte ELFOSABI_MODESTO = 11;
|
||||||
|
@ -121,9 +121,9 @@ public interface ElfConstants {
|
||||||
public static final byte ELFOSABI_AROS = 15;
|
public static final byte ELFOSABI_AROS = 15;
|
||||||
/** FenixOS */
|
/** FenixOS */
|
||||||
public static final byte ELFOSABI_FENIXOS = 16;
|
public static final byte ELFOSABI_FENIXOS = 16;
|
||||||
/** Bare-metal TMS320C6000 */
|
/**{@code Bare-metal TMS320C6000}*/
|
||||||
public static final byte ELFOSABI_C6000_ELFABI = 64;
|
public static final byte ELFOSABI_C6000_ELFABI = 64;
|
||||||
/** Linux TMS320C6000 */
|
/**{@code Linux TMS320C6000}*/
|
||||||
public static final byte ELFOSABI_C6000_LINUX = 65;
|
public static final byte ELFOSABI_C6000_LINUX = 65;
|
||||||
/** ARM */
|
/** ARM */
|
||||||
public static final byte ELFOSABI_ARM = 97;
|
public static final byte ELFOSABI_ARM = 97;
|
||||||
|
@ -157,47 +157,47 @@ public interface ElfConstants {
|
||||||
|
|
||||||
/**No machine*/
|
/**No machine*/
|
||||||
public static final short EM_NONE = 0;
|
public static final short EM_NONE = 0;
|
||||||
/**AT&T WE 32100*/
|
/**{@code AT&T WE 32100}*/
|
||||||
public static final short EM_M32 = 1;
|
public static final short EM_M32 = 1;
|
||||||
/**SUN SPARC */
|
/**SUN SPARC */
|
||||||
public static final short EM_SPARC = 2;
|
public static final short EM_SPARC = 2;
|
||||||
/**Intel 80386 */
|
/**{@code Intel 80386}*/
|
||||||
public static final short EM_386 = 3;
|
public static final short EM_386 = 3;
|
||||||
/**Motorola m68k family */
|
/**{@code Motorola m68k family}*/
|
||||||
public static final short EM_68K = 4;
|
public static final short EM_68K = 4;
|
||||||
/**Motorola m88k family */
|
/**{@code Motorola m88k family}*/
|
||||||
public static final short EM_88K = 5;
|
public static final short EM_88K = 5;
|
||||||
/**Intel 486 (deprecated)*/
|
/**{@code Intel 486 (deprecated)}*/
|
||||||
public static final short EM_486 = 6;
|
public static final short EM_486 = 6;
|
||||||
/**Intel 80860 */
|
/**{@code Intel 80860}*/
|
||||||
public static final short EM_860 = 7;
|
public static final short EM_860 = 7;
|
||||||
/**MIPS R3000 big-endian */
|
/**{@code MIPS R3000 big-endian}*/
|
||||||
public static final short EM_MIPS = 8;
|
public static final short EM_MIPS = 8;
|
||||||
/**IBM System/370 */
|
/**{@code IBM System/370}*/
|
||||||
public static final short EM_S370 = 9;
|
public static final short EM_S370 = 9;
|
||||||
/**MIPS R3000 little-endian */
|
/**{@code MIPS R3000 little-endian}*/
|
||||||
public static final short EM_MIPS_RS3_LE = 10;
|
public static final short EM_MIPS_RS3_LE = 10;
|
||||||
// 11 - 14 reserved
|
// 11 - 14 reserved
|
||||||
/**HPPA */
|
/**HPPA */
|
||||||
public static final short EM_PARISC = 15;
|
public static final short EM_PARISC = 15;
|
||||||
/**Fujitsu VPP500 */
|
/**{@code Fujitsu VPP500}*/
|
||||||
public static final short EM_VPP500 = 17;
|
public static final short EM_VPP500 = 17;
|
||||||
/**Sun's "v8plus" */
|
/**{@code Sun's "v8plus"}*/
|
||||||
public static final short EM_SPARC32PLUS = 18;
|
public static final short EM_SPARC32PLUS = 18;
|
||||||
/**Intel 80960 */
|
/**{@code Intel 80960}*/
|
||||||
public static final short EM_960 = 19;
|
public static final short EM_960 = 19;
|
||||||
/**PowerPC */
|
/**PowerPC */
|
||||||
public static final short EM_PPC = 20;
|
public static final short EM_PPC = 20;
|
||||||
/**PowerPC 64-bit */
|
/**{@code PowerPC 64-bit}*/
|
||||||
public static final short EM_PPC64 = 21;
|
public static final short EM_PPC64 = 21;
|
||||||
/**IBM S390 */
|
/**{@code IBM S390}*/
|
||||||
public static final short EM_S390 = 22;
|
public static final short EM_S390 = 22;
|
||||||
//23 - 35 reserved
|
//23 - 35 reserved
|
||||||
/**NEC V800 series */
|
/**{@code NEC V800 series}*/
|
||||||
public static final short EM_V800 = 36;
|
public static final short EM_V800 = 36;
|
||||||
/**Fujitsu FR20 */
|
/**{@code Fujitsu FR20}*/
|
||||||
public static final short EM_FR20 = 37;
|
public static final short EM_FR20 = 37;
|
||||||
/**TRW RH-32 */
|
/**{@code TRW RH-32}*/
|
||||||
public static final short EM_RH32 = 38;
|
public static final short EM_RH32 = 38;
|
||||||
/**Motorola RCE */
|
/**Motorola RCE */
|
||||||
public static final short EM_RCE = 39;
|
public static final short EM_RCE = 39;
|
||||||
|
@ -207,19 +207,19 @@ public interface ElfConstants {
|
||||||
public static final short EM_FAKE_ALPHA = 41;
|
public static final short EM_FAKE_ALPHA = 41;
|
||||||
/**Hitachi SH */
|
/**Hitachi SH */
|
||||||
public static final short EM_SH = 42;
|
public static final short EM_SH = 42;
|
||||||
/**SPARC v9 64-bit */
|
/**{@code SPARC v9 64-bit}*/
|
||||||
public static final short EM_SPARCV9 = 43;
|
public static final short EM_SPARCV9 = 43;
|
||||||
/**Siemens Tricore */
|
/**Siemens Tricore */
|
||||||
public static final short EM_TRICORE = 44;
|
public static final short EM_TRICORE = 44;
|
||||||
/**Argonaut RISC Core */
|
/**Argonaut RISC Core */
|
||||||
public static final short EM_ARC = 45;
|
public static final short EM_ARC = 45;
|
||||||
/**Hitachi H8/300 */
|
/**{@code Hitachi H8/300}*/
|
||||||
public static final short EM_H8_300 = 46;
|
public static final short EM_H8_300 = 46;
|
||||||
/**Hitachi H8/300H */
|
/**{@code Hitachi H8/300H}*/
|
||||||
public static final short EM_H8_300H = 47;
|
public static final short EM_H8_300H = 47;
|
||||||
/**Hitachi H8S */
|
/**{@code Hitachi H8S}*/
|
||||||
public static final short EM_H8S = 48;
|
public static final short EM_H8S = 48;
|
||||||
/**Hitachi H8/500 */
|
/**{@code Hitachi H8/500}*/
|
||||||
public static final short EM_H8_500 = 49;
|
public static final short EM_H8_500 = 49;
|
||||||
/** Intel Merced */
|
/** Intel Merced */
|
||||||
public static final short EM_IA_64 = 50;
|
public static final short EM_IA_64 = 50;
|
||||||
|
@ -227,7 +227,7 @@ public interface ElfConstants {
|
||||||
public static final short EM_MIPS_X = 51;
|
public static final short EM_MIPS_X = 51;
|
||||||
/** Motorola Coldfire */
|
/** Motorola Coldfire */
|
||||||
public static final short EM_COLDFIRE = 52;
|
public static final short EM_COLDFIRE = 52;
|
||||||
/** Motorola M68HC12 */
|
/**{@code Motorola M68HC12}*/
|
||||||
public static final short EM_68HC12 = 53;
|
public static final short EM_68HC12 = 53;
|
||||||
/** Fujitsu MMA Multimedia Accelerator*/
|
/** Fujitsu MMA Multimedia Accelerator*/
|
||||||
public static final short EM_MMA = 54;
|
public static final short EM_MMA = 54;
|
||||||
|
@ -235,77 +235,77 @@ public interface ElfConstants {
|
||||||
public static final short EM_PCP = 55;
|
public static final short EM_PCP = 55;
|
||||||
/** Sony nCPU embedded RISC */
|
/** Sony nCPU embedded RISC */
|
||||||
public static final short EM_NCPU = 56;
|
public static final short EM_NCPU = 56;
|
||||||
/** Denso NDR1 microprocessor */
|
/**{@code Denso NDR1 microprocessor}*/
|
||||||
public static final short EM_NDR1 = 57;
|
public static final short EM_NDR1 = 57;
|
||||||
/** Motorola Start*Core processor */
|
/** Motorola Start*Core processor */
|
||||||
public static final short EM_STARCORE = 58;
|
public static final short EM_STARCORE = 58;
|
||||||
/** Toyota ME16 processor */
|
/**{@code Toyota ME16 processor}*/
|
||||||
public static final short EM_ME16 = 59;
|
public static final short EM_ME16 = 59;
|
||||||
/** STMicroelectronic ST100 processor */
|
/**{@code STMicroelectronic ST100 processor}*/
|
||||||
public static final short EM_ST100 = 60;
|
public static final short EM_ST100 = 60;
|
||||||
/** Advanced Logic Corp. Tinyj emb.fam*/
|
/** Advanced Logic Corp. Tinyj emb.fam*/
|
||||||
public static final short EM_TINYJ = 61;
|
public static final short EM_TINYJ = 61;
|
||||||
/** AMD x86-64 architecture */
|
/**{@code AMD x86-64 architecture}*/
|
||||||
public static final short EM_X86_64 = 62;
|
public static final short EM_X86_64 = 62;
|
||||||
/** Sony DSP Processor */
|
/** Sony DSP Processor */
|
||||||
public static final short EM_PDSP = 63;
|
public static final short EM_PDSP = 63;
|
||||||
// 64 reserved
|
// 64 reserved
|
||||||
// 65 reserved
|
// 65 reserved
|
||||||
/** Siemens FX66 microcontroller */
|
/**{@code Siemens FX66 microcontroller}*/
|
||||||
public static final short EM_FX66 = 66;
|
public static final short EM_FX66 = 66;
|
||||||
/** STMicroelectronics ST9+ 8/16 mc */
|
/**{@code STMicroelectronics ST9+ 8/16 mc}*/
|
||||||
public static final short EM_ST9PLUS = 67;
|
public static final short EM_ST9PLUS = 67;
|
||||||
/** STmicroelectronics ST7 8 bit mc */
|
/**{@code STmicroelectronics ST7 8 bit mc}*/
|
||||||
public static final short EM_ST7 = 68;
|
public static final short EM_ST7 = 68;
|
||||||
/** Motorola MC68HC16 microcontroller */
|
/**{@code Motorola MC68HC16 microcontroller}*/
|
||||||
public static final short EM_68HC16 = 69;
|
public static final short EM_68HC16 = 69;
|
||||||
/** Motorola MC68HC11 microcontroller */
|
/**{@code Motorola MC68HC11 microcontroller}*/
|
||||||
public static final short EM_68HC11 = 70;
|
public static final short EM_68HC11 = 70;
|
||||||
/** Motorola MC68HC08 microcontroller */
|
/**{@code Motorola MC68HC08 microcontroller}*/
|
||||||
public static final short EM_68HC08 = 71;
|
public static final short EM_68HC08 = 71;
|
||||||
/** Motorola MC68HC05 microcontroller */
|
/**{@code Motorola MC68HC05 microcontroller}*/
|
||||||
public static final short EM_68HC05 = 72;
|
public static final short EM_68HC05 = 72;
|
||||||
/** Silicon Graphics SVx */
|
/** Silicon Graphics SVx */
|
||||||
public static final short EM_SVX = 73;
|
public static final short EM_SVX = 73;
|
||||||
/** STMicroelectronics ST19 8 bit mc */
|
/**{@code STMicroelectronics ST19 8 bit mc}*/
|
||||||
public static final short EM_ST19 = 74;
|
public static final short EM_ST19 = 74;
|
||||||
/** Digital VAX */
|
/** Digital VAX */
|
||||||
public static final short EM_VAX = 75;
|
public static final short EM_VAX = 75;
|
||||||
/** Axis Communications 32-bit embedded processor */
|
/**{@code Axis Communications 32-bit embedded processor}*/
|
||||||
public static final short EM_CRIS = 76;
|
public static final short EM_CRIS = 76;
|
||||||
/** Infineon Technologies 32-bit embedded processor */
|
/**{@code Infineon Technologies 32-bit embedded processor}*/
|
||||||
public static final short EM_JAVELIN = 77;
|
public static final short EM_JAVELIN = 77;
|
||||||
/** Element 14 64-bit DSP Processor */
|
/**{@code Element 14 64-bit DSP Processor}*/
|
||||||
public static final short EM_FIREPATH = 78;
|
public static final short EM_FIREPATH = 78;
|
||||||
/** LSI Logic 16-bit DSP Processor */
|
/**{@code LSI Logic 16-bit DSP Processor}*/
|
||||||
public static final short EM_ZSP = 79;
|
public static final short EM_ZSP = 79;
|
||||||
/** Donald Knuth's educational 64-bit processor */
|
/**{@code Donald Knuth's educational 64-bit processor}*/
|
||||||
public static final short EM_MMIX = 80;
|
public static final short EM_MMIX = 80;
|
||||||
/** Harvard University machine-independent object files */
|
/** Harvard University machine-independent object files */
|
||||||
public static final short EM_HUANY = 81;
|
public static final short EM_HUANY = 81;
|
||||||
/** SiTera Prism */
|
/** SiTera Prism */
|
||||||
public static final short EM_PRISM = 82;
|
public static final short EM_PRISM = 82;
|
||||||
/** Atmel AVR 8-bit microcontroller */
|
/**{@code Atmel AVR 8-bit microcontroller}*/
|
||||||
public static final short EM_AVR = 83;
|
public static final short EM_AVR = 83;
|
||||||
/** Fujitsu FR30 */
|
/**{@code Fujitsu FR30}*/
|
||||||
public static final short EM_FR30 = 84;
|
public static final short EM_FR30 = 84;
|
||||||
/** Mitsubishi D10V */
|
/**{@code Mitsubishi D10V}*/
|
||||||
public static final short EM_D10V = 85;
|
public static final short EM_D10V = 85;
|
||||||
/** Mitsubishi D30V */
|
/**{@code Mitsubishi D30V}*/
|
||||||
public static final short EM_D30V = 86;
|
public static final short EM_D30V = 86;
|
||||||
/** NEC v850 */
|
/**{@code NEC v850}*/
|
||||||
public static final short EM_V850 = 87;
|
public static final short EM_V850 = 87;
|
||||||
/** Mitsubishi M32R */
|
/**{@code Mitsubishi M32R}*/
|
||||||
public static final short EM_M32R = 88;
|
public static final short EM_M32R = 88;
|
||||||
/** Matsushita MN10300 */
|
/**{@code Matsushita MN10300}*/
|
||||||
public static final short EM_MN10300 = 89;
|
public static final short EM_MN10300 = 89;
|
||||||
/** Matsushita MN10200 */
|
/**{@code Matsushita MN10200}*/
|
||||||
public static final short EM_MN10200 = 90;
|
public static final short EM_MN10200 = 90;
|
||||||
/** picoJava */
|
/** picoJava */
|
||||||
public static final short EM_PJ = 91;
|
public static final short EM_PJ = 91;
|
||||||
/** OpenRISC 32-bit embedded processor */
|
/**{@code OpenRISC 32-bit embedded processor}*/
|
||||||
public static final short EM_OPENRISC = 92;
|
public static final short EM_OPENRISC = 92;
|
||||||
/** ARC Cores Tangent-A5 */
|
/**{@code ARC Cores Tangent-A5}*/
|
||||||
public static final short EM_ARC_A5 = 93;
|
public static final short EM_ARC_A5 = 93;
|
||||||
/** Tensilica Xtensa Architecture */
|
/** Tensilica Xtensa Architecture */
|
||||||
public static final short EM_XTENSA = 94;
|
public static final short EM_XTENSA = 94;
|
||||||
|
@ -313,27 +313,27 @@ public interface ElfConstants {
|
||||||
public static final short EM_VIDEOCORE = 95;
|
public static final short EM_VIDEOCORE = 95;
|
||||||
/** Thompson Multimedia General Purpose Processor*/
|
/** Thompson Multimedia General Purpose Processor*/
|
||||||
public static final short EM_TMM_GPP = 96;
|
public static final short EM_TMM_GPP = 96;
|
||||||
/** National Semiconductor 32000 series */
|
/**{@code National Semiconductor 32000 series}*/
|
||||||
public static final short EM_NS32K = 97;
|
public static final short EM_NS32K = 97;
|
||||||
/** Tenor Network TPC processor */
|
/** Tenor Network TPC processor */
|
||||||
public static final short EM_TPC = 98;
|
public static final short EM_TPC = 98;
|
||||||
/** Trebia SNP 1000 processor */
|
/**{@code Trebia SNP 1000 processor}*/
|
||||||
public static final short EM_SNP1K = 99;
|
public static final short EM_SNP1K = 99;
|
||||||
/** STMicroelectronics (www.st.com) ST200 */
|
/**{@code STMicroelectronics (www.st.com) ST200}*/
|
||||||
public static final short EM_ST200 = 100;
|
public static final short EM_ST200 = 100;
|
||||||
/** Ubicom IP2xxx microcontroller family */
|
/**{@code Ubicom IP2xxx microcontroller family}*/
|
||||||
public static final short EM_IP2K = 101;
|
public static final short EM_IP2K = 101;
|
||||||
/** MAX Processor */
|
/** MAX Processor */
|
||||||
public static final short EM_MAX = 102;
|
public static final short EM_MAX = 102;
|
||||||
/** National Semiconductor CompactRISC microprocessor */
|
/** National Semiconductor CompactRISC microprocessor */
|
||||||
public static final short EM_CR = 103;
|
public static final short EM_CR = 103;
|
||||||
/** Fujitsu F2MC16 */
|
/**{@code Fujitsu F2MC16}*/
|
||||||
public static final short EM_F2MC16 = 104;
|
public static final short EM_F2MC16 = 104;
|
||||||
/** Texas Instruments embedded microcontroller msp430 */
|
/**{@code Texas Instruments embedded microcontroller msp430}*/
|
||||||
public static final short EM_MSP430 = 105;
|
public static final short EM_MSP430 = 105;
|
||||||
/** Analog Devices Blackfin (DSP) processor */
|
/** Analog Devices Blackfin (DSP) processor */
|
||||||
public static final short EM_BLACKFIN = 106;
|
public static final short EM_BLACKFIN = 106;
|
||||||
/** S1C33 Family of Seiko Epson processors */
|
/**{@code S1C33 Family of Seiko Epson processors}*/
|
||||||
public static final short EM_SE_C33 = 107;
|
public static final short EM_SE_C33 = 107;
|
||||||
/** Sharp embedded microprocessor */
|
/** Sharp embedded microprocessor */
|
||||||
public static final short EM_SEP = 108;
|
public static final short EM_SEP = 108;
|
||||||
|
@ -341,7 +341,7 @@ public interface ElfConstants {
|
||||||
public static final short EM_ARCA = 109;
|
public static final short EM_ARCA = 109;
|
||||||
/** Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University */
|
/** Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University */
|
||||||
public static final short EM_UNICORE = 110;
|
public static final short EM_UNICORE = 110;
|
||||||
/** eXcess: 16/32/64-bit configurable embedded CPU */
|
/**{@code eXcess: 16/32/64-bit configurable embedded CPU}*/
|
||||||
public static final short EM_EXCESS = 111;
|
public static final short EM_EXCESS = 111;
|
||||||
/** Icera Semiconductor Inc. Deep Execution Processor */
|
/** Icera Semiconductor Inc. Deep Execution Processor */
|
||||||
public static final short EM_DXP = 112;
|
public static final short EM_DXP = 112;
|
||||||
|
@ -351,67 +351,67 @@ public interface ElfConstants {
|
||||||
public static final short EM_CRX = 114;
|
public static final short EM_CRX = 114;
|
||||||
/** Motorola XGATE embedded processor */
|
/** Motorola XGATE embedded processor */
|
||||||
public static final short EM_XGATE = 115;
|
public static final short EM_XGATE = 115;
|
||||||
/** Infineon C16x/XC16x processor */
|
/**{@code Infineon C16x/XC16x processor}*/
|
||||||
public static final short EM_C166 = 116;
|
public static final short EM_C166 = 116;
|
||||||
/** Renesas M16C series microprocessors */
|
/**{@code Renesas M16C series microprocessors}*/
|
||||||
public static final short EM_M16C = 117;
|
public static final short EM_M16C = 117;
|
||||||
/** Microchip Technology dsPIC30F Digital Signal Controller **/
|
/**{@code Microchip Technology dsPIC30F Digital Signal Controller}*/
|
||||||
public static final short EM_DSPIC30F = 118;
|
public static final short EM_DSPIC30F = 118;
|
||||||
/** Freescale Communication Engine RISC core */
|
/** Freescale Communication Engine RISC core */
|
||||||
public static final short EM_CE = 119;
|
public static final short EM_CE = 119;
|
||||||
/** Renesas M32C series microprocessors*/
|
/**{@code Renesas M32C series microprocessors*}*/
|
||||||
public static final short EM_M32C = 120;
|
public static final short EM_M32C = 120;
|
||||||
/** Altium TSK3000 core */
|
/**{@code Altium TSK3000 core}*/
|
||||||
public static final short EM_TSK3000 = 131;
|
public static final short EM_TSK3000 = 131;
|
||||||
/** Freescale RS08 embedded processor */
|
/**{@code Freescale RS08 embedded processor}*/
|
||||||
public static final short EM_RS08 = 132;
|
public static final short EM_RS08 = 132;
|
||||||
/** Analog Devices SHARC family of 32-bit DSP processors */
|
/**{@code Analog Devices SHARC family of 32-bit DSP processors}*/
|
||||||
public static final short EM_SHARC = 133;
|
public static final short EM_SHARC = 133;
|
||||||
/** Cyan Technology eCOG2 microprocessor */
|
/**{@code Cyan Technology eCOG2 microprocessor}*/
|
||||||
public static final short EM_ECOG2 = 134;
|
public static final short EM_ECOG2 = 134;
|
||||||
/** Sunplus S+core7 RISC processor */
|
/**{@code Sunplus S+core7 RISC processor}*/
|
||||||
public static final short EM_SCORE7 = 135;
|
public static final short EM_SCORE7 = 135;
|
||||||
/** New Japan Radio (NJR) 24-bit DSP Processor */
|
/**{@code New Japan Radio (NJR) 24-bit DSP Processor}*/
|
||||||
public static final short EM_DSP24 = 136;
|
public static final short EM_DSP24 = 136;
|
||||||
/** Broadcom VideoCore III processor */
|
/** Broadcom VideoCore III processor */
|
||||||
public static final short EM_VIDEOCORE3 = 137;
|
public static final short EM_VIDEOCORE3 = 137;
|
||||||
/** RISC processor for Lattice FPGA architecture */
|
/** RISC processor for Lattice FPGA architecture */
|
||||||
public static final short EM_LATTICEMICO32 = 138;
|
public static final short EM_LATTICEMICO32 = 138;
|
||||||
/** Seiko Epson C17 family */
|
/**{@code Seiko Epson C17 family}*/
|
||||||
public static final short EM_SE_C17 = 139;
|
public static final short EM_SE_C17 = 139;
|
||||||
/** The Texas Instruments TMS320C6000 DSP family */
|
/**{@code The Texas Instruments TMS320C6000 DSP family}*/
|
||||||
public static final short EM_TI_C6000 = 140;
|
public static final short EM_TI_C6000 = 140;
|
||||||
/** The Texas Instruments TMS320C2000 DSP family */
|
/**{@code The Texas Instruments TMS320C2000 DSP family}*/
|
||||||
public static final short EM_TI_C2000 = 141;
|
public static final short EM_TI_C2000 = 141;
|
||||||
/** The Texas Instruments TMS320C55x DSP family */
|
/**{@code The Texas Instruments TMS320C55x DSP family}*/
|
||||||
public static final short EM_TI_C5500 = 142;
|
public static final short EM_TI_C5500 = 142;
|
||||||
/** STMicroelectronics 64bit VLIW Data Signal Processor */
|
/**{@code STMicroelectronics 64bit VLIW Data Signal Processor}*/
|
||||||
public static final short EM_MMDSP_PLUS = 160;
|
public static final short EM_MMDSP_PLUS = 160;
|
||||||
/** Cypress M8C microprocessor */
|
/**{@code Cypress M8C microprocessor}*/
|
||||||
public static final short EM_CYPRESS_M8C = 161;
|
public static final short EM_CYPRESS_M8C = 161;
|
||||||
/** Renesas R32C series microprocessors */
|
/**{@code Renesas R32C series microprocessors}*/
|
||||||
public static final short EM_R32C = 162;
|
public static final short EM_R32C = 162;
|
||||||
/** NXP Semiconductors TriMedia architecture family */
|
/** NXP Semiconductors TriMedia architecture family */
|
||||||
public static final short EM_TRIMEDIA = 163;
|
public static final short EM_TRIMEDIA = 163;
|
||||||
/** Qualcomm Hexagon processor */
|
/** Qualcomm Hexagon processor */
|
||||||
public static final short EM_HEXAGON = 164;
|
public static final short EM_HEXAGON = 164;
|
||||||
/** Intel 8051 and variants */
|
/**{@code Intel 8051 and variants}*/
|
||||||
public static final short EM_8051 = 165;
|
public static final short EM_8051 = 165;
|
||||||
/** STMicroelectronics STxP7x family of RISC processors */
|
/**{@code STMicroelectronics STxP7x family of RISC processors}*/
|
||||||
public static final short EM_STXP7X = 166;
|
public static final short EM_STXP7X = 166;
|
||||||
/** Andes Technology compact code size embedded RISC processor family */
|
/** Andes Technology compact code size embedded RISC processor family */
|
||||||
public static final short EM_NDS32 = 167;
|
public static final short EM_NDS32 = 167;
|
||||||
/** Cyan Technology eCOG1X family */
|
/**{@code Cyan Technology eCOG1X family}*/
|
||||||
public static final short EM_ECOG1 = 168;
|
public static final short EM_ECOG1 = 168;
|
||||||
/** Cyan Technology eCOG1X family */
|
/**{@code Cyan Technology eCOG1X family}*/
|
||||||
public static final short EM_ECOG1X = 168;
|
public static final short EM_ECOG1X = 168;
|
||||||
/** Dallas Semiconductor MAXQ30 Core Micro-controllers */
|
/**{@code Dallas Semiconductor MAXQ30 Core Micro-controllers}*/
|
||||||
public static final short EM_MAXQ30 = 169;
|
public static final short EM_MAXQ30 = 169;
|
||||||
/** New Japan Radio (NJR) 16-bit DSP Processor */
|
/**{@code New Japan Radio (NJR) 16-bit DSP Processor}*/
|
||||||
public static final short EM_XIMO16 = 170;
|
public static final short EM_XIMO16 = 170;
|
||||||
/** M2000 Reconfigurable RISC Microprocessor */
|
/**{@code M2000 Reconfigurable RISC Microprocessor}*/
|
||||||
public static final short EM_MANIK = 171;
|
public static final short EM_MANIK = 171;
|
||||||
/** Cray Inc. NV2 vector architecture */
|
/**{@code Cray Inc. NV2 vector architecture}*/
|
||||||
public static final short EM_CRAYNV2 = 172;
|
public static final short EM_CRAYNV2 = 172;
|
||||||
/** Renesas RX family */
|
/** Renesas RX family */
|
||||||
public static final short EM_RX = 173;
|
public static final short EM_RX = 173;
|
||||||
|
@ -419,26 +419,26 @@ public interface ElfConstants {
|
||||||
public static final short EM_METAG = 174;
|
public static final short EM_METAG = 174;
|
||||||
/** MCST Elbrus general purpose hardware architecture */
|
/** MCST Elbrus general purpose hardware architecture */
|
||||||
public static final short EM_MCST_ELBRUS = 175;
|
public static final short EM_MCST_ELBRUS = 175;
|
||||||
/** Cyan Technology eCOG16 family */
|
/**{@code Cyan Technology eCOG16 family}*/
|
||||||
public static final short EM_ECOG16 = 176;
|
public static final short EM_ECOG16 = 176;
|
||||||
/** National Semiconductor CompactRISC CR16 16-bitmicroprocessor */
|
/**{@code National Semiconductor CompactRISC CR16 16-bitmicroprocessor}*/
|
||||||
public static final short EM_CR16 = 177;
|
public static final short EM_CR16 = 177;
|
||||||
/** Freescale Extended Time Processing Unit */
|
/** Freescale Extended Time Processing Unit */
|
||||||
public static final short EM_ETPU = 178;
|
public static final short EM_ETPU = 178;
|
||||||
/** Infineon Technologies SLE9X core */
|
/**{@code Infineon Technologies SLE9X core}*/
|
||||||
public static final short EM_SLE9X = 179;
|
public static final short EM_SLE9X = 179;
|
||||||
/** Intel L10M */
|
/**{@code Intel L10M}*/
|
||||||
public static final short EM_L10M = 180;
|
public static final short EM_L10M = 180;
|
||||||
/** Intel K10M */
|
/**{@code Intel K10M}*/
|
||||||
public static final short EM_K10M = 181;
|
public static final short EM_K10M = 181;
|
||||||
// 182 reserved
|
// 182 reserved
|
||||||
/** AARCH64 Architecture **/
|
/**{@code AARCH64 Architecture}*/
|
||||||
public static final short EM_AARCH64 = 183;
|
public static final short EM_AARCH64 = 183;
|
||||||
/** Atmel Corporation 32-bit microprocessor family */
|
/**{@code Atmel Corporation 32-bit microprocessor family}*/
|
||||||
public static final short EM_AVR32 = 185;
|
public static final short EM_AVR32 = 185;
|
||||||
/** STMicroeletronics STM8 8-bit microcontroller */
|
/**{@code STMicroeletronics STM8 8-bit microcontroller}*/
|
||||||
public static final short EM_STM8 = 186;
|
public static final short EM_STM8 = 186;
|
||||||
/** Tilera TILE64 multicore architecture family */
|
/**{@code Tilera TILE64 multicore architecture family}*/
|
||||||
public static final short EM_TILE64 = 187;
|
public static final short EM_TILE64 = 187;
|
||||||
/** Tilera TILEPro multicore architecture family */
|
/** Tilera TILEPro multicore architecture family */
|
||||||
public static final short EM_TILEPRO = 188;
|
public static final short EM_TILEPRO = 188;
|
||||||
|
@ -448,37 +448,37 @@ public interface ElfConstants {
|
||||||
public static final short EM_TILEGX = 191;
|
public static final short EM_TILEGX = 191;
|
||||||
/** CloudShield architecture family */
|
/** CloudShield architecture family */
|
||||||
public static final short EM_CLOUDSHIELD = 192;
|
public static final short EM_CLOUDSHIELD = 192;
|
||||||
/** KIPO-KAIST Core-A 1st generation processor family */
|
/**{@code KIPO-KAIST Core-A 1st generation processor family}*/
|
||||||
public static final short EM_COREA_1ST = 193;
|
public static final short EM_COREA_1ST = 193;
|
||||||
/** KIPO-KAIST Core-A 2nd generation processor family */
|
/**{@code KIPO-KAIST Core-A 2nd generation processor family}*/
|
||||||
public static final short EM_COREA_2ND = 194;
|
public static final short EM_COREA_2ND = 194;
|
||||||
/** Synopsys ARCompact V2 */
|
/**{@code Synopsys ARCompact V2}*/
|
||||||
public static final short EM_ARC_COMPACT2 = 195;
|
public static final short EM_ARC_COMPACT2 = 195;
|
||||||
/** Open8 8-bit RISC soft processor core */
|
/**{@code Open8 8-bit RISC soft processor core}*/
|
||||||
public static final short EM_OPEN8 = 196;
|
public static final short EM_OPEN8 = 196;
|
||||||
/** Renesas RL78 family */
|
/**{@code Renesas RL78 family}*/
|
||||||
public static final short EM_RL78 = 197;
|
public static final short EM_RL78 = 197;
|
||||||
/** Broadcom VideoCore V processor */
|
/** Broadcom VideoCore V processor */
|
||||||
public static final short EM_VIDEOCORE5 = 198;
|
public static final short EM_VIDEOCORE5 = 198;
|
||||||
/** Renesas 78KOR family */
|
/**{@code Renesas 78KOR family}*/
|
||||||
public static final short EM_78KOR = 199;
|
public static final short EM_78KOR = 199;
|
||||||
/** Freescale 56800EX Digital Signal Controller (DSC) */
|
/**{@code Freescale 56800EX Digital Signal Controller (DSC)}*/
|
||||||
public static final short EM_56800EX = 200;
|
public static final short EM_56800EX = 200;
|
||||||
/** Beyond BA1 CPU */
|
/**{@code Beyond BA1 CPU}*/
|
||||||
public static final short EM_BA1 = 201;
|
public static final short EM_BA1 = 201;
|
||||||
/** Beyond BA2 CPU */
|
/**{@code Beyond BA2 CPU}*/
|
||||||
public static final short EM_BA2 = 202;
|
public static final short EM_BA2 = 202;
|
||||||
/** XMOS xCORE processor family */
|
/** XMOS xCORE processor family */
|
||||||
public static final short EM_XCORE = 203;
|
public static final short EM_XCORE = 203;
|
||||||
/** KM211 KM32 32-bit processor */
|
/**{@code KM211 KM32 32-bit processor}*/
|
||||||
public static final short EM_KM32 = 210;
|
public static final short EM_KM32 = 210;
|
||||||
/** KM211 KMX32 32-bit processor */
|
/**{@code KM211 KMX32 32-bit processor}*/
|
||||||
public static final short EM_KMX32 = 211;
|
public static final short EM_KMX32 = 211;
|
||||||
/** KM211 KMX16 16-bit processor */
|
/**{@code KM211 KMX16 16-bit processor}*/
|
||||||
public static final short EM_KMX16 = 212;
|
public static final short EM_KMX16 = 212;
|
||||||
/** KM211 KMX8 8-bit processor */
|
/**{@code KM211 KMX8 8-bit processor}*/
|
||||||
public static final short EM_KMX8 = 213;
|
public static final short EM_KMX8 = 213;
|
||||||
/** KM211 KVARC processor */
|
/**{@code KM211 KVARC processor}*/
|
||||||
public static final short EM_KVARC = 214;
|
public static final short EM_KVARC = 214;
|
||||||
/** Paneve CDP architecture family */
|
/** Paneve CDP architecture family */
|
||||||
public static final short EM_CDP = 215;
|
public static final short EM_CDP = 215;
|
||||||
|
@ -494,12 +494,12 @@ public interface ElfConstants {
|
||||||
public static final short EM_AMDGPU = 224;
|
public static final short EM_AMDGPU = 224;
|
||||||
/** RISC-V */
|
/** RISC-V */
|
||||||
public static final short EM_RISCV = 243;
|
public static final short EM_RISCV = 243;
|
||||||
/** Lanai 32-bit processor */
|
/**{@code Lanai 32-bit processor}*/
|
||||||
public static final short EM_LANAI = 244;
|
public static final short EM_LANAI = 244;
|
||||||
/** Linux kernel bpf virtual machine */
|
/** Linux kernel bpf virtual machine */
|
||||||
public static final short EM_BPF = 247;
|
public static final short EM_BPF = 247;
|
||||||
|
|
||||||
/** used by NetBSD/avr32 - AVR 32-bit */
|
/**{@code used by NetBSD/avr32 - AVR 32-bit}*/
|
||||||
public static final short EM_AVR32_unofficial = 0x18ad;
|
public static final short EM_AVR32_unofficial = 0x18ad;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -22,9 +22,9 @@ import ghidra.app.util.bin.format.FactoryBundledWithBinaryReader;
|
||||||
import ghidra.util.*;
|
import ghidra.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class to represent the Elf32_Dyn data structure.
|
* A class to represent the Elf<code>32</code>_Dyn data structure.
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre><code>
|
||||||
* typedef int32_t Elf32_Sword;
|
* typedef int32_t Elf32_Sword;
|
||||||
* typedef uint32_t Elf32_Word;
|
* typedef uint32_t Elf32_Word;
|
||||||
* typedef uint32_t Elf32_Addr;
|
* typedef uint32_t Elf32_Addr;
|
||||||
|
@ -49,7 +49,7 @@ import ghidra.util.*;
|
||||||
* } d_un;
|
* } d_un;
|
||||||
* } Elf64_Dyn;
|
* } Elf64_Dyn;
|
||||||
*
|
*
|
||||||
* </pre>
|
* </code></pre>
|
||||||
*/
|
*/
|
||||||
public class ElfDynamic implements ByteArrayConverter {
|
public class ElfDynamic implements ByteArrayConverter {
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ FactoryBundledWithBinaryReader reader, ElfHeader elf)
|
||||||
* Constructs a new ELF dynamic with the specified tag and value.
|
* Constructs a new ELF dynamic with the specified tag and value.
|
||||||
* @param tag the tag (or type) of this dynamic
|
* @param tag the tag (or type) of this dynamic
|
||||||
* @param value the value (or pointer) of this dynamic
|
* @param value the value (or pointer) of this dynamic
|
||||||
* @param is32bit true if this object is a 32-bit dynamic, false if 64-bit dynamic
|
* @param elf the elf header
|
||||||
*/
|
*/
|
||||||
public ElfDynamic(int tag, long value, ElfHeader elf) {
|
public ElfDynamic(int tag, long value, ElfHeader elf) {
|
||||||
this.d_tag = tag;
|
this.d_tag = tag;
|
||||||
|
@ -101,7 +101,7 @@ FactoryBundledWithBinaryReader reader, ElfHeader elf)
|
||||||
* Constructs a new ELF dynamic with the specified (enum) tag and value.
|
* Constructs a new ELF dynamic with the specified (enum) tag and value.
|
||||||
* @param tag the (enum) tag (or type) of this dynamic
|
* @param tag the (enum) tag (or type) of this dynamic
|
||||||
* @param value the value (or pointer) of this dynamic
|
* @param value the value (or pointer) of this dynamic
|
||||||
* @param is32bit true if this object is a 32-bit dynamic, false if 64-bit dynamic
|
* @param elf the elf header
|
||||||
*/
|
*/
|
||||||
public ElfDynamic(ElfDynamicType tag, long value, ElfHeader elf) {
|
public ElfDynamic(ElfDynamicType tag, long value, ElfHeader elf) {
|
||||||
this(tag.value, value, elf);
|
this(tag.value, value, elf);
|
||||||
|
|
|
@ -74,15 +74,14 @@ public interface ElfLoadHelper {
|
||||||
* @param name name of function or null for default (or label already applied)
|
* @param name name of function or null for default (or label already applied)
|
||||||
* @param address address of function
|
* @param address address of function
|
||||||
* @param isEntry mark function as entry point if true
|
* @param isEntry mark function as entry point if true
|
||||||
* @param log
|
|
||||||
* @return new or existing function.
|
* @return new or existing function.
|
||||||
*/
|
*/
|
||||||
Function createOneByteFunction(String name, Address address, boolean isEntry);
|
Function createOneByteFunction(String name, Address address, boolean isEntry);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an external function within the UNKNOWN space and a corresponding thunk at
|
* Create an external function within the UNKNOWN space and a corresponding thunk at
|
||||||
* the internalFunctionAddr. If the functionAddr and/or indirectPointerAddr has a symbol with <name>
|
* the internalFunctionAddr. If the functionAddr and/or indirectPointerAddr has a symbol with
|
||||||
* it will be removed so as not to replicate the external function name.
|
* {@code <name>} it will be removed so as not to replicate the external function name.
|
||||||
* @param name external function name
|
* @param name external function name
|
||||||
* @param functionAddr location of thunk function (memory address only)
|
* @param functionAddr location of thunk function (memory address only)
|
||||||
* @param indirectPointerAddr if not null a pointer to functionAddr will be written (size of pointer
|
* @param indirectPointerAddr if not null a pointer to functionAddr will be written (size of pointer
|
||||||
|
@ -146,7 +145,7 @@ public interface ElfLoadHelper {
|
||||||
/**
|
/**
|
||||||
* Get the program address for an addressableWordOffset within the default address space.
|
* Get the program address for an addressableWordOffset within the default address space.
|
||||||
* This method is responsible for applying any program image base change imposed during
|
* This method is responsible for applying any program image base change imposed during
|
||||||
* the import (see {@link #getImageBaseWordOffset(Program, ElfHeader)}.
|
* the import (see {@link #getImageBaseWordAdjustmentOffset()}.
|
||||||
* @param addressableWordOffset absolute word offset. The offset should already include
|
* @param addressableWordOffset absolute word offset. The offset should already include
|
||||||
* default image base and pre-link adjustment (see {@link ElfHeader#adjustAddressForPrelink(long)}).
|
* default image base and pre-link adjustment (see {@link ElfHeader#adjustAddressForPrelink(long)}).
|
||||||
* @return memory address in default code space
|
* @return memory address in default code space
|
||||||
|
@ -183,7 +182,7 @@ public interface ElfLoadHelper {
|
||||||
* small 16-bit default memory space, or when shared memory regions exist.
|
* small 16-bit default memory space, or when shared memory regions exist.
|
||||||
* </p>
|
* </p>
|
||||||
* @param alignment required byte alignment of allocated range
|
* @param alignment required byte alignment of allocated range
|
||||||
* @param size size of requested allocation (size <= 0 reserved for EXTERNAL block)
|
* @param size size of requested allocation (size <= 0 reserved for EXTERNAL block)
|
||||||
* @param purpose brief descriptive purpose of range.
|
* @param purpose brief descriptive purpose of range.
|
||||||
* @return address range or null if no unallocated range found
|
* @return address range or null if no unallocated range found
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -182,7 +182,7 @@ public class ElfSectionHeaderConstants {
|
||||||
public static final short SHN_ABS = (short) 0xfff1;
|
public static final short SHN_ABS = (short) 0xfff1;
|
||||||
/**common symbols, such as Fortran COMMON or unallocated C external vars*/
|
/**common symbols, such as Fortran COMMON or unallocated C external vars*/
|
||||||
public static final short SHN_COMMON = (short) 0xfff2;
|
public static final short SHN_COMMON = (short) 0xfff2;
|
||||||
/** Mark that the index is >= SHN_LORESERVE */
|
/** Mark that the index is >= SHN_LORESERVE */
|
||||||
public static final short SHN_XINDEX = (short) 0xffff;
|
public static final short SHN_XINDEX = (short) 0xffff;
|
||||||
/**upper bound on range of reserved indexes*/
|
/**upper bound on range of reserved indexes*/
|
||||||
public static final short SHN_HIRESERVE = (short) 0xffff;
|
public static final short SHN_HIRESERVE = (short) 0xffff;
|
||||||
|
|
|
@ -27,15 +27,12 @@ public class ElfStringTable implements ElfFileSection {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create and parse an Elf string table
|
* Create and parse an Elf string table
|
||||||
* @param reader
|
* @param reader the binary reader containing the elf string table
|
||||||
* @param header elf header
|
* @param header elf header
|
||||||
* @param stringTableSection string table section header or null if associated with a dynamic table entry
|
* @param stringTableSection string table section header or null if associated with a dynamic table entry
|
||||||
* @param fileOffset symbol table file offset
|
* @param fileOffset symbol table file offset
|
||||||
* @param addrOffset memory address of symbol table (should already be adjusted for prelink)
|
* @param addrOffset memory address of symbol table (should already be adjusted for prelink)
|
||||||
* @param length length of symbol table in bytes of -1 if unknown
|
* @param length length of symbol table in bytes of -1 if unknown
|
||||||
* @param entrySize size of each symbol entry in bytes
|
|
||||||
* @param sectionType symbol table section type (SHT_DYNSYM, SHT_SYMTAB, or -1 if not section-based)
|
|
||||||
* @param stringTable string table to be associated with symbol table
|
|
||||||
* @return Elf string table object
|
* @return Elf string table object
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -166,7 +166,7 @@ public class ElfLoadAdapter {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the default alignment within the default address space.
|
* Get the default alignment within the default address space.
|
||||||
* @param load helper object
|
* @param elfLoadHelper helper object
|
||||||
* @return default alignment within the default address space.
|
* @return default alignment within the default address space.
|
||||||
*/
|
*/
|
||||||
public int getDefaultAlignment(ElfLoadHelper elfLoadHelper) {
|
public int getDefaultAlignment(ElfLoadHelper elfLoadHelper) {
|
||||||
|
@ -234,7 +234,7 @@ public class ElfLoadAdapter {
|
||||||
* a more accurate check based upon the actual language utilized. While the ELF header
|
* a more accurate check based upon the actual language utilized. While the ELF header
|
||||||
* may have stipulated a specific processor via the machine-id, a completely different
|
* may have stipulated a specific processor via the machine-id, a completely different
|
||||||
* and incompatible language may have been used.
|
* and incompatible language may have been used.
|
||||||
* @param elf elf header
|
* @param elfLoadHelper elf header
|
||||||
* @return true if this extension can properly support the ELF header and the
|
* @return true if this extension can properly support the ELF header and the
|
||||||
* current program/language.
|
* current program/language.
|
||||||
*/
|
*/
|
||||||
|
@ -425,7 +425,7 @@ public class ElfLoadAdapter {
|
||||||
/**
|
/**
|
||||||
* Return the memory section size in bytes for the specified section header.
|
* Return the memory section size in bytes for the specified section header.
|
||||||
* The returned value will be consistent with any byte filtering which may be required.
|
* The returned value will be consistent with any byte filtering which may be required.
|
||||||
* @param ElfSectionHeader
|
* @param section the section header
|
||||||
* @return preferred memory block size in bytes which corresponds to the specified section header
|
* @return preferred memory block size in bytes which corresponds to the specified section header
|
||||||
*/
|
*/
|
||||||
public long getAdjustedSize(ElfSectionHeader section) {
|
public long getAdjustedSize(ElfSectionHeader section) {
|
||||||
|
|
|
@ -43,12 +43,9 @@ public class ElfRelocationContext {
|
||||||
/**
|
/**
|
||||||
* Relocation context for a specific Elf image and relocation table
|
* Relocation context for a specific Elf image and relocation table
|
||||||
* @param handler relocation handler or null if not available
|
* @param handler relocation handler or null if not available
|
||||||
* @param elf Elf header
|
* @param loadHelper the elf load helper
|
||||||
* @param relocationTable Elf relocation table
|
* @param relocationTable Elf relocation table
|
||||||
* @param symbolMap Elf symbol placement map
|
* @param symbolMap Elf symbol placement map
|
||||||
* @param nextFreeAddress next available address to be used by relocations if needed (e.g.,
|
|
||||||
* synthetic GOT, EXTERNAL block, etc.)
|
|
||||||
* @param program Target program
|
|
||||||
*/
|
*/
|
||||||
protected ElfRelocationContext(ElfRelocationHandler handler, ElfLoadHelper loadHelper,
|
protected ElfRelocationContext(ElfRelocationHandler handler, ElfLoadHelper loadHelper,
|
||||||
ElfRelocationTable relocationTable, Map<ElfSymbol, Address> symbolMap) {
|
ElfRelocationTable relocationTable, Map<ElfSymbol, Address> symbolMap) {
|
||||||
|
|
|
@ -140,9 +140,9 @@ public class SegmentCommand extends LoadCommand {
|
||||||
/**
|
/**
|
||||||
* Returns a octal model value reflecting the
|
* Returns a octal model value reflecting the
|
||||||
* segment's maximum protection value allowed.
|
* segment's maximum protection value allowed.
|
||||||
* For example:
|
* For example:{@code
|
||||||
* 7 -> 0x111 -> rwx
|
* 7 -> 0x111 -> rwx
|
||||||
* 5 -> 0x101 -> rx
|
* 5 -> 0x101 -> rx}
|
||||||
* @return the maximum protections of a segment
|
* @return the maximum protections of a segment
|
||||||
*/
|
*/
|
||||||
public int getMaxProtection() {
|
public int getMaxProtection() {
|
||||||
|
@ -152,9 +152,9 @@ public class SegmentCommand extends LoadCommand {
|
||||||
/**
|
/**
|
||||||
* Returns a octal model value reflecting the
|
* Returns a octal model value reflecting the
|
||||||
* segment's initial protection value.
|
* segment's initial protection value.
|
||||||
* For example:
|
* For example:{@code
|
||||||
* 7 -> 0x111 -> rwx
|
* 7 -> 0x111 -> rwx
|
||||||
* 5 -> 0x101 -> rx
|
* 5 -> 0x101 -> rx}
|
||||||
* @return the initial protections of a segment
|
* @return the initial protections of a segment
|
||||||
*/
|
*/
|
||||||
public int getInitProtection() {
|
public int getInitProtection() {
|
||||||
|
|
|
@ -411,7 +411,7 @@ public class InformationBlock {
|
||||||
/**
|
/**
|
||||||
* Returns the index to the start of the resource table,
|
* Returns the index to the start of the resource table,
|
||||||
* relative to the beginning of the NE windows header.
|
* relative to the beginning of the NE windows header.
|
||||||
* @returns the index to the start of the resource table
|
* @return the index to the start of the resource table
|
||||||
*/
|
*/
|
||||||
short getResourceTableOffset() {
|
short getResourceTableOffset() {
|
||||||
return ne_rsrctab;
|
return ne_rsrctab;
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class FileHeader implements StructConverter {
|
||||||
*/
|
*/
|
||||||
public final static int IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010;
|
public final static int IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010;
|
||||||
/**
|
/**
|
||||||
* App can handle >2gb addresses
|
* App can handle >2gb addresses
|
||||||
*/
|
*/
|
||||||
public final static int IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020;
|
public final static int IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020;
|
||||||
/**
|
/**
|
||||||
|
@ -442,7 +442,7 @@ public class FileHeader implements StructConverter {
|
||||||
* file.
|
* file.
|
||||||
* @param block the memory block template
|
* @param block the memory block template
|
||||||
* @param optionalHeader the related optional header
|
* @param optionalHeader the related optional header
|
||||||
* @throws MemoryAccessException if the memory block is uninitialized
|
* @throws RuntimeException if the memory block is uninitialized
|
||||||
*/
|
*/
|
||||||
public void addSection(MemoryBlock block, OptionalHeader optionalHeader) {
|
public void addSection(MemoryBlock block, OptionalHeader optionalHeader) {
|
||||||
DataDirectory [] directories = optionalHeader.getDataDirectories();
|
DataDirectory [] directories = optionalHeader.getDataDirectories();
|
||||||
|
|
|
@ -18,7 +18,7 @@ package ghidra.app.util.bin.format.pe;
|
||||||
/**
|
/**
|
||||||
* PE machine ID constants defined by standard header file 'ntimage.h'
|
* PE machine ID constants defined by standard header file 'ntimage.h'
|
||||||
*
|
*
|
||||||
* @see https://msdn.microsoft.com/en-us/library/windows/desktop/mt804345%28v=vs.85%29.aspx
|
* @see <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/mt804345%28v=vs.85%29.aspx">Image File Machine Constants</a>
|
||||||
*/
|
*/
|
||||||
public class MachineConstants {
|
public class MachineConstants {
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class PortableExecutable {
|
||||||
* @param bp the byte provider
|
* @param bp the byte provider
|
||||||
* @param layout specifies the layout of the underlying provider and governs RVA resolution
|
* @param layout specifies the layout of the underlying provider and governs RVA resolution
|
||||||
* @throws IOException if an I/O error occurs.
|
* @throws IOException if an I/O error occurs.
|
||||||
* @see {@link #createPortableExecutable(GenericFactory, ByteProvider, Alignment, boolean, boolean)}
|
* @see #createPortableExecutable(GenericFactory, ByteProvider, SectionLayout, boolean, boolean)
|
||||||
**/
|
**/
|
||||||
public static PortableExecutable createPortableExecutable(GenericFactory factory,
|
public static PortableExecutable createPortableExecutable(GenericFactory factory,
|
||||||
ByteProvider bp, SectionLayout layout) throws IOException {
|
ByteProvider bp, SectionLayout layout) throws IOException {
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class CliMetadataRoot implements StructConverter, PeMarkupable {
|
||||||
*
|
*
|
||||||
* @param reader A binary reader set to start reading at the start of this header.
|
* @param reader A binary reader set to start reading at the start of this header.
|
||||||
* @param rva The RVA of this header.
|
* @param rva The RVA of this header.
|
||||||
* @throws if there is a problem reading the header.
|
* @throws IOException if there is a problem reading the header.
|
||||||
*/
|
*/
|
||||||
public CliMetadataRoot(BinaryReader reader, int rva)
|
public CliMetadataRoot(BinaryReader reader, int rva)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
|
@ -52,10 +52,9 @@ public class CliStreamHeader implements StructConverter, PeMarkupable {
|
||||||
/**
|
/**
|
||||||
* Constructs a new CLI Stream Header datatype.
|
* Constructs a new CLI Stream Header datatype.
|
||||||
*
|
*
|
||||||
|
* @param metadataRoot the metadata root.
|
||||||
* @param reader A binary reader set to start reading at the start of this header.
|
* @param reader A binary reader set to start reading at the start of this header.
|
||||||
* @param virtualAddress The RVA of this header.
|
* @throws IOException if there is a problem reading the header.
|
||||||
* @param ntHeader The NT header.
|
|
||||||
* @throws if there is a problem reading the header.
|
|
||||||
*/
|
*/
|
||||||
public CliStreamHeader(CliMetadataRoot metadataRoot, BinaryReader reader)
|
public CliStreamHeader(CliMetadataRoot metadataRoot, BinaryReader reader)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
|
@ -27,8 +27,8 @@ import ghidra.util.exception.AssertException;
|
||||||
* <p>
|
* <p>
|
||||||
* Paraphrasing from ISO 23271:2012 11.24.2.4 (p272):
|
* Paraphrasing from ISO 23271:2012 11.24.2.4 (p272):
|
||||||
* - If the first one byte of the 'blob' is 0bbbbbbb_2: size is bbbbbbb_2 bytes.
|
* - If the first one byte of the 'blob' is 0bbbbbbb_2: size is bbbbbbb_2 bytes.
|
||||||
* - If the first two bytes are 10bbbbbb_2 and x: size is (bbbbbb_2 << 8 + x) bytes.
|
* - {@literal If the first two bytes are 10bbbbbb_2 and x: size is (bbbbbb_2 << 8 + x) bytes.}
|
||||||
* - If the first four bytes are 110bbbbb_2, x, y, and z: size is (bbbbb_2<<24 + x<<16 + y<<8 + z) bytes.
|
* - {@literal If the first four bytes are 110bbbbb_2, x, y, and z: size is (bbbbb_2<<24 + x<<16 + y<<8 + z) bytes.}
|
||||||
* The first entry in the heap is the empty 'blob' consisting of a single zero byte.
|
* The first entry in the heap is the empty 'blob' consisting of a single zero byte.
|
||||||
*/
|
*/
|
||||||
public class CliBlob implements StructConverter {
|
public class CliBlob implements StructConverter {
|
||||||
|
|
|
@ -46,7 +46,7 @@ public class CliSigField extends CliAbstractSig {
|
||||||
/**
|
/**
|
||||||
* Checks whether this could *possibly* be a FieldSig. Only looks at the identifier byte. Useful for signature index
|
* Checks whether this could *possibly* be a FieldSig. Only looks at the identifier byte. Useful for signature index
|
||||||
* that could be to different kinds of signatures.
|
* that could be to different kinds of signatures.
|
||||||
* @param reader
|
* @param blob
|
||||||
* @return
|
* @return
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -55,7 +55,7 @@ public class CliSigLocalVar extends CliAbstractSig {
|
||||||
/**
|
/**
|
||||||
* Checks whether this could *possibly* be a LocalVarSig. Only looks at the identifier byte. Useful for signature index
|
* Checks whether this could *possibly* be a LocalVarSig. Only looks at the identifier byte. Useful for signature index
|
||||||
* that could be to different kinds of signatures.
|
* that could be to different kinds of signatures.
|
||||||
* @param reader
|
* @param blob
|
||||||
* @return
|
* @return
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class CliStreamBlob extends CliAbstractStream {
|
||||||
* Updates the blob at the given address with the new blob.
|
* Updates the blob at the given address with the new blob.
|
||||||
*
|
*
|
||||||
* @param updatedBlob The updated blob.
|
* @param updatedBlob The updated blob.
|
||||||
* @param address The address of the blob to update.
|
* @param addr The address of the blob to update.
|
||||||
* @param program The program that will get the update.
|
* @param program The program that will get the update.
|
||||||
*/
|
*/
|
||||||
public boolean updateBlob(CliBlob updatedBlob, Address addr, Program program) {
|
public boolean updateBlob(CliBlob updatedBlob, Address addr, Program program) {
|
||||||
|
|
|
@ -67,8 +67,8 @@ public class CliStreamMetadata extends CliAbstractStream {
|
||||||
*
|
*
|
||||||
* @param header The stream header associated with this stream.
|
* @param header The stream header associated with this stream.
|
||||||
* @param guidStream The GUID stream.
|
* @param guidStream The GUID stream.
|
||||||
* @param userStringStream The user strings stream.
|
* @param userStringsStream The user strings stream.
|
||||||
* @param stringsStrings The strings stream.
|
* @param stringsStream The strings stream.
|
||||||
* @param blobStream The blob stream.
|
* @param blobStream The blob stream.
|
||||||
* @param fileOffset The file offset where this stream starts.
|
* @param fileOffset The file offset where this stream starts.
|
||||||
* @param rva The relative virtual address where this stream starts.
|
* @param rva The relative virtual address where this stream starts.
|
||||||
|
|
|
@ -81,7 +81,6 @@ public class CliStreamStrings extends CliAbstractStream {
|
||||||
/**
|
/**
|
||||||
* Gets the string at the given index.
|
* Gets the string at the given index.
|
||||||
*
|
*
|
||||||
* @param The {@link CliMetadataRoot} that may point to the {@link CliStreamStrings}.
|
|
||||||
* @param index The index of the string to get.
|
* @param index The index of the string to get.
|
||||||
* @return The string at the given index. Could be null if the index was invalid or there was
|
* @return The string at the given index. Could be null if the index was invalid or there was
|
||||||
* a problem reading the string.
|
* a problem reading the string.
|
||||||
|
|
|
@ -217,7 +217,7 @@ public abstract class CliAbstractTable implements StructConverter, PeMarkupable
|
||||||
/**
|
/**
|
||||||
* Convenience method for getting a safe row representation of a table.
|
* Convenience method for getting a safe row representation of a table.
|
||||||
*
|
*
|
||||||
* @param table The table that has the row.
|
* @param otherTable The table that has the row.
|
||||||
* @param index The index of the row.
|
* @param index The index of the row.
|
||||||
* @return The safe row representation of a table.
|
* @return The safe row representation of a table.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -42,6 +42,7 @@ import java.io.*;
|
||||||
* BYTE StorageClass;
|
* BYTE StorageClass;
|
||||||
* BYTE NumberOfAuxSymbols;
|
* BYTE NumberOfAuxSymbols;
|
||||||
* } IMAGE_SYMBOL;
|
* } IMAGE_SYMBOL;
|
||||||
|
* </pre>
|
||||||
*/
|
*/
|
||||||
public class DebugCOFFSymbol implements StructConverter {
|
public class DebugCOFFSymbol implements StructConverter {
|
||||||
private static final int NAME_LENGTH = 8;
|
private static final int NAME_LENGTH = 8;
|
||||||
|
|
|
@ -59,6 +59,7 @@ import ghidra.util.exception.DuplicateNameException;
|
||||||
* BYTE Selection; // communal selection type
|
* BYTE Selection; // communal selection type
|
||||||
* } Section;
|
* } Section;
|
||||||
* } IMAGE_AUX_SYMBOL;
|
* } IMAGE_AUX_SYMBOL;
|
||||||
|
* </pre>
|
||||||
*/
|
*/
|
||||||
public class DebugCOFFSymbolAux implements StructConverter {
|
public class DebugCOFFSymbolAux implements StructConverter {
|
||||||
public final static byte IMAGE_SIZEOF_AUX_SYMBOL = 18;
|
public final static byte IMAGE_SIZEOF_AUX_SYMBOL = 18;
|
||||||
|
|
|
@ -87,7 +87,7 @@ public class DebugDirectoryParser {
|
||||||
* @param reader the binary reader
|
* @param reader the binary reader
|
||||||
* @param ptr the pointer into the binary reader
|
* @param ptr the pointer into the binary reader
|
||||||
* @param size the size of the directory
|
* @param size the size of the directory
|
||||||
* @param ntHeader
|
* @param validator the validator for the directory
|
||||||
* @throws IOException if an I/O error occurs
|
* @throws IOException if an I/O error occurs
|
||||||
*/
|
*/
|
||||||
public static DebugDirectoryParser createDebugDirectoryParser(
|
public static DebugDirectoryParser createDebugDirectoryParser(
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue