1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
|
// OBSOLETE /* Support for printing Chill types for GDB, the GNU debugger.
// OBSOLETE Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 2000
// OBSOLETE Free Software Foundation, Inc.
// OBSOLETE
// OBSOLETE This file is part of GDB.
// OBSOLETE
// OBSOLETE This program is free software; you can redistribute it and/or modify
// OBSOLETE it under the terms of the GNU General Public License as published by
// OBSOLETE the Free Software Foundation; either version 2 of the License, or
// OBSOLETE (at your option) any later version.
// OBSOLETE
// OBSOLETE This program is distributed in the hope that it will be useful,
// OBSOLETE but WITHOUT ANY WARRANTY; without even the implied warranty of
// OBSOLETE MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// OBSOLETE GNU General Public License for more details.
// OBSOLETE
// OBSOLETE You should have received a copy of the GNU General Public License
// OBSOLETE along with this program; if not, write to the Free Software
// OBSOLETE Foundation, Inc., 59 Temple Place - Suite 330,
// OBSOLETE Boston, MA 02111-1307, USA. */
// OBSOLETE
// OBSOLETE #include "defs.h"
// OBSOLETE #include "gdb_obstack.h"
// OBSOLETE #include "bfd.h" /* Binary File Description */
// OBSOLETE #include "symtab.h"
// OBSOLETE #include "gdbtypes.h"
// OBSOLETE #include "expression.h"
// OBSOLETE #include "value.h"
// OBSOLETE #include "gdbcore.h"
// OBSOLETE #include "target.h"
// OBSOLETE #include "language.h"
// OBSOLETE #include "ch-lang.h"
// OBSOLETE #include "typeprint.h"
// OBSOLETE
// OBSOLETE #include "gdb_string.h"
// OBSOLETE #include <errno.h>
// OBSOLETE
// OBSOLETE static void chill_type_print_base (struct type *, struct ui_file *, int, int);
// OBSOLETE
// OBSOLETE void
// OBSOLETE chill_print_type (struct type *type, char *varstring, struct ui_file *stream,
// OBSOLETE int show, int level)
// OBSOLETE {
// OBSOLETE if (varstring != NULL && *varstring != '\0')
// OBSOLETE {
// OBSOLETE fputs_filtered (varstring, stream);
// OBSOLETE fputs_filtered (" ", stream);
// OBSOLETE }
// OBSOLETE chill_type_print_base (type, stream, show, level);
// OBSOLETE }
// OBSOLETE
// OBSOLETE /* Print the name of the type (or the ultimate pointer target,
// OBSOLETE function value or array element).
// OBSOLETE
// OBSOLETE SHOW nonzero means don't print this type as just its name;
// OBSOLETE show its real definition even if it has a name.
// OBSOLETE SHOW zero means print just typename or tag if there is one
// OBSOLETE SHOW negative means abbreviate structure elements.
// OBSOLETE SHOW is decremented for printing of structure elements.
// OBSOLETE
// OBSOLETE LEVEL is the depth to indent by.
// OBSOLETE We increase it for some recursive calls. */
// OBSOLETE
// OBSOLETE static void
// OBSOLETE chill_type_print_base (struct type *type, struct ui_file *stream, int show,
// OBSOLETE int level)
// OBSOLETE {
// OBSOLETE register int len;
// OBSOLETE register int i;
// OBSOLETE struct type *index_type;
// OBSOLETE struct type *range_type;
// OBSOLETE LONGEST low_bound;
// OBSOLETE LONGEST high_bound;
// OBSOLETE
// OBSOLETE QUIT;
// OBSOLETE
// OBSOLETE wrap_here (" ");
// OBSOLETE if (type == NULL)
// OBSOLETE {
// OBSOLETE fputs_filtered ("<type unknown>", stream);
// OBSOLETE return;
// OBSOLETE }
// OBSOLETE
// OBSOLETE /* When SHOW is zero or less, and there is a valid type name, then always
// OBSOLETE just print the type name directly from the type. */
// OBSOLETE
// OBSOLETE if ((show <= 0) && (TYPE_NAME (type) != NULL))
// OBSOLETE {
// OBSOLETE fputs_filtered (TYPE_NAME (type), stream);
// OBSOLETE return;
// OBSOLETE }
// OBSOLETE
// OBSOLETE if (TYPE_CODE (type) != TYPE_CODE_TYPEDEF)
// OBSOLETE CHECK_TYPEDEF (type);
// OBSOLETE
// OBSOLETE switch (TYPE_CODE (type))
// OBSOLETE {
// OBSOLETE case TYPE_CODE_TYPEDEF:
// OBSOLETE chill_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
// OBSOLETE break;
// OBSOLETE case TYPE_CODE_PTR:
// OBSOLETE if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID)
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream,
// OBSOLETE TYPE_NAME (type) ? TYPE_NAME (type) : "PTR");
// OBSOLETE break;
// OBSOLETE }
// OBSOLETE fprintf_filtered (stream, "REF ");
// OBSOLETE chill_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_BOOL:
// OBSOLETE /* FIXME: we should probably just print the TYPE_NAME, in case
// OBSOLETE anyone ever fixes the compiler to give us the real names
// OBSOLETE in the presence of the chill equivalent of typedef (assuming
// OBSOLETE there is one). */
// OBSOLETE fprintf_filtered (stream,
// OBSOLETE TYPE_NAME (type) ? TYPE_NAME (type) : "BOOL");
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_ARRAY:
// OBSOLETE fputs_filtered ("ARRAY (", stream);
// OBSOLETE range_type = TYPE_FIELD_TYPE (type, 0);
// OBSOLETE if (TYPE_CODE (range_type) != TYPE_CODE_RANGE)
// OBSOLETE chill_print_type (range_type, "", stream, 0, level);
// OBSOLETE else
// OBSOLETE {
// OBSOLETE index_type = TYPE_TARGET_TYPE (range_type);
// OBSOLETE low_bound = TYPE_FIELD_BITPOS (range_type, 0);
// OBSOLETE high_bound = TYPE_FIELD_BITPOS (range_type, 1);
// OBSOLETE print_type_scalar (index_type, low_bound, stream);
// OBSOLETE fputs_filtered (":", stream);
// OBSOLETE print_type_scalar (index_type, high_bound, stream);
// OBSOLETE }
// OBSOLETE fputs_filtered (") ", stream);
// OBSOLETE chill_print_type (TYPE_TARGET_TYPE (type), "", stream, 0, level);
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_BITSTRING:
// OBSOLETE fprintf_filtered (stream, "BOOLS (%d)",
// OBSOLETE TYPE_FIELD_BITPOS (TYPE_FIELD_TYPE (type, 0), 1) + 1);
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_SET:
// OBSOLETE fputs_filtered ("POWERSET ", stream);
// OBSOLETE chill_print_type (TYPE_INDEX_TYPE (type), "", stream,
// OBSOLETE show - 1, level);
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_STRING:
// OBSOLETE range_type = TYPE_FIELD_TYPE (type, 0);
// OBSOLETE index_type = TYPE_TARGET_TYPE (range_type);
// OBSOLETE high_bound = TYPE_FIELD_BITPOS (range_type, 1);
// OBSOLETE fputs_filtered ("CHARS (", stream);
// OBSOLETE print_type_scalar (index_type, high_bound + 1, stream);
// OBSOLETE fputs_filtered (")", stream);
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_MEMBER:
// OBSOLETE fprintf_filtered (stream, "MEMBER ");
// OBSOLETE chill_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
// OBSOLETE break;
// OBSOLETE case TYPE_CODE_REF:
// OBSOLETE fprintf_filtered (stream, "/*LOC*/ ");
// OBSOLETE chill_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
// OBSOLETE break;
// OBSOLETE case TYPE_CODE_FUNC:
// OBSOLETE fprintf_filtered (stream, "PROC (");
// OBSOLETE len = TYPE_NFIELDS (type);
// OBSOLETE for (i = 0; i < len; i++)
// OBSOLETE {
// OBSOLETE struct type *param_type = TYPE_FIELD_TYPE (type, i);
// OBSOLETE if (i > 0)
// OBSOLETE {
// OBSOLETE fputs_filtered (", ", stream);
// OBSOLETE wrap_here (" ");
// OBSOLETE }
// OBSOLETE if (TYPE_CODE (param_type) == TYPE_CODE_REF)
// OBSOLETE {
// OBSOLETE chill_type_print_base (TYPE_TARGET_TYPE (param_type),
// OBSOLETE stream, 0, level);
// OBSOLETE fputs_filtered (" LOC", stream);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE chill_type_print_base (param_type, stream, show, level);
// OBSOLETE }
// OBSOLETE fprintf_filtered (stream, ")");
// OBSOLETE if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
// OBSOLETE {
// OBSOLETE fputs_filtered (" RETURNS (", stream);
// OBSOLETE chill_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
// OBSOLETE fputs_filtered (")", stream);
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_STRUCT:
// OBSOLETE if (chill_varying_type (type))
// OBSOLETE {
// OBSOLETE chill_type_print_base (TYPE_FIELD_TYPE (type, 1),
// OBSOLETE stream, 0, level);
// OBSOLETE fputs_filtered (" VARYING", stream);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, "STRUCT ");
// OBSOLETE
// OBSOLETE fprintf_filtered (stream, "(\n");
// OBSOLETE if ((TYPE_NFIELDS (type) == 0) && (TYPE_NFN_FIELDS (type) == 0))
// OBSOLETE {
// OBSOLETE if (TYPE_STUB (type))
// OBSOLETE {
// OBSOLETE fprintfi_filtered (level + 4, stream, "<incomplete type>\n");
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE fprintfi_filtered (level + 4, stream, "<no data fields>\n");
// OBSOLETE }
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE len = TYPE_NFIELDS (type);
// OBSOLETE for (i = TYPE_N_BASECLASSES (type); i < len; i++)
// OBSOLETE {
// OBSOLETE struct type *field_type = TYPE_FIELD_TYPE (type, i);
// OBSOLETE QUIT;
// OBSOLETE print_spaces_filtered (level + 4, stream);
// OBSOLETE if (TYPE_CODE (field_type) == TYPE_CODE_UNION)
// OBSOLETE {
// OBSOLETE int j; /* variant number */
// OBSOLETE fputs_filtered ("CASE OF\n", stream);
// OBSOLETE for (j = 0; j < TYPE_NFIELDS (field_type); j++)
// OBSOLETE {
// OBSOLETE int k; /* variant field index */
// OBSOLETE struct type *variant_type
// OBSOLETE = TYPE_FIELD_TYPE (field_type, j);
// OBSOLETE int var_len = TYPE_NFIELDS (variant_type);
// OBSOLETE print_spaces_filtered (level + 4, stream);
// OBSOLETE if (strcmp (TYPE_FIELD_NAME (field_type, j),
// OBSOLETE "else") == 0)
// OBSOLETE fputs_filtered ("ELSE\n", stream);
// OBSOLETE else
// OBSOLETE fputs_filtered (":\n", stream);
// OBSOLETE if (TYPE_CODE (variant_type) != TYPE_CODE_STRUCT)
// OBSOLETE error ("variant record confusion");
// OBSOLETE for (k = 0; k < var_len; k++)
// OBSOLETE {
// OBSOLETE print_spaces_filtered (level + 8, stream);
// OBSOLETE chill_print_type (TYPE_FIELD_TYPE (variant_type, k),
// OBSOLETE TYPE_FIELD_NAME (variant_type, k),
// OBSOLETE stream, show - 1, level + 8);
// OBSOLETE if (k < (var_len - 1))
// OBSOLETE fputs_filtered (",", stream);
// OBSOLETE fputs_filtered ("\n", stream);
// OBSOLETE }
// OBSOLETE }
// OBSOLETE print_spaces_filtered (level + 4, stream);
// OBSOLETE fputs_filtered ("ESAC", stream);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE chill_print_type (field_type,
// OBSOLETE TYPE_FIELD_NAME (type, i),
// OBSOLETE stream, show - 1, level + 4);
// OBSOLETE if (i < (len - 1))
// OBSOLETE {
// OBSOLETE fputs_filtered (",", stream);
// OBSOLETE }
// OBSOLETE fputs_filtered ("\n", stream);
// OBSOLETE }
// OBSOLETE }
// OBSOLETE fprintfi_filtered (level, stream, ")");
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_RANGE:
// OBSOLETE {
// OBSOLETE struct type *target = TYPE_TARGET_TYPE (type);
// OBSOLETE if (target && TYPE_NAME (target))
// OBSOLETE fputs_filtered (TYPE_NAME (target), stream);
// OBSOLETE else
// OBSOLETE fputs_filtered ("RANGE", stream);
// OBSOLETE if (target == NULL)
// OBSOLETE target = builtin_type_long;
// OBSOLETE fputs_filtered (" (", stream);
// OBSOLETE print_type_scalar (target, TYPE_LOW_BOUND (type), stream);
// OBSOLETE fputs_filtered (":", stream);
// OBSOLETE print_type_scalar (target, TYPE_HIGH_BOUND (type), stream);
// OBSOLETE fputs_filtered (")", stream);
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_ENUM:
// OBSOLETE {
// OBSOLETE register int lastval = 0;
// OBSOLETE fprintf_filtered (stream, "SET (");
// OBSOLETE len = TYPE_NFIELDS (type);
// OBSOLETE for (i = 0; i < len; i++)
// OBSOLETE {
// OBSOLETE QUIT;
// OBSOLETE if (i)
// OBSOLETE fprintf_filtered (stream, ", ");
// OBSOLETE wrap_here (" ");
// OBSOLETE fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
// OBSOLETE if (lastval != TYPE_FIELD_BITPOS (type, i))
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, " = %d", TYPE_FIELD_BITPOS (type, i));
// OBSOLETE lastval = TYPE_FIELD_BITPOS (type, i);
// OBSOLETE }
// OBSOLETE lastval++;
// OBSOLETE }
// OBSOLETE fprintf_filtered (stream, ")");
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_VOID:
// OBSOLETE case TYPE_CODE_UNDEF:
// OBSOLETE case TYPE_CODE_ERROR:
// OBSOLETE case TYPE_CODE_UNION:
// OBSOLETE case TYPE_CODE_METHOD:
// OBSOLETE error ("missing language support in chill_type_print_base");
// OBSOLETE break;
// OBSOLETE
// OBSOLETE default:
// OBSOLETE
// OBSOLETE /* Handle types not explicitly handled by the other cases,
// OBSOLETE such as fundamental types. For these, just print whatever
// OBSOLETE the type name is, as recorded in the type itself. If there
// OBSOLETE is no type name, then complain. */
// OBSOLETE
// OBSOLETE if (TYPE_NAME (type) != NULL)
// OBSOLETE {
// OBSOLETE fputs_filtered (TYPE_NAME (type), stream);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE error ("Unrecognized type code (%d) in symbol table.",
// OBSOLETE TYPE_CODE (type));
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE }
// OBSOLETE }
|