aboutsummaryrefslogtreecommitdiff
path: root/packages/Python/lldbsuite/test/expression_command/save_jit_objects
diff options
context:
space:
mode:
Diffstat (limited to 'packages/Python/lldbsuite/test/expression_command/save_jit_objects')
-rw-r--r--packages/Python/lldbsuite/test/expression_command/save_jit_objects/Makefile5
-rw-r--r--packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py58
-rw-r--r--packages/Python/lldbsuite/test/expression_command/save_jit_objects/main.c14
3 files changed, 77 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/expression_command/save_jit_objects/Makefile b/packages/Python/lldbsuite/test/expression_command/save_jit_objects/Makefile
new file mode 100644
index 000000000000..0d70f2595019
--- /dev/null
+++ b/packages/Python/lldbsuite/test/expression_command/save_jit_objects/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../make
+
+C_SOURCES := main.c
+
+include $(LEVEL)/Makefile.rules
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()
diff --git a/packages/Python/lldbsuite/test/expression_command/save_jit_objects/main.c b/packages/Python/lldbsuite/test/expression_command/save_jit_objects/main.c
new file mode 100644
index 000000000000..ec4c943dfe39
--- /dev/null
+++ b/packages/Python/lldbsuite/test/expression_command/save_jit_objects/main.c
@@ -0,0 +1,14 @@
+//===-- main.c --------------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+int main (int argc, char const *argv[])
+{
+ const char* foo = "Hello world"; // break here
+ return 0;
+}