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 <[email protected]>
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;
+       }
+ }

Reply via email to