1349cc55cSDimitry Andric //===- COFFContext.cpp ----------------------------------------------------===//
2349cc55cSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
3349cc55cSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
4349cc55cSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5349cc55cSDimitry Andric //
6349cc55cSDimitry Andric //===----------------------------------------------------------------------===//
7349cc55cSDimitry Andric //
8349cc55cSDimitry Andric // Description
9349cc55cSDimitry Andric //
10349cc55cSDimitry Andric //===----------------------------------------------------------------------===//
11349cc55cSDimitry Andric
12349cc55cSDimitry Andric #include "COFFLinkerContext.h"
13*bdd1243dSDimitry Andric #include "Symbols.h"
14349cc55cSDimitry Andric #include "lld/Common/Memory.h"
15*bdd1243dSDimitry Andric #include "llvm/BinaryFormat/COFF.h"
16349cc55cSDimitry Andric #include "llvm/DebugInfo/CodeView/TypeHashing.h"
17*bdd1243dSDimitry Andric #include "llvm/Demangle/Demangle.h"
18349cc55cSDimitry Andric
19*bdd1243dSDimitry Andric namespace lld::coff {
COFFLinkerContext()20349cc55cSDimitry Andric COFFLinkerContext::COFFLinkerContext()
21*bdd1243dSDimitry Andric : driver(*this), symtab(*this),
22*bdd1243dSDimitry Andric ltoTextSection(llvm::COFF::IMAGE_SCN_MEM_EXECUTE),
23*bdd1243dSDimitry Andric ltoDataSection(llvm::COFF::IMAGE_SCN_CNT_INITIALIZED_DATA),
24*bdd1243dSDimitry Andric ltoTextSectionChunk(<oTextSection.section),
25*bdd1243dSDimitry Andric ltoDataSectionChunk(<oDataSection.section),
26*bdd1243dSDimitry Andric rootTimer("Total Linking Time"),
27349cc55cSDimitry Andric inputFileTimer("Input File Reading", rootTimer),
28349cc55cSDimitry Andric ltoTimer("LTO", rootTimer), gcTimer("GC", rootTimer),
29349cc55cSDimitry Andric icfTimer("ICF", rootTimer), codeLayoutTimer("Code Layout", rootTimer),
30349cc55cSDimitry Andric outputCommitTimer("Commit Output File", rootTimer),
31349cc55cSDimitry Andric totalMapTimer("MAP Emission (Cumulative)", rootTimer),
32349cc55cSDimitry Andric symbolGatherTimer("Gather Symbols", totalMapTimer),
33349cc55cSDimitry Andric symbolStringsTimer("Build Symbol Strings", totalMapTimer),
34349cc55cSDimitry Andric writeTimer("Write to File", totalMapTimer),
35349cc55cSDimitry Andric totalPdbLinkTimer("PDB Emission (Cumulative)", rootTimer),
36349cc55cSDimitry Andric addObjectsTimer("Add Objects", totalPdbLinkTimer),
37349cc55cSDimitry Andric typeMergingTimer("Type Merging", addObjectsTimer),
38349cc55cSDimitry Andric loadGHashTimer("Global Type Hashing", addObjectsTimer),
39349cc55cSDimitry Andric mergeGHashTimer("GHash Type Merging", addObjectsTimer),
40349cc55cSDimitry Andric symbolMergingTimer("Symbol Merging", addObjectsTimer),
41349cc55cSDimitry Andric publicsLayoutTimer("Publics Stream Layout", totalPdbLinkTimer),
42349cc55cSDimitry Andric tpiStreamLayoutTimer("TPI Stream Layout", totalPdbLinkTimer),
43349cc55cSDimitry Andric diskCommitTimer("Commit to Disk", totalPdbLinkTimer) {}
44*bdd1243dSDimitry Andric } // namespace lld::coff
45