Author: Raphael Isemann Date: 2020-04-01T09:39:24+02:00 New Revision: 15f34ff2d8976f9211c6112531355ed5e2a92ea0
URL: https://github.com/llvm/llvm-project/commit/15f34ff2d8976f9211c6112531355ed5e2a92ea0 DIFF: https://github.com/llvm/llvm-project/commit/15f34ff2d8976f9211c6112531355ed5e2a92ea0.diff LOG: [lldb] Allow expect_expr without a running target Summary: If we don't have a current frame then we can still run many expressions as long as we have an active target. With this patch `expect_expr` directly calls the target's EvaluateExpression function when there is no current frame. Reviewers: labath Reviewed By: labath Subscribers: JDevlieghere Differential Revision: https://reviews.llvm.org/D77197 Added: Modified: lldb/packages/Python/lldbsuite/test/lldbtest.py lldb/test/API/commands/expression/call-function/TestCallBuiltinFunction.py Removed: ################################################################################ diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py index 966d460ea13d..5058594505f5 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbtest.py +++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -2414,9 +2414,12 @@ def expect_expr( # Set the usual default options for normal expressions. options.SetIgnoreBreakpoints(True) - options.SetLanguage(frame.GuessLanguage()) - eval_result = frame.EvaluateExpression(expr, options) + if self.frame().IsValid(): + options.SetLanguage(frame.GuessLanguage()) + eval_result = self.frame().EvaluateExpression(expr, options) + else: + eval_result = self.target().EvaluateExpression(expr, options) if not eval_result.GetError().Success(): self.assertTrue(eval_result.GetError().Success(), diff --git a/lldb/test/API/commands/expression/call-function/TestCallBuiltinFunction.py b/lldb/test/API/commands/expression/call-function/TestCallBuiltinFunction.py index 31478884ad7d..55ba2717c013 100644 --- a/lldb/test/API/commands/expression/call-function/TestCallBuiltinFunction.py +++ b/lldb/test/API/commands/expression/call-function/TestCallBuiltinFunction.py @@ -17,24 +17,10 @@ class ExprCommandCallBuiltinFunction(TestBase): # Builtins are expanded by Clang, so debug info shouldn't matter. NO_DEBUG_INFO_TESTCASE = True - def setUp(self): - TestBase.setUp(self) - # Find the line number to break for main.c. - self.line = line_number( - 'main.cpp', - '// Please test these expressions while stopped at this line:') - def test(self): self.build() - # Set breakpoint in main and run exe - self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) - lldbutil.run_break_set_by_file_and_line( - self, "main.cpp", self.line, num_expected_locations=-1, loc_exact=True) - - self.runCmd("run", RUN_SUCCEEDED) - - # Test diff erent builtin functions. + target = self.dbg.CreateTarget(self.getBuildArtifact("a.out")) self.expect_expr("__builtin_isinf(0.0f)", result_type="int", result_value="0") self.expect_expr("__builtin_isnormal(0.0f)", result_type="int", result_value="0") _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits