aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Target.zig
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2025-07-30 18:59:08 +0200
committerAlex Rønne Petersen <alex@alexrp.com>2025-07-31 17:08:25 +0200
commit03facba4963abd142985c9617ca38de46b1615f1 (patch)
tree54b3c5980fcb5c811e63244b9577e628b18a9a58 /lib/std/Target.zig
parent259b7c3f3fc3f8902f8aa4e6e7539df271073a47 (diff)
downloadzig-03facba4963abd142985c9617ca38de46b1615f1.tar.gz
zig-03facba4963abd142985c9617ca38de46b1615f1.zip
std.Target: require libc for Android API levels prior to 29
Emulated TLS depends on libc pthread functions. Closes #24589.
Diffstat (limited to 'lib/std/Target.zig')
-rw-r--r--lib/std/Target.zig7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/std/Target.zig b/lib/std/Target.zig
index ccc8ab79d8..fb9149c759 100644
--- a/lib/std/Target.zig
+++ b/lib/std/Target.zig
@@ -2023,7 +2023,12 @@ pub fn requiresLibC(target: *const Target) bool {
.serenity,
=> true,
- .linux
+ // Android API levels prior to 29 did not have native TLS support. For these API levels, TLS
+ // is implemented through calls to `__emutls_get_address`. We provide this function in
+ // compiler-rt, but it's implemented by way of `pthread_key_create` et al, so linking libc
+ // is required.
+ .linux => target.abi.isAndroid() and target.os.version_range.linux.android < 29,
+
.windows,
.freebsd,
.netbsd,