mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 07:31:28 +00:00
85a2f29fd4
Reinstate use of FakeSection class to avoid constructing SectionChunk
from unintialised coff_section in FakeSectionChunk constructor.
Issue was caused by commit 5a58b19f9c
,
"[LLD] Remove global state in lld/COFF".
45 lines
2.1 KiB
C++
45 lines
2.1 KiB
C++
//===- COFFContext.cpp ----------------------------------------------------===//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Description
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "COFFLinkerContext.h"
|
|
#include "Symbols.h"
|
|
#include "lld/Common/Memory.h"
|
|
#include "llvm/BinaryFormat/COFF.h"
|
|
#include "llvm/DebugInfo/CodeView/TypeHashing.h"
|
|
#include "llvm/Demangle/Demangle.h"
|
|
|
|
namespace lld::coff {
|
|
COFFLinkerContext::COFFLinkerContext()
|
|
: driver(*this), symtab(*this),
|
|
ltoTextSection(llvm::COFF::IMAGE_SCN_MEM_EXECUTE),
|
|
ltoDataSection(llvm::COFF::IMAGE_SCN_CNT_INITIALIZED_DATA),
|
|
ltoTextSectionChunk(<oTextSection.section),
|
|
ltoDataSectionChunk(<oDataSection.section),
|
|
rootTimer("Total Linking Time"),
|
|
inputFileTimer("Input File Reading", rootTimer),
|
|
ltoTimer("LTO", rootTimer), gcTimer("GC", rootTimer),
|
|
icfTimer("ICF", rootTimer), codeLayoutTimer("Code Layout", rootTimer),
|
|
outputCommitTimer("Commit Output File", rootTimer),
|
|
totalMapTimer("MAP Emission (Cumulative)", rootTimer),
|
|
symbolGatherTimer("Gather Symbols", totalMapTimer),
|
|
symbolStringsTimer("Build Symbol Strings", totalMapTimer),
|
|
writeTimer("Write to File", totalMapTimer),
|
|
totalPdbLinkTimer("PDB Emission (Cumulative)", rootTimer),
|
|
addObjectsTimer("Add Objects", totalPdbLinkTimer),
|
|
typeMergingTimer("Type Merging", addObjectsTimer),
|
|
loadGHashTimer("Global Type Hashing", addObjectsTimer),
|
|
mergeGHashTimer("GHash Type Merging", addObjectsTimer),
|
|
symbolMergingTimer("Symbol Merging", addObjectsTimer),
|
|
publicsLayoutTimer("Publics Stream Layout", totalPdbLinkTimer),
|
|
tpiStreamLayoutTimer("TPI Stream Layout", totalPdbLinkTimer),
|
|
diskCommitTimer("Commit to Disk", totalPdbLinkTimer) {}
|
|
} // namespace lld::coff
|