diff options
author | Alan Modra <amodra@gmail.com> | 2020-01-30 17:06:35 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-01-30 17:06:35 +1030 |
commit | 72913831fc585ffa2bed866fb32532513ec10f8e (patch) | |
tree | 271d17d778fe2bafdae039815c5245aa93f34f35 /bfd/xcofflink.c | |
parent | 03fe9cfb9834c9552348a4967c0ca53116b6d2b1 (diff) | |
download | gdb-72913831fc585ffa2bed866fb32532513ec10f8e.zip gdb-72913831fc585ffa2bed866fb32532513ec10f8e.tar.gz gdb-72913831fc585ffa2bed866fb32532513ec10f8e.tar.bz2 |
Remove need to clear obj_coff_keep_syms in coff object_p
* coffgen.c (coff_real_object_p): Don't clear obj_coff_keep_syms
or obj_coff_keep_strings here.
(coff_get_normalized_symtab): Free external syms directly.
* xcofflink.c (xcoff_link_input_bfd): Restore obj_coff_keep_syms
on error exit path.
Diffstat (limited to 'bfd/xcofflink.c')
-rw-r--r-- | bfd/xcofflink.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c index 7078f25..2a431db 100644 --- a/bfd/xcofflink.c +++ b/bfd/xcofflink.c @@ -4782,7 +4782,7 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo, { bfd_size_type sz = o->rawsize ? o->rawsize : o->size; if (!bfd_get_section_contents (input_bfd, o, flinfo->contents, 0, sz)) - return FALSE; + goto err_out; contents = flinfo->contents; } @@ -4804,7 +4804,7 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo, (flinfo->section_info[target_index].relocs + o->output_section->reloc_count))); if (internal_relocs == NULL) - return FALSE; + goto err_out; /* Call processor specific code to relocate the section contents. */ @@ -4814,7 +4814,7 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo, internal_relocs, flinfo->internal_syms, xcoff_data (input_bfd)->csects)) - return FALSE; + goto err_out; offset = o->output_section->vma + o->output_offset - o->vma; irel = internal_relocs; @@ -4866,7 +4866,7 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo, amt = sizeof (* n); n = bfd_alloc (flinfo->output_bfd, amt); if (n == NULL) - return FALSE; + goto err_out; si = flinfo->section_info + target_index; n->next = si->toc_rel_hashes; n->h = h; @@ -4948,7 +4948,7 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo, (input_bfd, is, buf)); if (name == NULL) - return FALSE; + goto err_out; (*flinfo->info->callbacks->unattached_reloc) (flinfo->info, name, @@ -4972,7 +4972,7 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo, if (!xcoff_create_ldrel (output_bfd, flinfo, o->output_section, input_bfd, irel, sec, h)) - return FALSE; + goto err_out; } } @@ -4983,7 +4983,7 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo, if (! bfd_set_section_contents (output_bfd, o->output_section, contents, (file_ptr) o->output_offset, o->size)) - return FALSE; + goto err_out; } obj_coff_keep_syms (input_bfd) = keep_syms; @@ -4995,6 +4995,10 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo, } return TRUE; + + err_out: + obj_coff_keep_syms (input_bfd) = keep_syms; + return FALSE; } #undef N_TMASK |