diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/expression_command/save_jit_objects')
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; +} |