Add a test to verify that lldb can load a kext binary.

<rdar://problem/46356062> 

llvm-svn: 348040
This commit is contained in:
Jason Molenda 2018-11-30 21:33:00 +00:00
parent f5d3335d75
commit e2c7c18056
2 changed files with 260 additions and 0 deletions

View File

@ -0,0 +1,38 @@
"""
Test loading of a kext binary.
"""
from __future__ import print_function
import shutil
import struct
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class LoadKextTestCase(TestBase):
NO_DEBUG_INFO_TESTCASE = True
mydir = TestBase.compute_mydir(__file__)
def setUp(self):
TestBase.setUp(self)
#super(LoadKextTestCase, self).setUp()
#self._initial_platform = lldb.DBG.GetSelectedPlatform()
def test_load_kext(self):
"""Test that lldb can load a kext binary."""
# Create kext from YAML.
self.yaml2obj("mykext.yaml", self.getBuildArtifact("mykext"))
target = self.dbg.CreateTarget(self.getBuildArtifact("mykext"))
self.assertTrue(target.IsValid())
self.assertEqual(target.GetNumModules(), 1)
mod = target.GetModuleAtIndex(0)
self.assertEqual(mod.GetFileSpec().GetFilename(), "mykext")

View File

@ -0,0 +1,222 @@
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
cpusubtype: 0x00000003
filetype: 0x0000000B
ncmds: 7
sizeofcmds: 520
flags: 0x00000085
reserved: 0x00000000
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 152
segname: __TEXT
vmaddr: 0
vmsize: 4096
fileoff: 0
filesize: 4096
maxprot: 7
initprot: 5
nsects: 1
flags: 0
Sections:
- sectname: __text
segname: __TEXT
addr: 0x0000000000000F60
size: 158
offset: 0x00000F60
align: 4
reloff: 0x00000000
nreloc: 0
flags: 0x80000400
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- cmd: LC_SEGMENT_64
cmdsize: 152
segname: __DATA
vmaddr: 4096
vmsize: 4096
fileoff: 4096
filesize: 4096
maxprot: 7
initprot: 3
nsects: 1
flags: 0
Sections:
- sectname: __data
segname: __DATA
addr: 0x0000000000001000
size: 220
offset: 0x00001000
align: 3
reloff: 0x00000000
nreloc: 0
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- cmd: LC_SEGMENT_64
cmdsize: 72
segname: __LINKEDIT
vmaddr: 8192
vmsize: 4096
fileoff: 8192
filesize: 800
maxprot: 7
initprot: 1
nsects: 0
flags: 0
- cmd: LC_SYMTAB
cmdsize: 24
symoff: 8224
nsyms: 19
stroff: 8528
strsize: 464
- cmd: LC_DYSYMTAB
cmdsize: 80
ilocalsym: 0
nlocalsym: 16
iextdefsym: 16
nextdefsym: 3
iundefsym: 19
nundefsym: 0
tocoff: 0
ntoc: 0
modtaboff: 0
nmodtab: 0
extrefsymoff: 0
nextrefsyms: 0
indirectsymoff: 0
nindirectsyms: 0
extreloff: 0
nextrel: 0
locreloff: 8192
nlocrel: 4
- cmd: LC_UUID
cmdsize: 24
uuid: 17A97B33-09B7-3195-9408-DBD965D578A5
- cmd: LC_SOURCE_VERSION
cmdsize: 16
version: 0
LinkEditData:
NameList:
- n_strx: 40
n_type: 0x64
n_sect: 0
n_desc: 0
n_value: 0
- n_strx: 141
n_type: 0x64
n_sect: 0
n_desc: 0
n_value: 0
- n_strx: 155
n_type: 0x66
n_sect: 3
n_desc: 1
n_value: 1543540349
- n_strx: 276
n_type: 0x20
n_sect: 0
n_desc: 0
n_value: 0
- n_strx: 287
n_type: 0x20
n_sect: 0
n_desc: 0
n_value: 0
- n_strx: 298
n_type: 0x20
n_sect: 0
n_desc: 0
n_value: 0
- n_strx: 309
n_type: 0x20
n_sect: 0
n_desc: 0
n_value: 0
- n_strx: 1
n_type: 0x64
n_sect: 1
n_desc: 0
n_value: 0
- n_strx: 325
n_type: 0x1E
n_sect: 1
n_desc: 0
n_value: 3992
- n_strx: 333
n_type: 0x1E
n_sect: 1
n_desc: 0
n_value: 4018
- n_strx: 361
n_type: 0x1E
n_sect: 1
n_desc: 0
n_value: 4035
- n_strx: 392
n_type: 0x1E
n_sect: 1
n_desc: 0
n_value: 4052
- n_strx: 417
n_type: 0x1E
n_sect: 1
n_desc: 0
n_value: 4068
- n_strx: 424
n_type: 0x1E
n_sect: 2
n_desc: 0
n_value: 4296
- n_strx: 435
n_type: 0x1E
n_sect: 2
n_desc: 0
n_value: 4304
- n_strx: 446
n_type: 0x1E
n_sect: 2
n_desc: 0
n_value: 4312
- n_strx: 2
n_type: 0x0F
n_sect: 2
n_desc: 0
n_value: 4096
- n_strx: 13
n_type: 0x0F
n_sect: 1
n_desc: 0
n_value: 3936
- n_strx: 27
n_type: 0x0F
n_sect: 1
n_desc: 0
n_value: 3968
StringTable:
- ' '
- _kmod_info
- _mykext_start
- _mykext_stop
- /tmp/mykext/build/mykext/Build/Intermediates.noindex/mykext.build/Debug/mykext.build/DerivedSources/
- mykext_info.c
- /tmp/mykext/build/mykext/Build/Intermediates.noindex/mykext.build/Debug/mykext.build/Objects-normal/x86_64/mykext_info.o
- _kmod_info
- __realmain
- __antimain
- __kext_apple_cc
- __start
- _OSKextGetCurrentIdentifier
- _OSKextGetCurrentVersionString
- _OSKextGetCurrentLoadTag
- __stop
- __realmain
- __antimain
- __kext_apple_cc
- ''
- ''
...