Class OmfFileHeader


  • public class OmfFileHeader
    extends OmfRecord
    • Constructor Detail

      • OmfFileHeader

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

      • getName

        public java.lang.String getName()
        This is usually the original source filename
        Returns:
        the name
      • getLibraryModuleName

        public java.lang.String getLibraryModuleName()
        The name of the object module (within a library)
        Returns:
        the name
      • getMachineName

        public java.lang.String getMachineName()
        Returns:
        the string identifying the architecture this object was compiled for
      • getTranslator

        public java.lang.String getTranslator()
        If the OMF file contains a "translator" record, this is usually a string indicating the compiler which produced the file.
        Returns:
        the translator for this file
      • isLittleEndian

        public boolean isLittleEndian()
        Returns:
        true if the file describes the load image for a little endian architecture
      • getSegments

        public java.util.ArrayList<OmfSegmentHeader> getSegments()
        Returns:
        the list of segments in this file
      • getExtraSegments

        public java.util.ArrayList<OmfSegmentHeader> getExtraSegments()
        Returns:
        the list of segments which are Borland extensions
      • getGroups

        public java.util.ArrayList<OmfGroupRecord> getGroups()
        Returns:
        the list of group records for this file
      • getExternalSymbols

        public java.util.ArrayList<OmfExternalSymbol> getExternalSymbols()
        Returns:
        the list of symbols that are external to this file
      • getPublicSymbols

        public java.util.ArrayList<OmfSymbolRecord> getPublicSymbols()
        Returns:
        the list of symbols exported by this file
      • getFixups

        public java.util.ArrayList<OmfFixupRecord> getFixups()
        Returns:
        the list of relocation records for this file
      • sortSegmentDataBlocks

        public void sortSegmentDataBlocks()
        Sort the explicit data-blocks for each segment into address order.
      • resolveSegment

        public OmfSegmentHeader resolveSegment​(int index)
                                        throws OmfException
        Given an index, retrieve the specific segment it refers to. This incorporates the special Borland segments, where the index has the bit 0x4000 set.
        Parameters:
        index - identifies the segment
        Returns:
        the corresponding OmfSegmentHeader
        Throws:
        OmfException - if the index is malformed
      • resolveNames

        public void resolveNames()
                          throws OmfException
        Resolve special names associated with each segment: segment, class, overlay names and group: group name For each segment, the read/write/execute permissions are also determined
        Throws:
        OmfException - if any name indices are malformed
      • scan

        public static OmfFileHeader scan​(BinaryReader reader,
                                         TaskMonitor monitor,
                                         boolean initialCommentsOnly)
                                  throws java.io.IOException,
                                         OmfException
        Scan the object file, for the main header and comment records. Other records are parsed but not saved
        Parameters:
        reader - is the byte stream
        monitor - is checked for cancellation
        initialCommentsOnly - is true if we only want to scan the header and the initial comments,
        Returns:
        the header record
        Throws:
        java.io.IOException - for problems reading program data
        OmfException - for malformed records
      • parse

        public static OmfFileHeader parse​(BinaryReader reader,
                                          TaskMonitor monitor)
                                   throws java.io.IOException,
                                          OmfException
        Parse the entire object file
        Parameters:
        reader - is the byte stream
        monitor - is checked for cancel button
        Returns:
        the header record as root of object
        Throws:
        java.io.IOException - for problems reading data
        OmfException - for malformed records
      • doLinking

        public static void doLinking​(long startAddress,
                                     java.util.ArrayList<OmfSegmentHeader> segments,
                                     java.util.ArrayList<OmfGroupRecord> groups)
                              throws OmfException
        Assign a load image address to each segment. Follow OMF rules for grouping and ordering the segments in memory.
        Parameters:
        startAddress - is the base memory address for the load image
        segments - is the list of segments
        groups - is the list of specific segments that are grouped together in memory
        Throws:
        OmfException - for malformed index/alignment/combining fields
      • checkMagicNumber

        public static boolean checkMagicNumber​(BinaryReader reader)
                                        throws java.io.IOException
        Check that the file has the specific OMF magic number
        Parameters:
        reader - accesses the bytes of the file
        Returns:
        true if the magic number matches
        Throws:
        java.io.IOException - for problems reading bytes
      • createReader

        public static BinaryReader createReader​(ByteProvider provider)
        Create a reader for a specific OMF file
        Parameters:
        provider - is the underlying ByteProvider
        Returns:
        the new reader