Class LSDAHeader


  • public class LSDAHeader
    extends GccAnalysisClass
    Defines the bounds of exception unwinding support, within a function, and unwind procedures. * lpStartAddr is the program address where support begins. This value is encoded according to lpStartEncoding. * ttypeAddr is the location-relative program address, encoded per ttypeEncoding, of the associated C++ types table (types of thrown values).
    • Constructor Detail

      • LSDAHeader

        public LSDAHeader​(TaskMonitor monitor,
                          Program program,
                          RegionDescriptor region)
        Constructor for the LSDA header which indicates encoding for the LSDA tables.
        Note: The create(Address) method must be called after constructing an LSDAHeader to associate it with an address before any of its "get..." methods are called.
        Parameters:
        monitor - task monitor to see if the user has cancelled analysis.
        program - the program containing this header.
        region - the region of the program associated with this header.
    • Method Detail

      • create

        public void create​(Address addr)
                    throws MemoryAccessException
        Create a LSDA Header from the bytes at addr.
        Note: This method must get called before any of the "get..." methods.
        Parameters:
        addr - the start (minimum address) of this LSDA header.
        Throws:
        MemoryAccessException - if memory for the header couldn't be read.
      • getNextAddress

        public Address getNextAddress()
        Gets the next address indicating the address after this LSDA header.
        Returns:
        the next address after this LSDA header or null if this LSDA header hasn't been created at any address yet.
      • getBody

        public AddressRange getBody()
        Gets the address range containing the LSDA header.
        Returns:
        the address range of the header
      • getHeaderSize

        public long getHeaderSize()
        Gets the size of this LSDA header.
        Returns:
        the header size
      • getLPStartEncoding

        public int getLPStartEncoding()
        Gets the indicator of the encoding used for the landing pad start.
        Returns:
        the LP start encoding
      • getLPStartAddress

        public Address getLPStartAddress()
        Gets the landing pad start address.
        Returns:
        the LP start address
      • hasTypeTable

        public boolean hasTypeTable()
        Determines if this LSDA has a type table.
        Returns:
        true if there is a type table
      • getTTypeEncoding

        public int getTTypeEncoding()
        Gets the encoding used for the type table.
        Returns:
        the value indicating the type table's encoding
      • getTTypeOffset

        public int getTTypeOffset()
        The offset from the type offset field to get to the base address of the type table.
        Returns:
        the type table offset
      • getTTypeBaseAddress

        public Address getTTypeBaseAddress()
        Gets the base address of the type table. The base address is the last byte (maximum address) of the type table. The type table is ordered in reverse.
        Returns:
        the type table's base address or Address.NO_ADDRESS
      • getCallSiteTableEncoding

        public int getCallSiteTableEncoding()
        Gets the dwarf encoding used for the call site table.
        Returns:
        the encoding value
      • getCallSiteTableLength

        public int getCallSiteTableLength()
        Gets the length of the call site table.
        Returns:
        the table length
      • getCallSiteTableHeaderSize

        public int getCallSiteTableHeaderSize()
        Get the size of the header in the call site table.
        Returns:
        the header size