/* IEEE-695 object file formats: definitions internal to BFD. Copyright (C) 1990-2014 Free Software Foundation, Inc. Written by Cygnus Support. Mostly Steve Chamberlain's fault. This file is part of BFD, the Binary File Descriptor library. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ typedef struct { unsigned int index:24; char letter; } ieee_symbol_index_type; typedef struct ct { bfd *this; struct ct *next; } bfd_chain_type; typedef struct ieee_symbol { asymbol symbol; struct ieee_symbol *next; unsigned int index; } ieee_symbol_type; typedef struct ieee_reloc { arelent relent; struct ieee_reloc *next; ieee_symbol_index_type symbol; } ieee_reloc_type; #define ieee_symbol(x) ((ieee_symbol_type *)(x)) typedef struct ieee_per_section { asection *section; bfd_byte *data; bfd_vma offset; bfd_vma pc; /* For output */ file_ptr current_pos; unsigned int current_byte; bfd_boolean initialized; ieee_reloc_type **reloc_tail_ptr; } ieee_per_section_type; #define ieee_per_section(x) ((ieee_per_section_type *)((x)->used_by_bfd)) typedef struct { unsigned char *input_p; unsigned char *first_byte; unsigned char *last_byte; bfd *abfd; } common_header_type ; typedef struct ieee_data_struct { common_header_type h; bfd_boolean read_symbols; bfd_boolean read_data; file_ptr output_cursor; /* Map of section indexes to section ptrs */ asection **section_table; unsigned int section_table_size; ieee_address_descriptor_type ad; ieee_module_begin_type mb; ieee_w_variable_type w; unsigned int section_count; unsigned int map_idx; /* List of GLOBAL EXPORT symbols */ ieee_symbol_type *external_symbols; /* List of UNDEFINED symbols */ ieee_symbol_type *external_reference; /* When the symbols have been canonicalized, they are in a * special order, we remember various bases here.. */ unsigned int external_symbol_max_index; unsigned int external_symbol_min_index; unsigned int external_symbol_count; int external_symbol_base_offset; unsigned int external_reference_max_index; unsigned int external_reference_min_index; unsigned int external_reference_count; int external_reference_base_offset; bfd_boolean symbol_table_full; bfd_boolean done_debug; bfd_chain_type *chain_head; bfd_chain_type *chain_root; } ieee_data_type; typedef struct { file_ptr file_offset; bfd *abfd; } ieee_ar_obstack_type; typedef struct ieee_ar_data_struct { common_header_type h; ieee_ar_obstack_type *elements; unsigned int element_index ; unsigned int element_count; } ieee_ar_data_type; #define IEEE_DATA(abfd) ((abfd)->tdata.ieee_data) #define IEEE_AR_DATA(abfd) ((abfd)->tdata.ieee_ar_data) #define ptr(abfd) (ieee_data(abfd)->input_p)