From 6961e87847cd39a65ecde0342ec5c7d1dee9622c Mon Sep 17 00:00:00 2001 From: Sean Callanan Date: Wed, 1 Sep 2010 00:58:00 +0000 Subject: Added support for dynamic sanity checking in expressions. Values used by the expression are checked by validation functions which cause the program to crash if the values are unsafe. Major changes: - Added IRDynamicChecks.[ch], which contains the core code related to this feature - Modified CommandObjectExpression to install the validator functions into the target process. - Added an accessor to Process that gets/sets the helper functions llvm-svn: 112690 --- lldb/source/Commands/CommandObjectExpression.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'lldb/source/Commands/CommandObjectExpression.cpp') diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp index b29c0c7..9026b74 100644 --- a/lldb/source/Commands/CommandObjectExpression.cpp +++ b/lldb/source/Commands/CommandObjectExpression.cpp @@ -190,6 +190,27 @@ bool CommandObjectExpression::EvaluateExpression (const char *expr, bool bare, Stream &output_stream, Stream &error_stream, CommandReturnObject *result) { + if (!m_exe_ctx.process) + { + error_stream.Printf ("Execution context doesn't contain a process"); + return false; + } + + if (!m_exe_ctx.process->GetDynamicCheckers()) + { + DynamicCheckerFunctions *dynamic_checkers = new DynamicCheckerFunctions(); + + StreamString install_errors; + + if (!dynamic_checkers->Install(install_errors, m_exe_ctx)) + { + error_stream.Printf("Couldn't install dynamic checkers into the execution context: %s", install_errors.GetData()); + return false; + } + + m_exe_ctx.process->SetDynamicCheckers(dynamic_checkers); + } + ClangUserExpression user_expression (expr); if (!user_expression.Parse (error_stream, m_exe_ctx)) -- cgit v1.1