[lld] r352413 - ELF: Set sh_info on RelaIplt to point to the IgotPlt output section.
Peter Collingbourne via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 28 11:29:42 PST 2019
Author: pcc
Date: Mon Jan 28 11:29:41 2019
New Revision: 352413
URL: http://llvm.org/viewvc/llvm-project?rev=352413&view=rev
Log:
ELF: Set sh_info on RelaIplt to point to the IgotPlt output section.
Previously we were setting it to the GotPlt output section, which is
incorrect on ARM where this section is in .got. In static binaries
this can lead to sh_info being set to -1 (because there is no .got.plt)
which results in various tools rejecting the output file.
Differential Revision: https://reviews.llvm.org/D57274
Modified:
lld/trunk/ELF/SyntheticSections.cpp
lld/trunk/test/ELF/arm-gnu-ifunc.s
Modified: lld/trunk/ELF/SyntheticSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SyntheticSections.cpp?rev=352413&r1=352412&r2=352413&view=diff
==============================================================================
--- lld/trunk/ELF/SyntheticSections.cpp (original)
+++ lld/trunk/ELF/SyntheticSections.cpp Mon Jan 28 11:29:41 2019
@@ -1512,8 +1512,10 @@ void RelocationBaseSection::finalizeCont
else
getParent()->Link = 0;
- if (In.RelaIplt == this || In.RelaPlt == this)
+ if (In.RelaPlt == this)
getParent()->Info = In.GotPlt->getParent()->SectionIndex;
+ if (In.RelaIplt == this)
+ getParent()->Info = In.IgotPlt->getParent()->SectionIndex;
}
RelrBaseSection::RelrBaseSection()
Modified: lld/trunk/test/ELF/arm-gnu-ifunc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/arm-gnu-ifunc.s?rev=352413&r1=352412&r2=352413&view=diff
==============================================================================
--- lld/trunk/test/ELF/arm-gnu-ifunc.s (original)
+++ lld/trunk/test/ELF/arm-gnu-ifunc.s Mon Jan 28 11:29:41 2019
@@ -35,6 +35,8 @@ _start:
// CHECK-NEXT: Address: 0x100F4
// CHECK-NEXT: Offset: 0xF4
// CHECK-NEXT: Size: 16
+// CHECK-NEXT: Link:
+// CHECK-NEXT: Info: 4
// CHECK: Name: .plt
// CHECK-NEXT: Type: SHT_PROGBITS
// CHECK-NEXT: Flags [
@@ -44,7 +46,8 @@ _start:
// CHECK-NEXT: Address: 0x11020
// CHECK-NEXT: Offset: 0x1020
// CHECK-NEXT: Size: 32
-// CHECK: Name: .got
+// CHECK: Index: 4
+// CHECK-NEXT: Name: .got
// CHECK-NEXT: Type: SHT_PROGBITS
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
More information about the llvm-commits
mailing list