arm: Make 'conflicting CPU architectures' error message more user-friendly
authorChristophe Lyon <christophe.lyon@linaro.org>
Fri, 1 Sep 2023 13:52:49 +0000 (13:52 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Mon, 4 Sep 2023 12:34:30 +0000 (12:34 +0000)
Error messages such as "conflicting CPU architectures 10/16" are not
very to understand, so this patch replaces the numbers with the
description they actually mean:
"conflicting CPU architectures ARM v7E-M vs Pre v4"

2023-09-01  Christophe Lyon  <christophe.lyon@linaro.org>

bfd/
* elf32-arm.c (tag_cpu_arch_combine): Add name_table parameter and
use it.
(elf32_arm_merge_eabi_attributes): Update call to
tag_cpu_arch_combine.

ld/
* testsuite/ld-arm/attr-merge-9.out: Update expected error
message.
* testsuite/ld-arm/attr-merge-arch-2.d: Likewise.

bfd/elf32-arm.c
ld/testsuite/ld-arm/attr-merge-9.out
ld/testsuite/ld-arm/attr-merge-arch-2.d

index 3b7cee3de1ce68797b1c6eff475c43b25ad8783f..f3ad270a6a044232490e4dfa0dceb29d884f6a85 100644 (file)
@@ -14119,7 +14119,7 @@ set_secondary_compatible_arch (bfd *abfd, int arch)
 
 static int
 tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
-                     int newtag, int secondary_compat)
+                     int newtag, int secondary_compat, const char* name_table[])
 {
 #define T(X) TAG_CPU_ARCH_##X
   int tagl, tagh, result;
@@ -14436,8 +14436,8 @@ tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
 
   if (result == -1)
     {
-      _bfd_error_handler (_("error: %pB: conflicting CPU architectures %d/%d"),
-                         ibfd, oldtag, newtag);
+      _bfd_error_handler (_("error: conflicting CPU architectures %s vs %s in %pB"),
+                         name_table[oldtag], name_table[newtag], ibfd);
       return -1;
     }
 
@@ -14632,7 +14632,8 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
            arch_attr = tag_cpu_arch_combine (ibfd, out_attr[i].i,
                                              &secondary_compat_out,
                                              in_attr[i].i,
-                                             secondary_compat);
+                                             secondary_compat,
+                                             name_table);
 
            /* Return with error if failed to merge.  */
            if (arch_attr == -1)
index 6c3e5f36c17237fc4cc3726b73c2dac3057d7380..552a80ab4d1ac04319d0c81088c993a26a1ee99e 100644 (file)
@@ -1,2 +1,2 @@
-.*: error: .*: conflicting CPU architectures 10/16
+.*: error: conflicting CPU architectures ARM v7 vs ARM v8-M.baseline in .*
 .*: failed to merge target specific data of file tmpdir/attr-merge-9b.o
index f7de02cf24062f6d83cf9f536dcf96aa2477cc32..cebea49acbe7ce95ca4531216c9b2655b3e53f9b 100644 (file)
@@ -2,4 +2,4 @@
 #source: attr-merge-arch-2b.s
 #as:
 #ld: -e main
-#error: conflicting CPU architectures 13/0
+#error: conflicting CPU architectures ARM v7E-M vs Pre v4 in .*