Class OmfSegmentHeader


  • public class OmfSegmentHeader
    extends OmfRecord
    • Constructor Detail

      • OmfSegmentHeader

        public OmfSegmentHeader​(BinaryReader reader)
                         throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • 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 java.lang.String getName()
        Returns:
        the name of this segment
      • getClassName

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

        public java.lang.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
      • 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 java.io.InputStream getRawDataStream​(BinaryReader reader,
                                                    MessageLog log)
                                             throws java.io.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:
        java.io.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​(java.util.ArrayList<java.lang.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