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
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
|
// OBSOLETE /* Support for printing Chill values for GDB, the GNU debugger.
// OBSOLETE Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
// OBSOLETE 1998, 2000, 2001
// 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 "symtab.h"
// OBSOLETE #include "gdbtypes.h"
// OBSOLETE #include "valprint.h"
// OBSOLETE #include "expression.h"
// OBSOLETE #include "value.h"
// OBSOLETE #include "language.h"
// OBSOLETE #include "demangle.h"
// OBSOLETE #include "c-lang.h" /* For c_val_print */
// OBSOLETE #include "typeprint.h"
// OBSOLETE #include "ch-lang.h"
// OBSOLETE #include "annotate.h"
// OBSOLETE
// OBSOLETE static void chill_print_value_fields (struct type *, char *,
// OBSOLETE struct ui_file *, int, int,
// OBSOLETE enum val_prettyprint, struct type **);
// OBSOLETE
// OBSOLETE static void chill_print_type_scalar (struct type *, LONGEST,
// OBSOLETE struct ui_file *);
// OBSOLETE
// OBSOLETE static void chill_val_print_array_elements (struct type *, char *,
// OBSOLETE CORE_ADDR, struct ui_file *,
// OBSOLETE int, int, int,
// OBSOLETE enum val_prettyprint);
// OBSOLETE
// OBSOLETE
// OBSOLETE /* Print integral scalar data VAL, of type TYPE, onto stdio stream STREAM.
// OBSOLETE Used to print data from type structures in a specified type. For example,
// OBSOLETE array bounds may be characters or booleans in some languages, and this
// OBSOLETE allows the ranges to be printed in their "natural" form rather than as
// OBSOLETE decimal integer values. */
// OBSOLETE
// OBSOLETE static void
// OBSOLETE chill_print_type_scalar (struct type *type, LONGEST val, struct ui_file *stream)
// OBSOLETE {
// OBSOLETE switch (TYPE_CODE (type))
// OBSOLETE {
// OBSOLETE case TYPE_CODE_RANGE:
// OBSOLETE if (TYPE_TARGET_TYPE (type))
// OBSOLETE {
// OBSOLETE chill_print_type_scalar (TYPE_TARGET_TYPE (type), val, stream);
// OBSOLETE return;
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE case TYPE_CODE_UNDEF:
// OBSOLETE case TYPE_CODE_PTR:
// OBSOLETE case TYPE_CODE_ARRAY:
// OBSOLETE case TYPE_CODE_STRUCT:
// OBSOLETE case TYPE_CODE_UNION:
// OBSOLETE case TYPE_CODE_ENUM:
// OBSOLETE case TYPE_CODE_FUNC:
// OBSOLETE case TYPE_CODE_INT:
// OBSOLETE case TYPE_CODE_FLT:
// OBSOLETE case TYPE_CODE_VOID:
// OBSOLETE case TYPE_CODE_SET:
// OBSOLETE case TYPE_CODE_STRING:
// OBSOLETE case TYPE_CODE_BITSTRING:
// OBSOLETE case TYPE_CODE_ERROR:
// OBSOLETE case TYPE_CODE_MEMBER:
// OBSOLETE case TYPE_CODE_METHOD:
// OBSOLETE case TYPE_CODE_REF:
// OBSOLETE case TYPE_CODE_CHAR:
// OBSOLETE case TYPE_CODE_BOOL:
// OBSOLETE case TYPE_CODE_COMPLEX:
// OBSOLETE case TYPE_CODE_TYPEDEF:
// OBSOLETE default:
// OBSOLETE break;
// OBSOLETE }
// OBSOLETE print_type_scalar (type, val, stream);
// OBSOLETE }
// OBSOLETE
// OBSOLETE /* Print the elements of an array.
// OBSOLETE Similar to val_print_array_elements, but prints
// OBSOLETE element indexes (in Chill syntax). */
// OBSOLETE
// OBSOLETE static void
// OBSOLETE chill_val_print_array_elements (struct type *type, char *valaddr,
// OBSOLETE CORE_ADDR address, struct ui_file *stream,
// OBSOLETE int format, int deref_ref, int recurse,
// OBSOLETE enum val_prettyprint pretty)
// OBSOLETE {
// OBSOLETE unsigned int i = 0;
// OBSOLETE unsigned int things_printed = 0;
// OBSOLETE unsigned len;
// OBSOLETE struct type *elttype;
// OBSOLETE struct type *range_type = TYPE_FIELD_TYPE (type, 0);
// OBSOLETE struct type *index_type = TYPE_TARGET_TYPE (range_type);
// OBSOLETE unsigned eltlen;
// OBSOLETE /* Position of the array element we are examining to see
// OBSOLETE whether it is repeated. */
// OBSOLETE unsigned int rep1;
// OBSOLETE /* Number of repetitions we have detected so far. */
// OBSOLETE unsigned int reps;
// OBSOLETE LONGEST low_bound = TYPE_FIELD_BITPOS (range_type, 0);
// OBSOLETE
// OBSOLETE elttype = check_typedef (TYPE_TARGET_TYPE (type));
// OBSOLETE eltlen = TYPE_LENGTH (elttype);
// OBSOLETE len = TYPE_LENGTH (type) / eltlen;
// OBSOLETE
// OBSOLETE annotate_array_section_begin (i, elttype);
// OBSOLETE
// OBSOLETE for (; i < len && things_printed < print_max; i++)
// OBSOLETE {
// OBSOLETE if (i != 0)
// OBSOLETE {
// OBSOLETE if (prettyprint_arrays)
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, ",\n");
// OBSOLETE print_spaces_filtered (2 + 2 * recurse, stream);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, ", ");
// OBSOLETE }
// OBSOLETE }
// OBSOLETE wrap_here (n_spaces (2 + 2 * recurse));
// OBSOLETE
// OBSOLETE rep1 = i + 1;
// OBSOLETE reps = 1;
// OBSOLETE while ((rep1 < len) &&
// OBSOLETE !memcmp (valaddr + i * eltlen, valaddr + rep1 * eltlen, eltlen))
// OBSOLETE {
// OBSOLETE ++reps;
// OBSOLETE ++rep1;
// OBSOLETE }
// OBSOLETE
// OBSOLETE fputs_filtered ("(", stream);
// OBSOLETE chill_print_type_scalar (index_type, low_bound + i, stream);
// OBSOLETE if (reps > 1)
// OBSOLETE {
// OBSOLETE fputs_filtered (":", stream);
// OBSOLETE chill_print_type_scalar (index_type, low_bound + i + reps - 1,
// OBSOLETE stream);
// OBSOLETE fputs_filtered ("): ", stream);
// OBSOLETE val_print (elttype, valaddr + i * eltlen, 0, 0, stream, format,
// OBSOLETE deref_ref, recurse + 1, pretty);
// OBSOLETE
// OBSOLETE i = rep1 - 1;
// OBSOLETE things_printed += 1;
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE fputs_filtered ("): ", stream);
// OBSOLETE val_print (elttype, valaddr + i * eltlen, 0, 0, stream, format,
// OBSOLETE deref_ref, recurse + 1, pretty);
// OBSOLETE annotate_elt ();
// OBSOLETE things_printed++;
// OBSOLETE }
// OBSOLETE }
// OBSOLETE annotate_array_section_end ();
// OBSOLETE if (i < len)
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, "...");
// OBSOLETE }
// OBSOLETE }
// OBSOLETE
// OBSOLETE /* Print data of type TYPE located at VALADDR (within GDB), which came from
// OBSOLETE the inferior at address ADDRESS, onto stdio stream STREAM according to
// OBSOLETE FORMAT (a letter or 0 for natural format). The data at VALADDR is in
// OBSOLETE target byte order.
// OBSOLETE
// OBSOLETE If the data are a string pointer, returns the number of string characters
// OBSOLETE printed.
// OBSOLETE
// OBSOLETE If DEREF_REF is nonzero, then dereference references, otherwise just print
// OBSOLETE them like pointers.
// OBSOLETE
// OBSOLETE The PRETTY parameter controls prettyprinting. */
// OBSOLETE
// OBSOLETE int
// OBSOLETE chill_val_print (struct type *type, char *valaddr, int embedded_offset,
// OBSOLETE CORE_ADDR address, struct ui_file *stream, int format,
// OBSOLETE int deref_ref, int recurse, enum val_prettyprint pretty)
// OBSOLETE {
// OBSOLETE LONGEST val;
// OBSOLETE unsigned int i = 0; /* Number of characters printed. */
// OBSOLETE struct type *elttype;
// OBSOLETE CORE_ADDR addr;
// OBSOLETE
// OBSOLETE CHECK_TYPEDEF (type);
// OBSOLETE
// OBSOLETE switch (TYPE_CODE (type))
// OBSOLETE {
// OBSOLETE case TYPE_CODE_ARRAY:
// OBSOLETE if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0)
// OBSOLETE {
// OBSOLETE if (prettyprint_arrays)
// OBSOLETE {
// OBSOLETE print_spaces_filtered (2 + 2 * recurse, stream);
// OBSOLETE }
// OBSOLETE fprintf_filtered (stream, "[");
// OBSOLETE chill_val_print_array_elements (type, valaddr, address, stream,
// OBSOLETE format, deref_ref, recurse, pretty);
// OBSOLETE fprintf_filtered (stream, "]");
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE error ("unimplemented in chill_val_print; unspecified array length");
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_INT:
// OBSOLETE format = format ? format : output_format;
// OBSOLETE if (format)
// OBSOLETE {
// OBSOLETE print_scalar_formatted (valaddr, type, format, 0, stream);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE val_print_type_code_int (type, valaddr, stream);
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_CHAR:
// OBSOLETE format = format ? format : output_format;
// OBSOLETE if (format)
// OBSOLETE {
// OBSOLETE print_scalar_formatted (valaddr, type, format, 0, stream);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE LA_PRINT_CHAR ((unsigned char) unpack_long (type, valaddr),
// OBSOLETE stream);
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_FLT:
// OBSOLETE if (format)
// OBSOLETE {
// OBSOLETE print_scalar_formatted (valaddr, type, format, 0, stream);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE print_floating (valaddr, type, stream);
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_BOOL:
// OBSOLETE format = format ? format : output_format;
// OBSOLETE if (format)
// OBSOLETE {
// OBSOLETE print_scalar_formatted (valaddr, type, format, 0, stream);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE /* FIXME: Why is this using builtin_type_chill_bool not type? */
// OBSOLETE val = unpack_long (builtin_type_chill_bool, valaddr);
// OBSOLETE fprintf_filtered (stream, val ? "TRUE" : "FALSE");
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_UNDEF:
// OBSOLETE /* This happens (without TYPE_FLAG_STUB set) on systems which don't use
// OBSOLETE dbx xrefs (NO_DBX_XREFS in gcc) if a file has a "struct foo *bar"
// OBSOLETE and no complete type for struct foo in that file. */
// OBSOLETE fprintf_filtered (stream, "<incomplete type>");
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_PTR:
// OBSOLETE if (format && format != 's')
// OBSOLETE {
// OBSOLETE print_scalar_formatted (valaddr, type, format, 0, stream);
// OBSOLETE break;
// OBSOLETE }
// OBSOLETE addr = unpack_pointer (type, valaddr);
// OBSOLETE elttype = check_typedef (TYPE_TARGET_TYPE (type));
// OBSOLETE
// OBSOLETE /* We assume a NULL pointer is all zeros ... */
// OBSOLETE if (addr == 0)
// OBSOLETE {
// OBSOLETE fputs_filtered ("NULL", stream);
// OBSOLETE return 0;
// OBSOLETE }
// OBSOLETE
// OBSOLETE if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
// OBSOLETE {
// OBSOLETE /* Try to print what function it points to. */
// OBSOLETE print_address_demangle (addr, stream, demangle);
// OBSOLETE /* Return value is irrelevant except for string pointers. */
// OBSOLETE return (0);
// OBSOLETE }
// OBSOLETE if (addressprint && format != 's')
// OBSOLETE {
// OBSOLETE print_address_numeric (addr, 1, stream);
// OBSOLETE }
// OBSOLETE
// OBSOLETE /* For a pointer to char or unsigned char, also print the string
// OBSOLETE pointed to, unless pointer is null. */
// OBSOLETE if (TYPE_LENGTH (elttype) == 1
// OBSOLETE && TYPE_CODE (elttype) == TYPE_CODE_CHAR
// OBSOLETE && (format == 0 || format == 's')
// OBSOLETE && addr != 0
// OBSOLETE && /* If print_max is UINT_MAX, the alloca below will fail.
// OBSOLETE In that case don't try to print the string. */
// OBSOLETE print_max < UINT_MAX)
// OBSOLETE i = val_print_string (addr, -1, TYPE_LENGTH (elttype), stream);
// OBSOLETE
// OBSOLETE /* Return number of characters printed, plus one for the
// OBSOLETE terminating null if we have "reached the end". */
// OBSOLETE return (i + (print_max && i != print_max));
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_STRING:
// OBSOLETE i = TYPE_LENGTH (type);
// OBSOLETE LA_PRINT_STRING (stream, valaddr, i, 1, 0);
// OBSOLETE /* Return number of characters printed, plus one for the terminating
// OBSOLETE null if we have "reached the end". */
// OBSOLETE return (i + (print_max && i != print_max));
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_BITSTRING:
// OBSOLETE case TYPE_CODE_SET:
// OBSOLETE elttype = TYPE_INDEX_TYPE (type);
// OBSOLETE CHECK_TYPEDEF (elttype);
// OBSOLETE if (TYPE_STUB (elttype))
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, "<incomplete type>");
// OBSOLETE gdb_flush (stream);
// OBSOLETE break;
// OBSOLETE }
// OBSOLETE {
// OBSOLETE struct type *range = elttype;
// OBSOLETE LONGEST low_bound, high_bound;
// OBSOLETE int i;
// OBSOLETE int is_bitstring = TYPE_CODE (type) == TYPE_CODE_BITSTRING;
// OBSOLETE int need_comma = 0;
// OBSOLETE
// OBSOLETE if (is_bitstring)
// OBSOLETE fputs_filtered ("B'", stream);
// OBSOLETE else
// OBSOLETE fputs_filtered ("[", stream);
// OBSOLETE
// OBSOLETE i = get_discrete_bounds (range, &low_bound, &high_bound);
// OBSOLETE maybe_bad_bstring:
// OBSOLETE if (i < 0)
// OBSOLETE {
// OBSOLETE fputs_filtered ("<error value>", stream);
// OBSOLETE goto done;
// OBSOLETE }
// OBSOLETE
// OBSOLETE for (i = low_bound; i <= high_bound; i++)
// OBSOLETE {
// OBSOLETE int element = value_bit_index (type, valaddr, i);
// OBSOLETE if (element < 0)
// OBSOLETE {
// OBSOLETE i = element;
// OBSOLETE goto maybe_bad_bstring;
// OBSOLETE }
// OBSOLETE if (is_bitstring)
// OBSOLETE fprintf_filtered (stream, "%d", element);
// OBSOLETE else if (element)
// OBSOLETE {
// OBSOLETE if (need_comma)
// OBSOLETE fputs_filtered (", ", stream);
// OBSOLETE chill_print_type_scalar (range, (LONGEST) i, stream);
// OBSOLETE need_comma = 1;
// OBSOLETE
// OBSOLETE /* Look for a continuous range of true elements. */
// OBSOLETE if (i + 1 <= high_bound && value_bit_index (type, valaddr, ++i))
// OBSOLETE {
// OBSOLETE int j = i; /* j is the upper bound so far of the range */
// OBSOLETE fputs_filtered (":", stream);
// OBSOLETE while (i + 1 <= high_bound
// OBSOLETE && value_bit_index (type, valaddr, ++i))
// OBSOLETE j = i;
// OBSOLETE chill_print_type_scalar (range, (LONGEST) j, stream);
// OBSOLETE }
// OBSOLETE }
// OBSOLETE }
// OBSOLETE done:
// OBSOLETE if (is_bitstring)
// OBSOLETE fputs_filtered ("'", stream);
// OBSOLETE else
// OBSOLETE fputs_filtered ("]", stream);
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_STRUCT:
// OBSOLETE if (chill_varying_type (type))
// OBSOLETE {
// OBSOLETE struct type *inner = check_typedef (TYPE_FIELD_TYPE (type, 1));
// OBSOLETE long length = unpack_long (TYPE_FIELD_TYPE (type, 0), valaddr);
// OBSOLETE char *data_addr = valaddr + TYPE_FIELD_BITPOS (type, 1) / 8;
// OBSOLETE
// OBSOLETE switch (TYPE_CODE (inner))
// OBSOLETE {
// OBSOLETE case TYPE_CODE_STRING:
// OBSOLETE if (length > TYPE_LENGTH (type) - 2)
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream,
// OBSOLETE "<dynamic length %ld > static length %d> *invalid*",
// OBSOLETE length, TYPE_LENGTH (type));
// OBSOLETE
// OBSOLETE /* Don't print the string; doing so might produce a
// OBSOLETE segfault. */
// OBSOLETE return length;
// OBSOLETE }
// OBSOLETE LA_PRINT_STRING (stream, data_addr, length, 1, 0);
// OBSOLETE return length;
// OBSOLETE default:
// OBSOLETE break;
// OBSOLETE }
// OBSOLETE }
// OBSOLETE chill_print_value_fields (type, valaddr, stream, format, recurse, pretty,
// OBSOLETE 0);
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_REF:
// OBSOLETE if (addressprint)
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, "LOC(");
// OBSOLETE print_address_numeric
// OBSOLETE (extract_address (valaddr, TARGET_PTR_BIT / HOST_CHAR_BIT),
// OBSOLETE 1,
// OBSOLETE stream);
// OBSOLETE fprintf_filtered (stream, ")");
// OBSOLETE if (deref_ref)
// OBSOLETE fputs_filtered (": ", stream);
// OBSOLETE }
// OBSOLETE /* De-reference the reference. */
// OBSOLETE if (deref_ref)
// OBSOLETE {
// OBSOLETE if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_UNDEF)
// OBSOLETE {
// OBSOLETE struct value *deref_val =
// OBSOLETE value_at
// OBSOLETE (TYPE_TARGET_TYPE (type),
// OBSOLETE unpack_pointer (lookup_pointer_type (builtin_type_void),
// OBSOLETE valaddr),
// OBSOLETE NULL);
// OBSOLETE val_print (VALUE_TYPE (deref_val),
// OBSOLETE VALUE_CONTENTS (deref_val),
// OBSOLETE 0,
// OBSOLETE VALUE_ADDRESS (deref_val), stream, format,
// OBSOLETE deref_ref, recurse + 1, pretty);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE fputs_filtered ("???", stream);
// OBSOLETE }
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_ENUM:
// OBSOLETE c_val_print (type, valaddr, 0, address, stream, format,
// OBSOLETE deref_ref, recurse, pretty);
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_RANGE:
// OBSOLETE if (TYPE_TARGET_TYPE (type))
// OBSOLETE chill_val_print (TYPE_TARGET_TYPE (type), valaddr, 0, address, stream,
// OBSOLETE format, deref_ref, recurse, pretty);
// OBSOLETE break;
// OBSOLETE
// OBSOLETE case TYPE_CODE_MEMBER:
// OBSOLETE case TYPE_CODE_UNION:
// OBSOLETE case TYPE_CODE_FUNC:
// OBSOLETE case TYPE_CODE_VOID:
// OBSOLETE case TYPE_CODE_ERROR:
// OBSOLETE default:
// OBSOLETE /* Let's defer printing to the C printer, rather than
// OBSOLETE print an error message. FIXME! */
// OBSOLETE c_val_print (type, valaddr, 0, address, stream, format,
// OBSOLETE deref_ref, recurse, pretty);
// OBSOLETE }
// OBSOLETE gdb_flush (stream);
// OBSOLETE return (0);
// OBSOLETE }
// OBSOLETE
// OBSOLETE /* Mutually recursive subroutines of cplus_print_value and c_val_print to
// OBSOLETE print out a structure's fields: cp_print_value_fields and cplus_print_value.
// OBSOLETE
// OBSOLETE TYPE, VALADDR, STREAM, RECURSE, and PRETTY have the
// OBSOLETE same meanings as in cplus_print_value and c_val_print.
// OBSOLETE
// OBSOLETE DONT_PRINT is an array of baseclass types that we
// OBSOLETE should not print, or zero if called from top level. */
// OBSOLETE
// OBSOLETE static void
// OBSOLETE chill_print_value_fields (struct type *type, char *valaddr,
// OBSOLETE struct ui_file *stream, int format, int recurse,
// OBSOLETE enum val_prettyprint pretty, struct type **dont_print)
// OBSOLETE {
// OBSOLETE int i, len;
// OBSOLETE int fields_seen = 0;
// OBSOLETE
// OBSOLETE CHECK_TYPEDEF (type);
// OBSOLETE
// OBSOLETE fprintf_filtered (stream, "[");
// OBSOLETE len = TYPE_NFIELDS (type);
// OBSOLETE if (len == 0)
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, "<No data fields>");
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE for (i = 0; i < len; i++)
// OBSOLETE {
// OBSOLETE if (fields_seen)
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, ", ");
// OBSOLETE }
// OBSOLETE fields_seen = 1;
// OBSOLETE if (pretty)
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, "\n");
// OBSOLETE print_spaces_filtered (2 + 2 * recurse, stream);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE wrap_here (n_spaces (2 + 2 * recurse));
// OBSOLETE }
// OBSOLETE fputs_filtered (".", stream);
// OBSOLETE fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
// OBSOLETE language_chill, DMGL_NO_OPTS);
// OBSOLETE fputs_filtered (": ", stream);
// OBSOLETE if (TYPE_FIELD_PACKED (type, i))
// OBSOLETE {
// OBSOLETE struct value *v;
// OBSOLETE
// OBSOLETE /* Bitfields require special handling, especially due to byte
// OBSOLETE order problems. */
// OBSOLETE v = value_from_longest (TYPE_FIELD_TYPE (type, i),
// OBSOLETE unpack_field_as_long (type, valaddr, i));
// OBSOLETE
// OBSOLETE chill_val_print (TYPE_FIELD_TYPE (type, i), VALUE_CONTENTS (v), 0, 0,
// OBSOLETE stream, format, 0, recurse + 1, pretty);
// OBSOLETE }
// OBSOLETE else
// OBSOLETE {
// OBSOLETE chill_val_print (TYPE_FIELD_TYPE (type, i),
// OBSOLETE valaddr + TYPE_FIELD_BITPOS (type, i) / 8, 0,
// OBSOLETE 0, stream, format, 0, recurse + 1, pretty);
// OBSOLETE }
// OBSOLETE }
// OBSOLETE if (pretty)
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, "\n");
// OBSOLETE print_spaces_filtered (2 * recurse, stream);
// OBSOLETE }
// OBSOLETE }
// OBSOLETE fprintf_filtered (stream, "]");
// OBSOLETE }
// OBSOLETE
// OBSOLETE int
// OBSOLETE chill_value_print (struct value *val, struct ui_file *stream, int format,
// OBSOLETE enum val_prettyprint pretty)
// OBSOLETE {
// OBSOLETE struct type *type = VALUE_TYPE (val);
// OBSOLETE struct type *real_type = check_typedef (type);
// OBSOLETE
// OBSOLETE /* If it is a pointer, indicate what it points to.
// OBSOLETE
// OBSOLETE Print type also if it is a reference. */
// OBSOLETE
// OBSOLETE if (TYPE_CODE (real_type) == TYPE_CODE_PTR ||
// OBSOLETE TYPE_CODE (real_type) == TYPE_CODE_REF)
// OBSOLETE {
// OBSOLETE char *valaddr = VALUE_CONTENTS (val);
// OBSOLETE CORE_ADDR addr = unpack_pointer (type, valaddr);
// OBSOLETE if (TYPE_CODE (type) != TYPE_CODE_PTR || addr != 0)
// OBSOLETE {
// OBSOLETE int i;
// OBSOLETE char *name = TYPE_NAME (type);
// OBSOLETE if (name)
// OBSOLETE fputs_filtered (name, stream);
// OBSOLETE else if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID)
// OBSOLETE fputs_filtered ("PTR", stream);
// OBSOLETE else
// OBSOLETE {
// OBSOLETE fprintf_filtered (stream, "(");
// OBSOLETE type_print (type, "", stream, -1);
// OBSOLETE fprintf_filtered (stream, ")");
// OBSOLETE }
// OBSOLETE fprintf_filtered (stream, "(");
// OBSOLETE i = val_print (type, valaddr, 0, VALUE_ADDRESS (val),
// OBSOLETE stream, format, 1, 0, pretty);
// OBSOLETE fprintf_filtered (stream, ")");
// OBSOLETE return i;
// OBSOLETE }
// OBSOLETE }
// OBSOLETE return (val_print (type, VALUE_CONTENTS (val), 0,
// OBSOLETE VALUE_ADDRESS (val), stream, format, 1, 0, pretty));
// OBSOLETE }
|