authorgravatar for jacoblevgw@gmail.comJacob G-W <jacoblevgw@gmail.com> 2022-01-06 22:46:55-05:00
committergravatar for jacoblevgw@gmail.comJacob G-W <jacoblevgw@gmail.com> 2022-01-06 22:46:55-05:00
log4d6849ceb89fc90c1bc5e198a30624d07dedf9e5
tree5f1c53e76b646dbcd43be793b9eb4fb59a52afd7
parent77f230ebd89e411f8fb2c735be970e87ac07aa24

plan9 debuginfo: fix case where pc change is > 64 * inst quanta


1 files changed, 10 insertions(+), 1 deletions(-)

src/arch/x86_64/Isel.zig+10-1
......@@ -753,7 +753,16 @@ fn dbgAdvancePCAndLine(isel: *Isel, line: u32, column: u32) InnerError!void {
753753 const d_pc_p9 = @intCast(i64, delta_pc) - quant;
754754 if (d_pc_p9 > 0) {
755755 // minus one because if its the last one, we want to leave space to change the line which is one quanta
756 try dbg_out.dbg_line.append(@intCast(u8, @divExact(d_pc_p9, quant) + 128) - quant);
756 var diff = @divExact(d_pc_p9, quant) - quant;
757 while (diff > 0) {
758 if (diff < 64) {
759 try dbg_out.dbg_line.append(@intCast(u8, diff + 128));
760 diff = 0;
761 } else {
762 try dbg_out.dbg_line.append(@intCast(u8, 64 + 128));
763 diff -= 64;
764 }
765 }
757766 if (dbg_out.pcop_change_index.*) |pci|
758767 dbg_out.dbg_line.items[pci] += 1;
759768 dbg_out.pcop_change_index.* = @intCast(u32, dbg_out.dbg_line.items.len - 1);