From 306009c11636165af2b388cf079a1e371e067b33 Mon Sep 17 00:00:00 2001 From: Michael Pfaff <23013931+mpfaff@users.noreply.github.com> Date: Thu, 8 Oct 2026 17:35:45 -0400 Subject: [PATCH 1/3] Update to Zig 0.17.0 --- build.zig.zon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.zig.zon b/build.zig.zon index c385794..fef53f1 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -5,7 +5,7 @@ .fingerprint = 0x6002b2b610072fc5, - .minimum_zig_version = "0.15.0-dev.1092+d772c0627", + .minimum_zig_version = "0.17.0", .dependencies = .{ .plthook = .{ From 4e9880c9904cb64d5c6230efdc93c645490d4168 Mon Sep 17 00:00:00 2001 From: Michael Pfaff <23013931+mpfaff@users.noreply.github.com> Date: Thu, 8 Oct 2026 18:08:23 -0400 Subject: [PATCH 2/3] Update paths.zig --- src/util/paths.zig | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/util/paths.zig b/src/util/paths.zig index 15bc2a1..c08cc95 100644 --- a/src/util/paths.zig +++ b/src/util/paths.zig @@ -31,6 +31,17 @@ pub fn exists(path: [*:0]const os_char, comptime filter: enum { file, directory } } +/// https://codebrowser.dev/glibc/glibc/dlfcn/dlfcn.h.html#86 +const Dl_info = extern struct { + dli_fname: ?[*:0]const u8, + dli_fbase: ?*anyopaque, + dli_sname: ?[*:0]const u8, + dli_saddr: ?*anyopaque, +}; + +/// https://codebrowser.dev/glibc/glibc/dlfcn/dlfcn.h.html#96 +extern fn dladdr(address: *const anyopaque, info: *Dl_info) c_int; + pub const ModulePathBuf = struct { buf: if (builtin.os.tag == .windows) [std.os.windows.PATH_MAX_WIDE]u16 else void, @@ -48,14 +59,9 @@ pub const ModulePathBuf = struct { } return self.buf[0..rc :0]; } else { - const dlfcn = @cImport({ - @cDefine("_GNU_SOURCE", {}); - @cInclude("dlfcn.h"); - }); - - var info: dlfcn.Dl_info = undefined; + var info: Dl_info = undefined; - if (dlfcn.dladdr(module, &info) == 0) { + if (dladdr(module, &info) == 0) { return null; } self.* = .{ .buf = {} }; From b4e68d73b2efd230a977a98963c2363952d1e0ca Mon Sep 17 00:00:00 2001 From: Michael Pfaff <23013931+mpfaff@users.noreply.github.com> Date: Thu, 8 Oct 2026 18:17:13 -0400 Subject: [PATCH 3/3] Update func_import.zig --- src/runtimes/func_import.zig | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/runtimes/func_import.zig b/src/runtimes/func_import.zig index e7e94ce..8996b58 100644 --- a/src/runtimes/func_import.zig +++ b/src/runtimes/func_import.zig @@ -16,23 +16,26 @@ pub fn defineFuncImportTable(comptime prefix: []const u8, comptime defns: type) comptime { const Type = std.builtin.Type; const defns_fields = @typeInfo(defns).@"struct".fields; - var fields: [defns_fields.len]Type.StructField = undefined; - for (defns_fields, &fields) |defn, *field| { + var field_names: [defns_fields.len][]const u8 = undefined; + var field_types: [defns_fields.len]type = undefined; + var field_attrs: [defns_fields.len]Type.Struct.FieldAttributes = undefined; + for (defns_fields, &field_names, &field_types, &field_attrs) |defn, *fname, *ftype, *fattrs| { const T = ?*const defn.type; - field.* = .{ - .name = defn.name, - .type = T, - .is_comptime = false, + fname.* = defn.name; + ftype.* = T; + fattrs.* = .{ + .@"comptime" = false, + .@"align" = null, .default_value_ptr = @ptrCast(&@as(T, null)), - .alignment = 0, }; } - const AddrTable = @Type(.{ .@"struct" = Type.Struct{ - .fields = &fields, - .decls = &.{}, - .is_tuple = false, + const AddrTable = @Struct(.{ .layout = .auto, - } }); + .BackingInt = null, + .field_names = &field_names, + .field_types = &field_types, + .field_attrs = &field_attrs, + }); return struct { pub var addrs: AddrTable = .{};