Package ghidra.app.util.opinion
Class MachoLoader
- java.lang.Object
-
- ghidra.app.util.opinion.AbstractProgramLoader
-
- ghidra.app.util.opinion.AbstractLibrarySupportLoader
-
- ghidra.app.util.opinion.MachoLoader
-
- All Implemented Interfaces:
Loader,ExtensionPoint,java.lang.Comparable<Loader>
public class MachoLoader extends AbstractLibrarySupportLoader
ALoaderfor Mach-O files.
-
-
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.StringMACH_O_NAME-
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 MachoLoader()
-
Method Summary
All 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.lang.StringgetName()protected booleanimportLibrary(java.lang.String libName, DomainFolder libFolder, java.io.File libFile, LoadSpec loadSpec, java.util.List<Option> options, MessageLog log, java.lang.Object consumer, java.util.Set<java.lang.String> unprocessedLibs, java.util.List<Program> programList, TaskMonitor monitor)Overrides the default implementation to account for Universal Binary (UBI) files.voidload(ByteProvider provider, LoadSpec loadSpec, java.util.List<Option> options, Program program, MemoryConflictHandler handler, TaskMonitor monitor, MessageLog log)Loads bytes in a particular format into the givenProgram.-
Methods inherited from class ghidra.app.util.opinion.AbstractLibrarySupportLoader
createExportsFile, findAlreadyImportedLibrary, getDefaultOptions, getLoadSpec, getTier, getTierPriority, importLibrary, isCaseInsensitiveLibraryFilenames, loadProgram, loadProgramInto, postLoadProgramFixups, validateOptions
-
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
-
MACH_O_NAME
public static final java.lang.String MACH_O_NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
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, MemoryConflictHandler handler, 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.handler- How to handle memory conflicts that occur during the load.monitor- A cancelable task monitor.log- The message log.- Throws:
java.io.IOException- if there was an IO-related problem loading.
-
getName
public java.lang.String getName()
Description copied from interface:LoaderGets theLoader's name, which is used both for display purposes, and to identify theLoaderin the opinion files.- Returns:
- The
Loader's name.
-
importLibrary
protected boolean importLibrary(java.lang.String libName, DomainFolder libFolder, java.io.File libFile, LoadSpec loadSpec, java.util.List<Option> options, MessageLog log, java.lang.Object consumer, java.util.Set<java.lang.String> unprocessedLibs, java.util.List<Program> programList, TaskMonitor monitor) throws CancelledException, java.io.IOExceptionOverrides the default implementation to account for Universal Binary (UBI) files. These must be specially parsed to find the internal file matching the current architecture.FatHeaderis used to parse the file to determine if it is a UBI. If so, each file within the archive is run through the import process until one is found that is successful (meaning it matches the correct architecture). Only one file in the UBI will ever be imported. If the provided file is NOT a UBI, default import method will be invoked.- Overrides:
importLibraryin classAbstractLibrarySupportLoader- Parameters:
libName- the name of the library to importlibFolder- the library folderlibFile- the library file to loadloadSpec- theLoadSpecoptions- the load optionslog- the message logconsumer- consumer object for theProgramgeneratedunprocessedLibs- list of libraries that need to be loadedprogramList- list of programs to add the imported library tomonitor- the task monitor- Returns:
- true if the load was successful
- Throws:
CancelledException- if the user cancelled the load operationjava.io.IOException- if there was an error during the load
-
-