From 7f1f2e653d6f3cd541e92727f2001596935f3c62 Mon Sep 17 00:00:00 2001 From: Ryan Schneider Date: Wed, 2 Nov 2022 18:55:17 -0700 Subject: [PATCH] std.os: fix alignment of Sigaction.handler_fn Fixes #13216 --- lib/std/c/darwin.zig | 2 +- lib/std/c/dragonfly.zig | 2 +- lib/std/c/freebsd.zig | 2 +- lib/std/c/haiku.zig | 2 +- lib/std/c/netbsd.zig | 2 +- lib/std/c/openbsd.zig | 2 +- lib/std/c/solaris.zig | 2 +- lib/std/os/linux.zig | 4 ++-- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/std/c/darwin.zig b/lib/std/c/darwin.zig index 17a4957e94..9c455141f6 100644 --- a/lib/std/c/darwin.zig +++ b/lib/std/c/darwin.zig @@ -918,7 +918,7 @@ pub const siginfo_t = extern struct { /// Renamed from `sigaction` to `Sigaction` to avoid conflict with function name. pub const Sigaction = extern struct { - pub const handler_fn = std.meta.FnPtr(fn (c_int) callconv(.C) void); + pub const handler_fn = std.meta.FnPtr(fn (c_int) align(1) callconv(.C) void); pub const sigaction_fn = std.meta.FnPtr(fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void); handler: extern union { diff --git a/lib/std/c/dragonfly.zig b/lib/std/c/dragonfly.zig index ddc0db2709..8c6ecb653f 100644 --- a/lib/std/c/dragonfly.zig +++ b/lib/std/c/dragonfly.zig @@ -681,7 +681,7 @@ pub const empty_sigset = sigset_t{ .__bits = [_]c_uint{0} ** _SIG_WORDS }; pub const sig_atomic_t = c_int; pub const Sigaction = extern struct { - pub const handler_fn = std.meta.FnPtr(fn (c_int) callconv(.C) void); + pub const handler_fn = std.meta.FnPtr(fn (c_int) align(1) callconv(.C) void); pub const sigaction_fn = std.meta.FnPtr(fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void); /// signal handler diff --git a/lib/std/c/freebsd.zig b/lib/std/c/freebsd.zig index 799040c381..24fce4af6e 100644 --- a/lib/std/c/freebsd.zig +++ b/lib/std/c/freebsd.zig @@ -1197,7 +1197,7 @@ const NSIG = 32; /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall. pub const Sigaction = extern struct { - pub const handler_fn = std.meta.FnPtr(fn (c_int) callconv(.C) void); + pub const handler_fn = std.meta.FnPtr(fn (c_int) align(1) callconv(.C) void); pub const sigaction_fn = std.meta.FnPtr(fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void); /// signal handler diff --git a/lib/std/c/haiku.zig b/lib/std/c/haiku.zig index 30ab3542b9..82f0c92c51 100644 --- a/lib/std/c/haiku.zig +++ b/lib/std/c/haiku.zig @@ -742,7 +742,7 @@ const NSIG = 32; /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall. pub const Sigaction = extern struct { - pub const handler_fn = std.meta.FnPtr(fn (i32) callconv(.C) void); + pub const handler_fn = std.meta.FnPtr(fn (i32) align(1) callconv(.C) void); /// signal handler __sigaction_u: extern union { diff --git a/lib/std/c/netbsd.zig b/lib/std/c/netbsd.zig index 18ed702791..132c9a6065 100644 --- a/lib/std/c/netbsd.zig +++ b/lib/std/c/netbsd.zig @@ -971,7 +971,7 @@ pub const SIG = struct { /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall. pub const Sigaction = extern struct { - pub const handler_fn = std.meta.FnPtr(fn (c_int) callconv(.C) void); + pub const handler_fn = std.meta.FnPtr(fn (c_int) align(1) callconv(.C) void); pub const sigaction_fn = std.meta.FnPtr(fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void); /// signal handler diff --git a/lib/std/c/openbsd.zig b/lib/std/c/openbsd.zig index d78b679a1c..3aea81f469 100644 --- a/lib/std/c/openbsd.zig +++ b/lib/std/c/openbsd.zig @@ -1026,7 +1026,7 @@ pub const SIG = struct { /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall. pub const Sigaction = extern struct { - pub const handler_fn = std.meta.FnPtr(fn (c_int) callconv(.C) void); + pub const handler_fn = std.meta.FnPtr(fn (c_int) align(1) callconv(.C) void); pub const sigaction_fn = std.meta.FnPtr(fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void); /// signal handler diff --git a/lib/std/c/solaris.zig b/lib/std/c/solaris.zig index b733b53b3d..d45365a2b6 100644 --- a/lib/std/c/solaris.zig +++ b/lib/std/c/solaris.zig @@ -952,7 +952,7 @@ pub const SIG = struct { /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall. pub const Sigaction = extern struct { - pub const handler_fn = std.meta.FnPtr(fn (c_int) callconv(.C) void); + pub const handler_fn = std.meta.FnPtr(fn (c_int) align(1) callconv(.C) void); pub const sigaction_fn = std.meta.FnPtr(fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void); /// signal options diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index da9ea74327..c30fdcfbef 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -3130,7 +3130,7 @@ pub const all_mask: sigset_t = [_]u32{0xffffffff} ** @typeInfo(sigset_t).Array.l pub const app_mask: sigset_t = [2]u32{ 0xfffffffc, 0x7fffffff } ++ [_]u32{0xffffffff} ** 30; const k_sigaction_funcs = struct { - const handler = ?std.meta.FnPtr(fn (c_int) callconv(.C) void); + const handler = ?std.meta.FnPtr(fn (c_int) align(1) callconv(.C) void); const restorer = std.meta.FnPtr(fn () callconv(.C) void); }; @@ -3157,7 +3157,7 @@ pub const k_sigaction = switch (native_arch) { /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall. pub const Sigaction = extern struct { - pub const handler_fn = std.meta.FnPtr(fn (c_int) callconv(.C) void); + pub const handler_fn = std.meta.FnPtr(fn (c_int) align(1) callconv(.C) void); pub const sigaction_fn = std.meta.FnPtr(fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void); handler: extern union {