Mercurial > hg > CbC > CbC_llvm
view lld/COFF/COFFLinkerContext.h @ 240:ca573705d418
merge
author | matac |
---|---|
date | Fri, 28 Jul 2023 20:50:09 +0900 |
parents | c4bab56944e8 |
children | 1f2b6ac9f198 |
line wrap: on
line source
//===- COFFLinkerContext.h --------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLD_COFF_COFFLinkerContext_H #define LLD_COFF_COFFLinkerContext_H #include "Chunks.h" #include "Config.h" #include "DebugTypes.h" #include "InputFiles.h" #include "SymbolTable.h" #include "Writer.h" #include "lld/Common/CommonLinkerContext.h" #include "lld/Common/Timer.h" namespace lld::coff { class COFFLinkerContext : public CommonLinkerContext { public: COFFLinkerContext(); COFFLinkerContext(const COFFLinkerContext &) = delete; COFFLinkerContext &operator=(const COFFLinkerContext &) = delete; ~COFFLinkerContext() = default; void addTpiSource(TpiSource *tpi) { tpiSourceList.push_back(tpi); } SymbolTable symtab; std::vector<ObjFile *> objFileInstances; std::map<std::string, PDBInputFile *> pdbInputFileInstances; std::vector<ImportFile *> importFileInstances; std::vector<BitcodeFile *> bitcodeFileInstances; MergeChunk *mergeChunkInstances[Log2MaxSectionAlignment + 1] = {}; /// All sources of type information in the program. std::vector<TpiSource *> tpiSourceList; std::map<llvm::codeview::GUID, TpiSource *> typeServerSourceMappings; std::map<uint32_t, TpiSource *> precompSourceMappings; /// List of all output sections. After output sections are finalized, this /// can be indexed by getOutputSection. std::vector<OutputSection *> outputSections; OutputSection *getOutputSection(const Chunk *c) const { return c->osidx == 0 ? nullptr : outputSections[c->osidx - 1]; } // All timers used in the COFF linker. Timer rootTimer; Timer inputFileTimer; Timer ltoTimer; Timer gcTimer; Timer icfTimer; // Writer timers. Timer codeLayoutTimer; Timer outputCommitTimer; Timer totalMapTimer; Timer symbolGatherTimer; Timer symbolStringsTimer; Timer writeTimer; // PDB timers. Timer totalPdbLinkTimer; Timer addObjectsTimer; Timer typeMergingTimer; Timer loadGHashTimer; Timer mergeGHashTimer; Timer symbolMergingTimer; Timer publicsLayoutTimer; Timer tpiStreamLayoutTimer; Timer diskCommitTimer; }; } // namespace lld::coff #endif