aboutsummaryrefslogtreecommitdiff
path: root/src/target.zig
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2025-07-06 22:19:08 +0200
committerAlex Rønne Petersen <alex@alexrp.com>2025-07-07 07:23:24 +0200
commitb5cc658ab4113b4db4f709dbec258910696990bd (patch)
tree7864e25eda40d6850582da4109e988b72df5bd2d /src/target.zig
parentc96c913bab00bcae42991244381ddcc8b2377552 (diff)
downloadzig-b5cc658ab4113b4db4f709dbec258910696990bd.tar.gz
zig-b5cc658ab4113b4db4f709dbec258910696990bd.zip
llvm: Use emulated TLS when appropriate for the target
Closes #24236.
Diffstat (limited to 'src/target.zig')
-rw-r--r--src/target.zig13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/target.zig b/src/target.zig
index 28cdf3e3aa..7852dda7a4 100644
--- a/src/target.zig
+++ b/src/target.zig
@@ -85,6 +85,19 @@ pub fn defaultSingleThreaded(target: *const std.Target) bool {
return false;
}
+pub fn useEmulatedTls(target: *const std.Target) bool {
+ if (target.abi.isAndroid()) {
+ if (target.os.version_range.linux.android < 29) return true;
+ return false;
+ }
+ if (target.abi.isOpenHarmony()) return true;
+ return switch (target.os.tag) {
+ .openbsd => true,
+ .windows => target.abi == .cygnus,
+ else => false,
+ };
+}
+
pub fn hasValgrindSupport(target: *const std.Target, backend: std.builtin.CompilerBackend) bool {
// We can't currently output the necessary Valgrind client request assembly when using the C
// backend and compiling with an MSVC-like compiler.