LLDB mainline
RegisterContextUnwind.cpp File Reference

Go to the source code of this file.

Macros

#define UNWIND_LOG_IMPL(LOG_FN, log, ...)
#define UNWIND_LOG(log, ...)
#define UNWIND_LOG_VERBOSE(log, ...)

Functions

static ConstString GetSymbolOrFunctionName (const SymbolContext &sym_ctx)
static bool CallFrameAddressIsValid (ABISP abi_sp, lldb::addr_t cfa)
static bool IsClangOutlinedFunction (const SymbolContext &sym_ctx)
 Identify a clang outlined function by symbol name.

Macro Definition Documentation

◆ UNWIND_LOG

◆ UNWIND_LOG_IMPL

#define UNWIND_LOG_IMPL ( LOG_FN,
log,
... )
Value:
LOG_FN(log, "{0}th{1}/fr{2} {3}", \
llvm::indent(std::min(m_frame_number, 100U)), m_thread.GetIndexID(), \
m_frame_number, llvm::formatv(__VA_ARGS__))

Definition at line 77 of file RegisterContextUnwind.cpp.

◆ UNWIND_LOG_VERBOSE

Function Documentation

◆ CallFrameAddressIsValid()

◆ GetSymbolOrFunctionName()

◆ IsClangOutlinedFunction()

bool IsClangOutlinedFunction ( const SymbolContext & sym_ctx)
static

Identify a clang outlined function by symbol name.

The unwind information in outlined functions from clang can be incorrect, and because of when the outlining happens in the compilation, it may not be possible to fix. We will need to ignore any instruction-emulation or compiler-sourced unwind plans for these functions, and fall back to an ABI default unwindplan.

Definition at line 70 of file RegisterContextUnwind.cpp.

References lldb_private::ConstString::GetStringRef(), and GetSymbolOrFunctionName().

Referenced by lldb_private::RegisterContextUnwind::GetFullUnwindPlanForFrame().