aboutsummaryrefslogtreecommitdiff
path: root/packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py')
-rw-r--r--packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py b/packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py
new file mode 100644
index 000000000000..7f796971d0ed
--- /dev/null
+++ b/packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py
@@ -0,0 +1,58 @@
+"""
+Test that LLDB can emit JIT objects when the appropriate setting is enabled
+"""
+
+from __future__ import print_function
+
+import os
+import time
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+def enumerateJITFiles():
+ return [f for f in os.listdir(os.getcwd()) if f.startswith("jit")]
+
+def countJITFiles():
+ return len(enumerateJITFiles())
+
+def cleanJITFiles():
+ for j in enumerateJITFiles():
+ os.remove(j)
+ return
+
+class SaveJITObjectsTestCase(TestBase):
+ mydir = TestBase.compute_mydir(__file__)
+
+ @expectedFailureAll(oslist=["windows"])
+ def test_save_jit_objects(self):
+ self.build()
+ src_file = "main.c"
+ src_file_spec = lldb.SBFileSpec(src_file)
+
+ exe_path = os.path.join(os.getcwd(), "a.out")
+ target = self.dbg.CreateTarget(exe_path)
+
+ breakpoint = target.BreakpointCreateBySourceRegex(
+ "break", src_file_spec)
+
+ process = target.LaunchSimple(None, None,
+ self.get_process_working_directory())
+
+ thread = process.GetSelectedThread()
+ frame = thread.GetSelectedFrame()
+
+ cleanJITFiles()
+ frame.EvaluateExpression("(void*)malloc(0x1)")
+ self.assertTrue(countJITFiles() == 0,
+ "No files emitted with save-jit-objects=false")
+
+ self.runCmd("settings set target.save-jit-objects true")
+ frame.EvaluateExpression("(void*)malloc(0x1)")
+ jit_files_count = countJITFiles()
+ cleanJITFiles()
+ self.assertTrue(jit_files_count != 0,
+ "At least one file emitted with save-jit-objects=true")
+
+ process.Kill()