lldb-defines.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. //===-- lldb-defines.h ------------------------------------------*- C++ -*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. #ifndef LLDB_LLDB_DEFINES_H
  9. #define LLDB_LLDB_DEFINES_H
  10. #include "lldb/lldb-types.h"
  11. #if defined(_WIN32)
  12. #if defined(EXPORT_LIBLLDB)
  13. #define LLDB_API __declspec(dllexport)
  14. #elif defined(IMPORT_LIBLLDB)
  15. #define LLDB_API __declspec(dllimport)
  16. #else
  17. #define LLDB_API
  18. #endif
  19. #else // defined (_WIN32)
  20. #define LLDB_API
  21. #endif
  22. #if !defined(INT32_MAX)
  23. #define INT32_MAX 2147483647
  24. #endif
  25. #if !defined(UINT32_MAX)
  26. #define UINT32_MAX 4294967295U
  27. #endif
  28. #if !defined(UINT64_MAX)
  29. #define UINT64_MAX 18446744073709551615ULL
  30. #endif
  31. // LLDB version
  32. //
  33. // A build script phase can modify this version number if needed.
  34. //#define LLDB_VERSION
  35. //#define LLDB_REVISION
  36. //#define LLDB_VERSION_STRING
  37. // LLDB defines
  38. #define LLDB_GENERIC_ERROR UINT32_MAX
  39. // Breakpoints
  40. #define LLDB_INVALID_BREAK_ID 0
  41. #define LLDB_DEFAULT_BREAK_SIZE 0
  42. #define LLDB_BREAK_ID_IS_VALID(bid) ((bid) != (LLDB_INVALID_BREAK_ID))
  43. #define LLDB_BREAK_ID_IS_INTERNAL(bid) ((bid) < 0)
  44. // Watchpoints
  45. #define LLDB_INVALID_WATCH_ID 0
  46. #define LLDB_WATCH_ID_IS_VALID(uid) ((uid) != (LLDB_INVALID_WATCH_ID))
  47. #define LLDB_WATCH_TYPE_READ (1u << 0)
  48. #define LLDB_WATCH_TYPE_WRITE (1u << 1)
  49. #define LLDB_WATCH_TYPE_IS_VALID(type) \
  50. ((type | LLDB_WATCH_TYPE_READ) || (type | LLDB_WATCH_TYPE_WRITE))
  51. // Generic Register Numbers
  52. #define LLDB_REGNUM_GENERIC_PC 0 // Program Counter
  53. #define LLDB_REGNUM_GENERIC_SP 1 // Stack Pointer
  54. #define LLDB_REGNUM_GENERIC_FP 2 // Frame Pointer
  55. #define LLDB_REGNUM_GENERIC_RA 3 // Return Address
  56. #define LLDB_REGNUM_GENERIC_FLAGS 4 // Processor flags register
  57. #define LLDB_REGNUM_GENERIC_ARG1 \
  58. 5 // The register that would contain pointer size or less argument 1 (if any)
  59. #define LLDB_REGNUM_GENERIC_ARG2 \
  60. 6 // The register that would contain pointer size or less argument 2 (if any)
  61. #define LLDB_REGNUM_GENERIC_ARG3 \
  62. 7 // The register that would contain pointer size or less argument 3 (if any)
  63. #define LLDB_REGNUM_GENERIC_ARG4 \
  64. 8 // The register that would contain pointer size or less argument 4 (if any)
  65. #define LLDB_REGNUM_GENERIC_ARG5 \
  66. 9 // The register that would contain pointer size or less argument 5 (if any)
  67. #define LLDB_REGNUM_GENERIC_ARG6 \
  68. 10 // The register that would contain pointer size or less argument 6 (if any)
  69. #define LLDB_REGNUM_GENERIC_ARG7 \
  70. 11 // The register that would contain pointer size or less argument 7 (if any)
  71. #define LLDB_REGNUM_GENERIC_ARG8 \
  72. 12 // The register that would contain pointer size or less argument 8 (if any)
  73. /// Invalid value definitions
  74. #define LLDB_INVALID_ADDRESS UINT64_MAX
  75. #define LLDB_INVALID_INDEX32 UINT32_MAX
  76. #define LLDB_INVALID_IVAR_OFFSET UINT32_MAX
  77. #define LLDB_INVALID_IMAGE_TOKEN UINT32_MAX
  78. #define LLDB_INVALID_MODULE_VERSION UINT32_MAX
  79. #define LLDB_INVALID_REGNUM UINT32_MAX
  80. #define LLDB_INVALID_UID UINT64_MAX
  81. #define LLDB_INVALID_PROCESS_ID 0
  82. #define LLDB_INVALID_THREAD_ID 0
  83. #define LLDB_INVALID_FRAME_ID UINT32_MAX
  84. #define LLDB_INVALID_SIGNAL_NUMBER INT32_MAX
  85. #define LLDB_INVALID_OFFSET UINT64_MAX // Must match max of lldb::offset_t
  86. #define LLDB_INVALID_LINE_NUMBER UINT32_MAX
  87. #define LLDB_INVALID_COLUMN_NUMBER 0
  88. #define LLDB_INVALID_QUEUE_ID 0
  89. /// CPU Type definitions
  90. #define LLDB_ARCH_DEFAULT "systemArch"
  91. #define LLDB_ARCH_DEFAULT_32BIT "systemArch32"
  92. #define LLDB_ARCH_DEFAULT_64BIT "systemArch64"
  93. #define LLDB_INVALID_CPUTYPE (0xFFFFFFFEu)
  94. /// Option Set definitions
  95. // FIXME: I'm sure there's some #define magic that can create all 32 sets on the
  96. // fly. That would have the added benefit of making this unreadable.
  97. #define LLDB_MAX_NUM_OPTION_SETS 32
  98. #define LLDB_OPT_SET_ALL 0xFFFFFFFFU
  99. #define LLDB_OPT_SET_1 (1U << 0)
  100. #define LLDB_OPT_SET_2 (1U << 1)
  101. #define LLDB_OPT_SET_3 (1U << 2)
  102. #define LLDB_OPT_SET_4 (1U << 3)
  103. #define LLDB_OPT_SET_5 (1U << 4)
  104. #define LLDB_OPT_SET_6 (1U << 5)
  105. #define LLDB_OPT_SET_7 (1U << 6)
  106. #define LLDB_OPT_SET_8 (1U << 7)
  107. #define LLDB_OPT_SET_9 (1U << 8)
  108. #define LLDB_OPT_SET_10 (1U << 9)
  109. #define LLDB_OPT_SET_11 (1U << 10)
  110. #define LLDB_OPT_SET_12 (1U << 11)
  111. #define LLDB_OPT_SET_FROM_TO(A, B) \
  112. (((1U << (B)) - 1) ^ (((1U << (A)) - 1) >> 1))
  113. #if defined(_WIN32) && !defined(MAX_PATH)
  114. #define MAX_PATH 260
  115. #endif
  116. // ignore GCC function attributes
  117. #if defined(_MSC_VER) && !defined(__clang__)
  118. #define __attribute__(X)
  119. #endif
  120. #define UNUSED_IF_ASSERT_DISABLED(x) ((void)(x))
  121. #endif // LLDB_LLDB_DEFINES_H