For Darwin's GetTaskInfoMaxAddress, define the real structure with real fields to avoid confusion. NFC.
llvm-svn: 307945
This commit is contained in:
parent
055e65f0d4
commit
f0c652a52e
|
@ -805,14 +805,35 @@ char **GetArgv() {
|
|||
// fields only available in 10.12+. Declare the struct manually to be able to
|
||||
// build against older SDKs.
|
||||
struct __sanitizer_task_vm_info {
|
||||
uptr _unused[(SANITIZER_WORDSIZE == 32) ? 20 : 19];
|
||||
uptr min_address;
|
||||
uptr max_address;
|
||||
mach_vm_size_t virtual_size;
|
||||
integer_t region_count;
|
||||
integer_t page_size;
|
||||
mach_vm_size_t resident_size;
|
||||
mach_vm_size_t resident_size_peak;
|
||||
mach_vm_size_t device;
|
||||
mach_vm_size_t device_peak;
|
||||
mach_vm_size_t internal;
|
||||
mach_vm_size_t internal_peak;
|
||||
mach_vm_size_t external;
|
||||
mach_vm_size_t external_peak;
|
||||
mach_vm_size_t reusable;
|
||||
mach_vm_size_t reusable_peak;
|
||||
mach_vm_size_t purgeable_volatile_pmap;
|
||||
mach_vm_size_t purgeable_volatile_resident;
|
||||
mach_vm_size_t purgeable_volatile_virtual;
|
||||
mach_vm_size_t compressed;
|
||||
mach_vm_size_t compressed_peak;
|
||||
mach_vm_size_t compressed_lifetime;
|
||||
mach_vm_size_t phys_footprint;
|
||||
mach_vm_address_t min_address;
|
||||
mach_vm_address_t max_address;
|
||||
};
|
||||
#define __SANITIZER_TASK_VM_INFO_COUNT ((mach_msg_type_number_t) \
|
||||
(sizeof(__sanitizer_task_vm_info) / sizeof(natural_t)))
|
||||
|
||||
uptr GetTaskInfoMaxAddress() {
|
||||
__sanitizer_task_vm_info vm_info = {{0}, 0, 0};
|
||||
mach_msg_type_number_t count = sizeof(vm_info) / sizeof(int);
|
||||
__sanitizer_task_vm_info vm_info = {};
|
||||
mach_msg_type_number_t count = __SANITIZER_TASK_VM_INFO_COUNT;
|
||||
int err = task_info(mach_task_self(), TASK_VM_INFO, (int *)&vm_info, &count);
|
||||
if (err == 0) {
|
||||
return vm_info.max_address - 1;
|
||||
|
|
Loading…
Reference in New Issue