mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
MIPS/BFD: Suppress attribute checks for null input
We currently special-case the handling of attribute checks on input objects and make them even before we check a given input object actually contains any sections. This does not add value as empty objects do not cause a compatibility concern and we already make this observation for other properties such as ELF file header flags. Moreover the attributes themselves are stored in a `.gnu.attributes' section so the absence of any section (except from a few special cases) implies there have been no attributes provided either. Therefore it is safe to move the attribute checks later on, after the null-section check has been made. bfd/ * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Suppress attribute checks for null input.
This commit is contained in:
parent
cf8502c131
commit
23ba6f1807
@ -1,3 +1,8 @@
|
||||
2016-01-04 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Suppress
|
||||
attribute checks for null input.
|
||||
|
||||
2016-01-04 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Use local
|
||||
|
@ -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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user