diff options
| author | Peter Collingbourne <peter@pcc.me.uk> | 2019-04-08 17:35:55 +0000 | 
|---|---|---|
| committer | Peter Collingbourne <peter@pcc.me.uk> | 2019-04-08 17:35:55 +0000 | 
| commit | cc1618e6689df872dcb005c5ceeecd38c56c36af (patch) | |
| tree | c72632180c2c1bd3f4fce361587de3744199bf55 /lld/ELF/SyntheticSections.cpp | |
| parent | 1b62c758d0891ab42bf9bec6e9f26ec7bac67217 (diff) | |
| download | bcm5719-llvm-cc1618e6689df872dcb005c5ceeecd38c56c36af.tar.gz bcm5719-llvm-cc1618e6689df872dcb005c5ceeecd38c56c36af.zip | |
ELF: De-template SharedFile. NFCI.
Differential Revision: https://reviews.llvm.org/D60305
llvm-svn: 357925
Diffstat (limited to 'lld/ELF/SyntheticSections.cpp')
| -rw-r--r-- | lld/ELF/SyntheticSections.cpp | 22 | 
1 files changed, 11 insertions, 11 deletions
| diff --git a/lld/ELF/SyntheticSections.cpp b/lld/ELF/SyntheticSections.cpp index 7dd1683fedd..922238fefdc 100644 --- a/lld/ELF/SyntheticSections.cpp +++ b/lld/ELF/SyntheticSections.cpp @@ -1263,11 +1263,9 @@ template <class ELFT> void DynamicSection<ELFT>::finalizeContents() {      addInt(Config->EnableNewDtags ? DT_RUNPATH : DT_RPATH,             In.DynStrTab->addString(Config->Rpath)); -  for (InputFile *File : SharedFiles) { -    SharedFile<ELFT> *F = cast<SharedFile<ELFT>>(File); -    if (F->IsNeeded) -      addInt(DT_NEEDED, In.DynStrTab->addString(F->SoName)); -  } +  for (SharedFile *File : SharedFiles) +    if (File->IsNeeded) +      addInt(DT_NEEDED, In.DynStrTab->addString(File->SoName));    if (!Config->SoName.empty())      addInt(DT_SONAME, In.DynStrTab->addString(Config->SoName)); @@ -2792,7 +2790,7 @@ VersionNeedBaseSection::VersionNeedBaseSection()  }  template <class ELFT> void VersionNeedSection<ELFT>::addSymbol(Symbol *SS) { -  auto &File = cast<SharedFile<ELFT>>(*SS->File); +  auto &File = cast<SharedFile>(*SS->File);    if (SS->VerdefIndex == VER_NDX_GLOBAL) {      SS->VersionId = VER_NDX_GLOBAL;      return; @@ -2803,8 +2801,9 @@ template <class ELFT> void VersionNeedSection<ELFT>::addSymbol(Symbol *SS) {    // for the soname.    if (File.VerdefMap.empty())      Needed.push_back({&File, In.DynStrTab->addString(File.SoName)}); -  const typename ELFT::Verdef *Ver = File.Verdefs[SS->VerdefIndex]; -  typename SharedFile<ELFT>::NeededVer &NV = File.VerdefMap[Ver]; +  auto *Ver = reinterpret_cast<const typename ELFT::Verdef *>( +      File.Verdefs[SS->VerdefIndex]); +  typename SharedFile::NeededVer &NV = File.VerdefMap[Ver];    // If we don't already know that we need an Elf_Vernaux for this Elf_Verdef,    // prepare to create one by allocating a version identifier and creating a @@ -2822,7 +2821,7 @@ template <class ELFT> void VersionNeedSection<ELFT>::writeTo(uint8_t *Buf) {    auto *Verneed = reinterpret_cast<Elf_Verneed *>(Buf);    auto *Vernaux = reinterpret_cast<Elf_Vernaux *>(Verneed + Needed.size()); -  for (std::pair<SharedFile<ELFT> *, size_t> &P : Needed) { +  for (std::pair<SharedFile *, size_t> &P : Needed) {      // Create an Elf_Verneed for this DSO.      Verneed->vn_version = 1;      Verneed->vn_cnt = P.first->VerdefMap.size(); @@ -2839,7 +2838,8 @@ template <class ELFT> void VersionNeedSection<ELFT>::writeTo(uint8_t *Buf) {      // pointers, but is deterministic because the pointers refer to Elf_Verdef      // data structures within a single input file.      for (auto &NV : P.first->VerdefMap) { -      Vernaux->vna_hash = NV.first->vd_hash; +      Vernaux->vna_hash = +          reinterpret_cast<const typename ELFT::Verdef *>(NV.first)->vd_hash;        Vernaux->vna_flags = 0;        Vernaux->vna_other = NV.second.Index;        Vernaux->vna_name = NV.second.StrTab; @@ -2860,7 +2860,7 @@ template <class ELFT> void VersionNeedSection<ELFT>::finalizeContents() {  template <class ELFT> size_t VersionNeedSection<ELFT>::getSize() const {    unsigned Size = Needed.size() * sizeof(Elf_Verneed); -  for (const std::pair<SharedFile<ELFT> *, size_t> &P : Needed) +  for (const std::pair<SharedFile *, size_t> &P : Needed)      Size += P.first->VerdefMap.size() * sizeof(Elf_Vernaux);    return Size;  } | 

