From 72bd6912ea38224481f8bd0ed13b751e0fda4683 Mon Sep 17 00:00:00 2001 From: Kito Cheng Date: Mon, 6 Jul 2020 19:30:36 -0700 Subject: RISC-V: Improve the error message for the mis-matched ISA versions. Consider the updated attr-merge-arch-failed-01.d testcase. Extension A's version are mis-matched between attr-merge-arch-failed-01a.s and attr-merge-arch-failed-01b.s. But the old binutils reports that the mis-matched extension is M rather than A. This commit is used to fix the wrong mis-matched error message. Besides, when parsing the arch string in the riscv_parse_subset, it shouldn't be NULL or empty. However, it might be empty when we failed to merge the arch string in the riscv_merge_attributes. Since we should already issue the correct error message in another side, and the message - ISA string must begin with rv32 or rv64 - is meaninglesss when the arch string is empty, so do not issue it. bfd/ * elfnn-riscv.c (riscv_merge_std_ext): Fix to report the correct error message when the versions of extension are mis-matched. * elfxx-riscv.c (riscv_parse_subset): Don't issue the error when the string is empty. ld/ * testsuite/ld-riscv-elf/attr-merge-arch-failed-01.d: Updated. * testsuite/ld-riscv-elf/attr-merge-arch-failed-01a.s: Likewise. * testsuite/ld-riscv-elf/attr-merge-arch-failed-01b.s: Likewise. --- bfd/elfxx-riscv.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'bfd/elfxx-riscv.c') diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 1570f1d..cfdd867 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1519,9 +1519,15 @@ riscv_parse_subset (riscv_parse_subset_t *rps, } else { - rps->error_handler - (_("-march=%s: ISA string must begin with rv32 or rv64"), - arch); + /* Arch string shouldn't be NULL or empty here. However, + it might be empty only when we failed to merge the arch + string in the riscv_merge_attributes. We have already + issued the correct error message in another side, so do + not issue this error when the arch string is empty. */ + if (strlen (arch)) + rps->error_handler ( + _("-march=%s: ISA string must begin with rv32 or rv64"), + arch); return FALSE; } -- cgit v1.1