Type-erased hook detecting exception trampolines during unwinding.
More...
#include <hybrid_unwinder.hpp>
|
| constexpr | exception_matcher_ref () noexcept=default |
| | Constructs an empty (invalid) matcher.
|
| |
| template<typename Tag , typename Context , typename Traits = exception_matcher_traits<Tag>, std::enable_if_t< std::is_convertible_v< const Context *, const typename Traits::context_type * >, int > = 0> |
| constexpr | exception_matcher_ref (Tag, const Context &ctx RELOCO_LIFETIMEBOUND RELOCO_LIFETIME_CAPTURE_BY_THIS) noexcept |
| | Constructs a matcher bound to a traits context.
|
| |
| template<typename Tag , typename Context , std::enable_if_t<!std::is_lvalue_reference_v< Context >, int > = 0> |
| constexpr | exception_matcher_ref (Tag, Context &&)=delete |
| |
| bool | match_trap_frame (uintptr_t fp, uintptr_t pc, uintptr_t &out_trap_frame_addr) const noexcept |
| | Tests whether (fp, pc) is an exception trampoline.
|
| |
| constexpr | operator bool () const noexcept |
| | Reports whether the matcher is bound.
|
| |
|
| template<typename Tag , typename Context , typename Traits = exception_matcher_traits<Tag>> |
| static constexpr exception_matcher_ref | make (const Context &ctx RELOCO_LIFETIMEBOUND) noexcept |
| |
| template<typename Tag , typename Context , std::enable_if_t<!std::is_lvalue_reference_v< Context >, int > = 0> |
| static exception_matcher_ref | make (Context &&)=delete |
| |
Type-erased hook detecting exception trampolines during unwinding.
◆ exception_matcher_ref() [1/3]
| constexpr microfmt::exception_matcher_ref::exception_matcher_ref |
( |
| ) |
|
|
constexprdefaultnoexcept |
Constructs an empty (invalid) matcher.
◆ exception_matcher_ref() [2/3]
template<typename Tag , typename Context , typename Traits = exception_matcher_traits<Tag>, std::enable_if_t< std::is_convertible_v< const Context *, const typename Traits::context_type * >, int > = 0>
| constexpr microfmt::exception_matcher_ref::exception_matcher_ref |
( |
Tag |
, |
|
|
const Context &ctx RELOCO_LIFETIMEBOUND |
RELOCO_LIFETIME_CAPTURE_BY_THIS |
|
) |
| |
|
inlineconstexprnoexcept |
Constructs a matcher bound to a traits context.
- Template Parameters
-
| Tag | Matcher implementation tag. |
| Context | Concrete context convertible to the trait context type. |
- Parameters
-
| ctx | Context object performing the match. |
◆ exception_matcher_ref() [3/3]
template<typename Tag , typename Context , std::enable_if_t<!std::is_lvalue_reference_v< Context >, int > = 0>
| constexpr microfmt::exception_matcher_ref::exception_matcher_ref |
( |
Tag |
, |
|
|
Context && |
|
|
) |
| |
|
constexprdelete |
◆ make() [1/2]
template<typename Tag , typename Context , typename Traits = exception_matcher_traits<Tag>>
| static constexpr exception_matcher_ref microfmt::exception_matcher_ref::make |
( |
const Context &ctx |
RELOCO_LIFETIMEBOUND | ) |
|
|
inlinestaticconstexprnoexcept |
◆ make() [2/2]
template<typename Tag , typename Context , std::enable_if_t<!std::is_lvalue_reference_v< Context >, int > = 0>
◆ match_trap_frame()
| bool microfmt::exception_matcher_ref::match_trap_frame |
( |
uintptr_t |
fp, |
|
|
uintptr_t |
pc, |
|
|
uintptr_t & |
out_trap_frame_addr |
|
) |
| const |
|
inlinenoexcept |
Tests whether (fp, pc) is an exception trampoline.
- Parameters
-
| fp | Current frame pointer. |
| pc | Current program counter. |
| out_trap_frame_addr | Receives the trap frame address. |
- Returns
true when matched.
◆ operator bool()
| constexpr microfmt::exception_matcher_ref::operator bool |
( |
| ) |
const |
|
inlineexplicitconstexprnoexcept |
Reports whether the matcher is bound.
- Returns
true when the matcher is valid.
The documentation for this class was generated from the following file: