Class EhFrameSection
java.lang.Object
ghidra.app.plugin.exceptionhandlers.gcc.sections.EhFrameSection
- All Implemented Interfaces:
CieSource
Parses the call frame information exception handling structures within an '.eh_frame'
memory section.
-
Field Summary
-
Constructor Summary
ConstructorDescriptionEhFrameSection
(TaskMonitor monitor, Program program) Constructor for an eh frame section. -
Method Summary
Modifier and TypeMethodDescriptionanalyze
(int fdeTableCount) Analyzes and annotates the eh frame section.protected void
createAugmentationData
(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
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.For the provided address, return a Common Information Entry (CIE)protected Cie
getCieOrCreateIfMissing
(Address curAddress, 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.
-
Field Details
-
EH_FRAME_BLOCK_NAME
- See Also:
-
monitor
-
program
-
-
Constructor Details
-
EhFrameSection
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 Details
-
getCie
Description copied from interface:CieSource
For the provided address, return a Common Information Entry (CIE)- Parameters:
currAddress
- the address with the CIE- Returns:
- the Cie at
currAddress
- Throws:
MemoryAccessException
- if memory for the CIE couldn't be readExceptionHandlerFrameException
- if a problem was encountered
-
analyze
public List<RegionDescriptor> analyze(int fdeTableCount) throws MemoryAccessException, AddressOutOfBoundsException, ExceptionHandlerFrameException Analyzes and annotates the eh frame section.- Parameters:
fdeTableCount
- the number of exception handler FDEs.- Returns:
- the region descriptors for the eh frame section.
- Throws:
MemoryAccessException
- if memory couldn't be read/written while processing the eh frame.AddressOutOfBoundsException
- if one or more expected addresses weren't in the program.ExceptionHandlerFrameException
- if a problem was encountered determining eh frame data.
-
createAugmentationData
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.
-
createCie
protected Cie createCie(Address curAddress, boolean isInDebugFrame) throws MemoryAccessException, ExceptionHandlerFrameException Creates the data for a common information entry (CIE) at the address and puts a label and comment on it.- Parameters:
curAddress
- the address with the CIEisInDebugFrame
- true indicates the frame containing this CIE is a debug frame.- Returns:
- the
Cie
that was created - Throws:
MemoryAccessException
- if memory for the CIE couldn't be readExceptionHandlerFrameException
- if a problem was encountered
-
getCieOrCreateIfMissing
protected Cie getCieOrCreateIfMissing(Address curAddress, 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 CIEisInDebugFrame
- 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 readExceptionHandlerFrameException
- if a problem was encountered
-
createCieLabel
Creates a label indicating there is an CIE at the address.- Parameters:
curAddress
- the address with the CIE
-
createCieComment
Creates a comment indicating there is an CIE at the address.- Parameters:
curAddress
- the address with the CIE
-
createFdeComment
Creates a comment indicating there is an FDE at the address.- Parameters:
curAddress
- the address with the FDE
-