* COP2 testing changes.
[binutils-gdb.git] / binutils / coffgrok.h
blobe32121767295616cd7843c0f4a75caa3c83d4a79
1 #define T_NULL 0
2 #define T_VOID 1 /* function argument (only used by compiler) */
3 #define T_CHAR 2 /* character */
4 #define T_SHORT 3 /* short integer */
5 #define T_INT 4 /* integer */
6 #define T_LONG 5 /* long integer */
7 #define T_FLOAT 6 /* floating point */
8 #define T_DOUBLE 7 /* double word */
9 #define T_STRUCT 8 /* structure */
10 #define T_UNION 9 /* union */
11 #define T_ENUM 10 /* enumeration */
12 #define T_MOE 11 /* member of enumeration*/
13 #define T_UCHAR 12 /* unsigned character */
14 #define T_USHORT 13 /* unsigned short */
15 #define T_UINT 14 /* unsigned integer */
16 #define T_ULONG 15 /* unsigned long */
17 #define T_LNGDBL 16 /* long double */
20 struct coff_reloc
22 int offset;
23 struct coff_symbol *symbol;
24 int addend;
27 struct coff_section
29 char *name;
30 int code;
31 int data;
32 int address;
33 int number; /* 0..n, .text = 0 */
34 int nrelocs;
35 int size;
36 struct coff_reloc *relocs;
37 struct sec *bfd_section;
40 struct coff_ofile
42 int nsources;
43 struct coff_sfile *source_head;
44 struct coff_sfile *source_tail;
45 int nsections;
46 struct coff_section *sections;
47 struct coff_symbol *symbol_list_head;
48 struct coff_symbol *symbol_list_tail;
52 struct coff_sfile
54 char *name;
55 struct coff_scope *scope;
56 struct coff_sfile *next;
62 struct coff_type
64 int size;
65 enum
67 coff_pointer_type, coff_function_type, coff_array_type, coff_structdef_type, coff_basic_type,
68 coff_structref_type, coff_enumref_type, coff_enumdef_type
69 } type;
70 union
72 struct
74 int isstruct;
75 struct coff_scope *elements;
76 int idx;
78 astructdef;
79 struct
81 struct coff_symbol *ref;
82 } astructref;
84 struct
86 struct coff_scope *elements;
87 int idx;
88 } aenumdef;
89 struct
91 struct coff_symbol *ref;
92 } aenumref;
94 struct
96 struct coff_type *points_to;
97 } pointer;
98 struct
100 int dim;
101 struct coff_type *array_of;
102 } array;
104 struct
106 struct coff_type *function_returns;
107 struct coff_scope *parameters;
108 struct coff_scope *code;
109 struct coff_line *lines;
110 } function;
111 int basic; /* One of T_VOID.. T_UINT */
112 } u;
116 struct coff_line
118 int nlines;
119 int *lines;
120 int *addresses;
124 struct coff_scope
126 struct coff_scope *parent; /* one up */
128 struct coff_scope *next; /*next along */
130 int nvars;
131 struct coff_symbol *vars_head; /* symbols */
132 struct coff_symbol *vars_tail;
134 struct coff_scope *list_head; /* children */
135 struct coff_scope *list_tail;
140 struct coff_visible
142 enum coff_vis_type
144 coff_vis_ext_def,
145 coff_vis_ext_ref,
146 coff_vis_int_def,
147 coff_vis_common,
148 coff_vis_auto,
149 coff_vis_register,
150 coff_vis_tag,
151 coff_vis_member_of_struct,
152 coff_vis_member_of_enum,
153 } type;
156 struct coff_where
158 enum
160 coff_where_stack, coff_where_memory, coff_where_register, coff_where_unknown,
161 coff_where_strtag, coff_where_member_of_struct,
162 coff_where_member_of_enum, coff_where_entag, coff_where_typedef
164 } where;
165 int offset;
166 int bitoffset;
167 int bitsize;
168 struct coff_section *section;
171 struct coff_symbol
173 char *name;
174 int tag;
175 struct coff_type *type;
176 struct coff_where *where;
177 struct coff_visible *visible;
178 struct coff_symbol *next;
179 struct coff_symbol *next_in_ofile_list; /* For the ofile list */
180 int number;
183 struct coff_ofile *coff_grok();