summaryrefslogtreecommitdiff
path: root/bfd/elfxx-riscv.c
diff options
context:
space:
mode:
authorNelson Chu <nelson.chu@sifive.com>2021-05-26 10:34:13 +0800
committerNelson Chu <nelson.chu@sifive.com>2021-05-26 11:02:29 +0800
commitfe1f847d9a73c090527d2620eb9883185351aea0 (patch)
tree7e08c1ee26e1a041aceed72797f36b0272f51407 /bfd/elfxx-riscv.c
parent9495896335a297b6810f9a9b03dfe06cc8d82607 (diff)
RISC-V: Allow to link the objects with unknown prefixed extensions.
Since the policies of GNU and llvm toolchain are different for now, current binutils mainline cannot accept any draft extensions, including rvv, zfh, .... The Clang/LLVM allows these draft stuff on mainline, but the GNU ld might be used with them, so this causes the link time problems. The patch allows ld to link the objects with unknown prefixed extensions, which are probably generated by LLVM or customized toolchains. bfd/ * elfxx-riscv.h (check_unknown_prefixed_ext): New bool. * elfxx-riscv.c (riscv_parse_prefixed_ext): Do not check the prefixed extension name if check_unknown_prefixed_ext is false. * elfnn-riscv.c (riscv_merge_arch_attr_info): Set check_unknown_prefixed_ext to false for linker. gas/ * config/tc-riscv.c (riscv_set_arch): Set check_unknown_prefixed_ext to true for assembler.
Diffstat (limited to 'bfd/elfxx-riscv.c')
-rw-r--r--bfd/elfxx-riscv.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 7206ec8573..39b69e2b0a 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1681,7 +1681,8 @@ riscv_parse_prefixed_ext (riscv_parse_subset_t *rps,
and cannot simply be the prefixed name. */
/* Check that the extension name is well-formed. */
- if (!riscv_valid_prefixed_ext (subset))
+ if (rps->check_unknown_prefixed_ext
+ && !riscv_valid_prefixed_ext (subset))
{
rps->error_handler
(_("-march=%s: unknown prefixed ISA extension `%s'"),