[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