From f0482c95d2c0ed05b6f8ee2826e4fc11982410b4 Mon Sep 17 00:00:00 2001 From: kcbanner Date: Sat, 15 Apr 2023 23:23:29 -0400 Subject: [PATCH 1/2] DynLib.lookup: cast the pointer to the correct alignment --- lib/std/dynamic_library.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/std/dynamic_library.zig b/lib/std/dynamic_library.zig index 2ab798dcd7..099ba63204 100644 --- a/lib/std/dynamic_library.zig +++ b/lib/std/dynamic_library.zig @@ -348,7 +348,7 @@ pub const WindowsDynLib = struct { pub fn lookup(self: *WindowsDynLib, comptime T: type, name: [:0]const u8) ?T { if (windows.kernel32.GetProcAddress(self.dll, name.ptr)) |addr| { - return @ptrCast(T, addr); + return @ptrCast(T, @alignCast(@alignOf(@typeInfo(T).Pointer.child), addr)); } else { return null; } @@ -382,7 +382,7 @@ pub const DlDynlib = struct { // dlsym (and other dl-functions) secretly take shadow parameter - return address on stack // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66826 if (@call(.never_tail, system.dlsym, .{ self.handle, name.ptr })) |symbol| { - return @ptrCast(T, symbol); + return @ptrCast(T, @alignCast(@alignOf(@typeInfo(T).Pointer.child), symbol)); } else { return null; } From 956caf6eba6d5082f646dff501db0008fb523a1b Mon Sep 17 00:00:00 2001 From: kcbanner Date: Sun, 16 Apr 2023 12:01:54 -0400 Subject: [PATCH 2/2] re-enable load_dynamic_library standalone tests --- test/standalone/load_dynamic_library/build.zig | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/test/standalone/load_dynamic_library/build.zig b/test/standalone/load_dynamic_library/build.zig index 06a5424a8d..6dec8de7ae 100644 --- a/test/standalone/load_dynamic_library/build.zig +++ b/test/standalone/load_dynamic_library/build.zig @@ -8,12 +8,7 @@ pub fn build(b: *std.Build) void { const optimize: std.builtin.OptimizeMode = .Debug; const target: std.zig.CrossTarget = .{}; - const ok = (builtin.os.tag != .wasi and - // https://github.com/ziglang/zig/issues/13550 - (builtin.os.tag != .macos or builtin.cpu.arch != .aarch64) and - // https://github.com/ziglang/zig/issues/13686 - (builtin.os.tag != .windows or builtin.cpu.arch != .aarch64)); - if (!ok) return; + if (builtin.os.tag == .wasi) return; const lib = b.addSharedLibrary(.{ .name = "add",