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

Christopher Ferris via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 3 12:56:57 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);
----------------
cferris1000 wrote:

I think it's worth adding this in a SCUDO_LINUX block. Right now, if a mistake is made and linux returns -1, this test would pass. It's better to check that it's working properly.

This is slightly different from the usage in primary/secondary code since this is a test and we are trying to verify the functionality works properly.

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


More information about the llvm-commits mailing list