summaryrefslogtreecommitdiffstats
path: root/lldb/test/python_api/section/TestSectionAPI.py
blob: 5644bb44608c7bf60730d75c1cdd60723743d917 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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