1"""Test that Mach-O armv7/arm64 corefile register contexts are read by lldb.""" 2 3 4import os 5import re 6import subprocess 7 8import lldb 9from lldbsuite.test.decorators import * 10from lldbsuite.test.lldbtest import * 11from lldbsuite.test import lldbutil 12 13 14class TestArmMachoCorefileRegctx(TestBase): 15 NO_DEBUG_INFO_TESTCASE = True 16 17 @skipUnlessDarwin 18 def setUp(self): 19 TestBase.setUp(self) 20 self.build() 21 self.create_corefile = self.getBuildArtifact("a.out") 22 self.corefile = self.getBuildArtifact("core") 23 24 def test_armv7_corefile(self): 25 ### Create corefile 26 retcode = call(self.create_corefile + " armv7 " + self.corefile, shell=True) 27 28 target = self.dbg.CreateTarget("") 29 err = lldb.SBError() 30 process = target.LoadCore(self.corefile) 31 self.assertTrue(process.IsValid()) 32 thread = process.GetSelectedThread() 33 frame = thread.GetSelectedFrame() 34 35 lr = frame.FindRegister("lr") 36 self.assertTrue(lr.IsValid()) 37 self.assertEqual(lr.GetValueAsUnsigned(), 0x000F0000) 38 39 pc = frame.FindRegister("pc") 40 self.assertTrue(pc.IsValid()) 41 self.assertEqual(pc.GetValueAsUnsigned(), 0x00100000) 42 43 exception = frame.FindRegister("exception") 44 self.assertTrue(exception.IsValid()) 45 self.assertEqual(exception.GetValueAsUnsigned(), 0x00003F5C) 46 47 def test_arm64_corefile(self): 48 ### Create corefile 49 retcode = call(self.create_corefile + " arm64 " + self.corefile, shell=True) 50 51 target = self.dbg.CreateTarget("") 52 err = lldb.SBError() 53 process = target.LoadCore(self.corefile) 54 self.assertTrue(process.IsValid()) 55 thread = process.GetSelectedThread() 56 frame = thread.GetSelectedFrame() 57 58 lr = frame.FindRegister("lr") 59 self.assertTrue(lr.IsValid()) 60 self.assertEqual(lr.GetValueAsUnsigned(), 0x000000018CD97F28) 61 62 pc = frame.FindRegister("pc") 63 self.assertTrue(pc.IsValid()) 64 self.assertEqual(pc.GetValueAsUnsigned(), 0x0000000100003F5C) 65 66 exception = frame.FindRegister("far") 67 self.assertTrue(exception.IsValid()) 68 self.assertEqual(exception.GetValueAsUnsigned(), 0x0000000100003F5C) 69