From b5a990636da6540ce03426b7895892459886d444 Mon Sep 17 00:00:00 2001 From: Schrodinger ZHU Yifan Date: Wed, 8 Oct 2025 14:10:57 -0400 Subject: [PATCH] [libc] fix rv32 mmap in auxv library --- libc/src/__support/OSUtil/linux/auxv.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libc/src/__support/OSUtil/linux/auxv.h b/libc/src/__support/OSUtil/linux/auxv.h index 7fb996f01dd84..894868ae5824d 100644 --- a/libc/src/__support/OSUtil/linux/auxv.h +++ b/libc/src/__support/OSUtil/linux/auxv.h @@ -81,7 +81,12 @@ LIBC_INLINE void Vector::initialize_unsafe(const Entry *auxv) { [[gnu::cold]] LIBC_INLINE void Vector::fallback_initialize_unsync() { constexpr size_t AUXV_MMAP_SIZE = FALLBACK_AUXV_ENTRIES * sizeof(Entry); - long mmap_ret = syscall_impl(SYS_mmap, nullptr, AUXV_MMAP_SIZE, +#ifdef SYS_mmap2 + constexpr int MMAP_SYSNO = SYS_mmap2; +#else + constexpr int MMAP_SYSNO = SYS_mmap; +#endif + long mmap_ret = syscall_impl(MMAP_SYSNO, nullptr, AUXV_MMAP_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); // We do not proceed if mmap fails.