brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · a2890cd Raw
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