diff options
author | Johnny Chen <johnny.chen@apple.com> | 2012-03-16 21:55:42 +0000 |
---|---|---|
committer | Johnny Chen <johnny.chen@apple.com> | 2012-03-16 21:55:42 +0000 |
commit | 1b72f09150b1333e33773882e9c035ac896acc5e (patch) | |
tree | 2d03ba33e15db13fdbd92fb68812690f937f9ed6 | |
parent | f6af30f4c7d91d61d2ccb7cdb450872c11eef214 (diff) | |
download | bcm5719-llvm-1b72f09150b1333e33773882e9c035ac896acc5e.tar.gz bcm5719-llvm-1b72f09150b1333e33773882e9c035ac896acc5e.zip |
Export the APIs submitted by Dawn to the Python bindings. Add a simple test case for the SBModule.compile_unit_iter() API.
llvm-svn: 152952
-rw-r--r-- | lldb/scripts/Python/interface/SBCompileUnit.i | 9 | ||||
-rw-r--r-- | lldb/scripts/Python/interface/SBModule.i | 6 | ||||
-rw-r--r-- | lldb/scripts/Python/modify-python-lldb.py | 6 | ||||
-rw-r--r-- | lldb/test/python_api/module_section/Makefile | 2 | ||||
-rw-r--r-- | lldb/test/python_api/module_section/TestModuleAndSection.py | 32 | ||||
-rw-r--r-- | lldb/test/python_api/module_section/b.cpp | 3 | ||||
-rw-r--r-- | lldb/test/python_api/module_section/c.cpp | 3 |
7 files changed, 59 insertions, 2 deletions
diff --git a/lldb/scripts/Python/interface/SBCompileUnit.i b/lldb/scripts/Python/interface/SBCompileUnit.i index be4f740c12e..6f9d023295e 100644 --- a/lldb/scripts/Python/interface/SBCompileUnit.i +++ b/lldb/scripts/Python/interface/SBCompileUnit.i @@ -77,6 +77,15 @@ public: lldb::SBFileSpec *inline_file_spec, bool exact) const; + SBFileSpec + GetSupportFileAtIndex (uint32_t idx) const; + + uint32_t + GetNumSupportFiles () const; + + uint32_t + FindSupportFileIndex (uint32_t start_idx, const SBFileSpec &sb_file, bool full); + bool GetDescription (lldb::SBStream &description); diff --git a/lldb/scripts/Python/interface/SBModule.i b/lldb/scripts/Python/interface/SBModule.i index c826134ff42..1b6d4ecac43 100644 --- a/lldb/scripts/Python/interface/SBModule.i +++ b/lldb/scripts/Python/interface/SBModule.i @@ -165,6 +165,12 @@ public: bool GetDescription (lldb::SBStream &description); + uint32_t + GetNumCompileUnits(); + + lldb::SBCompileUnit + GetCompileUnitAtIndex (uint32_t); + size_t GetNumSymbols (); diff --git a/lldb/scripts/Python/modify-python-lldb.py b/lldb/scripts/Python/modify-python-lldb.py index 034e2add86e..75f97e78ba9 100644 --- a/lldb/scripts/Python/modify-python-lldb.py +++ b/lldb/scripts/Python/modify-python-lldb.py @@ -175,6 +175,7 @@ module_iter = " def module_iter(self): return lldb_iter(self, '%s', '%s')" breakpoint_iter = " def breakpoint_iter(self): return lldb_iter(self, '%s', '%s')" watchpoint_iter = " def watchpoint_iter(self): return lldb_iter(self, '%s', '%s')" section_iter = " def section_iter(self): return lldb_iter(self, '%s', '%s')" +compile_unit_iter = " def compile_unit_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. @@ -227,6 +228,8 @@ d = { 'SBBreakpoint': ('GetNumLocations', 'GetLocationAtIndex'), # SBModule has an additional section_iter(), see below. 'SBModule-section': ('GetNumSections', 'GetSectionAtIndex'), + # And compile_unit_iter(). + 'SBModule-compile-unit': ('GetNumCompileUnits', 'GetCompileUnitAtIndex'), # As well as symbol_in_section_iter(). 'SBModule-symbol-in-section': symbol_in_section_iter_def } @@ -378,9 +381,10 @@ 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 and symbol_in_section_iter()! + # SBModule has extra SBSection, SBCompileUnit iterators and symbol_in_section_iter()! if cls == "SBModule": new_content.add_line(section_iter % d[cls+'-section']) + new_content.add_line(compile_unit_iter % d[cls+'-compile-unit']) new_content.add_line(d[cls+'-symbol-in-section']) # This special purpose iterator is for SBValue only!!! diff --git a/lldb/test/python_api/module_section/Makefile b/lldb/test/python_api/module_section/Makefile index 86af2f4bc70..5738d5684da 100644 --- a/lldb/test/python_api/module_section/Makefile +++ b/lldb/test/python_api/module_section/Makefile @@ -1,6 +1,6 @@ LEVEL = ../../make -CXX_SOURCES := main.cpp +CXX_SOURCES := main.cpp b.cpp c.cpp MAKE_DSYM :=NO include $(LEVEL)/Makefile.rules diff --git a/lldb/test/python_api/module_section/TestModuleAndSection.py b/lldb/test/python_api/module_section/TestModuleAndSection.py index ebd0ea04909..7038d6e7109 100644 --- a/lldb/test/python_api/module_section/TestModuleAndSection.py +++ b/lldb/test/python_api/module_section/TestModuleAndSection.py @@ -25,6 +25,12 @@ class ModuleAndSectionAPIsTestCase(TestBase): self.buildDefault() self.module_and_section_boundary_condition() + @python_api_test + def test_module_compile_unit_iter(self): + """Test module's compile unit iterator APIs.""" + self.buildDefault() + self.module_compile_unit_iter() + def module_and_section(self): exe = os.path.join(os.getcwd(), "a.out") @@ -100,6 +106,32 @@ class ModuleAndSectionAPIsTestCase(TestBase): if sec1: sec1.FindSubSection(None) + def module_compile_unit_iter(self): + exe = os.path.join(os.getcwd(), "a.out") + + target = self.dbg.CreateTarget(exe) + self.assertTrue(target, VALID_TARGET) + self.assertTrue(target.GetNumModules() > 0) + + # Hide stdout if not running with '-t' option. + if not self.TraceOn(): + self.HideStdout() + + print "Number of modules for the target: %d" % target.GetNumModules() + for module in target.module_iter(): + print module + + # Get the executable module at index 0. + exe_module = target.GetModuleAtIndex(0) + + print "Exe module: %s" % str(exe_module) + print "Number of compile units: %d" % exe_module.GetNumCompileUnits() + INDENT = ' ' * 4 + INDENT2 = INDENT * 2 + for cu in exe_module.compile_unit_iter(): + print cu + + if __name__ == '__main__': import atexit lldb.SBDebugger.Initialize() diff --git a/lldb/test/python_api/module_section/b.cpp b/lldb/test/python_api/module_section/b.cpp new file mode 100644 index 00000000000..4e3e54138e5 --- /dev/null +++ b/lldb/test/python_api/module_section/b.cpp @@ -0,0 +1,3 @@ +int b_function(int input) { + return input * 2; +} diff --git a/lldb/test/python_api/module_section/c.cpp b/lldb/test/python_api/module_section/c.cpp new file mode 100644 index 00000000000..3c87bfe30c6 --- /dev/null +++ b/lldb/test/python_api/module_section/c.cpp @@ -0,0 +1,3 @@ +int c_function(int input) { + return input * 3; +} |