Skip to content

Commit df507ed

Browse files
authored
Merge pull request #12461 from ziglang/fix-12421
Fixes link-tests and `atomicSymLink` on Windows
2 parents 79757f2 + b6ce0cc commit df507ed

File tree

10 files changed

+51
-42
lines changed

10 files changed

+51
-42
lines changed

ci/azure/pipelines.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ jobs:
103103
#& "$ZIGINSTALLDIR\bin\zig.exe" test "..\test\behavior.zig" -fno-stage1 -fLLVM -I "..\test" 2>&1
104104
#CheckLastExitCode
105105
106-
& "$ZIGINSTALLDIR\bin\zig.exe" build test-toolchain -Dskip-non-native -Dskip-stage2-tests 2>&1
106+
& "$ZIGINSTALLDIR\bin\zig.exe" build test-toolchain -Dskip-non-native -Dskip-stage2-tests -Domit-stage2 2>&1
107107
CheckLastExitCode
108108
& "$ZIGINSTALLDIR\bin\zig.exe" build test-std -Dskip-non-native 2>&1
109109
CheckLastExitCode

lib/std/os.zig

+1
Original file line numberDiff line numberDiff line change
@@ -2651,6 +2651,7 @@ pub fn renameatW(
26512651
.creation = windows.FILE_OPEN,
26522652
.io_mode = .blocking,
26532653
.filter = .any, // This function is supposed to rename both files and directories.
2654+
.follow_symlinks = false,
26542655
}) catch |err| switch (err) {
26552656
error.WouldBlock => unreachable, // Not possible without `.share_access_nonblocking = true`.
26562657
else => |e| return e,

test/link.zig

+30-30
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@ const builtin = @import("builtin");
33
const tests = @import("tests.zig");
44

55
pub fn addCases(cases: *tests.StandaloneContext) void {
6-
if (builtin.os.tag == .windows) {
7-
// https://github.com/ziglang/zig/issues/12421
8-
return;
9-
}
10-
116
cases.addBuildFile("test/link/bss/build.zig", .{
127
.build_modes = false, // we only guarantee zerofill for undefined in Debug
138
});
@@ -28,11 +23,12 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
2823
.build_modes = true,
2924
});
3025

31-
cases.addBuildFile("test/link/tls/build.zig", .{
32-
.build_modes = true,
33-
});
26+
addWasmCases(cases);
27+
addMachOCases(cases);
28+
}
3429

35-
cases.addBuildFile("test/link/wasm/type/build.zig", .{
30+
fn addWasmCases(cases: *tests.StandaloneContext) void {
31+
cases.addBuildFile("test/link/wasm/bss/build.zig", .{
3632
.build_modes = true,
3733
.requires_stage2 = true,
3834
});
@@ -47,23 +43,13 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
4743
.requires_stage2 = true,
4844
});
4945

50-
cases.addBuildFile("test/link/wasm/bss/build.zig", .{
46+
cases.addBuildFile("test/link/wasm/type/build.zig", .{
5147
.build_modes = true,
5248
.requires_stage2 = true,
5349
});
50+
}
5451

55-
cases.addBuildFile("test/link/macho/entry/build.zig", .{
56-
.build_modes = true,
57-
});
58-
59-
cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
60-
.build_modes = false,
61-
});
62-
63-
cases.addBuildFile("test/link/macho/dylib/build.zig", .{
64-
.build_modes = true,
65-
});
66-
52+
fn addMachOCases(cases: *tests.StandaloneContext) void {
6753
cases.addBuildFile("test/link/macho/dead_strip/build.zig", .{
6854
.build_modes = false,
6955
});
@@ -73,45 +59,59 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
7359
.requires_macos_sdk = true,
7460
});
7561

76-
cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
62+
cases.addBuildFile("test/link/macho/dylib/build.zig", .{
7763
.build_modes = true,
7864
});
7965

80-
cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
66+
cases.addBuildFile("test/link/macho/entry/build.zig", .{
8167
.build_modes = true,
8268
});
8369

84-
cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
70+
cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
8571
.build_modes = true,
8672
.requires_macos_sdk = true,
8773
});
8874

89-
cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
75+
cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
9076
.build_modes = true,
9177
.requires_macos_sdk = true,
9278
});
9379

94-
// Try to build and run an Objective-C executable.
80+
cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
81+
.build_modes = true,
82+
});
83+
9584
cases.addBuildFile("test/link/macho/objc/build.zig", .{
9685
.build_modes = true,
9786
.requires_macos_sdk = true,
9887
});
9988

100-
// Try to build and run an Objective-C++ executable.
10189
cases.addBuildFile("test/link/macho/objcpp/build.zig", .{
10290
.build_modes = true,
10391
.requires_macos_sdk = true,
10492
});
10593

94+
cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
95+
.build_modes = false,
96+
});
97+
98+
cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{
99+
.build_modes = true,
100+
});
101+
106102
cases.addBuildFile("test/link/macho/stack_size/build.zig", .{
107103
.build_modes = true,
108104
});
109105

110-
cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{
106+
cases.addBuildFile("test/link/macho/tls/build.zig", .{
111107
.build_modes = true,
112108
});
113109

114-
cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
110+
cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
111+
.build_modes = true,
112+
});
113+
114+
cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
115115
.build_modes = true,
116116
.requires_macos_sdk = true,
117117
});

test/link/macho/dead_strip/build.zig

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ const LibExeObjectStep = std.build.LibExeObjStep;
44

55
pub fn build(b: *Builder) void {
66
const mode = b.standardReleaseOptions();
7+
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
78

89
const test_step = b.step("test", "Test the program");
910
test_step.dependOn(b.getInstallStep());
1011

1112
{
1213
// Without -dead_strip, we expect `iAmUnused` symbol present
13-
const exe = createScenario(b, mode);
14+
const exe = createScenario(b, mode, target);
1415

1516
const check = exe.checkObject(.macho);
1617
check.checkInSymtab();
@@ -23,7 +24,7 @@ pub fn build(b: *Builder) void {
2324

2425
{
2526
// With -dead_strip, no `iAmUnused` symbol should be present
26-
const exe = createScenario(b, mode);
27+
const exe = createScenario(b, mode, target);
2728
exe.link_gc_sections = true;
2829

2930
const check = exe.checkObject(.macho);
@@ -36,10 +37,11 @@ pub fn build(b: *Builder) void {
3637
}
3738
}
3839

39-
fn createScenario(b: *Builder, mode: std.builtin.Mode) *LibExeObjectStep {
40+
fn createScenario(b: *Builder, mode: std.builtin.Mode, target: std.zig.CrossTarget) *LibExeObjectStep {
4041
const exe = b.addExecutable("test", null);
4142
exe.addCSourceFile("main.c", &[0][]const u8{});
4243
exe.setBuildMode(mode);
44+
exe.setTarget(target);
4345
exe.linkLibC();
4446
return exe;
4547
}

test/link/macho/pagezero/build.zig

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ const Builder = std.build.Builder;
33

44
pub fn build(b: *Builder) void {
55
const mode = b.standardReleaseOptions();
6+
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
67

78
const test_step = b.step("test", "Test");
89
test_step.dependOn(b.getInstallStep());
910

1011
{
1112
const exe = b.addExecutable("pagezero", null);
12-
exe.setTarget(.{ .os_tag = .macos });
13+
exe.setTarget(target);
1314
exe.setBuildMode(mode);
1415
exe.addCSourceFile("main.c", &.{});
1516
exe.linkLibC();
@@ -29,7 +30,7 @@ pub fn build(b: *Builder) void {
2930

3031
{
3132
const exe = b.addExecutable("no_pagezero", null);
32-
exe.setTarget(.{ .os_tag = .macos });
33+
exe.setTarget(target);
3334
exe.setBuildMode(mode);
3435
exe.addCSourceFile("main.c", &.{});
3536
exe.linkLibC();

test/link/macho/search_strategy/build.zig

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
const std = @import("std");
22
const Builder = std.build.Builder;
33
const LibExeObjectStep = std.build.LibExeObjStep;
4-
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
54

65
pub fn build(b: *Builder) void {
76
const mode = b.standardReleaseOptions();
7+
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
88

99
const test_step = b.step("test", "Test");
1010
test_step.dependOn(b.getInstallStep());
1111

1212
{
1313
// -search_dylibs_first
14-
const exe = createScenario(b, mode);
14+
const exe = createScenario(b, mode, target);
1515
exe.search_strategy = .dylibs_first;
1616

1717
const check = exe.checkObject(.macho);
@@ -26,7 +26,7 @@ pub fn build(b: *Builder) void {
2626

2727
{
2828
// -search_paths_first
29-
const exe = createScenario(b, mode);
29+
const exe = createScenario(b, mode, target);
3030
exe.search_strategy = .paths_first;
3131

3232
const run = std.build.EmulatableRunStep.create(b, "run", exe);
@@ -36,7 +36,7 @@ pub fn build(b: *Builder) void {
3636
}
3737
}
3838

39-
fn createScenario(b: *Builder, mode: std.builtin.Mode) *LibExeObjectStep {
39+
fn createScenario(b: *Builder, mode: std.builtin.Mode, target: std.zig.CrossTarget) *LibExeObjectStep {
4040
const static = b.addStaticLibrary("a", null);
4141
static.setTarget(target);
4242
static.setBuildMode(mode);

test/link/macho/stack_size/build.zig

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ const Builder = std.build.Builder;
33

44
pub fn build(b: *Builder) void {
55
const mode = b.standardReleaseOptions();
6+
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
67

78
const test_step = b.step("test", "Test");
89
test_step.dependOn(b.getInstallStep());
910

1011
const exe = b.addExecutable("main", null);
11-
exe.setTarget(.{ .os_tag = .macos });
12+
exe.setTarget(target);
1213
exe.setBuildMode(mode);
1314
exe.addCSourceFile("main.c", &.{});
1415
exe.linkLibC();
File renamed without changes.

test/link/tls/build.zig test/link/macho/tls/build.zig

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1-
const Builder = @import("std").build.Builder;
1+
const std = @import("std");
2+
const Builder = std.build.Builder;
23

34
pub fn build(b: *Builder) void {
45
const mode = b.standardReleaseOptions();
6+
const target: std.zig.CrossTarget = .{ .os_tag = .macos };
57

68
const lib = b.addSharedLibrary("a", null, b.version(1, 0, 0));
79
lib.setBuildMode(mode);
10+
lib.setTarget(target);
811
lib.addCSourceFile("a.c", &.{});
912
lib.linkLibC();
1013

1114
const test_exe = b.addTest("main.zig");
1215
test_exe.setBuildMode(mode);
16+
test_exe.setTarget(target);
1317
test_exe.linkLibrary(lib);
1418
test_exe.linkLibC();
1519

File renamed without changes.

0 commit comments

Comments
 (0)