microfmt
Zero-allocation C++ formatting for constrained environments
Loading...
Searching...
No Matches
Static Public Member Functions | List of all members
microfmt::arm_exidx_bytecode_decoder Class Reference

Decoder for the inline unwind bytecode packed in an EXIDX word, writing restored register states directly via register_context_ref. More...

#include <arm_exidx_decoder.hpp>

Static Public Member Functions

static RELOCO_UNSAFE_BUFFER_USAGE bool execute_bytecode (address_space_ref space, uint32_t unwind_word, uintptr_t &io_sp, uintptr_t &, register_context_ref reg_ctx) noexcept
 Executes up to 3 inline unwind bytes from an exidx/extab word.
 

Detailed Description

Decoder for the inline unwind bytecode packed in an EXIDX word, writing restored register states directly via register_context_ref.

Member Function Documentation

◆ execute_bytecode()

static RELOCO_UNSAFE_BUFFER_USAGE bool microfmt::arm_exidx_bytecode_decoder::execute_bytecode ( address_space_ref  space,
uint32_t  unwind_word,
uintptr_t &  io_sp,
uintptr_t &  ,
register_context_ref  reg_ctx 
)
inlinestaticnoexcept

Executes up to 3 inline unwind bytes from an exidx/extab word.

Parameters
spaceAddress space to read stack values from.
unwind_wordDescriptor word (personality + inline bytecode).
io_spIn/out: virtual stack pointer.
io_pcIn/out: program counter.
reg_ctxTarget register context handle to write recovered registers into.
Returns
true when the bytecode was applied; false when a personality routine requires an external .ARM.extab table read.

The documentation for this class was generated from the following file: