1/* IEEE-695 object file formats: definitions internal to BFD. 2 Copyright 1990, 1991, 1992, 1994, 1996, 2001, 2002, 2007 3 Free Software Foundation, Inc. 4 Written by Cygnus Support. Mostly Steve Chamberlain's fault. 5 6 This file is part of BFD, the Binary File Descriptor library. 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 3 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program; if not, write to the Free Software 20 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 21 MA 02110-1301, USA. */ 22 23typedef struct { 24 unsigned int index:24; 25 char letter; 26} ieee_symbol_index_type; 27 28typedef struct ct { 29 bfd *this; 30 struct ct *next; 31} bfd_chain_type; 32 33typedef struct ieee_symbol 34{ 35 asymbol symbol; 36 struct ieee_symbol *next; 37 38 unsigned int index; 39} ieee_symbol_type; 40 41 42typedef struct ieee_reloc { 43 arelent relent; 44 struct ieee_reloc *next; 45 ieee_symbol_index_type symbol; 46 47} ieee_reloc_type; 48 49#define ieee_symbol(x) ((ieee_symbol_type *)(x)) 50 51typedef struct ieee_per_section 52{ 53 asection *section; 54 bfd_byte *data; 55 bfd_vma offset; 56 bfd_vma pc; 57 /* For output */ 58 file_ptr current_pos; 59 unsigned int current_byte; 60 bfd_boolean initialized; 61 ieee_reloc_type **reloc_tail_ptr; 62} ieee_per_section_type; 63 64#define ieee_per_section(x) ((ieee_per_section_type *)((x)->used_by_bfd)) 65 66typedef struct { 67 unsigned char *input_p; 68 unsigned char *first_byte; 69 unsigned char *last_byte; 70 bfd *abfd; 71} common_header_type ; 72 73typedef 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 110bfd_boolean done_debug; 111 112 113bfd_chain_type *chain_head; 114bfd_chain_type *chain_root; 115 116} ieee_data_type; 117 118typedef struct { 119 file_ptr file_offset; 120 bfd *abfd; 121} ieee_ar_obstack_type; 122 123typedef 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