1*dfe94b16Srobert //===- COFFContext.cpp ----------------------------------------------------===//
2*dfe94b16Srobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
3*dfe94b16Srobert // See https://llvm.org/LICENSE.txt for license information.
4*dfe94b16Srobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5*dfe94b16Srobert //
6*dfe94b16Srobert //===----------------------------------------------------------------------===//
7*dfe94b16Srobert //
8*dfe94b16Srobert // Description
9*dfe94b16Srobert //
10*dfe94b16Srobert //===----------------------------------------------------------------------===//
11*dfe94b16Srobert
12*dfe94b16Srobert #include "COFFLinkerContext.h"
13*dfe94b16Srobert #include "Symbols.h"
14*dfe94b16Srobert #include "lld/Common/Memory.h"
15*dfe94b16Srobert #include "llvm/BinaryFormat/COFF.h"
16*dfe94b16Srobert #include "llvm/DebugInfo/CodeView/TypeHashing.h"
17*dfe94b16Srobert #include "llvm/Demangle/Demangle.h"
18*dfe94b16Srobert
19*dfe94b16Srobert namespace lld::coff {
COFFLinkerContext()20*dfe94b16Srobert COFFLinkerContext::COFFLinkerContext()
21*dfe94b16Srobert : driver(*this), symtab(*this),
22*dfe94b16Srobert ltoTextSection(llvm::COFF::IMAGE_SCN_MEM_EXECUTE),
23*dfe94b16Srobert ltoDataSection(llvm::COFF::IMAGE_SCN_CNT_INITIALIZED_DATA),
24*dfe94b16Srobert ltoTextSectionChunk(<oTextSection.section),
25*dfe94b16Srobert ltoDataSectionChunk(<oDataSection.section),
26*dfe94b16Srobert rootTimer("Total Linking Time"),
27*dfe94b16Srobert inputFileTimer("Input File Reading", rootTimer),
28*dfe94b16Srobert ltoTimer("LTO", rootTimer), gcTimer("GC", rootTimer),
29*dfe94b16Srobert icfTimer("ICF", rootTimer), codeLayoutTimer("Code Layout", rootTimer),
30*dfe94b16Srobert outputCommitTimer("Commit Output File", rootTimer),
31*dfe94b16Srobert totalMapTimer("MAP Emission (Cumulative)", rootTimer),
32*dfe94b16Srobert symbolGatherTimer("Gather Symbols", totalMapTimer),
33*dfe94b16Srobert symbolStringsTimer("Build Symbol Strings", totalMapTimer),
34*dfe94b16Srobert writeTimer("Write to File", totalMapTimer),
35*dfe94b16Srobert totalPdbLinkTimer("PDB Emission (Cumulative)", rootTimer),
36*dfe94b16Srobert addObjectsTimer("Add Objects", totalPdbLinkTimer),
37*dfe94b16Srobert typeMergingTimer("Type Merging", addObjectsTimer),
38*dfe94b16Srobert loadGHashTimer("Global Type Hashing", addObjectsTimer),
39*dfe94b16Srobert mergeGHashTimer("GHash Type Merging", addObjectsTimer),
40*dfe94b16Srobert symbolMergingTimer("Symbol Merging", addObjectsTimer),
41*dfe94b16Srobert publicsLayoutTimer("Publics Stream Layout", totalPdbLinkTimer),
42*dfe94b16Srobert tpiStreamLayoutTimer("TPI Stream Layout", totalPdbLinkTimer),
43*dfe94b16Srobert diskCommitTimer("Commit to Disk", totalPdbLinkTimer) {}
44*dfe94b16Srobert } // namespace lld::coff
45