diff options
| author | 2025-12-14 12:30:20 +0100 | |
|---|---|---|
| committer | 2025-12-14 17:26:04 +0100 | |
| commit | caf3e504af18d8329af4d6ce6ed43e314251e01a (patch) | |
| tree | 40979e770284e9eb416f2de13a6db732102fd123 /ir | |
| parent | d8b4e87af669c2b260686a5db67f7f02b4c164d9 (diff) | |
only put dats can in .text now when emitting it
Diffstat (limited to 'ir')
| -rw-r--r-- | ir/dump.c | 4 | ||||
| -rw-r--r-- | ir/ir.c | 2 |
2 files changed, 3 insertions, 3 deletions
@@ -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, @@ -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) { |