Class EhFrameSection

  • All Implemented Interfaces:
    CieSource

    public class EhFrameSection
    extends java.lang.Object
    Parses the call frame information exception handling structures within an '.eh_frame' memory section.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.List<RegionDescriptor> analyze​(int fdeTableCount)
      Analyzes and annotates the eh frame section.
      protected void createAugmentationData​(java.util.List<RegionDescriptor> regions, Cie cie)
      Creates data structures for the specified Common Information Entry (CIE) and its Frame Description Entries (FDEs) as indicated by the regions.
      protected Cie createCie​(Address curAddress, boolean isInDebugFrame)
      Creates the data for a common information entry (CIE) at the address and puts a label and comment on it.
      protected void createCieComment​(Address curAddress)
      Creates a comment indicating there is an CIE at the address.
      protected void createCieLabel​(Address curAddress)
      Creates a label indicating there is an CIE at the address.
      protected void createFdeComment​(Address curAddress)
      Creates a comment indicating there is an FDE at the address.
      Cie getCie​(Address currAddress)
      For the provided address, return a Common Information Entry (CIE)
      protected Cie getCieOrCreateIfMissing​(Address currAddress, boolean isInDebugFrame)
      This class maintains a lookup of common information entry (CIE) objects; this retrieves an existing object (by address), and creates a new CIE if not found.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • EhFrameSection

        public EhFrameSection​(TaskMonitor monitor,
                              Program program)
        Constructor for an eh frame section.
        Parameters:
        monitor - a status monitor for indicating progress or allowing a task to be cancelled.
        program - the program containing this eh frame section.
    • Method Detail

      • createAugmentationData

        protected void createAugmentationData​(java.util.List<RegionDescriptor> regions,
                                              Cie cie)
        Creates data structures for the specified Common Information Entry (CIE) and its Frame Description Entries (FDEs) as indicated by the regions.
        Parameters:
        regions - the region descriptors for the FDEs.
        cie - the CIE for the FDEs.
      • getCieOrCreateIfMissing

        protected Cie getCieOrCreateIfMissing​(Address currAddress,
                                              boolean isInDebugFrame)
                                       throws MemoryAccessException,
                                              ExceptionHandlerFrameException
        This class maintains a lookup of common information entry (CIE) objects; this retrieves an existing object (by address), and creates a new CIE if not found.
        Parameters:
        curAddress - the address with the CIE
        isInDebugFrame - true indicates the frame containing this CIE is a debug frame.
        Returns:
        the Cie that was either previously created, or a newly minted object.
        Throws:
        MemoryAccessException - if memory for the CIE couldn't be read
        ExceptionHandlerFrameException - if a problem was encountered
      • createCieLabel

        protected void createCieLabel​(Address curAddress)
        Creates a label indicating there is an CIE at the address.
        Parameters:
        curAddress - the address with the CIE
      • createCieComment

        protected void createCieComment​(Address curAddress)
        Creates a comment indicating there is an CIE at the address.
        Parameters:
        curAddress - the address with the CIE
      • createFdeComment

        protected void createFdeComment​(Address curAddress)
        Creates a comment indicating there is an FDE at the address.
        Parameters:
        curAddress - the address with the FDE