""" Test SBSection APIs. """ import unittest2 from lldbtest import * class SectionAPITestCase(TestBase): mydir = TestBase.compute_mydir(__file__) @skipUnlessDarwin @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: sect_type = s.GetSectionType() if sect_type == lldb.eSectionTypeData: data_section = s break elif sect_type == lldb.eSectionTypeContainer: for i in range(s.GetNumSubSections()): ss = s.GetSubSectionAtIndex(i) sect_type = ss.GetSectionType() if sect_type == lldb.eSectionTypeData: data_section = ss break self.assertIsNotNone(data_section) return data_section if __name__ == '__main__': import atexit lldb.SBDebugger.Initialize() atexit.register(lambda: lldb.SBDebugger.Terminate()) unittest2.main()