Class OmfSegmentHeader

java.lang.Object
ghidra.app.util.bin.format.omf.OmfRecord
ghidra.app.util.bin.format.omf.OmfSegmentHeader

public class OmfSegmentHeader extends OmfRecord
  • Constructor Details

  • Method Details

    • isCode

      public boolean isCode()
      Returns:
      true if this is a code segment
    • isReadable

      public boolean isReadable()
      Returns:
      true if this segment is readable
    • isWritable

      public boolean isWritable()
      Returns:
      true if this segment is writable
    • isExecutable

      public boolean isExecutable()
      Returns:
      true if this segment is executable
    • getFrameDatum

      public int getFrameDatum()
      Returns:
      the segment selector needed for this object
    • getAddress

      public Address getAddress(Language language)
      Parameters:
      language - is the Program language for this binary
      Returns:
      the starting Address for this segment
    • getName

      public String getName()
      Returns:
      the name of this segment
    • getClassName

      public String getClassName()
      Returns:
      the class name of this segment
    • getOverlayName

      public String getOverlayName()
      Returns:
      the name of the overlay, or the empty string
    • getStartAddress

      public long getStartAddress()
      Returns:
      the load image address for this segment
    • getSegmentLength

      public long getSegmentLength()
      Returns:
      the length of the segment in bytes
    • getAlignment

      public int getAlignment()
      Returns:
      the alignment required for this segment
    • getCombine

      public int getCombine()
      Returns:
      special combining rules for this segment
    • is16Bit

      public boolean is16Bit()
      Returns:
      if 16 or 32 bit segments are used
    • hasNonZeroData

      public boolean hasNonZeroData()
      Returns:
      true if this block uses filler other than zero bytes
    • sortData

      protected void sortData()
      Sort the data-blocks within this segment
    • getRawDataStream

      public InputStream getRawDataStream(BinaryReader reader, MessageLog log) throws IOException
      Get an InputStream that reads in the raw data for this segment
      Parameters:
      reader - is the image file reader
      log - the log
      Returns:
      the InputStream
      Throws:
      IOException - for problems reading from the image file
    • relocateSegment

      protected long relocateSegment(long firstValidAddress, int alignOverride) throws OmfException
      Given the first possible address where this segment can reside, relocate the segment based on this address and alignment considerations.
      Parameters:
      firstValidAddress - is the first possible Address for the segment
      alignOverride - if non-negative, overrides alignment info from the segment header
      Returns:
      the next possible address for following segments
      Throws:
      OmfException - for bad alignment information
    • resolveNames

      protected void resolveNames(ArrayList<String> nameList) throws OmfException
      Resolve special names from the name list such as: segment, class, overlay, names. This routine also determines the read/write/execute permissions for the segment based on the class name.
      Parameters:
      nameList - is the array of names associated with the file
      Throws:
      OmfException - for improper name indices
    • addEnumeratedData

      protected void addEnumeratedData(OmfEnumeratedData rec)
      Add an explicit data-block to this segment.
      Parameters:
      rec - is the data-block
    • appendEnumeratedData

      protected void appendEnumeratedData(OmfEnumeratedData rec)
      Add an explicit data-block to this segment that might extend the length of this segment. Borland compilers in particular produce data-blocks that can extend the segment in this way.
      Parameters:
      rec - is the data-block
    • addIteratedData

      protected void addIteratedData(OmfIteratedData rec)
      Add a compressed-form data-block to this segment
      Parameters:
      rec - is the data-block