OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [binutils/] [coffgrok.h] - Blame information for rev 853

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
/* coffgrok.h
2
   Copyright 2001, 2002, 2003, 2007 Free Software Foundation, Inc.
3
 
4
   This file is part of GNU Binutils.
5
 
6
   This program is free software; you can redistribute it and/or modify
7
   it under the terms of the GNU General Public License as published by
8
   the Free Software Foundation; either version 3 of the License, or
9
   (at your option) any later version.
10
 
11
   This program is distributed in the hope that it will be useful,
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
   GNU General Public License for more details.
15
 
16
   You should have received a copy of the GNU General Public License
17
   along with this program; if not, write to the Free Software
18
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19
   MA 02110-1301, USA.  */
20
 
21
#define T_NULL          0
22
#define T_VOID          1       /* function argument (only used by compiler) */
23
#define T_CHAR          2       /* character            */
24
#define T_SHORT         3       /* short integer        */
25
#define T_INT           4       /* integer              */
26
#define T_LONG          5       /* long integer         */
27
#define T_FLOAT         6       /* floating point       */
28
#define T_DOUBLE        7       /* double word          */
29
#define T_STRUCT        8       /* structure            */
30
#define T_UNION         9       /* union                */
31
#define T_ENUM          10      /* enumeration          */
32
#define T_MOE           11      /* member of enumeration*/
33
#define T_UCHAR         12      /* unsigned character   */
34
#define T_USHORT        13      /* unsigned short       */
35
#define T_UINT          14      /* unsigned integer     */
36
#define T_ULONG         15      /* unsigned long        */
37
#define T_LNGDBL        16      /* long double          */
38
 
39
 
40
struct coff_reloc
41
{
42
  int offset;
43
  struct coff_symbol *symbol;
44
  int addend;
45
};
46
 
47
struct coff_section
48
{
49
  char *name;
50
  int code;
51
  int data;
52
  int address;
53
  int number;  /* 0..n, .text = 0 */
54
  int nrelocs;
55
  int size;
56
  struct coff_reloc *relocs;
57
  struct bfd_section *bfd_section;
58
};
59
 
60
struct coff_ofile
61
{
62
  int nsources;
63
  struct coff_sfile *source_head;
64
  struct coff_sfile *source_tail;
65
  int nsections;
66
  struct coff_section *sections;
67
  struct coff_symbol *symbol_list_head;
68
  struct coff_symbol *symbol_list_tail;
69
};
70
 
71
struct coff_isection {
72
  int low;
73
  int high;
74
  int init;
75
  struct coff_section *parent;
76
};
77
 
78
struct coff_sfile
79
{
80
  char *name;
81
  struct coff_scope *scope;
82
  struct coff_sfile *next;
83
 
84
  /* Vector which maps where in each output section
85
     the input file has it's data */
86
  struct coff_isection *section;
87
 
88
};
89
 
90
 
91
 struct coff_type
92
{
93
  int size;
94
  enum
95
    {
96
      coff_pointer_type, coff_function_type, coff_array_type, coff_structdef_type, coff_basic_type,
97
      coff_structref_type, coff_enumref_type, coff_enumdef_type, coff_secdef_type
98
      } type;
99
  union
100
    {
101
      struct
102
        {
103
        int address;
104
        int size;
105
      } asecdef;
106
 
107
      struct
108
        {
109
          int isstruct;
110
          struct coff_scope *elements;
111
          int idx;
112
        }
113
      astructdef;
114
      struct
115
        {
116
          struct coff_symbol *ref;
117
        } astructref;
118
 
119
      struct
120
        {
121
          struct coff_scope *elements;
122
          int idx;
123
        } aenumdef;
124
      struct
125
        {
126
          struct coff_symbol *ref;
127
        } aenumref;
128
 
129
      struct
130
        {
131
          struct coff_type *points_to;
132
        } pointer;
133
      struct
134
        {
135
          int dim;
136
          struct coff_type *array_of;
137
        } array;
138
 
139
      struct
140
        {
141
          struct coff_type *function_returns;
142
          struct coff_scope *parameters;
143
          struct coff_scope *code;
144
          struct coff_line *lines;
145
        } function;
146
      int basic;                /* One of T_VOID.. T_UINT */
147
    }  u;
148
};
149
 
150
 
151
 struct coff_line
152
 {
153
   int nlines;
154
   int *lines;
155
   int *addresses;
156
 };
157
 
158
 
159
 struct coff_scope
160
   {
161
     struct coff_section *sec; /* What section */
162
     int offset; /* where */
163
     int size; /* How big */
164
     struct coff_scope *parent; /* one up */
165
 
166
     struct coff_scope *next;   /*next along */
167
 
168
     int nvars;
169
 
170
     struct coff_symbol *vars_head;     /* symbols */
171
     struct coff_symbol *vars_tail;
172
 
173
     struct coff_scope *list_head;      /* children */
174
     struct coff_scope *list_tail;
175
 
176
   };
177
 
178
 
179
 struct coff_visible
180
   {
181
     enum coff_vis_type
182
       {
183
         coff_vis_ext_def,
184
         coff_vis_ext_ref,
185
         coff_vis_int_def,
186
         coff_vis_common,
187
         coff_vis_auto,
188
         coff_vis_register,
189
         coff_vis_tag,
190
         coff_vis_member_of_struct,
191
         coff_vis_member_of_enum,
192
         coff_vis_autoparam,
193
         coff_vis_regparam,
194
       } type;
195
   };
196
 
197
 struct coff_where
198
   {
199
     enum
200
       {
201
         coff_where_stack, coff_where_memory, coff_where_register, coff_where_unknown,
202
         coff_where_strtag, coff_where_member_of_struct,
203
         coff_where_member_of_enum, coff_where_entag, coff_where_typedef
204
 
205
       } where;
206
     int offset;
207
     int bitoffset;
208
     int bitsize;
209
     struct coff_section *section;
210
   };
211
 
212
 struct coff_symbol
213
   {
214
     char *name;
215
     int tag;
216
     struct coff_type *type;
217
     struct coff_where *where;
218
     struct coff_visible *visible;
219
     struct coff_symbol *next;
220
     struct coff_symbol *next_in_ofile_list; /* For the ofile list */
221
     int number;
222
     int er_number;
223
     struct coff_sfile *sfile;
224
  };
225
 
226
struct coff_ofile *coff_grok PARAMS ((bfd *));

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.