diff --git a/lib/libc/musl/src/thread/x32/clone.s b/lib/libc/musl/src/thread/x32/clone.s index d713452676333d3e34ef9f004fcec4eebf2bcd6d..31e2ccabe61d5b9443cc08b9606ae26ca664bc5c 100644 --- a/lib/libc/musl/src/thread/x32/clone.s +++ b/lib/libc/musl/src/thread/x32/clone.s @@ -8,7 +8,7 @@ __clone: mov %rdx,%rdi mov %r8,%rdx mov %r9,%r8 - mov 8(%rsp),%r10 + mov 8(%rsp),%r10d mov %r11,%r9 and $-16,%rsi sub $8,%rsi diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index 8892c15ae9082aa5f5f014d49d9665401032dbcc..aeecb8c1b499313efc00b40711359f4e85f87d18 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -9438,7 +9438,7 @@ pub const timezone = extern struct { /// The timespec struct used by the kernel. pub const kernel_timespec = extern struct { sec: i64, - nsec: i64, + nsec: isize, /// For use with `utimensat` and `futimens`. pub const NOW: timespec = .{ @@ -9460,7 +9460,11 @@ pub const UTIME = struct { }; // https://github.com/ziglang/zig/issues/4726#issuecomment-2190337877 -pub const timespec = if (native_arch == .hexagon or native_arch == .riscv32) kernel_timespec else extern struct { +const use_kernel_timespec = native_arch == .hexagon or native_arch == .riscv32 or switch (native_abi) { + .gnux32, .muslx32, .x32 => true, + else => false, +}; +pub const timespec = if (use_kernel_timespec) kernel_timespec else extern struct { sec: isize, nsec: isize, }; diff --git a/lib/std/os/linux/x32.zig b/lib/std/os/linux/x32.zig index 9cfe2f7899d9535aed61019997b94d99a5527668..3b10612786a6d256775c3f3dbe068b1ced5e352b 100644 --- a/lib/std/os/linux/x32.zig +++ b/lib/std/os/linux/x32.zig @@ -130,7 +130,7 @@ pub fn clone() callconv(.naked) u32 { \\ mov %%rdx,%%rdi \\ mov %%r8,%%rdx \\ mov %%r9,%%r8 - \\ mov 8(%%rsp),%%r10 + \\ mov 8(%%rsp),%%r10d \\ mov %%r11,%%r9 \\ and $-16,%%rsi \\ sub $8,%%rsi @@ -175,7 +175,7 @@ pub fn restore_rt() callconv(.naked) noreturn { } } -pub const time_t = i32; +pub const time_t = i64; pub const VDSO = struct { pub const CGT_SYM = "__vdso_clock_gettime"; diff --git a/test/tests.zig b/test/tests.zig index a3883223728b7141c6a7f90a76a57e5914a75af5..fe0c7622e6608fe5979004e05730ae1d5bdc347f 100644 --- a/test/tests.zig +++ b/test/tests.zig @@ -627,7 +627,6 @@ const module_test_targets = blk: { .os_tag = .linux, .abi = .abin32, }, - .extra_target = true, }, .{ .target = .{ @@ -654,7 +653,6 @@ const module_test_targets = blk: { .abi = .muslabin32, }, .link_libc = true, - .extra_target = true, }, .{ .target = .{ @@ -681,7 +679,6 @@ const module_test_targets = blk: { .abi = .gnuabin32, }, .link_libc = true, - .extra_target = true, }, .{ @@ -1167,7 +1164,6 @@ const module_test_targets = blk: { .os_tag = .linux, .abi = .x32, }, - .extra_target = true, }, .{ .target = .{ @@ -1204,7 +1200,6 @@ const module_test_targets = blk: { .abi = .muslx32, }, .link_libc = true, - .extra_target = true, }, .{ .target = .{ @@ -1231,7 +1226,6 @@ const module_test_targets = blk: { .abi = .gnux32, }, .link_libc = true, - .extra_target = true, }, // Darwin Targets