Home | History | Annotate | Download | only in bfd
      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