teak-llvm/lldb/scripts/Python/interface/SBSection.i
Greg Clayton fed39aa653 Added the ability to read the dSYM plist file with source remappings even when DebugSymbols isn't used to find the dSYM. We now parse the plist as XML in the MacOSX symbol vendor.
Added the ability to get a section load address given a target which is needed for a previous checking which saves crashlogs.

llvm-svn: 159298
2012-06-27 22:22:28 +00:00

129 lines
3.1 KiB
C++

//===-- SWIG Interface for SBSection ----------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
namespace lldb {
%feature("docstring",
"Represents an executable image section.
SBSection supports iteration through its subsection, represented as SBSection
as well. For example,
for sec in exe_module:
if sec.GetName() == '__TEXT':
print sec
break
print INDENT + 'Number of subsections: %d' % sec.GetNumSubSections()
for subsec in sec:
print INDENT + repr(subsec)
produces:
[0x0000000100000000-0x0000000100002000) a.out.__TEXT
Number of subsections: 6
[0x0000000100001780-0x0000000100001d5c) a.out.__TEXT.__text
[0x0000000100001d5c-0x0000000100001da4) a.out.__TEXT.__stubs
[0x0000000100001da4-0x0000000100001e2c) a.out.__TEXT.__stub_helper
[0x0000000100001e2c-0x0000000100001f10) a.out.__TEXT.__cstring
[0x0000000100001f10-0x0000000100001f68) a.out.__TEXT.__unwind_info
[0x0000000100001f68-0x0000000100001ff8) a.out.__TEXT.__eh_frame
See also SBModule."
) SBSection;
class SBSection
{
public:
SBSection ();
SBSection (const lldb::SBSection &rhs);
~SBSection ();
bool
IsValid () const;
const char *
GetName ();
lldb::SBSection
FindSubSection (const char *sect_name);
size_t
GetNumSubSections ();
lldb::SBSection
GetSubSectionAtIndex (size_t idx);
lldb::addr_t
GetFileAddress ();
lldb::addr_t
GetLoadAddress (lldb::SBTarget &target);
lldb::addr_t
GetByteSize ();
uint64_t
GetFileOffset ();
uint64_t
GetFileByteSize ();
lldb::SBData
GetSectionData ();
lldb::SBData
GetSectionData (uint64_t offset,
uint64_t size);
SectionType
GetSectionType ();
bool
GetDescription (lldb::SBStream &description);
%pythoncode %{
def get_addr(self):
return SBAddress(self, 0)
__swig_getmethods__["name"] = GetName
if _newclass: x = property(GetName, None)
__swig_getmethods__["addr"] = get_addr
if _newclass: x = property(get_addr, None)
__swig_getmethods__["file_addr"] = GetFileAddress
if _newclass: x = property(GetFileAddress, None)
__swig_getmethods__["size"] = GetByteSize
if _newclass: x = property(GetByteSize, None)
__swig_getmethods__["file_offset"] = GetFileOffset
if _newclass: x = property(GetFileOffset, None)
__swig_getmethods__["file_size"] = GetFileByteSize
if _newclass: x = property(GetFileByteSize, None)
__swig_getmethods__["data"] = GetSectionData
if _newclass: x = property(GetSectionData, None)
__swig_getmethods__["type"] = GetSectionType
if _newclass: x = property(GetSectionType, None)
%}
private:
std::auto_ptr<lldb_private::SectionImpl> m_opaque_ap;
};
} // namespace lldb