diff options
author | Thomas Preud'homme <thomas.preudhomme@arm.com> | 2016-04-06 09:26:42 +0100 |
---|---|---|
committer | Thomas Preud'homme <thomas.preudhomme@arm.com> | 2016-04-06 09:28:12 +0100 |
commit | 15dd01b1209ec92b361dd2547708dd17ffc2a786 (patch) | |
tree | 815d7dca3334989da130bccb43b952ac5713af26 /bfd/elf32-arm.c | |
parent | ac17fda08bf2a75ba561a919f05df95ff07959de (diff) | |
download | gdb-15dd01b1209ec92b361dd2547708dd17ffc2a786.zip gdb-15dd01b1209ec92b361dd2547708dd17ffc2a786.tar.gz gdb-15dd01b1209ec92b361dd2547708dd17ffc2a786.tar.bz2 |
Fix memory leak in ld ARM backend
2016-04-06 Thomas Preud'homme <thomas.preudhomme@arm.com>
bfd/
* elf32-arm.c (elf32_arm_size_stubs): Move error_ret_free_local to be
a fall through from error_ret_free_internal. Free local_syms in
error_ret_free_local if allocated from bfd_elf_get_elf_syms ().
Diffstat (limited to 'bfd/elf32-arm.c')
-rw-r--r-- | bfd/elf32-arm.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 81ebf67..1d506f6 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -5294,7 +5294,13 @@ elf32_arm_size_stubs (bfd *output_bfd, error_ret_free_internal: if (elf_section_data (section)->relocs == NULL) free (internal_relocs); - goto error_ret_free_local; + /* Fall through. */ + error_ret_free_local: + if (local_syms != NULL + && (symtab_hdr->contents + != (unsigned char *) local_syms)) + free (local_syms); + return FALSE; } hash = NULL; @@ -5700,9 +5706,6 @@ elf32_arm_size_stubs (bfd *output_bfd, htab->num_a8_erratum_fixes = 0; } return TRUE; - - error_ret_free_local: - return FALSE; } /* Build all the stubs associated with the current output file. The |