mirror of
https://github.com/intel/llvm.git
synced 2026-01-31 16:29:50 +08:00
Turn createKey into a static helper. NFC.
llvm-svn: 281325
This commit is contained in:
@@ -1830,6 +1830,24 @@ void MipsAbiFlagsOutputSection<ELFT>::addSection(InputSectionBase<ELFT> *C) {
|
||||
getFilename(S->getFile()));
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
static SectionKey<ELFT::Is64Bits> createKey(InputSectionBase<ELFT> *C,
|
||||
StringRef OutsecName) {
|
||||
const typename ELFT::Shdr *H = C->getSectionHdr();
|
||||
typedef typename ELFT::uint uintX_t;
|
||||
uintX_t Flags = H->sh_flags & ~SHF_GROUP & ~SHF_COMPRESSED;
|
||||
|
||||
// For SHF_MERGE we create different output sections for each alignment.
|
||||
// This makes each output section simple and keeps a single level mapping from
|
||||
// input to output.
|
||||
uintX_t Alignment = 0;
|
||||
if (isa<MergeInputSection<ELFT>>(C))
|
||||
Alignment = std::max(H->sh_addralign, H->sh_entsize);
|
||||
|
||||
uint32_t Type = H->sh_type;
|
||||
return SectionKey<ELFT::Is64Bits>{OutsecName, Type, Flags, Alignment};
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
std::pair<OutputSectionBase<ELFT> *, bool>
|
||||
OutputSectionFactory<ELFT>::create(InputSectionBase<ELFT> *C,
|
||||
@@ -1863,24 +1881,6 @@ OutputSectionFactory<ELFT>::create(InputSectionBase<ELFT> *C,
|
||||
return {Sec, true};
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
SectionKey<ELFT::Is64Bits>
|
||||
OutputSectionFactory<ELFT>::createKey(InputSectionBase<ELFT> *C,
|
||||
StringRef OutsecName) {
|
||||
const Elf_Shdr *H = C->getSectionHdr();
|
||||
uintX_t Flags = H->sh_flags & ~SHF_GROUP & ~SHF_COMPRESSED;
|
||||
|
||||
// For SHF_MERGE we create different output sections for each alignment.
|
||||
// This makes each output section simple and keeps a single level mapping from
|
||||
// input to output.
|
||||
uintX_t Alignment = 0;
|
||||
if (isa<MergeInputSection<ELFT>>(C))
|
||||
Alignment = std::max(H->sh_addralign, H->sh_entsize);
|
||||
|
||||
uint32_t Type = H->sh_type;
|
||||
return SectionKey<ELFT::Is64Bits>{OutsecName, Type, Flags, Alignment};
|
||||
}
|
||||
|
||||
template <bool Is64Bits>
|
||||
typename lld::elf::SectionKey<Is64Bits>
|
||||
DenseMapInfo<lld::elf::SectionKey<Is64Bits>>::getEmptyKey() {
|
||||
|
||||
@@ -805,8 +805,6 @@ public:
|
||||
StringRef OutsecName);
|
||||
|
||||
private:
|
||||
Key createKey(InputSectionBase<ELFT> *C, StringRef OutsecName);
|
||||
|
||||
llvm::SmallDenseMap<Key, OutputSectionBase<ELFT> *> Map;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user