765a6b0c7351ffe3d7160cf6e582648062c2e0f4
[platform/upstream/gdb.git] / gdb / c-lang.c
1 /* C language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2014 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "symtab.h"
22 #include "gdbtypes.h"
23 #include "expression.h"
24 #include "parser-defs.h"
25 #include "language.h"
26 #include "varobj.h"
27 #include "c-lang.h"
28 #include "valprint.h"
29 #include "macroscope.h"
30 #include "gdb_assert.h"
31 #include "charset.h"
32 #include <string.h>
33 #include "demangle.h"
34 #include "cp-abi.h"
35 #include "cp-support.h"
36 #include "gdb_obstack.h"
37 #include <ctype.h>
38 #include "exceptions.h"
39 #include "gdbcore.h"
40
41 extern void _initialize_c_language (void);
42
43 /* Given a C string type, STR_TYPE, return the corresponding target
44    character set name.  */
45
46 static const char *
47 charset_for_string_type (enum c_string_type str_type,
48                          struct gdbarch *gdbarch)
49 {
50   switch (str_type & ~C_CHAR)
51     {
52     case C_STRING:
53       return target_charset (gdbarch);
54     case C_WIDE_STRING:
55       return target_wide_charset (gdbarch);
56     case C_STRING_16:
57       /* FIXME: UTF-16 is not always correct.  */
58       if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
59         return "UTF-16BE";
60       else
61         return "UTF-16LE";
62     case C_STRING_32:
63       /* FIXME: UTF-32 is not always correct.  */
64       if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
65         return "UTF-32BE";
66       else
67         return "UTF-32LE";
68     }
69   internal_error (__FILE__, __LINE__, _("unhandled c_string_type"));
70 }
71
72 /* Classify ELTTYPE according to what kind of character it is.  Return
73    the enum constant representing the character type.  Also set
74    *ENCODING to the name of the character set to use when converting
75    characters of this type in target BYTE_ORDER to the host character
76    set.  */
77
78 static enum c_string_type
79 classify_type (struct type *elttype, struct gdbarch *gdbarch,
80                const char **encoding)
81 {
82   enum c_string_type result;
83
84   /* We loop because ELTTYPE may be a typedef, and we want to
85      successively peel each typedef until we reach a type we
86      understand.  We don't use CHECK_TYPEDEF because that will strip
87      all typedefs at once -- but in C, wchar_t is itself a typedef, so
88      that would do the wrong thing.  */
89   while (elttype)
90     {
91       const char *name = TYPE_NAME (elttype);
92
93       if (TYPE_CODE (elttype) == TYPE_CODE_CHAR || !name)
94         {
95           result = C_CHAR;
96           goto done;
97         }
98
99       if (!strcmp (name, "wchar_t"))
100         {
101           result = C_WIDE_CHAR;
102           goto done;
103         }
104
105       if (!strcmp (name, "char16_t"))
106         {
107           result = C_CHAR_16;
108           goto done;
109         }
110
111       if (!strcmp (name, "char32_t"))
112         {
113           result = C_CHAR_32;
114           goto done;
115         }
116
117       if (TYPE_CODE (elttype) != TYPE_CODE_TYPEDEF)
118         break;
119
120       /* Call for side effects.  */
121       check_typedef (elttype);
122
123       if (TYPE_TARGET_TYPE (elttype))
124         elttype = TYPE_TARGET_TYPE (elttype);
125       else
126         {
127           /* Perhaps check_typedef did not update the target type.  In
128              this case, force the lookup again and hope it works out.
129              It never will for C, but it might for C++.  */
130           CHECK_TYPEDEF (elttype);
131         }
132     }
133
134   /* Punt.  */
135   result = C_CHAR;
136
137  done:
138   if (encoding)
139     *encoding = charset_for_string_type (result, gdbarch);
140
141   return result;
142 }
143
144 /* Print the character C on STREAM as part of the contents of a
145    literal string whose delimiter is QUOTER.  Note that that format
146    for printing characters and strings is language specific.  */
147
148 void
149 c_emit_char (int c, struct type *type,
150              struct ui_file *stream, int quoter)
151 {
152   const char *encoding;
153
154   classify_type (type, get_type_arch (type), &encoding);
155   generic_emit_char (c, type, stream, quoter, encoding);
156 }
157
158 void
159 c_printchar (int c, struct type *type, struct ui_file *stream)
160 {
161   enum c_string_type str_type;
162
163   str_type = classify_type (type, get_type_arch (type), NULL);
164   switch (str_type)
165     {
166     case C_CHAR:
167       break;
168     case C_WIDE_CHAR:
169       fputc_filtered ('L', stream);
170       break;
171     case C_CHAR_16:
172       fputc_filtered ('u', stream);
173       break;
174     case C_CHAR_32:
175       fputc_filtered ('U', stream);
176       break;
177     }
178
179   fputc_filtered ('\'', stream);
180   LA_EMIT_CHAR (c, type, stream, '\'');
181   fputc_filtered ('\'', stream);
182 }
183
184 /* Print the character string STRING, printing at most LENGTH
185    characters.  LENGTH is -1 if the string is nul terminated.  Each
186    character is WIDTH bytes long.  Printing stops early if the number
187    hits print_max; repeat counts are printed as appropriate.  Print
188    ellipses at the end if we had to stop before printing LENGTH
189    characters, or if FORCE_ELLIPSES.  */
190
191 void
192 c_printstr (struct ui_file *stream, struct type *type, 
193             const gdb_byte *string, unsigned int length, 
194             const char *user_encoding, int force_ellipses,
195             const struct value_print_options *options)
196 {
197   enum c_string_type str_type;
198   const char *type_encoding;
199   const char *encoding;
200
201   str_type = (classify_type (type, get_type_arch (type), &type_encoding)
202               & ~C_CHAR);
203   switch (str_type)
204     {
205     case C_STRING:
206       break;
207     case C_WIDE_STRING:
208       fputs_filtered ("L", stream);
209       break;
210     case C_STRING_16:
211       fputs_filtered ("u", stream);
212       break;
213     case C_STRING_32:
214       fputs_filtered ("U", stream);
215       break;
216     }
217
218   encoding = (user_encoding && *user_encoding) ? user_encoding : type_encoding;
219
220   generic_printstr (stream, type, string, length, encoding, force_ellipses,
221                     '"', 1, options);
222 }
223
224 /* Obtain a C string from the inferior storing it in a newly allocated
225    buffer in BUFFER, which should be freed by the caller.  If the in-
226    and out-parameter *LENGTH is specified at -1, the string is read
227    until a null character of the appropriate width is found, otherwise
228    the string is read to the length of characters specified.  The size
229    of a character is determined by the length of the target type of
230    the pointer or array.
231
232    If VALUE is an array with a known length, and *LENGTH is -1,
233    the function will not read past the end of the array.  However, any
234    declared size of the array is ignored if *LENGTH > 0.
235
236    On completion, *LENGTH will be set to the size of the string read in
237    characters.  (If a length of -1 is specified, the length returned
238    will not include the null character).  CHARSET is always set to the
239    target charset.  */
240
241 void
242 c_get_string (struct value *value, gdb_byte **buffer,
243               int *length, struct type **char_type,
244               const char **charset)
245 {
246   int err, width;
247   unsigned int fetchlimit;
248   struct type *type = check_typedef (value_type (value));
249   struct type *element_type = TYPE_TARGET_TYPE (type);
250   int req_length = *length;
251   enum bfd_endian byte_order
252     = gdbarch_byte_order (get_type_arch (type));
253
254   if (element_type == NULL)
255     goto error;
256
257   if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
258     {
259       /* If we know the size of the array, we can use it as a limit on
260          the number of characters to be fetched.  */
261       if (TYPE_NFIELDS (type) == 1
262           && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_RANGE)
263         {
264           LONGEST low_bound, high_bound;
265
266           get_discrete_bounds (TYPE_FIELD_TYPE (type, 0),
267                                &low_bound, &high_bound);
268           fetchlimit = high_bound - low_bound + 1;
269         }
270       else
271         fetchlimit = UINT_MAX;
272     }
273   else if (TYPE_CODE (type) == TYPE_CODE_PTR)
274     fetchlimit = UINT_MAX;
275   else
276     /* We work only with arrays and pointers.  */
277     goto error;
278
279   if (! c_textual_element_type (element_type, 0))
280     goto error;
281   classify_type (element_type, get_type_arch (element_type), charset);
282   width = TYPE_LENGTH (element_type);
283
284   /* If the string lives in GDB's memory instead of the inferior's,
285      then we just need to copy it to BUFFER.  Also, since such strings
286      are arrays with known size, FETCHLIMIT will hold the size of the
287      array.  */
288   if ((VALUE_LVAL (value) == not_lval
289        || VALUE_LVAL (value) == lval_internalvar)
290       && fetchlimit != UINT_MAX)
291     {
292       int i;
293       const gdb_byte *contents = value_contents (value);
294
295       /* If a length is specified, use that.  */
296       if (*length >= 0)
297         i  = *length;
298       else
299         /* Otherwise, look for a null character.  */
300         for (i = 0; i < fetchlimit; i++)
301           if (extract_unsigned_integer (contents + i * width,
302                                         width, byte_order) == 0)
303             break;
304   
305       /* I is now either a user-defined length, the number of non-null
306          characters, or FETCHLIMIT.  */
307       *length = i * width;
308       *buffer = xmalloc (*length);
309       memcpy (*buffer, contents, *length);
310       err = 0;
311     }
312   else
313     {
314       CORE_ADDR addr = value_as_address (value);
315
316       /* Prior to the fix for PR 16196 read_string would ignore fetchlimit
317          if length > 0.  The old "broken" behaviour is the behaviour we want:
318          The caller may want to fetch 100 bytes from a variable length array
319          implemented using the common idiom of having an array of length 1 at
320          the end of a struct.  In this case we want to ignore the declared
321          size of the array.  However, it's counterintuitive to implement that
322          behaviour in read_string: what does fetchlimit otherwise mean if
323          length > 0.  Therefore we implement the behaviour we want here:
324          If *length > 0, don't specify a fetchlimit.  This preserves the
325          previous behaviour.  We could move this check above where we know
326          whether the array is declared with a fixed size, but we only want
327          to apply this behaviour when calling read_string.  PR 16286.  */
328       if (*length > 0)
329         fetchlimit = UINT_MAX;
330
331       err = read_string (addr, *length, width, fetchlimit,
332                          byte_order, buffer, length);
333       if (err)
334         {
335           xfree (*buffer);
336           memory_error (err, addr);
337         }
338     }
339
340   /* If the LENGTH is specified at -1, we want to return the string
341      length up to the terminating null character.  If an actual length
342      was specified, we want to return the length of exactly what was
343      read.  */
344   if (req_length == -1)
345     /* If the last character is null, subtract it from LENGTH.  */
346     if (*length > 0
347         && extract_unsigned_integer (*buffer + *length - width,
348                                      width, byte_order) == 0)
349       *length -= width;
350   
351   /* The read_string function will return the number of bytes read.
352      If length returned from read_string was > 0, return the number of
353      characters read by dividing the number of bytes by width.  */
354   if (*length != 0)
355      *length = *length / width;
356
357   *char_type = element_type;
358
359   return;
360
361  error:
362   {
363     char *type_str;
364
365     type_str = type_to_string (type);
366     if (type_str)
367       {
368         make_cleanup (xfree, type_str);
369         error (_("Trying to read string with inappropriate type `%s'."),
370                type_str);
371       }
372     else
373       error (_("Trying to read string with inappropriate type."));
374   }
375 }
376
377 \f
378 /* Evaluating C and C++ expressions.  */
379
380 /* Convert a UCN.  The digits of the UCN start at P and extend no
381    farther than LIMIT.  DEST_CHARSET is the name of the character set
382    into which the UCN should be converted.  The results are written to
383    OUTPUT.  LENGTH is the maximum length of the UCN, either 4 or 8.
384    Returns a pointer to just after the final digit of the UCN.  */
385
386 static char *
387 convert_ucn (char *p, char *limit, const char *dest_charset,
388              struct obstack *output, int length)
389 {
390   unsigned long result = 0;
391   gdb_byte data[4];
392   int i;
393
394   for (i = 0; i < length && p < limit && isxdigit (*p); ++i, ++p)
395     result = (result << 4) + host_hex_value (*p);
396
397   for (i = 3; i >= 0; --i)
398     {
399       data[i] = result & 0xff;
400       result >>= 8;
401     }
402
403   convert_between_encodings ("UTF-32BE", dest_charset, data,
404                              4, 4, output, translit_none);
405
406   return p;
407 }
408
409 /* Emit a character, VALUE, which was specified numerically, to
410    OUTPUT.  TYPE is the target character type.  */
411
412 static void
413 emit_numeric_character (struct type *type, unsigned long value,
414                         struct obstack *output)
415 {
416   gdb_byte *buffer;
417
418   buffer = alloca (TYPE_LENGTH (type));
419   pack_long (buffer, type, value);
420   obstack_grow (output, buffer, TYPE_LENGTH (type));
421 }
422
423 /* Convert an octal escape sequence.  TYPE is the target character
424    type.  The digits of the escape sequence begin at P and extend no
425    farther than LIMIT.  The result is written to OUTPUT.  Returns a
426    pointer to just after the final digit of the escape sequence.  */
427
428 static char *
429 convert_octal (struct type *type, char *p, 
430                char *limit, struct obstack *output)
431 {
432   int i;
433   unsigned long value = 0;
434
435   for (i = 0;
436        i < 3 && p < limit && isdigit (*p) && *p != '8' && *p != '9';
437        ++i)
438     {
439       value = 8 * value + host_hex_value (*p);
440       ++p;
441     }
442
443   emit_numeric_character (type, value, output);
444
445   return p;
446 }
447
448 /* Convert a hex escape sequence.  TYPE is the target character type.
449    The digits of the escape sequence begin at P and extend no farther
450    than LIMIT.  The result is written to OUTPUT.  Returns a pointer to
451    just after the final digit of the escape sequence.  */
452
453 static char *
454 convert_hex (struct type *type, char *p,
455              char *limit, struct obstack *output)
456 {
457   unsigned long value = 0;
458
459   while (p < limit && isxdigit (*p))
460     {
461       value = 16 * value + host_hex_value (*p);
462       ++p;
463     }
464
465   emit_numeric_character (type, value, output);
466
467   return p;
468 }
469
470 #define ADVANCE                                 \
471   do {                                          \
472     ++p;                                        \
473     if (p == limit)                             \
474       error (_("Malformed escape sequence"));   \
475   } while (0)
476
477 /* Convert an escape sequence to a target format.  TYPE is the target
478    character type to use, and DEST_CHARSET is the name of the target
479    character set.  The backslash of the escape sequence is at *P, and
480    the escape sequence will not extend past LIMIT.  The results are
481    written to OUTPUT.  Returns a pointer to just past the final
482    character of the escape sequence.  */
483
484 static char *
485 convert_escape (struct type *type, const char *dest_charset,
486                 char *p, char *limit, struct obstack *output)
487 {
488   /* Skip the backslash.  */
489   ADVANCE;
490
491   switch (*p)
492     {
493     case '\\':
494       obstack_1grow (output, '\\');
495       ++p;
496       break;
497
498     case 'x':
499       ADVANCE;
500       if (!isxdigit (*p))
501         error (_("\\x used with no following hex digits."));
502       p = convert_hex (type, p, limit, output);
503       break;
504
505     case '0':
506     case '1':
507     case '2':
508     case '3':
509     case '4':
510     case '5':
511     case '6':
512     case '7':
513       p = convert_octal (type, p, limit, output);
514       break;
515
516     case 'u':
517     case 'U':
518       {
519         int length = *p == 'u' ? 4 : 8;
520
521         ADVANCE;
522         if (!isxdigit (*p))
523           error (_("\\u used with no following hex digits"));
524         p = convert_ucn (p, limit, dest_charset, output, length);
525       }
526     }
527
528   return p;
529 }
530
531 /* Given a single string from a (C-specific) OP_STRING list, convert
532    it to a target string, handling escape sequences specially.  The
533    output is written to OUTPUT.  DATA is the input string, which has
534    length LEN.  DEST_CHARSET is the name of the target character set,
535    and TYPE is the type of target character to use.  */
536
537 static void
538 parse_one_string (struct obstack *output, char *data, int len,
539                   const char *dest_charset, struct type *type)
540 {
541   char *limit;
542
543   limit = data + len;
544
545   while (data < limit)
546     {
547       char *p = data;
548
549       /* Look for next escape, or the end of the input.  */
550       while (p < limit && *p != '\\')
551         ++p;
552       /* If we saw a run of characters, convert them all.  */
553       if (p > data)
554         convert_between_encodings (host_charset (), dest_charset,
555                                    (gdb_byte *) data, p - data, 1,
556                                    output, translit_none);
557       /* If we saw an escape, convert it.  */
558       if (p < limit)
559         p = convert_escape (type, dest_charset, p, limit, output);
560       data = p;
561     }
562 }
563
564 /* Expression evaluator for the C language family.  Most operations
565    are delegated to evaluate_subexp_standard; see that function for a
566    description of the arguments.  */
567
568 struct value *
569 evaluate_subexp_c (struct type *expect_type, struct expression *exp,
570                    int *pos, enum noside noside)
571 {
572   enum exp_opcode op = exp->elts[*pos].opcode;
573
574   switch (op)
575     {
576     case OP_STRING:
577       {
578         int oplen, limit;
579         struct type *type;
580         struct obstack output;
581         struct cleanup *cleanup;
582         struct value *result;
583         enum c_string_type dest_type;
584         const char *dest_charset;
585         int satisfy_expected = 0;
586
587         obstack_init (&output);
588         cleanup = make_cleanup_obstack_free (&output);
589
590         ++*pos;
591         oplen = longest_to_int (exp->elts[*pos].longconst);
592
593         ++*pos;
594         limit = *pos + BYTES_TO_EXP_ELEM (oplen + 1);
595         dest_type
596           = (enum c_string_type) longest_to_int (exp->elts[*pos].longconst);
597         switch (dest_type & ~C_CHAR)
598           {
599           case C_STRING:
600             type = language_string_char_type (exp->language_defn,
601                                               exp->gdbarch);
602             break;
603           case C_WIDE_STRING:
604             type = lookup_typename (exp->language_defn, exp->gdbarch,
605                                     "wchar_t", NULL, 0);
606             break;
607           case C_STRING_16:
608             type = lookup_typename (exp->language_defn, exp->gdbarch,
609                                     "char16_t", NULL, 0);
610             break;
611           case C_STRING_32:
612             type = lookup_typename (exp->language_defn, exp->gdbarch,
613                                     "char32_t", NULL, 0);
614             break;
615           default:
616             internal_error (__FILE__, __LINE__, _("unhandled c_string_type"));
617           }
618
619         /* Ensure TYPE_LENGTH is valid for TYPE.  */
620         check_typedef (type);
621
622         /* If the caller expects an array of some integral type,
623            satisfy them.  If something odder is expected, rely on the
624            caller to cast.  */
625         if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_ARRAY)
626           {
627             struct type *element_type
628               = check_typedef (TYPE_TARGET_TYPE (expect_type));
629
630             if (TYPE_CODE (element_type) == TYPE_CODE_INT
631                 || TYPE_CODE (element_type) == TYPE_CODE_CHAR)
632               {
633                 type = element_type;
634                 satisfy_expected = 1;
635               }
636           }
637
638         dest_charset = charset_for_string_type (dest_type, exp->gdbarch);
639
640         ++*pos;
641         while (*pos < limit)
642           {
643             int len;
644
645             len = longest_to_int (exp->elts[*pos].longconst);
646
647             ++*pos;
648             if (noside != EVAL_SKIP)
649               parse_one_string (&output, &exp->elts[*pos].string, len,
650                                 dest_charset, type);
651             *pos += BYTES_TO_EXP_ELEM (len);
652           }
653
654         /* Skip the trailing length and opcode.  */
655         *pos += 2;
656
657         if (noside == EVAL_SKIP)
658           {
659             /* Return a dummy value of the appropriate type.  */
660             if (expect_type != NULL)
661               result = allocate_value (expect_type);
662             else if ((dest_type & C_CHAR) != 0)
663               result = allocate_value (type);
664             else
665               result = value_cstring ("", 0, type);
666             do_cleanups (cleanup);
667             return result;
668           }
669
670         if ((dest_type & C_CHAR) != 0)
671           {
672             LONGEST value;
673
674             if (obstack_object_size (&output) != TYPE_LENGTH (type))
675               error (_("Could not convert character "
676                        "constant to target character set"));
677             value = unpack_long (type, (gdb_byte *) obstack_base (&output));
678             result = value_from_longest (type, value);
679           }
680         else
681           {
682             int i;
683
684             /* Write the terminating character.  */
685             for (i = 0; i < TYPE_LENGTH (type); ++i)
686               obstack_1grow (&output, 0);
687
688             if (satisfy_expected)
689               {
690                 LONGEST low_bound, high_bound;
691                 int element_size = TYPE_LENGTH (type);
692
693                 if (get_discrete_bounds (TYPE_INDEX_TYPE (expect_type),
694                                          &low_bound, &high_bound) < 0)
695                   {
696                     low_bound = 0;
697                     high_bound = (TYPE_LENGTH (expect_type) / element_size) - 1;
698                   }
699                 if (obstack_object_size (&output) / element_size
700                     > (high_bound - low_bound + 1))
701                   error (_("Too many array elements"));
702
703                 result = allocate_value (expect_type);
704                 memcpy (value_contents_raw (result), obstack_base (&output),
705                         obstack_object_size (&output));
706               }
707             else
708               result = value_cstring (obstack_base (&output),
709                                       obstack_object_size (&output),
710                                       type);
711           }
712         do_cleanups (cleanup);
713         return result;
714       }
715       break;
716
717     default:
718       break;
719     }
720   return evaluate_subexp_standard (expect_type, exp, pos, noside);
721 }
722
723
724 \f
725 /* Table mapping opcodes into strings for printing operators
726    and precedences of the operators.  */
727
728 const struct op_print c_op_print_tab[] =
729 {
730   {",", BINOP_COMMA, PREC_COMMA, 0},
731   {"=", BINOP_ASSIGN, PREC_ASSIGN, 1},
732   {"||", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
733   {"&&", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
734   {"|", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
735   {"^", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
736   {"&", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
737   {"==", BINOP_EQUAL, PREC_EQUAL, 0},
738   {"!=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
739   {"<=", BINOP_LEQ, PREC_ORDER, 0},
740   {">=", BINOP_GEQ, PREC_ORDER, 0},
741   {">", BINOP_GTR, PREC_ORDER, 0},
742   {"<", BINOP_LESS, PREC_ORDER, 0},
743   {">>", BINOP_RSH, PREC_SHIFT, 0},
744   {"<<", BINOP_LSH, PREC_SHIFT, 0},
745   {"+", BINOP_ADD, PREC_ADD, 0},
746   {"-", BINOP_SUB, PREC_ADD, 0},
747   {"*", BINOP_MUL, PREC_MUL, 0},
748   {"/", BINOP_DIV, PREC_MUL, 0},
749   {"%", BINOP_REM, PREC_MUL, 0},
750   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
751   {"+", UNOP_PLUS, PREC_PREFIX, 0},
752   {"-", UNOP_NEG, PREC_PREFIX, 0},
753   {"!", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
754   {"~", UNOP_COMPLEMENT, PREC_PREFIX, 0},
755   {"*", UNOP_IND, PREC_PREFIX, 0},
756   {"&", UNOP_ADDR, PREC_PREFIX, 0},
757   {"sizeof ", UNOP_SIZEOF, PREC_PREFIX, 0},
758   {"++", UNOP_PREINCREMENT, PREC_PREFIX, 0},
759   {"--", UNOP_PREDECREMENT, PREC_PREFIX, 0},
760   {NULL, 0, 0, 0}
761 };
762 \f
763 enum c_primitive_types {
764   c_primitive_type_int,
765   c_primitive_type_long,
766   c_primitive_type_short,
767   c_primitive_type_char,
768   c_primitive_type_float,
769   c_primitive_type_double,
770   c_primitive_type_void,
771   c_primitive_type_long_long,
772   c_primitive_type_signed_char,
773   c_primitive_type_unsigned_char,
774   c_primitive_type_unsigned_short,
775   c_primitive_type_unsigned_int,
776   c_primitive_type_unsigned_long,
777   c_primitive_type_unsigned_long_long,
778   c_primitive_type_long_double,
779   c_primitive_type_complex,
780   c_primitive_type_double_complex,
781   c_primitive_type_decfloat,
782   c_primitive_type_decdouble,
783   c_primitive_type_declong,
784   nr_c_primitive_types
785 };
786
787 void
788 c_language_arch_info (struct gdbarch *gdbarch,
789                       struct language_arch_info *lai)
790 {
791   const struct builtin_type *builtin = builtin_type (gdbarch);
792
793   lai->string_char_type = builtin->builtin_char;
794   lai->primitive_type_vector
795     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_c_primitive_types + 1,
796                               struct type *);
797   lai->primitive_type_vector [c_primitive_type_int] = builtin->builtin_int;
798   lai->primitive_type_vector [c_primitive_type_long] = builtin->builtin_long;
799   lai->primitive_type_vector [c_primitive_type_short] = builtin->builtin_short;
800   lai->primitive_type_vector [c_primitive_type_char] = builtin->builtin_char;
801   lai->primitive_type_vector [c_primitive_type_float] = builtin->builtin_float;
802   lai->primitive_type_vector [c_primitive_type_double] = builtin->builtin_double;
803   lai->primitive_type_vector [c_primitive_type_void] = builtin->builtin_void;
804   lai->primitive_type_vector [c_primitive_type_long_long] = builtin->builtin_long_long;
805   lai->primitive_type_vector [c_primitive_type_signed_char] = builtin->builtin_signed_char;
806   lai->primitive_type_vector [c_primitive_type_unsigned_char] = builtin->builtin_unsigned_char;
807   lai->primitive_type_vector [c_primitive_type_unsigned_short] = builtin->builtin_unsigned_short;
808   lai->primitive_type_vector [c_primitive_type_unsigned_int] = builtin->builtin_unsigned_int;
809   lai->primitive_type_vector [c_primitive_type_unsigned_long] = builtin->builtin_unsigned_long;
810   lai->primitive_type_vector [c_primitive_type_unsigned_long_long] = builtin->builtin_unsigned_long_long;
811   lai->primitive_type_vector [c_primitive_type_long_double] = builtin->builtin_long_double;
812   lai->primitive_type_vector [c_primitive_type_complex] = builtin->builtin_complex;
813   lai->primitive_type_vector [c_primitive_type_double_complex] = builtin->builtin_double_complex;
814   lai->primitive_type_vector [c_primitive_type_decfloat] = builtin->builtin_decfloat;
815   lai->primitive_type_vector [c_primitive_type_decdouble] = builtin->builtin_decdouble;
816   lai->primitive_type_vector [c_primitive_type_declong] = builtin->builtin_declong;
817
818   lai->bool_type_default = builtin->builtin_int;
819 }
820
821 const struct exp_descriptor exp_descriptor_c = 
822 {
823   print_subexp_standard,
824   operator_length_standard,
825   operator_check_standard,
826   op_name_standard,
827   dump_subexp_body_standard,
828   evaluate_subexp_c
829 };
830
831 const struct language_defn c_language_defn =
832 {
833   "c",                          /* Language name */
834   "C",
835   language_c,
836   range_check_off,
837   case_sensitive_on,
838   array_row_major,
839   macro_expansion_c,
840   &exp_descriptor_c,
841   c_parse,
842   c_error,
843   null_post_parser,
844   c_printchar,                  /* Print a character constant */
845   c_printstr,                   /* Function to print string constant */
846   c_emit_char,                  /* Print a single char */
847   c_print_type,                 /* Print a type using appropriate syntax */
848   c_print_typedef,              /* Print a typedef using appropriate syntax */
849   c_val_print,                  /* Print a value using appropriate syntax */
850   c_value_print,                /* Print a top-level value */
851   default_read_var_value,       /* la_read_var_value */
852   NULL,                         /* Language specific skip_trampoline */
853   NULL,                         /* name_of_this */
854   basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
855   basic_lookup_transparent_type,/* lookup_transparent_type */
856   NULL,                         /* Language specific symbol demangler */
857   NULL,                         /* Language specific
858                                    class_name_from_physname */
859   c_op_print_tab,               /* expression operators for printing */
860   1,                            /* c-style arrays */
861   0,                            /* String lower bound */
862   default_word_break_characters,
863   default_make_symbol_completion_list,
864   c_language_arch_info,
865   default_print_array_index,
866   default_pass_by_reference,
867   c_get_string,
868   NULL,                         /* la_get_symbol_name_cmp */
869   iterate_over_symbols,
870   &c_varobj_ops,
871   LANG_MAGIC
872 };
873
874 enum cplus_primitive_types {
875   cplus_primitive_type_int,
876   cplus_primitive_type_long,
877   cplus_primitive_type_short,
878   cplus_primitive_type_char,
879   cplus_primitive_type_float,
880   cplus_primitive_type_double,
881   cplus_primitive_type_void,
882   cplus_primitive_type_long_long,
883   cplus_primitive_type_signed_char,
884   cplus_primitive_type_unsigned_char,
885   cplus_primitive_type_unsigned_short,
886   cplus_primitive_type_unsigned_int,
887   cplus_primitive_type_unsigned_long,
888   cplus_primitive_type_unsigned_long_long,
889   cplus_primitive_type_long_double,
890   cplus_primitive_type_complex,
891   cplus_primitive_type_double_complex,
892   cplus_primitive_type_bool,
893   cplus_primitive_type_decfloat,
894   cplus_primitive_type_decdouble,
895   cplus_primitive_type_declong,
896   nr_cplus_primitive_types
897 };
898
899 static void
900 cplus_language_arch_info (struct gdbarch *gdbarch,
901                           struct language_arch_info *lai)
902 {
903   const struct builtin_type *builtin = builtin_type (gdbarch);
904
905   lai->string_char_type = builtin->builtin_char;
906   lai->primitive_type_vector
907     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_cplus_primitive_types + 1,
908                               struct type *);
909   lai->primitive_type_vector [cplus_primitive_type_int]
910     = builtin->builtin_int;
911   lai->primitive_type_vector [cplus_primitive_type_long]
912     = builtin->builtin_long;
913   lai->primitive_type_vector [cplus_primitive_type_short]
914     = builtin->builtin_short;
915   lai->primitive_type_vector [cplus_primitive_type_char]
916     = builtin->builtin_char;
917   lai->primitive_type_vector [cplus_primitive_type_float]
918     = builtin->builtin_float;
919   lai->primitive_type_vector [cplus_primitive_type_double]
920     = builtin->builtin_double;
921   lai->primitive_type_vector [cplus_primitive_type_void]
922     = builtin->builtin_void;
923   lai->primitive_type_vector [cplus_primitive_type_long_long]
924     = builtin->builtin_long_long;
925   lai->primitive_type_vector [cplus_primitive_type_signed_char]
926     = builtin->builtin_signed_char;
927   lai->primitive_type_vector [cplus_primitive_type_unsigned_char]
928     = builtin->builtin_unsigned_char;
929   lai->primitive_type_vector [cplus_primitive_type_unsigned_short]
930     = builtin->builtin_unsigned_short;
931   lai->primitive_type_vector [cplus_primitive_type_unsigned_int]
932     = builtin->builtin_unsigned_int;
933   lai->primitive_type_vector [cplus_primitive_type_unsigned_long]
934     = builtin->builtin_unsigned_long;
935   lai->primitive_type_vector [cplus_primitive_type_unsigned_long_long]
936     = builtin->builtin_unsigned_long_long;
937   lai->primitive_type_vector [cplus_primitive_type_long_double]
938     = builtin->builtin_long_double;
939   lai->primitive_type_vector [cplus_primitive_type_complex]
940     = builtin->builtin_complex;
941   lai->primitive_type_vector [cplus_primitive_type_double_complex]
942     = builtin->builtin_double_complex;
943   lai->primitive_type_vector [cplus_primitive_type_bool]
944     = builtin->builtin_bool;
945   lai->primitive_type_vector [cplus_primitive_type_decfloat]
946     = builtin->builtin_decfloat;
947   lai->primitive_type_vector [cplus_primitive_type_decdouble]
948     = builtin->builtin_decdouble;
949   lai->primitive_type_vector [cplus_primitive_type_declong]
950     = builtin->builtin_declong;
951
952   lai->bool_type_symbol = "bool";
953   lai->bool_type_default = builtin->builtin_bool;
954 }
955
956 const struct language_defn cplus_language_defn =
957 {
958   "c++",                        /* Language name */
959   "C++",
960   language_cplus,
961   range_check_off,
962   case_sensitive_on,
963   array_row_major,
964   macro_expansion_c,
965   &exp_descriptor_c,
966   c_parse,
967   c_error,
968   null_post_parser,
969   c_printchar,                  /* Print a character constant */
970   c_printstr,                   /* Function to print string constant */
971   c_emit_char,                  /* Print a single char */
972   c_print_type,                 /* Print a type using appropriate syntax */
973   c_print_typedef,              /* Print a typedef using appropriate syntax */
974   c_val_print,                  /* Print a value using appropriate syntax */
975   c_value_print,                /* Print a top-level value */
976   default_read_var_value,       /* la_read_var_value */
977   cplus_skip_trampoline,        /* Language specific skip_trampoline */
978   "this",                       /* name_of_this */
979   cp_lookup_symbol_nonlocal,    /* lookup_symbol_nonlocal */
980   cp_lookup_transparent_type,   /* lookup_transparent_type */
981   gdb_demangle,                 /* Language specific symbol demangler */
982   cp_class_name_from_physname,  /* Language specific
983                                    class_name_from_physname */
984   c_op_print_tab,               /* expression operators for printing */
985   1,                            /* c-style arrays */
986   0,                            /* String lower bound */
987   default_word_break_characters,
988   default_make_symbol_completion_list,
989   cplus_language_arch_info,
990   default_print_array_index,
991   cp_pass_by_reference,
992   c_get_string,
993   NULL,                         /* la_get_symbol_name_cmp */
994   iterate_over_symbols,
995   &cplus_varobj_ops,
996   LANG_MAGIC
997 };
998
999 const struct language_defn asm_language_defn =
1000 {
1001   "asm",                        /* Language name */
1002   "assembly",
1003   language_asm,
1004   range_check_off,
1005   case_sensitive_on,
1006   array_row_major,
1007   macro_expansion_c,
1008   &exp_descriptor_c,
1009   c_parse,
1010   c_error,
1011   null_post_parser,
1012   c_printchar,                  /* Print a character constant */
1013   c_printstr,                   /* Function to print string constant */
1014   c_emit_char,                  /* Print a single char */
1015   c_print_type,                 /* Print a type using appropriate syntax */
1016   c_print_typedef,              /* Print a typedef using appropriate syntax */
1017   c_val_print,                  /* Print a value using appropriate syntax */
1018   c_value_print,                /* Print a top-level value */
1019   default_read_var_value,       /* la_read_var_value */
1020   NULL,                         /* Language specific skip_trampoline */
1021   NULL,                         /* name_of_this */
1022   basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
1023   basic_lookup_transparent_type,/* lookup_transparent_type */
1024   NULL,                         /* Language specific symbol demangler */
1025   NULL,                         /* Language specific
1026                                    class_name_from_physname */
1027   c_op_print_tab,               /* expression operators for printing */
1028   1,                            /* c-style arrays */
1029   0,                            /* String lower bound */
1030   default_word_break_characters,
1031   default_make_symbol_completion_list,
1032   c_language_arch_info,         /* FIXME: la_language_arch_info.  */
1033   default_print_array_index,
1034   default_pass_by_reference,
1035   c_get_string,
1036   NULL,                         /* la_get_symbol_name_cmp */
1037   iterate_over_symbols,
1038   &default_varobj_ops,
1039   LANG_MAGIC
1040 };
1041
1042 /* The following language_defn does not represent a real language.
1043    It just provides a minimal support a-la-C that should allow users
1044    to do some simple operations when debugging applications that use
1045    a language currently not supported by GDB.  */
1046
1047 const struct language_defn minimal_language_defn =
1048 {
1049   "minimal",                    /* Language name */
1050   "Minimal",
1051   language_minimal,
1052   range_check_off,
1053   case_sensitive_on,
1054   array_row_major,
1055   macro_expansion_c,
1056   &exp_descriptor_c,
1057   c_parse,
1058   c_error,
1059   null_post_parser,
1060   c_printchar,                  /* Print a character constant */
1061   c_printstr,                   /* Function to print string constant */
1062   c_emit_char,                  /* Print a single char */
1063   c_print_type,                 /* Print a type using appropriate syntax */
1064   c_print_typedef,              /* Print a typedef using appropriate syntax */
1065   c_val_print,                  /* Print a value using appropriate syntax */
1066   c_value_print,                /* Print a top-level value */
1067   default_read_var_value,       /* la_read_var_value */
1068   NULL,                         /* Language specific skip_trampoline */
1069   NULL,                         /* name_of_this */
1070   basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
1071   basic_lookup_transparent_type,/* lookup_transparent_type */
1072   NULL,                         /* Language specific symbol demangler */
1073   NULL,                         /* Language specific
1074                                    class_name_from_physname */
1075   c_op_print_tab,               /* expression operators for printing */
1076   1,                            /* c-style arrays */
1077   0,                            /* String lower bound */
1078   default_word_break_characters,
1079   default_make_symbol_completion_list,
1080   c_language_arch_info,
1081   default_print_array_index,
1082   default_pass_by_reference,
1083   c_get_string,
1084   NULL,                         /* la_get_symbol_name_cmp */
1085   iterate_over_symbols,
1086   &default_varobj_ops,
1087   LANG_MAGIC
1088 };
1089
1090 void
1091 _initialize_c_language (void)
1092 {
1093   add_language (&c_language_defn);
1094   add_language (&cplus_language_defn);
1095   add_language (&asm_language_defn);
1096   add_language (&minimal_language_defn);
1097 }