Package ghidra.app.util.opinion
Class AbstractProgramWrapperLoader
java.lang.Object
ghidra.app.util.opinion.AbstractProgramLoader
ghidra.app.util.opinion.AbstractProgramWrapperLoader
- All Implemented Interfaces:
Loader
,ExtensionPoint
,Comparable<Loader>
- Direct Known Subclasses:
DefLoader
,DyldCacheLoader
,MapLoader
,OmfLoader
,PefLoader
An abstract
Loader
that provides a convenience wrapper around
AbstractProgramLoader
, minimizing the amount of work a subclass needs to do to load a
Program
-
Nested Class Summary
Nested classes/interfaces inherited from class ghidra.app.util.opinion.AbstractProgramLoader
AbstractProgramLoader.LoadedProgram
-
Field Summary
Fields inherited from class ghidra.app.util.opinion.AbstractProgramLoader
ANCHOR_LABELS_OPTION_NAME, APPLY_LABELS_OPTION_NAME
Fields inherited from interface ghidra.app.util.opinion.Loader
COMMAND_LINE_ARG_PREFIX
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetTier()
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).protected abstract void
load
(ByteProvider provider, LoadSpec loadSpec, List<Option> options, Program program, TaskMonitor monitor, MessageLog log) Loads bytes in a particular format into the givenProgram
.protected List<AbstractProgramLoader.LoadedProgram>
loadProgram
(ByteProvider provider, String programName, DomainFolder programFolder, LoadSpec loadSpec, List<Option> options, MessageLog log, Object consumer, TaskMonitor monitor) Loads program bytes in a particular format as a newProgram
.protected boolean
loadProgramInto
(ByteProvider provider, LoadSpec loadSpec, List<Option> options, MessageLog log, Program program, TaskMonitor monitor) Loads program bytes into the specifiedProgram
.Methods inherited from class ghidra.app.util.opinion.AbstractProgramLoader
createDefaultMemoryBlocks, createProgram, generateBlockName, getDefaultOptions, getLanguageService, isOverrideMainProgramName, load, loadInto, markAsFunction, postLoadProgramFixups, release, setProgramProperties, shouldApplyProcessorLabelsByDefault, validateOptions
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, findSupportedLoadSpecs, getName, getPreferredFileName, supportsLoadIntoProgram
-
Constructor Details
-
AbstractProgramWrapperLoader
public AbstractProgramWrapperLoader()
-
-
Method Details
-
load
protected abstract void load(ByteProvider provider, LoadSpec loadSpec, List<Option> options, Program program, TaskMonitor monitor, MessageLog log) throws CancelledException, IOException Loads bytes in a particular format into the givenProgram
.- Parameters:
provider
- The bytes to load.loadSpec
- TheLoadSpec
to use during load.options
- The load options.program
- TheProgram
to load into.monitor
- A cancelable task monitor.log
- The message log.- Throws:
IOException
- if there was an IO-related problem loading.CancelledException
- if the user cancelled the load.
-
loadProgram
protected List<AbstractProgramLoader.LoadedProgram> loadProgram(ByteProvider provider, String programName, DomainFolder programFolder, LoadSpec loadSpec, List<Option> options, MessageLog log, Object consumer, TaskMonitor monitor) throws CancelledException, IOException Description copied from class:AbstractProgramLoader
Loads program bytes in a particular format as a newProgram
. MultipleProgram
s may end up getting created, depending on the nature of the format.- Specified by:
loadProgram
in classAbstractProgramLoader
- Parameters:
provider
- The bytes to load.programName
- The name of theProgram
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.log
- The message log.consumer
- A consumer object forProgram
s generated.monitor
- A cancelable task monitor.- Returns:
- A list of
loaded programs
(element 0 corresponds to primary loadedProgram
). - Throws:
CancelledException
- if the user cancelled the load.IOException
- if there was an IO-related problem loading.
-
loadProgramInto
protected boolean loadProgramInto(ByteProvider provider, LoadSpec loadSpec, List<Option> options, MessageLog log, Program program, TaskMonitor monitor) throws CancelledException, IOException Description copied from class:AbstractProgramLoader
Loads program bytes into the specifiedProgram
. This method will not create any newProgram
s. It is only for adding to an existingProgram
.NOTE: The loading that occurs in this method will automatically be done in a transaction.
- Specified by:
loadProgramInto
in classAbstractProgramLoader
- Parameters:
provider
- The bytes to load into theProgram
.loadSpec
- TheLoadSpec
to use during load.options
- The load options.log
- The message log.program
- TheProgram
to load into.monitor
- A cancelable task monitor.- Returns:
- True if the file was successfully loaded; otherwise, false.
- Throws:
CancelledException
- if the user cancelled the load.IOException
- if there was an IO-related problem loading.
-
getTier
Description copied from interface:Loader
For ordering purposes; lower tier numbers are more important (and listed first).- Returns:
- the tier of the loader
-
getTierPriority
public int getTierPriority()Description copied from interface:Loader
For ordering purposes; lower numbers are more important (and listed first, within its tier).- Returns:
- the ordering of the loader within its tier
-