summaryrefslogtreecommitdiffstats
path: root/lldb/test/python_api/section/TestSectionAPI.py
diff options
context:
space:
mode:
authorMatthew Gardiner <mg11@csr.com>2014-10-22 07:22:56 +0000
committerMatthew Gardiner <mg11@csr.com>2014-10-22 07:22:56 +0000
commitc928de3e8e95ab02418720b765b2342123ade5b8 (patch)
treebe7a7544734d5488eb64d096f0558f61a84a7e03 /lldb/test/python_api/section/TestSectionAPI.py
parent0cf39569bf9e58db2d975fb06d1f94fcd2c648ee (diff)
downloadbcm5719-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-xlldb/test/python_api/section/TestSectionAPI.py120
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()
OpenPOWER on IntegriCloud