Index: packages/Python/lldbsuite/test/lang/cpp/lambdas/TestLambdas.py =================================================================== --- packages/Python/lldbsuite/test/lang/cpp/lambdas/TestLambdas.py +++ packages/Python/lldbsuite/test/lang/cpp/lambdas/TestLambdas.py @@ -1,4 +1,4 @@ from lldbsuite.test import lldbinline from lldbsuite.test import decorators -lldbinline.MakeInlineTest(__file__, globals(), []) +lldbinline.MakeInlineTest(__file__, globals(), [lldbinline.expectedFailureAll(oslist=["windows"])]) Index: packages/Python/lldbsuite/test/lang/cpp/lambdas/main.cpp =================================================================== --- packages/Python/lldbsuite/test/lang/cpp/lambdas/main.cpp +++ packages/Python/lldbsuite/test/lang/cpp/lambdas/main.cpp @@ -11,7 +11,7 @@ int main (int argc, char const *argv[]) { - printf("Stop here\n"); //% self.runCmd("expression auto $add = [](int a, int b) { return a + b };") - //% self.expect("expression $add(2,3)", substrs = ['= 5']) - return 0; + printf("Stop here\n"); //% self.runCmd("expression auto $add = [](int a, int b) { return a + b; }") + //% self.expect("expression $add(2,3)", substrs = ['= 5']) + return 0; } Index: packages/Python/lldbsuite/test/lldbinline.py =================================================================== --- packages/Python/lldbsuite/test/lldbinline.py +++ packages/Python/lldbsuite/test/lldbinline.py @@ -186,7 +186,7 @@ elif hasattr(decorators, '__call__'): tmp = decorators(tmp) return tmp - + def MakeInlineTest(__file, __globals, decorators=None): # Adjust the filename if it ends in .pyc. We want filenames to @@ -200,13 +200,17 @@ InlineTest.mydir = TestBase.compute_mydir(__file) test_name, _ = os.path.splitext(file_basename) - # Build the test case + # Build the test case test = type(test_name, (InlineTest,), {'using_dsym': None}) test.name = test_name - test.test_with_dsym = ApplyDecoratorsToFunction(test._InlineTest__test_with_dsym, decorators) - test.test_with_dwarf = ApplyDecoratorsToFunction(test._InlineTest__test_with_dwarf, decorators) - test.test_with_dwo = ApplyDecoratorsToFunction(test._InlineTest__test_with_dwo, decorators) + target_platform = lldb.DBG.GetSelectedPlatform().GetTriple().split('-')[2] + if test_categories.is_supported_on_platform("dsym", target_platform): + test.test_with_dsym = ApplyDecoratorsToFunction(test._InlineTest__test_with_dsym, decorators) + if test_categories.is_supported_on_platform("dwarf", target_platform): + test.test_with_dwarf = ApplyDecoratorsToFunction(test._InlineTest__test_with_dwarf, decorators) + if test_categories.is_supported_on_platform("dwo", target_platform): + test.test_with_dwo = ApplyDecoratorsToFunction(test._InlineTest__test_with_dwo, decorators) # Add the test case to the globals, and hide InlineTest __globals.update({test_name : test}) Index: source/Expression/IRInterpreter.cpp =================================================================== --- source/Expression/IRInterpreter.cpp +++ source/Expression/IRInterpreter.cpp @@ -477,6 +477,7 @@ static const char *memory_read_error = "Interpreter couldn't read from memory"; static const char *infinite_loop_error = "Interpreter ran for too many cycles"; //static const char *bad_result_error = "Result of expression is in bad memory"; +static const char *too_many_functions_error = "Interpreter doesn't handle modules with multiple function bodies."; static bool CanResolveConstant (llvm::Constant *constant) @@ -506,7 +507,7 @@ Constant *base = dyn_cast(*op_cursor); if (!base) return false; - + return CanResolveConstant(base); } } @@ -535,7 +536,13 @@ if (fi->begin() != fi->end()) { if (saw_function_with_body) + { + if (log) + log->Printf("More than one function in the module has a body"); + error.SetErrorToGenericError(); + error.SetErrorString(too_many_functions_error); return false; + } saw_function_with_body = true; } } @@ -664,7 +671,7 @@ return false; } } - + if (Constant *constant = llvm::dyn_cast(operand)) { if (!CanResolveConstant(constant)) @@ -680,7 +687,8 @@ } - return true;} + return true; +} bool IRInterpreter::Interpret (llvm::Module &module,