[android] Use emulated thread-local storage for API 28 and earlier#78591
Merged
finagolfin merged 1 commit intoswiftlang:release/6.0from Jan 15, 2025
Merged
[android] Use emulated thread-local storage for API 28 and earlier#78591finagolfin merged 1 commit intoswiftlang:release/6.0from
finagolfin merged 1 commit intoswiftlang:release/6.0from
Conversation
Android before API 29 and a few other platforms don't support native TLS, so
fall back to LLVM's emulated TLS there, just like clang does. Also, make sure
`-Xcc -f{no-,}emulated-tls` flags passed in are applied to control what the
Swift compiler does.
Member
Author
|
@swift-ci please test |
DougGregor
approved these changes
Jan 14, 2025
Member
DougGregor
left a comment
There was a problem hiding this comment.
This looks reasonable. Is this the only thing change needed for API levels 24-28?
Member
Author
Yes, I make a few more changes to the CMake config or Android module map that've been merged into trunk also, such as #76460 and #78241, but those are for all API versions and can be added easily on my CI. This change can't, as my Android CI uses the official prebuilt compiler for linux to cross-compile the stdlib and corelibs, so I'm trying to get this compiler change in for that. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Explanation: Android before API 29 and a few other platforms don't support native TLS, so fall back to LLVM's emulated TLS there, just like clang does. Also, make sure
-Xcc -f{no-,}emulated-tlsflags passed in are applied to control what the Swift compiler does.Scope: Has no effect by default, except on Android API 28 or older, OpenBSD, and a couple other platforms Swift doesn't support
Issue: None
Original PR: #77883
Risk: very low
Testing: Passed all CI on trunk and now on my Android CI running at API 24, when built with the latest Jan. 10 trunk snapshot tag containing this commit
Reviewer: @compnerd
This will allow Foundation in my Android SDK bundle and native toolchain for Android to support APIs 24-28 again, finagolfin/swift-android-sdk#175.