diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/elf.c | 20 | ||||
-rw-r--r-- | bfd/elflink.c | 4 |
2 files changed, 12 insertions, 12 deletions
@@ -456,8 +456,7 @@ bfd_elf_get_elf_syms (bfd *ibfd, if (_bfd_mul_overflow (symcount, extsym_size, &amt)) { bfd_set_error (bfd_error_file_too_big); - intsym_buf = NULL; - goto out; + return NULL; } pos = symtab_hdr->sh_offset + symoffset * extsym_size; size_t alloc_ext_size = amt; @@ -466,7 +465,7 @@ bfd_elf_get_elf_syms (bfd *ibfd, &alloc_ext, ibfd, false)) { intsym_buf = NULL; - goto out; + goto out2; } size_t alloc_extshndx_size = 0; @@ -478,7 +477,7 @@ bfd_elf_get_elf_syms (bfd *ibfd, { bfd_set_error (bfd_error_file_too_big); intsym_buf = NULL; - goto out; + goto out1; } alloc_extshndx_size = amt; pos = shndx_hdr->sh_offset + symoffset * sizeof (Elf_External_Sym_Shndx); @@ -489,7 +488,7 @@ bfd_elf_get_elf_syms (bfd *ibfd, ibfd, false)) { intsym_buf = NULL; - goto out; + goto out1; } } @@ -498,12 +497,12 @@ bfd_elf_get_elf_syms (bfd *ibfd, if (_bfd_mul_overflow (symcount, sizeof (Elf_Internal_Sym), &amt)) { bfd_set_error (bfd_error_file_too_big); - goto out; + goto out1; } alloc_intsym = (Elf_Internal_Sym *) bfd_malloc (amt); intsym_buf = alloc_intsym; if (intsym_buf == NULL) - goto out; + goto out1; } /* Convert the symbols to internal form. */ @@ -521,12 +520,13 @@ bfd_elf_get_elf_syms (bfd *ibfd, ibfd, (unsigned long) symoffset); free (alloc_intsym); intsym_buf = NULL; - goto out; + goto out1; } - out: - _bfd_munmap_readonly_temporary (alloc_ext, alloc_ext_size); + out1: _bfd_munmap_readonly_temporary (alloc_extshndx, alloc_extshndx_size); + out2: + _bfd_munmap_readonly_temporary (alloc_ext, alloc_ext_size); return intsym_buf; } diff --git a/bfd/elflink.c b/bfd/elflink.c index 2a05299..dd7ae17 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -2835,7 +2835,7 @@ _bfd_elf_link_info_read_relocs (bfd *abfd, else internal_relocs = alloc2 = (Elf_Internal_Rela *) bfd_malloc (size); if (internal_relocs == NULL) - goto error_return; + return NULL; } alloc1 = external_relocs; @@ -12592,6 +12592,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) if ((sec->flags & SEC_RELOC) != 0) { +#ifndef USE_MMAP size_t ext_size = 0; if (esdi->rel.hdr != NULL) @@ -12599,7 +12600,6 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) if (esdi->rela.hdr != NULL) ext_size += esdi->rela.hdr->sh_size; -#ifndef USE_MMAP if (ext_size > max_external_reloc_size) max_external_reloc_size = ext_size; #endif |