summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/Python
diff options
context:
space:
mode:
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