xref: /openbsd-src/gnu/llvm/lld/COFF/COFFLinkerContext.cpp (revision dfe94b169149f14cc1aee2cf6dad58a8d9a1860c)
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(&ltoTextSection.section),
25*dfe94b16Srobert       ltoDataSectionChunk(&ltoDataSection.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