diff options
| author | Matthew Lugg <mlugg@mlugg.co.uk> | 2025-01-24 05:11:26 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-24 05:11:26 +0000 |
| commit | f77e1b86225cd49c2d04dfa6ca4a7ede315dc0b1 (patch) | |
| tree | c30cddc29ae1f1162f3ec38fcaf89b94ecb4e6dd /test/src/check-stack-trace.zig | |
| parent | d916954bee0f477bcada0693d4aa952197cf1eef (diff) | |
| parent | 180db2bf23f05a02876d4567cac3b04842c11acb (diff) | |
| download | zig-f77e1b86225cd49c2d04dfa6ca4a7ede315dc0b1.tar.gz zig-f77e1b86225cd49c2d04dfa6ca4a7ede315dc0b1.zip | |
Merge pull request #22578 from mlugg/stack-trace-tests-x86_64
tests: enable stack trace tests for x86_64-selfhosted
Diffstat (limited to 'test/src/check-stack-trace.zig')
| -rw-r--r-- | test/src/check-stack-trace.zig | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/test/src/check-stack-trace.zig b/test/src/check-stack-trace.zig index 9856b5738e..fccbbe3609 100644 --- a/test/src/check-stack-trace.zig +++ b/test/src/check-stack-trace.zig @@ -58,14 +58,23 @@ pub fn main() !void { try buf.appendSlice(line[pos + 1 .. marks[2] + delims[2].len]); try buf.appendSlice(" [address]"); if (optimize_mode == .Debug) { - // On certain platforms (windows) or possibly depending on how we choose to link main - // the object file extension may be present so we simply strip any extension. - if (mem.indexOfScalar(u8, line[marks[4]..marks[5]], '.')) |idot| { - try buf.appendSlice(line[marks[3] .. marks[4] + idot]); - try buf.appendSlice(line[marks[5]..]); + try buf.appendSlice(line[marks[3] .. marks[4] + delims[4].len]); + + const file_name = line[marks[4] + delims[4].len .. marks[5]]; + // The LLVM backend currently uses the object file name in the debug info here. + // This actually violates the DWARF specification (DWARF5 ยง 3.1.1, lines 24-27). + // The self-hosted backend uses the root Zig source file of the module (in compilance with the spec). + if (std.mem.eql(u8, file_name, "test") or + std.mem.eql(u8, file_name, "test.exe.obj") or + std.mem.endsWith(u8, file_name, ".zig")) + { + try buf.appendSlice("[main_file]"); } else { - try buf.appendSlice(line[marks[3]..]); + // Something unexpected; include it verbatim. + try buf.appendSlice(file_name); } + + try buf.appendSlice(line[marks[5]..]); } else { try buf.appendSlice(line[marks[3] .. marks[3] + delims[3].len]); try buf.appendSlice("[function]"); |
