| """Test that corefiles with LC_NOTE "addrable bits" load command, creating and reading.""" | |
| import os | |
| import re | |
| import subprocess | |
| import lldb | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| class TestAddrableBitsCorefile(TestBase): | |
| NO_DEBUG_INFO_TESTCASE = True | |
| def initial_setup(self): | |
| self.build() | |
| self.exe = self.getBuildArtifact("a.out") | |
| self.corefile = self.getBuildArtifact("corefile") | |
| @skipIf(archs=no_match(["arm64e"])) | |
| @skipUnlessDarwin | |
| def test_lc_note_addrable_bits(self): | |
| self.initial_setup() | |
| self.target = self.dbg.CreateTarget(self.exe) | |
| err = lldb.SBError() | |
| (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint( | |
| self, "break here", lldb.SBFileSpec("main.c") | |
| ) | |
| self.assertTrue(process.IsValid()) | |
| found_main = False | |
| for f in thread.frames: | |
| if f.GetFunctionName() == "main": | |
| found_main = True | |
| self.assertTrue(found_main) | |
| cmdinterp = self.dbg.GetCommandInterpreter() | |
| res = lldb.SBCommandReturnObject() | |
| cmdinterp.HandleCommand("process save-core %s" % self.corefile, res) | |
| self.assertTrue(res.Succeeded(), True) | |
| process.Kill() | |
| self.dbg.DeleteTarget(target) | |
| target = self.dbg.CreateTarget("") | |
| process = target.LoadCore(self.corefile) | |
| self.assertTrue(process.IsValid(), True) | |
| thread = process.GetSelectedThread() | |
| found_main = False | |
| for f in thread.frames: | |
| if f.GetFunctionName() == "main": | |
| found_main = True | |
| self.assertTrue(found_main) |