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
ALoaderfor 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.StringELF_ENTRY_FUNCTION_NAMEstatic java.lang.StringELF_FILE_TYPE_PROPERTYstatic java.lang.StringELF_NAMEstatic java.lang.StringELF_ORIGINAL_IMAGE_BASE_PROPERTYstatic java.lang.StringELF_PRELINKED_PROPERTYstatic java.lang.StringELF_REQUIRED_LIBRARY_PROPERTY_PREFIXstatic java.lang.StringELF_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 thisLoadersupports loading the givenByteProvider, this methods returns aCollectionof all supportedLoadSpecs that contain discovered load specification information that thisLoaderwill need to load.java.util.List<Option>getDefaultOptions(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram)Gets the defaultLoaderoptions.static java.lang.LonggetElfOriginalImageBase(Program program)Getter for theELF_ORIGINAL_IMAGE_BASE_PROPERTYproperty.java.lang.StringgetName()voidload(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 voidpostLoadProgramFixups(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.StringvalidateOptions(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_PROPERTYproperty.- 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:LoaderGets the defaultLoaderoptions.- Specified by:
getDefaultOptionsin interfaceLoader- Overrides:
getDefaultOptionsin classAbstractLibrarySupportLoader- Parameters:
provider- The bytes of the thing being loaded.loadSpec- TheLoadSpec.domainObject- TheDomainObjectbeing 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:LoaderValidates theLoader's options and returns null if all options are valid; otherwise, an error message describing the problem is returned.- Specified by:
validateOptionsin interfaceLoader- Overrides:
validateOptionsin classAbstractLibrarySupportLoader- Parameters:
provider- The bytes of the thing being loaded.loadSpec- The proposedLoadSpec.options- The list ofOptions 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
Options 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:LoaderIf thisLoadersupports loading the givenByteProvider, this methods returns aCollectionof all supportedLoadSpecs that contain discovered load specification information that thisLoaderwill need to load. If thisLoadercannot support loading the givenByteProvider, an emptyCollectionis returned.- Parameters:
provider- The bytes being loaded.- Returns:
- A
CollectionofLoadSpecs that thisLoadersupports loading, or an emptyCollectionif thisLoaderdoesn't support loading the givenByteProvider. - Throws:
java.io.IOException- if there was an IO-related issue finding theLoadSpecs.
-
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:AbstractLibrarySupportLoaderLoads bytes in a particular format into the givenProgram.- Specified by:
loadin classAbstractLibrarySupportLoader- 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:
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:AbstractProgramLoaderThis 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:
postLoadProgramFixupsin classAbstractLibrarySupportLoader- Parameters:
importedPrograms- ThePrograms 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.
-
-