Package ghidra.app.util.opinion

# Class DbgLoader

java.lang.Object
ghidra.app.util.opinion.AbstractProgramLoader
ghidra.app.util.opinion.AbstractLibrarySupportLoader
ghidra.app.util.opinion.AbstractOrdinalSupportLoader
ghidra.app.util.opinion.DbgLoader

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

public class DbgLoader extends AbstractOrdinalSupportLoader
An opinion service for processing Microsoft DBG files.

- ## 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`
  `DBG_NAME`
  DBG files are portable executable (PE) format files that contain debug information in Codeview format for the Visual Studio debugger (and possibly other formats, depending on how the DBG was created).
  `static final String`
  `SHOW_LINE_NUMBERS_OPTION_NAME`
  Loader option to display line numbers

  ### Fields inherited from class ghidra.app.util.opinion.AbstractOrdinalSupportLoader

  `ORDINAL_LOOKUP_OPTION_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
  `DbgLoader()`

- ## 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.
  `List<Option>`
  `getDefaultOptions(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram)`
  Gets the default `Loader` options.
  `String`
  `getName()`
  Gets the `Loader`'s name, which is used both for display purposes, and to identify the `Loader` in the opinion files.
  `protected boolean`
  `hasComment(int type, Address address)`
  `void`
  `load(ByteProvider provider, LoadSpec loadSpec, List<Option> options, Program prog, TaskMonitor monitor, MessageLog log)`
  Loads bytes in a particular format into the given `Program`.
  `protected void`
  `processComments(Listing listing, TaskMonitor monitor)`
  `protected void`
  `processDebug(DebugDirectoryParser parser, NTHeader ntHeader, Map<SectionHeader,Address> sectionToAddress, Program program, List<Option> options, TaskMonitor monitor)`
  `protected boolean`
  `processDebugCoffSymbol(DebugCOFFSymbol symbol, NTHeader ntHeader, Map<SectionHeader,Address> sectionToAddress, Program program, TaskMonitor monitor)`
  `protected void`
  `setComment(int type, Address address, String comment)`
  `boolean`
  `supportsLoadIntoProgram()`
  Checks to see if this `Loader` supports loading into an existing `Program`.
  `String`
  `validateOptions(ByteProvider provider, LoadSpec loadSpec, List<Option> options, Program program)`
  Validates the `Loader`'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.AbstractOrdinalSupportLoader

  `postLoadCleanup, postLoadProgramFixups, processLibrary, shouldLoadLibrary, shouldSearchAllPaths`

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

  `createLibraryByteProvider, getCustomLibrarySearchPaths, getLibraryDestinationFolderPath, getLibraryDestinationSearchFolder, getLibraryLoadDepth, getLinkSearchFolder, getTier, getTierPriority, isCaseInsensitiveLibraryFilenames, isLinkExistingLibraries, isLoadLocalLibraries, isLoadSystemLibraries, isOptionalLibraryFilenameExtensions, loadProgram, loadProgramInto, matchSupportedLoadSpec, resolveLibraryFile`

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

  `concatenatePaths, createDefaultMemoryBlocks, createProgram, generateBlockName, getLanguageService, load, loadInto, markAsFunction, 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`

- ## Field Details

  - ### DBG_NAME

    public static final String DBG_NAME
    DBG files are portable executable (PE) format files that contain debug information in Codeview format for the Visual Studio debugger (and possibly other formats, depending on how the DBG was created). When you do not have source for certain code, such libraries or Windows APIs, DBG files permit debugging. DBG files also permit you to do OLE RPC debugging. Microsoft Corporation. All rights reserved.
    See Also:
      - Constant Field Values

  - ### SHOW_LINE_NUMBERS_OPTION_NAME

    public static final String SHOW_LINE_NUMBERS_OPTION_NAME
    Loader option to display line numbers
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### DbgLoader

    public DbgLoader()

- ## 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 prog, TaskMonitor monitor, MessageLog log) throws IOException
    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.
      `prog` - The `Program` to load into.
      `monitor` - A cancelable task monitor.
      `log` - The message log.
    Throws:
      `IOException` - if there was an IO-related problem loading.

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

  - ### supportsLoadIntoProgram

    public boolean supportsLoadIntoProgram()
    Description copied from interface: `Loader`
    Checks to see if this `Loader` supports loading into an existing `Program`.

    The default behavior of this method is to return false.

    Returns:
      True if this `Loader` supports loading into an existing `Program`; otherwise, false.

  - ### getDefaultOptions

    public List<Option> getDefaultOptions(ByteProvider provider, LoadSpec loadSpec, DomainObject domainObject, boolean loadIntoProgram)
    Description copied from interface: `Loader`
    Gets the default `Loader` options.
    Specified by:
      `getDefaultOptions` in interface `Loader`
    Overrides:
      `getDefaultOptions` in class `AbstractOrdinalSupportLoader`
    Parameters:
      `provider` - The bytes of the thing being loaded.
      `loadSpec` - The `LoadSpec`.
      `domainObject` - The `DomainObject` being loaded.
      `loadIntoProgram` - True if the load is adding to an existing `DomainObject`; 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 the `Loader`'s options and returns null if all options are valid; otherwise, an error message describing the problem is returned.
    Specified by:
      `validateOptions` in interface `Loader`
    Overrides:
      `validateOptions` in class `AbstractOrdinalSupportLoader`
    Parameters:
      `provider` - The bytes of the thing being loaded.
      `loadSpec` - The proposed `LoadSpec`.
      `options` - The list of `Option`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.

  - ### processComments

    protected void processComments(Listing listing, TaskMonitor monitor)

  - ### processDebug

    protected void processDebug(DebugDirectoryParser parser, NTHeader ntHeader, Map<SectionHeader,Address> sectionToAddress, Program program, List<Option> options, TaskMonitor monitor)

  - ### processDebugCoffSymbol

    protected boolean processDebugCoffSymbol(DebugCOFFSymbol symbol, NTHeader ntHeader, Map<SectionHeader,Address> sectionToAddress, Program program, TaskMonitor monitor)

  - ### hasComment

    protected boolean hasComment(int type, Address address)

  - ### setComment

    protected void setComment(int type, Address address, String comment)