Class SlaFormat

java.lang.Object
ghidra.pcode.utils.SlaFormat

public class SlaFormat extends Object
Encoding values for the .sla file format
  • Field Details Link icon

    • FORMAT_VERSION Link icon

      public static final int FORMAT_VERSION
      FORMAT_VERSION will be incremented whenever the format of the .sla files change.

      Version 4: Compressed and packed file format Version 3: January 2021: added source file information for each constructor.
      Version 2: April 2019: Changed numbering of Overlay spaces.
      Version 1: Initial version.

      See Also:
    • MAX_FILE_SIZE Link icon

      public static final int MAX_FILE_SIZE
      Absolute limit on the number of bytes in a .sla file
      See Also:
    • ATTRIB_VAL Link icon

      public static final AttributeId ATTRIB_VAL
    • ATTRIB_ID Link icon

      public static final AttributeId ATTRIB_ID
    • ATTRIB_SPACE Link icon

      public static final AttributeId ATTRIB_SPACE
    • ATTRIB_S Link icon

      public static final AttributeId ATTRIB_S
    • ATTRIB_OFF Link icon

      public static final AttributeId ATTRIB_OFF
    • ATTRIB_CODE Link icon

      public static final AttributeId ATTRIB_CODE
    • ATTRIB_MASK Link icon

      public static final AttributeId ATTRIB_MASK
    • ATTRIB_INDEX Link icon

      public static final AttributeId ATTRIB_INDEX
    • ATTRIB_NONZERO Link icon

      public static final AttributeId ATTRIB_NONZERO
    • ATTRIB_PIECE Link icon

      public static final AttributeId ATTRIB_PIECE
    • ATTRIB_NAME Link icon

      public static final AttributeId ATTRIB_NAME
    • ATTRIB_SCOPE Link icon

      public static final AttributeId ATTRIB_SCOPE
    • ATTRIB_STARTBIT Link icon

      public static final AttributeId ATTRIB_STARTBIT
    • ATTRIB_SIZE Link icon

      public static final AttributeId ATTRIB_SIZE
    • ATTRIB_TABLE Link icon

      public static final AttributeId ATTRIB_TABLE
    • ATTRIB_CT Link icon

      public static final AttributeId ATTRIB_CT
    • ATTRIB_MINLEN Link icon

      public static final AttributeId ATTRIB_MINLEN
    • ATTRIB_BASE Link icon

      public static final AttributeId ATTRIB_BASE
    • ATTRIB_NUMBER Link icon

      public static final AttributeId ATTRIB_NUMBER
    • ATTRIB_CONTEXT Link icon

      public static final AttributeId ATTRIB_CONTEXT
    • ATTRIB_PARENT Link icon

      public static final AttributeId ATTRIB_PARENT
    • ATTRIB_SUBSYM Link icon

      public static final AttributeId ATTRIB_SUBSYM
    • ATTRIB_LINE Link icon

      public static final AttributeId ATTRIB_LINE
    • ATTRIB_SOURCE Link icon

      public static final AttributeId ATTRIB_SOURCE
    • ATTRIB_LENGTH Link icon

      public static final AttributeId ATTRIB_LENGTH
    • ATTRIB_FIRST Link icon

      public static final AttributeId ATTRIB_FIRST
    • ATTRIB_PLUS Link icon

      public static final AttributeId ATTRIB_PLUS
    • ATTRIB_SHIFT Link icon

      public static final AttributeId ATTRIB_SHIFT
    • ATTRIB_ENDBIT Link icon

      public static final AttributeId ATTRIB_ENDBIT
    • ATTRIB_SIGNBIT Link icon

      public static final AttributeId ATTRIB_SIGNBIT
    • ATTRIB_ENDBYTE Link icon

      public static final AttributeId ATTRIB_ENDBYTE
    • ATTRIB_STARTBYTE Link icon

      public static final AttributeId ATTRIB_STARTBYTE
    • ATTRIB_VERSION Link icon

      public static final AttributeId ATTRIB_VERSION
    • ATTRIB_BIGENDIAN Link icon

      public static final AttributeId ATTRIB_BIGENDIAN
    • ATTRIB_ALIGN Link icon

      public static final AttributeId ATTRIB_ALIGN
    • ATTRIB_UNIQBASE Link icon

      public static final AttributeId ATTRIB_UNIQBASE
    • ATTRIB_MAXDELAY Link icon

      public static final AttributeId ATTRIB_MAXDELAY
    • ATTRIB_UNIQMASK Link icon

      public static final AttributeId ATTRIB_UNIQMASK
    • ATTRIB_NUMSECTIONS Link icon

      public static final AttributeId ATTRIB_NUMSECTIONS
    • ATTRIB_DEFAULTSPACE Link icon

      public static final AttributeId ATTRIB_DEFAULTSPACE
    • ATTRIB_DELAY Link icon

      public static final AttributeId ATTRIB_DELAY
    • ATTRIB_WORDSIZE Link icon

      public static final AttributeId ATTRIB_WORDSIZE
    • ATTRIB_PHYSICAL Link icon

      public static final AttributeId ATTRIB_PHYSICAL
    • ATTRIB_SCOPESIZE Link icon

      public static final AttributeId ATTRIB_SCOPESIZE
    • ATTRIB_SYMBOLSIZE Link icon

      public static final AttributeId ATTRIB_SYMBOLSIZE
    • ATTRIB_VARNODE Link icon

      public static final AttributeId ATTRIB_VARNODE
    • ATTRIB_LOW Link icon

      public static final AttributeId ATTRIB_LOW
    • ATTRIB_HIGH Link icon

      public static final AttributeId ATTRIB_HIGH
    • ATTRIB_FLOW Link icon

      public static final AttributeId ATTRIB_FLOW
    • ATTRIB_CONTAIN Link icon

      public static final AttributeId ATTRIB_CONTAIN
    • ATTRIB_I Link icon

      public static final AttributeId ATTRIB_I
    • ATTRIB_NUMCT Link icon

      public static final AttributeId ATTRIB_NUMCT
    • ATTRIB_SECTION Link icon

      public static final AttributeId ATTRIB_SECTION
    • ATTRIB_LABELS Link icon

      public static final AttributeId ATTRIB_LABELS
    • ELEM_CONST_REAL Link icon

      public static final ElementId ELEM_CONST_REAL
    • ELEM_VARNODE_TPL Link icon

      public static final ElementId ELEM_VARNODE_TPL
    • ELEM_CONST_SPACEID Link icon

      public static final ElementId ELEM_CONST_SPACEID
    • ELEM_CONST_HANDLE Link icon

      public static final ElementId ELEM_CONST_HANDLE
    • ELEM_OP_TPL Link icon

      public static final ElementId ELEM_OP_TPL
    • ELEM_MASK_WORD Link icon

      public static final ElementId ELEM_MASK_WORD
    • ELEM_PAT_BLOCK Link icon

      public static final ElementId ELEM_PAT_BLOCK
    • ELEM_PRINT Link icon

      public static final ElementId ELEM_PRINT
    • ELEM_PAIR Link icon

      public static final ElementId ELEM_PAIR
    • ELEM_CONTEXT_PAT Link icon

      public static final ElementId ELEM_CONTEXT_PAT
    • ELEM_NULL Link icon

      public static final ElementId ELEM_NULL
    • ELEM_OPERAND_EXP Link icon

      public static final ElementId ELEM_OPERAND_EXP
    • ELEM_OPERAND_SYM Link icon

      public static final ElementId ELEM_OPERAND_SYM
    • ELEM_OPERAND_SYM_HEAD Link icon

      public static final ElementId ELEM_OPERAND_SYM_HEAD
    • ELEM_OPER Link icon

      public static final ElementId ELEM_OPER
    • ELEM_DECISION Link icon

      public static final ElementId ELEM_DECISION
    • ELEM_OPPRINT Link icon

      public static final ElementId ELEM_OPPRINT
    • ELEM_INSTRUCT_PAT Link icon

      public static final ElementId ELEM_INSTRUCT_PAT
    • ELEM_COMBINE_PAT Link icon

      public static final ElementId ELEM_COMBINE_PAT
    • ELEM_CONSTRUCTOR Link icon

      public static final ElementId ELEM_CONSTRUCTOR
    • ELEM_CONSTRUCT_TPL Link icon

      public static final ElementId ELEM_CONSTRUCT_TPL
    • ELEM_SCOPE Link icon

      public static final ElementId ELEM_SCOPE
    • ELEM_VARNODE_SYM Link icon

      public static final ElementId ELEM_VARNODE_SYM
    • ELEM_VARNODE_SYM_HEAD Link icon

      public static final ElementId ELEM_VARNODE_SYM_HEAD
    • ELEM_USEROP Link icon

      public static final ElementId ELEM_USEROP
    • ELEM_USEROP_HEAD Link icon

      public static final ElementId ELEM_USEROP_HEAD
    • ELEM_TOKENFIELD Link icon

      public static final ElementId ELEM_TOKENFIELD
    • ELEM_VAR Link icon

      public static final ElementId ELEM_VAR
    • ELEM_CONTEXTFIELD Link icon

      public static final ElementId ELEM_CONTEXTFIELD
    • ELEM_HANDLE_TPL Link icon

      public static final ElementId ELEM_HANDLE_TPL
    • ELEM_CONST_RELATIVE Link icon

      public static final ElementId ELEM_CONST_RELATIVE
    • ELEM_CONTEXT_OP Link icon

      public static final ElementId ELEM_CONTEXT_OP
    • ELEM_SLEIGH Link icon

      public static final ElementId ELEM_SLEIGH
    • ELEM_SPACES Link icon

      public static final ElementId ELEM_SPACES
    • ELEM_SOURCEFILES Link icon

      public static final ElementId ELEM_SOURCEFILES
    • ELEM_SOURCEFILE Link icon

      public static final ElementId ELEM_SOURCEFILE
    • ELEM_SPACE Link icon

      public static final ElementId ELEM_SPACE
    • ELEM_SYMBOL_TABLE Link icon

      public static final ElementId ELEM_SYMBOL_TABLE
    • ELEM_VALUE_SYM Link icon

      public static final ElementId ELEM_VALUE_SYM
    • ELEM_VALUE_SYM_HEAD Link icon

      public static final ElementId ELEM_VALUE_SYM_HEAD
    • ELEM_CONTEXT_SYM Link icon

      public static final ElementId ELEM_CONTEXT_SYM
    • ELEM_CONTEXT_SYM_HEAD Link icon

      public static final ElementId ELEM_CONTEXT_SYM_HEAD
    • ELEM_END_SYM Link icon

      public static final ElementId ELEM_END_SYM
    • ELEM_END_SYM_HEAD Link icon

      public static final ElementId ELEM_END_SYM_HEAD
    • ELEM_SPACE_OTHER Link icon

      public static final ElementId ELEM_SPACE_OTHER
    • ELEM_SPACE_UNIQUE Link icon

      public static final ElementId ELEM_SPACE_UNIQUE
    • ELEM_AND_EXP Link icon

      public static final ElementId ELEM_AND_EXP
    • ELEM_DIV_EXP Link icon

      public static final ElementId ELEM_DIV_EXP
    • ELEM_LSHIFT_EXP Link icon

      public static final ElementId ELEM_LSHIFT_EXP
    • ELEM_MINUS_EXP Link icon

      public static final ElementId ELEM_MINUS_EXP
    • ELEM_MULT_EXP Link icon

      public static final ElementId ELEM_MULT_EXP
    • ELEM_NOT_EXP Link icon

      public static final ElementId ELEM_NOT_EXP
    • ELEM_OR_EXP Link icon

      public static final ElementId ELEM_OR_EXP
    • ELEM_PLUS_EXP Link icon

      public static final ElementId ELEM_PLUS_EXP
    • ELEM_RSHIFT_EXP Link icon

      public static final ElementId ELEM_RSHIFT_EXP
    • ELEM_SUB_EXP Link icon

      public static final ElementId ELEM_SUB_EXP
    • ELEM_XOR_EXP Link icon

      public static final ElementId ELEM_XOR_EXP
    • ELEM_INTB Link icon

      public static final ElementId ELEM_INTB
    • ELEM_END_EXP Link icon

      public static final ElementId ELEM_END_EXP
    • ELEM_NEXT2_EXP Link icon

      public static final ElementId ELEM_NEXT2_EXP
    • ELEM_START_EXP Link icon

      public static final ElementId ELEM_START_EXP
    • ELEM_EPSILON_SYM Link icon

      public static final ElementId ELEM_EPSILON_SYM
    • ELEM_EPSILON_SYM_HEAD Link icon

      public static final ElementId ELEM_EPSILON_SYM_HEAD
    • ELEM_NAME_SYM Link icon

      public static final ElementId ELEM_NAME_SYM
    • ELEM_NAME_SYM_HEAD Link icon

      public static final ElementId ELEM_NAME_SYM_HEAD
    • ELEM_NAMETAB Link icon

      public static final ElementId ELEM_NAMETAB
    • ELEM_NEXT2_SYM Link icon

      public static final ElementId ELEM_NEXT2_SYM
    • ELEM_NEXT2_SYM_HEAD Link icon

      public static final ElementId ELEM_NEXT2_SYM_HEAD
    • ELEM_START_SYM Link icon

      public static final ElementId ELEM_START_SYM
    • ELEM_START_SYM_HEAD Link icon

      public static final ElementId ELEM_START_SYM_HEAD
    • ELEM_SUBTABLE_SYM Link icon

      public static final ElementId ELEM_SUBTABLE_SYM
    • ELEM_SUBTABLE_SYM_HEAD Link icon

      public static final ElementId ELEM_SUBTABLE_SYM_HEAD
    • ELEM_VALUEMAP_SYM Link icon

      public static final ElementId ELEM_VALUEMAP_SYM
    • ELEM_VALUEMAP_SYM_HEAD Link icon

      public static final ElementId ELEM_VALUEMAP_SYM_HEAD
    • ELEM_VALUETAB Link icon

      public static final ElementId ELEM_VALUETAB
    • ELEM_VARLIST_SYM Link icon

      public static final ElementId ELEM_VARLIST_SYM
    • ELEM_VARLIST_SYM_HEAD Link icon

      public static final ElementId ELEM_VARLIST_SYM_HEAD
    • ELEM_OR_PAT Link icon

      public static final ElementId ELEM_OR_PAT
    • ELEM_COMMIT Link icon

      public static final ElementId ELEM_COMMIT
    • ELEM_CONST_START Link icon

      public static final ElementId ELEM_CONST_START
    • ELEM_CONST_NEXT Link icon

      public static final ElementId ELEM_CONST_NEXT
    • ELEM_CONST_NEXT2 Link icon

      public static final ElementId ELEM_CONST_NEXT2
    • ELEM_CONST_CURSPACE Link icon

      public static final ElementId ELEM_CONST_CURSPACE
    • ELEM_CONST_CURSPACE_SIZE Link icon

      public static final ElementId ELEM_CONST_CURSPACE_SIZE
    • ELEM_CONST_FLOWREF Link icon

      public static final ElementId ELEM_CONST_FLOWREF
    • ELEM_CONST_FLOWREF_SIZE Link icon

      public static final ElementId ELEM_CONST_FLOWREF_SIZE
    • ELEM_CONST_FLOWDEST Link icon

      public static final ElementId ELEM_CONST_FLOWDEST
    • ELEM_CONST_FLOWDEST_SIZE Link icon

      public static final ElementId ELEM_CONST_FLOWDEST_SIZE
  • Constructor Details Link icon

    • SlaFormat Link icon

      public SlaFormat()
  • Method Details Link icon

    • isSlaFormat Link icon

      public static boolean isSlaFormat(InputStream stream) throws IOException
      Try to read the header bytes of the .sla format from the given stream. If the header bytes and the version byte match, \b true is returned, and the stream can be passed to the decoder.
      Parameters:
      stream - is the given stream
      Returns:
      true if the .sla header bytes are found
      Throws:
      IOException - for any errors reading from the stream
    • writeSlaHeader Link icon

      public static void writeSlaHeader(OutputStream stream) throws IOException
      Write a .sla file header,including the format version number to the given stream.
      Parameters:
      stream - is the given stream
      Throws:
      IOException - for problems writing to the stream
    • buildEncoder Link icon

      public static PackedEncode buildEncoder(ResourceFile sleighFile) throws IOException
      Build the encoder for compressing and encoding a .sla file (as a stream). The given file is opened and a header is immediately written. The returned encoder is ready immediately to receive the .sla elements and attributes.
      Parameters:
      sleighFile - is the .sla file (to be created)
      Returns:
      the encoder
      Throws:
      IOException - for any problems opening or writing to the file
    • buildDecoder Link icon

      public static PackedDecode buildDecoder(ResourceFile sleighFile) throws IOException
      Build the decoder for decompressing and decoding the .sla file (as a stream). The given file is opened and the header bytes are checked. The returned decoder is immediately ready to read.
      Parameters:
      sleighFile - is the given .sla file
      Returns:
      the decoder
      Throws:
      IOException - if the header is invalid or there are problems reading the file