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