diff --git a/test/standalone/build.zig.zon b/test/standalone/build.zig.zon index 06ebe980d1..9863e7cc6d 100644 --- a/test/standalone/build.zig.zon +++ b/test/standalone/build.zig.zon @@ -183,6 +183,9 @@ .empty_global_error_set = .{ .path = "empty_global_error_set", }, + .omit_cfi = .{ + .path = "omit_cfi", + }, }, .paths = .{ "build.zig", diff --git a/test/standalone/omit_cfi/build.zig b/test/standalone/omit_cfi/build.zig new file mode 100644 index 0000000000..62f9fed471 --- /dev/null +++ b/test/standalone/omit_cfi/build.zig @@ -0,0 +1,67 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + inline for (.{ + .aarch64, + .aarch64_be, + .hexagon, + .loongarch64, + .mips, + .mipsel, + .mips64, + .mips64el, + .powerpc, + .powerpcle, + .powerpc64, + .powerpc64le, + .riscv32, + .riscv64, + .s390x, + .sparc64, + .x86, + .x86_64, + }) |arch| { + const target = b.resolveTargetQuery(.{ + .cpu_arch = arch, + .os_tag = .linux, + }); + + const omit_dbg = b.addExecutable(.{ + .name = b.fmt("{s}-linux-omit-dbg", .{@tagName(arch)}), + .root_module = b.createModule(.{ + .root_source_file = b.path("main.zig"), + .target = target, + .optimize = .Debug, + // We are mainly concerned with CFI directives in our non-libc startup code and syscall + // code, so make it explicit that we don't want libc. + .link_libc = false, + .strip = true, + }), + }); + + const omit_uwt = b.addExecutable(.{ + .name = b.fmt("{s}-linux-omit-uwt", .{@tagName(arch)}), + .root_module = b.createModule(.{ + .root_source_file = b.path("main.zig"), + .target = target, + .optimize = .Debug, + .link_libc = false, + .unwind_tables = .none, + }), + }); + + const omit_both = b.addExecutable(.{ + .name = b.fmt("{s}-linux-omit-both", .{@tagName(arch)}), + .root_module = b.createModule(.{ + .root_source_file = b.path("main.zig"), + .target = target, + .optimize = .Debug, + .link_libc = false, + .strip = true, + .unwind_tables = .none, + }), + }); + + inline for (.{ omit_dbg, omit_uwt, omit_both }) |step| b.installArtifact(step); + } +} diff --git a/test/standalone/omit_cfi/main.zig b/test/standalone/omit_cfi/main.zig new file mode 100644 index 0000000000..902b554db0 --- /dev/null +++ b/test/standalone/omit_cfi/main.zig @@ -0,0 +1 @@ +pub fn main() void {}