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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.3/] [gdb/] [ch-valprint.c] - Blame information for rev 1181

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

Line No. Rev Author Line
1 1181 sfurman
// OBSOLETE /* Support for printing Chill values for GDB, the GNU debugger.
2
// OBSOLETE    Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
3
// OBSOLETE    1998, 2000, 2001
4
// OBSOLETE    Free Software Foundation, Inc.
5
// OBSOLETE 
6
// OBSOLETE    This file is part of GDB.
7
// OBSOLETE 
8
// OBSOLETE    This program is free software; you can redistribute it and/or modify
9
// OBSOLETE    it under the terms of the GNU General Public License as published by
10
// OBSOLETE    the Free Software Foundation; either version 2 of the License, or
11
// OBSOLETE    (at your option) any later version.
12
// OBSOLETE 
13
// OBSOLETE    This program is distributed in the hope that it will be useful,
14
// OBSOLETE    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
// OBSOLETE    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
// OBSOLETE    GNU General Public License for more details.
17
// OBSOLETE 
18
// OBSOLETE    You should have received a copy of the GNU General Public License
19
// OBSOLETE    along with this program; if not, write to the Free Software
20
// OBSOLETE    Foundation, Inc., 59 Temple Place - Suite 330,
21
// OBSOLETE    Boston, MA 02111-1307, USA.  */
22
// OBSOLETE 
23
// OBSOLETE #include "defs.h"
24
// OBSOLETE #include "gdb_obstack.h"
25
// OBSOLETE #include "symtab.h"
26
// OBSOLETE #include "gdbtypes.h"
27
// OBSOLETE #include "valprint.h"
28
// OBSOLETE #include "expression.h"
29
// OBSOLETE #include "value.h"
30
// OBSOLETE #include "language.h"
31
// OBSOLETE #include "demangle.h"
32
// OBSOLETE #include "c-lang.h"         /* For c_val_print */
33
// OBSOLETE #include "typeprint.h"
34
// OBSOLETE #include "ch-lang.h"
35
// OBSOLETE #include "annotate.h"
36
// OBSOLETE 
37
// OBSOLETE static void chill_print_value_fields (struct type *, char *,
38
// OBSOLETE                                   struct ui_file *, int, int,
39
// OBSOLETE                                   enum val_prettyprint, struct type **);
40
// OBSOLETE 
41
// OBSOLETE static void chill_print_type_scalar (struct type *, LONGEST,
42
// OBSOLETE                                  struct ui_file *);
43
// OBSOLETE 
44
// OBSOLETE static void chill_val_print_array_elements (struct type *, char *,
45
// OBSOLETE                                         CORE_ADDR, struct ui_file *,
46
// OBSOLETE                                         int, int, int,
47
// OBSOLETE                                         enum val_prettyprint);
48
// OBSOLETE 
49
// OBSOLETE 
50
// OBSOLETE /* Print integral scalar data VAL, of type TYPE, onto stdio stream STREAM.
51
// OBSOLETE    Used to print data from type structures in a specified type.  For example,
52
// OBSOLETE    array bounds may be characters or booleans in some languages, and this
53
// OBSOLETE    allows the ranges to be printed in their "natural" form rather than as
54
// OBSOLETE    decimal integer values. */
55
// OBSOLETE 
56
// OBSOLETE static void
57
// OBSOLETE chill_print_type_scalar (struct type *type, LONGEST val, struct ui_file *stream)
58
// OBSOLETE {
59
// OBSOLETE   switch (TYPE_CODE (type))
60
// OBSOLETE     {
61
// OBSOLETE     case TYPE_CODE_RANGE:
62
// OBSOLETE       if (TYPE_TARGET_TYPE (type))
63
// OBSOLETE     {
64
// OBSOLETE       chill_print_type_scalar (TYPE_TARGET_TYPE (type), val, stream);
65
// OBSOLETE       return;
66
// OBSOLETE     }
67
// OBSOLETE       break;
68
// OBSOLETE     case TYPE_CODE_UNDEF:
69
// OBSOLETE     case TYPE_CODE_PTR:
70
// OBSOLETE     case TYPE_CODE_ARRAY:
71
// OBSOLETE     case TYPE_CODE_STRUCT:
72
// OBSOLETE     case TYPE_CODE_UNION:
73
// OBSOLETE     case TYPE_CODE_ENUM:
74
// OBSOLETE     case TYPE_CODE_FUNC:
75
// OBSOLETE     case TYPE_CODE_INT:
76
// OBSOLETE     case TYPE_CODE_FLT:
77
// OBSOLETE     case TYPE_CODE_VOID:
78
// OBSOLETE     case TYPE_CODE_SET:
79
// OBSOLETE     case TYPE_CODE_STRING:
80
// OBSOLETE     case TYPE_CODE_BITSTRING:
81
// OBSOLETE     case TYPE_CODE_ERROR:
82
// OBSOLETE     case TYPE_CODE_MEMBER:
83
// OBSOLETE     case TYPE_CODE_METHOD:
84
// OBSOLETE     case TYPE_CODE_REF:
85
// OBSOLETE     case TYPE_CODE_CHAR:
86
// OBSOLETE     case TYPE_CODE_BOOL:
87
// OBSOLETE     case TYPE_CODE_COMPLEX:
88
// OBSOLETE     case TYPE_CODE_TYPEDEF:
89
// OBSOLETE     default:
90
// OBSOLETE       break;
91
// OBSOLETE     }
92
// OBSOLETE   print_type_scalar (type, val, stream);
93
// OBSOLETE }
94
// OBSOLETE 
95
// OBSOLETE /* Print the elements of an array.
96
// OBSOLETE    Similar to val_print_array_elements, but prints
97
// OBSOLETE    element indexes (in Chill syntax). */
98
// OBSOLETE 
99
// OBSOLETE static void
100
// OBSOLETE chill_val_print_array_elements (struct type *type, char *valaddr,
101
// OBSOLETE                             CORE_ADDR address, struct ui_file *stream,
102
// OBSOLETE                             int format, int deref_ref, int recurse,
103
// OBSOLETE                             enum val_prettyprint pretty)
104
// OBSOLETE {
105
// OBSOLETE   unsigned int i = 0;
106
// OBSOLETE   unsigned int things_printed = 0;
107
// OBSOLETE   unsigned len;
108
// OBSOLETE   struct type *elttype;
109
// OBSOLETE   struct type *range_type = TYPE_FIELD_TYPE (type, 0);
110
// OBSOLETE   struct type *index_type = TYPE_TARGET_TYPE (range_type);
111
// OBSOLETE   unsigned eltlen;
112
// OBSOLETE   /* Position of the array element we are examining to see
113
// OBSOLETE      whether it is repeated.  */
114
// OBSOLETE   unsigned int rep1;
115
// OBSOLETE   /* Number of repetitions we have detected so far.  */
116
// OBSOLETE   unsigned int reps;
117
// OBSOLETE   LONGEST low_bound = TYPE_FIELD_BITPOS (range_type, 0);
118
// OBSOLETE 
119
// OBSOLETE   elttype = check_typedef (TYPE_TARGET_TYPE (type));
120
// OBSOLETE   eltlen = TYPE_LENGTH (elttype);
121
// OBSOLETE   len = TYPE_LENGTH (type) / eltlen;
122
// OBSOLETE 
123
// OBSOLETE   annotate_array_section_begin (i, elttype);
124
// OBSOLETE 
125
// OBSOLETE   for (; i < len && things_printed < print_max; i++)
126
// OBSOLETE     {
127
// OBSOLETE       if (i != 0)
128
// OBSOLETE     {
129
// OBSOLETE       if (prettyprint_arrays)
130
// OBSOLETE         {
131
// OBSOLETE           fprintf_filtered (stream, ",\n");
132
// OBSOLETE           print_spaces_filtered (2 + 2 * recurse, stream);
133
// OBSOLETE         }
134
// OBSOLETE       else
135
// OBSOLETE         {
136
// OBSOLETE           fprintf_filtered (stream, ", ");
137
// OBSOLETE         }
138
// OBSOLETE     }
139
// OBSOLETE       wrap_here (n_spaces (2 + 2 * recurse));
140
// OBSOLETE 
141
// OBSOLETE       rep1 = i + 1;
142
// OBSOLETE       reps = 1;
143
// OBSOLETE       while ((rep1 < len) &&
144
// OBSOLETE          !memcmp (valaddr + i * eltlen, valaddr + rep1 * eltlen, eltlen))
145
// OBSOLETE     {
146
// OBSOLETE       ++reps;
147
// OBSOLETE       ++rep1;
148
// OBSOLETE     }
149
// OBSOLETE 
150
// OBSOLETE       fputs_filtered ("(", stream);
151
// OBSOLETE       chill_print_type_scalar (index_type, low_bound + i, stream);
152
// OBSOLETE       if (reps > 1)
153
// OBSOLETE     {
154
// OBSOLETE       fputs_filtered (":", stream);
155
// OBSOLETE       chill_print_type_scalar (index_type, low_bound + i + reps - 1,
156
// OBSOLETE                                stream);
157
// OBSOLETE       fputs_filtered ("): ", stream);
158
// OBSOLETE       val_print (elttype, valaddr + i * eltlen, 0, 0, stream, format,
159
// OBSOLETE                  deref_ref, recurse + 1, pretty);
160
// OBSOLETE 
161
// OBSOLETE       i = rep1 - 1;
162
// OBSOLETE       things_printed += 1;
163
// OBSOLETE     }
164
// OBSOLETE       else
165
// OBSOLETE     {
166
// OBSOLETE       fputs_filtered ("): ", stream);
167
// OBSOLETE       val_print (elttype, valaddr + i * eltlen, 0, 0, stream, format,
168
// OBSOLETE                  deref_ref, recurse + 1, pretty);
169
// OBSOLETE       annotate_elt ();
170
// OBSOLETE       things_printed++;
171
// OBSOLETE     }
172
// OBSOLETE     }
173
// OBSOLETE   annotate_array_section_end ();
174
// OBSOLETE   if (i < len)
175
// OBSOLETE     {
176
// OBSOLETE       fprintf_filtered (stream, "...");
177
// OBSOLETE     }
178
// OBSOLETE }
179
// OBSOLETE 
180
// OBSOLETE /* Print data of type TYPE located at VALADDR (within GDB), which came from
181
// OBSOLETE    the inferior at address ADDRESS, onto stdio stream STREAM according to
182
// OBSOLETE    FORMAT (a letter or 0 for natural format).  The data at VALADDR is in
183
// OBSOLETE    target byte order.
184
// OBSOLETE 
185
// OBSOLETE    If the data are a string pointer, returns the number of string characters
186
// OBSOLETE    printed.
187
// OBSOLETE 
188
// OBSOLETE    If DEREF_REF is nonzero, then dereference references, otherwise just print
189
// OBSOLETE    them like pointers.
190
// OBSOLETE 
191
// OBSOLETE    The PRETTY parameter controls prettyprinting.  */
192
// OBSOLETE 
193
// OBSOLETE int
194
// OBSOLETE chill_val_print (struct type *type, char *valaddr, int embedded_offset,
195
// OBSOLETE              CORE_ADDR address, struct ui_file *stream, int format,
196
// OBSOLETE              int deref_ref, int recurse, enum val_prettyprint pretty)
197
// OBSOLETE {
198
// OBSOLETE   LONGEST val;
199
// OBSOLETE   unsigned int i = 0;               /* Number of characters printed.  */
200
// OBSOLETE   struct type *elttype;
201
// OBSOLETE   CORE_ADDR addr;
202
// OBSOLETE 
203
// OBSOLETE   CHECK_TYPEDEF (type);
204
// OBSOLETE 
205
// OBSOLETE   switch (TYPE_CODE (type))
206
// OBSOLETE     {
207
// OBSOLETE     case TYPE_CODE_ARRAY:
208
// OBSOLETE       if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0)
209
// OBSOLETE     {
210
// OBSOLETE       if (prettyprint_arrays)
211
// OBSOLETE         {
212
// OBSOLETE           print_spaces_filtered (2 + 2 * recurse, stream);
213
// OBSOLETE         }
214
// OBSOLETE       fprintf_filtered (stream, "[");
215
// OBSOLETE       chill_val_print_array_elements (type, valaddr, address, stream,
216
// OBSOLETE                                     format, deref_ref, recurse, pretty);
217
// OBSOLETE       fprintf_filtered (stream, "]");
218
// OBSOLETE     }
219
// OBSOLETE       else
220
// OBSOLETE     {
221
// OBSOLETE       error ("unimplemented in chill_val_print; unspecified array length");
222
// OBSOLETE     }
223
// OBSOLETE       break;
224
// OBSOLETE 
225
// OBSOLETE     case TYPE_CODE_INT:
226
// OBSOLETE       format = format ? format : output_format;
227
// OBSOLETE       if (format)
228
// OBSOLETE     {
229
// OBSOLETE       print_scalar_formatted (valaddr, type, format, 0, stream);
230
// OBSOLETE     }
231
// OBSOLETE       else
232
// OBSOLETE     {
233
// OBSOLETE       val_print_type_code_int (type, valaddr, stream);
234
// OBSOLETE     }
235
// OBSOLETE       break;
236
// OBSOLETE 
237
// OBSOLETE     case TYPE_CODE_CHAR:
238
// OBSOLETE       format = format ? format : output_format;
239
// OBSOLETE       if (format)
240
// OBSOLETE     {
241
// OBSOLETE       print_scalar_formatted (valaddr, type, format, 0, stream);
242
// OBSOLETE     }
243
// OBSOLETE       else
244
// OBSOLETE     {
245
// OBSOLETE       LA_PRINT_CHAR ((unsigned char) unpack_long (type, valaddr),
246
// OBSOLETE                      stream);
247
// OBSOLETE     }
248
// OBSOLETE       break;
249
// OBSOLETE 
250
// OBSOLETE     case TYPE_CODE_FLT:
251
// OBSOLETE       if (format)
252
// OBSOLETE     {
253
// OBSOLETE       print_scalar_formatted (valaddr, type, format, 0, stream);
254
// OBSOLETE     }
255
// OBSOLETE       else
256
// OBSOLETE     {
257
// OBSOLETE       print_floating (valaddr, type, stream);
258
// OBSOLETE     }
259
// OBSOLETE       break;
260
// OBSOLETE 
261
// OBSOLETE     case TYPE_CODE_BOOL:
262
// OBSOLETE       format = format ? format : output_format;
263
// OBSOLETE       if (format)
264
// OBSOLETE     {
265
// OBSOLETE       print_scalar_formatted (valaddr, type, format, 0, stream);
266
// OBSOLETE     }
267
// OBSOLETE       else
268
// OBSOLETE     {
269
// OBSOLETE       /* FIXME: Why is this using builtin_type_chill_bool not type?  */
270
// OBSOLETE       val = unpack_long (builtin_type_chill_bool, valaddr);
271
// OBSOLETE       fprintf_filtered (stream, val ? "TRUE" : "FALSE");
272
// OBSOLETE     }
273
// OBSOLETE       break;
274
// OBSOLETE 
275
// OBSOLETE     case TYPE_CODE_UNDEF:
276
// OBSOLETE       /* This happens (without TYPE_FLAG_STUB set) on systems which don't use
277
// OBSOLETE          dbx xrefs (NO_DBX_XREFS in gcc) if a file has a "struct foo *bar"
278
// OBSOLETE          and no complete type for struct foo in that file.  */
279
// OBSOLETE       fprintf_filtered (stream, "<incomplete type>");
280
// OBSOLETE       break;
281
// OBSOLETE 
282
// OBSOLETE     case TYPE_CODE_PTR:
283
// OBSOLETE       if (format && format != 's')
284
// OBSOLETE     {
285
// OBSOLETE       print_scalar_formatted (valaddr, type, format, 0, stream);
286
// OBSOLETE       break;
287
// OBSOLETE     }
288
// OBSOLETE       addr = unpack_pointer (type, valaddr);
289
// OBSOLETE       elttype = check_typedef (TYPE_TARGET_TYPE (type));
290
// OBSOLETE 
291
// OBSOLETE       /* We assume a NULL pointer is all zeros ... */
292
// OBSOLETE       if (addr == 0)
293
// OBSOLETE     {
294
// OBSOLETE       fputs_filtered ("NULL", stream);
295
// OBSOLETE       return 0;
296
// OBSOLETE     }
297
// OBSOLETE 
298
// OBSOLETE       if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
299
// OBSOLETE     {
300
// OBSOLETE       /* Try to print what function it points to.  */
301
// OBSOLETE       print_address_demangle (addr, stream, demangle);
302
// OBSOLETE       /* Return value is irrelevant except for string pointers.  */
303
// OBSOLETE       return (0);
304
// OBSOLETE     }
305
// OBSOLETE       if (addressprint && format != 's')
306
// OBSOLETE     {
307
// OBSOLETE       print_address_numeric (addr, 1, stream);
308
// OBSOLETE     }
309
// OBSOLETE 
310
// OBSOLETE       /* For a pointer to char or unsigned char, also print the string
311
// OBSOLETE          pointed to, unless pointer is null.  */
312
// OBSOLETE       if (TYPE_LENGTH (elttype) == 1
313
// OBSOLETE       && TYPE_CODE (elttype) == TYPE_CODE_CHAR
314
// OBSOLETE       && (format == 0 || format == 's')
315
// OBSOLETE       && addr != 0
316
// OBSOLETE       &&                    /* If print_max is UINT_MAX, the alloca below will fail.
317
// OBSOLETE                                In that case don't try to print the string.  */
318
// OBSOLETE       print_max < UINT_MAX)
319
// OBSOLETE     i = val_print_string (addr, -1, TYPE_LENGTH (elttype), stream);
320
// OBSOLETE 
321
// OBSOLETE       /* Return number of characters printed, plus one for the
322
// OBSOLETE          terminating null if we have "reached the end".  */
323
// OBSOLETE       return (i + (print_max && i != print_max));
324
// OBSOLETE       break;
325
// OBSOLETE 
326
// OBSOLETE     case TYPE_CODE_STRING:
327
// OBSOLETE       i = TYPE_LENGTH (type);
328
// OBSOLETE       LA_PRINT_STRING (stream, valaddr, i, 1, 0);
329
// OBSOLETE       /* Return number of characters printed, plus one for the terminating
330
// OBSOLETE          null if we have "reached the end".  */
331
// OBSOLETE       return (i + (print_max && i != print_max));
332
// OBSOLETE       break;
333
// OBSOLETE 
334
// OBSOLETE     case TYPE_CODE_BITSTRING:
335
// OBSOLETE     case TYPE_CODE_SET:
336
// OBSOLETE       elttype = TYPE_INDEX_TYPE (type);
337
// OBSOLETE       CHECK_TYPEDEF (elttype);
338
// OBSOLETE       if (TYPE_STUB (elttype))
339
// OBSOLETE     {
340
// OBSOLETE       fprintf_filtered (stream, "<incomplete type>");
341
// OBSOLETE       gdb_flush (stream);
342
// OBSOLETE       break;
343
// OBSOLETE     }
344
// OBSOLETE       {
345
// OBSOLETE     struct type *range = elttype;
346
// OBSOLETE     LONGEST low_bound, high_bound;
347
// OBSOLETE     int i;
348
// OBSOLETE     int is_bitstring = TYPE_CODE (type) == TYPE_CODE_BITSTRING;
349
// OBSOLETE     int need_comma = 0;
350
// OBSOLETE 
351
// OBSOLETE     if (is_bitstring)
352
// OBSOLETE       fputs_filtered ("B'", stream);
353
// OBSOLETE     else
354
// OBSOLETE       fputs_filtered ("[", stream);
355
// OBSOLETE 
356
// OBSOLETE     i = get_discrete_bounds (range, &low_bound, &high_bound);
357
// OBSOLETE       maybe_bad_bstring:
358
// OBSOLETE     if (i < 0)
359
// OBSOLETE       {
360
// OBSOLETE         fputs_filtered ("<error value>", stream);
361
// OBSOLETE         goto done;
362
// OBSOLETE       }
363
// OBSOLETE 
364
// OBSOLETE     for (i = low_bound; i <= high_bound; i++)
365
// OBSOLETE       {
366
// OBSOLETE         int element = value_bit_index (type, valaddr, i);
367
// OBSOLETE         if (element < 0)
368
// OBSOLETE           {
369
// OBSOLETE             i = element;
370
// OBSOLETE             goto maybe_bad_bstring;
371
// OBSOLETE           }
372
// OBSOLETE         if (is_bitstring)
373
// OBSOLETE           fprintf_filtered (stream, "%d", element);
374
// OBSOLETE         else if (element)
375
// OBSOLETE           {
376
// OBSOLETE             if (need_comma)
377
// OBSOLETE               fputs_filtered (", ", stream);
378
// OBSOLETE             chill_print_type_scalar (range, (LONGEST) i, stream);
379
// OBSOLETE             need_comma = 1;
380
// OBSOLETE 
381
// OBSOLETE             /* Look for a continuous range of true elements. */
382
// OBSOLETE             if (i + 1 <= high_bound && value_bit_index (type, valaddr, ++i))
383
// OBSOLETE               {
384
// OBSOLETE                 int j = i;  /* j is the upper bound so far of the range */
385
// OBSOLETE                 fputs_filtered (":", stream);
386
// OBSOLETE                 while (i + 1 <= high_bound
387
// OBSOLETE                        && value_bit_index (type, valaddr, ++i))
388
// OBSOLETE                   j = i;
389
// OBSOLETE                 chill_print_type_scalar (range, (LONGEST) j, stream);
390
// OBSOLETE               }
391
// OBSOLETE           }
392
// OBSOLETE       }
393
// OBSOLETE       done:
394
// OBSOLETE     if (is_bitstring)
395
// OBSOLETE       fputs_filtered ("'", stream);
396
// OBSOLETE     else
397
// OBSOLETE       fputs_filtered ("]", stream);
398
// OBSOLETE       }
399
// OBSOLETE       break;
400
// OBSOLETE 
401
// OBSOLETE     case TYPE_CODE_STRUCT:
402
// OBSOLETE       if (chill_varying_type (type))
403
// OBSOLETE     {
404
// OBSOLETE       struct type *inner = check_typedef (TYPE_FIELD_TYPE (type, 1));
405
// OBSOLETE       long length = unpack_long (TYPE_FIELD_TYPE (type, 0), valaddr);
406
// OBSOLETE       char *data_addr = valaddr + TYPE_FIELD_BITPOS (type, 1) / 8;
407
// OBSOLETE 
408
// OBSOLETE       switch (TYPE_CODE (inner))
409
// OBSOLETE         {
410
// OBSOLETE         case TYPE_CODE_STRING:
411
// OBSOLETE           if (length > TYPE_LENGTH (type) - 2)
412
// OBSOLETE             {
413
// OBSOLETE               fprintf_filtered (stream,
414
// OBSOLETE                     "<dynamic length %ld > static length %d> *invalid*",
415
// OBSOLETE                                 length, TYPE_LENGTH (type));
416
// OBSOLETE 
417
// OBSOLETE               /* Don't print the string; doing so might produce a
418
// OBSOLETE                  segfault.  */
419
// OBSOLETE               return length;
420
// OBSOLETE             }
421
// OBSOLETE           LA_PRINT_STRING (stream, data_addr, length, 1, 0);
422
// OBSOLETE           return length;
423
// OBSOLETE         default:
424
// OBSOLETE           break;
425
// OBSOLETE         }
426
// OBSOLETE     }
427
// OBSOLETE       chill_print_value_fields (type, valaddr, stream, format, recurse, pretty,
428
// OBSOLETE                             0);
429
// OBSOLETE       break;
430
// OBSOLETE 
431
// OBSOLETE     case TYPE_CODE_REF:
432
// OBSOLETE       if (addressprint)
433
// OBSOLETE     {
434
// OBSOLETE       fprintf_filtered (stream, "LOC(");
435
// OBSOLETE       print_address_numeric
436
// OBSOLETE         (extract_address (valaddr, TARGET_PTR_BIT / HOST_CHAR_BIT),
437
// OBSOLETE          1,
438
// OBSOLETE          stream);
439
// OBSOLETE       fprintf_filtered (stream, ")");
440
// OBSOLETE       if (deref_ref)
441
// OBSOLETE         fputs_filtered (": ", stream);
442
// OBSOLETE     }
443
// OBSOLETE       /* De-reference the reference.  */
444
// OBSOLETE       if (deref_ref)
445
// OBSOLETE     {
446
// OBSOLETE       if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_UNDEF)
447
// OBSOLETE         {
448
// OBSOLETE           struct value *deref_val =
449
// OBSOLETE           value_at
450
// OBSOLETE           (TYPE_TARGET_TYPE (type),
451
// OBSOLETE            unpack_pointer (lookup_pointer_type (builtin_type_void),
452
// OBSOLETE                            valaddr),
453
// OBSOLETE            NULL);
454
// OBSOLETE           val_print (VALUE_TYPE (deref_val),
455
// OBSOLETE                      VALUE_CONTENTS (deref_val),
456
// OBSOLETE                      0,
457
// OBSOLETE                      VALUE_ADDRESS (deref_val), stream, format,
458
// OBSOLETE                      deref_ref, recurse + 1, pretty);
459
// OBSOLETE         }
460
// OBSOLETE       else
461
// OBSOLETE         fputs_filtered ("???", stream);
462
// OBSOLETE     }
463
// OBSOLETE       break;
464
// OBSOLETE 
465
// OBSOLETE     case TYPE_CODE_ENUM:
466
// OBSOLETE       c_val_print (type, valaddr, 0, address, stream, format,
467
// OBSOLETE                deref_ref, recurse, pretty);
468
// OBSOLETE       break;
469
// OBSOLETE 
470
// OBSOLETE     case TYPE_CODE_RANGE:
471
// OBSOLETE       if (TYPE_TARGET_TYPE (type))
472
// OBSOLETE     chill_val_print (TYPE_TARGET_TYPE (type), valaddr, 0, address, stream,
473
// OBSOLETE                      format, deref_ref, recurse, pretty);
474
// OBSOLETE       break;
475
// OBSOLETE 
476
// OBSOLETE     case TYPE_CODE_MEMBER:
477
// OBSOLETE     case TYPE_CODE_UNION:
478
// OBSOLETE     case TYPE_CODE_FUNC:
479
// OBSOLETE     case TYPE_CODE_VOID:
480
// OBSOLETE     case TYPE_CODE_ERROR:
481
// OBSOLETE     default:
482
// OBSOLETE       /* Let's defer printing to the C printer, rather than
483
// OBSOLETE          print an error message.  FIXME! */
484
// OBSOLETE       c_val_print (type, valaddr, 0, address, stream, format,
485
// OBSOLETE                deref_ref, recurse, pretty);
486
// OBSOLETE     }
487
// OBSOLETE   gdb_flush (stream);
488
// OBSOLETE   return (0);
489
// OBSOLETE }
490
// OBSOLETE 
491
// OBSOLETE /* Mutually recursive subroutines of cplus_print_value and c_val_print to
492
// OBSOLETE    print out a structure's fields: cp_print_value_fields and cplus_print_value.
493
// OBSOLETE 
494
// OBSOLETE    TYPE, VALADDR, STREAM, RECURSE, and PRETTY have the
495
// OBSOLETE    same meanings as in cplus_print_value and c_val_print.
496
// OBSOLETE 
497
// OBSOLETE    DONT_PRINT is an array of baseclass types that we
498
// OBSOLETE    should not print, or zero if called from top level.  */
499
// OBSOLETE 
500
// OBSOLETE static void
501
// OBSOLETE chill_print_value_fields (struct type *type, char *valaddr,
502
// OBSOLETE                       struct ui_file *stream, int format, int recurse,
503
// OBSOLETE                       enum val_prettyprint pretty, struct type **dont_print)
504
// OBSOLETE {
505
// OBSOLETE   int i, len;
506
// OBSOLETE   int fields_seen = 0;
507
// OBSOLETE 
508
// OBSOLETE   CHECK_TYPEDEF (type);
509
// OBSOLETE 
510
// OBSOLETE   fprintf_filtered (stream, "[");
511
// OBSOLETE   len = TYPE_NFIELDS (type);
512
// OBSOLETE   if (len == 0)
513
// OBSOLETE     {
514
// OBSOLETE       fprintf_filtered (stream, "<No data fields>");
515
// OBSOLETE     }
516
// OBSOLETE   else
517
// OBSOLETE     {
518
// OBSOLETE       for (i = 0; i < len; i++)
519
// OBSOLETE     {
520
// OBSOLETE       if (fields_seen)
521
// OBSOLETE         {
522
// OBSOLETE           fprintf_filtered (stream, ", ");
523
// OBSOLETE         }
524
// OBSOLETE       fields_seen = 1;
525
// OBSOLETE       if (pretty)
526
// OBSOLETE         {
527
// OBSOLETE           fprintf_filtered (stream, "\n");
528
// OBSOLETE           print_spaces_filtered (2 + 2 * recurse, stream);
529
// OBSOLETE         }
530
// OBSOLETE       else
531
// OBSOLETE         {
532
// OBSOLETE           wrap_here (n_spaces (2 + 2 * recurse));
533
// OBSOLETE         }
534
// OBSOLETE       fputs_filtered (".", stream);
535
// OBSOLETE       fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
536
// OBSOLETE                                language_chill, DMGL_NO_OPTS);
537
// OBSOLETE       fputs_filtered (": ", stream);
538
// OBSOLETE       if (TYPE_FIELD_PACKED (type, i))
539
// OBSOLETE         {
540
// OBSOLETE           struct value *v;
541
// OBSOLETE 
542
// OBSOLETE           /* Bitfields require special handling, especially due to byte
543
// OBSOLETE              order problems.  */
544
// OBSOLETE           v = value_from_longest (TYPE_FIELD_TYPE (type, i),
545
// OBSOLETE                                unpack_field_as_long (type, valaddr, i));
546
// OBSOLETE 
547
// OBSOLETE           chill_val_print (TYPE_FIELD_TYPE (type, i), VALUE_CONTENTS (v), 0, 0,
548
// OBSOLETE                            stream, format, 0, recurse + 1, pretty);
549
// OBSOLETE         }
550
// OBSOLETE       else
551
// OBSOLETE         {
552
// OBSOLETE           chill_val_print (TYPE_FIELD_TYPE (type, i),
553
// OBSOLETE                            valaddr + TYPE_FIELD_BITPOS (type, i) / 8, 0,
554
// OBSOLETE                            0, stream, format, 0, recurse + 1, pretty);
555
// OBSOLETE         }
556
// OBSOLETE     }
557
// OBSOLETE       if (pretty)
558
// OBSOLETE     {
559
// OBSOLETE       fprintf_filtered (stream, "\n");
560
// OBSOLETE       print_spaces_filtered (2 * recurse, stream);
561
// OBSOLETE     }
562
// OBSOLETE     }
563
// OBSOLETE   fprintf_filtered (stream, "]");
564
// OBSOLETE }
565
// OBSOLETE 
566
// OBSOLETE int
567
// OBSOLETE chill_value_print (struct value *val, struct ui_file *stream, int format,
568
// OBSOLETE                enum val_prettyprint pretty)
569
// OBSOLETE {
570
// OBSOLETE   struct type *type = VALUE_TYPE (val);
571
// OBSOLETE   struct type *real_type = check_typedef (type);
572
// OBSOLETE 
573
// OBSOLETE   /* If it is a pointer, indicate what it points to.
574
// OBSOLETE 
575
// OBSOLETE      Print type also if it is a reference. */
576
// OBSOLETE 
577
// OBSOLETE   if (TYPE_CODE (real_type) == TYPE_CODE_PTR ||
578
// OBSOLETE       TYPE_CODE (real_type) == TYPE_CODE_REF)
579
// OBSOLETE     {
580
// OBSOLETE       char *valaddr = VALUE_CONTENTS (val);
581
// OBSOLETE       CORE_ADDR addr = unpack_pointer (type, valaddr);
582
// OBSOLETE       if (TYPE_CODE (type) != TYPE_CODE_PTR || addr != 0)
583
// OBSOLETE     {
584
// OBSOLETE       int i;
585
// OBSOLETE       char *name = TYPE_NAME (type);
586
// OBSOLETE       if (name)
587
// OBSOLETE         fputs_filtered (name, stream);
588
// OBSOLETE       else if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID)
589
// OBSOLETE         fputs_filtered ("PTR", stream);
590
// OBSOLETE       else
591
// OBSOLETE         {
592
// OBSOLETE           fprintf_filtered (stream, "(");
593
// OBSOLETE           type_print (type, "", stream, -1);
594
// OBSOLETE           fprintf_filtered (stream, ")");
595
// OBSOLETE         }
596
// OBSOLETE       fprintf_filtered (stream, "(");
597
// OBSOLETE       i = val_print (type, valaddr, 0, VALUE_ADDRESS (val),
598
// OBSOLETE                      stream, format, 1, 0, pretty);
599
// OBSOLETE       fprintf_filtered (stream, ")");
600
// OBSOLETE       return i;
601
// OBSOLETE     }
602
// OBSOLETE     }
603
// OBSOLETE   return (val_print (type, VALUE_CONTENTS (val), 0,
604
// OBSOLETE                  VALUE_ADDRESS (val), stream, format, 1, 0, pretty));
605
// OBSOLETE }

powered by: WebSVN 2.1.0

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