[lld] r297844 - [ELF] - Split struct In<ELFT> to have templated and non-templated sections areas.
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 15 11:39:24 PDT 2017
Please do not use inheritance. You don't need that at all here.
On Wed, Mar 15, 2017 at 8:29 AM, George Rimar via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: grimar
> Date: Wed Mar 15 10:29:29 2017
> New Revision: 297844
>
> URL: http://llvm.org/viewvc/llvm-project?rev=297844&view=rev
> Log:
> [ELF] - Split struct In<ELFT> to have templated and non-templated sections
> areas.
>
> Patch splits In<ELFT> into 2 classes: one for non-templated sections,
> second contains ELFT templated ones.
> That allows to code that was detemplated to access non-templated sections
> freely,
> and should open road for futher detemplation proccess.
>
> Differential revision: https://reviews.llvm.org/D30939
>
> Modified:
> lld/trunk/ELF/SyntheticSections.cpp
> lld/trunk/ELF/SyntheticSections.h
>
> Modified: lld/trunk/ELF/SyntheticSections.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/
> SyntheticSections.cpp?rev=297844&r1=297843&r2=297844&view=diff
> ============================================================
> ==================
> --- lld/trunk/ELF/SyntheticSections.cpp (original)
> +++ lld/trunk/ELF/SyntheticSections.cpp Wed Mar 15 10:29:29 2017
> @@ -2263,6 +2263,18 @@ InputSection *ThunkSection<ELFT>::getTar
> return T->getTargetInputSection();
> }
>
> +InputSection *InX::ARMAttributes;
> +BssSection *InX::Bss;
> +BssSection *InX::BssRelRo;
> +InputSection *InX::Common;
> +StringTableSection *InX::DynStrTab;
> +InputSection *InX::Interp;
> +GotPltSection *InX::GotPlt;
> +IgotPltSection *InX::IgotPlt;
> +MipsRldMapSection *InX::MipsRldMap;
> +StringTableSection *InX::ShStrTab;
> +StringTableSection *InX::StrTab;
> +
> template InputSection *elf::createCommonSection<ELF32LE>();
> template InputSection *elf::createCommonSection<ELF32BE>();
> template InputSection *elf::createCommonSection<ELF64LE>();
>
> Modified: lld/trunk/ELF/SyntheticSections.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/
> SyntheticSections.h?rev=297844&r1=297843&r2=297844&view=diff
> ============================================================
> ==================
> --- lld/trunk/ELF/SyntheticSections.h (original)
> +++ lld/trunk/ELF/SyntheticSections.h Wed Mar 15 10:29:29 2017
> @@ -758,14 +758,23 @@ SymbolBody *addSyntheticLocal(StringRef
> uint64_t Size, InputSectionBase *Section);
>
> // Linker generated sections which can be used as inputs.
> -template <class ELFT> struct In {
> +struct InX {
> static InputSection *ARMAttributes;
> - static BuildIdSection<ELFT> *BuildId;
> static BssSection *Bss;
> static BssSection *BssRelRo;
> static InputSection *Common;
> - static DynamicSection<ELFT> *Dynamic;
> static StringTableSection *DynStrTab;
> + static InputSection *Interp;
> + static GotPltSection *GotPlt;
> + static IgotPltSection *IgotPlt;
> + static MipsRldMapSection *MipsRldMap;
> + static StringTableSection *ShStrTab;
> + static StringTableSection *StrTab;
> +};
> +
> +template <class ELFT> struct In : public InX {
> + static BuildIdSection<ELFT> *BuildId;
> + static DynamicSection<ELFT> *Dynamic;
> static SymbolTableSection<ELFT> *DynSymTab;
> static EhFrameHeader<ELFT> *EhFrameHdr;
> static GnuHashTableSection<ELFT> *GnuHashTab;
> @@ -773,31 +782,20 @@ template <class ELFT> struct In {
> static GotSection<ELFT> *Got;
> static EhFrameSection<ELFT> *EhFrame;
> static MipsGotSection<ELFT> *MipsGot;
> - static GotPltSection *GotPlt;
> - static IgotPltSection *IgotPlt;
> static HashTableSection<ELFT> *HashTab;
> - static InputSection *Interp;
> - static MipsRldMapSection *MipsRldMap;
> static PltSection<ELFT> *Plt;
> static PltSection<ELFT> *Iplt;
> static RelocationSection<ELFT> *RelaDyn;
> static RelocationSection<ELFT> *RelaPlt;
> static RelocationSection<ELFT> *RelaIplt;
> - static StringTableSection *ShStrTab;
> - static StringTableSection *StrTab;
> static SymbolTableSection<ELFT> *SymTab;
> static VersionDefinitionSection<ELFT> *VerDef;
> static VersionTableSection<ELFT> *VerSym;
> static VersionNeedSection<ELFT> *VerNeed;
> };
>
> -template <class ELFT> InputSection *In<ELFT>::ARMAttributes;
> -template <class ELFT> BssSection *In<ELFT>::Bss;
> -template <class ELFT> BssSection *In<ELFT>::BssRelRo;
> template <class ELFT> BuildIdSection<ELFT> *In<ELFT>::BuildId;
> -template <class ELFT> InputSection *In<ELFT>::Common;
> template <class ELFT> DynamicSection<ELFT> *In<ELFT>::Dynamic;
> -template <class ELFT> StringTableSection *In<ELFT>::DynStrTab;
> template <class ELFT> SymbolTableSection<ELFT> *In<ELFT>::DynSymTab;
> template <class ELFT> EhFrameHeader<ELFT> *In<ELFT>::EhFrameHdr;
> template <class ELFT> GdbIndexSection<ELFT> *In<ELFT>::GdbIndex;
> @@ -805,18 +803,12 @@ template <class ELFT> GnuHashTableSectio
> template <class ELFT> GotSection<ELFT> *In<ELFT>::Got;
> template <class ELFT> EhFrameSection<ELFT> *In<ELFT>::EhFrame;
> template <class ELFT> MipsGotSection<ELFT> *In<ELFT>::MipsGot;
> -template <class ELFT> GotPltSection *In<ELFT>::GotPlt;
> -template <class ELFT> IgotPltSection *In<ELFT>::IgotPlt;
> template <class ELFT> HashTableSection<ELFT> *In<ELFT>::HashTab;
> -template <class ELFT> InputSection *In<ELFT>::Interp;
> -template <class ELFT> MipsRldMapSection *In<ELFT>::MipsRldMap;
> template <class ELFT> PltSection<ELFT> *In<ELFT>::Plt;
> template <class ELFT> PltSection<ELFT> *In<ELFT>::Iplt;
> template <class ELFT> RelocationSection<ELFT> *In<ELFT>::RelaDyn;
> template <class ELFT> RelocationSection<ELFT> *In<ELFT>::RelaPlt;
> template <class ELFT> RelocationSection<ELFT> *In<ELFT>::RelaIplt;
> -template <class ELFT> StringTableSection *In<ELFT>::ShStrTab;
> -template <class ELFT> StringTableSection *In<ELFT>::StrTab;
> template <class ELFT> SymbolTableSection<ELFT> *In<ELFT>::SymTab;
> template <class ELFT> VersionDefinitionSection<ELFT> *In<ELFT>::VerDef;
> template <class ELFT> VersionTableSection<ELFT> *In<ELFT>::VerSym;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170315/7b7cc0e1/attachment.html>
More information about the llvm-commits
mailing list