diff options
Diffstat (limited to 'lldb/source/Expression/ClangExpressionParser.cpp')
-rw-r--r-- | lldb/source/Expression/ClangExpressionParser.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lldb/source/Expression/ClangExpressionParser.cpp b/lldb/source/Expression/ClangExpressionParser.cpp index 77fff8a183f..adc5a9ecb7e 100644 --- a/lldb/source/Expression/ClangExpressionParser.cpp +++ b/lldb/source/Expression/ClangExpressionParser.cpp @@ -21,6 +21,7 @@ #include "lldb/Expression/IRToDWARF.h" #include "lldb/Expression/RecordingMemoryManager.h" #include "lldb/Target/ExecutionContext.h" +#include "lldb/Target/ObjCLanguageRuntime.h" #include "lldb/Target/Process.h" #include "lldb/Target/Target.h" @@ -177,6 +178,7 @@ static FrontendAction *CreateFrontendAction(CompilerInstance &CI) { //===----------------------------------------------------------------------===// ClangExpressionParser::ClangExpressionParser(const char *target_triple, + Process *process, ClangExpression &expr) : m_expr(expr), m_target_triple (), @@ -211,10 +213,18 @@ ClangExpressionParser::ClangExpressionParser(const char *target_triple, // Setup objective C m_compiler->getLangOpts().ObjC1 = true; m_compiler->getLangOpts().ObjC2 = true; - // We need to enable the fragile ABI for things target triples that - // support it. -// m_compiler->getLangOpts().ObjCNonFragileABI = true; // NOT i386 -// m_compiler->getLangOpts().ObjCNonFragileABI2 = true; // NOT i386 + + if (process) + { + if (process->GetObjCLanguageRuntime()) + { + if (process->GetObjCLanguageRuntime()->GetRuntimeVersion() == lldb::eAppleObjC_V2) + { + m_compiler->getLangOpts().ObjCNonFragileABI = true; // NOT i386 + m_compiler->getLangOpts().ObjCNonFragileABI2 = true; // NOT i386 + } + } + } m_compiler->getLangOpts().ThreadsafeStatics = false; m_compiler->getLangOpts().AccessControl = false; // Debuggers get universal access |