[compiler-rt] af05e81 - [Sanitizers] GetMemoryProfile implementation for FreeBSD.

David Carlier via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 19 10:02:31 PST 2023


Author: David Carlier
Date: 2023-01-19T18:01:03Z
New Revision: af05e818fb0519f027120e160ca036a3ab678584

URL: https://github.com/llvm/llvm-project/commit/af05e818fb0519f027120e160ca036a3ab678584
DIFF: https://github.com/llvm/llvm-project/commit/af05e818fb0519f027120e160ca036a3ab678584.diff

LOG: [Sanitizers] GetMemoryProfile implementation for FreeBSD.

Reviewers: dvyukov

Reviewed-By: dvyukov

Differental Revision: https://reviews.llvm.org/D140688

Added: 
    

Modified: 
    compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cpp
    compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cpp
index 1f489b71ad998..36a82c4ac966b 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cpp
@@ -39,6 +39,22 @@
 
 namespace __sanitizer {
 
+#if SANITIZER_FREEBSD
+void GetMemoryProfile(fill_profile_f cb, uptr *stats) {
+  const int Mib[] = {
+    CTL_KERN,
+    KERN_PROC,
+    KERN_PROC_PID,
+    getpid()
+  }; 
+
+  struct kinfo_proc InfoProc;
+  uptr Len = sizeof(InfoProc);
+  CHECK_EQ(internal_sysctl(Mib, ARRAY_SIZE(Mib), nullptr, (uptr *)&InfoProc, &Len, 0), 0);
+  cb(0, InfoProc.ki_rssize * GetPageSizeCached(), false, stats);
+}
+#endif
+
 void ReadProcMaps(ProcSelfMapsBuff *proc_maps) {
   const int Mib[] = {
 #if SANITIZER_FREEBSD

diff  --git a/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cpp
index eb351b0f06fd0..a7805ad1b083b 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cpp
@@ -145,6 +145,7 @@ void MemoryMappingLayout::DumpListOfModules(
   }
 }
 
+#if SANITIZER_LINUX || SANITIZER_ANDROID || SANITIZER_SOLARIS || SANITIZER_NETBSD
 void GetMemoryProfile(fill_profile_f cb, uptr *stats) {
   char *smaps = nullptr;
   uptr smaps_cap = 0;
@@ -184,6 +185,7 @@ void ParseUnixMemoryProfile(fill_profile_f cb, uptr *stats, char *smaps,
     while (*pos++ != '\n') {}
   }
 }
+#endif
 
 } // namespace __sanitizer
 


        


More information about the llvm-commits mailing list