[lld] r280630 - [ELF][MIPS] Do not emit DT_REL[A]COUNT for MIPS targets
Simon Atanasyan via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 4 10:40:12 PDT 2016
Author: atanasyan
Date: Sun Sep 4 12:40:12 2016
New Revision: 280630
URL: http://llvm.org/viewvc/llvm-project?rev=280630&view=rev
Log:
[ELF][MIPS] Do not emit DT_REL[A]COUNT for MIPS targets
It looks like MIPS dynamic loader does not support RELCOUNT tag.
Both gold/bfd linkers does not emit this tag on MIPS. I will investigate
the problem further but for now it is better to behave like GNU linkers.
Modified:
lld/trunk/ELF/OutputSections.cpp
lld/trunk/test/ELF/mips-32.s
Modified: lld/trunk/ELF/OutputSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=280630&r1=280629&r2=280630&view=diff
==============================================================================
--- lld/trunk/ELF/OutputSections.cpp (original)
+++ lld/trunk/ELF/OutputSections.cpp Sun Sep 4 12:40:12 2016
@@ -671,9 +671,14 @@ template <class ELFT> void DynamicSectio
Add({IsRela ? DT_RELAENT : DT_RELENT,
uintX_t(IsRela ? sizeof(Elf_Rela) : sizeof(Elf_Rel))});
- size_t NumRelativeRels = Out<ELFT>::RelaDyn->getRelativeRelocCount();
- if (Config->ZCombreloc && NumRelativeRels)
- Add({IsRela ? DT_RELACOUNT : DT_RELCOUNT, NumRelativeRels});
+ // MIPS dynamic loader does not support RELCOUNT tag.
+ // The problem is in the tight relation between dynamic
+ // relocations and GOT. So do not emit this tag on MIPS.
+ if (Config->EMachine != EM_MIPS) {
+ size_t NumRelativeRels = Out<ELFT>::RelaDyn->getRelativeRelocCount();
+ if (Config->ZCombreloc && NumRelativeRels)
+ Add({IsRela ? DT_RELACOUNT : DT_RELCOUNT, NumRelativeRels});
+ }
}
if (Out<ELFT>::RelaPlt && Out<ELFT>::RelaPlt->hasRelocs()) {
Add({DT_JMPREL, Out<ELFT>::RelaPlt});
Modified: lld/trunk/test/ELF/mips-32.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-32.s?rev=280630&r1=280629&r2=280630&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-32.s (original)
+++ lld/trunk/test/ELF/mips-32.s Sun Sep 4 12:40:12 2016
@@ -52,10 +52,11 @@ v2:
# REL-NEXT: }
# REL-NEXT: ]
-# REL: DynamicSection [
-# REL: Tag Type Name/Value
-# REL: 0x00000012 RELSZ 16 (bytes)
-# REL: 0x00000013 RELENT 8 (bytes)
+# REL: DynamicSection [
+# REL: Tag Type Name/Value
+# REL: 0x00000012 RELSZ 16 (bytes)
+# REL: 0x00000013 RELENT 8 (bytes)
+# REL-NOT: 0x6FFFFFFA RELCOUNT
# REL: Primary GOT {
# REL-NEXT: Canonical gp value:
More information about the llvm-commits
mailing list