Revert "[lldb] Remove the global platform list"

It makes module dependencies loopier.

This reverts commits 49cffe3c7f and
ffb9429b6f.
This commit is contained in:
Pavel Labath
2022-03-09 18:12:28 +01:00
parent 28f67aed9d
commit d65e6ff2f1
18 changed files with 191 additions and 295 deletions

View File

@@ -92,61 +92,3 @@ class DebuggerAPITestCase(TestBase):
# Test the local property again, is it set to new_cache_line_size?
self.assertEqual(get_cache_line_size(), new_cache_line_size)
def test_CreateTarget_platform(self):
exe = self.getBuildArtifact("a.out")
self.yaml2obj("elf.yaml", exe)
error = lldb.SBError()
target1 = self.dbg.CreateTarget(exe, None, "remote-linux",
False, error)
self.assertSuccess(error)
platform1 = target1.GetPlatform()
platform1.SetWorkingDirectory("/foo/bar")
# Reuse a platform if it matches the currently selected one...
target2 = self.dbg.CreateTarget(exe, None, "remote-linux",
False, error)
self.assertSuccess(error)
platform2 = target2.GetPlatform()
# On windows, the path will come back as \foo\bar. That's most likely a
# bug, but this is not related to what we're testing here.
self.assertIn(platform2.GetWorkingDirectory(), ["/foo/bar", r"\foo\bar"])
# ... but create a new one if it doesn't.
self.dbg.SetSelectedPlatform(lldb.SBPlatform("remote-windows"))
target3 = self.dbg.CreateTarget(exe, None, "remote-linux",
False, error)
self.assertSuccess(error)
platform3 = target3.GetPlatform()
self.assertIsNone(platform3.GetWorkingDirectory())
def test_CreateTarget_arch(self):
exe = self.getBuildArtifact("a.out")
if lldbplatformutil.getHostPlatform() == 'linux':
self.yaml2obj("macho.yaml", exe)
arch = "x86_64-apple-macosx"
platform_name = "remote-macosx"
else:
self.yaml2obj("elf.yaml", exe)
arch = "x86_64-pc-linux"
platform_name = "remote-linux"
fbsd = lldb.SBPlatform("remote-freebsd")
self.dbg.SetSelectedPlatform(fbsd)
error = lldb.SBError()
target1 = self.dbg.CreateTarget(exe, arch, None, False, error)
self.assertSuccess(error)
platform1 = target1.GetPlatform()
self.assertEqual(platform1.GetName(), platform_name)
platform1.SetWorkingDirectory("/foo/bar")
# Reuse a platform even if it is not currently selected.
self.dbg.SetSelectedPlatform(fbsd)
target2 = self.dbg.CreateTarget(exe, arch, None, False, error)
self.assertSuccess(error)
platform2 = target2.GetPlatform()
self.assertEqual(platform2.GetName(), platform_name)
# On windows, the path will come back as \foo\bar. That's most likely a
# bug, but this is not related to what we're testing here.
self.assertIn(platform2.GetWorkingDirectory(), ["/foo/bar", r"\foo\bar"])

View File

@@ -1,35 +0,0 @@
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
Sections:
- Name: .text
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
Address: 0x1000
AddressAlign: 0x4
Content: "c3c3c3c3"
- Name: .data
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC ]
Address: 0x2000
AddressAlign: 0x4
Content: "3232"
ProgramHeaders:
- Type: PT_LOAD
Flags: [ PF_X, PF_R ]
VAddr: 0x1000
PAddr: 0x1000
Align: 0x4
FirstSec: .text
LastSec: .text
- Type: PT_LOAD
Flags: [ PF_R, PF_W ]
VAddr: 0x2000
PAddr: 0x1004
Align: 0x4
FirstSec: .data
LastSec: .data

View File

@@ -1,42 +0,0 @@
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
cpusubtype: 0x00000003
filetype: 0x00000001
ncmds: 4
sizeofcmds: 1160
flags: 0x00002000
reserved: 0x00000000
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 1032
segname: ''
vmaddr: 0
vmsize: 744
fileoff: 1192
filesize: 744
maxprot: 7
initprot: 7
nsects: 12
flags: 0
Sections:
- sectname: __text
segname: __TEXT
addr: 0x0000000000000000
size: 22
offset: 0x000004A8
align: 4
reloff: 0x00000000
nreloc: 0
flags: 0x80000400
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- cmd: LC_BUILD_VERSION
cmdsize: 24
platform: 1
minos: 658944
sdk: 658944
ntools: 0
...

View File

@@ -25,29 +25,6 @@ class SBPlatformAPICase(TestBase):
plat = lldb.SBPlatform("remote-linux") # arbitrary choice
self.assertTrue(plat)
plat.SetSDKRoot(self.getBuildDir())
self.dbg.SetSelectedPlatform(plat)
self.dbg.SetCurrentPlatform("remote-linux")
self.expect("platform status",
substrs=["Sysroot:", self.getBuildDir()])
def test_SetCurrentPlatform_floating(self):
# floating platforms cannot be referenced by name until they are
# associated with a debugger
floating_platform = lldb.SBPlatform("remote-netbsd")
floating_platform.SetWorkingDirectory(self.getBuildDir())
self.assertSuccess(self.dbg.SetCurrentPlatform("remote-netbsd"))
dbg_platform = self.dbg.GetSelectedPlatform()
self.assertEqual(dbg_platform.GetName(), "remote-netbsd")
self.assertIsNone(dbg_platform.GetWorkingDirectory())
def test_SetCurrentPlatform_associated(self):
# associated platforms are found by name-based lookup
floating_platform = lldb.SBPlatform("remote-netbsd")
floating_platform.SetWorkingDirectory(self.getBuildDir())
orig_platform = self.dbg.GetSelectedPlatform()
self.dbg.SetSelectedPlatform(floating_platform)
self.dbg.SetSelectedPlatform(orig_platform)
self.assertSuccess(self.dbg.SetCurrentPlatform("remote-netbsd"))
dbg_platform = self.dbg.GetSelectedPlatform()
self.assertEqual(dbg_platform.GetName(), "remote-netbsd")
self.assertEqual(dbg_platform.GetWorkingDirectory(), self.getBuildDir())