Matthew Gardiner | c928de3 | 2014-10-22 07:22:56 +0000 | [diff] [blame] | 1 | """ |
| 2 | Test SBSection APIs. |
| 3 | """ |
| 4 | |
Zachary Turner | 77db4a8 | 2015-10-22 20:06:20 +0000 | [diff] [blame] | 5 | import lldb_shared |
| 6 | |
Matthew Gardiner | c928de3 | 2014-10-22 07:22:56 +0000 | [diff] [blame] | 7 | from lldbtest import * |
| 8 | |
| 9 | class SectionAPITestCase(TestBase): |
| 10 | |
| 11 | mydir = TestBase.compute_mydir(__file__) |
| 12 | |
Matthew Gardiner | c928de3 | 2014-10-22 07:22:56 +0000 | [diff] [blame] | 13 | @python_api_test |
Tamas Berghammer | c8fd130 | 2015-09-30 10:12:40 +0000 | [diff] [blame] | 14 | def test_get_target_byte_size(self): |
Matthew Gardiner | c928de3 | 2014-10-22 07:22:56 +0000 | [diff] [blame] | 15 | d = {'EXE': 'b.out'} |
Tamas Berghammer | c8fd130 | 2015-09-30 10:12:40 +0000 | [diff] [blame] | 16 | self.build(dictionary=d) |
Matthew Gardiner | c928de3 | 2014-10-22 07:22:56 +0000 | [diff] [blame] | 17 | self.setTearDownCleanup(dictionary=d) |
Tamas Berghammer | c8fd130 | 2015-09-30 10:12:40 +0000 | [diff] [blame] | 18 | exe = os.path.join(os.getcwd(), 'b.out') |
Matthew Gardiner | c928de3 | 2014-10-22 07:22:56 +0000 | [diff] [blame] | 19 | target = self.dbg.CreateTarget(exe) |
| 20 | self.assertTrue(target, VALID_TARGET) |
Matthew Gardiner | c928de3 | 2014-10-22 07:22:56 +0000 | [diff] [blame] | 21 | |
Tamas Berghammer | c8fd130 | 2015-09-30 10:12:40 +0000 | [diff] [blame] | 22 | # find the .data section of the main module |
Matthew Gardiner | c928de3 | 2014-10-22 07:22:56 +0000 | [diff] [blame] | 23 | mod = target.GetModuleAtIndex(0) |
| 24 | data_section = None |
| 25 | for s in mod.sections: |
Greg Clayton | ed59d75 | 2014-11-03 23:02:08 +0000 | [diff] [blame] | 26 | sect_type = s.GetSectionType() |
| 27 | if sect_type == lldb.eSectionTypeData: |
Matthew Gardiner | c928de3 | 2014-10-22 07:22:56 +0000 | [diff] [blame] | 28 | data_section = s |
| 29 | break |
Greg Clayton | ed59d75 | 2014-11-03 23:02:08 +0000 | [diff] [blame] | 30 | elif sect_type == lldb.eSectionTypeContainer: |
| 31 | for i in range(s.GetNumSubSections()): |
| 32 | ss = s.GetSubSectionAtIndex(i) |
| 33 | sect_type = ss.GetSectionType() |
| 34 | if sect_type == lldb.eSectionTypeData: |
| 35 | data_section = ss |
| 36 | break |
Matthew Gardiner | c928de3 | 2014-10-22 07:22:56 +0000 | [diff] [blame] | 37 | |
| 38 | self.assertIsNotNone(data_section) |
Tamas Berghammer | c8fd130 | 2015-09-30 10:12:40 +0000 | [diff] [blame] | 39 | self.assertEquals(data_section.target_byte_size, 1) |