X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Felfxx-riscv.h;h=3ae549f74e43382479b7a3bb78244a2c178393ea;hb=ade4fd9ba4827769326207fc0d8d835205c08ae3;hp=a2ac2c2e83e492aaf6631aabbfc2480b24194626;hpb=2571583aed598dd3f9651b53434e5f177a0e3cf7;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elfxx-riscv.h b/bfd/elfxx-riscv.h index a2ac2c2e83..3ae549f74e 100644 --- a/bfd/elfxx-riscv.h +++ b/bfd/elfxx-riscv.h @@ -1,5 +1,5 @@ /* RISC-V ELF specific backend routines. - Copyright (C) 2011-2017 Free Software Foundation, Inc. + Copyright (C) 2011-2020 Free Software Foundation, Inc. Contributed by Andrew Waterman (andrew@sifive.com). Based on MIPS target. @@ -30,4 +30,59 @@ extern reloc_howto_type * riscv_reloc_type_lookup (bfd *, bfd_reloc_code_real_type); extern reloc_howto_type * -riscv_elf_rtype_to_howto (unsigned int r_type); +riscv_elf_rtype_to_howto (bfd *, unsigned int r_type); + +#define RISCV_DONT_CARE_VERSION -1 + +/* The information of architecture attribute. */ +struct riscv_subset_t +{ + const char *name; + int major_version; + int minor_version; + struct riscv_subset_t *next; +}; + +typedef struct riscv_subset_t riscv_subset_t; + +typedef struct { + riscv_subset_t *head; + riscv_subset_t *tail; +} riscv_subset_list_t; + +extern void +riscv_release_subset_list (riscv_subset_list_t *); + +extern void +riscv_add_subset (riscv_subset_list_t *, + const char *, + int, int); + +extern riscv_subset_t * +riscv_lookup_subset (const riscv_subset_list_t *, + const char *); + +extern riscv_subset_t * +riscv_lookup_subset_version (const riscv_subset_list_t *, + const char *, + int, int); + +typedef struct { + riscv_subset_list_t *subset_list; + void (*error_handler) (const char *, + ...) ATTRIBUTE_PRINTF_1; + unsigned *xlen; +} riscv_parse_subset_t; + +extern bfd_boolean +riscv_parse_subset (riscv_parse_subset_t *, + const char *); + +extern const char * +riscv_supported_std_ext (void); + +extern void +riscv_release_subset_list (riscv_subset_list_t *); + +extern char * +riscv_arch_str (unsigned, const riscv_subset_list_t *);