Package ghidra.app.util.opinion

# Class MzLoader

java.lang.Object
ghidra.app.util.opinion.AbstractProgramLoader
ghidra.app.util.opinion.AbstractLibrarySupportLoader
ghidra.app.util.opinion.MzLoader

All Implemented Interfaces:
  `Loader`, `ExtensionPoint`, `Comparable<Loader>`

public class MzLoader extends AbstractLibrarySupportLoader
A `Loader` for processing old-style DOS MZ executables

See Also:
  - OSDev.org MZ
  - Notes on the format of DOS .EXE files
  - Removing the Mystery from SEGMENT : OFFSET Addressing

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class ghidra.app.util.opinion.AbstractLibrarySupportLoader

  `AbstractLibrarySupportLoader.FileSystemSearchPath`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `MZ_NAME`

  ### Fields 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, OPTIONS_PROJECT_SAVE_STATE_KEY`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MzLoader()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Collection<LoadSpec>`
  `findSupportedLoadSpecs(ByteProvider provider)`
  If this `Loader` supports loading the given `ByteProvider`, this methods returns a `Collection` of all supported `LoadSpec`s that contain discovered load specification information that this `Loader` will need to load.
  `String`
  `getName()`
  Gets the `Loader`'s name, which is used both for display purposes, and to identify the `Loader` in the opinion files.
  `int`
  `getTierPriority()`
  For ordering purposes; lower numbers are more important (and listed first, within its tier).
  `void`
  `load(ByteProvider provider, LoadSpec loadSpec, List<Option> options, Program program, TaskMonitor monitor, MessageLog log)`
  Loads bytes in a particular format into the given `Program`.

  ### Methods inherited from class ghidra.app.util.opinion.AbstractLibrarySupportLoader

  `createLibraryByteProvider, getCustomLibrarySearchPaths, getDefaultOptions, getLibraryDestinationFolderPath, getLibraryDestinationSearchFolder, getLibraryLoadDepth, getLinkSearchFolder, getTier, isCaseInsensitiveLibraryFilenames, isLinkExistingLibraries, isLoadLocalLibraries, isLoadSystemLibraries, isOptionalLibraryFilenameExtensions, loadProgram, loadProgramInto, matchSupportedLoadSpec, postLoadProgramFixups, processLibrary, resolveLibraryFile, shouldLoadLibrary, shouldSearchAllPaths, validateOptions`

  ### 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

  - ### MZ_NAME

    public static final String MZ_NAME
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### MzLoader

    public MzLoader()

- ## Method Details

  - ### findSupportedLoadSpecs

    public Collection<LoadSpec> findSupportedLoadSpecs(ByteProvider provider) throws IOException
    Description copied from interface: `Loader`
    If this `Loader` supports loading the given `ByteProvider`, this methods returns a `Collection` of all supported `LoadSpec`s that contain discovered load specification information that this `Loader` will need to load. If this `Loader` cannot support loading the given `ByteProvider`, an empty `Collection` is returned.
    Parameters:
      `provider` - The bytes being loaded.
    Returns:
      A `Collection` of `LoadSpec`s that this `Loader` supports loading, or an empty `Collection` if this `Loader` doesn't support loading the given `ByteProvider`.
    Throws:
      `IOException` - if there was an IO-related issue finding the `LoadSpec`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 given `Program`.
    Specified by:
      `load` in class `AbstractLibrarySupportLoader`
    Parameters:
      `provider` - The bytes to load.
      `loadSpec` - The `LoadSpec` to use during load.
      `options` - The load options.
      `program` - The `Program` 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.

  - ### getName

    public String getName()
    Description copied from interface: `Loader`
    Gets the `Loader`'s name, which is used both for display purposes, and to identify the `Loader` in the opinion files.
    Returns:
      The `Loader`'s name.

  - ### getTierPriority

    public int getTierPriority()
    Description copied from interface: `Loader`
    For ordering purposes; lower numbers are more important (and listed first, within its tier).
    Specified by:
      `getTierPriority` in interface `Loader`
    Overrides:
      `getTierPriority` in class `AbstractLibrarySupportLoader`
    Returns:
      the ordering of the loader within its tier