1 //===-- MachVMRegion.h ------------------------------------------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // Created by Greg Clayton on 6/26/07.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_MACHVMREGION_H
14 #define LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_MACHVMREGION_H
18 #include <mach/mach.h>
22 MachVMRegion(task_t task
);
26 mach_vm_address_t
StartAddress() const { return m_start
; }
27 mach_vm_address_t
EndAddress() const { return m_start
+ m_size
; }
28 mach_vm_size_t
GetByteSize() const { return m_size
; }
29 mach_vm_address_t
BytesRemaining(mach_vm_address_t addr
) const {
30 if (ContainsAddress(addr
))
31 return m_size
- (addr
- m_start
);
35 bool ContainsAddress(mach_vm_address_t addr
) const {
36 return addr
>= StartAddress() && addr
< EndAddress();
39 bool SetProtections(mach_vm_address_t addr
, mach_vm_size_t size
,
41 bool RestoreProtections();
42 bool GetRegionForAddress(nub_addr_t addr
);
43 std::vector
<std::string
> GetMemoryTypes() const;
45 uint32_t GetDNBPermissions() const;
47 const DNBError
&GetError() { return m_err
; }
50 #if defined(VM_REGION_SUBMAP_SHORT_INFO_COUNT_64)
51 typedef vm_region_submap_short_info_data_64_t RegionInfo
;
52 enum { kRegionInfoSize
= VM_REGION_SUBMAP_SHORT_INFO_COUNT_64
};
54 typedef vm_region_submap_info_data_64_t RegionInfo
;
55 enum { kRegionInfoSize
= VM_REGION_SUBMAP_INFO_COUNT_64
};
59 mach_vm_address_t m_addr
;
61 mach_vm_address_t m_start
;
62 mach_vm_size_t m_size
;
65 vm_prot_t m_curr_protection
; // The current, possibly modified protections.
66 // Original value is saved in m_data.protections.
68 m_protection_addr
; // The start address at which protections were changed
70 m_protection_size
; // The size of memory that had its protections changed
73 #endif // LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_MACHVMREGION_H