1*99451b44SJordan Rupprecht"""
2*99451b44SJordan RupprechtTest SBSection APIs.
3*99451b44SJordan Rupprecht"""
4*99451b44SJordan Rupprecht
5*99451b44SJordan Rupprecht
6*99451b44SJordan Rupprecht
7*99451b44SJordan Rupprechtfrom lldbsuite.test.decorators import *
8*99451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
9*99451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil
10*99451b44SJordan Rupprecht
11*99451b44SJordan Rupprecht
12*99451b44SJordan Rupprechtclass SectionAPITestCase(TestBase):
13*99451b44SJordan Rupprecht
14*99451b44SJordan Rupprecht    mydir = TestBase.compute_mydir(__file__)
15*99451b44SJordan Rupprecht
16*99451b44SJordan Rupprecht    @add_test_categories(['pyapi'])
17*99451b44SJordan Rupprecht    def test_get_target_byte_size(self):
18*99451b44SJordan Rupprecht        d = {'EXE': 'b.out'}
19*99451b44SJordan Rupprecht        self.build(dictionary=d)
20*99451b44SJordan Rupprecht        self.setTearDownCleanup(dictionary=d)
21*99451b44SJordan Rupprecht        exe = self.getBuildArtifact('b.out')
22*99451b44SJordan Rupprecht        target = self.dbg.CreateTarget(exe)
23*99451b44SJordan Rupprecht        self.assertTrue(target, VALID_TARGET)
24*99451b44SJordan Rupprecht
25*99451b44SJordan Rupprecht        # find the .data section of the main module
26*99451b44SJordan Rupprecht        mod = target.GetModuleAtIndex(0)
27*99451b44SJordan Rupprecht        data_section = None
28*99451b44SJordan Rupprecht        for s in mod.sections:
29*99451b44SJordan Rupprecht            sect_type = s.GetSectionType()
30*99451b44SJordan Rupprecht            if sect_type == lldb.eSectionTypeData:
31*99451b44SJordan Rupprecht                data_section = s
32*99451b44SJordan Rupprecht                break
33*99451b44SJordan Rupprecht            elif sect_type == lldb.eSectionTypeContainer:
34*99451b44SJordan Rupprecht                for i in range(s.GetNumSubSections()):
35*99451b44SJordan Rupprecht                    ss = s.GetSubSectionAtIndex(i)
36*99451b44SJordan Rupprecht                    sect_type = ss.GetSectionType()
37*99451b44SJordan Rupprecht                    if sect_type == lldb.eSectionTypeData:
38*99451b44SJordan Rupprecht                        data_section = ss
39*99451b44SJordan Rupprecht                        break
40*99451b44SJordan Rupprecht
41*99451b44SJordan Rupprecht        self.assertIsNotNone(data_section)
42*99451b44SJordan Rupprecht        self.assertEqual(data_section.target_byte_size, 1)
43