[binutils-gdb] Prevent an assertion from being triggered when linking an ARM object file with incorrectly set build

Nick Clifton nickc@sourceware.org
Tue Mar 1 09:53:13 GMT 2022


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

commit 81c9e0f6c48748f4b66fc3b13e12eb68735cf1f9
Author: Nick Clifton <nickc@redhat.com>
Date:   Tue Mar 1 09:51:59 2022 +0000

    Prevent an assertion from being triggered when linking an ARM object file with incorrectly set build attributes.
    
            PR 28848
            PR 28859
            * elf32-arm.c (elf32_arm_merge_eabi_attributes): If the first
            input bfd has a Tag_ABI_HardFP_use set to 3 but does not also have
            TAG_FP_arch set then reset the TAG_ABI_HardFP_use.

Diff:
---
 bfd/ChangeLog   | 7 +++++++
 bfd/elf32-arm.c | 8 ++++++++
 2 files changed, 15 insertions(+)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7f0f25159b7..843bdc8d8a1 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2022-03-01  Nick Clifton  <nickc@redhat.com>
+
+	PR 28848
+	* elf32-arm.c (elf32_arm_merge_eabi_attributes): If the first
+	input bfd has a Tag_ABI_HardFP_use set to 3 but does not also have
+	TAG_FP_arch set then reset the TAG_ABI_HardFP_use.
+
 2022-02-28  Torbjörn Svensson  <torbjorn.svensson@st.com>
 
 	PR 25713
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 86da60e768c..616efe60ad1 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -14523,6 +14523,14 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
 	  out_attr[Tag_MPextension_use_legacy].i = 0;
 	}
 
+      /* PR 28859 and 28848:  Handle the case where the first input file,
+	 eg crti.o, has a Tag_ABI_HardFP_use of 3 but no Tag_FP_arch set.
+	 Using Tag_ABI_HardFP_use in this way is deprecated, so reset the
+	 attribute to zero.
+	 FIXME: Should we handle other non-zero values of Tag_ABI_HardFO_use ? */
+      if (out_attr[Tag_ABI_HardFP_use].i == 3 && out_attr[Tag_FP_arch].i == 0)
+	out_attr[Tag_ABI_HardFP_use].i = 0;
+
       return result;
     }


More information about the Binutils-cvs mailing list