[libc-commits] [libc] [libc] prefer *at syscalls in sys/stat wrappers (PR #195792)
Kiriti Ponduri via libc-commits
libc-commits at lists.llvm.org
Mon May 4 21:49:48 PDT 2026
https://github.com/udaykiriti created https://github.com/llvm/llvm-project/pull/195792
- Flips the #ifdef order to prefer the *at syscalls over normal ones.
- from #195620
>From a9480a9a7372a729b0ed25a73f1524a4cd3f23cb Mon Sep 17 00:00:00 2001
From: udaykiriti <udaykiriti624 at gmail.com>
Date: Tue, 5 May 2026 10:15:43 +0530
Subject: [PATCH] [libc] prefer *at syscalls in sys/stat wrappers
- flips the #ifdef order to prefer the *at syscalls over normal ones.
Signed-off-by: udaykiriti <udaykiriti624 at gmail.com>
---
libc/src/__support/OSUtil/linux/syscall_wrappers/chmod.h | 6 +++---
libc/src/__support/OSUtil/linux/syscall_wrappers/mkdir.h | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/libc/src/__support/OSUtil/linux/syscall_wrappers/chmod.h b/libc/src/__support/OSUtil/linux/syscall_wrappers/chmod.h
index 69acf4c5cf1b3..42b0d3db98326 100644
--- a/libc/src/__support/OSUtil/linux/syscall_wrappers/chmod.h
+++ b/libc/src/__support/OSUtil/linux/syscall_wrappers/chmod.h
@@ -26,13 +26,13 @@ namespace LIBC_NAMESPACE_DECL {
namespace linux_syscalls {
LIBC_INLINE ErrorOr<int> chmod(const char *path, mode_t mode) {
-#ifdef SYS_chmod
- int ret = syscall_impl<int>(SYS_chmod, path, mode);
-#elif defined(SYS_fchmodat)
+#ifdef SYS_fchmodat
int ret = syscall_impl<int>(SYS_fchmodat, AT_FDCWD, path, mode, 0);
#elif defined(SYS_fchmodat2)
int ret = syscall_impl<int>(SYS_fchmodat2, AT_FDCWD, path, mode, 0,
AT_SYMLINK_NOFOLLOW);
+#elif defined(SYS_chmod)
+ int ret = syscall_impl<int>(SYS_chmod, path, mode);
#else
#error "chmod, fchmodat and fchmodat2 syscalls not available."
#endif
diff --git a/libc/src/__support/OSUtil/linux/syscall_wrappers/mkdir.h b/libc/src/__support/OSUtil/linux/syscall_wrappers/mkdir.h
index 6d77894c36b6b..b5002914c5ec0 100644
--- a/libc/src/__support/OSUtil/linux/syscall_wrappers/mkdir.h
+++ b/libc/src/__support/OSUtil/linux/syscall_wrappers/mkdir.h
@@ -26,10 +26,10 @@ namespace LIBC_NAMESPACE_DECL {
namespace linux_syscalls {
LIBC_INLINE ErrorOr<int> mkdir(const char *path, mode_t mode) {
-#ifdef SYS_mkdir
- int ret = syscall_impl<int>(SYS_mkdir, path, mode);
-#else
+#ifdef SYS_mkdirat
int ret = syscall_impl<int>(SYS_mkdirat, AT_FDCWD, path, mode);
+#else
+ int ret = syscall_impl<int>(SYS_mkdir, path, mode);
#endif
if (ret < 0)
return Error(-ret);
More information about the libc-commits
mailing list