diff --git a/test/link.zig b/test/link.zig index 01edd07261d05ba943e449528ba410625951e68e..a8a39a7018c3912d624b349988cdcf34dcb56b5d 100644 --- a/test/link.zig +++ b/test/link.zig @@ -3,11 +3,6 @@ const builtin = @import("builtin"); const tests = @import("tests.zig"); pub fn addCases(cases: *tests.StandaloneContext) void { - if (builtin.os.tag == .windows) { - // https://github.com/ziglang/zig/issues/12421 - return; - } - cases.addBuildFile("test/link/bss/build.zig", .{ .build_modes = false, // we only guarantee zerofill for undefined in Debug }); @@ -28,10 +23,6 @@ pub fn addCases(cases: *tests.StandaloneContext) void { .build_modes = true, }); - cases.addBuildFile("test/link/tls/build.zig", .{ - .build_modes = true, - }); - cases.addBuildFile("test/link/wasm/type/build.zig", .{ .build_modes = true, .requires_stage2 = true, @@ -115,4 +106,8 @@ pub fn addCases(cases: *tests.StandaloneContext) void { .build_modes = true, .requires_macos_sdk = true, }); + + cases.addBuildFile("test/link/macho/tls/build.zig", .{ + .build_modes = true, + }); } diff --git a/test/link/macho/tls/a.c b/test/link/macho/tls/a.c new file mode 100644 index 0000000000000000000000000000000000000000..8602d0241945132d6e1248398d0986f15e6255ac --- /dev/null +++ b/test/link/macho/tls/a.c @@ -0,0 +1,5 @@ +_Thread_local int a; + +int getA() { + return a; +} diff --git a/test/link/macho/tls/build.zig b/test/link/macho/tls/build.zig new file mode 100644 index 0000000000000000000000000000000000000000..7bf3ea1c9e14b41a626eb5d9f192353bede2ee16 --- /dev/null +++ b/test/link/macho/tls/build.zig @@ -0,0 +1,19 @@ +const Builder = @import("std").build.Builder; + +pub fn build(b: *Builder) void { + const mode = b.standardReleaseOptions(); + const target: std.zig.CrossTarget = .{ .os_tag = .macos }; + + const lib = b.addSharedLibrary("a", null, b.version(1, 0, 0)); + lib.setBuildMode(mode); + lib.addCSourceFile("a.c", &.{}); + lib.linkLibC(); + + const test_exe = b.addTest("main.zig"); + test_exe.setBuildMode(mode); + test_exe.linkLibrary(lib); + test_exe.linkLibC(); + + const test_step = b.step("test", "Test it"); + test_step.dependOn(&test_exe.step); +} diff --git a/test/link/macho/tls/main.zig b/test/link/macho/tls/main.zig new file mode 100644 index 0000000000000000000000000000000000000000..ab01616e311ee7706b688fc2008ab7b056d4b124 --- /dev/null +++ b/test/link/macho/tls/main.zig @@ -0,0 +1,15 @@ +const std = @import("std"); + +extern threadlocal var a: i32; +extern fn getA() i32; + +fn getA2() i32 { + return a; +} + +test { + a = 2; + try std.testing.expect(getA() == 2); + try std.testing.expect(2 == getA2()); + try std.testing.expect(getA() == getA2()); +} diff --git a/test/link/tls/a.c b/test/link/tls/a.c deleted file mode 100644 index 8602d0241945132d6e1248398d0986f15e6255ac..0000000000000000000000000000000000000000 --- a/test/link/tls/a.c +++ /dev/null @@ -1,5 +0,0 @@ -_Thread_local int a; - -int getA() { - return a; -} diff --git a/test/link/tls/build.zig b/test/link/tls/build.zig deleted file mode 100644 index ebf15ca4399a349e29c8c9c5722b70dc25774cc6..0000000000000000000000000000000000000000 --- a/test/link/tls/build.zig +++ /dev/null @@ -1,18 +0,0 @@ -const Builder = @import("std").build.Builder; - -pub fn build(b: *Builder) void { - const mode = b.standardReleaseOptions(); - - const lib = b.addSharedLibrary("a", null, b.version(1, 0, 0)); - lib.setBuildMode(mode); - lib.addCSourceFile("a.c", &.{}); - lib.linkLibC(); - - const test_exe = b.addTest("main.zig"); - test_exe.setBuildMode(mode); - test_exe.linkLibrary(lib); - test_exe.linkLibC(); - - const test_step = b.step("test", "Test it"); - test_step.dependOn(&test_exe.step); -} diff --git a/test/link/tls/main.zig b/test/link/tls/main.zig deleted file mode 100644 index ab01616e311ee7706b688fc2008ab7b056d4b124..0000000000000000000000000000000000000000 --- a/test/link/tls/main.zig +++ /dev/null @@ -1,15 +0,0 @@ -const std = @import("std"); - -extern threadlocal var a: i32; -extern fn getA() i32; - -fn getA2() i32 { - return a; -} - -test { - a = 2; - try std.testing.expect(getA() == 2); - try std.testing.expect(2 == getA2()); - try std.testing.expect(getA() == getA2()); -}