Package ghidra.app.util.opinion
Class AbstractOrdinalSupportLoader
java.lang.Object
ghidra.app.util.opinion.AbstractProgramLoader
ghidra.app.util.opinion.AbstractLibrarySupportLoader
ghidra.app.util.opinion.AbstractOrdinalSupportLoader
- All Implemented Interfaces:
Loader
,ExtensionPoint
,Comparable<Loader>
An abstract
Loader
that provides support for programs that link to external libraries
with an ordinal mechanism. Supports caching library lookup information to XML files.-
Nested Class Summary
Nested classes/interfaces inherited from class ghidra.app.util.opinion.AbstractProgramLoader
AbstractProgramLoader.LoadedProgram
-
Field Summary
FieldsFields inherited from class ghidra.app.util.opinion.AbstractLibrarySupportLoader
DEPTH_OPTION_NAME, LIBRARY_DEST_FOLDER_OPTION_NAME, LINK_EXISTING_OPTION_NAME, LINK_SEARCH_FOLDER_OPTION_NAME, LOCAL_LIBRARY_OPTION_NAME, SYSTEM_LIBRARY_OPTION_NAME
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 TypeMethodDescriptiongetDefaultOptions
(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram) Gets the defaultLoader
options.protected void
postLoadProgramFixups
(List<AbstractProgramLoader.LoadedProgram> loadedPrograms, List<Option> options, MessageLog messageLog, TaskMonitor monitor) This gets called after the given list ofprograms
s is finished loading.protected boolean
processLibrary
(Program lib, String libName, File libFile, ByteProvider provider, LoadSpec loadSpec, List<Option> options, MessageLog log, TaskMonitor monitor) Performs optional follow-on actions after an the given library has been loadedprotected boolean
shouldLoadLibrary
(String libName, File libFile, ByteProvider provider, LoadSpec loadSpec, MessageLog log) Checks whether or not the given library should be loaded.protected boolean
shouldSearchAllPaths
(List<Option> options) Checks whether or not to search for libraries using all possible search paths, regardless of what options are setvalidateOptions
(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 ghidra.app.util.opinion.AbstractLibrarySupportLoader
createLibraryByteProvider, getLibraryDestinationFolder, getLibraryLoadDepth, getLinkSearchFolder, getTier, getTierPriority, isCaseInsensitiveLibraryFilenames, isLinkExistingLibraries, isLoadLocalLibraries, isLoadSystemLibraries, isOptionalLibraryFilenameExtensions, load, loadProgram, loadProgramInto, matchSupportedLoadSpec
Methods inherited from class ghidra.app.util.opinion.AbstractProgramLoader
createDefaultMemoryBlocks, createProgram, generateBlockName, getLanguageService, isOverrideMainProgramName, load, loadInto, markAsFunction, release, setProgramProperties, shouldApplyProcessorLabelsByDefault
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
-
Field Details
-
ORDINAL_LOOKUP_OPTION_NAME
- See Also:
-
-
Constructor Details
-
AbstractOrdinalSupportLoader
public AbstractOrdinalSupportLoader()
-
-
Method Details
-
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
- Overrides:
getDefaultOptions
in classAbstractLibrarySupportLoader
- 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.
-
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
- Overrides:
validateOptions
in classAbstractLibrarySupportLoader
- 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.
-
shouldSearchAllPaths
Description copied from class:AbstractLibrarySupportLoader
Checks whether or not to search for libraries using all possible search paths, regardless of what options are set- Overrides:
shouldSearchAllPaths
in classAbstractLibrarySupportLoader
- Parameters:
options
- aList
ofOption
s- Returns:
- True if all possible search paths should be used, regardless of what options are set
-
shouldLoadLibrary
protected boolean shouldLoadLibrary(String libName, File libFile, ByteProvider provider, LoadSpec loadSpec, MessageLog log) throws IOException Description copied from class:AbstractLibrarySupportLoader
Checks whether or not the given library should be loaded.It may be appropriate to not load a specific library after examining its bytes.
- Overrides:
shouldLoadLibrary
in classAbstractLibrarySupportLoader
- Parameters:
libName
- The name of the librarylibFile
- The libraryFile
provider
- The library bytesloadSpec
- The desiredLoadSpec
log
- The log- Returns:
- True if the given library should be loaded; otherwise, false
- Throws:
IOException
- If an IO-related error occurred
-
processLibrary
protected boolean processLibrary(Program lib, String libName, File libFile, ByteProvider provider, LoadSpec loadSpec, List<Option> options, MessageLog log, TaskMonitor monitor) throws IOException, CancelledException Description copied from class:AbstractLibrarySupportLoader
Performs optional follow-on actions after an the given library has been loaded- Overrides:
processLibrary
in classAbstractLibrarySupportLoader
- Parameters:
lib
- The loaded libraryProgram
libName
- The name of the librarylibFile
- The libraryFile
provider
- The library bytesloadSpec
- TheLoadSpec
used for the loadoptions
- The optionslog
- The logmonitor
- A cancel.able monitor- Returns:
- True if the library should be saved to the project; otherwise, false
- Throws:
IOException
- If an IO-related error occurredCancelledException
- If the user cancelled the action
-
postLoadProgramFixups
protected void postLoadProgramFixups(List<AbstractProgramLoader.LoadedProgram> loadedPrograms, List<Option> options, MessageLog messageLog, TaskMonitor monitor) throws CancelledException, IOException Description copied from class:AbstractProgramLoader
This gets called after the given list ofprograms
s is finished loading. It provides subclasses an opportunity to do follow-on actions to the load.- Overrides:
postLoadProgramFixups
in classAbstractLibrarySupportLoader
- Parameters:
loadedPrograms
- Theprograms
that got loaded.options
- The load options.messageLog
- The message log.monitor
- A cancelable task monitor.- Throws:
CancelledException
- if the user cancelled the load.IOException
- if there was an IO-related problem loading.
-