From: Tobias Heider Subject: qbe: include dbgloc patch for hare To: bcallah@openbsd.org Cc: ports@openbsd.org Date: Mon, 5 Feb 2024 20:54:54 +0100 For the next hare port update we will need this additional qbe patch, otherwise it won't build. This is upstream commit 85287081c4a25785dec1ec48c488a5879b3c37ac Unfortunately they haven't tagged a new version including that. ok to ship it as a patch? diff /home/user/got/co/ports commit - b8046539b93a72d6288d3d3643f7d6c95435a297 path + /home/user/got/co/ports blob - 502cd243b7828146f82d943d353e12028979ce03 file + lang/qbe/Makefile --- lang/qbe/Makefile +++ lang/qbe/Makefile @@ -4,6 +4,7 @@ ONLY_FOR_ARCHS = amd64 arm64 riscv64 COMMENT = small, quick compiler backend DISTNAME = qbe-1.1pl20230925 CATEGORIES = lang devel +REVISION = 0 HOMEPAGE = https://c9x.me/compile/ MAINTAINER = Brian Callahan blob - /dev/null file + lang/qbe/patches/patch-all_h (mode 644) --- /dev/null +++ lang/qbe/patches/patch-all_h @@ -0,0 +1,16 @@ +dbgloc: add column argument + +backport of 85287081c4a25785dec1ec48c488a5879b3c37ac + +Index: all.h +--- all.h.orig ++++ all.h +@@ -569,7 +569,7 @@ void rega(Fn *); + void emitfnlnk(char *, Lnk *, FILE *); + void emitdat(Dat *, FILE *); + void emitdbgfile(char *, FILE *); +-void emitdbgloc(uint, FILE *); ++void emitdbgloc(uint, uint, FILE *); + int stashbits(void *, int); + void elf_emitfnfin(char *, FILE *); + void elf_emitfin(FILE *); blob - /dev/null file + lang/qbe/patches/patch-amd64_emit_c (mode 644) --- /dev/null +++ lang/qbe/patches/patch-amd64_emit_c @@ -0,0 +1,16 @@ +dbgloc: add column argument + +backport of 85287081c4a25785dec1ec48c488a5879b3c37ac + +Index: amd64/emit.c +--- amd64/emit.c.orig ++++ amd64/emit.c +@@ -548,7 +548,7 @@ emitins(Ins i, Fn *fn, FILE *f) + emitcopy(i.arg[1], TMP(XMM0+15), i.cls, fn, f); + break; + case Odbgloc: +- emitdbgloc(i.arg[0].val, f); ++ emitdbgloc(i.arg[0].val, i.arg[1].val, f); + break; + } + } blob - /dev/null file + lang/qbe/patches/patch-arm64_emit_c (mode 644) --- /dev/null +++ lang/qbe/patches/patch-arm64_emit_c @@ -0,0 +1,16 @@ +dbgloc: add column argument + +backport of 85287081c4a25785dec1ec48c488a5879b3c37ac + +Index: arm64/emit.c +--- arm64/emit.c.orig ++++ arm64/emit.c +@@ -447,7 +447,7 @@ emitins(Ins *i, E *e) + emitf("mov %=, sp", i, e); + break; + case Odbgloc: +- emitdbgloc(i->arg[0].val, e->f); ++ emitdbgloc(i->arg[0].val, i->arg[1].val, e->f); + break; + } + } blob - /dev/null file + lang/qbe/patches/patch-emit_c (mode 644) --- /dev/null +++ lang/qbe/patches/patch-emit_c @@ -0,0 +1,20 @@ +dbgloc: add column argument + +backport of 85287081c4a25785dec1ec48c488a5879b3c37ac + +Index: emit.c +--- emit.c.orig ++++ emit.c +@@ -235,7 +235,10 @@ emitdbgfile(char *fn, FILE *f) + } + + void +-emitdbgloc(uint loc, FILE *f) ++emitdbgloc(uint line, uint col, FILE *f) + { +- fprintf(f, "\t.loc %u %u\n", curfile, loc); ++ if (col != 0) ++ fprintf(f, "\t.loc %u %u %u\n", curfile, line, col); ++ else ++ fprintf(f, "\t.loc %u %u\n", curfile, line); + } blob - /dev/null file + lang/qbe/patches/patch-ops_h (mode 644) --- /dev/null +++ lang/qbe/patches/patch-ops_h @@ -0,0 +1,16 @@ +dbgloc: add column argument + +backport of 85287081c4a25785dec1ec48c488a5879b3c37ac + +Index: ops.h +--- ops.h.orig ++++ ops.h +@@ -122,7 +122,7 @@ O(vastart, T(m,e,e,e, x,e,e,e), 0) X(0, 0, 0) V(0) + O(copy, T(w,l,s,d, x,x,x,x), 0) X(0, 0, 1) V(0) + + /* Debug */ +-O(dbgloc, T(w,l,s,d, x,x,x,x), 0) X(0, 0, 1) V(0) ++O(dbgloc, T(w,e,e,e, w,e,e,e), 0) X(0, 0, 1) V(0) + + /****************************************/ + /* INTERNAL OPERATIONS (keep nop first) */ blob - /dev/null file + lang/qbe/patches/patch-parse_c (mode 644) --- /dev/null +++ lang/qbe/patches/patch-parse_c @@ -0,0 +1,22 @@ +dbgloc: add column argument + +backport of 85287081c4a25785dec1ec48c488a5879b3c37ac + +Index: parse.c +--- parse.c.orig ++++ parse.c +@@ -669,6 +669,14 @@ parseline(PState ps) + arg[0] = INT(tokval.num); + if (arg[0].val != tokval.num) + err("line number too big"); ++ if (peek() == Tcomma) { ++ next(); ++ expect(Tint); ++ arg[1] = INT(tokval.num); ++ if (arg[1].val != tokval.num) ++ err("column number too big"); ++ } else ++ arg[1] = INT(0); + goto Ins; + } + if (op == Tcall) { blob - /dev/null file + lang/qbe/patches/patch-rv64_emit_c (mode 644) --- /dev/null +++ lang/qbe/patches/patch-rv64_emit_c @@ -0,0 +1,16 @@ +dbgloc: add column argument + +backport of 85287081c4a25785dec1ec48c488a5879b3c37ac + +Index: rv64/emit.c +--- rv64/emit.c.orig ++++ rv64/emit.c +@@ -406,7 +406,7 @@ emitins(Ins *i, Fn *fn, FILE *f) + emitf("mv %=, sp", i, fn, f); + break; + case Odbgloc: +- emitdbgloc(i->arg[0].val, f); ++ emitdbgloc(i->arg[0].val, i->arg[1].val, f); + break; + } + }