|
LLDB mainline
|
#include "lldb/Target/RegisterContextUnwind.h"#include "lldb/Core/Address.h"#include "lldb/Core/AddressRange.h"#include "lldb/Core/Module.h"#include "lldb/Core/Value.h"#include "lldb/Expression/DWARFExpressionList.h"#include "lldb/Symbol/ArmUnwindInfo.h"#include "lldb/Symbol/CallFrameInfo.h"#include "lldb/Symbol/DWARFCallFrameInfo.h"#include "lldb/Symbol/FuncUnwinders.h"#include "lldb/Symbol/Function.h"#include "lldb/Symbol/ObjectFile.h"#include "lldb/Symbol/Symbol.h"#include "lldb/Symbol/SymbolContext.h"#include "lldb/Symbol/SymbolFile.h"#include "lldb/Target/ABI.h"#include "lldb/Target/DynamicLoader.h"#include "lldb/Target/ExecutionContext.h"#include "lldb/Target/LanguageRuntime.h"#include "lldb/Target/Platform.h"#include "lldb/Target/Process.h"#include "lldb/Target/SectionLoadList.h"#include "lldb/Target/StackFrame.h"#include "lldb/Target/Target.h"#include "lldb/Target/Thread.h"#include "lldb/Utility/DataBufferHeap.h"#include "lldb/Utility/LLDBLog.h"#include "lldb/Utility/Log.h"#include "lldb/Utility/RegisterValue.h"#include "lldb/Utility/VASPrintf.h"#include "lldb/lldb-private.h"#include "llvm/Support/FormatAdapters.h"#include <cassert>#include <memory>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. | |
| #define UNWIND_LOG | ( | log, | |
| ... ) |
Definition at line 82 of file RegisterContextUnwind.cpp.
Referenced by lldb_private::RegisterContextUnwind::ForceSwitchToFallbackUnwindPlan(), lldb_private::RegisterContextUnwind::GetAbstractRegisterLocation(), lldb_private::RegisterContextUnwind::GetFullUnwindPlanForFrame(), lldb_private::RegisterContextUnwind::InitializeNonZerothFrame(), lldb_private::RegisterContextUnwind::InitializeZerothFrame(), lldb_private::RegisterContextUnwind::PropagateTrapHandlerFlagFromUnwindPlan(), lldb_private::RegisterContextUnwind::ReadFrameAddress(), lldb_private::RegisterContextUnwind::ReadGPRValue(), lldb_private::RegisterContextUnwind::ReadRegisterValueFromRegisterLocation(), lldb_private::RegisterContextUnwind::SavedLocationForRegister(), lldb_private::RegisterContextUnwind::TryAdoptArchitectureUnwindPlan(), and lldb_private::RegisterContextUnwind::TryFallbackUnwindPlan().
| #define UNWIND_LOG_IMPL | ( | LOG_FN, | |
| log, | |||
| ... ) |
Definition at line 77 of file RegisterContextUnwind.cpp.
| #define UNWIND_LOG_VERBOSE | ( | log, | |
| ... ) |
Definition at line 84 of file RegisterContextUnwind.cpp.
Referenced by lldb_private::RegisterContextUnwind::GetFullUnwindPlanForFrame(), lldb_private::RegisterContextUnwind::GetReturnAddressHint(), lldb_private::RegisterContextUnwind::ReadRegister(), and lldb_private::RegisterContextUnwind::WriteRegister().
|
static |
Definition at line 55 of file RegisterContextUnwind.cpp.
References LLDB_INVALID_ADDRESS.
Referenced by lldb_private::RegisterContextUnwind::ForceSwitchToFallbackUnwindPlan(), lldb_private::RegisterContextUnwind::InitializeNonZerothFrame(), lldb_private::RegisterContextUnwind::ReadFrameAddress(), and lldb_private::RegisterContextUnwind::TryFallbackUnwindPlan().
|
static |
Definition at line 47 of file RegisterContextUnwind.cpp.
References lldb_private::SymbolContext::function, lldb_private::Function::GetName(), lldb_private::Symbol::GetName(), and lldb_private::SymbolContext::symbol.
Referenced by lldb_private::RegisterContextUnwind::GetFullUnwindPlanForFrame(), lldb_private::RegisterContextUnwind::InitializeNonZerothFrame(), lldb_private::RegisterContextUnwind::InitializeZerothFrame(), IsClangOutlinedFunction(), and lldb_private::RegisterContextUnwind::PropagateTrapHandlerFlagFromUnwindPlan().
|
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().