Package ghidra.program.model.listing
Class ListingStub
- java.lang.Object
-
- ghidra.program.model.listing.ListingStub
-
- All Implemented Interfaces:
Listing
public class ListingStub extends java.lang.Object implements Listing
ListingStub can be extended for use by tests. It throws an UnsupportedOperationException for all methods in the Listing interface. Any method that is needed for your test can then be overridden so it can provide its own test implementation and return value.
-
-
Constructor Summary
Constructors Constructor Description ListingStub()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AddressSetView
addInstructions(InstructionSet instructionSet, boolean overwrite)
Creates a complete set of instructions.void
clearAll(boolean clearContext, TaskMonitor monitor)
Removes all CodeUnits, comments, properties, and references from the listing.void
clearCodeUnits(Address startAddr, Address endAddr, boolean clearContext)
Clears any code units in the given range returning everything to "db"s, and removing any references in the affected area.void
clearCodeUnits(Address startAddr, Address endAddr, boolean clearContext, TaskMonitor monitor)
Clears any code units in the given range returning everything to "db"s, and removing any references in the affected area.void
clearComments(Address startAddr, Address endAddr)
Clears the comments in the given range.void
clearProperties(Address startAddr, Address endAddr, TaskMonitor monitor)
Clears the properties in the given range.Data
createData(Address addr, DataType dataType)
Creates a new defined Data object at the given address.Data
createData(Address addr, DataType dataType, int length)
Creates a new defined Data object of a given length at the given address.Function
createFunction(java.lang.String name, Address entryPoint, AddressSetView body, SourceType source)
Create a function with an entry point and a body of addresses.Function
createFunction(java.lang.String name, Namespace nameSpace, Address entryPoint, AddressSetView body, SourceType source)
Create a function in the specified namespace with an entry point and a body of addresses.Instruction
createInstruction(Address addr, InstructionPrototype prototype, MemBuffer memBuf, ProcessorContextView context)
Creates a new Instruction object at the given address.ProgramModule
createRootModule(java.lang.String treeName)
Create a new tree that will be identified by the given name.CodeUnit
getCodeUnitAfter(Address addr)
get the next code unit that starts an an address that is greater than the given address.CodeUnit
getCodeUnitAt(Address addr)
get the code unit that starts at the given address.CodeUnit
getCodeUnitBefore(Address addr)
get the next code unit that starts at an address that is less than the given address.CodeUnit
getCodeUnitContaining(Address addr)
get the code unit that contains the given address.CodeUnitIterator
getCodeUnitIterator(java.lang.String property, boolean forward)
Get an iterator that contains all code units in the program which have the specified property type defined.CodeUnitIterator
getCodeUnitIterator(java.lang.String property, Address addr, boolean forward)
Get an iterator that contains the code units which have the specified property type defined.CodeUnitIterator
getCodeUnitIterator(java.lang.String property, AddressSetView addrSet, boolean forward)
Get an iterator that contains the code units which have the specified property type defined.CodeUnitIterator
getCodeUnits(boolean forward)
get a CodeUnit iterator that will iterate over the entire address space.CodeUnitIterator
getCodeUnits(Address addr, boolean forward)
Returns an iterator of the code units in this listing (in proper sequence), starting at the specified address.CodeUnitIterator
getCodeUnits(AddressSetView addrSet, boolean forward)
Get an iterator over the address range(s).java.lang.String
getComment(int commentType, Address address)
Get the comment for the given type at the specified address.AddressIterator
getCommentAddressIterator(int commentType, AddressSetView addrSet, boolean forward)
Get a forward iterator over addresses that have the specified comment type.AddressIterator
getCommentAddressIterator(AddressSetView addrSet, boolean forward)
Get a forward iterator over addresses that have any type of comment.CodeUnitIterator
getCommentCodeUnitIterator(int commentType, AddressSetView addrSet)
Get a forward code unit iterator over code units that have the specified comment type.CommentHistory[]
getCommentHistory(Address addr, int commentType)
Get the comment history for comments at the given address.DataIterator
getCompositeData(boolean forward)
Get an iterator over all the composite data objects (Arrays, Structures, and Union) in the program.DataIterator
getCompositeData(Address start, boolean forward)
Get an iterator over all the composite data objects (Arrays, Structures, and Union) in the program at or after the given Address.DataIterator
getCompositeData(AddressSetView addrSet, boolean forward)
Get an iterator over all the composite data objects (Arrays, Structures, and Union) within the specified address set in the program.DataIterator
getData(boolean forward)
get a Data iterator that will iterate over the entire address space; returning both defined and undefined Data objects.DataIterator
getData(Address addr, boolean forward)
Returns an iterator of the data in this listing (in proper sequence), starting at the specified address.DataIterator
getData(AddressSetView addrSet, boolean forward)
Get an iterator over the address range(s).Data
getDataAfter(Address addr)
get the closest Data object that starts at an address that is greater than the given address.Data
getDataAt(Address addr)
get the Data (Defined or Undefined) that starts at the given address.Data
getDataBefore(Address addr)
get the closest Data object that starts at an address that is less than the given address.Data
getDataContaining(Address addr)
Gets the data object that is at or contains the given address or null if the address in not in memory or is in an instruction.DataTypeManager
getDataTypeManager()
Get the data type manager for the program.ProgramModule
getDefaultRootModule()
Returns the root module for the default program tree.CodeUnit
getDefinedCodeUnitAfter(Address addr)
Returns the next instruction or defined data after the given address;CodeUnit
getDefinedCodeUnitBefore(Address addr)
Returns the closest instruction or defined data that starts before the given address.DataIterator
getDefinedData(boolean forward)
get a Data iterator that will iterate over the entire address space; returning only defined Data objects.DataIterator
getDefinedData(Address addr, boolean forward)
Returns an iterator of the defined data in this listing (in proper sequence), starting at the specified address.DataIterator
getDefinedData(AddressSetView addrSet, boolean forward)
Get an iterator over the address range(s).Data
getDefinedDataAfter(Address addr)
get the defined Data object that starts at an address that is greater than the given address.Data
getDefinedDataAt(Address addr)
get the Data (defined) object that starts at the given address.Data
getDefinedDataBefore(Address addr)
get the closest defined Data object that starts at an address that is less than the given address.Data
getDefinedDataContaining(Address addr)
get the Data object that starts at the given address.FunctionIterator
getExternalFunctions()
Get an iterator over all external functionsData
getFirstUndefinedData(AddressSetView set, TaskMonitor monitor)
Get the undefined Data object that falls within the set.ProgramFragment
getFragment(java.lang.String treeName, Address addr)
Returns the fragment containing the given address.ProgramFragment
getFragment(java.lang.String treeName, java.lang.String name)
Returns the fragment with the given name.Function
getFunctionAt(Address entryPoint)
Get a function with a given entry point.Function
getFunctionContaining(Address addr)
Get a function containing an address.FunctionIterator
getFunctions(boolean forward)
Get an iterator over all functionsFunctionIterator
getFunctions(Address start, boolean forward)
Get an iterator over all functions starting at addressFunctionIterator
getFunctions(AddressSetView asv, boolean forward)
Get an iterator over all functions with entry points in the address set.java.util.List<Function>
getFunctions(java.lang.String namespace, java.lang.String name)
Returns a list of all functions with the given name in the given namespace.java.util.List<Function>
getGlobalFunctions(java.lang.String name)
Returns a list of all global functions with the given name.Instruction
getInstructionAfter(Address addr)
get the closest Instruction that starts at an address that is greater than the given address.Instruction
getInstructionAt(Address addr)
get the Instruction that starts at the given address.Instruction
getInstructionBefore(Address addr)
get the closest Instruction that starts at an address that is less than the given address.Instruction
getInstructionContaining(Address addr)
get the Instruction that contains the given address.InstructionIterator
getInstructions(boolean forward)
get an Instruction iterator that will iterate over the entire address space.InstructionIterator
getInstructions(Address addr, boolean forward)
Returns an iterator of the instructions in this listing (in proper sequence), starting at the specified address.InstructionIterator
getInstructions(AddressSetView addrSet, boolean forward)
Get an Instruction iterator over the address range(s).ProgramModule
getModule(java.lang.String treeName, java.lang.String name)
Returns the module with the given name.long
getNumCodeUnits()
gets the total number of CodeUnits (Instructions, defined Data, and undefined Data)long
getNumDefinedData()
gets the total number of defined Data objects in the listing.long
getNumInstructions()
gets the total number of Instructions in the listing.PropertyMap
getPropertyMap(java.lang.String propertyName)
Returns the PropertyMap associated with the given nameProgramModule
getRootModule(long treeID)
Returns the root module of the program tree with the given name;ProgramModule
getRootModule(java.lang.String treeName)
Gets the root module for a tree in this listing.java.lang.String[]
getTreeNames()
Get the names of all the trees defined in this listing.Data
getUndefinedDataAfter(Address addr, TaskMonitor monitor)
Get the undefined Data object that starts at an address that is greater than the given address.Data
getUndefinedDataAt(Address addr)
get the Data (undefined) object that starts at the given address.Data
getUndefinedDataBefore(Address addr, TaskMonitor monitor)
get the closest undefined Data object that starts at an address that is less than the given address.AddressSetView
getUndefinedRanges(AddressSetView set, boolean initializedMemoryOnly, TaskMonitor monitor)
Get the address set which corresponds to all undefined code units within the specified set of address.java.util.Iterator<java.lang.String>
getUserDefinedProperties()
Returns an iterator over all user defined property names.boolean
isInFunction(Address addr)
Check if an address is contained in a functionboolean
isUndefined(Address start, Address end)
Checks if the given ranges consists entirely of undefined data.void
removeFunction(Address entryPoint)
Remove a function a given entry point.boolean
removeTree(java.lang.String treeName)
Remove the tree rooted at the given name.void
removeUserDefinedProperty(java.lang.String propertyName)
Removes the entire property from the programvoid
renameTree(java.lang.String oldName, java.lang.String newName)
Rename the tree.void
setComment(Address address, int commentType, java.lang.String comment)
Set the comment for the given comment type at the specified address.
-
-
-
Method Detail
-
getCodeUnitAt
public CodeUnit getCodeUnitAt(Address addr)
Description copied from interface:Listing
get the code unit that starts at the given address.- Specified by:
getCodeUnitAt
in interfaceListing
- Parameters:
addr
- the address to look for a codeUnit.- Returns:
- the codeUnit that begins at the given address
-
getCodeUnitContaining
public CodeUnit getCodeUnitContaining(Address addr)
Description copied from interface:Listing
get the code unit that contains the given address.- Specified by:
getCodeUnitContaining
in interfaceListing
- Parameters:
addr
- the address to look for a codeUnit.- Returns:
- the codeUnit that contains the given address
-
getCodeUnitAfter
public CodeUnit getCodeUnitAfter(Address addr)
Description copied from interface:Listing
get the next code unit that starts an an address that is greater than the given address. The search will include instructions, defined data, and undefined data.- Specified by:
getCodeUnitAfter
in interfaceListing
- Parameters:
addr
- the address from which to search forward.- Returns:
- the next CodeUnit found while searching forward from addr or null if none found.
-
getCodeUnitBefore
public CodeUnit getCodeUnitBefore(Address addr)
Description copied from interface:Listing
get the next code unit that starts at an address that is less than the given address. The search will include instructions, defined data, and undefined data.- Specified by:
getCodeUnitBefore
in interfaceListing
- Parameters:
addr
- the address from which to search backwards.- Returns:
- The first codeUnit found while searching backwards from addr or null if none found.
-
getCodeUnitIterator
public CodeUnitIterator getCodeUnitIterator(java.lang.String property, boolean forward)
Description copied from interface:Listing
Get an iterator that contains all code units in the program which have the specified property type defined. Standard property types are defined in the CodeUnit class. The property types are: EOL_COMMENT, PRE_COMMENT, POST_COMMENT, USER_REFERENCE, MNEMONIC_REFERENCE, VALUE_REFERENCE. Property types can also be user defined.- Specified by:
getCodeUnitIterator
in interfaceListing
- Parameters:
property
- the name of the property type.forward
- true means get iterator in forward direction- Returns:
- a CodeUnitIterator that returns all code units from the indicated start address that have the specified property type defined.
-
getCodeUnitIterator
public CodeUnitIterator getCodeUnitIterator(java.lang.String property, Address addr, boolean forward)
Description copied from interface:Listing
Get an iterator that contains the code units which have the specified property type defined. Only code units at an address greater than or equal to the specified start address will be returned by the iterator. If the start address is null then check the entire program. Standard property types are defined in the CodeUnit class. The property types are: EOL_COMMENT, PRE_COMMENT, POST_COMMENT, USER_REFERENCE, MNEMONIC_REFERENCE, VALUE_REFERENCE. Property types can also be user defined.- Specified by:
getCodeUnitIterator
in interfaceListing
- Parameters:
property
- the name of the property type. (EOL_COMMENT, PRE_COMMENT, POST_COMMENT, USER_REFERENCE, MNEMONIC_REFERENCE, VALUE_REFERENCE)addr
- the start addressforward
- true means get iterator in forward direction- Returns:
- a CodeUnitIterator that returns all code units from the indicated start address that have the specified property type defined.
-
getCodeUnitIterator
public CodeUnitIterator getCodeUnitIterator(java.lang.String property, AddressSetView addrSet, boolean forward)
Description copied from interface:Listing
Get an iterator that contains the code units which have the specified property type defined. Only code units starting within the address set will be returned by the iterator. If the address set is null then check the entire program. Standard property types are defined in the CodeUnit class.- Specified by:
getCodeUnitIterator
in interfaceListing
- Parameters:
property
- the name of the property type.addrSet
- the address setforward
- true means get iterator in forward direction- Returns:
- a CodeUnitIterator that returns all code units from the indicated address set that have the specified property type defined.
-
getCommentCodeUnitIterator
public CodeUnitIterator getCommentCodeUnitIterator(int commentType, AddressSetView addrSet)
Description copied from interface:Listing
Get a forward code unit iterator over code units that have the specified comment type.- Specified by:
getCommentCodeUnitIterator
in interfaceListing
- Parameters:
commentType
- type defined in CodeUnitaddrSet
- address set- Returns:
- a CodeUnitIterator that returns all code units from the indicated address set that have the specified comment type defined
-
getCommentAddressIterator
public AddressIterator getCommentAddressIterator(int commentType, AddressSetView addrSet, boolean forward)
Description copied from interface:Listing
Get a forward iterator over addresses that have the specified comment type.- Specified by:
getCommentAddressIterator
in interfaceListing
- Parameters:
commentType
- type defined in CodeUnitaddrSet
- address setforward
- true to iterator from lowest address to highest, false highest to lowest- Returns:
- an AddressIterator that returns all addresses from the indicated address set that have the specified comment type defined
-
getCommentAddressIterator
public AddressIterator getCommentAddressIterator(AddressSetView addrSet, boolean forward)
Description copied from interface:Listing
Get a forward iterator over addresses that have any type of comment.- Specified by:
getCommentAddressIterator
in interfaceListing
- Parameters:
addrSet
- address setforward
- true to iterator from lowest address to highest, false highest to lowest- Returns:
- an AddressIterator that returns all addresses from the indicated address set that have any type of comment.
-
getComment
public java.lang.String getComment(int commentType, Address address)
Description copied from interface:Listing
Get the comment for the given type at the specified address.- Specified by:
getComment
in interfaceListing
- Parameters:
commentType
- either EOL_COMMENT, PRE_COMMENT, POST_COMMENT, PLATE_COMMENT, or REPEATABLE_COMMENTaddress
- the address of the comment.- Returns:
- the comment string of the appropriate type or null if no comment of that type exists for this codeunit
-
setComment
public void setComment(Address address, int commentType, java.lang.String comment)
Description copied from interface:Listing
Set the comment for the given comment type at the specified address.- Specified by:
setComment
in interfaceListing
- Parameters:
address
- the address of the comment.commentType
- either EOL_COMMENT, PRE_COMMENT, POST_COMMENT, PLATE_COMMENT, or REPEATABLE_COMMENTcomment
- comment to set at the address
-
getCodeUnits
public CodeUnitIterator getCodeUnits(boolean forward)
Description copied from interface:Listing
get a CodeUnit iterator that will iterate over the entire address space.- Specified by:
getCodeUnits
in interfaceListing
- Parameters:
forward
- true means get iterator in forward direction- Returns:
- a CodeUnitIterator in forward direction
-
getCodeUnits
public CodeUnitIterator getCodeUnits(Address addr, boolean forward)
Description copied from interface:Listing
Returns an iterator of the code units in this listing (in proper sequence), starting at the specified address. The specified address indicates the first code unit that would be returned by an initial call to the next method. An initial call to the previous method would return the code unit with an address less than the specified address.- Specified by:
getCodeUnits
in interfaceListing
- Parameters:
addr
- the start address of the iterator.forward
- true means get iterator in forward direction- Returns:
- a CodeUnitIterator positioned just before addr.
-
getCodeUnits
public CodeUnitIterator getCodeUnits(AddressSetView addrSet, boolean forward)
Description copied from interface:Listing
Get an iterator over the address range(s). Only code units whose start addresses are contained in the given address set will be returned by the iterator.- Specified by:
getCodeUnits
in interfaceListing
- Parameters:
addrSet
- the AddressRangeSet to iterate over.forward
- true means get iterator in forward direction- Returns:
- a CodeUnitIterator that is restricted to the give AddressRangeSet.
-
getInstructionAt
public Instruction getInstructionAt(Address addr)
Description copied from interface:Listing
get the Instruction that starts at the given address. If no Instruction has been defined to start at that address, return null.- Specified by:
getInstructionAt
in interfaceListing
- Parameters:
addr
- the address to check for the start of an instruction- Returns:
- the Instruction object that starts at addr; or null if no Instructions starts at addr.
-
getInstructionContaining
public Instruction getInstructionContaining(Address addr)
Description copied from interface:Listing
get the Instruction that contains the given address. If an Instruction is defined that contains that address, it will be returned. Otherwise, null will be returned.- Specified by:
getInstructionContaining
in interfaceListing
- Parameters:
addr
- the address to check for containment in an Instruction.- Returns:
- the Instruction object that contains addr; or null if no Instructions contain addr.
-
getInstructionAfter
public Instruction getInstructionAfter(Address addr)
Description copied from interface:Listing
get the closest Instruction that starts at an address that is greater than the given address.- Specified by:
getInstructionAfter
in interfaceListing
- Parameters:
addr
- The address at which to begin the forward search.- Returns:
- the next Instruction whose starting address is greater than addr.
-
getInstructionBefore
public Instruction getInstructionBefore(Address addr)
Description copied from interface:Listing
get the closest Instruction that starts at an address that is less than the given address.- Specified by:
getInstructionBefore
in interfaceListing
- Parameters:
addr
- The address at which to begin the backward search.- Returns:
- the closest Instruction whose starting address is less than addr.
-
getInstructions
public InstructionIterator getInstructions(boolean forward)
Description copied from interface:Listing
get an Instruction iterator that will iterate over the entire address space.- Specified by:
getInstructions
in interfaceListing
- Parameters:
forward
- true means get iterator in forward direction- Returns:
- an InstructionIterator that iterates over all instructions in the program.
-
getInstructions
public InstructionIterator getInstructions(Address addr, boolean forward)
Description copied from interface:Listing
Returns an iterator of the instructions in this listing (in proper sequence), starting at the specified address. The specified address indicates the first instruction that would be returned by an initial call to the next method. An initial call to the previous method would return the instruction with an address less than the specified address.- Specified by:
getInstructions
in interfaceListing
- Parameters:
addr
- the initial position of the iteratorforward
- true means get iterator in forward direction- Returns:
- an InstructionIterator that iterates over all Instruction objects in the given address range set.
-
getInstructions
public InstructionIterator getInstructions(AddressSetView addrSet, boolean forward)
Description copied from interface:Listing
Get an Instruction iterator over the address range(s). Only instructions whose start addresses are contained in the given address set will be returned by the iterator.- Specified by:
getInstructions
in interfaceListing
- Parameters:
addrSet
- the address range set to iterate over.forward
- true means get iterator in forward direction- Returns:
- a DataIterator that iterates over all defined and undefined Data objects in the given address range set.
-
getDataAt
public Data getDataAt(Address addr)
Description copied from interface:Listing
get the Data (Defined or Undefined) that starts at the given address.
-
getDataContaining
public Data getDataContaining(Address addr)
Description copied from interface:Listing
Gets the data object that is at or contains the given address or null if the address in not in memory or is in an instruction.- Specified by:
getDataContaining
in interfaceListing
- Parameters:
addr
- the address for which to find its containing data element.- Returns:
- the Data object containing the given address or null if there is no data that contains the address.
-
getDataAfter
public Data getDataAfter(Address addr)
Description copied from interface:Listing
get the closest Data object that starts at an address that is greater than the given address.- Specified by:
getDataAfter
in interfaceListing
- Parameters:
addr
- the address at which to begin the forward search.- Returns:
- the next Data object whose starting address is greater than addr.
-
getDataBefore
public Data getDataBefore(Address addr)
Description copied from interface:Listing
get the closest Data object that starts at an address that is less than the given address.- Specified by:
getDataBefore
in interfaceListing
- Parameters:
addr
- The address at which to begin the backward search.- Returns:
- the closest Data object whose starting address is less than addr.
-
getData
public DataIterator getData(boolean forward)
Description copied from interface:Listing
get a Data iterator that will iterate over the entire address space; returning both defined and undefined Data objects.
-
getData
public DataIterator getData(Address addr, boolean forward)
Description copied from interface:Listing
Returns an iterator of the data in this listing (in proper sequence), starting at the specified address. The specified address indicates the first Data that would be returned by an initial call to the next method. An initial call to the previous method would return the Data with an address less than the specified address.
-
getData
public DataIterator getData(AddressSetView addrSet, boolean forward)
Description copied from interface:Listing
Get an iterator over the address range(s). Only data whose start addresses are contained in the given address set will be returned by the iterator.
-
getDefinedDataAt
public Data getDefinedDataAt(Address addr)
Description copied from interface:Listing
get the Data (defined) object that starts at the given address. If no Data object is defined at that address, then return null.- Specified by:
getDefinedDataAt
in interfaceListing
- Parameters:
addr
- The address to check for defined Data.- Returns:
- a Data object that starts at addr, or null if no Data object has been defined to start at addr.
-
getDefinedDataContaining
public Data getDefinedDataContaining(Address addr)
Description copied from interface:Listing
get the Data object that starts at the given address. If no Data objects have been defined that contain that address, then return null.- Specified by:
getDefinedDataContaining
in interfaceListing
- Parameters:
addr
- the address to check for containment in a defined Data object.- Returns:
- the defined Data object containing addr.
-
getDefinedDataAfter
public Data getDefinedDataAfter(Address addr)
Description copied from interface:Listing
get the defined Data object that starts at an address that is greater than the given address.- Specified by:
getDefinedDataAfter
in interfaceListing
- Parameters:
addr
- the address at which to begin the forward search.- Returns:
- the next defined Data object whose starting address is greater than addr.
-
getDefinedDataBefore
public Data getDefinedDataBefore(Address addr)
Description copied from interface:Listing
get the closest defined Data object that starts at an address that is less than the given address.- Specified by:
getDefinedDataBefore
in interfaceListing
- Parameters:
addr
- The address at which to begin the backward search.- Returns:
- the closest defined Data object whose starting address is less than addr.
-
getDefinedData
public DataIterator getDefinedData(boolean forward)
Description copied from interface:Listing
get a Data iterator that will iterate over the entire address space; returning only defined Data objects.- Specified by:
getDefinedData
in interfaceListing
- Parameters:
forward
- true means get iterator in forward direction- Returns:
- a DataIterator that iterates over all defined Data objects in the program.
-
getDefinedData
public DataIterator getDefinedData(Address addr, boolean forward)
Description copied from interface:Listing
Returns an iterator of the defined data in this listing (in proper sequence), starting at the specified address. The specified address indicates the first defined Data that would be returned by an initial call to the next method. An initial call to the previous method would return the defined Data with an address less than the specified address.- Specified by:
getDefinedData
in interfaceListing
- Parameters:
addr
- the initial position of the iteratorforward
- true means get iterator in forward direction- Returns:
- a DataIterator that iterates over all defined Data objects in the given address range set.
-
getDefinedData
public DataIterator getDefinedData(AddressSetView addrSet, boolean forward)
Description copied from interface:Listing
Get an iterator over the address range(s). Only defined data whose start addresses are contained in the given address set will be returned by the iterator.- Specified by:
getDefinedData
in interfaceListing
- Parameters:
addrSet
- the address range set to iterate over.forward
- true means get iterator in forward direction- Returns:
- a DataIterator that iterates over all defined Data objects in the given address range set.
-
getUndefinedDataAt
public Data getUndefinedDataAt(Address addr)
Description copied from interface:Listing
get the Data (undefined) object that starts at the given address.- Specified by:
getUndefinedDataAt
in interfaceListing
- Parameters:
addr
- The address to check for undefined data.- Returns:
- a default DataObject if bytes exist at addr and nothing has been defined to exist there. Otherwise returns null.
-
getUndefinedDataAfter
public Data getUndefinedDataAfter(Address addr, TaskMonitor monitor)
Description copied from interface:Listing
Get the undefined Data object that starts at an address that is greater than the given address. This operation can be slow for large programs so a TaskMonitor is required.- Specified by:
getUndefinedDataAfter
in interfaceListing
- Parameters:
addr
- the address at which to begin the forward search.monitor
- a task monitor allowing this operation to be cancelled- Returns:
- the next undefined Data object whose starting address is greater than addr.
-
getFirstUndefinedData
public Data getFirstUndefinedData(AddressSetView set, TaskMonitor monitor)
Description copied from interface:Listing
Get the undefined Data object that falls within the set. This operation can be slow for large programs so a TaskMonitor is required.- Specified by:
getFirstUndefinedData
in interfaceListing
- Parameters:
set
- the addressSet at which to find the first undefined address.monitor
- a task monitor allowing this operation to be cancelled- Returns:
- the next undefined Data object whose starting address falls within the addresSet.
-
getUndefinedDataBefore
public Data getUndefinedDataBefore(Address addr, TaskMonitor monitor)
Description copied from interface:Listing
get the closest undefined Data object that starts at an address that is less than the given address. This operation can be slow for large programs so a TaskMonitor is required.- Specified by:
getUndefinedDataBefore
in interfaceListing
- Parameters:
addr
- The address at which to begin the backward search.monitor
- a task monitor allowing this operation to be cancelled- Returns:
- the closest undefined Data object whose starting address is less than addr.
-
getUndefinedRanges
public AddressSetView getUndefinedRanges(AddressSetView set, boolean initializedMemoryOnly, TaskMonitor monitor) throws CancelledException
Description copied from interface:Listing
Get the address set which corresponds to all undefined code units within the specified set of address.- Specified by:
getUndefinedRanges
in interfaceListing
- Parameters:
set
- set of addresses to searchinitializedMemoryOnly
- if true set will be constrained to initialized memory areas, if false set will be constrained to all defined memory blocks.monitor
- task monitor- Returns:
- address set corresponding to undefined code units
- Throws:
CancelledException
- if monitor cancelled
-
getDefinedCodeUnitAfter
public CodeUnit getDefinedCodeUnitAfter(Address addr)
Description copied from interface:Listing
Returns the next instruction or defined data after the given address;- Specified by:
getDefinedCodeUnitAfter
in interfaceListing
- Parameters:
addr
- the address at which to begin the search- Returns:
- the next instruction or defined data at an address higher than the given address.
-
getDefinedCodeUnitBefore
public CodeUnit getDefinedCodeUnitBefore(Address addr)
Description copied from interface:Listing
Returns the closest instruction or defined data that starts before the given address.- Specified by:
getDefinedCodeUnitBefore
in interfaceListing
- Parameters:
addr
- the address at which to begin the search- Returns:
- the closest instruction or defined data at an address below the given address.
-
getCompositeData
public DataIterator getCompositeData(boolean forward)
Description copied from interface:Listing
Get an iterator over all the composite data objects (Arrays, Structures, and Union) in the program.- Specified by:
getCompositeData
in interfaceListing
- Parameters:
forward
- true means get iterator that starts at the minimum address and iterates forward. Otherwise it starts at the maximum address and iterates backwards.- Returns:
- an iterator over all the composite data objects.
-
getCompositeData
public DataIterator getCompositeData(Address start, boolean forward)
Description copied from interface:Listing
Get an iterator over all the composite data objects (Arrays, Structures, and Union) in the program at or after the given Address.- Specified by:
getCompositeData
in interfaceListing
- Parameters:
start
- start of the iteratorforward
- true means get iterator in forward direction- Returns:
- an iterator over all the composite data objects starting with the given address.
-
getCompositeData
public DataIterator getCompositeData(AddressSetView addrSet, boolean forward)
Description copied from interface:Listing
Get an iterator over all the composite data objects (Arrays, Structures, and Union) within the specified address set in the program.- Specified by:
getCompositeData
in interfaceListing
- Parameters:
addrSet
- the address setforward
- true means get iterator in forward direction- Returns:
- an iterator over all the composite data objects in the given address set.
-
getUserDefinedProperties
public java.util.Iterator<java.lang.String> getUserDefinedProperties()
Description copied from interface:Listing
Returns an iterator over all user defined property names.- Specified by:
getUserDefinedProperties
in interfaceListing
- Returns:
- an iterator over all user defined property names.
-
removeUserDefinedProperty
public void removeUserDefinedProperty(java.lang.String propertyName)
Description copied from interface:Listing
Removes the entire property from the program- Specified by:
removeUserDefinedProperty
in interfaceListing
- Parameters:
propertyName
- the name of the property to remove.
-
getPropertyMap
public PropertyMap getPropertyMap(java.lang.String propertyName)
Description copied from interface:Listing
Returns the PropertyMap associated with the given name- Specified by:
getPropertyMap
in interfaceListing
- Parameters:
propertyName
- the property name- Returns:
- PropertyMap the propertyMap object.
-
createInstruction
public Instruction createInstruction(Address addr, InstructionPrototype prototype, MemBuffer memBuf, ProcessorContextView context) throws CodeUnitInsertionException
Description copied from interface:Listing
Creates a new Instruction object at the given address. The specified context is only used to create the associated prototype. It is critical that the context be written immediately after creation of the instruction and must be done with a single set operation on the program context. Once a set context is done on the instruction address, any subsequent context changes will result in aContextChangeException
- Specified by:
createInstruction
in interfaceListing
- Parameters:
addr
- the address at which to create an instructionprototype
- the InstructionPrototype the describes the type of instruction to create.memBuf
- buffer that provides the bytes that make up the instruction.context
- the processor context at this location.- Returns:
- the newly created instruction.
- Throws:
CodeUnitInsertionException
- thrown if the new Instruction would overlap and existing Instruction or defined data.
-
addInstructions
public AddressSetView addInstructions(InstructionSet instructionSet, boolean overwrite) throws CodeUnitInsertionException
Description copied from interface:Listing
Creates a complete set of instructions. A preliminary pass will be made checking for code unit conflicts which will be marked within the instructionSet causing dependent blocks to get pruned.- Specified by:
addInstructions
in interfaceListing
- Parameters:
instructionSet
- the set of instructions to be added. All code unit conflicts will be marked within the instructionSet and associated blocks.overwrite
- if true, overwrites existing code units.- Returns:
- the set of addresses over which instructions were actually added to the program. This may differ from the InstructionSet address set if conflict errors occurred. Such conflict errors will be recorded within the InstructionSet and its InstructionBlocks.
- Throws:
CodeUnitInsertionException
- if the instruction set is incompatible with the program memory
-
createData
public Data createData(Address addr, DataType dataType, int length) throws CodeUnitInsertionException, DataTypeConflictException
Description copied from interface:Listing
Creates a new defined Data object of a given length at the given address. This ignores the bytes that are present- Specified by:
createData
in interfaceListing
- Parameters:
addr
- the address at which to create a new Data object.dataType
- the Data Type that describes the type of Data object to create.length
- the length of the datatype.- Returns:
- newly created data unit
- Throws:
CodeUnitInsertionException
- thrown if the new Instruction would overlap and existing Instruction or defined data.DataTypeConflictException
- if the given datatype conflicts (same name, but not equal) with an existing datatype.
-
createData
public Data createData(Address addr, DataType dataType) throws CodeUnitInsertionException, DataTypeConflictException
Description copied from interface:Listing
Creates a new defined Data object at the given address. This ignores the bytes that are present- Specified by:
createData
in interfaceListing
- Parameters:
addr
- the address at which to create a new Data object.dataType
- the Data Type that describes the type of Data object to create.- Returns:
- newly created data unit
- Throws:
CodeUnitInsertionException
- thrown if the new Instruction would overlap and existing Instruction or defined data.DataTypeConflictException
- if the given datatype conflicts (same name, but not equal) with an existing datatype.
-
clearCodeUnits
public void clearCodeUnits(Address startAddr, Address endAddr, boolean clearContext)
Description copied from interface:Listing
Clears any code units in the given range returning everything to "db"s, and removing any references in the affected area. Note that the module and fragment structure is unaffected. If part of a code unit is contained in the given address range then the whole code unit will be cleared.- Specified by:
clearCodeUnits
in interfaceListing
- Parameters:
startAddr
- the start address of the area to be cleared.endAddr
- the end address of the area to be cleared.clearContext
- clear context register values if true
-
clearCodeUnits
public void clearCodeUnits(Address startAddr, Address endAddr, boolean clearContext, TaskMonitor monitor) throws CancelledException
Description copied from interface:Listing
Clears any code units in the given range returning everything to "db"s, and removing any references in the affected area. Note that the module and fragment structure is unaffected. If part of a code unit is contained in the given address range then the whole code unit will be cleared.- Specified by:
clearCodeUnits
in interfaceListing
- Parameters:
startAddr
- the start address of the area to be cleared.endAddr
- the end address of the area to be cleared.clearContext
- clear context register values if truemonitor
- monitor that can be used to cancel the clear operation- Throws:
CancelledException
- if the operation was cancelled.
-
isUndefined
public boolean isUndefined(Address start, Address end)
Description copied from interface:Listing
Checks if the given ranges consists entirely of undefined data.- Specified by:
isUndefined
in interfaceListing
- Parameters:
start
- The start address of the range to check.end
- The end address of the range to check.- Returns:
- boolean true if the given range is in memory and has no instructions or defined data.
-
clearComments
public void clearComments(Address startAddr, Address endAddr)
Description copied from interface:Listing
Clears the comments in the given range.- Specified by:
clearComments
in interfaceListing
- Parameters:
startAddr
- the start address of the range to be clearedendAddr
- the end address of the range to be cleard
-
clearProperties
public void clearProperties(Address startAddr, Address endAddr, TaskMonitor monitor) throws CancelledException
Description copied from interface:Listing
Clears the properties in the given range.- Specified by:
clearProperties
in interfaceListing
- Parameters:
startAddr
- the start address of the range to be clearedendAddr
- the end address of the range to be cleardmonitor
- task monitor for cancelling operation.- Throws:
CancelledException
- if the operation was cancelled.
-
clearAll
public void clearAll(boolean clearContext, TaskMonitor monitor)
Description copied from interface:Listing
Removes all CodeUnits, comments, properties, and references from the listing.
-
getFragment
public ProgramFragment getFragment(java.lang.String treeName, Address addr)
Description copied from interface:Listing
Returns the fragment containing the given address.- Specified by:
getFragment
in interfaceListing
- Parameters:
treeName
- name of the tree to searchaddr
- the address that is contained within a fragment.- Returns:
- will return null if the address is not in the program.
-
getModule
public ProgramModule getModule(java.lang.String treeName, java.lang.String name)
Description copied from interface:Listing
Returns the module with the given name.
-
getDefaultRootModule
public ProgramModule getDefaultRootModule()
Description copied from interface:Listing
Returns the root module for the default program tree. This would be the program tree that has existed the longest.- Specified by:
getDefaultRootModule
in interfaceListing
- Returns:
- the root module for the oldest existing program tree.
-
getFragment
public ProgramFragment getFragment(java.lang.String treeName, java.lang.String name)
Description copied from interface:Listing
Returns the fragment with the given name.- Specified by:
getFragment
in interfaceListing
- Parameters:
treeName
- name of the tree to searchname
- the name of the fragment to find.- Returns:
- will return null if there is no fragment with the given name.
-
createRootModule
public ProgramModule createRootModule(java.lang.String treeName) throws DuplicateNameException
Description copied from interface:Listing
Create a new tree that will be identified by the given name. By default, the new root module is populated with fragments based on memory blocks. Note that the root module's name is not the same as its tree name. The root module name defaults to the name of the program.- Specified by:
createRootModule
in interfaceListing
- Parameters:
treeName
- name of the tree to search- Returns:
- root module
- Throws:
DuplicateNameException
- if a tree with the given name already exists
-
getRootModule
public ProgramModule getRootModule(java.lang.String treeName)
Description copied from interface:Listing
Gets the root module for a tree in this listing.- Specified by:
getRootModule
in interfaceListing
- Parameters:
treeName
- name of tree- Returns:
- the root module for the listing; returns null if there is no tree rooted at a module with the given name.
-
getRootModule
public ProgramModule getRootModule(long treeID)
Description copied from interface:Listing
Returns the root module of the program tree with the given name;- Specified by:
getRootModule
in interfaceListing
- Parameters:
treeID
- id of the program tree- Returns:
- the root module of the specified tree.
-
getTreeNames
public java.lang.String[] getTreeNames()
Description copied from interface:Listing
Get the names of all the trees defined in this listing.- Specified by:
getTreeNames
in interfaceListing
- Returns:
- the names of all program trees defined in the program.
-
removeTree
public boolean removeTree(java.lang.String treeName)
Description copied from interface:Listing
Remove the tree rooted at the given name.- Specified by:
removeTree
in interfaceListing
- Parameters:
treeName
- the name of the tree to remove.- Returns:
- true if the tree was removed; return false if this is the last tree for the program; cannot delete the last tree.
-
renameTree
public void renameTree(java.lang.String oldName, java.lang.String newName) throws DuplicateNameException
Description copied from interface:Listing
Rename the tree. This method does not change the root module's name only the identifier for the tree.- Specified by:
renameTree
in interfaceListing
- Parameters:
oldName
- old name of the treenewName
- new name of the tree.- Throws:
DuplicateNameException
- if newName already exists for a root module
-
getNumCodeUnits
public long getNumCodeUnits()
Description copied from interface:Listing
gets the total number of CodeUnits (Instructions, defined Data, and undefined Data)- Specified by:
getNumCodeUnits
in interfaceListing
- Returns:
- the total number of CodeUnits in the listing.
-
getNumDefinedData
public long getNumDefinedData()
Description copied from interface:Listing
gets the total number of defined Data objects in the listing.- Specified by:
getNumDefinedData
in interfaceListing
- Returns:
- the total number of defined Data objects in the listing.
-
getNumInstructions
public long getNumInstructions()
Description copied from interface:Listing
gets the total number of Instructions in the listing.- Specified by:
getNumInstructions
in interfaceListing
- Returns:
- number of Instructions
-
getDataTypeManager
public DataTypeManager getDataTypeManager()
Description copied from interface:Listing
Get the data type manager for the program.- Specified by:
getDataTypeManager
in interfaceListing
- Returns:
- the datatype manager for the program.
-
createFunction
public Function createFunction(java.lang.String name, Address entryPoint, AddressSetView body, SourceType source) throws InvalidInputException, OverlappingFunctionException
Description copied from interface:Listing
Create a function with an entry point and a body of addresses.- Specified by:
createFunction
in interfaceListing
- Parameters:
name
- the name of the function to createentryPoint
- the entry point for the functionbody
- the address set that makes up the functions bodysource
- the source of this function- Returns:
- the created function
- Throws:
InvalidInputException
- if the name contains invalid charactersOverlappingFunctionException
- if the given body overlaps with an existing function.
-
createFunction
public Function createFunction(java.lang.String name, Namespace nameSpace, Address entryPoint, AddressSetView body, SourceType source) throws InvalidInputException, OverlappingFunctionException
Description copied from interface:Listing
Create a function in the specified namespace with an entry point and a body of addresses.- Specified by:
createFunction
in interfaceListing
- Parameters:
name
- the name of the function to createnameSpace
- the namespace in which to create the functionentryPoint
- the entry point for the functionbody
- the address set that makes up the functions bodysource
- the source of this function- Returns:
- the created function
- Throws:
InvalidInputException
- if the name contains invalid charactersOverlappingFunctionException
- if the given body overlaps with an existing function.
-
removeFunction
public void removeFunction(Address entryPoint)
Description copied from interface:Listing
Remove a function a given entry point.- Specified by:
removeFunction
in interfaceListing
- Parameters:
entryPoint
- entry point of function to be removed.
-
getFunctionAt
public Function getFunctionAt(Address entryPoint)
Description copied from interface:Listing
Get a function with a given entry point.- Specified by:
getFunctionAt
in interfaceListing
- Parameters:
entryPoint
- entry point of the function- Returns:
- function at the entry point
-
getFunctions
public java.util.List<Function> getFunctions(java.lang.String namespace, java.lang.String name)
Description copied from interface:Listing
Returns a list of all functions with the given name in the given namespace.- Specified by:
getFunctions
in interfaceListing
- Parameters:
namespace
- the namespace to search for functions of the given name. Can be null, in which case it will search the global namespace.name
- the name of the functions to retrieve.- Returns:
- a list of all global functions with the given name.
-
getFunctionContaining
public Function getFunctionContaining(Address addr)
Description copied from interface:Listing
Get a function containing an address.- Specified by:
getFunctionContaining
in interfaceListing
- Parameters:
addr
- the address to search.- Returns:
- function containing this address, null otherwise
-
getExternalFunctions
public FunctionIterator getExternalFunctions()
Description copied from interface:Listing
Get an iterator over all external functions- Specified by:
getExternalFunctions
in interfaceListing
- Returns:
- an iterator over all currently defined external functions.
-
getFunctions
public FunctionIterator getFunctions(boolean forward)
Description copied from interface:Listing
Get an iterator over all functions- Specified by:
getFunctions
in interfaceListing
- Parameters:
forward
- if true functions are return in address order, otherwise backwards address order- Returns:
- an iterator over all currently defined functions.
-
getFunctions
public FunctionIterator getFunctions(Address start, boolean forward)
Description copied from interface:Listing
Get an iterator over all functions starting at address- Specified by:
getFunctions
in interfaceListing
- Parameters:
start
- the address to start iterating at.forward
- if true functions are return in address order, otherwise backwards address order- Returns:
- an iterator over functions
-
getFunctions
public FunctionIterator getFunctions(AddressSetView asv, boolean forward)
Description copied from interface:Listing
Get an iterator over all functions with entry points in the address set.- Specified by:
getFunctions
in interfaceListing
- Parameters:
asv
- the set of addresses to iterator function entry points over.forward
- if true functions are return in address order, otherwise backwards address order- Returns:
- an iterator over functions
-
isInFunction
public boolean isInFunction(Address addr)
Description copied from interface:Listing
Check if an address is contained in a function- Specified by:
isInFunction
in interfaceListing
- Parameters:
addr
- address to test- Returns:
- true if this address is in one or more functions
-
getCommentHistory
public CommentHistory[] getCommentHistory(Address addr, int commentType)
Description copied from interface:Listing
Get the comment history for comments at the given address.- Specified by:
getCommentHistory
in interfaceListing
- Parameters:
addr
- address for commentscommentType
- comment type defined in CodeUnit- Returns:
- array of comment history records
-
getGlobalFunctions
public java.util.List<Function> getGlobalFunctions(java.lang.String name)
Description copied from interface:Listing
Returns a list of all global functions with the given name.- Specified by:
getGlobalFunctions
in interfaceListing
- Parameters:
name
- the name of the functions to retrieve.- Returns:
- a list of all global functions with the given name.
-
-