diff options
author | Howard Hellyer <hhellyer@uk.ibm.com> | 2016-06-23 08:35:37 +0000 |
---|---|---|
committer | Howard Hellyer <hhellyer@uk.ibm.com> | 2016-06-23 08:35:37 +0000 |
commit | 0f63e03e5bbe4e5c5c1b7860dac40f1b02e234c3 (patch) | |
tree | 52611d3391812437df1ff9861fb499ee8834b88e /include/lldb/API/SBMemoryRegionInfoList.h | |
parent | 70a547f840aac4fe29c6aad15e78602c748e75ef (diff) |
Add MemoryRegionInfo to SB API
Summary:
This adds new SB API calls and classes to allow a user of the SB API to obtain a full list of memory regions accessible within the process. Adding this to the API makes it possible use the API for tasks like scanning memory for blocks allocated with a header and footer to track down memory leaks, otherwise just inspecting every address is impractical especially for 64 bit processes.
These changes only add the API itself and a base implementation of GetMemoryRegions() to lldb_private::Process::GetMemoryRegions.
I will submit separate patches to fill in lldb_private::Process::GetMemoryRegionInfoList and GetMemoryRegionInfo for individual platforms.
The original discussion about this is here:
http://lists.llvm.org/pipermail/lldb-dev/2016-May/010203.html
Reviewers: clayborg
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D20565
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@273547 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/lldb/API/SBMemoryRegionInfoList.h')
-rw-r--r-- | include/lldb/API/SBMemoryRegionInfoList.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/include/lldb/API/SBMemoryRegionInfoList.h b/include/lldb/API/SBMemoryRegionInfoList.h new file mode 100644 index 000000000..772382089 --- /dev/null +++ b/include/lldb/API/SBMemoryRegionInfoList.h @@ -0,0 +1,63 @@ +//===-- SBMemoryRegionInfoList.h --------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_SBMemoryRegionInfoList_h_ +#define LLDB_SBMemoryRegionInfoList_h_ + +#include "lldb/API/SBDefines.h" + +class MemoryRegionInfoListImpl; + +namespace lldb { + +class LLDB_API SBMemoryRegionInfoList +{ +public: + + SBMemoryRegionInfoList (); + + SBMemoryRegionInfoList (const lldb::SBMemoryRegionInfoList &rhs); + + const SBMemoryRegionInfoList & + operator = (const SBMemoryRegionInfoList &rhs); + + ~SBMemoryRegionInfoList (); + + uint32_t + GetSize () const; + + bool + GetMemoryRegionAtIndex (uint32_t idx, SBMemoryRegionInfo ®ion_info); + + void + Append (lldb::SBMemoryRegionInfo ®ion); + + void + Append (lldb::SBMemoryRegionInfoList ®ion_list); + + void + Clear (); + +protected: + + const MemoryRegionInfoListImpl * + operator->() const; + + const MemoryRegionInfoListImpl & + operator*() const; + +private: + + std::unique_ptr<MemoryRegionInfoListImpl> m_opaque_ap; + +}; + +} // namespace lldb + +#endif // LLDB_SBMemoryRegionInfoList_h_ |