64 lines · c
1//===-- UnwindAssembly-x86.h ------------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_SOURCE_PLUGINS_UNWINDASSEMBLY_X86_UNWINDASSEMBLY_X86_H10#define LLDB_SOURCE_PLUGINS_UNWINDASSEMBLY_X86_UNWINDASSEMBLY_X86_H11 12#include "x86AssemblyInspectionEngine.h"13 14#include "lldb/Target/UnwindAssembly.h"15#include "lldb/lldb-private.h"16 17class UnwindAssembly_x86 : public lldb_private::UnwindAssembly {18public:19 ~UnwindAssembly_x86() override;20 21 bool GetNonCallSiteUnwindPlanFromAssembly(22 lldb_private::AddressRange &func, lldb_private::Thread &thread,23 lldb_private::UnwindPlan &unwind_plan) override;24 25 bool26 AugmentUnwindPlanFromCallSite(lldb_private::AddressRange &func,27 lldb_private::Thread &thread,28 lldb_private::UnwindPlan &unwind_plan) override;29 30 bool GetFastUnwindPlan(lldb_private::AddressRange &func,31 lldb_private::Thread &thread,32 lldb_private::UnwindPlan &unwind_plan) override;33 34 // thread may be NULL in which case we only use the Target (e.g. if this is35 // called pre-process-launch).36 bool37 FirstNonPrologueInsn(lldb_private::AddressRange &func,38 const lldb_private::ExecutionContext &exe_ctx,39 lldb_private::Address &first_non_prologue_insn) override;40 41 static lldb_private::UnwindAssembly *42 CreateInstance(const lldb_private::ArchSpec &arch);43 44 // PluginInterface protocol45 static void Initialize();46 47 static void Terminate();48 49 static llvm::StringRef GetPluginNameStatic() { return "x86"; }50 51 static llvm::StringRef GetPluginDescriptionStatic();52 53 llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }54 55private:56 UnwindAssembly_x86(const lldb_private::ArchSpec &arch);57 58 lldb_private::ArchSpec m_arch;59 60 lldb_private::x86AssemblyInspectionEngine *m_assembly_inspection_engine;61};62 63#endif // LLDB_SOURCE_PLUGINS_UNWINDASSEMBLY_X86_UNWINDASSEMBLY_X86_H64