-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[lldb][Platform] Move the GetSDKPathFromDebugInfo helpers from PlatformDarwin into Platform #102488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[lldb][Platform] Move the GetSDKPathFromDebugInfo helpers from PlatformDarwin into Platform #102488
Conversation
…rmDarwin into Platform This will soon be needed for llvm#102309, where we plan on calling these APIs from generic ExpressionParser code.
I checked their uses in the Swift repo and we always have a |
@llvm/pr-subscribers-lldb Author: Michael Buch (Michael137) ChangesThis will soon be needed for #102309, where we plan on calling these APIs from generic ExpressionParser code. Full diff: https://github.com/llvm/llvm-project/pull/102488.diff 2 Files Affected:
diff --git a/lldb/include/lldb/Target/Platform.h b/lldb/include/lldb/Target/Platform.h
index 5ed2fc33356d9d..8cf52a486e2c87 100644
--- a/lldb/include/lldb/Target/Platform.h
+++ b/lldb/include/lldb/Target/Platform.h
@@ -27,6 +27,7 @@
#include "lldb/Utility/StructuredData.h"
#include "lldb/Utility/Timeout.h"
#include "lldb/Utility/UserIDResolver.h"
+#include "lldb/Utility/XcodeSDK.h"
#include "lldb/lldb-private-forward.h"
#include "lldb/lldb-public.h"
@@ -436,6 +437,39 @@ class Platform : public PluginInterface {
return lldb_private::ConstString();
}
+ /// Search each CU associated with the specified 'module' for
+ /// the SDK paths the CUs were compiled against. In the presence
+ /// of different SDKs, we try to pick the most appropriate one
+ /// using \ref XcodeSDK::Merge.
+ ///
+ /// \param[in] module Module whose debug-info CUs to parse for
+ /// which SDK they were compiled against.
+ ///
+ /// \returns If successful, returns a pair of a parsed XcodeSDK
+ /// object and a boolean that is 'true' if we encountered
+ /// 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.", __func__, GetName()));
+ }
+
+ /// Returns the full path of the most appropriate SDK for the
+ /// specified 'module'. This function gets this path by parsing
+ /// debug-info (see \ref `GetSDKPathFromDebugInfo`).
+ ///
+ /// \param[in] module Module whose debug-info to parse for
+ /// which SDK it was compiled against.
+ ///
+ /// \returns If successful, returns the full path to an
+ /// Xcode SDK.
+ virtual llvm::Expected<std::string>
+ ResolveSDKPathFromDebugInfo(Module &module) {
+ return llvm::createStringError(llvm::formatv(
+ "{0} not implemented for '{1}' platform.", __func__, GetName()));
+ }
+
const std::string &GetRemoteURL() const { return m_remote_url; }
bool IsHost() const {
diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h
index ff7087da6825d9..66a26d2f496776 100644
--- a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h
+++ b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h
@@ -124,32 +124,11 @@ class PlatformDarwin : public PlatformPOSIX {
/// located in.
static FileSpec GetCurrentCommandLineToolsDirectory();
- /// Search each CU associated with the specified 'module' for
- /// the SDK paths the CUs were compiled against. In the presence
- /// of different SDKs, we try to pick the most appropriate one
- /// using \ref XcodeSDK::Merge.
- ///
- /// \param[in] module Module whose debug-info CUs to parse for
- /// which SDK they were compiled against.
- ///
- /// \returns If successful, returns a pair of a parsed XcodeSDK
- /// object and a boolean that is 'true' if we encountered
- /// a conflicting combination of SDKs when parsing the CUs
- /// (e.g., a public and internal SDK).
- static llvm::Expected<std::pair<XcodeSDK, bool>>
- GetSDKPathFromDebugInfo(Module &module);
-
- /// Returns the full path of the most appropriate SDK for the
- /// specified 'module'. This function gets this path by parsing
- /// debug-info (see \ref `GetSDKPathFromDebugInfo`).
- ///
- /// \param[in] module Module whose debug-info to parse for
- /// which SDK it was compiled against.
- ///
- /// \returns If successful, returns the full path to an
- /// Xcode SDK.
- static llvm::Expected<std::string>
- ResolveSDKPathFromDebugInfo(Module &module);
+ llvm::Expected<std::pair<XcodeSDK, bool>>
+ GetSDKPathFromDebugInfo(Module &module) override;
+
+ llvm::Expected<std::string>
+ ResolveSDKPathFromDebugInfo(Module &module) override;
protected:
static const char *GetCompatibleArch(ArchSpec::Core core, size_t idx);
|
…es depending on SDK version (llvm#102309)" Depends on llvm#102488 This reverts commit cf56e26. The original change was reverted because it was causing linker failures in the unit-tests: ``` Undefined symbols for architecture arm64: "lldb_private::PlatformDarwin::GetSDKPathFromDebugInfo(lldb_private::Module&)", referenced from: lldb_private::ClangExpressionParser::ClangExpressionParser(lldb_private::ExecutionContextScope*, lldb_private::Expression&, bool, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>) in liblldbPluginExpressionParserClang.a[11](ClangExpressionParser.cpp.o) ld: symbol(s) not found for architecture arm64 c++: error: linker command failed with exit code 1 (use -v to see invocation) ``` The relanded version differs only in the fact that we now use the generic `Platform` abstraction to get to `GetSDKPathFromDebugInfo`.
lldb/include/lldb/Target/Platform.h
Outdated
virtual llvm::Expected<std::pair<XcodeSDK, bool>> | ||
GetSDKPathFromDebugInfo(Module &module) { | ||
return llvm::createStringError(llvm::formatv( | ||
"{0} not implemented for '{1}' platform.", __func__, GetName())); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LLVM_PRETTY_FUNCTION?
…es depending on SDK version (#102309)" (#102497) Depends on #102488 This reverts commit cf56e26. The original change was reverted because it was causing linker failures in the unit-tests: ``` Undefined symbols for architecture arm64: "lldb_private::PlatformDarwin::GetSDKPathFromDebugInfo(lldb_private::Module&)", referenced from: lldb_private::ClangExpressionParser::ClangExpressionParser(lldb_private::ExecutionContextScope*, lldb_private::Expression&, bool, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>) in liblldbPluginExpressionParserClang.a[11](ClangExpressionParser.cpp.o) ld: symbol(s) not found for architecture arm64 c++: error: linker command failed with exit code 1 (use -v to see invocation) ``` The relanded version differs only in the fact that we now use the generic `Platform` abstraction to get to `GetSDKPathFromDebugInfo`.
…es depending on SDK version (llvm#102309)" (llvm#102497) Depends on llvm#102488 This reverts commit llvm@cf56e26. The original change was reverted because it was causing linker failures in the unit-tests: ``` Undefined symbols for architecture arm64: "lldb_private::PlatformDarwin::GetSDKPathFromDebugInfo(lldb_private::Module&)", referenced from: lldb_private::ClangExpressionParser::ClangExpressionParser(lldb_private::ExecutionContextScope*, lldb_private::Expression&, bool, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>) in liblldbPluginExpressionParserClang.a[11](ClangExpressionParser.cpp.o) ld: symbol(s) not found for architecture arm64 c++: error: linker command failed with exit code 1 (use -v to see invocation) ``` The relanded version differs only in the fact that we now use the generic `Platform` abstraction to get to `GetSDKPathFromDebugInfo`. (cherry picked from commit 3fffa6d)
…rmDarwin into Platform (llvm#102488) This is needed for relanding llvm#102497, where we plan on calling these APIs from generic ExpressionParser code. (cherry picked from commit 4bb1396)
This is needed for relanding #102497, where we plan on calling these APIs from generic ExpressionParser code.