https://github.com/da-viper updated https://github.com/llvm/llvm-project/pull/184199
>From 0c230b710b57eb746c6de2616b7dba759aac975c Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <[email protected]> Date: Mon, 2 Mar 2026 18:29:42 +0000 Subject: [PATCH 1/2] [lldb][NFC] Use UnimplementedError for GetSDKFromDebugInfo We can now differenciate unimplemented errors from actual errors that may be useful to the users. --- lldb/include/lldb/Target/Platform.h | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lldb/include/lldb/Target/Platform.h b/lldb/include/lldb/Target/Platform.h index 637d4c37b90bc..3cf210cc84f76 100644 --- a/lldb/include/lldb/Target/Platform.h +++ b/lldb/include/lldb/Target/Platform.h @@ -27,6 +27,7 @@ #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/StructuredData.h" #include "lldb/Utility/Timeout.h" +#include "lldb/Utility/UnimplementedError.h" #include "lldb/Utility/UserIDResolver.h" #include "lldb/Utility/XcodeSDK.h" #include "lldb/lldb-private-forward.h" @@ -452,10 +453,8 @@ class Platform : public PluginInterface { /// a conflicting combination of SDKs when parsing the CUs /// (e.g., a public and internal SDK). virtual llvm::Expected<std::pair<XcodeSDK, bool>> - GetSDKPathFromDebugInfo(Module &module) { - return llvm::createStringError( - llvm::formatv("{0} not implemented for '{1}' platform.", - LLVM_PRETTY_FUNCTION, GetName())); + GetSDKPathFromDebugInfo(Module & /*module*/) { + return llvm::make_error<UnimplementedError>(); } /// Returns the full path of the most appropriate SDK for the @@ -478,11 +477,10 @@ class Platform : public PluginInterface { /// /// \param[in] unit The CU /// - /// \returns A parsed XcodeSDK object if successful, an Error otherwise. - virtual llvm::Expected<XcodeSDK> GetSDKPathFromDebugInfo(CompileUnit &unit) { - return llvm::createStringError( - llvm::formatv("{0} not implemented for '{1}' platform.", - LLVM_PRETTY_FUNCTION, GetName())); + /// \returns A parsed XcodeSDK object if successful, an Error otherwise. + virtual llvm::Expected<XcodeSDK> + GetSDKPathFromDebugInfo(CompileUnit & /*unit*/) { + return llvm::make_error<UnimplementedError>(); } /// Returns the full path of the most appropriate SDK for the >From cce48da2aeec537041c737f730f2bee3192d8eba Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <[email protected]> Date: Wed, 4 Mar 2026 14:25:42 +0000 Subject: [PATCH 2/2] Add review changes Add a new constructor for the UnimplementedError class --- lldb/include/lldb/Target/Platform.h | 14 +++++++++----- lldb/include/lldb/Utility/UnimplementedError.h | 13 ++++++++++++- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/lldb/include/lldb/Target/Platform.h b/lldb/include/lldb/Target/Platform.h index 3cf210cc84f76..fe9d4f7982bbf 100644 --- a/lldb/include/lldb/Target/Platform.h +++ b/lldb/include/lldb/Target/Platform.h @@ -453,8 +453,10 @@ class Platform : public PluginInterface { /// a conflicting combination of SDKs when parsing the CUs /// (e.g., a public and internal SDK). virtual llvm::Expected<std::pair<XcodeSDK, bool>> - GetSDKPathFromDebugInfo(Module & /*module*/) { - return llvm::make_error<UnimplementedError>(); + GetSDKPathFromDebugInfo(Module &module) { + return llvm::make_error<UnimplementedError>( + llvm::formatv("{0} not implemented for '{1}' platform.", + LLVM_PRETTY_FUNCTION, GetName())); } /// Returns the full path of the most appropriate SDK for the @@ -468,7 +470,7 @@ class Platform : public PluginInterface { /// Xcode SDK. virtual llvm::Expected<std::string> ResolveSDKPathFromDebugInfo(Module &module) { - return llvm::createStringError( + return llvm::make_error<UnimplementedError>( llvm::formatv("{0} not implemented for '{1}' platform.", LLVM_PRETTY_FUNCTION, GetName())); } @@ -480,7 +482,9 @@ class Platform : public PluginInterface { /// \returns A parsed XcodeSDK object if successful, an Error otherwise. virtual llvm::Expected<XcodeSDK> GetSDKPathFromDebugInfo(CompileUnit & /*unit*/) { - return llvm::make_error<UnimplementedError>(); + return llvm::make_error<UnimplementedError>( + llvm::formatv("{0} not implemented for '{1}' platform.", + LLVM_PRETTY_FUNCTION, GetName())); } /// Returns the full path of the most appropriate SDK for the @@ -493,7 +497,7 @@ class Platform : public PluginInterface { /// Xcode SDK. virtual llvm::Expected<std::string> ResolveSDKPathFromDebugInfo(CompileUnit &unit) { - return llvm::createStringError( + return llvm::make_error<UnimplementedError>( llvm::formatv("{0} not implemented for '{1}' platform.", LLVM_PRETTY_FUNCTION, GetName())); } diff --git a/lldb/include/lldb/Utility/UnimplementedError.h b/lldb/include/lldb/Utility/UnimplementedError.h index c6fab0a9483c0..989c4ecc0084e 100644 --- a/lldb/include/lldb/Utility/UnimplementedError.h +++ b/lldb/include/lldb/Utility/UnimplementedError.h @@ -14,10 +14,21 @@ namespace lldb_private { class UnimplementedError : public llvm::ErrorInfo<UnimplementedError> { + std::string m_message; + public: static char ID; - void log(llvm::raw_ostream &OS) const override { OS << "Not implemented"; } + UnimplementedError() = default; + explicit UnimplementedError(std::string message) + : m_message(std::move(message)) {} + + void log(llvm::raw_ostream &OS) const override { + if (!m_message.empty()) + OS << m_message; + else + OS << "Not implemented"; + } std::error_code convertToErrorCode() const override { return llvm::errc::not_supported; _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
