authorgravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2020-10-24 19:58:01+07:00
committergravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2020-10-24 20:05:37+07:00
log73e62f22ecf25e58db343a45dfce35fccd8a4fa3
tree42de12f18260e61bd28c3e81112a1cbd427cd8dd
parent792526c0bd45754bced18298573ad2a145a7141e

Fix sigaction(2) call on sparc64


1 files changed, 6 insertions(+), 1 deletions(-)

lib/std/os/linux.zig+6-1
...@@ -818,7 +818,12 @@ pub fn sigaction(sig: u6, noalias act: *const Sigaction, noalias oact: ?*Sigacti...@@ -818,7 +818,12 @@ pub fn sigaction(sig: u6, noalias act: *const Sigaction, noalias oact: ?*Sigacti
818 var ksa_old: k_sigaction = undefined;818 var ksa_old: k_sigaction = undefined;
819 const ksa_mask_size = @sizeOf(@TypeOf(ksa_old.mask));819 const ksa_mask_size = @sizeOf(@TypeOf(ksa_old.mask));
820 @memcpy(@ptrCast([*]u8, &ksa.mask), @ptrCast([*]const u8, &act.mask), ksa_mask_size);820 @memcpy(@ptrCast([*]u8, &ksa.mask), @ptrCast([*]const u8, &act.mask), ksa_mask_size);
821 const result = syscall4(.rt_sigaction, sig, @ptrToInt(&ksa), @ptrToInt(&ksa_old), ksa_mask_size);821 const result = switch (builtin.arch) {
822 // The sparc version of rt_sigaction needs the restorer function to be passed as an argument too.
823 .sparc, .sparcv9 => syscall5(.rt_sigaction, sig,
824 @ptrToInt(&ksa), @ptrToInt(&ksa_old), @ptrToInt(ksa.restorer), ksa_mask_size),
825 else => syscall4(.rt_sigaction, sig, @ptrToInt(&ksa), @ptrToInt(&ksa_old), ksa_mask_size),
826 };
822 const err = getErrno(result);827 const err = getErrno(result);
823 if (err != 0) {828 if (err != 0) {
824 return result;829 return result;