Set sh_entsize for .init_array and similar.
authorAlan Modra <amodra@gmail.com>
Thu, 19 May 2016 15:03:42 +0000 (00:33 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 19 May 2016 15:05:24 +0000 (00:35 +0930)
PR gas/20118
* elf.c (elf_fake_sections): Set sh_entsize for SHT_INIT_ARRAY,
SHT_FINI_ARRAY, and SHT_PREINIT_ARRAY.

bfd/ChangeLog
bfd/elf.c

index c17c2bd..878f22f 100644 (file)
@@ -1,3 +1,9 @@
+2016-05-20  Alan Modra  <amodra@gmail.com>
+
+       PR gas/20118
+       * elf.c (elf_fake_sections): Set sh_entsize for SHT_INIT_ARRAY,
+       SHT_FINI_ARRAY, and SHT_PREINIT_ARRAY.
+
 2016-05-19  Cupertino Miranda  <cmiranda@synopsys.com>
 
        * elf32-arc.c (arc_elf_final_write_processing): Changed.
index 1592183..fa4cc4c 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -3208,14 +3208,17 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg)
       break;
 
     case SHT_STRTAB:
-    case SHT_INIT_ARRAY:
-    case SHT_FINI_ARRAY:
-    case SHT_PREINIT_ARRAY:
     case SHT_NOTE:
     case SHT_NOBITS:
     case SHT_PROGBITS:
       break;
 
+    case SHT_INIT_ARRAY:
+    case SHT_FINI_ARRAY:
+    case SHT_PREINIT_ARRAY:
+      this_hdr->sh_entsize = bed->s->arch_size / 8;
+      break;
+
     case SHT_HASH:
       this_hdr->sh_entsize = bed->s->sizeof_hash_entry;
       break;