aboutsummaryrefslogtreecommitdiffhomepage
path: root/ir
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2025-12-14 12:30:20 +0100
committerlemon <lsof@mailbox.org>2025-12-14 17:26:04 +0100
commitcaf3e504af18d8329af4d6ce6ed43e314251e01a (patch)
tree40979e770284e9eb416f2de13a6db732102fd123 /ir
parentd8b4e87af669c2b260686a5db67f7f02b4c164d9 (diff)
only put dats can in .text now when emitting it
Diffstat (limited to 'ir')
-rw-r--r--ir/dump.c4
-rw-r--r--ir/ir.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/ir/dump.c b/ir/dump.c
index d580a26..a2faf27 100644
--- a/ir/dump.c
+++ b/ir/dump.c
@@ -9,7 +9,7 @@ static struct wbuf *out = &bstdout;
static bool
prilitdat(const struct irdat *dat, const char *prefix)
{
- uchar *p = (dat->section == Sdata ? objout.data.p : objout.rodata.p) + dat->off;
+ uchar *p = (dat->section == Sdata ? objout.data.p : objout.rodata.p) + dat->off;
if (dat->ctype.t == TYARRAY && typechild(dat->ctype).t == TYCHAR && dat->siz-1 < 60 && p[dat->siz-1] == 0) {
bfmt(out, "%s%'S", prefix, p, dat->siz-1);
} else if (dat->ctype.t == TYFLOAT) {
@@ -25,7 +25,7 @@ prilitdat(const struct irdat *dat, const char *prefix)
static void
pridat(const struct irdat *dat)
{
- uchar *p = (dat->section == Sdata ? objout.data.p : objout.rodata.p) + dat->off;
+ uchar *p = (dat->section == Sdata ? objout.data.p : objout.rodata.p) + dat->off;
enum {
MINZERO = 4,
MAXLINE = 60,
diff --git a/ir/ir.c b/ir/ir.c
index 5bc94aa..13b309d 100644
--- a/ir/ir.c
+++ b/ir/ir.c
@@ -148,7 +148,7 @@ union ref
mkdatref(const char *name, union type ctype, uint siz, uint align, const void *bytes, uint n, bool deref)
{
struct irdat dat = { .ctype = ctype, .align = align, .siz = siz, .name = name };
- dat.section = align >= 4 && align <= targ_primsizes[TYPTR] && siz <= 16 ? Stext : Srodata;
+ dat.section = objout.code && align >= 4 && align <= targ_primsizes[TYPTR] && siz <= 16 ? Stext : Srodata;
assert(n <= siz && siz && align);
if (!name) {