aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/c.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-03-19 19:26:08 +0100
committerlemon <lsof@mailbox.org>2026-03-19 19:26:08 +0100
commit5d68766b983213a8750d59cc24dc844c6170626b (patch)
treeab1b836091103bad19d8949595d28b4924e2ef1f /src/c.c
parent49ba7f066faa6e73e8f09e2e7ed6a077f6ba0258 (diff)
ir: do not always try to put small literals in .text
OpenBSD enforces read xor execute (XOM) even in x86-64. Not aware of any other platforms that do this.
Diffstat (limited to 'src/c.c')
-rw-r--r--src/c.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/c.c b/src/c.c
index 75937f3..92f917e 100644
--- a/src/c.c
+++ b/src/c.c
@@ -1125,9 +1125,9 @@ Unary:
internstr fnname = decl->sym;
decl->isbuiltin = 0;
decl->sym = mkhiddensym(&fnname->c, "__func__", 1);
- uint off = objnewdat(decl->sym, objout.code ? Stext : Srodata, 0, typesize(decl->ty), typealign(decl->ty));
- uchar *p = objout.code ? objout.textbegin + off : objout.rodata.p + off;
- memcpy(p, fnname, typearrlen(decl->ty)-1);
+ assert(decl->ty.t == TYARRAY && typechild(decl->ty).t == TYCHAR);
+ uint siz = typesize(decl->ty);
+ (void) mkdatref(decl->sym, decl->ty, siz, 1, fnname, siz, 0, 1);
}
ex = mkexpr(ESYM, tk.span, decl->ty, .qual = decl->qual, .decl = decl - declsbuf.p);
}