| author | |
| committer | |
| log | b94525c45b695b116c2af69174283ad10dce6de9 |
| tree | fb6c323383393f5ec00de41f5391ce5301619285 |
| parent | 69c72e24d4aa2044bb9de0c101517af7afe555de |
| parent | b8601e92524b9ea2e51b5dc8d816085b7399a08c |
| signature |
Refactor some debug stuff3 files changed, 183 insertions(+), 162 deletions(-)
lib/std/debug.zig+77-158| ... | ... | @@ -379,16 +379,7 @@ fn printSourceAtAddressWindows(di: *DebugInfo, out_stream: var, relocated_addres |
| 379 | 379 | } |
| 380 | 380 | } else { |
| 381 | 381 | // we have no information to add to the address |
| 382 | if (tty_color) { | |
| 383 | try out_stream.print("???:?:?: ", .{}); | |
| 384 | setTtyColor(TtyColor.Dim); | |
| 385 | try out_stream.print("0x{x} in ??? (???)", .{relocated_address}); | |
| 386 | setTtyColor(TtyColor.Reset); | |
| 387 | try out_stream.print("\n\n\n", .{}); | |
| 388 | } else { | |
| 389 | try out_stream.print("???:?:?: 0x{x} in ??? (???)\n\n\n", .{relocated_address}); | |
| 390 | } | |
| 391 | return; | |
| 382 | return printLineInfo(out_stream, null, relocated_address, "???", "???", tty_color, printLineFromFileAnyOs); | |
| 392 | 383 | }; |
| 393 | 384 | |
| 394 | 385 | const mod = &di.modules[mod_index]; |
| ... | ... | @@ -510,66 +501,15 @@ fn printSourceAtAddressWindows(di: *DebugInfo, out_stream: var, relocated_addres |
| 510 | 501 | } |
| 511 | 502 | }; |
| 512 | 503 | |
| 513 | if (tty_color) { | |
| 514 | setTtyColor(TtyColor.White); | |
| 515 | if (opt_line_info) |li| { | |
| 516 | try out_stream.print("{}:{}:{}", .{ li.file_name, li.line, li.column }); | |
| 517 | } else { | |
| 518 | try out_stream.print("???:?:?", .{}); | |
| 519 | } | |
| 520 | setTtyColor(TtyColor.Reset); | |
| 521 | try out_stream.print(": ", .{}); | |
| 522 | setTtyColor(TtyColor.Dim); | |
| 523 | try out_stream.print("0x{x} in {} ({})", .{ relocated_address, symbol_name, obj_basename }); | |
| 524 | setTtyColor(TtyColor.Reset); | |
| 525 | ||
| 526 | if (opt_line_info) |line_info| { | |
| 527 | try out_stream.print("\n", .{}); | |
| 528 | if (printLineFromFileAnyOs(out_stream, line_info)) { | |
| 529 | if (line_info.column == 0) { | |
| 530 | try out_stream.write("\n"); | |
| 531 | } else { | |
| 532 | { | |
| 533 | var col_i: usize = 1; | |
| 534 | while (col_i < line_info.column) : (col_i += 1) { | |
| 535 | try out_stream.writeByte(' '); | |
| 536 | } | |
| 537 | } | |
| 538 | setTtyColor(TtyColor.Green); | |
| 539 | try out_stream.write("^"); | |
| 540 | setTtyColor(TtyColor.Reset); | |
| 541 | try out_stream.write("\n"); | |
| 542 | } | |
| 543 | } else |err| switch (err) { | |
| 544 | error.EndOfFile => {}, | |
| 545 | error.FileNotFound => { | |
| 546 | setTtyColor(TtyColor.Dim); | |
| 547 | try out_stream.write("file not found\n\n"); | |
| 548 | setTtyColor(TtyColor.White); | |
| 549 | }, | |
| 550 | else => return err, | |
| 551 | } | |
| 552 | } else { | |
| 553 | try out_stream.print("\n\n\n", .{}); | |
| 554 | } | |
| 555 | } else { | |
| 556 | if (opt_line_info) |li| { | |
| 557 | try out_stream.print("{}:{}:{}: 0x{x} in {} ({})\n\n\n", .{ | |
| 558 | li.file_name, | |
| 559 | li.line, | |
| 560 | li.column, | |
| 561 | relocated_address, | |
| 562 | symbol_name, | |
| 563 | obj_basename, | |
| 564 | }); | |
| 565 | } else { | |
| 566 | try out_stream.print("???:?:?: 0x{x} in {} ({})\n\n\n", .{ | |
| 567 | relocated_address, | |
| 568 | symbol_name, | |
| 569 | obj_basename, | |
| 570 | }); | |
| 571 | } | |
| 572 | } | |
| 504 | try printLineInfo( | |
| 505 | out_stream, | |
| 506 | opt_line_info, | |
| 507 | relocated_address, | |
| 508 | symbol_name, | |
| 509 | obj_basename, | |
| 510 | tty_color, | |
| 511 | printLineFromFileAnyOs, | |
| 512 | ); | |
| 573 | 513 | } |
| 574 | 514 | |
| 575 | 515 | const TtyColor = enum { |
| ... | ... | @@ -605,7 +545,11 @@ fn setTtyColor(tty_color: TtyColor) void { |
| 605 | 545 | stderr_file.write(RESET) catch return; |
| 606 | 546 | }, |
| 607 | 547 | } |
| 608 | } else { | |
| 548 | ||
| 549 | return; | |
| 550 | } | |
| 551 | ||
| 552 | if (builtin.os == .windows) { | |
| 609 | 553 | const S = struct { |
| 610 | 554 | var attrs: windows.WORD = undefined; |
| 611 | 555 | var init_attrs = false; |
| ... | ... | @@ -711,12 +655,7 @@ fn printSourceAtAddressMacOs(di: *DebugInfo, out_stream: var, address: usize, tt |
| 711 | 655 | const adjusted_addr = 0x100000000 + (address - base_addr); |
| 712 | 656 | |
| 713 | 657 | const symbol = machoSearchSymbols(di.symbols, adjusted_addr) orelse { |
| 714 | if (tty_color) { | |
| 715 | try out_stream.print("???:?:?: " ++ DIM ++ "0x{x} in ??? (???)" ++ RESET ++ "\n\n\n", .{address}); | |
| 716 | } else { | |
| 717 | try out_stream.print("???:?:?: 0x{x} in ??? (???)\n\n\n", .{address}); | |
| 718 | } | |
| 719 | return; | |
| 658 | return printLineInfo(out_stream, null, address, "???", "???", tty_color, printLineFromFileAnyOs); | |
| 720 | 659 | }; |
| 721 | 660 | |
| 722 | 661 | const symbol_name = mem.toSliceConst(u8, @ptrCast([*:0]const u8, di.strings.ptr + symbol.nlist.n_strx)); |
| ... | ... | @@ -724,29 +663,22 @@ fn printSourceAtAddressMacOs(di: *DebugInfo, out_stream: var, address: usize, tt |
| 724 | 663 | const ofile_path = mem.toSliceConst(u8, @ptrCast([*:0]const u8, di.strings.ptr + ofile.n_strx)); |
| 725 | 664 | break :blk fs.path.basename(ofile_path); |
| 726 | 665 | } else "???"; |
| 727 | if (getLineNumberInfoMacOs(di, symbol.*, adjusted_addr)) |line_info| { | |
| 728 | defer line_info.deinit(); | |
| 729 | try printLineInfo( | |
| 730 | out_stream, | |
| 731 | line_info, | |
| 732 | address, | |
| 733 | symbol_name, | |
| 734 | compile_unit_name, | |
| 735 | tty_color, | |
| 736 | printLineFromFileAnyOs, | |
| 737 | ); | |
| 738 | } else |err| switch (err) { | |
| 739 | error.MissingDebugInfo, error.InvalidDebugInfo => { | |
| 740 | if (tty_color) { | |
| 741 | try out_stream.print("???:?:?: " ++ DIM ++ "0x{x} in {} ({})" ++ RESET ++ "\n\n\n", .{ | |
| 742 | address, symbol_name, compile_unit_name, | |
| 743 | }); | |
| 744 | } else { | |
| 745 | try out_stream.print("???:?:?: 0x{x} in {} ({})\n\n\n", .{ address, symbol_name, compile_unit_name }); | |
| 746 | } | |
| 747 | }, | |
| 666 | ||
| 667 | const line_info = getLineNumberInfoMacOs(di, symbol.*, adjusted_addr) catch |err| switch (err) { | |
| 668 | error.MissingDebugInfo, error.InvalidDebugInfo => null, | |
| 748 | 669 | else => return err, |
| 749 | } | |
| 670 | }; | |
| 671 | defer if (line_info) |li| li.deinit(); | |
| 672 | ||
| 673 | try printLineInfo( | |
| 674 | out_stream, | |
| 675 | line_info, | |
| 676 | address, | |
| 677 | symbol_name, | |
| 678 | compile_unit_name, | |
| 679 | tty_color, | |
| 680 | printLineFromFileAnyOs, | |
| 681 | ); | |
| 750 | 682 | } |
| 751 | 683 | |
| 752 | 684 | pub fn printSourceAtAddressPosix(debug_info: *DebugInfo, out_stream: var, address: usize, tty_color: bool) !void { |
| ... | ... | @@ -755,47 +687,46 @@ pub fn printSourceAtAddressPosix(debug_info: *DebugInfo, out_stream: var, addres |
| 755 | 687 | |
| 756 | 688 | fn printLineInfo( |
| 757 | 689 | out_stream: var, |
| 758 | line_info: LineInfo, | |
| 690 | line_info: ?LineInfo, | |
| 759 | 691 | address: usize, |
| 760 | 692 | symbol_name: []const u8, |
| 761 | 693 | compile_unit_name: []const u8, |
| 762 | 694 | tty_color: bool, |
| 763 | 695 | comptime printLineFromFile: var, |
| 764 | 696 | ) !void { |
| 765 | if (tty_color) { | |
| 766 | try out_stream.print(WHITE ++ "{}:{}:{}" ++ RESET ++ ": " ++ DIM ++ "0x{x} in {} ({})" ++ RESET ++ "\n", .{ | |
| 767 | line_info.file_name, | |
| 768 | line_info.line, | |
| 769 | line_info.column, | |
| 770 | address, | |
| 771 | symbol_name, | |
| 772 | compile_unit_name, | |
| 773 | }); | |
| 774 | if (printLineFromFile(out_stream, line_info)) { | |
| 775 | if (line_info.column == 0) { | |
| 776 | try out_stream.write("\n"); | |
| 777 | } else { | |
| 778 | { | |
| 779 | var col_i: usize = 1; | |
| 780 | while (col_i < line_info.column) : (col_i += 1) { | |
| 781 | try out_stream.writeByte(' '); | |
| 782 | } | |
| 783 | } | |
| 784 | try out_stream.write(GREEN ++ "^" ++ RESET ++ "\n"); | |
| 697 | if (tty_color) setTtyColor(.White); | |
| 698 | ||
| 699 | if (line_info) |*li| { | |
| 700 | try out_stream.print("{}:{}:{}", .{ li.file_name, li.line, li.column }); | |
| 701 | } else { | |
| 702 | try out_stream.print("???:?:?", .{}); | |
| 703 | } | |
| 704 | ||
| 705 | if (tty_color) setTtyColor(.Reset); | |
| 706 | try out_stream.write(": "); | |
| 707 | if (tty_color) setTtyColor(.Dim); | |
| 708 | try out_stream.print("0x{x} in {} ({})", .{ address, symbol_name, compile_unit_name }); | |
| 709 | if (tty_color) setTtyColor(.Reset); | |
| 710 | try out_stream.write("\n"); | |
| 711 | ||
| 712 | // Show the matching source code line if possible | |
| 713 | if (line_info) |li| { | |
| 714 | if (noasync printLineFromFile(out_stream, li)) { | |
| 715 | if (li.column > 0) { | |
| 716 | // The caret already takes one char | |
| 717 | const space_needed = @intCast(usize, li.column - 1); | |
| 718 | ||
| 719 | try out_stream.writeByteNTimes(' ', space_needed); | |
| 720 | if (tty_color) setTtyColor(.Green); | |
| 721 | try out_stream.write("^"); | |
| 722 | if (tty_color) setTtyColor(.Reset); | |
| 785 | 723 | } |
| 724 | try out_stream.write("\n"); | |
| 786 | 725 | } else |err| switch (err) { |
| 787 | 726 | error.EndOfFile, error.FileNotFound => {}, |
| 727 | error.BadPathName => {}, | |
| 788 | 728 | else => return err, |
| 789 | 729 | } |
| 790 | } else { | |
| 791 | try out_stream.print("{}:{}:{}: 0x{x} in {} ({})\n", .{ | |
| 792 | line_info.file_name, | |
| 793 | line_info.line, | |
| 794 | line_info.column, | |
| 795 | address, | |
| 796 | symbol_name, | |
| 797 | compile_unit_name, | |
| 798 | }); | |
| 799 | 730 | } |
| 800 | 731 | } |
| 801 | 732 | |
| ... | ... | @@ -1240,38 +1171,26 @@ pub const DwarfInfo = struct { |
| 1240 | 1171 | comptime printLineFromFile: var, |
| 1241 | 1172 | ) !void { |
| 1242 | 1173 | const compile_unit = self.findCompileUnit(address) catch { |
| 1243 | if (tty_color) { | |
| 1244 | try out_stream.print("???:?:?: " ++ DIM ++ "0x{x} in ??? (???)" ++ RESET ++ "\n\n\n", .{address}); | |
| 1245 | } else { | |
| 1246 | try out_stream.print("???:?:?: 0x{x} in ??? (???)\n\n\n", .{address}); | |
| 1247 | } | |
| 1248 | return; | |
| 1174 | return printLineInfo(out_stream, null, address, "???", "???", tty_color, printLineFromFile); | |
| 1249 | 1175 | }; |
| 1176 | ||
| 1250 | 1177 | const compile_unit_name = try compile_unit.die.getAttrString(self, DW.AT_name); |
| 1251 | if (self.getLineNumberInfo(compile_unit.*, address)) |line_info| { | |
| 1252 | defer line_info.deinit(); | |
| 1253 | const symbol_name = self.getSymbolName(address) orelse "???"; | |
| 1254 | try printLineInfo( | |
| 1255 | out_stream, | |
| 1256 | line_info, | |
| 1257 | address, | |
| 1258 | symbol_name, | |
| 1259 | compile_unit_name, | |
| 1260 | tty_color, | |
| 1261 | printLineFromFile, | |
| 1262 | ); | |
| 1263 | } else |err| switch (err) { | |
| 1264 | error.MissingDebugInfo, error.InvalidDebugInfo => { | |
| 1265 | if (tty_color) { | |
| 1266 | try out_stream.print("???:?:?: " ++ DIM ++ "0x{x} in ??? ({})" ++ RESET ++ "\n\n\n", .{ | |
| 1267 | address, compile_unit_name, | |
| 1268 | }); | |
| 1269 | } else { | |
| 1270 | try out_stream.print("???:?:?: 0x{x} in ??? ({})\n\n\n", .{ address, compile_unit_name }); | |
| 1271 | } | |
| 1272 | }, | |
| 1178 | const symbol_name = self.getSymbolName(address) orelse "???"; | |
| 1179 | const line_info = self.getLineNumberInfo(compile_unit.*, address) catch |err| switch (err) { | |
| 1180 | error.MissingDebugInfo, error.InvalidDebugInfo => null, | |
| 1273 | 1181 | else => return err, |
| 1274 | } | |
| 1182 | }; | |
| 1183 | defer if (line_info) |li| li.deinit(); | |
| 1184 | ||
| 1185 | try printLineInfo( | |
| 1186 | out_stream, | |
| 1187 | line_info, | |
| 1188 | address, | |
| 1189 | symbol_name, | |
| 1190 | compile_unit_name, | |
| 1191 | tty_color, | |
| 1192 | printLineFromFile, | |
| 1193 | ); | |
| 1275 | 1194 | } |
| 1276 | 1195 | |
| 1277 | 1196 | fn getSymbolName(di: *DwarfInfo, address: u64) ?[]const u8 { |
lib/std/io/out_stream.zig+8-4| ... | ... | @@ -45,10 +45,14 @@ pub fn OutStream(comptime WriteError: type) type { |
| 45 | 45 | } |
| 46 | 46 | |
| 47 | 47 | pub fn writeByteNTimes(self: *Self, byte: u8, n: usize) Error!void { |
| 48 | const slice = @as(*const [1]u8, &byte)[0..]; | |
| 49 | var i: usize = 0; | |
| 50 | while (i < n) : (i += 1) { | |
| 51 | try self.writeFn(self, slice); | |
| 48 | var bytes: [256]u8 = undefined; | |
| 49 | mem.set(u8, bytes[0..], byte); | |
| 50 | ||
| 51 | var remaining: usize = n; | |
| 52 | while (remaining > 0) { | |
| 53 | const to_write = std.math.min(remaining, bytes.len); | |
| 54 | try self.writeFn(self, bytes[0..to_write]); | |
| 55 | remaining -= to_write; | |
| 52 | 56 | } |
| 53 | 57 | } |
| 54 | 58 |
test/stack_traces.zig+98| ... | ... | @@ -51,11 +51,15 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 51 | 51 | // debug |
| 52 | 52 | \\error: TheSkyIsFalling |
| 53 | 53 | \\source.zig:4:5: [address] in main (test) |
| 54 | \\ return error.TheSkyIsFalling; | |
| 55 | \\ ^ | |
| 54 | 56 | \\ |
| 55 | 57 | , |
| 56 | 58 | // release-safe |
| 57 | 59 | \\error: TheSkyIsFalling |
| 58 | 60 | \\source.zig:4:5: [address] in std.start.main (test) |
| 61 | \\ return error.TheSkyIsFalling; | |
| 62 | \\ ^ | |
| 59 | 63 | \\ |
| 60 | 64 | , |
| 61 | 65 | // release-fast |
| ... | ... | @@ -74,13 +78,21 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 74 | 78 | // debug |
| 75 | 79 | \\error: TheSkyIsFalling |
| 76 | 80 | \\source.zig:4:5: [address] in foo (test) |
| 81 | \\ return error.TheSkyIsFalling; | |
| 82 | \\ ^ | |
| 77 | 83 | \\source.zig:8:5: [address] in main (test) |
| 84 | \\ try foo(); | |
| 85 | \\ ^ | |
| 78 | 86 | \\ |
| 79 | 87 | , |
| 80 | 88 | // release-safe |
| 81 | 89 | \\error: TheSkyIsFalling |
| 82 | 90 | \\source.zig:4:5: [address] in std.start.main (test) |
| 91 | \\ return error.TheSkyIsFalling; | |
| 92 | \\ ^ | |
| 83 | 93 | \\source.zig:8:5: [address] in std.start.main (test) |
| 94 | \\ try foo(); | |
| 95 | \\ ^ | |
| 84 | 96 | \\ |
| 85 | 97 | , |
| 86 | 98 | // release-fast |
| ... | ... | @@ -99,17 +111,33 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 99 | 111 | // debug |
| 100 | 112 | \\error: TheSkyIsFalling |
| 101 | 113 | \\source.zig:12:5: [address] in make_error (test) |
| 114 | \\ return error.TheSkyIsFalling; | |
| 115 | \\ ^ | |
| 102 | 116 | \\source.zig:8:5: [address] in bar (test) |
| 117 | \\ return make_error(); | |
| 118 | \\ ^ | |
| 103 | 119 | \\source.zig:4:5: [address] in foo (test) |
| 120 | \\ try bar(); | |
| 121 | \\ ^ | |
| 104 | 122 | \\source.zig:16:5: [address] in main (test) |
| 123 | \\ try foo(); | |
| 124 | \\ ^ | |
| 105 | 125 | \\ |
| 106 | 126 | , |
| 107 | 127 | // release-safe |
| 108 | 128 | \\error: TheSkyIsFalling |
| 109 | 129 | \\source.zig:12:5: [address] in std.start.main (test) |
| 130 | \\ return error.TheSkyIsFalling; | |
| 131 | \\ ^ | |
| 110 | 132 | \\source.zig:8:5: [address] in std.start.main (test) |
| 133 | \\ return make_error(); | |
| 134 | \\ ^ | |
| 111 | 135 | \\source.zig:4:5: [address] in std.start.main (test) |
| 136 | \\ try bar(); | |
| 137 | \\ ^ | |
| 112 | 138 | \\source.zig:16:5: [address] in std.start.main (test) |
| 139 | \\ try foo(); | |
| 140 | \\ ^ | |
| 113 | 141 | \\ |
| 114 | 142 | , |
| 115 | 143 | // release-fast |
| ... | ... | @@ -130,11 +158,15 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 130 | 158 | // debug |
| 131 | 159 | \\error: TheSkyIsFalling |
| 132 | 160 | \\source.zig:4:5: [address] in main (test) |
| 161 | \\ return error.TheSkyIsFalling; | |
| 162 | \\ ^ | |
| 133 | 163 | \\ |
| 134 | 164 | , |
| 135 | 165 | // release-safe |
| 136 | 166 | \\error: TheSkyIsFalling |
| 137 | 167 | \\source.zig:4:5: [address] in std.start.posixCallMainAndExit (test) |
| 168 | \\ return error.TheSkyIsFalling; | |
| 169 | \\ ^ | |
| 138 | 170 | \\ |
| 139 | 171 | , |
| 140 | 172 | // release-fast |
| ... | ... | @@ -153,13 +185,21 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 153 | 185 | // debug |
| 154 | 186 | \\error: TheSkyIsFalling |
| 155 | 187 | \\source.zig:4:5: [address] in foo (test) |
| 188 | \\ return error.TheSkyIsFalling; | |
| 189 | \\ ^ | |
| 156 | 190 | \\source.zig:8:5: [address] in main (test) |
| 191 | \\ try foo(); | |
| 192 | \\ ^ | |
| 157 | 193 | \\ |
| 158 | 194 | , |
| 159 | 195 | // release-safe |
| 160 | 196 | \\error: TheSkyIsFalling |
| 161 | 197 | \\source.zig:4:5: [address] in std.start.posixCallMainAndExit (test) |
| 198 | \\ return error.TheSkyIsFalling; | |
| 199 | \\ ^ | |
| 162 | 200 | \\source.zig:8:5: [address] in std.start.posixCallMainAndExit (test) |
| 201 | \\ try foo(); | |
| 202 | \\ ^ | |
| 163 | 203 | \\ |
| 164 | 204 | , |
| 165 | 205 | // release-fast |
| ... | ... | @@ -178,17 +218,33 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 178 | 218 | // debug |
| 179 | 219 | \\error: TheSkyIsFalling |
| 180 | 220 | \\source.zig:12:5: [address] in make_error (test) |
| 221 | \\ return error.TheSkyIsFalling; | |
| 222 | \\ ^ | |
| 181 | 223 | \\source.zig:8:5: [address] in bar (test) |
| 224 | \\ return make_error(); | |
| 225 | \\ ^ | |
| 182 | 226 | \\source.zig:4:5: [address] in foo (test) |
| 227 | \\ try bar(); | |
| 228 | \\ ^ | |
| 183 | 229 | \\source.zig:16:5: [address] in main (test) |
| 230 | \\ try foo(); | |
| 231 | \\ ^ | |
| 184 | 232 | \\ |
| 185 | 233 | , |
| 186 | 234 | // release-safe |
| 187 | 235 | \\error: TheSkyIsFalling |
| 188 | 236 | \\source.zig:12:5: [address] in std.start.posixCallMainAndExit (test) |
| 237 | \\ return error.TheSkyIsFalling; | |
| 238 | \\ ^ | |
| 189 | 239 | \\source.zig:8:5: [address] in std.start.posixCallMainAndExit (test) |
| 240 | \\ return make_error(); | |
| 241 | \\ ^ | |
| 190 | 242 | \\source.zig:4:5: [address] in std.start.posixCallMainAndExit (test) |
| 243 | \\ try bar(); | |
| 244 | \\ ^ | |
| 191 | 245 | \\source.zig:16:5: [address] in std.start.posixCallMainAndExit (test) |
| 246 | \\ try foo(); | |
| 247 | \\ ^ | |
| 192 | 248 | \\ |
| 193 | 249 | , |
| 194 | 250 | // release-fast |
| ... | ... | @@ -209,11 +265,15 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 209 | 265 | // debug |
| 210 | 266 | \\error: TheSkyIsFalling |
| 211 | 267 | \\source.zig:4:5: [address] in _main.0 (test.o) |
| 268 | \\ return error.TheSkyIsFalling; | |
| 269 | \\ ^ | |
| 212 | 270 | \\ |
| 213 | 271 | , |
| 214 | 272 | // release-safe |
| 215 | 273 | \\error: TheSkyIsFalling |
| 216 | 274 | \\source.zig:4:5: [address] in _main (test.o) |
| 275 | \\ return error.TheSkyIsFalling; | |
| 276 | \\ ^ | |
| 217 | 277 | \\ |
| 218 | 278 | , |
| 219 | 279 | // release-fast |
| ... | ... | @@ -232,13 +292,21 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 232 | 292 | // debug |
| 233 | 293 | \\error: TheSkyIsFalling |
| 234 | 294 | \\source.zig:4:5: [address] in _foo (test.o) |
| 295 | \\ return error.TheSkyIsFalling; | |
| 296 | \\ ^ | |
| 235 | 297 | \\source.zig:8:5: [address] in _main.0 (test.o) |
| 298 | \\ try foo(); | |
| 299 | \\ ^ | |
| 236 | 300 | \\ |
| 237 | 301 | , |
| 238 | 302 | // release-safe |
| 239 | 303 | \\error: TheSkyIsFalling |
| 240 | 304 | \\source.zig:4:5: [address] in _main (test.o) |
| 305 | \\ return error.TheSkyIsFalling; | |
| 306 | \\ ^ | |
| 241 | 307 | \\source.zig:8:5: [address] in _main (test.o) |
| 308 | \\ try foo(); | |
| 309 | \\ ^ | |
| 242 | 310 | \\ |
| 243 | 311 | , |
| 244 | 312 | // release-fast |
| ... | ... | @@ -257,17 +325,33 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 257 | 325 | // debug |
| 258 | 326 | \\error: TheSkyIsFalling |
| 259 | 327 | \\source.zig:12:5: [address] in _make_error (test.o) |
| 328 | \\ return error.TheSkyIsFalling; | |
| 329 | \\ ^ | |
| 260 | 330 | \\source.zig:8:5: [address] in _bar (test.o) |
| 331 | \\ return make_error(); | |
| 332 | \\ ^ | |
| 261 | 333 | \\source.zig:4:5: [address] in _foo (test.o) |
| 334 | \\ try bar(); | |
| 335 | \\ ^ | |
| 262 | 336 | \\source.zig:16:5: [address] in _main.0 (test.o) |
| 337 | \\ try foo(); | |
| 338 | \\ ^ | |
| 263 | 339 | \\ |
| 264 | 340 | , |
| 265 | 341 | // release-safe |
| 266 | 342 | \\error: TheSkyIsFalling |
| 267 | 343 | \\source.zig:12:5: [address] in _main (test.o) |
| 344 | \\ return error.TheSkyIsFalling; | |
| 345 | \\ ^ | |
| 268 | 346 | \\source.zig:8:5: [address] in _main (test.o) |
| 347 | \\ return make_error(); | |
| 348 | \\ ^ | |
| 269 | 349 | \\source.zig:4:5: [address] in _main (test.o) |
| 350 | \\ try bar(); | |
| 351 | \\ ^ | |
| 270 | 352 | \\source.zig:16:5: [address] in _main (test.o) |
| 353 | \\ try foo(); | |
| 354 | \\ ^ | |
| 271 | 355 | \\ |
| 272 | 356 | , |
| 273 | 357 | // release-fast |
| ... | ... | @@ -288,6 +372,8 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 288 | 372 | // debug |
| 289 | 373 | \\error: TheSkyIsFalling |
| 290 | 374 | \\source.zig:4:5: [address] in main (test.obj) |
| 375 | \\ return error.TheSkyIsFalling; | |
| 376 | \\ ^ | |
| 291 | 377 | \\ |
| 292 | 378 | , |
| 293 | 379 | // release-safe |
| ... | ... | @@ -309,7 +395,11 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 309 | 395 | // debug |
| 310 | 396 | \\error: TheSkyIsFalling |
| 311 | 397 | \\source.zig:4:5: [address] in foo (test.obj) |
| 398 | \\ return error.TheSkyIsFalling; | |
| 399 | \\ ^ | |
| 312 | 400 | \\source.zig:8:5: [address] in main (test.obj) |
| 401 | \\ try foo(); | |
| 402 | \\ ^ | |
| 313 | 403 | \\ |
| 314 | 404 | , |
| 315 | 405 | // release-safe |
| ... | ... | @@ -331,9 +421,17 @@ pub fn addCases(cases: *tests.StackTracesContext) void { |
| 331 | 421 | // debug |
| 332 | 422 | \\error: TheSkyIsFalling |
| 333 | 423 | \\source.zig:12:5: [address] in make_error (test.obj) |
| 424 | \\ return error.TheSkyIsFalling; | |
| 425 | \\ ^ | |
| 334 | 426 | \\source.zig:8:5: [address] in bar (test.obj) |
| 427 | \\ return make_error(); | |
| 428 | \\ ^ | |
| 335 | 429 | \\source.zig:4:5: [address] in foo (test.obj) |
| 430 | \\ try bar(); | |
| 431 | \\ ^ | |
| 336 | 432 | \\source.zig:16:5: [address] in main (test.obj) |
| 433 | \\ try foo(); | |
| 434 | \\ ^ | |
| 337 | 435 | \\ |
| 338 | 436 | , |
| 339 | 437 | // release-safe |