124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- lldb-defines.h ------------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton#ifndef LLDB_lldb_defines_h_
11b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton#define LLDB_lldb_defines_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/lldb-types.h"
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#if !defined(UINT32_MAX)
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    #define UINT32_MAX 4294967295U
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#if !defined(UINT64_MAX)
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    #define UINT64_MAX 18446744073709551615ULL
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
24123db408a6bc06614ec893040aaad84d8d0d16f9Greg Clayton// LLDB version
25123db408a6bc06614ec893040aaad84d8d0d16f9Greg Clayton//
26123db408a6bc06614ec893040aaad84d8d0d16f9Greg Clayton// A build script phase can modify this version number if needed.
27123db408a6bc06614ec893040aaad84d8d0d16f9Greg Clayton//----------------------------------------------------------------------
28123db408a6bc06614ec893040aaad84d8d0d16f9Greg Clayton//#define LLDB_VERSION
296778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan//#define LLDB_REVISION
306778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan//#define LLDB_VERSION_STRING
31123db408a6bc06614ec893040aaad84d8d0d16f9Greg Clayton
32123db408a6bc06614ec893040aaad84d8d0d16f9Greg Clayton//----------------------------------------------------------------------
33123db408a6bc06614ec893040aaad84d8d0d16f9Greg Clayton// LLDB defines
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
35d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton#define LLDB_GENERIC_ERROR              UINT32_MAX
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Breakpoints
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
40d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton#define LLDB_INVALID_BREAK_ID           0
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_DEFAULT_BREAK_SIZE         0
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_BREAK_ID_IS_VALID(bid)     ((bid) != (LLDB_INVALID_BREAK_ID))
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_BREAK_ID_IS_INTERNAL(bid)  ((bid) < 0)
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Watchpoints
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
48d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton#define LLDB_INVALID_WATCH_ID           0
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_WATCH_ID_IS_VALID(uid)     ((uid) != (LLDB_INVALID_WATCH_ID))
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_WATCH_TYPE_READ            (1u << 0)
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_WATCH_TYPE_WRITE           (1u << 1)
52be2f9090cf7d64a0f021cbc4036f4172baba1cd2Jim Ingham#define LLDB_WATCH_TYPE_IS_VALID(type)  ((type | LLDB_WATCH_TYPE_READ) || (type | LLDB_WATCH_TYPE_WRITE))
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Generic Register Numbers
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_REGNUM_GENERIC_PC          0   // Program Counter
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_REGNUM_GENERIC_SP          1   // Stack Pointer
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_REGNUM_GENERIC_FP          2   // Frame Pointer
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_REGNUM_GENERIC_RA          3   // Return Address
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_REGNUM_GENERIC_FLAGS       4   // Processor flags register
62997b1e82f098a8b748b490d1ae6d0bbe597a59d5Greg Clayton#define LLDB_REGNUM_GENERIC_ARG1        5   // The register that would contain pointer size or less argument 1 (if any)
63997b1e82f098a8b748b490d1ae6d0bbe597a59d5Greg Clayton#define LLDB_REGNUM_GENERIC_ARG2        6   // The register that would contain pointer size or less argument 2 (if any)
64997b1e82f098a8b748b490d1ae6d0bbe597a59d5Greg Clayton#define LLDB_REGNUM_GENERIC_ARG3        7   // The register that would contain pointer size or less argument 3 (if any)
65997b1e82f098a8b748b490d1ae6d0bbe597a59d5Greg Clayton#define LLDB_REGNUM_GENERIC_ARG4        8   // The register that would contain pointer size or less argument 4 (if any)
66997b1e82f098a8b748b490d1ae6d0bbe597a59d5Greg Clayton#define LLDB_REGNUM_GENERIC_ARG5        9   // The register that would contain pointer size or less argument 5 (if any)
67997b1e82f098a8b748b490d1ae6d0bbe597a59d5Greg Clayton#define LLDB_REGNUM_GENERIC_ARG6        10  // The register that would contain pointer size or less argument 6 (if any)
68997b1e82f098a8b748b490d1ae6d0bbe597a59d5Greg Clayton#define LLDB_REGNUM_GENERIC_ARG7        11  // The register that would contain pointer size or less argument 7 (if any)
69997b1e82f098a8b748b490d1ae6d0bbe597a59d5Greg Clayton#define LLDB_REGNUM_GENERIC_ARG8        12  // The register that would contain pointer size or less argument 8 (if any)
70997b1e82f098a8b748b490d1ae6d0bbe597a59d5Greg Clayton//---------------------------------------------------------------------
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// Invalid value definitions
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
73d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton#define LLDB_INVALID_ADDRESS            UINT64_MAX
74d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton#define LLDB_INVALID_INDEX32            UINT32_MAX
7558513667f6765aa8db13cdc4abd500340c1cac80Jim Ingham#define LLDB_INVALID_IVAR_OFFSET        UINT32_MAX
760baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton#define LLDB_INVALID_IMAGE_TOKEN        UINT32_MAX
77d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton#define LLDB_INVALID_REGNUM             UINT32_MAX
78444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton#define LLDB_INVALID_UID                UINT64_MAX
79d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton#define LLDB_INVALID_PROCESS_ID         0
80d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton#define LLDB_INVALID_THREAD_ID          0
81d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton#define LLDB_INVALID_FRAME_ID           UINT32_MAX
82d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton#define LLDB_INVALID_SIGNAL_NUMBER      INT32_MAX
8336da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton#define LLDB_INVALID_OFFSET             UINT64_MAX // Must match max of lldb::offset_t
8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// CPU Type defintions
8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_ARCH_DEFAULT               "systemArch"
8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_ARCH_DEFAULT_32BIT         "systemArch32"
9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_ARCH_DEFAULT_64BIT         "systemArch64"
9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_INVALID_CPUTYPE            (0xFFFFFFFEu)
9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9334e9a98dcff785b0693594b6d6753f560abf8be2Jim Ingham//----------------------------------------------------------------------
9434e9a98dcff785b0693594b6d6753f560abf8be2Jim Ingham/// Option Set defintions
9534e9a98dcff785b0693594b6d6753f560abf8be2Jim Ingham//----------------------------------------------------------------------
9634e9a98dcff785b0693594b6d6753f560abf8be2Jim Ingham// FIXME: I'm sure there's some #define magic that can create all 32 sets on the
9734e9a98dcff785b0693594b6d6753f560abf8be2Jim Ingham// fly.  That would have the added benefit of making this unreadable.
9834e9a98dcff785b0693594b6d6753f560abf8be2Jim Ingham#define LLDB_MAX_NUM_OPTION_SETS        32
99137e5230e8dfb1287dd7c5eaa943a39078e1fd8dBenjamin Kramer#define LLDB_OPT_SET_ALL                0xFFFFFFFFU
100137e5230e8dfb1287dd7c5eaa943a39078e1fd8dBenjamin Kramer#define LLDB_OPT_SET_1                  (1U << 0)
101137e5230e8dfb1287dd7c5eaa943a39078e1fd8dBenjamin Kramer#define LLDB_OPT_SET_2                  (1U << 1)
102137e5230e8dfb1287dd7c5eaa943a39078e1fd8dBenjamin Kramer#define LLDB_OPT_SET_3                  (1U << 2)
103137e5230e8dfb1287dd7c5eaa943a39078e1fd8dBenjamin Kramer#define LLDB_OPT_SET_4                  (1U << 3)
104137e5230e8dfb1287dd7c5eaa943a39078e1fd8dBenjamin Kramer#define LLDB_OPT_SET_5                  (1U << 4)
105137e5230e8dfb1287dd7c5eaa943a39078e1fd8dBenjamin Kramer#define LLDB_OPT_SET_6                  (1U << 5)
106137e5230e8dfb1287dd7c5eaa943a39078e1fd8dBenjamin Kramer#define LLDB_OPT_SET_7                  (1U << 6)
107137e5230e8dfb1287dd7c5eaa943a39078e1fd8dBenjamin Kramer#define LLDB_OPT_SET_8                  (1U << 7)
108137e5230e8dfb1287dd7c5eaa943a39078e1fd8dBenjamin Kramer#define LLDB_OPT_SET_9                  (1U << 8)
1094722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham#define LLDB_OPT_SET_10                 (1U << 9)
1106f4a115d1f0727f80124e2986382df202ffd3d5eJohnny Chen#define LLDB_OPT_SET_FROM_TO(A, B)      (((1U << (B)) - 1) ^ (((1U << (A))-1) >> 1))
11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#if defined(__cplusplus)
11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @def DISALLOW_COPY_AND_ASSIGN(TypeName)
11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner///     Macro definition for easily disallowing copy constructor and
11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner///     assignment operators in C++ classes.
11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    TypeName(const TypeName&); \
12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const TypeName& operator=(const TypeName&)
12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // #if defined(__cplusplus)
12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
125b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton#endif  // LLDB_lldb_defines_h_
126