Mercurial > hg > CbC > CbC_llvm
diff lld/COFF/Driver.h @ 236:c4bab56944e8 llvm-original
LLVM 16
author | kono |
---|---|
date | Wed, 09 Nov 2022 17:45:10 +0900 |
parents | 79ff65ed7e25 |
children | 1f2b6ac9f198 |
line wrap: on
line diff
--- a/lld/COFF/Driver.h Wed Jul 21 10:27:27 2021 +0900 +++ b/lld/COFF/Driver.h Wed Nov 09 17:45:10 2022 +0900 @@ -9,6 +9,7 @@ #ifndef LLD_COFF_DRIVER_H #define LLD_COFF_DRIVER_H +#include "COFFLinkerContext.h" #include "Config.h" #include "SymbolTable.h" #include "lld/Common/LLVM.h" @@ -22,15 +23,14 @@ #include "llvm/Option/ArgList.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/TarWriter.h" +#include "llvm/WindowsDriver/MSVCPaths.h" #include <memory> #include <set> #include <vector> -namespace lld { -namespace coff { +namespace lld::coff { -class LinkerDriver; -extern LinkerDriver *driver; +extern std::unique_ptr<class LinkerDriver> driver; using llvm::COFF::MachineTypes; using llvm::COFF::WindowsSubsystem; @@ -53,6 +53,7 @@ struct ParsedDirectives { std::vector<StringRef> exports; std::vector<StringRef> includes; + std::vector<StringRef> excludes; llvm::opt::InputArgList args; }; @@ -78,8 +79,14 @@ class LinkerDriver { public: + LinkerDriver(COFFLinkerContext &c) : ctx(c) {} + void linkerMain(llvm::ArrayRef<const char *> args); + // Adds various search paths based on the sysroot. Must only be called once + // config->machine has been set. + void addWinSysRootLibSearchPaths(); + // Used by the resolver to parse .drectve section contents. void parseDirectives(InputFile *file); @@ -103,6 +110,11 @@ StringRef doFindLib(StringRef filename); StringRef doFindLibMinGW(StringRef filename); + bool findUnderscoreMangle(StringRef sym); + + // Determines the location of the sysroot based on `args`, environment, etc. + void detectWinSysRoot(const llvm::opt::InputArgList &args); + // Parses LIB environment which contains a list of search paths. void addLibSearchPaths(); @@ -147,7 +159,18 @@ std::vector<StringRef> filePaths; std::vector<MemoryBufferRef> resources; - llvm::StringSet<> directivesExports; + llvm::DenseSet<StringRef> directivesExports; + llvm::DenseSet<StringRef> excludedSymbols; + + COFFLinkerContext &ctx; + + llvm::ToolsetLayout vsLayout = llvm::ToolsetLayout::OlderVS; + std::string vcToolChainPath; + llvm::SmallString<128> diaPath; + bool useWinSysRootLibPath = false; + llvm::SmallString<128> universalCRTLibPath; + int sdkMajor = 0; + llvm::SmallString<128> windowsSdkLibPath; }; // Functions below this line are defined in DriverUtils.cpp. @@ -169,6 +192,7 @@ void parseAlternateName(StringRef); void parseMerge(StringRef); +void parsePDBPageSize(StringRef); void parseSection(StringRef); void parseAligncomm(StringRef); @@ -211,7 +235,6 @@ #undef OPTION }; -} // namespace coff -} // namespace lld +} // namespace lld::coff #endif