[lld] r304531 - [ELF] - Assign SHF_INFO_LINK flag to REL[A] sections.
George Rimar via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 2 02:17:47 PDT 2017
Author: grimar
Date: Fri Jun 2 04:17:45 2017
New Revision: 304531
URL: http://llvm.org/viewvc/llvm-project?rev=304531&view=rev
Log:
[ELF] - Assign SHF_INFO_LINK flag to REL[A] sections.
Spec says: (http://www.sco.com/developers/gabi/latest/ch4.sheader.html)
sh_info
This member holds extra information, whose interpretation depends on the section type.
If the sh_flags field for this section header includes the attribute SHF_INFO_LINK,
then this member represents a section header table index.
SHF_INFO_LINK
The sh_info field of this section header holds a section header table index.
Since sh_info for SHT_REL[A] sections should contain the section header index of the
section to which the relocation applies, this is
consistent with spec to put this flag. Behavior matches both bfd and gold as well.
Differential revision: https://reviews.llvm.org/D33763
Modified:
lld/trunk/ELF/OutputSections.cpp
lld/trunk/test/ELF/emit-relocs.s
Modified: lld/trunk/ELF/OutputSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=304531&r1=304530&r2=304531&view=diff
==============================================================================
--- lld/trunk/ELF/OutputSections.cpp (original)
+++ lld/trunk/ELF/OutputSections.cpp Fri Jun 2 04:17:45 2017
@@ -128,6 +128,7 @@ template <class ELFT> void OutputSection
// the section to which the relocation applies.
InputSectionBase *S = First->getRelocatedSection();
Info = S->getOutputSection()->SectionIndex;
+ Flags |= SHF_INFO_LINK;
}
static uint64_t updateOffset(uint64_t Off, InputSection *S) {
Modified: lld/trunk/test/ELF/emit-relocs.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/emit-relocs.s?rev=304531&r1=304530&r2=304531&view=diff
==============================================================================
--- lld/trunk/test/ELF/emit-relocs.s (original)
+++ lld/trunk/test/ELF/emit-relocs.s Fri Jun 2 04:17:45 2017
@@ -1,7 +1,7 @@
# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t1.o
# RUN: ld.lld --emit-relocs %t1.o -o %t
-# RUN: llvm-readobj -t -r %t | FileCheck %s
+# RUN: llvm-readobj -t -r -s %t | FileCheck %s
## Check single dash form.
# RUN: ld.lld -emit-relocs %t1.o -o %t1
@@ -11,6 +11,13 @@
# RUN: ld.lld -q %t1.o -o %t2
# RUN: llvm-readobj -t -r %t2 | FileCheck %s
+# CHECK: Section {
+# CHECK: Index: 2
+# CHECK-NEXT: Name: .rela.text
+# CHECK-NEXT: Type: SHT_RELA
+# CHECK-NEXT: Flags [
+# CHECK-NEXT: SHF_INFO_LINK
+# CHECK-NEXT: ]
# CHECK: Relocations [
# CHECK-NEXT: Section ({{.*}}) .rela.text {
# CHECK-NEXT: 0x201002 R_X86_64_32 .text 0x1
More information about the llvm-commits
mailing list