]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/Architecture.h
MFV r329713: 8731 ASSERT3U(nui64s, <=, UINT16_MAX) fails for large blocks
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / Core / Architecture.h
1 //===-- Architecture.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 LLDB_CORE_ARCHITECTURE_H
11 #define LLDB_CORE_ARCHITECTURE_H
12
13 #include "lldb/Core/PluginInterface.h"
14
15 namespace lldb_private {
16
17 class Architecture : public PluginInterface {
18 public:
19   Architecture() = default;
20   virtual ~Architecture() = default;
21
22   //------------------------------------------------------------------
23   /// This is currently intended to handle cases where a
24   /// program stops at an instruction that won't get executed and it
25   /// allows the stop reason, like "breakpoint hit", to be replaced
26   /// with a different stop reason like "no stop reason".
27   ///
28   /// This is specifically used for ARM in Thumb code when we stop in
29   /// an IT instruction (if/then/else) where the instruction won't get
30   /// executed and therefore it wouldn't be correct to show the program
31   /// stopped at the current PC. The code is generic and applies to all
32   /// ARM CPUs.
33   //------------------------------------------------------------------
34   virtual void OverrideStopInfo(Thread &thread) = 0;
35
36 private:
37   Architecture(const Architecture &) = delete;
38   void operator=(const Architecture &) = delete;
39 };
40
41 } // namespace lldb_private
42
43 #endif // LLDB_CORE_ARCHITECTURE_H