forked from OSchip/llvm-project
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
This commit is contained in:
parent
f6af30f4c7
commit
1b72f09150
|
@ -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);
|
||||
|
||||
|
|
|
@ -165,6 +165,12 @@ public:
|
|||
bool
|
||||
GetDescription (lldb::SBStream &description);
|
||||
|
||||
uint32_t
|
||||
GetNumCompileUnits();
|
||||
|
||||
lldb::SBCompileUnit
|
||||
GetCompileUnitAtIndex (uint32_t);
|
||||
|
||||
size_t
|
||||
GetNumSymbols ();
|
||||
|
||||
|
|
|
@ -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!!!
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
int b_function(int input) {
|
||||
return input * 2;
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
int c_function(int input) {
|
||||
return input * 3;
|
||||
}
|
Loading…
Reference in New Issue