From a9796317aa1ba1ebc7704093f95e87cd560c0f2a Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Tue, 28 Apr 2026 16:11:47 +0200 Subject: [PATCH] apple tls is global --- amd64/emit.c | 2 +- arm64/emit.c | 7 ++++--- arm64/isel.c | 2 +- rv64/emit.c | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/amd64/emit.c b/amd64/emit.c index c310e93..a21400e 100644 --- a/amd64/emit.c +++ b/amd64/emit.c @@ -549,7 +549,7 @@ emitins(Ins i, E *e) regtoa(i.to.val, SLong)); break; } - if (T.apple && con->sym.type == SThr) { + if (T.apple && (con->sym.type & SThr)) { fprintf(e->f, "\tmovq %s%s@TLVP(%%rip), %%%s\n", sym[0] == '"' ? "" : T.assym, sym, diff --git a/arm64/emit.c b/arm64/emit.c index 18c5ceb..8899675 100644 --- a/arm64/emit.c +++ b/arm64/emit.c @@ -278,6 +278,10 @@ loadaddr(Con *c, char *rn, E *e) s = "\tadrp\tR, SO\n" "\tadd\tR, R, #:lo12:SO\n"; break; + case SExtThr: + if (!T.apple) + die("extern thread unavailable on arm64"); + /* fall through */ case SThr: if (T.apple) s = "\tadrp\tR, S@tlvppage\n" @@ -295,9 +299,6 @@ loadaddr(Con *c, char *rn, E *e) s = "\tadrp\tR, :got:SO\n" "\tldr\tR, [R, #:got_lo12:SO]\n"; break; - case SExtThr: - die("extern thread not yet implemented on arm64"); - break; } l = str(c->sym.id); diff --git a/arm64/isel.c b/arm64/isel.c index ff3b30b..7b78202 100644 --- a/arm64/isel.c +++ b/arm64/isel.c @@ -80,7 +80,7 @@ fixarg(Ref *pr, int k, int phi, Fn *fn) c = &fn->con[r0.val]; if (T.apple && c->type == CAddr - && c->sym.type == SThr) { + && (c->sym.type & SThr)) { r1 = newtmp("isel", Kl, fn); *pr = r1; if (c->bits.i) { diff --git a/rv64/emit.c b/rv64/emit.c index 53f810b..b189993 100644 --- a/rv64/emit.c +++ b/rv64/emit.c @@ -250,7 +250,7 @@ loadaddr(Con *c, char *rn, FILE *f) fputc('\n', f); break; case SExtThr: - die("extern thread not yet implemented on rv64"); + die("extern thread unavailable on rv64"); break; default: fprintf(f, "\tla %s, ", rn);