From 0baa1d3dbe64b91dd74e61fffe40e75983d4b0de Mon Sep 17 00:00:00 2001 From: George Rimar Date: Fri, 18 Mar 2016 09:28:39 +0000 Subject: [PATCH] [ELF] - Set the sh_entsize for mergable sections Previously sh_entsize field was not set for MergeOutputSection. Patch fixes that. That should resolve the https://llvm.org/bugs/show_bug.cgi?id=26975 Differential revision: http://reviews.llvm.org/D18248 llvm-svn: 263780 --- lld/ELF/OutputSections.cpp | 1 + lld/test/ELF/merge-string.s | 6 +++--- lld/test/ELF/merge.s | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lld/ELF/OutputSections.cpp b/lld/ELF/OutputSections.cpp index 97cf56f..b456ac6 100644 --- a/lld/ELF/OutputSections.cpp +++ b/lld/ELF/OutputSections.cpp @@ -1220,6 +1220,7 @@ void MergeOutputSection::addSection(InputSectionBase *C) { ArrayRef D = S->getSectionData(); StringRef Data((const char *)D.data(), D.size()); uintX_t EntSize = S->getSectionHdr()->sh_entsize; + this->Header.sh_entsize = EntSize; // If this is of type string, the contents are null-terminated strings. if (this->Header.sh_flags & SHF_STRINGS) { diff --git a/lld/test/ELF/merge-string.s b/lld/test/ELF/merge-string.s index 40cc441..69536bd 100644 --- a/lld/test/ELF/merge-string.s +++ b/lld/test/ELF/merge-string.s @@ -32,7 +32,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: ) @@ -50,7 +50,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: 61626300 626300 |abc.bc.| // NOTAIL-NEXT: ) @@ -68,7 +68,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: ) diff --git a/lld/test/ELF/merge.s b/lld/test/ELF/merge.s index 9cead64..b5bb5d2 100644 --- a/lld/test/ELF/merge.s +++ b/lld/test/ELF/merge.s @@ -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: ) -- 2.7.4