Delete Off_Bss.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 7 Apr 2016 14:34:15 +0000 (14:34 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 7 Apr 2016 14:34:15 +0000 (14:34 +0000)
It is now just a special case of Off_Sec.

llvm-svn: 265676

lld/ELF/OutputSections.cpp
lld/ELF/OutputSections.h
lld/ELF/Writer.cpp

index feaff82..243f571 100644 (file)
@@ -308,8 +308,6 @@ typename ELFT::uint DynamicReloc<ELFT>::getOffset() const {
     return Out<ELFT>::Got->getTlsIndexVA();
   case Off_Sec:
     return OffsetInSec + OffsetSec->getVA();
-  case Off_Bss:
-    return cast<SharedSymbol<ELFT>>(Sym)->OffsetInBss + Out<ELFT>::Bss->getVA();
   case Off_Got:
     return Sym->getGotVA<ELFT>();
   case Off_GotPlt:
index 95b6790..7abdd5b 100644 (file)
@@ -176,7 +176,6 @@ template <class ELFT> struct DynamicReloc {
   enum OffsetKind {
     Off_Got,       // The got entry of Sym.
     Off_GotPlt,    // The got.plt entry of Sym.
-    Off_Bss,       // The bss entry of Sym (copy reloc).
     Off_Sec,       // The final position of the given input section and offset.
     Off_LTlsIndex, // The local tls index.
     Off_GTlsIndex, // The global tls index of Sym.
index 7d12a32..626e39a 100644 (file)
@@ -738,8 +738,6 @@ void Writer<ELFT>::addCopyRelSymbol(SharedSymbol<ELFT> *SS) {
   Off = alignTo(Off, Align);
   Out<ELFT>::Bss->setSize(Off + SS->template getSize<ELFT>());
   Out<ELFT>::Bss->updateAlign(Align);
-  Out<ELFT>::RelaDyn->addReloc(
-      {Target->CopyRel, DynamicReloc<ELFT>::Off_Bss, SS});
   uintX_t Shndx = SS->Sym.st_shndx;
   uintX_t Value = SS->Sym.st_value;
   // Look through the DSO's dynamic symbol for aliases and create a dynamic
@@ -753,6 +751,8 @@ void Writer<ELFT>::addCopyRelSymbol(SharedSymbol<ELFT> *SS) {
     S.setUsedInRegularObj();
     S.MustBeInDynSym = true;
   }
+  Out<ELFT>::RelaDyn->addReloc(
+      {Target->CopyRel, Out<ELFT>::Bss, SS->OffsetInBss, false, SS, 0});
 }
 
 template <class ELFT>