import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil class TestArm64eAttach(TestBase): NO_DEBUG_INFO_TESTCASE = True # On Darwin systems, arch arm64e means ARMv8.3 with ptrauth ABI used. @skipIf(archs=no_match(["arm64e"])) def test(self): # Skip this test if not running on AArch64 target that supports PAC if not self.isAArch64PAuth(): self.skipTest("Target must support pointer authentication.") self.build() popen = self.spawnSubprocess(self.getBuildArtifact(), []) # This simulates how Xcode attaches to a process by pid/name. error = lldb.SBError() target = self.dbg.CreateTarget("", "arm64", "", True, error) listener = lldb.SBListener("my.attach.listener") process = target.AttachToProcessWithID(listener, popen.pid, error) self.assertSuccess(error) self.assertTrue(process, PROCESS_IS_VALID) self.assertEqual(target.GetTriple().split('-')[0], "arm64e", "target triple is updated correctly") self.expect('process plugin packet send qProcessInfo', "debugserver returns correct triple", substrs=['cputype:100000c', 'cpusubtype:2', 'ptrsize:8']) error = process.Kill() self.assertSuccess(error)