68 lines · python
1"""Test that Mach-O armv7/arm64 corefile register contexts are read by lldb."""2 3import os4import re5import subprocess6 7import lldb8from lldbsuite.test.decorators import *9from lldbsuite.test.lldbtest import *10from lldbsuite.test import lldbutil11 12 13class TestArmMachoCorefileRegctx(TestBase):14 NO_DEBUG_INFO_TESTCASE = True15 16 def test_armv7_corefile(self):17 ### Create corefile18 corefile = self.getBuildArtifact("core")19 self.yaml2macho_core("armv7m.yaml", corefile)20 21 target = self.dbg.CreateTarget("")22 err = lldb.SBError()23 process = target.LoadCore(corefile)24 self.assertTrue(process.IsValid())25 thread = process.GetSelectedThread()26 frame = thread.GetSelectedFrame()27 28 lr = frame.FindRegister("lr")29 self.assertTrue(lr.IsValid())30 self.assertEqual(lr.GetValueAsUnsigned(), 0x000F0000)31 32 pc = frame.FindRegister("pc")33 self.assertTrue(pc.IsValid())34 self.assertEqual(pc.GetValueAsUnsigned(), 0x00100000)35 36 exception = frame.FindRegister("exception")37 self.assertTrue(exception.IsValid())38 self.assertEqual(exception.GetValueAsUnsigned(), 0x00003F5C)39 40 # read 4 bytes starting at $sp-1 (an odd/unaligned address on this arch),41 # formatted hex.42 # aka `mem read -f x -s 1 -c 4 $sp-1`43 self.expect("x/4bx $sp-1", substrs=["0x000dffff", "0x1f 0x20 0x21 0x22"])44 45 def test_arm64_corefile(self):46 ### Create corefile47 corefile = self.getBuildArtifact("core")48 self.yaml2macho_core("arm64.yaml", corefile)49 50 target = self.dbg.CreateTarget("")51 err = lldb.SBError()52 process = target.LoadCore(corefile)53 self.assertTrue(process.IsValid())54 thread = process.GetSelectedThread()55 frame = thread.GetSelectedFrame()56 57 lr = frame.FindRegister("lr")58 self.assertTrue(lr.IsValid())59 self.assertEqual(lr.GetValueAsUnsigned(), 0x000000018CD97F28)60 61 pc = frame.FindRegister("pc")62 self.assertTrue(pc.IsValid())63 self.assertEqual(pc.GetValueAsUnsigned(), 0x0000000100003F5C)64 65 exception = frame.FindRegister("far")66 self.assertTrue(exception.IsValid())67 self.assertEqual(exception.GetValueAsUnsigned(), 0x0000000100003F5C)68