LLDB mainline
Classes | Macros | Functions
ClangExpressionParser.cpp File Reference
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTDiagnostic.h"
#include "clang/AST/ExternalASTSource.h"
#include "clang/AST/PrettyPrinter.h"
#include "clang/Basic/Builtins.h"
#include "clang/Basic/DarwinSDKInfo.h"
#include "clang/Basic/DiagnosticIDs.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/Version.h"
#include "clang/CodeGen/CodeGenAction.h"
#include "clang/CodeGen/ModuleBuilder.h"
#include "clang/Edit/Commit.h"
#include "clang/Edit/EditedSource.h"
#include "clang/Edit/EditsReceiver.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/CompilerInvocation.h"
#include "clang/Frontend/FrontendActions.h"
#include "clang/Frontend/FrontendDiagnostic.h"
#include "clang/Frontend/FrontendPluginRegistry.h"
#include "clang/Frontend/TextDiagnosticBuffer.h"
#include "clang/Frontend/TextDiagnosticPrinter.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Parse/ParseAST.h"
#include "clang/Rewrite/Core/Rewriter.h"
#include "clang/Rewrite/Frontend/FrontendActions.h"
#include "clang/Sema/CodeCompleteConsumer.h"
#include "clang/Sema/Sema.h"
#include "clang/Sema/SemaConsumer.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ExecutionEngine/ExecutionEngine.h"
#include "llvm/Support/CrashRecoveryContext.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/TargetSelect.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/DynamicLibrary.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Signals.h"
#include "llvm/TargetParser/Host.h"
#include "ClangDiagnostic.h"
#include "ClangExpressionParser.h"
#include "ClangUserExpression.h"
#include "ASTUtils.h"
#include "ClangASTSource.h"
#include "ClangExpressionDeclMap.h"
#include "ClangExpressionHelper.h"
#include "ClangHost.h"
#include "ClangModulesDeclVendor.h"
#include "ClangPersistentVariables.h"
#include "IRDynamicChecks.h"
#include "IRForTarget.h"
#include "ModuleDependencyCollector.h"
#include "Plugins/TypeSystem/Clang/TypeSystemClang.h"
#include "lldb/Core/Debugger.h"
#include "lldb/Core/Disassembler.h"
#include "lldb/Core/Module.h"
#include "lldb/Expression/IRExecutionUnit.h"
#include "lldb/Expression/IRInterpreter.h"
#include "lldb/Host/File.h"
#include "lldb/Host/HostInfo.h"
#include "lldb/Symbol/SymbolVendor.h"
#include "lldb/Target/ExecutionContext.h"
#include "lldb/Target/ExecutionContextScope.h"
#include "lldb/Target/Language.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/Target.h"
#include "lldb/Target/ThreadPlanCallFunction.h"
#include "lldb/Utility/DataBufferHeap.h"
#include "lldb/Utility/LLDBAssert.h"
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/Stream.h"
#include "lldb/Utility/StreamString.h"
#include "lldb/Utility/StringList.h"
#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
#include "Plugins/Platform/MacOSX/PlatformDarwin.h"
#include "lldb/Utility/XcodeSDK.h"
#include <cctype>
#include <memory>
#include <optional>
#include "clang/Basic/TokenKinds.def"

Go to the source code of this file.

Classes

class  lldb_private::ClangExpressionParser::LLDBPreprocessorCallbacks
 
class  ClangDiagnosticManagerAdapter
 

Macros

#define KEYWORD(NAME, FLAGS)   RemoveCppKeyword(idents, llvm::StringRef(#NAME));
 

Functions

static void AddAllFixIts (ClangDiagnostic *diag, const clang::Diagnostic &Info)
 
static llvm::Expected< bool > sdkSupportsBuiltinModules (lldb_private::Target &target)
 Returns true if the SDK for the specified triple supports builtin modules in system headers.
 
static void SetupModuleHeaderPaths (CompilerInstance *compiler, std::vector< std::string > include_directories, lldb::TargetSP target_sp)
 
static void RemoveCppKeyword (IdentifierTable &idents, llvm::StringRef token)
 Iff the given identifier is a C++ keyword, remove it from the identifier table (i.e., make the token a normal identifier).
 
static void RemoveAllCppKeywords (IdentifierTable &idents)
 Remove all C++ keywords from the given identifier table.
 
static void SetupDefaultClangDiagnostics (CompilerInstance &compiler)
 Configures Clang diagnostics for the expression parser.
 
static std::string GetClangTargetABI (const ArchSpec &target_arch)
 Returns a string representing current ABI.
 
static void SetupTargetOpts (CompilerInstance &compiler, lldb_private::Target const &target)
 
static void SetupLangOpts (CompilerInstance &compiler, ExecutionContextScope &exe_scope, const Expression &expr)
 
static void SetupImportStdModuleLangOpts (CompilerInstance &compiler, lldb_private::Target &target)
 
static void ApplyFixIt (const FixItHint &fixit, clang::edit::Commit &commit)
 Applies the given Fix-It hint to the given commit.
 
static bool FindFunctionInModule (ConstString &mangled_name, llvm::Module *module, const char *orig_name)
 

Macro Definition Documentation

◆ KEYWORD

#define KEYWORD (   NAME,
  FLAGS 
)    RemoveCppKeyword(idents, llvm::StringRef(#NAME));

Function Documentation

◆ AddAllFixIts()

static void AddAllFixIts ( ClangDiagnostic diag,
const clang::Diagnostic &  Info 
)
static

◆ ApplyFixIt()

static void ApplyFixIt ( const FixItHint &  fixit,
clang::edit::Commit &  commit 
)
static

Applies the given Fix-It hint to the given commit.

Definition at line 1285 of file ClangExpressionParser.cpp.

Referenced by lldb_private::ClangExpressionParser::RewriteExpression().

◆ FindFunctionInModule()

static bool FindFunctionInModule ( ConstString mangled_name,
llvm::Module *  module,
const char *  orig_name 
)
static

◆ GetClangTargetABI()

static std::string GetClangTargetABI ( const ArchSpec target_arch)
static

Returns a string representing current ABI.

Parameters
[in]target_archThe target architecture.
Returns
A string representing target ABI for the current architecture.

Definition at line 409 of file ClangExpressionParser.cpp.

References lldb_private::ArchSpec::eMIPSABI_mask, lldb_private::ArchSpec::eMIPSABI_N32, lldb_private::ArchSpec::eMIPSABI_N64, lldb_private::ArchSpec::eMIPSABI_O32, lldb_private::ArchSpec::GetFlags(), and lldb_private::ArchSpec::IsMIPS().

Referenced by SetupTargetOpts().

◆ RemoveAllCppKeywords()

static void RemoveAllCppKeywords ( IdentifierTable &  idents)
static

Remove all C++ keywords from the given identifier table.

Definition at line 382 of file ClangExpressionParser.cpp.

Referenced by lldb_private::ClangExpressionParser::ClangExpressionParser().

◆ RemoveCppKeyword()

static void RemoveCppKeyword ( IdentifierTable &  idents,
llvm::StringRef  token 
)
static

Iff the given identifier is a C++ keyword, remove it from the identifier table (i.e., make the token a normal identifier).

Definition at line 354 of file ClangExpressionParser.cpp.

◆ sdkSupportsBuiltinModules()

static llvm::Expected< bool > sdkSupportsBuiltinModules ( lldb_private::Target target)
static

Returns true if the SDK for the specified triple supports builtin modules in system headers.

This is used to decide whether to pass -fbuiltin-headers-in-system-modules to the compiler instance when compiling the std module.

Definition at line 291 of file ClangExpressionParser.cpp.

References lldb_private::Target::GetArchitecture(), lldb_private::Target::GetExecutableModule(), lldb_private::Target::GetPlatform(), lldb_private::ArchSpec::GetTriple(), lldb_private::FileSystem::GetVirtualFileSystem(), lldb_private::FileSystem::Instance(), and lldb_private::XcodeSDK::SDKSupportsBuiltinModules().

Referenced by SetupImportStdModuleLangOpts().

◆ SetupDefaultClangDiagnostics()

static void SetupDefaultClangDiagnostics ( CompilerInstance &  compiler)
static

Configures Clang diagnostics for the expression parser.

Definition at line 388 of file ClangExpressionParser.cpp.

Referenced by lldb_private::ClangExpressionParser::ClangExpressionParser().

◆ SetupImportStdModuleLangOpts()

static void SetupImportStdModuleLangOpts ( CompilerInstance &  compiler,
lldb_private::Target target 
)
static

◆ SetupLangOpts()

static void SetupLangOpts ( CompilerInstance &  compiler,
ExecutionContextScope exe_scope,
const Expression expr 
)
static

◆ SetupModuleHeaderPaths()

static void SetupModuleHeaderPaths ( CompilerInstance *  compiler,
std::vector< std::string >  include_directories,
lldb::TargetSP  target_sp 
)
static

◆ SetupTargetOpts()

static void SetupTargetOpts ( CompilerInstance &  compiler,
lldb_private::Target const &  target 
)
static