Public Member Functions | |
fd_entry () | |
fd_entry (const eh_frame_t &eh_frame) | |
fd_entry (const eh_frame_t &eh_frame, void *addr) | |
~fd_entry () override=default | |
fd_entry (fd_entry &&) noexcept=default | |
fd_entry (const fd_entry &)=default | |
fd_entry & | operator= (fd_entry &&) noexcept=default |
fd_entry & | operator= (const fd_entry &)=default |
bool | is_in_range (uint64_t pc) const |
uint64_t | pc_begin () const |
uint64_t | pc_range () const |
uint64_t | lsda () const |
char * | instructions () const |
const ci_entry & | cie () const |
Public Member Functions inherited from common_entry | |
common_entry () | |
common_entry (const eh_frame_t &eh_frame) | |
virtual | ~common_entry ()=default |
common_entry (common_entry &&) noexcept=default | |
common_entry (const common_entry &)=default | |
common_entry & | operator= (common_entry &&) noexcept=default |
common_entry & | operator= (const common_entry &)=default |
common_entry & | operator++ () |
operator bool () const | |
bool | is_cie () const |
bool | is_fde () const |
char * | entry_start () const |
char * | entry_end () const |
char * | payload_start () const |
char * | payload_end () const |
eh_frame_t | eh_frame () const |
Protected Member Functions | |
void | parse (char *addr) override |
void | non_virtual_parse (char *addr) |
Protected Member Functions inherited from common_entry | |
void | non_virtual_parse (char *addr) |
Additional Inherited Members | |
Protected Attributes inherited from common_entry | |
bool | m_is_cie |
char * | m_entry_start |
char * | m_entry_end |
char * | m_payload_start |
char * | m_payload_end |
eh_frame_t | m_eh_frame |
Frame Description Entry
The FDE provides all of the instructions for restoring the state of the registers when unwinding the stack. There is one FDE for each call frame that is created by the compiler (which is usually a function, but can include more than just functions in practice).
Definition at line 510 of file eh_frame.h.
fd_entry::fd_entry | ( | ) |
|
explicit |
Constructor
Creates an invalid FDE, but stores the location of the beginning of the .eh_frame section.
Definition at line 328 of file eh_frame.cpp.
|
explicit |
Constructor
Creates a valid FDE if the addr that is provided points to a valid FDE in the .eh_frame provided
Definition at line 339 of file eh_frame.cpp.
|
overridedefault |
Destructor
|
defaultnoexcept |
Default Move Constructor
|
default |
Default Copy Constructor
|
inline |
Is PC In Range
Note: the range for the PC is not 0 indexed (fails if you attempt to code this as >= && < instead of > && <=). The test case is a function that does nothing but throws. The compiler will emit code without an epilogue, and the range will include the address of the next instruction which is the start of another function.
pc | the program counter (on x86_64 this is rip) to test |
Definition at line 566 of file eh_frame.h.
|
inline |
|
inline |
|
inline |
LSDA Location
Definition at line 588 of file eh_frame.h.
|
inline |
Instructions
Definition at line 596 of file eh_frame.h.
|
inline |
|
overrideprotectedvirtual |
Implements common_entry.
Definition at line 351 of file eh_frame.cpp.
|
protected |
Definition at line 357 of file eh_frame.cpp.