mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 08:45:52 +00:00
std: Disable usage of fstat() and friends on loongarch.
Like riscv32, loongarch exclusively uses statx().
This commit is contained in:
parent
6880d2c4a3
commit
9423712519
@ -1992,8 +1992,8 @@ pub fn accept4(fd: i32, noalias addr: ?*sockaddr, noalias len: ?*socklen_t, flag
|
||||
}
|
||||
|
||||
pub fn fstat(fd: i32, stat_buf: *Stat) usize {
|
||||
if (native_arch == .riscv32) {
|
||||
// riscv32 has made the interesting decision to not implement some of
|
||||
if (native_arch == .riscv32 or native_arch.isLoongArch()) {
|
||||
// riscv32 and loongarch have made the interesting decision to not implement some of
|
||||
// the older stat syscalls, including this one.
|
||||
@compileError("No fstat syscall on this architecture.");
|
||||
} else if (@hasField(SYS, "fstat64")) {
|
||||
@ -2004,8 +2004,8 @@ pub fn fstat(fd: i32, stat_buf: *Stat) usize {
|
||||
}
|
||||
|
||||
pub fn stat(pathname: [*:0]const u8, statbuf: *Stat) usize {
|
||||
if (native_arch == .riscv32) {
|
||||
// riscv32 has made the interesting decision to not implement some of
|
||||
if (native_arch == .riscv32 or native_arch.isLoongArch()) {
|
||||
// riscv32 and loongarch have made the interesting decision to not implement some of
|
||||
// the older stat syscalls, including this one.
|
||||
@compileError("No stat syscall on this architecture.");
|
||||
} else if (@hasField(SYS, "stat64")) {
|
||||
@ -2016,8 +2016,8 @@ pub fn stat(pathname: [*:0]const u8, statbuf: *Stat) usize {
|
||||
}
|
||||
|
||||
pub fn lstat(pathname: [*:0]const u8, statbuf: *Stat) usize {
|
||||
if (native_arch == .riscv32) {
|
||||
// riscv32 has made the interesting decision to not implement some of
|
||||
if (native_arch == .riscv32 or native_arch.isLoongArch()) {
|
||||
// riscv32 and loongarch have made the interesting decision to not implement some of
|
||||
// the older stat syscalls, including this one.
|
||||
@compileError("No lstat syscall on this architecture.");
|
||||
} else if (@hasField(SYS, "lstat64")) {
|
||||
@ -2028,8 +2028,8 @@ pub fn lstat(pathname: [*:0]const u8, statbuf: *Stat) usize {
|
||||
}
|
||||
|
||||
pub fn fstatat(dirfd: i32, path: [*:0]const u8, stat_buf: *Stat, flags: u32) usize {
|
||||
if (native_arch == .riscv32) {
|
||||
// riscv32 has made the interesting decision to not implement some of
|
||||
if (native_arch == .riscv32 or native_arch.isLoongArch()) {
|
||||
// riscv32 and loongarch have made the interesting decision to not implement some of
|
||||
// the older stat syscalls, including this one.
|
||||
@compileError("No fstatat syscall on this architecture.");
|
||||
} else if (@hasField(SYS, "fstatat64")) {
|
||||
|
||||
@ -86,7 +86,7 @@ test "statx" {
|
||||
else => unreachable,
|
||||
}
|
||||
|
||||
if (builtin.cpu.arch == .riscv32) return error.SkipZigTest; // No fstatat, so the rest of the test is meaningless.
|
||||
if (builtin.cpu.arch == .riscv32 or builtin.cpu.arch.isLoongArch()) return error.SkipZigTest; // No fstatat, so the rest of the test is meaningless.
|
||||
|
||||
var stat_buf: linux.Stat = undefined;
|
||||
switch (linux.E.init(linux.fstatat(file.handle, "", &stat_buf, linux.AT.EMPTY_PATH))) {
|
||||
|
||||
@ -283,7 +283,7 @@ fn testReadlink(target_path: []const u8, symlink_path: []const u8) !void {
|
||||
|
||||
test "link with relative paths" {
|
||||
if (native_os == .wasi) return error.SkipZigTest; // Can link, but can't change into tmpDir
|
||||
if (builtin.cpu.arch == .riscv32 and builtin.os.tag == .linux and !builtin.link_libc) return error.SkipZigTest; // No `fstat()`.
|
||||
if ((builtin.cpu.arch == .riscv32 or builtin.cpu.arch.isLoongArch()) and builtin.os.tag == .linux and !builtin.link_libc) return error.SkipZigTest; // No `fstat()`.
|
||||
if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; // `nstat.nlink` assertion is failing with LLVM 20+ for unclear reasons.
|
||||
|
||||
switch (native_os) {
|
||||
@ -331,7 +331,7 @@ test "link with relative paths" {
|
||||
}
|
||||
|
||||
test "linkat with different directories" {
|
||||
if (builtin.cpu.arch == .riscv32 and builtin.os.tag == .linux and !builtin.link_libc) return error.SkipZigTest; // No `fstatat()`.
|
||||
if ((builtin.cpu.arch == .riscv32 or builtin.cpu.arch.isLoongArch()) and builtin.os.tag == .linux and !builtin.link_libc) return error.SkipZigTest; // No `fstatat()`.
|
||||
if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; // `nstat.nlink` assertion is failing with LLVM 20+ for unclear reasons.
|
||||
|
||||
switch (native_os) {
|
||||
@ -376,7 +376,7 @@ test "linkat with different directories" {
|
||||
}
|
||||
|
||||
test "fstatat" {
|
||||
if (builtin.cpu.arch == .riscv32 and builtin.os.tag == .linux and !builtin.link_libc) return error.SkipZigTest; // No `fstatat()`.
|
||||
if ((builtin.cpu.arch == .riscv32 or builtin.cpu.arch.isLoongArch()) and builtin.os.tag == .linux and !builtin.link_libc) return error.SkipZigTest; // No `fstatat()`.
|
||||
// enable when `fstat` and `fstatat` are implemented on Windows
|
||||
if (native_os == .windows) return error.SkipZigTest;
|
||||
|
||||
@ -1265,7 +1265,7 @@ test "fchmodat smoke test" {
|
||||
);
|
||||
posix.close(fd);
|
||||
|
||||
if (builtin.cpu.arch == .riscv32 and builtin.os.tag == .linux and !builtin.link_libc) return error.SkipZigTest; // No `fstatat()`.
|
||||
if ((builtin.cpu.arch == .riscv32 or builtin.cpu.arch.isLoongArch()) and builtin.os.tag == .linux and !builtin.link_libc) return error.SkipZigTest; // No `fstatat()`.
|
||||
|
||||
try posix.symlinkat("regfile", tmp.dir.fd, "symlink");
|
||||
const sym_mode = blk: {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user