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 | 26036843724d49fcd4678f177c02f0097997c731 (patch) | |
tree | 3a258e7502c9d527654014155d8672b8f0011e13 /lldb/include/lldb/API/SBMemoryRegionInfoList.h | |
parent | 89fb6643e99e3164ca235ecfb886cbbe8eb1dfbb (diff) | |
download | bcm5719-llvm-26036843724d49fcd4678f177c02f0097997c731.tar.gz bcm5719-llvm-26036843724d49fcd4678f177c02f0097997c731.zip |
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
llvm-svn: 273547
Diffstat (limited to 'lldb/include/lldb/API/SBMemoryRegionInfoList.h')
-rw-r--r-- | lldb/include/lldb/API/SBMemoryRegionInfoList.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lldb/include/lldb/API/SBMemoryRegionInfoList.h b/lldb/include/lldb/API/SBMemoryRegionInfoList.h new file mode 100644 index 00000000000..7723820897d --- /dev/null +++ b/lldb/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_ |