LLDB  mainline
SBMemoryRegionInfo.h
Go to the documentation of this file.
1 //===-- SBMemoryRegionInfo.h ------------------------------------*- C++ -*-===//
2 //
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
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLDB_API_SBMEMORYREGIONINFO_H
10 #define LLDB_API_SBMEMORYREGIONINFO_H
11 
12 #include "lldb/API/SBData.h"
13 #include "lldb/API/SBDefines.h"
14 
15 namespace lldb {
16 
18 public:
20 
22 
23  SBMemoryRegionInfo(const char *name, lldb::addr_t begin, lldb::addr_t end,
24  uint32_t permissions, bool mapped,
25  bool stack_memory = false);
26 
28 
30  operator=(const lldb::SBMemoryRegionInfo &rhs);
31 
32  void Clear();
33 
34  /// Get the base address of this memory range.
35  ///
36  /// \return
37  /// The base address of this memory range.
38  lldb::addr_t GetRegionBase();
39 
40  /// Get the end address of this memory range.
41  ///
42  /// \return
43  /// The base address of this memory range.
44  lldb::addr_t GetRegionEnd();
45 
46  /// Check if this memory address is marked readable to the process.
47  ///
48  /// \return
49  /// true if this memory address is marked readable
50  bool IsReadable();
51 
52  /// Check if this memory address is marked writable to the process.
53  ///
54  /// \return
55  /// true if this memory address is marked writable
56  bool IsWritable();
57 
58  /// Check if this memory address is marked executable to the process.
59  ///
60  /// \return
61  /// true if this memory address is marked executable
62  bool IsExecutable();
63 
64  /// Check if this memory address is mapped into the process address
65  /// space.
66  ///
67  /// \return
68  /// true if this memory address is in the process address space.
69  bool IsMapped();
70 
71  /// Returns the name of the memory region mapped at the given
72  /// address.
73  ///
74  /// \return
75  /// In case of memory mapped files it is the absolute path of
76  /// the file otherwise it is a name associated with the memory
77  /// region. If no name can be determined the returns nullptr.
78  const char *GetName();
79 
80  /// Returns whether this memory region has a list of memory pages
81  /// that have been modified -- that are dirty.
82  ///
83  /// \return
84  /// True if the dirty page list is available.
85  bool HasDirtyMemoryPageList();
86 
87  /// Returns the number of modified pages -- dirty pages -- in this
88  /// memory region.
89  ///
90  /// \return
91  /// The number of dirty page entries will be returned. If
92  /// there are no dirty pages in this memory region, 0 will
93  /// be returned. 0 will also be returned if the dirty page
94  /// list is not available for this memory region -- you must
95  /// use HasDirtyMemoryPageList() to check for that.
96  uint32_t GetNumDirtyPages();
97 
98  /// Returns the address of a memory page that has been modified in
99  /// this region.
100  ///
101  /// \return
102  /// Returns the address for his dirty page in the list.
103  /// If this memory region does not have a dirty page list,
104  /// LLDB_INVALID_ADDRESS is returned.
105  addr_t GetDirtyPageAddressAtIndex(uint32_t idx);
106 
107  /// Returns the size of a memory page in this region.
108  ///
109  /// \return
110  /// Returns the size of the memory pages in this region,
111  /// or 0 if this information is unavailable.
112  int GetPageSize();
113 
114  bool operator==(const lldb::SBMemoryRegionInfo &rhs) const;
115 
116  bool operator!=(const lldb::SBMemoryRegionInfo &rhs) const;
117 
118  bool GetDescription(lldb::SBStream &description);
119 
120 private:
121  friend class SBProcess;
123 
125 
127 
128  const lldb_private::MemoryRegionInfo &ref() const;
129 
130  // Unused.
131  SBMemoryRegionInfo(const lldb_private::MemoryRegionInfo *lldb_object_ptr);
132 
133  lldb::MemoryRegionInfoUP m_opaque_up;
134 };
135 
136 } // namespace lldb
137 
138 #endif // LLDB_API_SBMEMORYREGIONINFO_H
SBDefines.h
LLDB_API
#define LLDB_API
Definition: lldb-defines.h:23
lldb_private::MemoryRegionInfo
Definition: MemoryRegionInfo.h:21
lldb::SBProcess
Definition: SBProcess.h:23
lldb::addr_t
uint64_t addr_t
Definition: lldb-types.h:83
lldb::SBMemoryRegionInfoList
Definition: SBMemoryRegionInfoList.h:18
SBData.h
GetName
static llvm::StringRef GetName(XcodeSDK::Type type)
Definition: XcodeSDK.cpp:21
lldb::operator==
bool LLDB_API operator==(const SBAddress &lhs, const SBAddress &rhs)
Definition: SBAddress.cpp:63
lldb_private::operator!=
bool operator!=(const Address &lhs, const Address &rhs)
Definition: Address.cpp:1005
uint32_t
lldb::SBMemoryRegionInfo::m_opaque_up
lldb::MemoryRegionInfoUP m_opaque_up
Definition: SBMemoryRegionInfo.h:133
lldb::SBMemoryRegionInfo
Definition: SBMemoryRegionInfo.h:17
lldb_private::ScriptInterpreter
Definition: ScriptInterpreter.h:126
lldb::SBStream
Definition: SBStream.h:18
lldb
Definition: SBAddress.h:15
lldb::SBMemoryRegionInfo
class LLDB_API SBMemoryRegionInfo
Definition: SBDefines.h:57