-
Notifications
You must be signed in to change notification settings - Fork 339
[windows] fix flaky linker error when building LLDB #10613
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
base: stable/20240723
Are you sure you want to change the base?
[windows] fix flaky linker error when building LLDB #10613
Conversation
@@ -27,6 +27,7 @@ add_lldb_library(lldbPluginSwiftLanguage PLUGIN | |||
lldbPluginTypeSystemSwift | |||
swiftAST | |||
swiftClangImporter | |||
swiftCore |
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.
Can you add a comment here that this works around an issue on windows and maybe even ifdef this so we only do this on windows?
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.
Fixed 👍
@@ -27,6 +33,7 @@ add_lldb_library(lldbPluginSwiftLanguage PLUGIN | |||
lldbPluginTypeSystemSwift | |||
swiftAST | |||
swiftClangImporter | |||
${SWIFT_CORE_LIB} # fixes a linker issue when building on Windows. |
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.
It wouldn't hurt to be more verbose and mention which symbol is missing, and that we don't actually think this is the correct solution, but merely a workaround.
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.
Made the comment more explicit 👍
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.
This really is the right solution - if you have Swift code in the image, you need to have swiftrt.obj
linked in to register the metadata with the runtime, and thus you need to register the runtime.
If this is truly a workaround, then we should probably indicate what dependency we are pulling in that we should not be which is resulting in Swift code being pulled into the module.
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.
If this is truly a workaround, then we should probably indicate what dependency we are pulling in that we should not be which is resulting in Swift code being pulled into the module.
Could it be linked to these commits? swiftlang/swift@8cb86ac - swiftlang/swift@0c42b57?
I'm not sure how to determine if it's a workaround or the right solution.
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.
No, neither of those are related. The first is a change to the stubs, and the second is limited to ELF. The way to determine if this is a workaround or the right solution is to understand why there is any Swift code in the module. If you are supposed to have Swift code, then this is the right fix - Swift code generally requires that you are linking to swiftCore as that is what provides the implementation for the basic types.
@swift-ci test |
When building LLDB on Windows with
build.ps1
, the following linker error happens, especially after rebuilding incrementally. The error sometimes goes away after deleting CMakeCache.txt, but that's not reliable.This PR fixes this build error and removes the use of
SWIFT_ALL_LIBS
as it's not referenced anywhere else.