arm: Make 'conflicting CPU architectures' error message more user-friendly

Message ID 20230901135958.186407-1-christophe.lyon@linaro.org
State Accepted
Headers
Series arm: Make 'conflicting CPU architectures' error message more user-friendly |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Christophe Lyon Sept. 1, 2023, 1:59 p.m. UTC
  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                         | 9 +++++----
 ld/testsuite/ld-arm/attr-merge-9.out    | 2 +-
 ld/testsuite/ld-arm/attr-merge-arch-2.d | 2 +-
 3 files changed, 7 insertions(+), 6 deletions(-)
  

Comments

Nick Clifton Sept. 4, 2023, 12:19 p.m. UTC | #1
Hi Christophe,

> 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.
>

Approved - please apply.

Cheers
   Nick
  

Patch

diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 3b7cee3de1c..f3ad270a6a0 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -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)
diff --git a/ld/testsuite/ld-arm/attr-merge-9.out b/ld/testsuite/ld-arm/attr-merge-9.out
index 6c3e5f36c17..552a80ab4d1 100644
--- a/ld/testsuite/ld-arm/attr-merge-9.out
+++ b/ld/testsuite/ld-arm/attr-merge-9.out
@@ -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
diff --git a/ld/testsuite/ld-arm/attr-merge-arch-2.d b/ld/testsuite/ld-arm/attr-merge-arch-2.d
index f7de02cf240..cebea49acbe 100644
--- a/ld/testsuite/ld-arm/attr-merge-arch-2.d
+++ b/ld/testsuite/ld-arm/attr-merge-arch-2.d
@@ -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 .*