brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 3857c87 Raw
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