mn10300: Don't free cached internal symbol table
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 9 Oct 2017 22:05:03 +0000 (15:05 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 9 Oct 2017 22:05:03 +0000 (15:05 -0700)
Since ELF linker may cache internal symbol table in init_reloc_cookie,
we should check if it is cached, before free it.

* elf-m10300.c (mn10300_elf_check_relocs): Don't free cached
isymbuf.

bfd/ChangeLog
bfd/elf-m10300.c

index c14a3bc..81d2785 100644 (file)
@@ -1,5 +1,10 @@
 2017-10-09  H.J. Lu  <hongjiu.lu@intel.com>
 
+       * elf-m10300.c (mn10300_elf_check_relocs): Don't free cached
+       isymbuf.
+
+2017-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
        * elf32-bfin.c (bfin_size_dynamic_sections): Don't create the
        .interp section with "ld --no-dynamic-linker".
 
index 9214a57..b5951c6 100644 (file)
@@ -1377,7 +1377,7 @@ mn10300_elf_check_relocs (bfd *abfd,
 
   result = TRUE;
  fail:
-  if (isymbuf != NULL)
+  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
 
   return result;