Fix the alignment of the version info.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 29 Apr 2016 17:19:45 +0000 (17:19 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 29 Apr 2016 17:19:45 +0000 (17:19 +0000)
llvm-svn: 268070

lld/ELF/OutputSections.cpp
lld/test/ELF/verneed.s

index 0088274..6bb9491 100644 (file)
@@ -1521,7 +1521,9 @@ SymbolTableSection<ELFT>::getOutputSection(SymbolBody *Sym) {
 
 template <class ELFT>
 VersionTableSection<ELFT>::VersionTableSection()
-    : OutputSectionBase<ELFT>(".gnu.version", SHT_GNU_versym, SHF_ALLOC) {}
+    : OutputSectionBase<ELFT>(".gnu.version", SHT_GNU_versym, SHF_ALLOC) {
+  this->Header.sh_addralign = sizeof(typename ELFT::Half);
+}
 
 template <class ELFT> void VersionTableSection<ELFT>::finalize() {
   this->Header.sh_size =
@@ -1544,7 +1546,9 @@ template <class ELFT> void VersionTableSection<ELFT>::writeTo(uint8_t *Buf) {
 
 template <class ELFT>
 VersionNeedSection<ELFT>::VersionNeedSection()
-    : OutputSectionBase<ELFT>(".gnu.version_r", SHT_GNU_verneed, SHF_ALLOC) {}
+    : OutputSectionBase<ELFT>(".gnu.version_r", SHT_GNU_verneed, SHF_ALLOC) {
+  this->Header.sh_addralign = sizeof(typename ELFT::Word);
+}
 
 template <class ELFT>
 void VersionNeedSection<ELFT>::addSymbol(SharedSymbol<ELFT> *SS) {
index 2f38453..45d81b4 100644 (file)
@@ -15,7 +15,7 @@
 # CHECK-NEXT:   Size: 8
 # CHECK-NEXT:   Link: 0
 # CHECK-NEXT:   Info: 0
-# CHECK-NEXT:   AddressAlignment: 0
+# CHECK-NEXT:   AddressAlignment: 2
 # CHECK-NEXT:   EntrySize: 2
 # CHECK-NEXT: }
 # CHECK-NEXT: Section {
@@ -30,7 +30,7 @@
 # CHECK-NEXT:   Size: 80
 # CHECK-NEXT:   Link: 5
 # CHECK-NEXT:   Info: 2
-# CHECK-NEXT:   AddressAlignment: 0
+# CHECK-NEXT:   AddressAlignment: 4
 # CHECK-NEXT:   EntrySize: 0
 # CHECK-NEXT: }