|
microfmt
Zero-allocation C++ formatting for constrained environments
|
Binary search over sorted .ARM.exidx unwind tables.
More...
#include <arm_exidx_search.hpp>
Static Public Member Functions | |
| static constexpr uintptr_t | decode_prel31 (uintptr_t entry_addr, uint32_t prel31) noexcept |
| Decodes a 31-bit program-relative (PREL31) offset. | |
| static bool | find_exidx_entry (address_space_ref space, uintptr_t table_base, size_t num_entries, uintptr_t target_pc, uint32_t &out_unwind_data) noexcept |
| Locates the unwind descriptor covering target_pc. | |
Binary search over sorted .ARM.exidx unwind tables.
|
inlinestaticconstexprnoexcept |
Decodes a 31-bit program-relative (PREL31) offset.
| entry_addr | Address of the PREL31 word itself (base). |
| prel31 | Raw PREL31 encoding. |
|
inlinestaticnoexcept |
Locates the unwind descriptor covering target_pc.
Performs a zero-allocation binary search over the sorted .ARM.exidx table, matching the highest function start not greater than target_pc.
| space | Address space to read from. |
| table_base | Base address of the .ARM.exidx table. |
| num_entries | Number of 8-byte table entries. |
| target_pc | PC being looked up. |
| out_unwind_data | Receives the descriptor (inline bytecode or .ARM.extab pointer). |
true when a non-EXIDX_CANTUNWIND entry matched.