Greg Clayton | 8badcb2 | 2011-04-25 21:14:26 +0000 | [diff] [blame] | 1 | //===-- UnwindAssembly.h --------------------------------*- C++ -*-===// |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 2 | // |
| 3 | // The LLVM Compiler Infrastructure |
| 4 | // |
| 5 | // This file is distributed under the University of Illinois Open Source |
| 6 | // License. See LICENSE.TXT for details. |
| 7 | // |
| 8 | //===----------------------------------------------------------------------===// |
| 9 | |
Greg Clayton | 8badcb2 | 2011-04-25 21:14:26 +0000 | [diff] [blame] | 10 | #ifndef utility_UnwindAssembly_h_ |
| 11 | #define utility_UnwindAssembly_h_ |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 12 | |
Johnny Chen | ff7c3e9 | 2010-12-20 21:45:22 +0000 | [diff] [blame] | 13 | #include "lldb/lldb-private.h" |
Greg Clayton | 888a733 | 2011-04-26 04:39:08 +0000 | [diff] [blame] | 14 | #include "lldb/Core/ArchSpec.h" |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 15 | #include "lldb/Core/PluginInterface.h" |
| 16 | |
| 17 | namespace lldb_private { |
| 18 | |
Greg Clayton | 8badcb2 | 2011-04-25 21:14:26 +0000 | [diff] [blame] | 19 | class UnwindAssembly : |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 20 | public PluginInterface |
| 21 | { |
| 22 | public: |
Greg Clayton | 8badcb2 | 2011-04-25 21:14:26 +0000 | [diff] [blame] | 23 | static UnwindAssembly* |
Greg Clayton | 97eecb1 | 2011-04-25 18:36:36 +0000 | [diff] [blame] | 24 | FindPlugin (const ArchSpec &arch); |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 25 | |
| 26 | virtual |
Greg Clayton | 8badcb2 | 2011-04-25 21:14:26 +0000 | [diff] [blame] | 27 | ~UnwindAssembly(); |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 28 | |
| 29 | virtual bool |
Greg Clayton | 97eecb1 | 2011-04-25 18:36:36 +0000 | [diff] [blame] | 30 | GetNonCallSiteUnwindPlanFromAssembly (AddressRange& func, |
| 31 | Thread& thread, |
| 32 | UnwindPlan& unwind_plan) = 0; |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 33 | |
| 34 | virtual bool |
Greg Clayton | 97eecb1 | 2011-04-25 18:36:36 +0000 | [diff] [blame] | 35 | GetFastUnwindPlan (AddressRange& func, |
| 36 | Thread& thread, |
| 37 | UnwindPlan &unwind_plan) = 0; |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 38 | |
| 39 | // thread may be NULL in which case we only use the Target (e.g. if this is called pre-process-launch). |
| 40 | virtual bool |
Greg Clayton | 97eecb1 | 2011-04-25 18:36:36 +0000 | [diff] [blame] | 41 | FirstNonPrologueInsn (AddressRange& func, |
Greg Clayton | f4124de | 2012-02-21 00:09:25 +0000 | [diff] [blame] | 42 | const lldb_private::ExecutionContext &exe_ctx, |
Greg Clayton | 97eecb1 | 2011-04-25 18:36:36 +0000 | [diff] [blame] | 43 | Address& first_non_prologue_insn) = 0; |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 44 | |
| 45 | protected: |
Greg Clayton | 888a733 | 2011-04-26 04:39:08 +0000 | [diff] [blame] | 46 | UnwindAssembly (const ArchSpec &arch); |
| 47 | ArchSpec m_arch; |
| 48 | |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 49 | private: |
Greg Clayton | 888a733 | 2011-04-26 04:39:08 +0000 | [diff] [blame] | 50 | UnwindAssembly(); // Outlaw default constructor |
Greg Clayton | 8badcb2 | 2011-04-25 21:14:26 +0000 | [diff] [blame] | 51 | DISALLOW_COPY_AND_ASSIGN (UnwindAssembly); |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 52 | }; |
| 53 | |
| 54 | } // namespace lldb_private |
| 55 | |
Greg Clayton | 8badcb2 | 2011-04-25 21:14:26 +0000 | [diff] [blame] | 56 | #endif //utility_UnwindAssembly_h_ |
Jason Molenda | 3a4ea24 | 2010-09-10 07:49:16 +0000 | [diff] [blame] | 57 | |
| 58 | |