authorgravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2020-03-11 20:03:36+01:00
committergravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2020-03-12 09:43:45+01:00
log89d7fc773d66609a8d93106f9a6d84d479771690
tree01712f4e68706426ac27d107f8d9227122d0ff35
parentf58705b4a623b39ad10fe25a9a41507fdfc0b089

std: Fix pwrite invocation on 32bit architectures


1 files changed, 37 insertions(+), 2 deletions(-)

lib/std/os/linux.zig+37-2
...@@ -350,7 +350,13 @@ pub fn pread(fd: i32, buf: [*]u8, count: usize, offset: u64) usize {...@@ -350,7 +350,13 @@ pub fn pread(fd: i32, buf: [*]u8, count: usize, offset: u64) usize {
350 );350 );
351 }351 }
352 } else {352 } else {
353 return syscall4(SYS_pread, @bitCast(usize, @as(isize, fd)), @ptrToInt(buf), count, offset);353 return syscall4(
354 SYS_pread,
355 @bitCast(usize, @as(isize, fd)),
356 @ptrToInt(buf),
357 count,
358 offset,
359 );
354 }360 }
355}361}
356362
...@@ -385,7 +391,36 @@ pub fn write(fd: i32, buf: [*]const u8, count: usize) usize {...@@ -385,7 +391,36 @@ pub fn write(fd: i32, buf: [*]const u8, count: usize) usize {
385}391}
386392
387pub fn pwrite(fd: i32, buf: [*]const u8, count: usize, offset: usize) usize {393pub fn pwrite(fd: i32, buf: [*]const u8, count: usize, offset: usize) usize {
388 return syscall4(SYS_pwrite, @bitCast(usize, @as(isize, fd)), @ptrToInt(buf), count, offset);394 if (@hasDecl(@This(), "SYS_pwrite64")) {
395 if (require_aligned_register_pair) {
396 return syscall6(
397 SYS_pwrite64,
398 @bitCast(usize, @as(isize, fd)),
399 @ptrToInt(buf),
400 count,
401 0,
402 @truncate(usize, offset),
403 @truncate(usize, offset >> 32),
404 );
405 } else {
406 return syscall5(
407 SYS_pwrite64,
408 @bitCast(usize, @as(isize, fd)),
409 @ptrToInt(buf),
410 count,
411 @truncate(usize, offset),
412 @truncate(usize, offset >> 32),
413 );
414 }
415 } else {
416 return syscall4(
417 SYS_pwrite,
418 @bitCast(usize, @as(isize, fd)),
419 @ptrToInt(buf),
420 count,
421 offset,
422 );
423 }
389}424}
390425
391pub fn rename(old: [*:0]const u8, new: [*:0]const u8) usize {426pub fn rename(old: [*:0]const u8, new: [*:0]const u8) usize {