summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins')
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp13
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h2
2 files changed, 11 insertions, 4 deletions
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
index c5406fcc334..26dad943aef 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
@@ -508,12 +508,21 @@ ClangExpressionParser::ClangExpressionParser(ExecutionContextScope *exe_scope,
// 8. Most of this we get from the CompilerInstance, but we also want to give
// the context an ExternalASTSource.
m_selector_table.reset(new SelectorTable());
- m_builtin_context.reset(new Builtin::Context());
+
+ // We enable all builtin functions beside the builtins from libc/libm (e.g.
+ // 'fopen'). Those libc functions are already correctly handled by LLDB, and
+ // additionally enabling them as expandable builtins is breaking Clang.
+ m_compiler->getLangOpts().NoBuiltin = true;
+
+ auto &PP = m_compiler->getPreprocessor();
+ auto &builtin_context = PP.getBuiltinInfo();
+ builtin_context.initializeBuiltins(PP.getIdentifierTable(),
+ m_compiler->getLangOpts());
std::unique_ptr<clang::ASTContext> ast_context(
new ASTContext(m_compiler->getLangOpts(), m_compiler->getSourceManager(),
m_compiler->getPreprocessor().getIdentifierTable(),
- *m_selector_table.get(), *m_builtin_context.get()));
+ *m_selector_table.get(), builtin_context));
ast_context->InitBuiltinTypes(m_compiler->getTarget());
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
index 4058ec1270b..42106579e37 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
@@ -149,8 +149,6 @@ private:
m_file_manager; ///< The Clang file manager object used by the compiler
std::unique_ptr<clang::CompilerInstance>
m_compiler; ///< The Clang compiler used to parse expressions into IR
- std::unique_ptr<clang::Builtin::Context>
- m_builtin_context; ///< Context for Clang built-ins
std::unique_ptr<clang::SelectorTable>
m_selector_table; ///< Selector table for Objective-C methods
std::unique_ptr<clang::CodeGenerator>
OpenPOWER on IntegriCloud