diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7d0fdb87cb..06dc3b3d7e 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2016-01-04 Maciej W. Rozycki + + * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Suppress + attribute checks for null input. + 2016-01-04 Maciej W. Rozycki * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Use local diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 39e65d68a0..e502f73c79 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -15056,21 +15056,9 @@ _bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) return FALSE; } - /* Set up the FP ABI attribute from the abiflags if it is not already - set. */ - if (in_tdata->abiflags_valid) - { - obj_attribute *in_attr = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU]; - if (in_attr[Tag_GNU_MIPS_ABI_FP].i == Val_GNU_MIPS_ABI_FP_ANY) - in_attr[Tag_GNU_MIPS_ABI_FP].i = in_tdata->abiflags.fp_abi; - } - - if (!mips_elf_merge_obj_attributes (ibfd, obfd)) - return FALSE; - - /* Check to see if the input BFD actually contains any sections. - If not, its flags may not have been initialised either, but it cannot - actually cause any incompatibility. */ + /* Check to see if the input BFD actually contains any sections. If not, + then it has no attributes, and its flags may not have been initialized + either, but it cannot actually cause any incompatibility. */ for (sec = ibfd->sections; sec != NULL; sec = sec->next) { /* Ignore synthetic sections and empty .text, .data and .bss sections @@ -15092,6 +15080,18 @@ _bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) if (null_input_bfd) return TRUE; + /* Set up the FP ABI attribute from the abiflags if it is not already + set. */ + if (in_tdata->abiflags_valid) + { + obj_attribute *in_attr = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU]; + if (in_attr[Tag_GNU_MIPS_ABI_FP].i == Val_GNU_MIPS_ABI_FP_ANY) + in_attr[Tag_GNU_MIPS_ABI_FP].i = in_tdata->abiflags.fp_abi; + } + + if (!mips_elf_merge_obj_attributes (ibfd, obfd)) + return FALSE; + /* Populate abiflags using existing information. */ if (!in_tdata->abiflags_valid) {