mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
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.
This commit is contained in:
parent
9495896335
commit
fe1f847d9a
@ -1,3 +1,11 @@
|
||||
2021-05-26 Nelson Chu <nelson.chu@sifive.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2021-05-25 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* elf32-arn.c (struct elf_arm_obj_tdata): Add num_entries field.
|
||||
|
@ -3558,11 +3558,13 @@ riscv_merge_arch_attr_info (bfd *ibfd, char *in_arch, char *out_arch)
|
||||
rpe_in.error_handler = _bfd_error_handler;
|
||||
rpe_in.xlen = &xlen_in;
|
||||
rpe_in.get_default_version = NULL;
|
||||
rpe_in.check_unknown_prefixed_ext = false;
|
||||
|
||||
rpe_out.subset_list = &out_subsets;
|
||||
rpe_out.error_handler = _bfd_error_handler;
|
||||
rpe_out.xlen = &xlen_out;
|
||||
rpe_out.get_default_version = NULL;
|
||||
rpe_out.check_unknown_prefixed_ext = false;
|
||||
|
||||
if (in_arch == NULL && out_arch == NULL)
|
||||
return NULL;
|
||||
|
@ -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'"),
|
||||
|
@ -74,6 +74,7 @@ typedef struct
|
||||
void (*get_default_version) (const char *,
|
||||
int *,
|
||||
int *);
|
||||
bool check_unknown_prefixed_ext;
|
||||
} riscv_parse_subset_t;
|
||||
|
||||
extern bool
|
||||
|
@ -1,3 +1,8 @@
|
||||
2021-05-26 Nelson Chu <nelson.chu@sifive.com>
|
||||
|
||||
* config/tc-riscv.c (riscv_set_arch): Set
|
||||
check_unknown_prefixed_ext to true for assembler.
|
||||
|
||||
2021-05-25 Tamar Christina <tamar.christina@arm.com>
|
||||
|
||||
PR gas/25235
|
||||
|
@ -410,6 +410,7 @@ riscv_set_arch (const char *s)
|
||||
rps.error_handler = as_bad;
|
||||
rps.xlen = &xlen;
|
||||
rps.get_default_version = riscv_get_default_ext_version;
|
||||
rps.check_unknown_prefixed_ext = true;
|
||||
|
||||
if (s == NULL)
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user