aboutsummaryrefslogtreecommitdiff
path: root/test/src/StackTrace.zig
diff options
context:
space:
mode:
authorMatthew Lugg <mlugg@mlugg.co.uk>2025-01-24 05:11:26 +0000
committerGitHub <noreply@github.com>2025-01-24 05:11:26 +0000
commitf77e1b86225cd49c2d04dfa6ca4a7ede315dc0b1 (patch)
treec30cddc29ae1f1162f3ec38fcaf89b94ecb4e6dd /test/src/StackTrace.zig
parentd916954bee0f477bcada0693d4aa952197cf1eef (diff)
parent180db2bf23f05a02876d4567cac3b04842c11acb (diff)
downloadzig-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/StackTrace.zig')
-rw-r--r--test/src/StackTrace.zig31
1 files changed, 25 insertions, 6 deletions
diff --git a/test/src/StackTrace.zig b/test/src/StackTrace.zig
index 37e390c78d..5151447a43 100644
--- a/test/src/StackTrace.zig
+++ b/test/src/StackTrace.zig
@@ -21,17 +21,34 @@ const Config = struct {
};
pub fn addCase(self: *StackTrace, config: Config) void {
+ self.addCaseInner(config, true);
+ if (shouldTestNonLlvm(self.b.graph.host.result)) {
+ self.addCaseInner(config, false);
+ }
+}
+
+fn addCaseInner(self: *StackTrace, config: Config, use_llvm: bool) void {
if (config.Debug) |per_mode|
- self.addExpect(config.name, config.source, .Debug, per_mode);
+ self.addExpect(config.name, config.source, .Debug, use_llvm, per_mode);
if (config.ReleaseSmall) |per_mode|
- self.addExpect(config.name, config.source, .ReleaseSmall, per_mode);
+ self.addExpect(config.name, config.source, .ReleaseSmall, use_llvm, per_mode);
if (config.ReleaseFast) |per_mode|
- self.addExpect(config.name, config.source, .ReleaseFast, per_mode);
+ self.addExpect(config.name, config.source, .ReleaseFast, use_llvm, per_mode);
if (config.ReleaseSafe) |per_mode|
- self.addExpect(config.name, config.source, .ReleaseSafe, per_mode);
+ self.addExpect(config.name, config.source, .ReleaseSafe, use_llvm, per_mode);
+}
+
+fn shouldTestNonLlvm(target: std.Target) bool {
+ return switch (target.cpu.arch) {
+ .x86_64 => switch (target.ofmt) {
+ .elf => true,
+ else => false,
+ },
+ else => false,
+ };
}
fn addExpect(
@@ -39,13 +56,14 @@ fn addExpect(
name: []const u8,
source: []const u8,
optimize_mode: OptimizeMode,
+ use_llvm: bool,
mode_config: Config.PerMode,
) void {
for (mode_config.exclude_os) |tag| if (tag == builtin.os.tag) return;
const b = self.b;
- const annotated_case_name = b.fmt("check {s} ({s})", .{
- name, @tagName(optimize_mode),
+ const annotated_case_name = b.fmt("check {s} ({s} {s})", .{
+ name, @tagName(optimize_mode), if (use_llvm) "llvm" else "selfhosted",
});
for (self.test_filters) |test_filter| {
if (mem.indexOf(u8, annotated_case_name, test_filter)) |_| break;
@@ -61,6 +79,7 @@ fn addExpect(
.target = b.graph.host,
.error_tracing = mode_config.error_tracing,
}),
+ .use_llvm = use_llvm,
});
const run = b.addRunArtifact(exe);