Mercurial > hg > CbC > CbC_llvm
comparison lldb/test/API/functionalities/jitloader_gdb/TestJITLoaderGDB.py @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | 2e18cbf3894f |
comparison
equal
deleted
inserted
replaced
147:c2174574ed3a | 150:1d019706d866 |
---|---|
1 """Test for the JITLoaderGDB interface""" | |
2 | |
3 | |
4 import unittest2 | |
5 import os | |
6 import lldb | |
7 from lldbsuite.test import lldbutil | |
8 from lldbsuite.test.decorators import * | |
9 from lldbsuite.test.lldbtest import * | |
10 | |
11 file_index = 0 | |
12 | |
13 class JITLoaderGDBTestCase(TestBase): | |
14 | |
15 mydir = TestBase.compute_mydir(__file__) | |
16 | |
17 @skipTestIfFn( | |
18 lambda: "Skipped because the test crashes the test runner", | |
19 bugnumber="llvm.org/pr24702") | |
20 @unittest2.expectedFailure("llvm.org/pr24702") | |
21 def test_bogus_values(self): | |
22 """Test that we handle inferior misusing the GDB JIT interface""" | |
23 self.build() | |
24 exe = self.getBuildArtifact("a.out") | |
25 | |
26 # Create a target by the debugger. | |
27 target = self.dbg.CreateTarget(exe) | |
28 self.assertTrue(target, VALID_TARGET) | |
29 | |
30 # launch the process, do not stop at entry point. | |
31 process = target.LaunchSimple( | |
32 None, None, self.get_process_working_directory()) | |
33 self.assertTrue(process, PROCESS_IS_VALID) | |
34 | |
35 # The inferior will now pass bogus values over the interface. Make sure | |
36 # we don't crash. | |
37 | |
38 self.assertEqual(process.GetState(), lldb.eStateExited) | |
39 self.assertEqual(process.GetExitStatus(), 0) | |
40 | |
41 def gen_log_file(self): | |
42 global file_index | |
43 ++file_index | |
44 logfile = os.path.join( | |
45 self.getBuildDir(), | |
46 "jitintgdb-" + self.getArchitecture() + "-" + | |
47 str(file_index) + ".txt") | |
48 | |
49 def cleanup(): | |
50 if os.path.exists(logfile): | |
51 os.unlink(logfile) | |
52 self.addTearDownHook(cleanup) | |
53 return logfile | |
54 | |
55 def test_jit_int_default(self): | |
56 self.expect("settings show plugin.jit-loader.gdb.enable", | |
57 substrs=["plugin.jit-loader.gdb.enable (enum) = default"]) | |
58 | |
59 @skipIfWindows # This test fails on Windows during C code build | |
60 def test_jit_int_on(self): | |
61 """Tests interface with 'enable' settings 'on'""" | |
62 self.build() | |
63 exe = self.getBuildArtifact("simple") | |
64 | |
65 logfile = self.gen_log_file() | |
66 self.runCmd("log enable -f %s lldb jit" % (logfile)) | |
67 self.runCmd("settings set plugin.jit-loader.gdb.enable on") | |
68 def cleanup(): | |
69 self.runCmd("log disable lldb") | |
70 self.runCmd("settings set plugin.jit-loader.gdb.enable default") | |
71 self.addTearDownHook(cleanup) | |
72 | |
73 # launch the process | |
74 target = self.dbg.CreateTarget(exe) | |
75 self.assertTrue(target, VALID_TARGET) | |
76 process = target.LaunchSimple( | |
77 None, None, self.get_process_working_directory()) | |
78 self.assertTrue(process, PROCESS_IS_VALID) | |
79 | |
80 self.assertEqual(process.GetState(), lldb.eStateExited) | |
81 self.assertEqual(process.GetExitStatus(), 0) | |
82 | |
83 logcontent = "" | |
84 if os.path.exists(logfile): | |
85 logcontent = open(logfile).read() | |
86 self.assertIn( | |
87 "SetJITBreakpoint setting JIT breakpoint", logcontent) | |
88 | |
89 @skipIfWindows # This test fails on Windows during C code build | |
90 def test_jit_int_off(self): | |
91 """Tests interface with 'enable' settings 'off'""" | |
92 self.build() | |
93 exe = self.getBuildArtifact("simple") | |
94 | |
95 logfile = self.gen_log_file() | |
96 self.runCmd("log enable -f %s lldb jit" % (logfile)) | |
97 self.runCmd("settings set plugin.jit-loader.gdb.enable off") | |
98 def cleanup(): | |
99 self.runCmd("log disable lldb") | |
100 self.runCmd("settings set plugin.jit-loader.gdb.enable default") | |
101 self.addTearDownHook(cleanup) | |
102 | |
103 # launch the process | |
104 target = self.dbg.CreateTarget(exe) | |
105 self.assertTrue(target, VALID_TARGET) | |
106 process = target.LaunchSimple( | |
107 None, None, self.get_process_working_directory()) | |
108 self.assertTrue(process, PROCESS_IS_VALID) | |
109 | |
110 self.assertEqual(process.GetState(), lldb.eStateExited) | |
111 self.assertEqual(process.GetExitStatus(), 0) | |
112 | |
113 if os.path.exists(logfile): | |
114 logcontent = open(logfile).read() | |
115 self.assertNotIn( | |
116 "SetJITBreakpoint setting JIT breakpoint", logcontent) | |
117 else: | |
118 self.assertTrue(false) |