Skip to content

Conversation

michaelrj-google
Copy link
Contributor

Previously they called sysconf and capget. Those were blocking adding
bazel rules for those tests since sysconf isn't done.

Previously they called sysconf and capget. Those were blocking adding
bazel rules for those tests since sysconf isn't done.
@llvmbot llvmbot added the libc label Oct 2, 2025
@llvmbot
Copy link
Member

llvmbot commented Oct 2, 2025

@llvm/pr-subscribers-libc

Author: Michael Jones (michaelrj-google)

Changes

Previously they called sysconf and capget. Those were blocking adding
bazel rules for those tests since sysconf isn't done.


Full diff: https://github.com/llvm/llvm-project/pull/161748.diff

5 Files Affected:

  • (modified) libc/test/src/sys/mman/linux/CMakeLists.txt (+2-4)
  • (modified) libc/test/src/sys/mman/linux/mincore_test.cpp (+8-6)
  • (modified) libc/test/src/sys/mman/linux/mlock_test.cpp (+5-22)
  • (modified) libc/test/src/sys/mman/linux/msync_test.cpp (+4-2)
  • (modified) libc/test/src/sys/mman/linux/remap_file_pages_test.cpp (+6-4)
diff --git a/libc/test/src/sys/mman/linux/CMakeLists.txt b/libc/test/src/sys/mman/linux/CMakeLists.txt
index 93fdc627d9f85..a362c1cf61cbc 100644
--- a/libc/test/src/sys/mman/linux/CMakeLists.txt
+++ b/libc/test/src/sys/mman/linux/CMakeLists.txt
@@ -99,7 +99,6 @@ add_libc_unittest(
     libc.src.sys.mman.mincore
     libc.src.sys.mman.mlock
     libc.src.sys.mman.munlock
-    libc.src.unistd.sysconf
     libc.test.UnitTest.ErrnoCheckingTest
     libc.test.UnitTest.ErrnoSetterMatcher
 )
@@ -125,7 +124,6 @@ add_libc_unittest(
     libc.src.sys.mman.munlockall
     libc.src.sys.resource.getrlimit
     libc.src.__support.OSUtil.osutil
-    libc.src.unistd.sysconf
     libc.test.UnitTest.ErrnoCheckingTest
     libc.test.UnitTest.ErrnoSetterMatcher
 )
@@ -146,7 +144,6 @@ add_libc_unittest(
     libc.src.sys.mman.mincore
     libc.src.sys.mman.mlock
     libc.src.sys.mman.munlock
-    libc.src.unistd.sysconf
     libc.test.UnitTest.ErrnoCheckingTest
     libc.test.UnitTest.ErrnoSetterMatcher
 )
@@ -160,13 +157,14 @@ add_libc_unittest(
   DEPENDS
     libc.include.sys_mman
     libc.include.sys_stat
-    libc.src.unistd.sysconf
     libc.test.UnitTest.ErrnoCheckingTest
     libc.test.UnitTest.ErrnoSetterMatcher
     libc.src.sys.mman.remap_file_pages
     libc.src.errno.errno
     libc.src.sys.mman.mmap
     libc.src.sys.mman.munmap
+    libc.src.fcntl.open
+    libc.src.unistd.close
 )
 
 add_libc_unittest(
diff --git a/libc/test/src/sys/mman/linux/mincore_test.cpp b/libc/test/src/sys/mman/linux/mincore_test.cpp
index 3a15291564922..d4e334bc75e0f 100644
--- a/libc/test/src/sys/mman/linux/mincore_test.cpp
+++ b/libc/test/src/sys/mman/linux/mincore_test.cpp
@@ -12,7 +12,6 @@
 #include "src/sys/mman/mmap.h"
 #include "src/sys/mman/munlock.h"
 #include "src/sys/mman/munmap.h"
-#include "src/unistd/sysconf.h"
 #include "test/UnitTest/ErrnoCheckingTest.h"
 #include "test/UnitTest/ErrnoSetterMatcher.h"
 #include "test/UnitTest/Test.h"
@@ -21,6 +20,9 @@ using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
 using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
 using LlvmLibcMincoreTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
 
+//TODO: Replace with sysconf call once the function is properly implemented.
+constexpr size_t PAGE_SIZE = 4096;
+
 TEST_F(LlvmLibcMincoreTest, UnMappedMemory) {
   unsigned char vec;
   int res = LIBC_NAMESPACE::mincore(nullptr, 1, &vec);
@@ -28,7 +30,7 @@ TEST_F(LlvmLibcMincoreTest, UnMappedMemory) {
 }
 
 TEST_F(LlvmLibcMincoreTest, UnalignedAddr) {
-  unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
+  unsigned long page_size = PAGE_SIZE;
   void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ,
                                     MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
   EXPECT_NE(addr, MAP_FAILED);
@@ -39,7 +41,7 @@ TEST_F(LlvmLibcMincoreTest, UnalignedAddr) {
 }
 
 TEST_F(LlvmLibcMincoreTest, InvalidVec) {
-  unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
+  unsigned long page_size = PAGE_SIZE;
   void *addr = LIBC_NAMESPACE::mmap(nullptr, 4 * page_size, PROT_READ,
                                     MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
   EXPECT_NE(addr, MAP_FAILED);
@@ -49,7 +51,7 @@ TEST_F(LlvmLibcMincoreTest, InvalidVec) {
 }
 
 TEST_F(LlvmLibcMincoreTest, NoError) {
-  unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
+  unsigned long page_size = PAGE_SIZE;
   void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ,
                                     MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
   EXPECT_NE(addr, MAP_FAILED);
@@ -61,7 +63,7 @@ TEST_F(LlvmLibcMincoreTest, NoError) {
 }
 
 TEST_F(LlvmLibcMincoreTest, NegativeLength) {
-  unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
+  unsigned long page_size = PAGE_SIZE;
   void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ,
                                     MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
   EXPECT_NE(addr, MAP_FAILED);
@@ -73,7 +75,7 @@ TEST_F(LlvmLibcMincoreTest, NegativeLength) {
 }
 
 TEST_F(LlvmLibcMincoreTest, PageOut) {
-  unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
+  unsigned long page_size = PAGE_SIZE;
   unsigned char vec;
   void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ | PROT_WRITE,
                                     MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
diff --git a/libc/test/src/sys/mman/linux/mlock_test.cpp b/libc/test/src/sys/mman/linux/mlock_test.cpp
index cd374222680f8..d879067891e67 100644
--- a/libc/test/src/sys/mman/linux/mlock_test.cpp
+++ b/libc/test/src/sys/mman/linux/mlock_test.cpp
@@ -22,14 +22,15 @@
 #include "src/sys/mman/munlockall.h"
 #include "src/sys/mman/munmap.h"
 #include "src/sys/resource/getrlimit.h"
-#include "src/unistd/sysconf.h"
 #include "test/UnitTest/ErrnoCheckingTest.h"
 #include "test/UnitTest/ErrnoSetterMatcher.h"
 #include "test/UnitTest/Test.h"
 
-#include <linux/capability.h>
 #include <sys/syscall.h>
 
+//TODO: Replace with sysconf call once the function is properly implemented.
+constexpr size_t PAGE_SIZE = 4096;
+
 using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher;
 using LlvmLibcMlockTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
 
@@ -38,7 +39,7 @@ struct PageHolder {
   void *addr;
 
   PageHolder()
-      : size(LIBC_NAMESPACE::sysconf(_SC_PAGESIZE)),
+      : size(PAGE_SIZE),
         addr(LIBC_NAMESPACE::mmap(nullptr, size, PROT_READ | PROT_WRITE,
                                   MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)) {}
   ~PageHolder() {
@@ -51,28 +52,10 @@ struct PageHolder {
   bool is_valid() { return addr != MAP_FAILED; }
 };
 
-static bool get_capacity(unsigned int cap) {
-  __user_cap_header_struct header;
-  header.pid = 0;
-  header.version = _LINUX_CAPABILITY_VERSION_3;
-  __user_cap_data_struct data[_LINUX_CAPABILITY_U32S_3];
-  // TODO: use capget wrapper once implemented.
-  // https://github.com/llvm/llvm-project/issues/80037
-  long res = LIBC_NAMESPACE::syscall_impl(
-      SYS_capget, LIBC_NAMESPACE::cpp::bit_cast<long>(&header),
-      LIBC_NAMESPACE::cpp::bit_cast<long>(&data));
-  if (res < 0)
-    return false;
-  unsigned idx = CAP_TO_INDEX(cap);
-  unsigned shift = CAP_TO_MASK(cap);
-  return (data[idx].effective & shift) != 0;
-}
-
 static bool is_permitted_size(size_t size) {
   rlimit rlimits;
   LIBC_NAMESPACE::getrlimit(RLIMIT_MEMLOCK, &rlimits);
-  return size <= static_cast<size_t>(rlimits.rlim_cur) ||
-         get_capacity(CAP_IPC_LOCK);
+  return size <= static_cast<size_t>(rlimits.rlim_cur);
 }
 
 TEST_F(LlvmLibcMlockTest, UnMappedMemory) {
diff --git a/libc/test/src/sys/mman/linux/msync_test.cpp b/libc/test/src/sys/mman/linux/msync_test.cpp
index b4eedb3baeac7..9b56168a56bcd 100644
--- a/libc/test/src/sys/mman/linux/msync_test.cpp
+++ b/libc/test/src/sys/mman/linux/msync_test.cpp
@@ -11,11 +11,13 @@
 #include "src/sys/mman/msync.h"
 #include "src/sys/mman/munlock.h"
 #include "src/sys/mman/munmap.h"
-#include "src/unistd/sysconf.h"
 #include "test/UnitTest/ErrnoCheckingTest.h"
 #include "test/UnitTest/ErrnoSetterMatcher.h"
 #include "test/UnitTest/Test.h"
 
+//TODO: Replace with sysconf call once the function is properly implemented.
+constexpr size_t PAGE_SIZE = 4096;
+
 using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher;
 using LlvmLibcMsyncTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
 
@@ -24,7 +26,7 @@ struct PageHolder {
   void *addr;
 
   PageHolder()
-      : size(LIBC_NAMESPACE::sysconf(_SC_PAGESIZE)),
+      : size(PAGE_SIZE),
         addr(LIBC_NAMESPACE::mmap(nullptr, size, PROT_READ | PROT_WRITE,
                                   MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)) {}
   ~PageHolder() {
diff --git a/libc/test/src/sys/mman/linux/remap_file_pages_test.cpp b/libc/test/src/sys/mman/linux/remap_file_pages_test.cpp
index 851e4f7ddd5b0..133f4698d8b14 100644
--- a/libc/test/src/sys/mman/linux/remap_file_pages_test.cpp
+++ b/libc/test/src/sys/mman/linux/remap_file_pages_test.cpp
@@ -11,7 +11,6 @@
 #include "src/sys/mman/munmap.h"
 #include "src/sys/mman/remap_file_pages.h"
 #include "src/unistd/close.h"
-#include "src/unistd/sysconf.h"
 #include "test/UnitTest/ErrnoCheckingTest.h"
 #include "test/UnitTest/ErrnoSetterMatcher.h"
 #include "test/UnitTest/Test.h"
@@ -19,12 +18,15 @@
 #include <sys/mman.h>
 #include <sys/stat.h> // For S_IRWXU
 
+//TODO: Replace with sysconf call once the function is properly implemented.
+constexpr size_t PAGE_SIZE = 4096;
+
 using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
 using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
 using LlvmLibcRemapFilePagesTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
 
 TEST_F(LlvmLibcRemapFilePagesTest, NoError) {
-  size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGE_SIZE);
+  size_t page_size = PAGE_SIZE;
   ASSERT_GT(page_size, size_t(0));
 
   // Create a file-backed mapping
@@ -50,7 +52,7 @@ TEST_F(LlvmLibcRemapFilePagesTest, NoError) {
 }
 
 TEST_F(LlvmLibcRemapFilePagesTest, ErrorInvalidFlags) {
-  size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGE_SIZE);
+  size_t page_size = PAGE_SIZE;
   ASSERT_GT(page_size, size_t(0));
 
   // Create a file-backed mapping
@@ -77,7 +79,7 @@ TEST_F(LlvmLibcRemapFilePagesTest, ErrorInvalidFlags) {
 }
 
 TEST_F(LlvmLibcRemapFilePagesTest, ErrorInvalidAddress) {
-  size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
+  size_t page_size = PAGE_SIZE;
   ASSERT_GT(page_size, size_t(0));
 
   // Use an address that we haven't mapped

Copy link

github-actions bot commented Oct 2, 2025

✅ With the latest revision this PR passed the C/C++ code formatter.

michaelrj-google added a commit to michaelrj-google/llvm-project that referenced this pull request Oct 2, 2025
@SchrodingerZhu
Copy link
Contributor

I really need to rework the getauxv/sysconf stuff very soon.

@michaelrj-google
Copy link
Contributor Author

I really need to rework the getauxv/sysconf stuff very soon.

I'm working on some stuff that will hopefully help in getting that done

@michaelrj-google michaelrj-google merged commit 3b9ec95 into llvm:main Oct 6, 2025
19 checks passed
@michaelrj-google michaelrj-google deleted the libcSimplifyMmanTests branch October 6, 2025 22:44
michaelrj-google added a commit that referenced this pull request Oct 6, 2025
llvm-sync bot pushed a commit to arm/arm-toolchain that referenced this pull request Oct 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants