diff options
author | Sean Callanan <scallanan@apple.com> | 2016-09-26 20:18:51 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2016-09-26 20:18:51 +0000 |
commit | 5deb06eb43c73ded9debc59a87947a91649c94c0 (patch) | |
tree | 0e2413150b07544fb54fae4fff70ddb62036af6c /lldb/packages/Python/lldbsuite/test | |
parent | d543def21097bc245dfc009aee421e8511b24b57 (diff) | |
download | bcm5719-llvm-5deb06eb43c73ded9debc59a87947a91649c94c0.tar.gz bcm5719-llvm-5deb06eb43c73ded9debc59a87947a91649c94c0.zip |
Added a setting that enables saving all .o files from a given JIT expression.
This allows debugging of the JIT and other analyses of the internals of the
expression parser. I've also added a testcase that verifies that the setting
works correctly when off and on.
llvm-svn: 282434
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
3 files changed, 76 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/Makefile new file mode 100644 index 00000000000..0d70f259501 --- /dev/null +++ b/lldb/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/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py b/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py new file mode 100644 index 00000000000..3ca7f349ca0 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py @@ -0,0 +1,57 @@ +""" +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__) + + 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/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/main.c b/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/main.c new file mode 100644 index 00000000000..ec4c943dfe3 --- /dev/null +++ b/lldb/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; +} |