Package ghidra.app.util.opinion
Class GzfLoader
java.lang.Object
ghidra.app.util.opinion.GzfLoader
- All Implemented Interfaces:
Loader
,ExtensionPoint
,Comparable<Loader>
Loads a packed Ghidra program.
-
Field Summary
FieldsFields inherited from interface ghidra.app.util.opinion.Loader
COMMAND_LINE_ARG_PREFIX
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfindSupportedLoadSpecs
(ByteProvider provider) If thisLoader
supports loading the givenByteProvider
, this methods returns aCollection
of all supportedLoadSpec
s that contain discovered load specification information that thisLoader
will need to load.getDefaultOptions
(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram) Gets the defaultLoader
options.getName()
getPreferredFileName
(ByteProvider provider) The preferred file name to use when loading.getTier()
For ordering purposes; lower tier numbers are more important (and listed first).int
For ordering purposes; lower numbers are more important (and listed first, within its tier).load
(ByteProvider provider, String programName, DomainFolder programFolder, LoadSpec loadSpec, List<Option> options, MessageLog messageLog, Object consumer, TaskMonitor monitor) Loads bytes in a particular format as a newDomainObject
.boolean
loadInto
(ByteProvider provider, LoadSpec loadSpec, List<Option> options, MessageLog messageLog, Program program, TaskMonitor monitor) Loads bytes into the specifiedProgram
.validateOptions
(ByteProvider provider, LoadSpec loadSpec, List<Option> options, Program program) Validates theLoader
's options and returns null if all options are valid; otherwise, an error message describing the problem is returned.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface ghidra.app.util.opinion.Loader
compareTo, supportsLoadIntoProgram
-
Field Details
-
GZF_NAME
- See Also:
-
-
Constructor Details
-
GzfLoader
public GzfLoader()
-
-
Method Details
-
getTier
Description copied from interface:Loader
For ordering purposes; lower tier numbers are more important (and listed first). -
getTierPriority
public int getTierPriority()Description copied from interface:Loader
For ordering purposes; lower numbers are more important (and listed first, within its tier).- Specified by:
getTierPriority
in interfaceLoader
- Returns:
- the ordering of the loader within its tier
-
validateOptions
public String validateOptions(ByteProvider provider, LoadSpec loadSpec, List<Option> options, Program program) Description copied from interface:Loader
Validates theLoader
's options and returns null if all options are valid; otherwise, an error message describing the problem is returned.- Specified by:
validateOptions
in interfaceLoader
- Parameters:
provider
- The bytes of the thing being loaded.loadSpec
- The proposedLoadSpec
.options
- The list ofOption
s to validate.program
- existing program if the loader is adding to an existing program. If it is a fresh import, then this will be null.- Returns:
- null if all
Option
s are valid; otherwise, an error message describing the problem is returned.
-
getDefaultOptions
public List<Option> getDefaultOptions(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram) Description copied from interface:Loader
Gets the defaultLoader
options.- Specified by:
getDefaultOptions
in interfaceLoader
- Parameters:
provider
- The bytes of the thing being loaded.loadSpec
- TheLoadSpec
.domainObject
- TheDomainObject
being loaded.loadIntoProgram
- True if the load is adding to an existingDomainObject
; otherwise, false.- Returns:
- A list of the
Loader
's default options.
-
load
public List<DomainObject> load(ByteProvider provider, String programName, DomainFolder programFolder, LoadSpec loadSpec, List<Option> options, MessageLog messageLog, Object consumer, TaskMonitor monitor) throws IOException, CancelledException, DuplicateNameException, InvalidNameException, VersionException Description copied from interface:Loader
Loads bytes in a particular format as a newDomainObject
. MultipleDomainObject
s may end up getting created, depending on the nature of the format.- Specified by:
load
in interfaceLoader
- Parameters:
provider
- The bytes to load.programName
- The name of the thing that's being loaded.programFolder
- TheDomainFolder
where the loaded thing should be saved. Could be null if the thing should not be pre-saved.loadSpec
- TheLoadSpec
to use during load.options
- The load options.messageLog
- The message log.consumer
- A consumer object forDomainObject
generated.monitor
- A cancelable task monitor.- Returns:
- A list of loaded
DomainObject
s (element 0 corresponds to primary loaded object). - Throws:
IOException
- if there was an IO-related problem loading.CancelledException
- if the user cancelled the load.DuplicateNameException
- if the load resulted in a naming conflict with theDomainObject
.InvalidNameException
- if an invalidDomainObject
name was used during load.VersionException
- if there was an issue with database versions, probably due to a failed language upgrade.
-
loadInto
public boolean loadInto(ByteProvider provider, LoadSpec loadSpec, List<Option> options, MessageLog messageLog, Program program, TaskMonitor monitor) throws IOException, CancelledException Description copied from interface:Loader
Loads bytes into the specifiedProgram
. This method will not create any newProgram
s. It is only for adding to an existingProgram
.- Specified by:
loadInto
in interfaceLoader
- Parameters:
provider
- The bytes to load into theProgram
.loadSpec
- TheLoadSpec
to use during load.options
- The load options.messageLog
- The message log.program
- TheProgram
to load into.monitor
- A cancelable task monitor.- Returns:
- True if the file was successfully loaded; otherwise, false.
- Throws:
IOException
- if there was an IO-related problem loading.CancelledException
- if the user cancelled the load.
-
findSupportedLoadSpecs
Description copied from interface:Loader
If thisLoader
supports loading the givenByteProvider
, this methods returns aCollection
of all supportedLoadSpec
s that contain discovered load specification information that thisLoader
will need to load. If thisLoader
cannot support loading the givenByteProvider
, an emptyCollection
is returned.- Specified by:
findSupportedLoadSpecs
in interfaceLoader
- Parameters:
provider
- The bytes being loaded.- Returns:
- A
Collection
ofLoadSpec
s that thisLoader
supports loading, or an emptyCollection
if thisLoader
doesn't support loading the givenByteProvider
. - Throws:
IOException
- if there was an IO-related issue finding theLoadSpec
s.
-
getPreferredFileName
Description copied from interface:Loader
The preferred file name to use when loading.The default behavior of this method is to return the (cleaned up) name of the given
ByteProvider
.NOTE: This method may get called frequently, so only parse the given
ByteProvider
if absolutely necessary.- Specified by:
getPreferredFileName
in interfaceLoader
- Parameters:
provider
- The bytes to load.- Returns:
- The preferred file name to use when loading.
-
getName
Description copied from interface:Loader
-