diff options
author | Matthew Gardiner <mg11@csr.com> | 2014-10-22 07:22:56 +0000 |
---|---|---|
committer | Matthew Gardiner <mg11@csr.com> | 2014-10-22 07:22:56 +0000 |
commit | c928de3e8e95ab02418720b765b2342123ade5b8 (patch) | |
tree | be7a7544734d5488eb64d096f0558f61a84a7e03 /lldb/test/python_api/section/TestSectionAPI.py | |
parent | 0cf39569bf9e58db2d975fb06d1f94fcd2c648ee (diff) | |
download | bcm5719-llvm-c928de3e8e95ab02418720b765b2342123ade5b8.tar.gz bcm5719-llvm-c928de3e8e95ab02418720b765b2342123ade5b8.zip |
Added functions to the C++ API, for the benefit of non-8-bit byte architectures.
New functions to give client applications to tools to discover target byte sizes
for addresses prior to ReadMemory. Also added GetPlatform and ReadMemory to the
SBTarget class, since they seemed to be useful utilities to have.
Each new API has had a test case added.
http://reviews.llvm.org/D5867
llvm-svn: 220372
Diffstat (limited to 'lldb/test/python_api/section/TestSectionAPI.py')
-rwxr-xr-x | lldb/test/python_api/section/TestSectionAPI.py | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/lldb/test/python_api/section/TestSectionAPI.py b/lldb/test/python_api/section/TestSectionAPI.py new file mode 100755 index 00000000000..5644bb44608 --- /dev/null +++ b/lldb/test/python_api/section/TestSectionAPI.py @@ -0,0 +1,120 @@ +""" +Test SBSection APIs. +""" + +import unittest2 +from lldbtest import * + +class SectionAPITestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") + @python_api_test + @dsym_test + def test_get_target_byte_size_with_dsym(self): + d = {'EXE': 'a.out'} + self.buildDsym(dictionary=d) + self.setTearDownCleanup(dictionary=d) + target = self.create_simple_target('a.out') + + # find the .data section of the main module + data_section = self.find_data_section(target) + + self.assertEquals(data_section.target_byte_size, 1) + + @python_api_test + @dwarf_test + def test_get_target_byte_size_with_dwarf(self): + d = {'EXE': 'b.out'} + self.buildDwarf(dictionary=d) + self.setTearDownCleanup(dictionary=d) + target = self.create_simple_target('b.out') + + # find the .data section of the main module + data_section = self.find_data_section(target) + + self.assertEquals(data_section.target_byte_size, 1) + + def create_simple_target(self, fn): + exe = os.path.join(os.getcwd(), fn) + target = self.dbg.CreateTarget(exe) + self.assertTrue(target, VALID_TARGET) + return target + + def find_data_section(self, target): + mod = target.GetModuleAtIndex(0) + data_section = None + for s in mod.sections: + if ".data" == s.name: + data_section = s + break + + self.assertIsNotNone(data_section) + return data_section + +if __name__ == '__main__': + import atexit + lldb.SBDebugger.Initialize() + atexit.register(lambda: lldb.SBDebugger.Terminate()) + unittest2.main() +""" +Test SBSection APIs. +""" + +import unittest2 +from lldbtest import * + +class SectionAPITestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") + @python_api_test + @dsym_test + def test_get_target_byte_size_with_dsym(self): + d = {'EXE': 'a.out'} + self.buildDsym(dictionary=d) + self.setTearDownCleanup(dictionary=d) + target = self.create_simple_target('a.out') + + # find the .data section of the main module + data_section = self.find_data_section(target) + + self.assertEquals(data_section.target_byte_size, 1) + + @python_api_test + @dwarf_test + def test_get_target_byte_size_with_dwarf(self): + d = {'EXE': 'b.out'} + self.buildDwarf(dictionary=d) + self.setTearDownCleanup(dictionary=d) + target = self.create_simple_target('b.out') + + # find the .data section of the main module + data_section = self.find_data_section(target) + + self.assertEquals(data_section.target_byte_size, 1) + + def create_simple_target(self, fn): + exe = os.path.join(os.getcwd(), fn) + target = self.dbg.CreateTarget(exe) + self.assertTrue(target, VALID_TARGET) + return target + + def find_data_section(self, target): + mod = target.GetModuleAtIndex(0) + data_section = None + for s in mod.sections: + if ".data" == s.name: + data_section = s + break + + self.assertIsNotNone(data_section) + return data_section + +if __name__ == '__main__': + import atexit + lldb.SBDebugger.Initialize() + atexit.register(lambda: lldb.SBDebugger.Terminate()) + unittest2.main() |