Skip to content

Commit 29ee61c

Browse files
[lldb] convert TestJitBreakpoint to API test
1 parent 7bced74 commit 29ee61c

File tree

4 files changed

+64
-22
lines changed

4 files changed

+64
-22
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CXX_SOURCES := jitbp.cpp
2+
3+
include Makefile.rules
4+
5+
jitbp.ll: jitbp.cpp
6+
$(CXX) -g -S -emit-llvm --target=x86_64-unknown-unknown-elf \
7+
-o $@ $<
8+
9+
all: jitbp.ll
10+
11+
clean::
12+
rm -f jitbp.ll
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
"""
2+
Test that pending breakpoints resolve for JITted code with mcjit and rtdyld.
3+
"""
4+
5+
import lldb
6+
from lldbsuite.test.decorators import *
7+
from lldbsuite.test.lldbtest import *
8+
from lldbsuite.test import lldbutil
9+
10+
class TestJitBreakpoint(TestBase):
11+
def setUp(self):
12+
TestBase.setUp(self)
13+
self.ll = self.getBuildArtifact("jitbp.ll")
14+
15+
@skipUnlessArch("x86_64")
16+
@expectedFailureAll(oslist=["windows"])
17+
def test_jit_breakpoints(self):
18+
self.build()
19+
self.do_test("--jit-kind=mcjit")
20+
self.do_test("--jit-linker=rtdyld")
21+
22+
def do_test(self, jit_flag: str):
23+
self.dbg.SetAsync(False)
24+
25+
self.dbg.HandleCommand("settings set plugin.jit-loader.gdb.enable on")
26+
27+
lli_path = self.getBuildArtifact("lli")
28+
self.assertTrue(os.path.exists(lli_path), "lli not found in build artifacts")
29+
target = self.dbg.CreateTarget(lli_path)
30+
self.assertTrue(target.IsValid())
31+
32+
bp = target.BreakpointCreateByName("jitbp")
33+
self.assertTrue(bp.IsValid())
34+
self.assertEqual(bp.GetNumLocations(), 0, "Expected a pending breakpoint")
35+
36+
launch_info = target.GetLaunchInfo()
37+
launch_info.SetArguments([jit_flag, self.ll], True)
38+
39+
error = lldb.SBError()
40+
process = target.Launch(launch_info, error)
41+
self.assertTrue(process.IsValid())
42+
self.assertTrue(error.Success(), error.GetCString())
43+
44+
self.assertEqual(process.GetState(), lldb.eStateStopped)
45+
46+
thread = process.GetSelectedThread()
47+
frame = thread.GetSelectedFrame()
48+
self.assertIn("jitbp", frame.GetFunctionName())
49+
50+
self.assertGreaterEqual(bp.GetNumLocations(), 1, "Breakpoint must be resolved after JIT loads code")
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
int jitbp() { return 0; }
2+
int main() { return jitbp(); }

lldb/test/Shell/Breakpoint/jit-loader_rtdyld_elf.test

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)