summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj14
-rw-r--r--lldb/tools/debugserver/source/DNBDefs.h2
-rw-r--r--lldb/tools/debugserver/source/MacOSX/MachTask.mm14
-rw-r--r--lldb/tools/debugserver/source/MacOSX/MachVMMemory.cpp19
-rw-r--r--lldb/tools/debugserver/source/MacOSX/MachVMMemory.h3
-rw-r--r--lldb/tools/debugserver/source/debugserver-entitlements.plist2
6 files changed, 48 insertions, 6 deletions
diff --git a/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj b/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj
index b7e90a11627..e2624db54e9 100644
--- a/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj
+++ b/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj
@@ -875,6 +875,8 @@
"$(LLDB_COMPRESSION_CFLAGS)",
"$(LLDB_ZLIB_CFLAGS)",
"$(LLDB_OS_LOG_CFLAGS)",
+ "-isystem",
+ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders",
);
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = "";
@@ -973,6 +975,8 @@
"$(LLDB_COMPRESSION_CFLAGS)",
"$(LLDB_ZLIB_CFLAGS)",
"$(LLDB_OS_LOG_CFLAGS)",
+ "-isystem",
+ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders",
);
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = "";
@@ -1070,6 +1074,8 @@
"$(LLDB_COMPRESSION_CFLAGS)",
"$(LLDB_ZLIB_CFLAGS)",
"$(LLDB_OS_LOG_CFLAGS)",
+ "-isystem",
+ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders",
);
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = "";
@@ -1504,6 +1510,8 @@
"$(LLDB_COMPRESSION_CFLAGS)",
"$(LLDB_ZLIB_CFLAGS)",
"$(LLDB_OS_LOG_CFLAGS)",
+ "-isystem",
+ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders",
);
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
@@ -1644,6 +1652,8 @@
"$(LLDB_COMPRESSION_CFLAGS)",
"$(LLDB_ZLIB_CFLAGS)",
"$(LLDB_OS_LOG_CFLAGS)",
+ "-isystem",
+ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders",
);
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
@@ -1855,6 +1865,8 @@
"$(LLDB_COMPRESSION_CFLAGS)",
"$(LLDB_ZLIB_CFLAGS)",
"$(LLDB_OS_LOG_CFLAGS)",
+ "-isystem",
+ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders",
);
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = "";
@@ -1987,6 +1999,8 @@
"$(LLDB_COMPRESSION_CFLAGS)",
"$(LLDB_ZLIB_CFLAGS)",
"$(LLDB_OS_LOG_CFLAGS)",
+ "-isystem",
+ "$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders",
);
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*][arch=*]" = "$(OTHER_CFLAGS)";
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
diff --git a/lldb/tools/debugserver/source/DNBDefs.h b/lldb/tools/debugserver/source/DNBDefs.h
index b9b47f78daf..eefdc3242b4 100644
--- a/lldb/tools/debugserver/source/DNBDefs.h
+++ b/lldb/tools/debugserver/source/DNBDefs.h
@@ -353,6 +353,8 @@ enum DNBProfileDataScanType {
eProfileEnergy = (1 << 9),
+ eProfileMemoryCap = (1 << 15),
+
eProfileAll = 0xffffffff
};
diff --git a/lldb/tools/debugserver/source/MacOSX/MachTask.mm b/lldb/tools/debugserver/source/MacOSX/MachTask.mm
index 9cdef345ebf..d05f50029f1 100644
--- a/lldb/tools/debugserver/source/MacOSX/MachTask.mm
+++ b/lldb/tools/debugserver/source/MacOSX/MachTask.mm
@@ -349,12 +349,14 @@ std::string MachTask::GetProfileData(DNBProfileDataScanType scanType) {
}
vm_statistics64_data_t vminfo;
- uint64_t physical_memory;
- mach_vm_size_t anonymous = 0;
- mach_vm_size_t phys_footprint = 0;
+ uint64_t physical_memory = 0;
+ uint64_t anonymous = 0;
+ uint64_t phys_footprint = 0;
+ uint64_t memory_cap = 0;
if (m_vm_memory.GetMemoryProfile(scanType, task, task_info,
m_process->GetCPUType(), pid, vminfo,
- physical_memory, anonymous, phys_footprint)) {
+ physical_memory, anonymous,
+ phys_footprint, memory_cap)) {
std::ostringstream profile_data_stream;
if (scanType & eProfileHostCPU) {
@@ -419,6 +421,10 @@ std::string MachTask::GetProfileData(DNBProfileDataScanType scanType) {
profile_data_stream << "phys_footprint:" << phys_footprint << ';';
}
+ if (scanType & eProfileMemoryCap) {
+ profile_data_stream << "mem_cap:" << memory_cap << ';';
+ }
+
#ifdef LLDB_ENERGY
if (scanType & eProfileEnergy) {
struct rusage_info_v2 info;
diff --git a/lldb/tools/debugserver/source/MacOSX/MachVMMemory.cpp b/lldb/tools/debugserver/source/MacOSX/MachVMMemory.cpp
index eb5e8abd505..754fb82dba3 100644
--- a/lldb/tools/debugserver/source/MacOSX/MachVMMemory.cpp
+++ b/lldb/tools/debugserver/source/MacOSX/MachVMMemory.cpp
@@ -19,6 +19,12 @@
#include <mach/shared_region.h>
#include <sys/sysctl.h>
+#if defined(WITH_FBS) || defined(WITH_BKS)
+extern "C" {
+#import <sys/kern_memorystatus.h>
+}
+#endif
+
static const vm_size_t kInvalidPageSize = ~0;
MachVMMemory::MachVMMemory() : m_page_size(kInvalidPageSize), m_err(0) {}
@@ -116,7 +122,8 @@ static uint64_t GetPhysicalMemory() {
nub_bool_t MachVMMemory::GetMemoryProfile(
DNBProfileDataScanType scanType, task_t task, struct task_basic_info ti,
cpu_type_t cputype, nub_process_t pid, vm_statistics64_data_t &vminfo,
- uint64_t &physical_memory, mach_vm_size_t &anonymous, mach_vm_size_t &phys_footprint)
+ uint64_t &physical_memory, uint64_t &anonymous,
+ uint64_t &phys_footprint, uint64_t &memory_cap)
{
if (scanType & eProfileHostMemory)
physical_memory = GetPhysicalMemory();
@@ -142,6 +149,16 @@ nub_bool_t MachVMMemory::GetMemoryProfile(
}
}
+#if defined(WITH_FBS) || defined(WITH_BKS)
+ if (scanType & eProfileMemoryCap) {
+ memorystatus_memlimit_properties_t memlimit_properties;
+ memset(&memlimit_properties, 0, sizeof(memlimit_properties));
+ if (memorystatus_control(MEMORYSTATUS_CMD_GET_MEMLIMIT_PROPERTIES, pid, 0, &memlimit_properties, sizeof(memlimit_properties)) == 0) {
+ memory_cap = memlimit_properties.memlimit_active;
+ }
+ }
+#endif
+
return true;
}
diff --git a/lldb/tools/debugserver/source/MacOSX/MachVMMemory.h b/lldb/tools/debugserver/source/MacOSX/MachVMMemory.h
index 202193b0c04..513b69ee709 100644
--- a/lldb/tools/debugserver/source/MacOSX/MachVMMemory.h
+++ b/lldb/tools/debugserver/source/MacOSX/MachVMMemory.h
@@ -32,7 +32,8 @@ public:
nub_bool_t GetMemoryProfile(DNBProfileDataScanType scanType, task_t task,
struct task_basic_info ti, cpu_type_t cputype,
nub_process_t pid, vm_statistics64_data_t &vminfo,
- uint64_t &physical_memory, mach_vm_size_t &anonymous, mach_vm_size_t &phys_footprint);
+ uint64_t &physical_memory, uint64_t &anonymous,
+ uint64_t &phys_footprint, uint64_t &memory_cap);
protected:
nub_size_t MaxBytesLeftInPage(task_t task, nub_addr_t addr, nub_size_t count);
diff --git a/lldb/tools/debugserver/source/debugserver-entitlements.plist b/lldb/tools/debugserver/source/debugserver-entitlements.plist
index 4134ee95861..9edd45be9ab 100644
--- a/lldb/tools/debugserver/source/debugserver-entitlements.plist
+++ b/lldb/tools/debugserver/source/debugserver-entitlements.plist
@@ -24,5 +24,7 @@
<true/>
<key>com.apple.security.network.client</key>
<true/>
+ <key>com.apple.private.memorystatus</key>
+ <true/>
</dict>
</plist>
OpenPOWER on IntegriCloud