Package ghidra.app.util.opinion
Class ElfLoader
java.lang.Object
ghidra.app.util.opinion.AbstractProgramLoader
ghidra.app.util.opinion.AbstractLibrarySupportLoader
ghidra.app.util.opinion.ElfLoader
- All Implemented Interfaces:
Loader
,ExtensionPoint
,Comparable<Loader>
A
Loader
for processing executable and linking files (ELF).-
Nested Class Summary
Nested classes/interfaces inherited from class ghidra.app.util.opinion.AbstractLibrarySupportLoader
AbstractLibrarySupportLoader.FileSystemSearchPath
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final String
static final String
static final String
static final String
static final String
Fields inherited from class ghidra.app.util.opinion.AbstractLibrarySupportLoader
DEPTH_OPTION_NAME, LIBRARY_DEST_FOLDER_OPTION_NAME, LIBRARY_SEARCH_PATH_DUMMY_OPTION_NAME, LINK_EXISTING_OPTION_NAME, LINK_SEARCH_FOLDER_OPTION_NAME, LOAD_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, loggingDisabled, OPTIONS_PROJECT_SAVE_STATE_KEY
-
Constructor Summary
-
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.static Long
getElfOriginalImageBase
(Program program) Getter for theELF_ORIGINAL_IMAGE_BASE_PROPERTY
property.getName()
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 void
postLoadProgramFixups
(List<Loaded<Program>> loadedPrograms, Project project, List<Option> options, MessageLog messageLog, TaskMonitor monitor) This gets called after the given list ofloaded programs
s is finished loading.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 ghidra.app.util.opinion.AbstractLibrarySupportLoader
createLibraryByteProvider, getCustomLibrarySearchPaths, getLibraryDestinationFolderPath, getLibraryDestinationSearchFolder, getLibraryLoadDepth, getLinkSearchFolder, getTier, getTierPriority, isCaseInsensitiveLibraryFilenames, isLinkExistingLibraries, isLoadLibraries, isOptionalLibraryFilenameExtensions, loadProgram, loadProgramInto, matchSupportedLoadSpec, processLibrary, resolveLibraryFile, shouldSearchAllPaths
Methods inherited from class ghidra.app.util.opinion.AbstractProgramLoader
concatenatePaths, createDefaultMemoryBlocks, createProgram, generateBlockName, getLanguageService, load, loadInto, markAsFunction, postLoadCleanup, 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, getPreferredFileName, loadsIntoNewFolder, supportsLoadIntoProgram, supportsLoadIntoProgram
-
Field Details
-
ELF_NAME
- See Also:
-
ELF_ENTRY_FUNCTION_NAME
- See Also:
-
ELF_FILE_TYPE_PROPERTY
- See Also:
-
ELF_ORIGINAL_IMAGE_BASE_PROPERTY
- See Also:
-
ELF_PRELINKED_PROPERTY
- See Also:
-
ELF_SOURCE_FILE_PROPERTY_PREFIX
- See Also:
-
-
Constructor Details
-
ElfLoader
public ElfLoader()
-
-
Method Details
-
getElfOriginalImageBase
Getter for theELF_ORIGINAL_IMAGE_BASE_PROPERTY
property.- Parameters:
program
- Ghidra program that has the property to get- Returns:
- Long value of the original image base, or null if the property is not present
-
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.
-
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.- 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.
-
load
public void load(ByteProvider provider, LoadSpec loadSpec, List<Option> options, Program program, TaskMonitor monitor, MessageLog log) throws IOException, CancelledException Description copied from class:AbstractLibrarySupportLoader
Loads bytes in a particular format into the givenProgram
.- Specified by:
load
in classAbstractLibrarySupportLoader
- 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.
-
postLoadProgramFixups
protected void postLoadProgramFixups(List<Loaded<Program>> loadedPrograms, Project project, List<Option> options, MessageLog messageLog, TaskMonitor monitor) throws CancelledException, IOException Description copied from class:AbstractProgramLoader
This gets called after the given list ofloaded programs
s is finished loading. It provides subclasses an opportunity to do follow-on actions to the load.- Overrides:
postLoadProgramFixups
in classAbstractLibrarySupportLoader
- Parameters:
loadedPrograms
- Theloaded programs
to be fixed up.project
- TheProject
to load into. Could be null if there is no project.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.
-
getName
Description copied from interface:Loader
Gets theLoader
's name, which is used both for display purposes, and to identify theLoader
in the opinion files.- Returns:
- The
Loader
's name.
-