[lld] r288585 - Ignone SHF_INFO_LINK.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Sat Dec 3 07:26:19 PST 2016


Author: rafael
Date: Sat Dec  3 09:26:18 2016
New Revision: 288585

URL: http://llvm.org/viewvc/llvm-project?rev=288585&view=rev
Log:
Ignone SHF_INFO_LINK.

Some elf producers (dtrace) put this flag in relocation sections and
some (MC) don't. If we don't ignore the flag we end up with multiple
relocation sections poiting to the same section, which we don't
support.

Added:
    lld/trunk/test/ELF/Inputs/shf-info-link.test
    lld/trunk/test/ELF/shf-info-link.test
Modified:
    lld/trunk/ELF/InputSection.cpp

Modified: lld/trunk/ELF/InputSection.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputSection.cpp?rev=288585&r1=288584&r2=288585&view=diff
==============================================================================
--- lld/trunk/ELF/InputSection.cpp (original)
+++ lld/trunk/ELF/InputSection.cpp Sat Dec  3 09:26:18 2016
@@ -92,9 +92,10 @@ template <class ELFT>
 InputSectionBase<ELFT>::InputSectionBase(elf::ObjectFile<ELFT> *File,
                                          const Elf_Shdr *Hdr, StringRef Name,
                                          Kind SectionKind)
-    : InputSectionBase(File, Hdr->sh_flags, Hdr->sh_type, Hdr->sh_entsize,
-                       Hdr->sh_link, Hdr->sh_info, Hdr->sh_addralign,
-                       getSectionContents(File, Hdr), Name, SectionKind) {
+    : InputSectionBase(File, Hdr->sh_flags & ~SHF_INFO_LINK, Hdr->sh_type,
+                       Hdr->sh_entsize, Hdr->sh_link, Hdr->sh_info,
+                       Hdr->sh_addralign, getSectionContents(File, Hdr), Name,
+                       SectionKind) {
   this->Offset = Hdr->sh_offset;
 }
 

Added: lld/trunk/test/ELF/Inputs/shf-info-link.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/Inputs/shf-info-link.test?rev=288585&view=auto
==============================================================================
--- lld/trunk/test/ELF/Inputs/shf-info-link.test (added)
+++ lld/trunk/test/ELF/Inputs/shf-info-link.test Sat Dec  3 09:26:18 2016
@@ -0,0 +1,21 @@
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+  - Name:            .rela.text
+    Type:            SHT_RELA
+    Link:            .symtab
+    Info:            .text
+    Relocations:
+      - Offset:          0x0000000000000000
+        Symbol:          foo
+        Type:            R_X86_64_64
+Symbols:
+  Global:
+    - Name:            foo

Added: lld/trunk/test/ELF/shf-info-link.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/shf-info-link.test?rev=288585&view=auto
==============================================================================
--- lld/trunk/test/ELF/shf-info-link.test (added)
+++ lld/trunk/test/ELF/shf-info-link.test Sat Dec  3 09:26:18 2016
@@ -0,0 +1,32 @@
+# RUN: yaml2obj %s -o %t.o
+# RUN: yaml2obj %S/Inputs/shf-info-link.test  -o %t2.o
+# RUN: ld.lld %t.o %t2.o -o %t3.o -r
+# RUN: llvm-readobj -s %t3.o | FileCheck %s
+
+# CHECK-NOT: Name: .rela.text
+# CHECK:     Name: .rela.text
+# CHECK-NOT: Name: .rela.text
+
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+  - Name:            .rela.text
+    Type:            SHT_RELA
+    Flags:           [ SHF_INFO_LINK ]
+    Link:            .symtab
+    Info:            .text
+    Relocations:
+      - Offset:          0x0000000000000000
+        Symbol:          foo
+        Type:            R_X86_64_64
+Symbols:
+  Global:
+    - Name:            foo




More information about the llvm-commits mailing list