RISC-V: Allow to link the objects with unknown prefixed extensions.
authorNelson Chu <nelson.chu@sifive.com>
Wed, 26 May 2021 02:34:13 +0000 (10:34 +0800)
committerNelson Chu <nelson.chu@sifive.com>
Wed, 26 May 2021 03:02:29 +0000 (11:02 +0800)
commitfe1f847d9a73c090527d2620eb9883185351aea0
tree7e08c1ee26e1a041aceed72797f36b0272f51407
parent9495896335a297b6810f9a9b03dfe06cc8d82607
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.
bfd/ChangeLog
bfd/elfnn-riscv.c
bfd/elfxx-riscv.c
bfd/elfxx-riscv.h
gas/ChangeLog
gas/config/tc-riscv.c