From c928de3e8e95ab02418720b765b2342123ade5b8 Mon Sep 17 00:00:00 2001 From: Matthew Gardiner Date: Wed, 22 Oct 2014 07:22:56 +0000 Subject: 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 --- lldb/test/python_api/section/TestSectionAPI.py | 120 +++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100755 lldb/test/python_api/section/TestSectionAPI.py (limited to 'lldb/test/python_api/section/TestSectionAPI.py') 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() -- cgit v1.2.3