Skip to content

Commit e2c7c18

Browse files
committed
Add a test to verify that lldb can load a kext binary.
<rdar://problem/46356062> llvm-svn: 348040
1 parent f5d3335 commit e2c7c18

File tree

2 files changed

+260
-0
lines changed

2 files changed

+260
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"""
2+
Test loading of a kext binary.
3+
"""
4+
5+
from __future__ import print_function
6+
7+
import shutil
8+
import struct
9+
10+
import lldb
11+
from lldbsuite.test.decorators import *
12+
from lldbsuite.test.lldbtest import *
13+
from lldbsuite.test import lldbutil
14+
15+
16+
class LoadKextTestCase(TestBase):
17+
NO_DEBUG_INFO_TESTCASE = True
18+
19+
mydir = TestBase.compute_mydir(__file__)
20+
21+
def setUp(self):
22+
TestBase.setUp(self)
23+
#super(LoadKextTestCase, self).setUp()
24+
#self._initial_platform = lldb.DBG.GetSelectedPlatform()
25+
26+
def test_load_kext(self):
27+
"""Test that lldb can load a kext binary."""
28+
29+
# Create kext from YAML.
30+
self.yaml2obj("mykext.yaml", self.getBuildArtifact("mykext"))
31+
32+
target = self.dbg.CreateTarget(self.getBuildArtifact("mykext"))
33+
34+
self.assertTrue(target.IsValid())
35+
36+
self.assertEqual(target.GetNumModules(), 1)
37+
mod = target.GetModuleAtIndex(0)
38+
self.assertEqual(mod.GetFileSpec().GetFilename(), "mykext")
Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
--- !mach-o
2+
FileHeader:
3+
magic: 0xFEEDFACF
4+
cputype: 0x01000007
5+
cpusubtype: 0x00000003
6+
filetype: 0x0000000B
7+
ncmds: 7
8+
sizeofcmds: 520
9+
flags: 0x00000085
10+
reserved: 0x00000000
11+
LoadCommands:
12+
- cmd: LC_SEGMENT_64
13+
cmdsize: 152
14+
segname: __TEXT
15+
vmaddr: 0
16+
vmsize: 4096
17+
fileoff: 0
18+
filesize: 4096
19+
maxprot: 7
20+
initprot: 5
21+
nsects: 1
22+
flags: 0
23+
Sections:
24+
- sectname: __text
25+
segname: __TEXT
26+
addr: 0x0000000000000F60
27+
size: 158
28+
offset: 0x00000F60
29+
align: 4
30+
reloff: 0x00000000
31+
nreloc: 0
32+
flags: 0x80000400
33+
reserved1: 0x00000000
34+
reserved2: 0x00000000
35+
reserved3: 0x00000000
36+
- cmd: LC_SEGMENT_64
37+
cmdsize: 152
38+
segname: __DATA
39+
vmaddr: 4096
40+
vmsize: 4096
41+
fileoff: 4096
42+
filesize: 4096
43+
maxprot: 7
44+
initprot: 3
45+
nsects: 1
46+
flags: 0
47+
Sections:
48+
- sectname: __data
49+
segname: __DATA
50+
addr: 0x0000000000001000
51+
size: 220
52+
offset: 0x00001000
53+
align: 3
54+
reloff: 0x00000000
55+
nreloc: 0
56+
flags: 0x00000000
57+
reserved1: 0x00000000
58+
reserved2: 0x00000000
59+
reserved3: 0x00000000
60+
- cmd: LC_SEGMENT_64
61+
cmdsize: 72
62+
segname: __LINKEDIT
63+
vmaddr: 8192
64+
vmsize: 4096
65+
fileoff: 8192
66+
filesize: 800
67+
maxprot: 7
68+
initprot: 1
69+
nsects: 0
70+
flags: 0
71+
- cmd: LC_SYMTAB
72+
cmdsize: 24
73+
symoff: 8224
74+
nsyms: 19
75+
stroff: 8528
76+
strsize: 464
77+
- cmd: LC_DYSYMTAB
78+
cmdsize: 80
79+
ilocalsym: 0
80+
nlocalsym: 16
81+
iextdefsym: 16
82+
nextdefsym: 3
83+
iundefsym: 19
84+
nundefsym: 0
85+
tocoff: 0
86+
ntoc: 0
87+
modtaboff: 0
88+
nmodtab: 0
89+
extrefsymoff: 0
90+
nextrefsyms: 0
91+
indirectsymoff: 0
92+
nindirectsyms: 0
93+
extreloff: 0
94+
nextrel: 0
95+
locreloff: 8192
96+
nlocrel: 4
97+
- cmd: LC_UUID
98+
cmdsize: 24
99+
uuid: 17A97B33-09B7-3195-9408-DBD965D578A5
100+
- cmd: LC_SOURCE_VERSION
101+
cmdsize: 16
102+
version: 0
103+
LinkEditData:
104+
NameList:
105+
- n_strx: 40
106+
n_type: 0x64
107+
n_sect: 0
108+
n_desc: 0
109+
n_value: 0
110+
- n_strx: 141
111+
n_type: 0x64
112+
n_sect: 0
113+
n_desc: 0
114+
n_value: 0
115+
- n_strx: 155
116+
n_type: 0x66
117+
n_sect: 3
118+
n_desc: 1
119+
n_value: 1543540349
120+
- n_strx: 276
121+
n_type: 0x20
122+
n_sect: 0
123+
n_desc: 0
124+
n_value: 0
125+
- n_strx: 287
126+
n_type: 0x20
127+
n_sect: 0
128+
n_desc: 0
129+
n_value: 0
130+
- n_strx: 298
131+
n_type: 0x20
132+
n_sect: 0
133+
n_desc: 0
134+
n_value: 0
135+
- n_strx: 309
136+
n_type: 0x20
137+
n_sect: 0
138+
n_desc: 0
139+
n_value: 0
140+
- n_strx: 1
141+
n_type: 0x64
142+
n_sect: 1
143+
n_desc: 0
144+
n_value: 0
145+
- n_strx: 325
146+
n_type: 0x1E
147+
n_sect: 1
148+
n_desc: 0
149+
n_value: 3992
150+
- n_strx: 333
151+
n_type: 0x1E
152+
n_sect: 1
153+
n_desc: 0
154+
n_value: 4018
155+
- n_strx: 361
156+
n_type: 0x1E
157+
n_sect: 1
158+
n_desc: 0
159+
n_value: 4035
160+
- n_strx: 392
161+
n_type: 0x1E
162+
n_sect: 1
163+
n_desc: 0
164+
n_value: 4052
165+
- n_strx: 417
166+
n_type: 0x1E
167+
n_sect: 1
168+
n_desc: 0
169+
n_value: 4068
170+
- n_strx: 424
171+
n_type: 0x1E
172+
n_sect: 2
173+
n_desc: 0
174+
n_value: 4296
175+
- n_strx: 435
176+
n_type: 0x1E
177+
n_sect: 2
178+
n_desc: 0
179+
n_value: 4304
180+
- n_strx: 446
181+
n_type: 0x1E
182+
n_sect: 2
183+
n_desc: 0
184+
n_value: 4312
185+
- n_strx: 2
186+
n_type: 0x0F
187+
n_sect: 2
188+
n_desc: 0
189+
n_value: 4096
190+
- n_strx: 13
191+
n_type: 0x0F
192+
n_sect: 1
193+
n_desc: 0
194+
n_value: 3936
195+
- n_strx: 27
196+
n_type: 0x0F
197+
n_sect: 1
198+
n_desc: 0
199+
n_value: 3968
200+
StringTable:
201+
- ' '
202+
- _kmod_info
203+
- _mykext_start
204+
- _mykext_stop
205+
- /tmp/mykext/build/mykext/Build/Intermediates.noindex/mykext.build/Debug/mykext.build/DerivedSources/
206+
- mykext_info.c
207+
- /tmp/mykext/build/mykext/Build/Intermediates.noindex/mykext.build/Debug/mykext.build/Objects-normal/x86_64/mykext_info.o
208+
- _kmod_info
209+
- __realmain
210+
- __antimain
211+
- __kext_apple_cc
212+
- __start
213+
- _OSKextGetCurrentIdentifier
214+
- _OSKextGetCurrentVersionString
215+
- _OSKextGetCurrentLoadTag
216+
- __stop
217+
- __realmain
218+
- __antimain
219+
- __kext_apple_cc
220+
- ''
221+
- ''
222+
...

0 commit comments

Comments
 (0)