Class ProgramAddressFactory

java.lang.Object
ghidra.program.model.address.DefaultAddressFactory
ghidra.program.database.ProgramAddressFactory
All Implemented Interfaces:
AddressFactory

public class ProgramAddressFactory extends DefaultAddressFactory
  • Constructor Details

    • ProgramAddressFactory

      public ProgramAddressFactory(Language language, CompilerSpec compilerSpec)
  • Method Details

    • getStackSpace

      public AddressSpace getStackSpace()
      Description copied from interface: AddressFactory
      Returns the "stack" address space.
      Specified by:
      getStackSpace in interface AddressFactory
      Overrides:
      getStackSpace in class DefaultAddressFactory
    • addOverlayAddressSpace

      protected void addOverlayAddressSpace(OverlayAddressSpace ovSpace) throws DuplicateNameException
      Throws:
      DuplicateNameException
    • validateOriginalSpace

      protected boolean validateOriginalSpace(AddressSpace originalSpace)
      Determine whether the given space can have an overlay
      Parameters:
      originalSpace - the original space
      Returns:
      true to allow, false to prohibit
    • addOverlayAddressSpace

      protected OverlayAddressSpace addOverlayAddressSpace(String name, boolean preserveName, AddressSpace originalSpace, long minOffset, long maxOffset)
      Create a new OverlayAddressSpace based upon the given overlay blockName and base AddressSpace
      Parameters:
      name - the preferred name of the overlay address space to be created. This name may be modified if preserveName is false to produce a valid overlay space name and avoid duplication.
      preserveName - if true specified name will be preserved, if false an unique acceptable overlay space name will be generated from the specified name.
      originalSpace - the base AddressSpace to overlay
      minOffset - the min offset of the space
      maxOffset - the max offset of the space
      Returns:
      the new overlay space
      Throws:
      IllegalArgumentException - if originalSpace is not permitted or preserveName is true and a space with specified name already exists.
    • getAddress

      public Address getAddress(int spaceID, long offset)
      Description copied from interface: AddressFactory
      Get an address using the addressSpace with the given id and having the given offset.
      Specified by:
      getAddress in interface AddressFactory
      Overrides:
      getAddress in class DefaultAddressFactory
      Parameters:
      spaceID - the id of the address space to use to create the new address.
      offset - the offset of the new address to be created.
      Returns:
      the new address.
    • getAddress

      public Address getAddress(String addrString)
      Description copied from interface: AddressFactory
      Create an address from String. Attempts to use the "default" address space first. Otherwise loops through each addressSpace, returning the first valid address that any addressSpace creates from the string. Returns an Address if the string is valid, otherwise null.
      Specified by:
      getAddress in interface AddressFactory
      Overrides:
      getAddress in class DefaultAddressFactory
      See Also:
    • removeOverlaySpace

      protected void removeOverlaySpace(String name)
    • renameOverlaySpace

      protected String renameOverlaySpace(String oldOverlaySpaceName, String newName)
      Rename overlay with preferred newName. Actual name used will be returned and may differ from specified newName to ensure validity and avoid duplication.
      Overrides:
      renameOverlaySpace in class DefaultAddressFactory
      Parameters:
      oldOverlaySpaceName - the existing overlay address space name
      newName - the preferred new name of the overlay address space. This name may be modified to produce a valid overlay space name to avoid duplication.
      Returns:
      new name applied to existing overlay space