aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-08-18 00:50:14 -0400
committerGitHub <noreply@github.com>2022-08-18 00:50:14 -0400
commitdf507edffe6c1087b5f4786cb64ccaffd02b6848 (patch)
tree2134ba2f867db8bf4fbfab2b1aaed0f5759c0db9
parent79757f233d9bfc646caa13d20243266a19bbdf91 (diff)
parentb6ce0cce69e4bf37509f99040abda4ca92bec6cb (diff)
downloadzig-df507edffe6c1087b5f4786cb64ccaffd02b6848.tar.gz
zig-df507edffe6c1087b5f4786cb64ccaffd02b6848.zip
Merge pull request #12461 from ziglang/fix-12421
Fixes link-tests and `atomicSymLink` on Windows
-rw-r--r--ci/azure/pipelines.yml2
-rw-r--r--lib/std/os.zig1
-rw-r--r--test/link.zig60
-rw-r--r--test/link/macho/dead_strip/build.zig8
-rw-r--r--test/link/macho/pagezero/build.zig5
-rw-r--r--test/link/macho/search_strategy/build.zig8
-rw-r--r--test/link/macho/stack_size/build.zig3
-rw-r--r--test/link/macho/tls/a.c (renamed from test/link/tls/a.c)0
-rw-r--r--test/link/macho/tls/build.zig (renamed from test/link/tls/build.zig)6
-rw-r--r--test/link/macho/tls/main.zig (renamed from test/link/tls/main.zig)0
10 files changed, 51 insertions, 42 deletions
diff --git a/ci/azure/pipelines.yml b/ci/azure/pipelines.yml
index 5ff0a5d61b..5d208b31a2 100644
--- a/ci/azure/pipelines.yml
+++ b/ci/azure/pipelines.yml
@@ -103,7 +103,7 @@ jobs:
#& "$ZIGINSTALLDIR\bin\zig.exe" test "..\test\behavior.zig" -fno-stage1 -fLLVM -I "..\test" 2>&1
#CheckLastExitCode
- & "$ZIGINSTALLDIR\bin\zig.exe" build test-toolchain -Dskip-non-native -Dskip-stage2-tests 2>&1
+ & "$ZIGINSTALLDIR\bin\zig.exe" build test-toolchain -Dskip-non-native -Dskip-stage2-tests -Domit-stage2 2>&1
CheckLastExitCode
& "$ZIGINSTALLDIR\bin\zig.exe" build test-std -Dskip-non-native 2>&1
CheckLastExitCode
diff --git a/lib/std/os.zig b/lib/std/os.zig
index 984758565c..c757561b07 100644
--- a/lib/std/os.zig
+++ b/lib/std/os.zig
@@ -2651,6 +2651,7 @@ pub fn renameatW(
.creation = windows.FILE_OPEN,
.io_mode = .blocking,
.filter = .any, // This function is supposed to rename both files and directories.
+ .follow_symlinks = false,
}) catch |err| switch (err) {
error.WouldBlock => unreachable, // Not possible without `.share_access_nonblocking = true`.
else => |e| return e,
diff --git a/test/link.zig b/test/link.zig
index 01edd07261..88b370f343 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,11 +23,12 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
.build_modes = true,
});
- cases.addBuildFile("test/link/tls/build.zig", .{
- .build_modes = true,
- });
+ addWasmCases(cases);
+ addMachOCases(cases);
+}
- cases.addBuildFile("test/link/wasm/type/build.zig", .{
+fn addWasmCases(cases: *tests.StandaloneContext) void {
+ cases.addBuildFile("test/link/wasm/bss/build.zig", .{
.build_modes = true,
.requires_stage2 = true,
});
@@ -47,23 +43,13 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
.requires_stage2 = true,
});
- cases.addBuildFile("test/link/wasm/bss/build.zig", .{
+ cases.addBuildFile("test/link/wasm/type/build.zig", .{
.build_modes = true,
.requires_stage2 = true,
});
+}
- cases.addBuildFile("test/link/macho/entry/build.zig", .{
- .build_modes = true,
- });
-
- cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
- .build_modes = false,
- });
-
- cases.addBuildFile("test/link/macho/dylib/build.zig", .{
- .build_modes = true,
- });
-
+fn addMachOCases(cases: *tests.StandaloneContext) void {
cases.addBuildFile("test/link/macho/dead_strip/build.zig", .{
.build_modes = false,
});
@@ -73,45 +59,59 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
.requires_macos_sdk = true,
});
- cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
+ cases.addBuildFile("test/link/macho/dylib/build.zig", .{
.build_modes = true,
});
- cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
+ cases.addBuildFile("test/link/macho/entry/build.zig", .{
.build_modes = true,
});
- cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
+ cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
.build_modes = true,
.requires_macos_sdk = true,
});
- cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
+ cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
.build_modes = true,
.requires_macos_sdk = true,
});
- // Try to build and run an Objective-C executable.
+ cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
+ .build_modes = true,
+ });
+
cases.addBuildFile("test/link/macho/objc/build.zig", .{
.build_modes = true,
.requires_macos_sdk = true,
});
- // Try to build and run an Objective-C++ executable.
cases.addBuildFile("test/link/macho/objcpp/build.zig", .{
.build_modes = true,
.requires_macos_sdk = true,
});
+ cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
+ .build_modes = false,
+ });
+
+ cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{
+ .build_modes = true,
+ });
+
cases.addBuildFile("test/link/macho/stack_size/build.zig", .{
.build_modes = true,
});
- cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{
+ cases.addBuildFile("test/link/macho/tls/build.zig", .{
.build_modes = true,
});
- cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
+ cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
+ .build_modes = true,
+ });
+
+ cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
.build_modes = true,
.requires_macos_sdk = true,
});
diff --git a/test/link/macho/dead_strip/build.zig b/test/link/macho/dead_strip/build.zig
index dea225dd6f..25759f5619 100644
--- a/test/link/macho/dead_strip/build.zig
+++ b/test/link/macho/dead_strip/build.zig
@@ -4,13 +4,14 @@ const LibExeObjectStep = std.build.LibExeObjStep;
pub fn build(b: *Builder) void {
const mode = b.standardReleaseOptions();
+ const target: std.zig.CrossTarget = .{ .os_tag = .macos };
const test_step = b.step("test", "Test the program");
test_step.dependOn(b.getInstallStep());
{
// Without -dead_strip, we expect `iAmUnused` symbol present
- const exe = createScenario(b, mode);
+ const exe = createScenario(b, mode, target);
const check = exe.checkObject(.macho);
check.checkInSymtab();
@@ -23,7 +24,7 @@ pub fn build(b: *Builder) void {
{
// With -dead_strip, no `iAmUnused` symbol should be present
- const exe = createScenario(b, mode);
+ const exe = createScenario(b, mode, target);
exe.link_gc_sections = true;
const check = exe.checkObject(.macho);
@@ -36,10 +37,11 @@ pub fn build(b: *Builder) void {
}
}
-fn createScenario(b: *Builder, mode: std.builtin.Mode) *LibExeObjectStep {
+fn createScenario(b: *Builder, mode: std.builtin.Mode, target: std.zig.CrossTarget) *LibExeObjectStep {
const exe = b.addExecutable("test", null);
exe.addCSourceFile("main.c", &[0][]const u8{});
exe.setBuildMode(mode);
+ exe.setTarget(target);
exe.linkLibC();
return exe;
}
diff --git a/test/link/macho/pagezero/build.zig b/test/link/macho/pagezero/build.zig
index 9dbc0e6473..5a7044d960 100644
--- a/test/link/macho/pagezero/build.zig
+++ b/test/link/macho/pagezero/build.zig
@@ -3,13 +3,14 @@ const Builder = std.build.Builder;
pub fn build(b: *Builder) void {
const mode = b.standardReleaseOptions();
+ const target: std.zig.CrossTarget = .{ .os_tag = .macos };
const test_step = b.step("test", "Test");
test_step.dependOn(b.getInstallStep());
{
const exe = b.addExecutable("pagezero", null);
- exe.setTarget(.{ .os_tag = .macos });
+ exe.setTarget(target);
exe.setBuildMode(mode);
exe.addCSourceFile("main.c", &.{});
exe.linkLibC();
@@ -29,7 +30,7 @@ pub fn build(b: *Builder) void {
{
const exe = b.addExecutable("no_pagezero", null);
- exe.setTarget(.{ .os_tag = .macos });
+ exe.setTarget(target);
exe.setBuildMode(mode);
exe.addCSourceFile("main.c", &.{});
exe.linkLibC();
diff --git a/test/link/macho/search_strategy/build.zig b/test/link/macho/search_strategy/build.zig
index 39a82bc6a7..e556b5bb23 100644
--- a/test/link/macho/search_strategy/build.zig
+++ b/test/link/macho/search_strategy/build.zig
@@ -1,17 +1,17 @@
const std = @import("std");
const Builder = std.build.Builder;
const LibExeObjectStep = std.build.LibExeObjStep;
-const target: std.zig.CrossTarget = .{ .os_tag = .macos };
pub fn build(b: *Builder) void {
const mode = b.standardReleaseOptions();
+ const target: std.zig.CrossTarget = .{ .os_tag = .macos };
const test_step = b.step("test", "Test");
test_step.dependOn(b.getInstallStep());
{
// -search_dylibs_first
- const exe = createScenario(b, mode);
+ const exe = createScenario(b, mode, target);
exe.search_strategy = .dylibs_first;
const check = exe.checkObject(.macho);
@@ -26,7 +26,7 @@ pub fn build(b: *Builder) void {
{
// -search_paths_first
- const exe = createScenario(b, mode);
+ const exe = createScenario(b, mode, target);
exe.search_strategy = .paths_first;
const run = std.build.EmulatableRunStep.create(b, "run", exe);
@@ -36,7 +36,7 @@ pub fn build(b: *Builder) void {
}
}
-fn createScenario(b: *Builder, mode: std.builtin.Mode) *LibExeObjectStep {
+fn createScenario(b: *Builder, mode: std.builtin.Mode, target: std.zig.CrossTarget) *LibExeObjectStep {
const static = b.addStaticLibrary("a", null);
static.setTarget(target);
static.setBuildMode(mode);
diff --git a/test/link/macho/stack_size/build.zig b/test/link/macho/stack_size/build.zig
index 3abf48df7a..91c44baf52 100644
--- a/test/link/macho/stack_size/build.zig
+++ b/test/link/macho/stack_size/build.zig
@@ -3,12 +3,13 @@ const Builder = std.build.Builder;
pub fn build(b: *Builder) void {
const mode = b.standardReleaseOptions();
+ const target: std.zig.CrossTarget = .{ .os_tag = .macos };
const test_step = b.step("test", "Test");
test_step.dependOn(b.getInstallStep());
const exe = b.addExecutable("main", null);
- exe.setTarget(.{ .os_tag = .macos });
+ exe.setTarget(target);
exe.setBuildMode(mode);
exe.addCSourceFile("main.c", &.{});
exe.linkLibC();
diff --git a/test/link/tls/a.c b/test/link/macho/tls/a.c
index 8602d02419..8602d02419 100644
--- a/test/link/tls/a.c
+++ b/test/link/macho/tls/a.c
diff --git a/test/link/tls/build.zig b/test/link/macho/tls/build.zig
index ebf15ca439..031a05cedf 100644
--- a/test/link/tls/build.zig
+++ b/test/link/macho/tls/build.zig
@@ -1,15 +1,19 @@
-const Builder = @import("std").build.Builder;
+const std = @import("std");
+const Builder = 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.setTarget(target);
lib.addCSourceFile("a.c", &.{});
lib.linkLibC();
const test_exe = b.addTest("main.zig");
test_exe.setBuildMode(mode);
+ test_exe.setTarget(target);
test_exe.linkLibrary(lib);
test_exe.linkLibC();
diff --git a/test/link/tls/main.zig b/test/link/macho/tls/main.zig
index ab01616e31..ab01616e31 100644
--- a/test/link/tls/main.zig
+++ b/test/link/macho/tls/main.zig