lldb-defines.h revision 609237174ea7894f36e0af1bdb333eade79aedb7
1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//===-- lldb-defines.h ------------------------------------------*- C++ -*-===//
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//                     The LLVM Compiler Infrastructure
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// This file is distributed under the University of Illinois Open Source
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// License. See LICENSE.TXT for details.
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//===----------------------------------------------------------------------===//
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#ifndef LLDB_lldb_defines_h_
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_lldb_defines_h_
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#include "lldb/lldb-types.h"
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#if !defined(UINT32_MAX)
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    #define UINT32_MAX 4294967295U
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#endif
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#if !defined(UINT64_MAX)
208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    #define UINT64_MAX 18446744073709551615ULL
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#endif
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// LLDB version
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// A build script phase can modify this version number if needed.
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//#define LLDB_VERSION
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// LLDB defines
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_GENERIC_ERROR              UINT32_MAX
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// Breakpoints
378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath//----------------------------------------------------------------------
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_INVALID_BREAK_ID           0
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_DEFAULT_BREAK_SIZE         0
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_BREAK_ID_IS_VALID(bid)     ((bid) != (LLDB_INVALID_BREAK_ID))
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_BREAK_ID_IS_INTERNAL(bid)  ((bid) < 0)
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// Watchpoints
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_INVALID_WATCH_ID           0
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_WATCH_ID_IS_VALID(uid)     ((uid) != (LLDB_INVALID_WATCH_ID))
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_WATCH_TYPE_READ            (1u << 0)
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_WATCH_TYPE_WRITE           (1u << 1)
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// Generic Register Numbers
538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath//----------------------------------------------------------------------
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_PC          0   // Program Counter
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_SP          1   // Stack Pointer
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_FP          2   // Frame Pointer
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_RA          3   // Return Address
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_FLAGS       4   // Processor flags register
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_ARG1        5   // The register that would contain pointer size or less argument 1 (if any)
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_ARG2        6   // The register that would contain pointer size or less argument 2 (if any)
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_ARG3        7   // The register that would contain pointer size or less argument 3 (if any)
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_ARG4        8   // The register that would contain pointer size or less argument 4 (if any)
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_ARG5        9   // The register that would contain pointer size or less argument 5 (if any)
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_ARG6        10  // The register that would contain pointer size or less argument 6 (if any)
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_ARG7        11  // The register that would contain pointer size or less argument 7 (if any)
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_REGNUM_GENERIC_ARG8        12  // The register that would contain pointer size or less argument 8 (if any)
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//---------------------------------------------------------------------
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/// Invalid value definitions
698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath//----------------------------------------------------------------------
708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#define LLDB_INVALID_ADDRESS            UINT64_MAX
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_INVALID_INDEX32            UINT32_MAX
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_INVALID_IVAR_OFFSET        UINT32_MAX
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_INVALID_IMAGE_TOKEN        UINT32_MAX
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_INVALID_REGNUM             UINT32_MAX
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_INVALID_UID                UINT64_MAX
768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#define LLDB_INVALID_PROCESS_ID         0
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_INVALID_THREAD_ID          0
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_INVALID_FRAME_ID           UINT32_MAX
798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#define LLDB_INVALID_SIGNAL_NUMBER      INT32_MAX
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/// CPU Type defintions
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_ARCH_DEFAULT               "systemArch"
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_ARCH_DEFAULT_32BIT         "systemArch32"
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_ARCH_DEFAULT_64BIT         "systemArch64"
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_INVALID_CPUTYPE            (0xFFFFFFFEu)
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/// Option Set defintions
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//----------------------------------------------------------------------
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// FIXME: I'm sure there's some #define magic that can create all 32 sets on the
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// fly.  That would have the added benefit of making this unreadable.
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_MAX_NUM_OPTION_SETS        32
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_OPT_SET_ALL                0xFFFFFFFFU
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_OPT_SET_1                  (1U << 0)
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_OPT_SET_2                  (1U << 1)
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_OPT_SET_3                  (1U << 2)
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_OPT_SET_4                  (1U << 3)
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_OPT_SET_5                  (1U << 4)
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes#define LLDB_OPT_SET_6                  (1U << 5)
1028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#define LLDB_OPT_SET_7                  (1U << 6)
1038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#define LLDB_OPT_SET_8                  (1U << 7)
1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#define LLDB_OPT_SET_9                  (1U << 8)
1058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#define LLDB_OPT_SET_10                 (1U << 9)
1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#define LLDB_OPT_SET_FROM(A, B)         (((1U << (B)) - 1) ^ (1U << ((A)-1) - 1))
1078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#if defined(__cplusplus)
1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath//----------------------------------------------------------------------
1118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath/// @def DISALLOW_COPY_AND_ASSIGN(TypeName)
1128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath///     Macro definition for easily disallowing copy constructor and
1138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath///     assignment operators in C++ classes.
1148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath//----------------------------------------------------------------------
1158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
1168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    TypeName(const TypeName&); \
1178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    const TypeName& operator=(const TypeName&)
1188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#endif // #if defined(__cplusplus)
1208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
1218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath#endif  // LLDB_lldb_defines_h_
1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath