[compiler-rt] [scudo] Move getResidentPages function (PR #183138)

via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 4 00:45:58 PST 2026


================
@@ -35,31 +35,33 @@ TEST(ScudoCommonTest, VerifyGetResidentPages) {
   // Only android seems to properly detect when single pages are touched.
 #if SCUDO_ANDROID
   // Verify nothing should be mapped in right after the map is created.
-  EXPECT_EQ(0U, getResidentPages(MemMap.getBase(), SizeBytes));
+  EXPECT_EQ(0U, MemMap.getResidentPages(MemMap.getBase(), SizeBytes));
 
   // Touch a page.
   u8 *Data = reinterpret_cast<u8 *>(MemMap.getBase());
   Data[0] = 1;
-  EXPECT_EQ(1U, getResidentPages(MemMap.getBase(), SizeBytes));
+  EXPECT_EQ(1U, MemMap.getResidentPages(MemMap.getBase(), SizeBytes));
 
   // Touch a non-consective page.
   Data[getPageSizeCached() * 2] = 1;
-  EXPECT_EQ(2U, getResidentPages(MemMap.getBase(), SizeBytes));
+  EXPECT_EQ(2U, MemMap.getResidentPages(MemMap.getBase(), SizeBytes));
 
   // Touch a page far enough that the function has to make multiple calls
   // to mincore.
   Data[getPageSizeCached() * 300] = 1;
-  EXPECT_EQ(3U, getResidentPages(MemMap.getBase(), SizeBytes));
+  EXPECT_EQ(3U, MemMap.getResidentPages(MemMap.getBase(), SizeBytes));
 
   // Touch another page in the same range to make sure the second
   // read is working.
   Data[getPageSizeCached() * 400] = 1;
-  EXPECT_EQ(4U, getResidentPages(MemMap.getBase(), SizeBytes));
+  EXPECT_EQ(4U, MemMap.getResidentPages(MemMap.getBase(), SizeBytes));
 #endif
 
   // Now write the whole thing.
   memset(reinterpret_cast<void *>(MemMap.getBase()), 1, SizeBytes);
-  EXPECT_EQ(NumPages, getResidentPages(MemMap.getBase(), SizeBytes));
+  s64 ResidentPages = MemMap.getResidentPages(MemMap.getBase(), SizeBytes);
----------------
ChiaHungDuan wrote:

Agree, I think the test may fail on other target like Fuchsia.

Another idea is that we can do a test round to see if a target supports `getResidentPages` by something like
```
MemMapT MemMap;
  ASSERT_TRUE(MemMap.map(/*Addr=*/0U, SizeBytes, "ResidentMemorySize"));
if (MemMap.getResidentPages(MemMap.getBase(), SizeBytes) == -1)
   // skip the following tests..
```
so that when a target implements this, they can be verified.

Either way is fine to me

https://github.com/llvm/llvm-project/pull/183138


More information about the llvm-commits mailing list