* config/tc-mn10300.c (md_assemble): Copy size to real_size before
[deliverable/binutils-gdb.git] / gdb / ch-lang.c
CommitLineData
c906108c 1/* Chill language support routines for GDB, the GNU debugger.
d9fcf2fb 2 Copyright 1992, 1995, 1996, 2000 Free Software Foundation, Inc.
c906108c 3
c5aa993b 4 This file is part of GDB.
c906108c 5
c5aa993b
JM
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 2 of the License, or
9 (at your option) any later version.
c906108c 10
c5aa993b
JM
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.
c906108c 15
c5aa993b
JM
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., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */
c906108c
SS
20
21#include "defs.h"
22#include "symtab.h"
23#include "gdbtypes.h"
24#include "value.h"
25#include "expression.h"
26#include "parser-defs.h"
27#include "language.h"
28#include "ch-lang.h"
745b8ca0 29#include "valprint.h"
c906108c 30
392a587b
JM
31extern void _initialize_chill_language PARAMS ((void));
32
c906108c 33static value_ptr
c5aa993b 34 evaluate_subexp_chill PARAMS ((struct type *, struct expression *, int *, enum noside));
c906108c
SS
35
36static value_ptr
c5aa993b 37 value_chill_max_min PARAMS ((enum exp_opcode, value_ptr));
c906108c
SS
38
39static value_ptr
c5aa993b 40 value_chill_card PARAMS ((value_ptr));
c906108c
SS
41
42static value_ptr
c5aa993b 43 value_chill_length PARAMS ((value_ptr));
c906108c
SS
44
45static struct type *
c5aa993b 46 chill_create_fundamental_type PARAMS ((struct objfile *, int));
c906108c 47
d9fcf2fb
JM
48static void chill_printstr (struct ui_file * stream, char *string,
49 unsigned int length, int width,
50 int force_ellipses);
c906108c 51
d9fcf2fb 52static void chill_printchar (int, struct ui_file *);
c906108c
SS
53
54/* For now, Chill uses a simple mangling algorithm whereby you simply
55 discard everything after the occurance of two successive CPLUS_MARKER
56 characters to derive the demangled form. */
57
58char *
59chill_demangle (mangled)
60 const char *mangled;
61{
62 const char *joiner = NULL;
63 char *demangled;
64 const char *cp = mangled;
65
66 while (*cp)
67 {
68 if (is_cplus_marker (*cp))
69 {
70 joiner = cp;
71 break;
72 }
73 cp++;
74 }
75 if (joiner != NULL && *(joiner + 1) == *joiner)
76 {
77 demangled = savestring (mangled, joiner - mangled);
78 }
79 else
80 {
81 demangled = NULL;
82 }
83 return (demangled);
84}
85
86static void
87chill_printchar (c, stream)
88 register int c;
d9fcf2fb 89 struct ui_file *stream;
c906108c
SS
90{
91 c &= 0xFF; /* Avoid sign bit follies */
92
93 if (PRINT_LITERAL_FORM (c))
94 {
95 if (c == '\'' || c == '^')
96 fprintf_filtered (stream, "'%c%c'", c, c);
97 else
98 fprintf_filtered (stream, "'%c'", c);
99 }
100 else
101 {
102 fprintf_filtered (stream, "'^(%u)'", (unsigned int) c);
103 }
104}
105
106/* Print the character string STRING, printing at most LENGTH characters.
107 Printing stops early if the number hits print_max; repeat counts
108 are printed as appropriate. Print ellipses at the end if we
109 had to stop before printing LENGTH characters, or if FORCE_ELLIPSES.
110 Note that gdb maintains the length of strings without counting the
111 terminating null byte, while chill strings are typically written with
112 an explicit null byte. So we always assume an implied null byte
113 until gdb is able to maintain non-null terminated strings as well
114 as null terminated strings (FIXME).
c5aa993b 115 */
c906108c
SS
116
117static void
118chill_printstr (stream, string, length, width, force_ellipses)
d9fcf2fb 119 struct ui_file *stream;
c906108c
SS
120 char *string;
121 unsigned int length;
122 int width;
123 int force_ellipses;
124{
125 register unsigned int i;
126 unsigned int things_printed = 0;
127 int in_literal_form = 0;
128 int in_control_form = 0;
129 int need_slashslash = 0;
130 unsigned int c;
c906108c
SS
131
132 if (length == 0)
133 {
134 fputs_filtered ("\"\"", stream);
135 return;
136 }
137
138 for (i = 0; i < length && things_printed < print_max; ++i)
139 {
140 /* Position of the character we are examining
c5aa993b 141 to see whether it is repeated. */
c906108c
SS
142 unsigned int rep1;
143 /* Number of repetitions we have detected so far. */
144 unsigned int reps;
145
146 QUIT;
147
148 if (need_slashslash)
149 {
150 fputs_filtered ("//", stream);
151 need_slashslash = 0;
152 }
153
154 rep1 = i + 1;
155 reps = 1;
156 while (rep1 < length && string[rep1] == string[i])
157 {
158 ++rep1;
159 ++reps;
160 }
161
162 c = string[i];
163 if (reps > repeat_count_threshold)
164 {
165 if (in_control_form || in_literal_form)
166 {
167 if (in_control_form)
168 fputs_filtered (")", stream);
169 fputs_filtered ("\"//", stream);
170 in_control_form = in_literal_form = 0;
171 }
172 chill_printchar (c, stream);
173 fprintf_filtered (stream, "<repeats %u times>", reps);
174 i = rep1 - 1;
175 things_printed += repeat_count_threshold;
176 need_slashslash = 1;
177 }
178 else
179 {
c5aa993b 180 if (!in_literal_form && !in_control_form)
c906108c
SS
181 fputs_filtered ("\"", stream);
182 if (PRINT_LITERAL_FORM (c))
183 {
184 if (!in_literal_form)
185 {
186 if (in_control_form)
187 {
188 fputs_filtered (")", stream);
189 in_control_form = 0;
190 }
191 in_literal_form = 1;
192 }
193 fprintf_filtered (stream, "%c", c);
194 if (c == '"' || c == '^')
195 /* duplicate this one as must be done at input */
196 fprintf_filtered (stream, "%c", c);
197 }
198 else
199 {
200 if (!in_control_form)
201 {
202 if (in_literal_form)
203 {
204 in_literal_form = 0;
205 }
206 fputs_filtered ("^(", stream);
207 in_control_form = 1;
208 }
209 else
210 fprintf_filtered (stream, ",");
211 c = c & 0xff;
212 fprintf_filtered (stream, "%u", (unsigned int) c);
213 }
214 ++things_printed;
215 }
216 }
217
218 /* Terminate the quotes if necessary. */
219 if (in_control_form)
220 {
221 fputs_filtered (")", stream);
222 }
223 if (in_literal_form || in_control_form)
224 {
225 fputs_filtered ("\"", stream);
226 }
227 if (force_ellipses || (i < length))
228 {
229 fputs_filtered ("...", stream);
230 }
231}
232
233static struct type *
234chill_create_fundamental_type (objfile, typeid)
235 struct objfile *objfile;
236 int typeid;
237{
238 register struct type *type = NULL;
239
240 switch (typeid)
241 {
c5aa993b
JM
242 default:
243 /* FIXME: For now, if we are asked to produce a type not in this
244 language, create the equivalent of a C integer type with the
245 name "<?type?>". When all the dust settles from the type
246 reconstruction work, this should probably become an error. */
247 type = init_type (TYPE_CODE_INT, 2, 0, "<?type?>", objfile);
248 warning ("internal error: no chill fundamental type %d", typeid);
249 break;
250 case FT_VOID:
251 /* FIXME: Currently the GNU Chill compiler emits some DWARF entries for
252 typedefs, unrelated to anything directly in the code being compiled,
253 that have some FT_VOID types. Just fake it for now. */
254 type = init_type (TYPE_CODE_VOID, 0, 0, "<?VOID?>", objfile);
255 break;
256 case FT_BOOLEAN:
257 type = init_type (TYPE_CODE_BOOL, 1, TYPE_FLAG_UNSIGNED, "BOOL", objfile);
258 break;
259 case FT_CHAR:
260 type = init_type (TYPE_CODE_CHAR, 1, TYPE_FLAG_UNSIGNED, "CHAR", objfile);
261 break;
262 case FT_SIGNED_CHAR:
263 type = init_type (TYPE_CODE_INT, 1, 0, "BYTE", objfile);
264 break;
265 case FT_UNSIGNED_CHAR:
266 type = init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED, "UBYTE", objfile);
267 break;
268 case FT_SHORT: /* Chill ints are 2 bytes */
269 type = init_type (TYPE_CODE_INT, 2, 0, "INT", objfile);
270 break;
271 case FT_UNSIGNED_SHORT: /* Chill ints are 2 bytes */
272 type = init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED, "UINT", objfile);
273 break;
274 case FT_INTEGER: /* FIXME? */
275 case FT_SIGNED_INTEGER: /* FIXME? */
276 case FT_LONG: /* Chill longs are 4 bytes */
277 case FT_SIGNED_LONG: /* Chill longs are 4 bytes */
278 type = init_type (TYPE_CODE_INT, 4, 0, "LONG", objfile);
279 break;
280 case FT_UNSIGNED_INTEGER: /* FIXME? */
281 case FT_UNSIGNED_LONG: /* Chill longs are 4 bytes */
282 type = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED, "ULONG", objfile);
283 break;
284 case FT_FLOAT:
285 type = init_type (TYPE_CODE_FLT, 4, 0, "REAL", objfile);
286 break;
287 case FT_DBL_PREC_FLOAT:
288 type = init_type (TYPE_CODE_FLT, 8, 0, "LONG_REAL", objfile);
289 break;
290 }
c906108c
SS
291 return (type);
292}
c906108c 293\f
c5aa993b 294
c906108c
SS
295/* Table of operators and their precedences for printing expressions. */
296
c5aa993b
JM
297static const struct op_print chill_op_print_tab[] =
298{
299 {"AND", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
300 {"OR", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
301 {"NOT", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
302 {"MOD", BINOP_MOD, PREC_MUL, 0},
303 {"REM", BINOP_REM, PREC_MUL, 0},
304 {"SIZE", UNOP_SIZEOF, PREC_BUILTIN_FUNCTION, 0},
305 {"LOWER", UNOP_LOWER, PREC_BUILTIN_FUNCTION, 0},
306 {"UPPER", UNOP_UPPER, PREC_BUILTIN_FUNCTION, 0},
307 {"CARD", UNOP_CARD, PREC_BUILTIN_FUNCTION, 0},
308 {"MAX", UNOP_CHMAX, PREC_BUILTIN_FUNCTION, 0},
309 {"MIN", UNOP_CHMIN, PREC_BUILTIN_FUNCTION, 0},
310 {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
311 {"=", BINOP_EQUAL, PREC_EQUAL, 0},
312 {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
313 {"<=", BINOP_LEQ, PREC_ORDER, 0},
314 {">=", BINOP_GEQ, PREC_ORDER, 0},
315 {">", BINOP_GTR, PREC_ORDER, 0},
316 {"<", BINOP_LESS, PREC_ORDER, 0},
317 {"+", BINOP_ADD, PREC_ADD, 0},
318 {"-", BINOP_SUB, PREC_ADD, 0},
319 {"*", BINOP_MUL, PREC_MUL, 0},
320 {"/", BINOP_DIV, PREC_MUL, 0},
321 {"//", BINOP_CONCAT, PREC_PREFIX, 0}, /* FIXME: precedence? */
322 {"-", UNOP_NEG, PREC_PREFIX, 0},
323 {"->", UNOP_IND, PREC_SUFFIX, 1},
324 {"->", UNOP_ADDR, PREC_PREFIX, 0},
325 {":", BINOP_RANGE, PREC_ASSIGN, 0},
326 {NULL, 0, 0, 0}
c906108c
SS
327};
328\f
329/* The built-in types of Chill. */
330
331struct type *builtin_type_chill_bool;
332struct type *builtin_type_chill_char;
333struct type *builtin_type_chill_long;
334struct type *builtin_type_chill_ulong;
335struct type *builtin_type_chill_real;
336
c5aa993b 337struct type **CONST_PTR (chill_builtin_types[]) =
c906108c
SS
338{
339 &builtin_type_chill_bool,
c5aa993b
JM
340 &builtin_type_chill_char,
341 &builtin_type_chill_long,
342 &builtin_type_chill_ulong,
343 &builtin_type_chill_real,
344 0
c906108c
SS
345};
346
347/* Calculate LOWER or UPPER of TYPE.
348 Returns the result as an integer.
349 *RESULT_TYPE is the appropriate type for the result. */
350
351LONGEST
352type_lower_upper (op, type, result_type)
c5aa993b 353 enum exp_opcode op; /* Either UNOP_LOWER or UNOP_UPPER */
c906108c
SS
354 struct type *type;
355 struct type **result_type;
356{
357 LONGEST low, high;
358 *result_type = type;
359 CHECK_TYPEDEF (type);
360 switch (TYPE_CODE (type))
361 {
362 case TYPE_CODE_STRUCT:
363 *result_type = builtin_type_int;
364 if (chill_varying_type (type))
365 return type_lower_upper (op, TYPE_FIELD_TYPE (type, 1), result_type);
366 break;
367 case TYPE_CODE_ARRAY:
368 case TYPE_CODE_BITSTRING:
369 case TYPE_CODE_STRING:
c5aa993b 370 type = TYPE_FIELD_TYPE (type, 0); /* Get index type */
c906108c
SS
371
372 /* ... fall through ... */
373 case TYPE_CODE_RANGE:
374 *result_type = TYPE_TARGET_TYPE (type);
375 return op == UNOP_LOWER ? TYPE_LOW_BOUND (type) : TYPE_HIGH_BOUND (type);
376
377 case TYPE_CODE_ENUM:
378 case TYPE_CODE_BOOL:
379 case TYPE_CODE_INT:
380 case TYPE_CODE_CHAR:
381 if (get_discrete_bounds (type, &low, &high) >= 0)
382 {
383 *result_type = type;
384 return op == UNOP_LOWER ? low : high;
385 }
386 break;
387 case TYPE_CODE_UNDEF:
388 case TYPE_CODE_PTR:
389 case TYPE_CODE_UNION:
390 case TYPE_CODE_FUNC:
391 case TYPE_CODE_FLT:
392 case TYPE_CODE_VOID:
393 case TYPE_CODE_SET:
394 case TYPE_CODE_ERROR:
395 case TYPE_CODE_MEMBER:
396 case TYPE_CODE_METHOD:
397 case TYPE_CODE_REF:
398 case TYPE_CODE_COMPLEX:
399 default:
400 break;
401 }
402 error ("unknown mode for LOWER/UPPER builtin");
403}
404
405static value_ptr
406value_chill_length (val)
407 value_ptr val;
408{
409 LONGEST tmp;
410 struct type *type = VALUE_TYPE (val);
411 struct type *ttype;
412 CHECK_TYPEDEF (type);
413 switch (TYPE_CODE (type))
414 {
415 case TYPE_CODE_ARRAY:
416 case TYPE_CODE_BITSTRING:
417 case TYPE_CODE_STRING:
418 tmp = type_lower_upper (UNOP_UPPER, type, &ttype)
419 - type_lower_upper (UNOP_LOWER, type, &ttype) + 1;
420 break;
421 case TYPE_CODE_STRUCT:
422 if (chill_varying_type (type))
423 {
424 tmp = unpack_long (TYPE_FIELD_TYPE (type, 0), VALUE_CONTENTS (val));
425 break;
426 }
427 /* ... else fall through ... */
428 default:
429 error ("bad argument to LENGTH builtin");
430 }
431 return value_from_longest (builtin_type_int, tmp);
432}
433
434static value_ptr
435value_chill_card (val)
436 value_ptr val;
437{
438 LONGEST tmp = 0;
439 struct type *type = VALUE_TYPE (val);
440 CHECK_TYPEDEF (type);
441
442 if (TYPE_CODE (type) == TYPE_CODE_SET)
443 {
444 struct type *range_type = TYPE_INDEX_TYPE (type);
445 LONGEST lower_bound, upper_bound;
446 int i;
447
448 get_discrete_bounds (range_type, &lower_bound, &upper_bound);
449 for (i = lower_bound; i <= upper_bound; i++)
450 if (value_bit_index (type, VALUE_CONTENTS (val), i) > 0)
451 tmp++;
452 }
453 else
454 error ("bad argument to CARD builtin");
455
456 return value_from_longest (builtin_type_int, tmp);
457}
458
459static value_ptr
460value_chill_max_min (op, val)
461 enum exp_opcode op;
462 value_ptr val;
463{
464 LONGEST tmp = 0;
465 struct type *type = VALUE_TYPE (val);
466 struct type *elttype;
467 CHECK_TYPEDEF (type);
468
469 if (TYPE_CODE (type) == TYPE_CODE_SET)
470 {
471 LONGEST lower_bound, upper_bound;
472 int i, empty = 1;
473
474 elttype = TYPE_INDEX_TYPE (type);
475 CHECK_TYPEDEF (elttype);
476 get_discrete_bounds (elttype, &lower_bound, &upper_bound);
477
478 if (op == UNOP_CHMAX)
479 {
480 for (i = upper_bound; i >= lower_bound; i--)
481 {
482 if (value_bit_index (type, VALUE_CONTENTS (val), i) > 0)
483 {
484 tmp = i;
485 empty = 0;
486 break;
487 }
488 }
489 }
490 else
491 {
492 for (i = lower_bound; i <= upper_bound; i++)
493 {
494 if (value_bit_index (type, VALUE_CONTENTS (val), i) > 0)
495 {
496 tmp = i;
497 empty = 0;
498 break;
499 }
500 }
501 }
502 if (empty)
503 error ("%s for empty powerset", op == UNOP_CHMAX ? "MAX" : "MIN");
504 }
505 else
506 error ("bad argument to %s builtin", op == UNOP_CHMAX ? "MAX" : "MIN");
507
508 return value_from_longest (TYPE_CODE (elttype) == TYPE_CODE_RANGE
c5aa993b
JM
509 ? TYPE_TARGET_TYPE (elttype)
510 : elttype,
c906108c
SS
511 tmp);
512}
513
514static value_ptr
515evaluate_subexp_chill (expect_type, exp, pos, noside)
516 struct type *expect_type;
517 register struct expression *exp;
518 register int *pos;
519 enum noside noside;
520{
521 int pc = *pos;
522 struct type *type;
523 int tem, nargs;
524 value_ptr arg1;
525 value_ptr *argvec;
526 enum exp_opcode op = exp->elts[*pos].opcode;
527 switch (op)
528 {
529 case MULTI_SUBSCRIPT:
530 if (noside == EVAL_SKIP)
531 break;
532 (*pos) += 3;
533 nargs = longest_to_int (exp->elts[pc + 1].longconst);
534 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
535 type = check_typedef (VALUE_TYPE (arg1));
536
537 if (nargs == 1 && TYPE_CODE (type) == TYPE_CODE_INT)
538 {
539 /* Looks like string repetition. */
540 value_ptr string = evaluate_subexp_with_coercion (exp, pos, noside);
541 return value_concat (arg1, string);
542 }
543
544 switch (TYPE_CODE (type))
545 {
546 case TYPE_CODE_PTR:
547 type = check_typedef (TYPE_TARGET_TYPE (type));
548 if (!type || TYPE_CODE (type) != TYPE_CODE_FUNC)
549 error ("reference value used as function");
550 /* ... fall through ... */
551 case TYPE_CODE_FUNC:
552 /* It's a function call. */
553 if (noside == EVAL_AVOID_SIDE_EFFECTS)
554 break;
555
556 /* Allocate arg vector, including space for the function to be
557 called in argvec[0] and a terminating NULL */
558 argvec = (value_ptr *) alloca (sizeof (value_ptr) * (nargs + 2));
559 argvec[0] = arg1;
560 tem = 1;
561 for (; tem <= nargs && tem <= TYPE_NFIELDS (type); tem++)
562 {
563 argvec[tem]
c5aa993b 564 = evaluate_subexp_chill (TYPE_FIELD_TYPE (type, tem - 1),
c906108c
SS
565 exp, pos, noside);
566 }
567 for (; tem <= nargs; tem++)
568 argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
c5aa993b 569 argvec[tem] = 0; /* signal end of arglist */
c906108c
SS
570
571 return call_function_by_hand (argvec[0], nargs, argvec + 1);
572 default:
573 break;
574 }
575
576 while (nargs-- > 0)
577 {
578 value_ptr index = evaluate_subexp_with_coercion (exp, pos, noside);
579 arg1 = value_subscript (arg1, index);
580 }
581 return (arg1);
582
583 case UNOP_LOWER:
584 case UNOP_UPPER:
585 (*pos)++;
586 if (noside == EVAL_SKIP)
587 {
588 (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos, EVAL_SKIP);
589 goto nosideret;
590 }
591 arg1 = (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos,
592 EVAL_AVOID_SIDE_EFFECTS);
593 tem = type_lower_upper (op, VALUE_TYPE (arg1), &type);
594 return value_from_longest (type, tem);
595
596 case UNOP_LENGTH:
597 (*pos)++;
598 arg1 = (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos, noside);
599 return value_chill_length (arg1);
600
601 case UNOP_CARD:
602 (*pos)++;
603 arg1 = (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos, noside);
604 return value_chill_card (arg1);
605
606 case UNOP_CHMAX:
607 case UNOP_CHMIN:
608 (*pos)++;
609 arg1 = (*exp->language_defn->evaluate_exp) (NULL_TYPE, exp, pos, noside);
610 return value_chill_max_min (op, arg1);
611
612 case BINOP_COMMA:
613 error ("',' operator used in invalid context");
614
615 default:
616 break;
617 }
618
619 return evaluate_subexp_standard (expect_type, exp, pos, noside);
c5aa993b 620nosideret:
c906108c
SS
621 return value_from_longest (builtin_type_long, (LONGEST) 1);
622}
623
c5aa993b
JM
624const struct language_defn chill_language_defn =
625{
c906108c
SS
626 "chill",
627 language_chill,
628 chill_builtin_types,
629 range_check_on,
630 type_check_on,
631 chill_parse, /* parser */
632 chill_error, /* parser error function */
633 evaluate_subexp_chill,
634 chill_printchar, /* print a character constant */
635 chill_printstr, /* function to print a string constant */
636 NULL, /* Function to print a single char */
c5aa993b 637 chill_create_fundamental_type, /* Create fundamental type in this language */
c906108c
SS
638 chill_print_type, /* Print a type using appropriate syntax */
639 chill_val_print, /* Print a value using appropriate syntax */
640 chill_value_print, /* Print a top-levl value */
c5aa993b
JM
641 {"", "B'", "", ""}, /* Binary format info */
642 {"O'%lo", "O'", "o", ""}, /* Octal format info */
643 {"D'%ld", "D'", "d", ""}, /* Decimal format info */
644 {"H'%lx", "H'", "x", ""}, /* Hex format info */
c906108c
SS
645 chill_op_print_tab, /* expression operators for printing */
646 0, /* arrays are first-class (not c-style) */
647 0, /* String lower bound */
c5aa993b 648 &builtin_type_chill_char, /* Type of string elements */
c906108c
SS
649 LANG_MAGIC
650};
651
652/* Initialization for Chill */
653
654void
655_initialize_chill_language ()
656{
657 builtin_type_chill_bool =
658 init_type (TYPE_CODE_BOOL, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
659 TYPE_FLAG_UNSIGNED,
660 "BOOL", (struct objfile *) NULL);
661 builtin_type_chill_char =
662 init_type (TYPE_CODE_CHAR, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
663 TYPE_FLAG_UNSIGNED,
664 "CHAR", (struct objfile *) NULL);
665 builtin_type_chill_long =
666 init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
667 0,
668 "LONG", (struct objfile *) NULL);
669 builtin_type_chill_ulong =
670 init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
671 TYPE_FLAG_UNSIGNED,
672 "ULONG", (struct objfile *) NULL);
673 builtin_type_chill_real =
674 init_type (TYPE_CODE_FLT, TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
675 0,
676 "LONG_REAL", (struct objfile *) NULL);
677
678 add_language (&chill_language_defn);
679}
This page took 0.075111 seconds and 4 git commands to generate.