aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-arm.c
diff options
context:
space:
mode:
authorThomas Preud'homme <thomas.preudhomme@arm.com>2016-04-06 09:26:42 +0100
committerThomas Preud'homme <thomas.preudhomme@arm.com>2016-04-06 09:28:12 +0100
commit15dd01b1209ec92b361dd2547708dd17ffc2a786 (patch)
tree815d7dca3334989da130bccb43b952ac5713af26 /bfd/elf32-arm.c
parentac17fda08bf2a75ba561a919f05df95ff07959de (diff)
downloadgdb-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.c11
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