[Sanitizer] Fix GetRSS on Linux with non-4k pages
authorJay Foad <jay.foad@gmail.com>
Thu, 18 Dec 2014 16:24:01 +0000 (16:24 +0000)
committerJay Foad <jay.foad@gmail.com>
Thu, 18 Dec 2014 16:24:01 +0000 (16:24 +0000)
Summary:
The numbers in /proc/self/statm are in pages, not in fixed 4k units.
This fixes Linux/hard_rss_limit_mb_test.cc on my PowerPC64 box which
has 64k pages.

Reviewers: kcc, willschm

Reviewed By: willschm

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D6717

llvm-svn: 224522

compiler-rt/lib/sanitizer_common/sanitizer_linux.cc

index 7675315..330fb98 100644 (file)
@@ -432,7 +432,7 @@ uptr GetRSS() {
   buf[len] = 0;
   // The format of the file is:
   // 1084 89 69 11 0 79 0
-  // We need the second number which is RSS in 4K units.
+  // We need the second number which is RSS in pages.
   char *pos = buf;
   // Skip the first number.
   while (*pos >= '0' && *pos <= '9')
@@ -444,7 +444,7 @@ uptr GetRSS() {
   uptr rss = 0;
   while (*pos >= '0' && *pos <= '9')
     rss = rss * 10 + *pos++ - '0';
-  return rss * 4096;
+  return rss * GetPageSizeCached();
 }
 
 static void GetArgsAndEnv(char*** argv, char*** envp) {