diff options
Diffstat (limited to 'bfd/elfxx-riscv.h')
-rw-r--r-- | bfd/elfxx-riscv.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/bfd/elfxx-riscv.h b/bfd/elfxx-riscv.h index 836f05d..64e41b8 100644 --- a/bfd/elfxx-riscv.h +++ b/bfd/elfxx-riscv.h @@ -31,3 +31,55 @@ riscv_reloc_type_lookup (bfd *, bfd_reloc_code_real_type); extern reloc_howto_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 *); |