summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/Python
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2011-09-24 04:51:43 +0000
committerJohnny Chen <johnny.chen@apple.com>2011-09-24 04:51:43 +0000
commit5b94dc28b3f3ee939a871eb6583372244a44217f (patch)
tree2acab433556ea758f3ed6718e6ec0ce3c43f4591 /lldb/scripts/Python
parent1f88d2f53103f68cc13dcf6f0d98e33dc60458ab (diff)
downloadbcm5719-llvm-5b94dc28b3f3ee939a871eb6583372244a44217f.tar.gz
bcm5719-llvm-5b94dc28b3f3ee939a871eb6583372244a44217f.zip
SBSection supports iteration through its subsections, represented as SBSection as well.
SBModule supports an additional SBSection iteration, besides the original SBSymbol iteration. Add docstrings and implement the two SBSection iteration protocols. llvm-svn: 140449
Diffstat (limited to 'lldb/scripts/Python')
-rw-r--r--lldb/scripts/Python/interface/SBModule.i3
-rw-r--r--lldb/scripts/Python/interface/SBSection.i5
-rw-r--r--lldb/scripts/Python/modify-python-lldb.py10
3 files changed, 15 insertions, 3 deletions
diff --git a/lldb/scripts/Python/interface/SBModule.i b/lldb/scripts/Python/interface/SBModule.i
index 466fcfad796..b85b8965024 100644
--- a/lldb/scripts/Python/interface/SBModule.i
+++ b/lldb/scripts/Python/interface/SBModule.i
@@ -31,7 +31,8 @@ and rich comparion methods which allow the API program to use,
if thisModule == thatModule:
print 'This module is the same as that module'
-to test module equality."
+to test module equality. A module also contains object file sections, namely
+SBSection. SBModule supports section iteration through section_iter()."
) SBModule;
class SBModule
{
diff --git a/lldb/scripts/Python/interface/SBSection.i b/lldb/scripts/Python/interface/SBSection.i
index a206b34b3cf..990a7053f5f 100644
--- a/lldb/scripts/Python/interface/SBSection.i
+++ b/lldb/scripts/Python/interface/SBSection.i
@@ -10,7 +10,10 @@
namespace lldb {
%feature("docstring",
-"Represents an executable image section."
+"Represents an executable image section.
+
+SBSection supports iteration through its subsection, represented as SBSection
+as well."
) SBSection;
class SBSection
diff --git a/lldb/scripts/Python/modify-python-lldb.py b/lldb/scripts/Python/modify-python-lldb.py
index 382509039c9..33929c62d0e 100644
--- a/lldb/scripts/Python/modify-python-lldb.py
+++ b/lldb/scripts/Python/modify-python-lldb.py
@@ -150,6 +150,7 @@ linked_list_iter_def = '''
iter_def = " def __iter__(self): return lldb_iter(self, '%s', '%s')"
module_iter = " def module_iter(self): return lldb_iter(self, '%s', '%s')"
breakpoint_iter = " def breakpoint_iter(self): return lldb_iter(self, '%s', '%s')"
+section_iter = " def section_iter(self): return lldb_iter(self, '%s', '%s')"
# Called to implement the built-in function len().
# Eligible objects are those containers with unambiguous iteration support.
@@ -172,6 +173,7 @@ d = { 'SBBreakpoint': ('GetNumLocations', 'GetLocationAtIndex'),
'SBDebugger': ('GetNumTargets', 'GetTargetAtIndex'),
'SBModule': ('GetNumSymbols', 'GetSymbolAtIndex'),
'SBProcess': ('GetNumThreads', 'GetThreadAtIndex'),
+ 'SBSection': ('GetNumSubSections', 'GetSubSectionAtIndex'),
'SBThread': ('GetNumFrames', 'GetFrameAtIndex'),
'SBInstructionList': ('GetSize', 'GetInstructionAtIndex'),
@@ -186,7 +188,10 @@ d = { 'SBBreakpoint': ('GetNumLocations', 'GetLocationAtIndex'),
# SBTarget needs special processing, see below.
'SBTarget': {'module': ('GetNumModules', 'GetModuleAtIndex'),
'breakpoint': ('GetNumBreakpoints', 'GetBreakpointAtIndex')
- }
+ },
+
+ # SBModule has an additional section_iter(), see below.
+ 'SBModule-extra': ('GetNumSections', 'GetSectionAtIndex')
}
#
@@ -332,6 +337,9 @@ for line in content.splitlines():
new_content.add_line(eq_def % (cls, list_to_frag(e[cls])))
new_content.add_line(ne_def)
+ # SBModule has an extra SBSection iterator!
+ if cls == "SBModule":
+ new_content.add_line(section_iter % d[cls+'-extra'])
# This special purpose iterator is for SBValue only!!!
if cls == "SBValue":
new_content.add_line(linked_list_iter_def)
OpenPOWER on IntegriCloud