This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] MIPS/BFD: Suppress attribute checks for null input


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=23ba6f1807299311717df4d48b5f68d534ab6c47

commit 23ba6f1807299311717df4d48b5f68d534ab6c47
Author: Maciej W. Rozycki <macro@imgtec.com>
Date:   Mon Jan 4 23:00:24 2016 +0000

    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.

Diff:
---
 bfd/ChangeLog    |  5 +++++
 bfd/elfxx-mips.c | 30 +++++++++++++++---------------
 2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7d0fdb8..06dc3b3 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,10 @@
 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
 	pointers to target data.
 
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 39e65d6..e502f73 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)
     {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]