tilegx: Set this_hdr.sh_entsize only if section size > 0
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 8 Oct 2017 21:29:52 +0000 (14:29 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 8 Oct 2017 21:29:52 +0000 (14:29 -0700)
This fixes:

/export/build/gnu/binutils-cross/build-tilegx-linux/ld/ld-new   -o tmpdir/comm-data -z norelro -L/export/gnu/import/git/sources/binutils-gdb/ld/testsuite/ld-elf  -T comm-data2.ld -Ltmpdir -lcomm-data tmpdir/comm-data2.o
sh: line 1:  9208 Segmentation fault      (core dumped) /export/build/gnu/binutils-cross/build-tilegx-linux/ld/ld-new -o tmpdir/comm-data -z norelro -L/export/gnu/import/git/sources/binutils-gdb/ld/testsuite/ld-elf -T comm-data2.ld -Ltmpdir -lcomm-data tmpdir/comm-data2.o 2>&1
FAIL: Common symbol override test

* elfxx-tilegx.c (tilegx_elf_finish_dynamic_sections): Set
this_hdr.sh_entsize only if section size > 0.

bfd/ChangeLog
bfd/elfxx-tilegx.c

index 7d7bf5873890a23e39bb1b65f211435ac744c1df..2d1af3a1e5fec13539a935ca19af0a30f9dd3ed9 100644 (file)
@@ -1,3 +1,8 @@
+2017-10-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * elfxx-tilegx.c (tilegx_elf_finish_dynamic_sections): Set
+       this_hdr.sh_entsize only if section size > 0.
+
 2017-10-08  H.J. Lu  <hongjiu.lu@intel.com>
 
        * elfxx-x86.c (elf_x86_allocate_dynrelocs): Reformat.
index a413fb6a9d613e72dc3e512543ba3c8c3c7927a8..b83adc8464dc1d0cd1bf8436ccab82886e11c416 100644 (file)
@@ -4313,10 +4313,10 @@ tilegx_elf_finish_dynamic_sections (bfd *output_bfd,
             entry size.  */
          pad_size = PLT_ENTRY_SIZE - PLT_HEADER_SIZE - PLT_TAIL_SIZE;
          memset (splt->contents + splt->size - pad_size, 0, pad_size);
-       }
 
-      elf_section_data (splt->output_section)->this_hdr.sh_entsize
-       = PLT_ENTRY_SIZE;
+         elf_section_data (splt->output_section)->this_hdr.sh_entsize
+           = PLT_ENTRY_SIZE;
+       }
     }
 
   if (htab->elf.sgotplt)
@@ -4337,10 +4337,10 @@ tilegx_elf_finish_dynamic_sections (bfd *output_bfd,
          TILEGX_ELF_PUT_WORD (htab, output_bfd, (bfd_vma) 0,
                               htab->elf.sgotplt->contents
                               + GOT_ENTRY_SIZE (htab));
-       }
 
-      elf_section_data (htab->elf.sgotplt->output_section)->this_hdr.sh_entsize =
-       GOT_ENTRY_SIZE (htab);
+         elf_section_data (htab->elf.sgotplt->output_section)->this_hdr.sh_entsize =
+           GOT_ENTRY_SIZE (htab);
+       }
     }
 
   if (htab->elf.sgot)
@@ -4354,10 +4354,10 @@ tilegx_elf_finish_dynamic_sections (bfd *output_bfd,
                         0);
          TILEGX_ELF_PUT_WORD (htab, output_bfd, val,
                               htab->elf.sgot->contents);
-       }
 
-      elf_section_data (htab->elf.sgot->output_section)->this_hdr.sh_entsize =
-       GOT_ENTRY_SIZE (htab);
+         elf_section_data (htab->elf.sgot->output_section)->this_hdr.sh_entsize =
+           GOT_ENTRY_SIZE (htab);
+       }
     }
 
   return TRUE;