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,Omf51Loader,OmfLoader,PefLoader,UnixAoutLoader
An abstract
Loader that provides a convenience wrapper around
AbstractProgramLoader, minimizing the amount of work a subclass needs to do to load a
Program-
Field Summary
Fields inherited from class ghidra.app.util.opinion.AbstractProgramLoader
ANCHOR_LABELS_OPTION_NAME, APPLY_LABELS_OPTION_NAMEFields inherited from interface ghidra.app.util.opinion.Loader
COMMAND_LINE_ARG_PREFIX, loggingDisabled, OPTIONS_PROJECT_SAVE_STATE_KEY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetTier()For ordering purposes; lower tier numbers are more important (and listed first).intFor ordering purposes; lower numbers are more important (and listed first, within its tier).protected abstract voidload(ByteProvider provider, LoadSpec loadSpec, List<Option> options, Program program, TaskMonitor monitor, MessageLog log) Loads bytes in a particular format into the givenProgram.loadProgram(ByteProvider provider, String programName, Project project, String programFolderPath, LoadSpec loadSpec, List<Option> options, MessageLog log, Object consumer, TaskMonitor monitor) protected voidloadProgramInto(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, joinPaths, load, loadInto, markAsFunction, postLoadCleanup, postLoadProgramFixups, release, setProgramProperties, shouldApplyProcessorLabelsByDefault, validateOptionsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ghidra.app.util.opinion.Loader
compareTo, findSupportedLoadSpecs, getName, getPreferredFileName, loadsIntoNewFolder, supportsLoadIntoProgram, 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- TheLoadSpecto use during load.options- The load options.program- TheProgramto 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<Loaded<Program>> loadProgram(ByteProvider provider, String programName, Project project, String programFolderPath, LoadSpec loadSpec, List<Option> options, MessageLog log, Object consumer, TaskMonitor monitor) throws IOException, CancelledException Description copied from class:AbstractProgramLoaderLoads bytes in a particular format as a newLoadedProgram. MultiplePrograms may end up getting created, depending on the nature of the format.Note that when the load completes, the returned
LoadedPrograms are not saved to a project. That is the responsibility of the caller (seeLoaded.save(Project, MessageLog, TaskMonitor)).It is also the responsibility of the caller to release the returned
LoadedPrograms withLoaded.release(Object)when they are no longer needed.- Specified by:
loadProgramin classAbstractProgramLoader- Parameters:
provider- The bytes to load.programName- A suggested name for the primaryLoadedProgram. This is just a suggestion, and aLoaderimplementation reserves the right to change it. TheLoadedPrograms should be queried for their true names usingLoaded.getName().project- TheProject. Loaders can use this to take advantage of existingDomainFolders andDomainFiles to do custom behaviors such as loading libraries. Could be null if there is no project.programFolderPath- A suggested project folder path for theLoadedPrograms. This is just a suggestion, and aLoaderimplementation reserves the right to change it for eachLoadedresult. TheLoadedPrograms should be queried for their true project folder paths usingLoaded.getProjectFolderPath().loadSpec- TheLoadSpecto use during load.options- The load options.log- The message log.consumer- A consumer object for generatedPrograms.monitor- A task monitor.- Returns:
- A
Listof one or moreLoadedPrograms (created but not saved). - Throws:
IOException- if there was an IO-related problem loading.CancelledException- if the user cancelled the load.
-
loadProgramInto
protected void loadProgramInto(ByteProvider provider, LoadSpec loadSpec, List<Option> options, MessageLog log, Program program, TaskMonitor monitor) throws CancelledException, LoadException, IOException Description copied from class:AbstractProgramLoaderLoads program bytes into the specifiedProgram. This method will not create any newPrograms. 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:
loadProgramIntoin classAbstractProgramLoader- Parameters:
provider- The bytes to load into theProgram.loadSpec- TheLoadSpecto use during load.options- The load options.log- The message log.program- TheProgramto load into.monitor- A cancelable task monitor.- Throws:
CancelledException- if the user cancelled the load.LoadException- if the load failed in an expected way.IOException- if there was an IO-related problem loading.
-
getTier
Description copied from interface:LoaderFor 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:LoaderFor ordering purposes; lower numbers are more important (and listed first, within its tier).- Returns:
- the ordering of the loader within its tier
-