[lld] r318306 - Propagate sh_entsize out.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 15 08:56:20 PST 2017


Author: rafael
Date: Wed Nov 15 08:56:20 2017
New Revision: 318306

URL: http://llvm.org/viewvc/llvm-project?rev=318306&view=rev
Log:
Propagate sh_entsize out.

No difference in practice other than having sh_entsize in the output.

This should simplify the patch for handling SHF_MERGE in -r.

Based on a patch by George Rimar.

Modified:
    lld/trunk/ELF/SyntheticSections.cpp
    lld/trunk/test/ELF/basic-aarch64.s
    lld/trunk/test/ELF/basic-mips.s
    lld/trunk/test/ELF/basic-ppc.s
    lld/trunk/test/ELF/basic-sparcv9.s
    lld/trunk/test/ELF/basic.s
    lld/trunk/test/ELF/basic32.s
    lld/trunk/test/ELF/basic64be.s
    lld/trunk/test/ELF/build-id.s
    lld/trunk/test/ELF/compressed-debug-input.s
    lld/trunk/test/ELF/gc-merge-local-sym.s
    lld/trunk/test/ELF/gc-sections-merge-addend.s
    lld/trunk/test/ELF/gc-sections-merge-implicit-addend.s
    lld/trunk/test/ELF/gc-sections-merge.s
    lld/trunk/test/ELF/linkerscript/merge-sections.s
    lld/trunk/test/ELF/merge-string.s
    lld/trunk/test/ELF/merge.s

Modified: lld/trunk/ELF/SyntheticSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SyntheticSections.cpp?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/ELF/SyntheticSections.cpp (original)
+++ lld/trunk/ELF/SyntheticSections.cpp Wed Nov 15 08:56:20 2017
@@ -2514,8 +2514,16 @@ void elf::mergeSections() {
     uint32_t Alignment = std::max<uint32_t>(MS->Alignment, MS->Entsize);
 
     auto I = llvm::find_if(MergeSections, [=](MergeSyntheticSection *Sec) {
+      // While we could create a single synthetic section for two different
+      // values of Entsize, it is better to take Entsize into consideration.
+      //
+      // With a single synthetic section no two pieces with different Entsize
+      // could be equal, so we may as well have two sections.
+      //
+      // Using Entsize in here also allows us to propagate it to the synthetic
+      // section.
       return Sec->Name == OutsecName && Sec->Flags == MS->Flags &&
-             Sec->Alignment == Alignment;
+             Sec->Entsize == MS->Entsize && Sec->Alignment == Alignment;
     });
     if (I == MergeSections.end()) {
       MergeSyntheticSection *Syn =
@@ -2523,6 +2531,7 @@ void elf::mergeSections() {
       MergeSections.push_back(Syn);
       I = std::prev(MergeSections.end());
       S = Syn;
+      Syn->Entsize = MS->Entsize;
     } else {
       S = nullptr;
     }

Modified: lld/trunk/test/ELF/basic-aarch64.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/basic-aarch64.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/basic-aarch64.s (original)
+++ lld/trunk/test/ELF/basic-aarch64.s Wed Nov 15 08:56:20 2017
@@ -81,7 +81,7 @@ _start:
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
 # CHECK-NEXT:     AddressAlignment: 1
-# CHECK-NEXT:     EntrySize: 0
+# CHECK-NEXT:     EntrySize: 1
 # CHECK-NEXT:   }
 # CHECK-NEXT:   Section {
 # CHECK-NEXT:     Index: 3

Modified: lld/trunk/test/ELF/basic-mips.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/basic-mips.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/basic-mips.s (original)
+++ lld/trunk/test/ELF/basic-mips.s Wed Nov 15 08:56:20 2017
@@ -164,7 +164,7 @@ __start:
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
 # CHECK-NEXT:     AddressAlignment: 1
-# CHECK-NEXT:     EntrySize: 0
+# CHECK-NEXT:     EntrySize: 1
 # CHECK-NEXT:   }
 # CHECK-NEXT:   Section {
 # CHECK-NEXT:     Index: 8

Modified: lld/trunk/test/ELF/basic-ppc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/basic-ppc.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/basic-ppc.s (original)
+++ lld/trunk/test/ELF/basic-ppc.s Wed Nov 15 08:56:20 2017
@@ -163,7 +163,7 @@
 // CHECK-NEXT:     Link: 0
 // CHECK-NEXT:     Info: 0
 // CHECK-NEXT:     AddressAlignment: 1
-// CHECK-NEXT:     EntrySize: 0
+// CHECK-NEXT:     EntrySize: 1
 // CHECK-NEXT:     SectionData (
 // CHECK-NEXT:       0000: 4C4C4420 312E3000 |LLD 1.0.|
 // CHECK-NEXT:     )

Modified: lld/trunk/test/ELF/basic-sparcv9.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/basic-sparcv9.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/basic-sparcv9.s (original)
+++ lld/trunk/test/ELF/basic-sparcv9.s Wed Nov 15 08:56:20 2017
@@ -81,7 +81,7 @@ _start:
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
 # CHECK-NEXT:     AddressAlignment: 1
-# CHECK-NEXT:     EntrySize: 0
+# CHECK-NEXT:     EntrySize: 1
 # CHECK-NEXT:   }
 # CHECK-NEXT:   Section {
 # CHECK-NEXT:     Index: 3

Modified: lld/trunk/test/ELF/basic.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/basic.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/basic.s (original)
+++ lld/trunk/test/ELF/basic.s Wed Nov 15 08:56:20 2017
@@ -83,7 +83,7 @@ _start:
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
 # CHECK-NEXT:     AddressAlignment: 1
-# CHECK-NEXT:     EntrySize: 0
+# CHECK-NEXT:     EntrySize: 1
 # CHECK-NEXT:   }
 # CHECK-NEXT:   Section {
 # CHECK-NEXT:     Index: 3

Modified: lld/trunk/test/ELF/basic32.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/basic32.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/basic32.s (original)
+++ lld/trunk/test/ELF/basic32.s Wed Nov 15 08:56:20 2017
@@ -80,7 +80,7 @@ _start:
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
 # CHECK-NEXT:     AddressAlignment: 1
-# CHECK-NEXT:     EntrySize: 0
+# CHECK-NEXT:     EntrySize: 1
 # CHECK-NEXT:   }
 # CHECK-NEXT:   Section {
 # CHECK-NEXT:     Index: 3

Modified: lld/trunk/test/ELF/basic64be.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/basic64be.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/basic64be.s (original)
+++ lld/trunk/test/ELF/basic64be.s Wed Nov 15 08:56:20 2017
@@ -175,7 +175,7 @@ _start:
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
 # CHECK-NEXT:     AddressAlignment: 1
-# CHECK-NEXT:     EntrySize: 0
+# CHECK-NEXT:     EntrySize: 1
 # CHECK-NEXT:     SectionData (
 # CHECK-NEXT:         0000: 4C4C4420 312E3000 |LLD 1.0.|
 # CHECK-NEXT:     )

Modified: lld/trunk/test/ELF/build-id.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/build-id.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/build-id.s (original)
+++ lld/trunk/test/ELF/build-id.s Wed Nov 15 08:56:20 2017
@@ -63,15 +63,15 @@ _start:
 # DEFAULT:      Contents of section .note.test:
 # DEFAULT:      Contents of section .note.gnu.build-id:
 # DEFAULT-NEXT: 04000000 08000000 03000000 474e5500  ............GNU.
-# DEFAULT-NEXT: 1950bcad 6ffba153
+# DEFAULT-NEXT: 894c04e8 fbf5556b
 
 # MD5:      Contents of section .note.gnu.build-id:
 # MD5-NEXT: 04000000 10000000 03000000 474e5500  ............GNU.
-# MD5-NEXT: 6560b957 58afb40a 70f61d5a 7d76104e
+# MD5-NEXT: 6a51bbd7 9e8ee3f9 2e02d213 711cfec9
 
 # SHA1:      Contents of section .note.gnu.build-id:
 # SHA1-NEXT: 04000000 14000000 03000000 474e5500  ............GNU.
-# SHA1-NEXT: c41b2962 9fd0d863 0a35299a 746a626f
+# SHA1-NEXT: 9a8618b1 d6fd0e5c eda73dd8 76de5596
 
 # UUID:      Contents of section .note.gnu.build-id:
 # UUID-NEXT: 04000000 10000000 03000000 474e5500  ............GNU.

Modified: lld/trunk/test/ELF/compressed-debug-input.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/compressed-debug-input.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/compressed-debug-input.s (original)
+++ lld/trunk/test/ELF/compressed-debug-input.s Wed Nov 15 08:56:20 2017
@@ -59,7 +59,7 @@
 # DATA-NEXT:   Link: 0
 # DATA-NEXT:   Info: 0
 # DATA-NEXT:   AddressAlignment: 1
-# DATA-NEXT:   EntrySize: 0
+# DATA-NEXT:   EntrySize: 1
 # DATA-NEXT:   SectionData (
 # DATA-NEXT:     0000: 6C6F6E67 20756E73 69676E65 6420696E  |long unsigned in|
 # DATA-NEXT:     0010: 7400756E 7369676E 65642063 68617200  |t.unsigned char.|

Modified: lld/trunk/test/ELF/gc-merge-local-sym.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/gc-merge-local-sym.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/gc-merge-local-sym.s (original)
+++ lld/trunk/test/ELF/gc-merge-local-sym.s Wed Nov 15 08:56:20 2017
@@ -15,7 +15,7 @@
 // CHECK-NEXT: Link: 0
 // CHECK-NEXT: Info: 0
 // CHECK-NEXT: AddressAlignment: 1
-// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: EntrySize: 1
 // CHECK-NEXT: SectionData (
 // CHECK-NEXT:   0000: 61626300 |abc.|
 // CHECK-NEXT: )

Modified: lld/trunk/test/ELF/gc-sections-merge-addend.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/gc-sections-merge-addend.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/gc-sections-merge-addend.s (original)
+++ lld/trunk/test/ELF/gc-sections-merge-addend.s Wed Nov 15 08:56:20 2017
@@ -16,7 +16,7 @@
 // CHECK-NEXT: Link: 0
 // CHECK-NEXT: Info: 0
 // CHECK-NEXT: AddressAlignment: 1
-// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: EntrySize: 1
 // CHECK-NEXT: SectionData (
 // CHECK-NEXT:   0000: 62617200                    |bar.|
 // CHECK-NEXT: )

Modified: lld/trunk/test/ELF/gc-sections-merge-implicit-addend.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/gc-sections-merge-implicit-addend.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/gc-sections-merge-implicit-addend.s (original)
+++ lld/trunk/test/ELF/gc-sections-merge-implicit-addend.s Wed Nov 15 08:56:20 2017
@@ -16,7 +16,7 @@
 // CHECK-NEXT: Link: 0
 // CHECK-NEXT: Info: 0
 // CHECK-NEXT: AddressAlignment: 1
-// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: EntrySize: 1
 // CHECK-NEXT: SectionData (
 // CHECK-NEXT:   0000: 62617200                    |bar.|
 // CHECK-NEXT: )

Modified: lld/trunk/test/ELF/gc-sections-merge.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/gc-sections-merge.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/gc-sections-merge.s (original)
+++ lld/trunk/test/ELF/gc-sections-merge.s Wed Nov 15 08:56:20 2017
@@ -18,7 +18,7 @@
 // CHECK-NEXT: Link: 0
 // CHECK-NEXT: Info: 0
 // CHECK-NEXT: AddressAlignment: 1
-// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: EntrySize: 1
 // CHECK-NEXT: SectionData (
 // CHECK-NEXT:   0000: 666F6F00 62617200                    |foo.bar.|
 // CHECK-NEXT: )
@@ -36,7 +36,7 @@
 // GC-NEXT: Link: 0
 // GC-NEXT: Info: 0
 // GC-NEXT: AddressAlignment: 1
-// GC-NEXT: EntrySize: 0
+// GC-NEXT: EntrySize: 1
 // GC-NEXT: SectionData (
 // GC-NEXT:   0000: 666F6F00                                |foo.|
 // GC-NEXT: )

Modified: lld/trunk/test/ELF/linkerscript/merge-sections.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/merge-sections.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript/merge-sections.s (original)
+++ lld/trunk/test/ELF/linkerscript/merge-sections.s Wed Nov 15 08:56:20 2017
@@ -21,7 +21,7 @@
 # CHECK-NEXT:   Link: 0
 # CHECK-NEXT:   Info: 0
 # CHECK-NEXT:   AddressAlignment: 2
-# CHECK-NEXT:   EntrySize: 0
+# CHECK-NEXT:   EntrySize: 2
 # CHECK-NEXT: }
 
 # CHECK:      Name: begin

Modified: lld/trunk/test/ELF/merge-string.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/merge-string.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/merge-string.s (original)
+++ lld/trunk/test/ELF/merge-string.s Wed Nov 15 08:56:20 2017
@@ -34,7 +34,7 @@ zed:
 // CHECK-NEXT: Link: 0
 // CHECK-NEXT: Info: 0
 // CHECK-NEXT: AddressAlignment: 1
-// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: EntrySize: 1
 // CHECK-NEXT: SectionData (
 // CHECK-NEXT:   0000: 61626300                             |abc.|
 // CHECK-NEXT: )
@@ -52,7 +52,7 @@ zed:
 // NOTAIL-NEXT: Link: 0
 // NOTAIL-NEXT: Info: 0
 // NOTAIL-NEXT: AddressAlignment: 1
-// NOTAIL-NEXT: EntrySize: 0
+// NOTAIL-NEXT: EntrySize: 1
 // NOTAIL-NEXT: SectionData (
 // NOTAIL-NEXT:   0000: 62630061 626300                     |bc.abc.|
 // NOTAIL-NEXT: )
@@ -88,7 +88,7 @@ zed:
 // CHECK-NEXT: Link: 0
 // CHECK-NEXT: Info: 0
 // CHECK-NEXT: AddressAlignment: 2
-// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: EntrySize: 2
 // CHECK-NEXT: SectionData (
 // CHECK-NEXT:   0000: 14000000                             |....|
 // CHECK-NEXT: )

Modified: lld/trunk/test/ELF/merge.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/merge.s?rev=318306&r1=318305&r2=318306&view=diff
==============================================================================
--- lld/trunk/test/ELF/merge.s (original)
+++ lld/trunk/test/ELF/merge.s Wed Nov 15 08:56:20 2017
@@ -29,7 +29,7 @@ zed:
 // CHECK-NEXT:    Link: 0
 // CHECK-NEXT:    Info: 0
 // CHECK-NEXT:    AddressAlignment: 4
-// CHECK-NEXT:    EntrySize: 0
+// CHECK-NEXT:    EntrySize: 4
 // CHECK-NEXT:    SectionData (
 // CHECK-NEXT:      0000: 10000000 42000000
 // CHECK-NEXT:    )




More information about the llvm-commits mailing list