Class CoffArchiveHeader

java.lang.Object
ghidra.app.util.bin.format.coff.archive.CoffArchiveHeader
All Implemented Interfaces:
StructConverter

public final class CoffArchiveHeader extends Object implements StructConverter
A class that represents a COFF archive file (ie. MS .lib files, Unix .ar files)

COFF archives are very primitive compared to containers like ZIP or even TAR.

The name of entries (ie. files) inside the archive is limited to 16 bytes, and to support longer names a couple of different schemes have been invented. See the comments in CoffArchiveMemberHeader.read(BinaryReader, LongNamesMember) for decoding the name.

  • Constructor Details

    • CoffArchiveHeader

      protected CoffArchiveHeader()
  • Method Details

    • isMatch

      public static boolean isMatch(ByteProvider provider) throws IOException
      Returns true if the data contained in the provider contains a COFF Archive file.
      Parameters:
      provider - ByteProvider stream
      Returns:
      boolean true if stream contains a CoffArchiveHeader at position 0
      Throws:
      IOException - if error reading
    • read

      public static CoffArchiveHeader read(ByteProvider provider, TaskMonitor monitor) throws CoffException, IOException
      Reads and parses the headers and meta-data in a COFF Archive file.

      Returns a CoffArchiveHeader that has a list of the members in the archive.

      Parameters:
      provider -
      monitor -
      Returns:
      Throws:
      CoffException
      IOException
    • toDataType

      public DataType toDataType() throws DuplicateNameException, IOException
      Description copied from interface: StructConverter
      Returns a structure datatype representing the contents of the implementor of this interface.

      For example, given:

       class A {
           int foo;
           double bar;
       }
       

      The return value should be a structure data type with two data type components; an INT and a DOUBLE. The structure should contain field names and, if possible, field comments.

      Specified by:
      toDataType in interface StructConverter
      Returns:
      returns a structure datatype representing the implementor of this interface
      Throws:
      DuplicateNameException - when a datatype of the same name already exists
      IOException - if an IO-related error occurs
      See Also:
    • getArchiveMemberHeaders

      public List<CoffArchiveMemberHeader> getArchiveMemberHeaders()
    • getFirstLinkerMember

      public FirstLinkerMember getFirstLinkerMember()
    • getSecondLinkerMember

      public SecondLinkerMember getSecondLinkerMember()
    • getLongNameMember

      public LongNamesMember getLongNameMember()
    • isMSFormat

      public boolean isMSFormat()
      Returns true if this COFF archive seems to be a Microsoft lib file (ie. has linker members and other features specific to MS)
      Returns: