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
,java.lang.Comparable<Loader>
public class ElfLoader extends AbstractLibrarySupportLoader
ALoader
for processing executable and linking files (ELF).
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface ghidra.util.classfinder.ExtensionPoint
ExtensionPoint.Exclude, ExtensionPoint.Util
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ELF_ENTRY_FUNCTION_NAME
static java.lang.String
ELF_FILE_TYPE_PROPERTY
static java.lang.String
ELF_NAME
static java.lang.String
ELF_ORIGINAL_IMAGE_BASE_PROPERTY
static java.lang.String
ELF_PRELINKED_PROPERTY
static java.lang.String
ELF_REQUIRED_LIBRARY_PROPERTY_PREFIX
static java.lang.String
ELF_SOURCE_FILE_PROPERTY_PREFIX
-
Fields inherited from class ghidra.app.util.opinion.AbstractLibrarySupportLoader
LIB_OPTION_NAME, SYM_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 Constructor Description ElfLoader()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Collection<LoadSpec>
findSupportedLoadSpecs(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.java.util.List<Option>
getDefaultOptions(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram)
Gets the defaultLoader
options.static java.lang.Long
getElfOriginalImageBase(Program program)
Getter for theELF_ORIGINAL_IMAGE_BASE_PROPERTY
property.java.lang.String
getName()
void
load(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, Program program, TaskMonitor monitor, MessageLog log)
Loads bytes in a particular format into the givenProgram
.protected void
postLoadProgramFixups(java.util.List<Program> importedPrograms, DomainFolder importFolder, java.util.List<Option> options, MessageLog messageLog, TaskMonitor monitor)
This gets called after the given list of s is finished loading.java.lang.String
validateOptions(ByteProvider provider, LoadSpec loadSpec, java.util.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
createExportsFile, findAlreadyImportedLibrary, getLoadSpec, getTier, getTierPriority, importLibrary, importLibrary, isCaseInsensitiveLibraryFilenames, loadProgram, loadProgramInto
-
Methods inherited from class ghidra.app.util.opinion.AbstractProgramLoader
createDefaultMemoryBlocks, createProgram, generateBlockName, getLanguageService, load, loadInto, release, 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, supportsLoadIntoProgram
-
-
-
-
Field Detail
-
ELF_NAME
public static final java.lang.String ELF_NAME
- See Also:
- Constant Field Values
-
ELF_ENTRY_FUNCTION_NAME
public static final java.lang.String ELF_ENTRY_FUNCTION_NAME
- See Also:
- Constant Field Values
-
ELF_FILE_TYPE_PROPERTY
public static final java.lang.String ELF_FILE_TYPE_PROPERTY
- See Also:
- Constant Field Values
-
ELF_ORIGINAL_IMAGE_BASE_PROPERTY
public static final java.lang.String ELF_ORIGINAL_IMAGE_BASE_PROPERTY
- See Also:
- Constant Field Values
-
ELF_PRELINKED_PROPERTY
public static final java.lang.String ELF_PRELINKED_PROPERTY
- See Also:
- Constant Field Values
-
ELF_REQUIRED_LIBRARY_PROPERTY_PREFIX
public static final java.lang.String ELF_REQUIRED_LIBRARY_PROPERTY_PREFIX
- See Also:
- Constant Field Values
-
ELF_SOURCE_FILE_PROPERTY_PREFIX
public static final java.lang.String ELF_SOURCE_FILE_PROPERTY_PREFIX
- See Also:
- Constant Field Values
-
-
Method Detail
-
getElfOriginalImageBase
public static java.lang.Long getElfOriginalImageBase(Program program)
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 java.util.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 java.lang.String validateOptions(ByteProvider provider, LoadSpec loadSpec, java.util.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
public java.util.Collection<LoadSpec> findSupportedLoadSpecs(ByteProvider provider) throws java.io.IOException
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:
java.io.IOException
- if there was an IO-related issue finding theLoadSpec
s.
-
load
public void load(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, Program program, TaskMonitor monitor, MessageLog log) throws java.io.IOException
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:
java.io.IOException
- if there was an IO-related problem loading.
-
postLoadProgramFixups
protected void postLoadProgramFixups(java.util.List<Program> importedPrograms, DomainFolder importFolder, java.util.List<Option> options, MessageLog messageLog, TaskMonitor monitor) throws CancelledException, java.io.IOException
Description copied from class:AbstractProgramLoader
This gets called after the given list of s is finished loading. It provides subclasses an opportunity to do follow-on actions to the load.- Overrides:
postLoadProgramFixups
in classAbstractLibrarySupportLoader
- Parameters:
importedPrograms
- TheProgram
s that got loaded.importFolder
- The folder the programs were loaded to.options
- The load options.messageLog
- The message log.monitor
- A cancelable task monitor.- Throws:
CancelledException
- if the user cancelled the load.java.io.IOException
- if there was an IO-related problem loading.
-
-