File indexing completed on 2026-05-10 08:42:56
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLDB_TARGET_UNWINDASSEMBLY_H
0010 #define LLDB_TARGET_UNWINDASSEMBLY_H
0011
0012 #include "lldb/Core/PluginInterface.h"
0013 #include "lldb/Utility/ArchSpec.h"
0014 #include "lldb/lldb-private.h"
0015
0016 namespace lldb_private {
0017
0018 class UnwindAssembly : public std::enable_shared_from_this<UnwindAssembly>,
0019 public PluginInterface {
0020 public:
0021 static lldb::UnwindAssemblySP FindPlugin(const ArchSpec &arch);
0022
0023 virtual bool
0024 GetNonCallSiteUnwindPlanFromAssembly(AddressRange &func, Thread &thread,
0025 UnwindPlan &unwind_plan) = 0;
0026
0027 virtual bool AugmentUnwindPlanFromCallSite(AddressRange &func, Thread &thread,
0028 UnwindPlan &unwind_plan) = 0;
0029
0030 virtual bool GetFastUnwindPlan(AddressRange &func, Thread &thread,
0031 UnwindPlan &unwind_plan) = 0;
0032
0033
0034
0035 virtual bool
0036 FirstNonPrologueInsn(AddressRange &func,
0037 const lldb_private::ExecutionContext &exe_ctx,
0038 Address &first_non_prologue_insn) = 0;
0039
0040 protected:
0041 UnwindAssembly(const ArchSpec &arch);
0042 ArchSpec m_arch;
0043 };
0044
0045 }
0046
0047 #endif