elfxx-riscv.h revision 1.1.1.2
1/* RISC-V ELF specific backend routines. 2 Copyright (C) 2011-2019 Free Software Foundation, Inc. 3 4 Contributed by Andrew Waterman (andrew@sifive.com). 5 Based on MIPS target. 6 7 This file is part of BFD, the Binary File Descriptor library. 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3 of the License, or 12 (at your option) any later version. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program; see the file COPYING3. If not, 21 see <http://www.gnu.org/licenses/>. */ 22 23#include "elf/common.h" 24#include "elf/internal.h" 25 26extern reloc_howto_type * 27riscv_reloc_name_lookup (bfd *, const char *); 28 29extern reloc_howto_type * 30riscv_reloc_type_lookup (bfd *, bfd_reloc_code_real_type); 31 32extern reloc_howto_type * 33riscv_elf_rtype_to_howto (bfd *, unsigned int r_type); 34 35#define RISCV_DONT_CARE_VERSION -1 36 37/* The information of architecture attribute. */ 38struct riscv_subset_t 39{ 40 const char *name; 41 int major_version; 42 int minor_version; 43 struct riscv_subset_t *next; 44}; 45 46typedef struct riscv_subset_t riscv_subset_t; 47 48typedef struct { 49 riscv_subset_t *head; 50 riscv_subset_t *tail; 51} riscv_subset_list_t; 52 53extern void 54riscv_release_subset_list (riscv_subset_list_t *); 55 56extern void 57riscv_add_subset (riscv_subset_list_t *, 58 const char *, 59 int, int); 60 61extern riscv_subset_t * 62riscv_lookup_subset (const riscv_subset_list_t *, 63 const char *); 64 65extern riscv_subset_t * 66riscv_lookup_subset_version (const riscv_subset_list_t *, 67 const char *, 68 int, int); 69 70typedef struct { 71 riscv_subset_list_t *subset_list; 72 void (*error_handler) (const char *, 73 ...) ATTRIBUTE_PRINTF_1; 74 unsigned *xlen; 75} riscv_parse_subset_t; 76 77extern bfd_boolean 78riscv_parse_subset (riscv_parse_subset_t *, 79 const char *); 80 81extern const char * 82riscv_supported_std_ext (void); 83 84extern void 85riscv_release_subset_list (riscv_subset_list_t *); 86 87extern char * 88riscv_arch_str (unsigned, const riscv_subset_list_t *); 89