]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/lldb/source/Plugins/Process/Utility/HistoryUnwind.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / lldb / source / Plugins / Process / Utility / HistoryUnwind.h
1 //===-- HistoryUnwind.h -----------------------------------------*- C++ -*-===//
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
10 #ifndef liblldb_HistoryUnwind_h_
11 #define liblldb_HistoryUnwind_h_
12
13 #include <vector>
14
15 #include "lldb/lldb-private.h"
16 #include "lldb/Host/Mutex.h"
17 #include "lldb/Target/Unwind.h"
18
19 namespace lldb_private {
20
21 class HistoryUnwind : public lldb_private::Unwind
22 {
23 public:
24     HistoryUnwind (Thread &thread, std::vector<lldb::addr_t> pcs, uint32_t stop_id, bool stop_id_is_valid);
25
26     virtual ~HistoryUnwind ();
27
28 protected:
29     void
30     DoClear();
31
32     lldb::RegisterContextSP
33     DoCreateRegisterContextForFrame (StackFrame *frame);
34
35     bool
36     DoGetFrameInfoAtIndex (uint32_t frame_idx,
37                            lldb::addr_t& cfa, 
38                            lldb::addr_t& pc);
39     uint32_t
40     DoGetFrameCount ();
41
42 private:
43
44     std::vector<lldb::addr_t>   m_pcs;
45     uint32_t                    m_stop_id;
46     bool                        m_stop_id_is_valid;
47 };
48
49 } // namespace lldb_private
50
51 #endif  // liblldb_HistoryUnwind_h_