commit 85d87c9ca1f0c0c7fe9efa5ab54e306c6a309de3 (tree)
parent 9f84f7f921d8a74926bb2f0ca1969b7b00f08172
Author: kcbanner <kcbanner@gmail.com>
Date: Mon, 21 Oct 2024 20:24:58 -0400
coff: fix incorrect default `image_base` values and re-enable shared library tests on Windows
This was the cause of aarch64-windows shared libraries causing "bad image" errors
during load-time linking. I also re-enabled the tests that were surfacing this bug.
Diffstat:
5 files changed, 7 insertions(+), 23 deletions(-)
diff --git a/src/link/Coff.zig b/src/link/Coff.zig
@@ -274,11 +274,15 @@ pub fn createEmpty(
.image_base = options.image_base orelse switch (output_mode) {
.Exe => switch (target.cpu.arch) {
- .aarch64 => 0x140000000,
- .thumb, .x86_64, .x86 => 0x400000,
+ .aarch64, .x86_64 => 0x140000000,
+ .thumb, .x86 => 0x400000,
+ else => unreachable,
+ },
+ .Lib => switch (target.cpu.arch) {
+ .aarch64, .x86_64 => 0x180000000,
+ .thumb, .x86 => 0x10000000,
else => unreachable,
},
- .Lib => 0x10000000,
.Obj => 0,
},
diff --git a/test/standalone/c_compiler/build.zig b/test/standalone/c_compiler/build.zig
@@ -5,11 +5,6 @@ pub fn build(b: *std.Build) void {
const test_step = b.step("test", "Test it");
b.default_step = test_step;
- if (builtin.os.tag == .windows) {
- // https://github.com/ziglang/zig/issues/16965
- return;
- }
-
add(b, test_step, "test_c_Debug", "test_cpp_Debug", .Debug);
add(b, test_step, "test_c_ReleaseFast", "test_cpp_ReleaseFast", .ReleaseFast);
add(b, test_step, "test_c_ReleaseSmall", "test_cpp_ReleaseSmall", .ReleaseSmall);
diff --git a/test/standalone/coff_dwarf/build.zig b/test/standalone/coff_dwarf/build.zig
@@ -12,11 +12,6 @@ pub fn build(b: *std.Build) void {
else
b.resolveTargetQuery(.{ .os_tag = .windows });
- if (builtin.cpu.arch == .aarch64) {
- // https://github.com/ziglang/zig/issues/18427
- return;
- }
-
const exe = b.addExecutable(.{
.name = "main",
.root_source_file = b.path("main.zig"),
diff --git a/test/standalone/load_dynamic_library/build.zig b/test/standalone/load_dynamic_library/build.zig
@@ -10,11 +10,6 @@ pub fn build(b: *std.Build) void {
if (builtin.os.tag == .wasi) return;
- if (builtin.os.tag == .windows) {
- // https://github.com/ziglang/zig/issues/16960
- return;
- }
-
const lib = b.addSharedLibrary(.{
.name = "add",
.root_source_file = b.path("add.zig"),
diff --git a/test/standalone/shared_library/build.zig b/test/standalone/shared_library/build.zig
@@ -4,11 +4,6 @@ pub fn build(b: *std.Build) void {
const test_step = b.step("test", "Test it");
b.default_step = test_step;
- if (@import("builtin").os.tag == .windows) {
- // https://github.com/ziglang/zig/issues/16959
- return;
- }
-
const optimize: std.builtin.OptimizeMode = .Debug;
const target = b.graph.host;
const lib = b.addSharedLibrary(.{