1 /* IEEE-695 object file formats: definitions internal to BFD. 2 Copyright (C) 1990-2016 Free Software Foundation, Inc. 3 Written by Cygnus Support. Mostly Steve Chamberlain's fault. 4 5 This file is part of BFD, the Binary File Descriptor library. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program; if not, write to the Free Software 19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 20 MA 02110-1301, USA. */ 21 22 typedef struct { 23 unsigned int index:24; 24 char letter; 25 } ieee_symbol_index_type; 26 27 typedef struct ct { 28 bfd *this; 29 struct ct *next; 30 } bfd_chain_type; 31 32 typedef struct ieee_symbol 33 { 34 asymbol symbol; 35 struct ieee_symbol *next; 36 37 unsigned int index; 38 } ieee_symbol_type; 39 40 41 typedef struct ieee_reloc { 42 arelent relent; 43 struct ieee_reloc *next; 44 ieee_symbol_index_type symbol; 45 46 } ieee_reloc_type; 47 48 #define ieee_symbol(x) ((ieee_symbol_type *)(x)) 49 50 typedef struct ieee_per_section 51 { 52 asection *section; 53 bfd_byte *data; 54 bfd_vma offset; 55 bfd_vma pc; 56 /* For output */ 57 file_ptr current_pos; 58 unsigned int current_byte; 59 bfd_boolean initialized; 60 ieee_reloc_type **reloc_tail_ptr; 61 } ieee_per_section_type; 62 63 #define ieee_per_section(x) ((ieee_per_section_type *)((x)->used_by_bfd)) 64 65 typedef struct { 66 unsigned char *input_p; 67 unsigned char *first_byte; 68 unsigned char *last_byte; 69 bfd_size_type total_amt; 70 bfd *abfd; 71 } common_header_type ; 72 73 typedef struct ieee_data_struct 74 { 75 common_header_type h; 76 bfd_boolean read_symbols; 77 bfd_boolean read_data; 78 file_ptr output_cursor; 79 /* Map of section indexes to section ptrs */ 80 asection **section_table; 81 unsigned int section_table_size; 82 ieee_address_descriptor_type ad; 83 ieee_module_begin_type mb; 84 ieee_w_variable_type w; 85 86 unsigned int section_count; 87 88 unsigned int map_idx; 89 /* List of GLOBAL EXPORT symbols */ 90 ieee_symbol_type *external_symbols; 91 /* List of UNDEFINED symbols */ 92 ieee_symbol_type *external_reference; 93 94 /* When the symbols have been canonicalized, they are in a 95 * special order, we remember various bases here.. */ 96 unsigned int external_symbol_max_index; 97 unsigned int external_symbol_min_index; 98 unsigned int external_symbol_count; 99 int external_symbol_base_offset; 100 101 unsigned int external_reference_max_index; 102 unsigned int external_reference_min_index; 103 unsigned int external_reference_count; 104 int external_reference_base_offset; 105 106 107 bfd_boolean symbol_table_full; 108 109 110 bfd_boolean done_debug; 111 112 113 bfd_chain_type *chain_head; 114 bfd_chain_type *chain_root; 115 116 } ieee_data_type; 117 118 typedef struct { 119 file_ptr file_offset; 120 bfd *abfd; 121 } ieee_ar_obstack_type; 122 123 typedef struct ieee_ar_data_struct 124 { 125 common_header_type h; 126 ieee_ar_obstack_type *elements; 127 128 unsigned int element_index ; 129 unsigned int element_count; 130 131 } ieee_ar_data_type; 132 133 #define IEEE_DATA(abfd) ((abfd)->tdata.ieee_data) 134 #define IEEE_AR_DATA(abfd) ((abfd)->tdata.ieee_ar_data) 135 136 #define ptr(abfd) (ieee_data(abfd)->input_p) 137