RISC-V: Check if the merged ISA string is conflicting
Checks
Commit Message
In the current implementation, the linker does not check if the merged
ISA string is conflicting when attempting to merge two ISA strings.
For instance, no error message is generated when the linker links
objectA (rv64i_zfinx) with objectB (rv64if).
Signed-off-by: Yu-Cheng Liang <yclwlcy@gmail.com>
---
bfd/elfnn-riscv.c | 8 ++++++++
1 file changed, 8 insertions(+)
riscv_release_subset_list (&out_subsets);
--
2.47.1
@@ -3965,6 +3965,14 @@ riscv_merge_arch_attr_info (bfd *ibfd, char
*in_arch, char *out_arch)
merged_arch_str = riscv_arch_str (ARCH_SIZE, &merged_subsets);
+ /* Check if the merged ISA string is conflicting. */
+ riscv_subset_list_t subsets = {NULL, NULL, NULL};
+ unsigned xlen;
+ riscv_parse_subset_t riscv_rps_merged =
+ {&subsets, _bfd_error_handler, &xlen, NULL, false};
+ if (!riscv_parse_subset (&riscv_rps_merged, merged_arch_str))
+ return NULL;
+
/* Release the subset lists. */
riscv_release_subset_list (&in_subsets);