From 2279f77d2855d9caa0ece466462d34bcfdf4fb3d Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Thu, 6 Apr 2023 12:47:14 -0700 Subject: [PATCH] [lldb] Add an LLDB_DEPRECATED macro similar to LLVM_DEPRECATED Add an LLDB_DEPRECATED macro similar to LLVM_DEPRECATED. We cannot directly reuse the LLVM one, because it's defined in Compiler.h which is not something we can include in the SB API. For the SB API, the macro is undef'd if: 1. We're building the SWIG bindings. We might still want to expose deprecated methods to our scripting users. 2. We're targeting anything older than C++14 as the [[deprecated]] attribute was added for C++14 and the SB API can be used by projects compiling against an older language version. Differential revision: https://reviews.llvm.org/D147736 --- lldb/include/lldb/API/SBDefines.h | 8 ++++++++ lldb/include/lldb/API/SBTarget.h | 3 ++- lldb/include/lldb/lldb-defines.h | 6 ++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lldb/include/lldb/API/SBDefines.h b/lldb/include/lldb/API/SBDefines.h index e7f8ca7..4f04cd1 100644 --- a/lldb/include/lldb/API/SBDefines.h +++ b/lldb/include/lldb/API/SBDefines.h @@ -27,6 +27,14 @@ #endif #endif +// Don't add the deprecated attribute when generating the bindings or when +// building for anything older than C++14 which is the first version that +// supports the attribute. +#if defined(SWIG) or _cplusplus < 201402L +#undef LLDB_DEPRECATED +#define LLDB_DEPRECATED(MSG, FIX) +#endif + // Forward Declarations namespace lldb { diff --git a/lldb/include/lldb/API/SBTarget.h b/lldb/include/lldb/API/SBTarget.h index 404e905..a67a26f 100644 --- a/lldb/include/lldb/API/SBTarget.h +++ b/lldb/include/lldb/API/SBTarget.h @@ -390,7 +390,8 @@ public: /// \return /// An error to indicate success, fail, and any reason for /// failure. - [[deprecated("Use SetModuleLoadAddress(lldb::SBModule, uint64_t)")]] + LLDB_DEPRECATED("Use SetModuleLoadAddress(lldb::SBModule, uint64_t)", + "SetModuleLoadAddress(lldb::SBModule, uint64_t)") lldb::SBError SetModuleLoadAddress(lldb::SBModule module, int64_t sections_offset); #endif diff --git a/lldb/include/lldb/lldb-defines.h b/lldb/include/lldb/lldb-defines.h index 3d23d69..1cf86eff 100644 --- a/lldb/include/lldb/lldb-defines.h +++ b/lldb/include/lldb/lldb-defines.h @@ -125,4 +125,10 @@ #define UNUSED_IF_ASSERT_DISABLED(x) ((void)(x)) +#if defined(__clang__) +#define LLDB_DEPRECATED(MSG, FIX) __attribute__((deprecated(MSG, FIX))) +#else +#define LLDB_DEPRECATED(MSG, FIX) [[deprecated(MSG)]] +#endif + #endif // LLDB_LLDB_DEFINES_H -- 2.7.4