OSDN Git Service

* script-sections.cc (Sort_output_sections::script_compare):
[pf3gnuchains/sourceware.git] / gdb / c-lang.c
1 /* C language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002, 2003,
4    2004, 2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20
21 #include "defs.h"
22 #include "symtab.h"
23 #include "gdbtypes.h"
24 #include "expression.h"
25 #include "parser-defs.h"
26 #include "language.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 "gdb_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
40 extern void _initialize_c_language (void);
41
42 /* Given a C string type, STR_TYPE, return the corresponding target
43    character set name.  */
44
45 static const char *
46 charset_for_string_type (enum c_string_type str_type,
47                          struct gdbarch *gdbarch)
48 {
49   switch (str_type & ~C_CHAR)
50     {
51     case C_STRING:
52       return target_charset (gdbarch);
53     case C_WIDE_STRING:
54       return target_wide_charset (gdbarch);
55     case C_STRING_16:
56       /* FIXME: UTF-16 is not always correct.  */
57       if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
58         return "UTF-16BE";
59       else
60         return "UTF-16LE";
61     case C_STRING_32:
62       /* FIXME: UTF-32 is not always correct.  */
63       if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
64         return "UTF-32BE";
65       else
66         return "UTF-32LE";
67     }
68   internal_error (__FILE__, __LINE__, _("unhandled c_string_type"));
69 }
70
71 /* Classify ELTTYPE according to what kind of character it is.  Return
72    the enum constant representing the character type.  Also set
73    *ENCODING to the name of the character set to use when converting
74    characters of this type in target BYTE_ORDER to the host character
75    set.  */
76
77 static enum c_string_type
78 classify_type (struct type *elttype, struct gdbarch *gdbarch,
79                const char **encoding)
80 {
81   enum c_string_type result;
82
83   /* We loop because ELTTYPE may be a typedef, and we want to
84      successively peel each typedef until we reach a type we
85      understand.  We don't use CHECK_TYPEDEF because that will strip
86      all typedefs at once -- but in C, wchar_t is itself a typedef, so
87      that would do the wrong thing.  */
88   while (elttype)
89     {
90       char *name = TYPE_NAME (elttype);
91
92       if (TYPE_CODE (elttype) == TYPE_CODE_CHAR || !name)
93         {
94           result = C_CHAR;
95           goto done;
96         }
97
98       if (!strcmp (name, "wchar_t"))
99         {
100           result = C_WIDE_CHAR;
101           goto done;
102         }
103
104       if (!strcmp (name, "char16_t"))
105         {
106           result = C_CHAR_16;
107           goto done;
108         }
109
110       if (!strcmp (name, "char32_t"))
111         {
112           result = C_CHAR_32;
113           goto done;
114         }
115
116       if (TYPE_CODE (elttype) != TYPE_CODE_TYPEDEF)
117         break;
118
119       /* Call for side effects.  */
120       check_typedef (elttype);
121
122       if (TYPE_TARGET_TYPE (elttype))
123         elttype = TYPE_TARGET_TYPE (elttype);
124       else
125         {
126           /* Perhaps check_typedef did not update the target type.  In
127              this case, force the lookup again and hope it works out.
128              It never will for C, but it might for C++.  */
129           CHECK_TYPEDEF (elttype);
130         }
131     }
132
133   /* Punt.  */
134   result = C_CHAR;
135
136  done:
137   if (encoding)
138     *encoding = charset_for_string_type (result, gdbarch);
139
140   return result;
141 }
142
143 /* Return true if print_wchar can display W without resorting to a
144    numeric escape, false otherwise.  */
145
146 static int
147 wchar_printable (gdb_wchar_t w)
148 {
149   return (gdb_iswprint (w)
150           || w == LCST ('\a') || w == LCST ('\b')
151           || w == LCST ('\f') || w == LCST ('\n')
152           || w == LCST ('\r') || w == LCST ('\t')
153           || w == LCST ('\v'));
154 }
155
156 /* A helper function that converts the contents of STRING to wide
157    characters and then appends them to OUTPUT.  */
158
159 static void
160 append_string_as_wide (const char *string,
161                        struct obstack *output)
162 {
163   for (; *string; ++string)
164     {
165       gdb_wchar_t w = gdb_btowc (*string);
166       obstack_grow (output, &w, sizeof (gdb_wchar_t));
167     }
168 }
169
170 /* Print a wide character W to OUTPUT.  ORIG is a pointer to the
171    original (target) bytes representing the character, ORIG_LEN is the
172    number of valid bytes.  WIDTH is the number of bytes in a base
173    characters of the type.  OUTPUT is an obstack to which wide
174    characters are emitted.  QUOTER is a (narrow) character indicating
175    the style of quotes surrounding the character to be printed.
176    NEED_ESCAPE is an in/out flag which is used to track numeric
177    escapes across calls.  */
178
179 static void
180 print_wchar (gdb_wint_t w, const gdb_byte *orig,
181              int orig_len, int width,
182              enum bfd_endian byte_order,
183              struct obstack *output,
184              int quoter, int *need_escapep)
185 {
186   int need_escape = *need_escapep;
187
188   *need_escapep = 0;
189   if (gdb_iswprint (w) && (!need_escape || (!gdb_iswdigit (w)
190                                             && w != LCST ('8')
191                                             && w != LCST ('9'))))
192     {
193       gdb_wchar_t wchar = w;
194
195       if (w == gdb_btowc (quoter) || w == LCST ('\\'))
196         obstack_grow_wstr (output, LCST ("\\"));
197       obstack_grow (output, &wchar, sizeof (gdb_wchar_t));
198     }
199   else
200     {
201       switch (w)
202         {
203         case LCST ('\a'):
204           obstack_grow_wstr (output, LCST ("\\a"));
205           break;
206         case LCST ('\b'):
207           obstack_grow_wstr (output, LCST ("\\b"));
208           break;
209         case LCST ('\f'):
210           obstack_grow_wstr (output, LCST ("\\f"));
211           break;
212         case LCST ('\n'):
213           obstack_grow_wstr (output, LCST ("\\n"));
214           break;
215         case LCST ('\r'):
216           obstack_grow_wstr (output, LCST ("\\r"));
217           break;
218         case LCST ('\t'):
219           obstack_grow_wstr (output, LCST ("\\t"));
220           break;
221         case LCST ('\v'):
222           obstack_grow_wstr (output, LCST ("\\v"));
223           break;
224         default:
225           {
226             int i;
227
228             for (i = 0; i + width <= orig_len; i += width)
229               {
230                 char octal[30];
231                 ULONGEST value;
232
233                 value = extract_unsigned_integer (&orig[i], width,
234                                                   byte_order);
235                 /* If the value fits in 3 octal digits, print it that
236                    way.  Otherwise, print it as a hex escape.  */
237                 if (value <= 0777)
238                   sprintf (octal, "\\%.3o", (int) (value & 0777));
239                 else
240                   sprintf (octal, "\\x%lx", (long) value);
241                 append_string_as_wide (octal, output);
242               }
243             /* If we somehow have extra bytes, print them now.  */
244             while (i < orig_len)
245               {
246                 char octal[5];
247
248                 sprintf (octal, "\\%.3o", orig[i] & 0xff);
249                 append_string_as_wide (octal, output);
250                 ++i;
251               }
252
253             *need_escapep = 1;
254           }
255           break;
256         }
257     }
258 }
259
260 /* Print the character C on STREAM as part of the contents of a
261    literal string whose delimiter is QUOTER.  Note that that format
262    for printing characters and strings is language specific.  */
263
264 void
265 c_emit_char (int c, struct type *type,
266              struct ui_file *stream, int quoter)
267 {
268   enum bfd_endian byte_order
269     = gdbarch_byte_order (get_type_arch (type));
270   struct obstack wchar_buf, output;
271   struct cleanup *cleanups;
272   const char *encoding;
273   gdb_byte *buf;
274   struct wchar_iterator *iter;
275   int need_escape = 0;
276
277   classify_type (type, get_type_arch (type), &encoding);
278
279   buf = alloca (TYPE_LENGTH (type));
280   pack_long (buf, type, c);
281
282   iter = make_wchar_iterator (buf, TYPE_LENGTH (type),
283                               encoding, TYPE_LENGTH (type));
284   cleanups = make_cleanup_wchar_iterator (iter);
285
286   /* This holds the printable form of the wchar_t data.  */
287   obstack_init (&wchar_buf);
288   make_cleanup_obstack_free (&wchar_buf);
289
290   while (1)
291     {
292       int num_chars;
293       gdb_wchar_t *chars;
294       const gdb_byte *buf;
295       size_t buflen;
296       int print_escape = 1;
297       enum wchar_iterate_result result;
298
299       num_chars = wchar_iterate (iter, &result, &chars, &buf, &buflen);
300       if (num_chars < 0)
301         break;
302       if (num_chars > 0)
303         {
304           /* If all characters are printable, print them.  Otherwise,
305              we're going to have to print an escape sequence.  We
306              check all characters because we want to print the target
307              bytes in the escape sequence, and we don't know character
308              boundaries there.  */
309           int i;
310
311           print_escape = 0;
312           for (i = 0; i < num_chars; ++i)
313             if (!wchar_printable (chars[i]))
314               {
315                 print_escape = 1;
316                 break;
317               }
318
319           if (!print_escape)
320             {
321               for (i = 0; i < num_chars; ++i)
322                 print_wchar (chars[i], buf, buflen,
323                              TYPE_LENGTH (type), byte_order,
324                              &wchar_buf, quoter, &need_escape);
325             }
326         }
327
328       /* This handles the NUM_CHARS == 0 case as well.  */
329       if (print_escape)
330         print_wchar (gdb_WEOF, buf, buflen, TYPE_LENGTH (type),
331                      byte_order, &wchar_buf, quoter, &need_escape);
332     }
333
334   /* The output in the host encoding.  */
335   obstack_init (&output);
336   make_cleanup_obstack_free (&output);
337
338   convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
339                              obstack_base (&wchar_buf),
340                              obstack_object_size (&wchar_buf),
341                              1, &output, translit_char);
342   obstack_1grow (&output, '\0');
343
344   fputs_filtered (obstack_base (&output), stream);
345
346   do_cleanups (cleanups);
347 }
348
349 void
350 c_printchar (int c, struct type *type, struct ui_file *stream)
351 {
352   enum c_string_type str_type;
353
354   str_type = classify_type (type, get_type_arch (type), NULL);
355   switch (str_type)
356     {
357     case C_CHAR:
358       break;
359     case C_WIDE_CHAR:
360       fputc_filtered ('L', stream);
361       break;
362     case C_CHAR_16:
363       fputc_filtered ('u', stream);
364       break;
365     case C_CHAR_32:
366       fputc_filtered ('U', stream);
367       break;
368     }
369
370   fputc_filtered ('\'', stream);
371   LA_EMIT_CHAR (c, type, stream, '\'');
372   fputc_filtered ('\'', stream);
373 }
374
375 /* Print the character string STRING, printing at most LENGTH
376    characters.  LENGTH is -1 if the string is nul terminated.  Each
377    character is WIDTH bytes long.  Printing stops early if the number
378    hits print_max; repeat counts are printed as appropriate.  Print
379    ellipses at the end if we had to stop before printing LENGTH
380    characters, or if FORCE_ELLIPSES.  */
381
382 void
383 c_printstr (struct ui_file *stream, struct type *type, 
384             const gdb_byte *string, unsigned int length, 
385             const char *user_encoding, int force_ellipses,
386             const struct value_print_options *options)
387 {
388   enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
389   unsigned int i;
390   unsigned int things_printed = 0;
391   int in_quotes = 0;
392   int need_comma = 0;
393   int width = TYPE_LENGTH (type);
394   struct obstack wchar_buf, output;
395   struct cleanup *cleanup;
396   enum c_string_type str_type;
397   const char *type_encoding;
398   const char *encoding;
399   struct wchar_iterator *iter;
400   int finished = 0;
401   int need_escape = 0;
402
403   if (length == -1)
404     {
405       unsigned long current_char = 1;
406
407       for (i = 0; current_char; ++i)
408         {
409           QUIT;
410           current_char = extract_unsigned_integer (string + i * width,
411                                                    width, byte_order);
412         }
413       length = i;
414     }
415
416   /* If the string was not truncated due to `set print elements', and
417      the last byte of it is a null, we don't print that, in
418      traditional C style.  */
419   if (!force_ellipses
420       && length > 0
421       && (extract_unsigned_integer (string + (length - 1) * width,
422                                     width, byte_order) == 0))
423     length--;
424
425   str_type = (classify_type (type, get_type_arch (type), &type_encoding)
426               & ~C_CHAR);
427   switch (str_type)
428     {
429     case C_STRING:
430       break;
431     case C_WIDE_STRING:
432       fputs_filtered ("L", stream);
433       break;
434     case C_STRING_16:
435       fputs_filtered ("u", stream);
436       break;
437     case C_STRING_32:
438       fputs_filtered ("U", stream);
439       break;
440     }
441
442   encoding = (user_encoding && *user_encoding)
443     ? user_encoding : type_encoding;
444
445   if (length == 0)
446     {
447       fputs_filtered ("\"\"", stream);
448       return;
449     }
450
451   /* Arrange to iterate over the characters, in wchar_t form.  */
452   iter = make_wchar_iterator (string, length * width, encoding, width);
453   cleanup = make_cleanup_wchar_iterator (iter);
454
455   /* WCHAR_BUF is the obstack we use to represent the string in
456      wchar_t form.  */
457   obstack_init (&wchar_buf);
458   make_cleanup_obstack_free (&wchar_buf);
459
460   while (!finished && things_printed < options->print_max)
461     {
462       int num_chars;
463       enum wchar_iterate_result result;
464       gdb_wchar_t *chars;
465       const gdb_byte *buf;
466       size_t buflen;
467
468       QUIT;
469
470       if (need_comma)
471         {
472           obstack_grow_wstr (&wchar_buf, LCST (", "));
473           need_comma = 0;
474         }
475
476       num_chars = wchar_iterate (iter, &result, &chars, &buf, &buflen);
477       /* We only look at repetitions when we were able to convert a
478          single character in isolation.  This makes the code simpler
479          and probably does the sensible thing in the majority of
480          cases.  */
481       while (num_chars == 1 && things_printed < options->print_max)
482         {
483           /* Count the number of repetitions.  */
484           unsigned int reps = 0;
485           gdb_wchar_t current_char = chars[0];
486           const gdb_byte *orig_buf = buf;
487           int orig_len = buflen;
488
489           if (need_comma)
490             {
491               obstack_grow_wstr (&wchar_buf, LCST (", "));
492               need_comma = 0;
493             }
494
495           while (num_chars == 1 && current_char == chars[0])
496             {
497               num_chars = wchar_iterate (iter, &result, &chars,
498                                          &buf, &buflen);
499               ++reps;
500             }
501
502           /* Emit CURRENT_CHAR according to the repetition count and
503              options.  */
504           if (reps > options->repeat_count_threshold)
505             {
506               if (in_quotes)
507                 {
508                   if (options->inspect_it)
509                     obstack_grow_wstr (&wchar_buf, LCST ("\\\", "));
510                   else
511                     obstack_grow_wstr (&wchar_buf, LCST ("\", "));
512                   in_quotes = 0;
513                 }
514               obstack_grow_wstr (&wchar_buf, LCST ("'"));
515               need_escape = 0;
516               print_wchar (current_char, orig_buf, orig_len, width,
517                            byte_order, &wchar_buf, '\'', &need_escape);
518               obstack_grow_wstr (&wchar_buf, LCST ("'"));
519               {
520                 /* Painful gyrations.  */
521                 int j;
522                 char *s = xstrprintf (_(" <repeats %u times>"), reps);
523
524                 for (j = 0; s[j]; ++j)
525                   {
526                     gdb_wchar_t w = gdb_btowc (s[j]);
527                     obstack_grow (&wchar_buf, &w, sizeof (gdb_wchar_t));
528                   }
529                 xfree (s);
530               }
531               things_printed += options->repeat_count_threshold;
532               need_comma = 1;
533             }
534           else
535             {
536               /* Saw the character one or more times, but fewer than
537                  the repetition threshold.  */
538               if (!in_quotes)
539                 {
540                   if (options->inspect_it)
541                     obstack_grow_wstr (&wchar_buf, LCST ("\\\""));
542                   else
543                     obstack_grow_wstr (&wchar_buf, LCST ("\""));
544                   in_quotes = 1;
545                   need_escape = 0;
546                 }
547
548               while (reps-- > 0)
549                 {
550                   print_wchar (current_char, orig_buf,
551                                orig_len, width,
552                                byte_order, &wchar_buf,
553                                '"', &need_escape);
554                   ++things_printed;
555                 }
556             }
557         }
558
559       /* NUM_CHARS and the other outputs from wchar_iterate are valid
560          here regardless of which branch was taken above.  */
561       if (num_chars < 0)
562         {
563           /* Hit EOF.  */
564           finished = 1;
565           break;
566         }
567
568       switch (result)
569         {
570         case wchar_iterate_invalid:
571           if (!in_quotes)
572             {
573               if (options->inspect_it)
574                 obstack_grow_wstr (&wchar_buf, LCST ("\\\""));
575               else
576                 obstack_grow_wstr (&wchar_buf, LCST ("\""));
577               in_quotes = 1;
578             }
579           need_escape = 0;
580           print_wchar (gdb_WEOF, buf, buflen, width, byte_order,
581                        &wchar_buf, '"', &need_escape);
582           break;
583
584         case wchar_iterate_incomplete:
585           if (in_quotes)
586             {
587               if (options->inspect_it)
588                 obstack_grow_wstr (&wchar_buf, LCST ("\\\","));
589               else
590                 obstack_grow_wstr (&wchar_buf, LCST ("\","));
591               in_quotes = 0;
592             }
593           obstack_grow_wstr (&wchar_buf,
594                              LCST (" <incomplete sequence "));
595           print_wchar (gdb_WEOF, buf, buflen, width,
596                        byte_order, &wchar_buf,
597                        0, &need_escape);
598           obstack_grow_wstr (&wchar_buf, LCST (">"));
599           finished = 1;
600           break;
601         }
602     }
603
604   /* Terminate the quotes if necessary.  */
605   if (in_quotes)
606     {
607       if (options->inspect_it)
608         obstack_grow_wstr (&wchar_buf, LCST ("\\\""));
609       else
610         obstack_grow_wstr (&wchar_buf, LCST ("\""));
611     }
612
613   if (force_ellipses || !finished)
614     obstack_grow_wstr (&wchar_buf, LCST ("..."));
615
616   /* OUTPUT is where we collect `char's for printing.  */
617   obstack_init (&output);
618   make_cleanup_obstack_free (&output);
619
620   convert_between_encodings (INTERMEDIATE_ENCODING, host_charset (),
621                              obstack_base (&wchar_buf),
622                              obstack_object_size (&wchar_buf),
623                              1, &output, translit_char);
624   obstack_1grow (&output, '\0');
625
626   fputs_filtered (obstack_base (&output), stream);
627
628   do_cleanups (cleanup);
629 }
630
631 /* Obtain a C string from the inferior storing it in a newly allocated
632    buffer in BUFFER, which should be freed by the caller.  If the in-
633    and out-parameter *LENGTH is specified at -1, the string is read
634    until a null character of the appropriate width is found, otherwise
635    the string is read to the length of characters specified.  The size
636    of a character is determined by the length of the target type of
637    the pointer or array.  If VALUE is an array with a known length,
638    the function will not read past the end of the array.  On
639    completion, *LENGTH will be set to the size of the string read in
640    characters.  (If a length of -1 is specified, the length returned
641    will not include the null character).  CHARSET is always set to the
642    target charset.  */
643
644 void
645 c_get_string (struct value *value, gdb_byte **buffer,
646               int *length, struct type **char_type,
647               const char **charset)
648 {
649   int err, width;
650   unsigned int fetchlimit;
651   struct type *type = check_typedef (value_type (value));
652   struct type *element_type = TYPE_TARGET_TYPE (type);
653   int req_length = *length;
654   enum bfd_endian byte_order
655     = gdbarch_byte_order (get_type_arch (type));
656   enum c_string_type kind;
657
658   if (element_type == NULL)
659     goto error;
660
661   if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
662     {
663       /* If we know the size of the array, we can use it as a limit on
664          the number of characters to be fetched.  */
665       if (TYPE_NFIELDS (type) == 1
666           && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_RANGE)
667         {
668           LONGEST low_bound, high_bound;
669
670           get_discrete_bounds (TYPE_FIELD_TYPE (type, 0),
671                                &low_bound, &high_bound);
672           fetchlimit = high_bound - low_bound + 1;
673         }
674       else
675         fetchlimit = UINT_MAX;
676     }
677   else if (TYPE_CODE (type) == TYPE_CODE_PTR)
678     fetchlimit = UINT_MAX;
679   else
680     /* We work only with arrays and pointers.  */
681     goto error;
682
683   if (! c_textual_element_type (element_type, 0))
684     goto error;
685   kind = classify_type (element_type,
686                         get_type_arch (element_type),
687                         charset);
688   width = TYPE_LENGTH (element_type);
689
690   /* If the string lives in GDB's memory instead of the inferior's,
691      then we just need to copy it to BUFFER.  Also, since such strings
692      are arrays with known size, FETCHLIMIT will hold the size of the
693      array.  */
694   if ((VALUE_LVAL (value) == not_lval
695        || VALUE_LVAL (value) == lval_internalvar)
696       && fetchlimit != UINT_MAX)
697     {
698       int i;
699       const gdb_byte *contents = value_contents (value);
700
701       /* If a length is specified, use that.  */
702       if (*length >= 0)
703         i  = *length;
704       else
705         /* Otherwise, look for a null character.  */
706         for (i = 0; i < fetchlimit; i++)
707           if (extract_unsigned_integer (contents + i * width,
708                                         width, byte_order) == 0)
709             break;
710   
711       /* I is now either a user-defined length, the number of non-null
712          characters, or FETCHLIMIT.  */
713       *length = i * width;
714       *buffer = xmalloc (*length);
715       memcpy (*buffer, contents, *length);
716       err = 0;
717     }
718   else
719     {
720       CORE_ADDR addr = value_as_address (value);
721
722       err = read_string (addr, *length, width, fetchlimit,
723                          byte_order, buffer, length);
724       if (err)
725         {
726           xfree (*buffer);
727           if (err == EIO)
728             throw_error (MEMORY_ERROR, "Address %s out of bounds",
729                          paddress (get_type_arch (type), addr));
730           else
731             error (_("Error reading string from inferior: %s"),
732                    safe_strerror (err));
733         }
734     }
735
736   /* If the LENGTH is specified at -1, we want to return the string
737      length up to the terminating null character.  If an actual length
738      was specified, we want to return the length of exactly what was
739      read.  */
740   if (req_length == -1)
741     /* If the last character is null, subtract it from LENGTH.  */
742     if (*length > 0
743         && extract_unsigned_integer (*buffer + *length - width,
744                                      width, byte_order) == 0)
745       *length -= width;
746   
747   /* The read_string function will return the number of bytes read.
748      If length returned from read_string was > 0, return the number of
749      characters read by dividing the number of bytes by width.  */
750   if (*length != 0)
751      *length = *length / width;
752
753   *char_type = element_type;
754
755   return;
756
757  error:
758   {
759     char *type_str;
760
761     type_str = type_to_string (type);
762     if (type_str)
763       {
764         make_cleanup (xfree, type_str);
765         error (_("Trying to read string with inappropriate type `%s'."),
766                type_str);
767       }
768     else
769       error (_("Trying to read string with inappropriate type."));
770   }
771 }
772
773 \f
774 /* Evaluating C and C++ expressions.  */
775
776 /* Convert a UCN.  The digits of the UCN start at P and extend no
777    farther than LIMIT.  DEST_CHARSET is the name of the character set
778    into which the UCN should be converted.  The results are written to
779    OUTPUT.  LENGTH is the maximum length of the UCN, either 4 or 8.
780    Returns a pointer to just after the final digit of the UCN.  */
781
782 static char *
783 convert_ucn (char *p, char *limit, const char *dest_charset,
784              struct obstack *output, int length)
785 {
786   unsigned long result = 0;
787   gdb_byte data[4];
788   int i;
789
790   for (i = 0; i < length && p < limit && isxdigit (*p); ++i, ++p)
791     result = (result << 4) + host_hex_value (*p);
792
793   for (i = 3; i >= 0; --i)
794     {
795       data[i] = result & 0xff;
796       result >>= 8;
797     }
798
799   convert_between_encodings ("UTF-32BE", dest_charset, data,
800                              4, 4, output, translit_none);
801
802   return p;
803 }
804
805 /* Emit a character, VALUE, which was specified numerically, to
806    OUTPUT.  TYPE is the target character type.  */
807
808 static void
809 emit_numeric_character (struct type *type, unsigned long value,
810                         struct obstack *output)
811 {
812   gdb_byte *buffer;
813
814   buffer = alloca (TYPE_LENGTH (type));
815   pack_long (buffer, type, value);
816   obstack_grow (output, buffer, TYPE_LENGTH (type));
817 }
818
819 /* Convert an octal escape sequence.  TYPE is the target character
820    type.  The digits of the escape sequence begin at P and extend no
821    farther than LIMIT.  The result is written to OUTPUT.  Returns a
822    pointer to just after the final digit of the escape sequence.  */
823
824 static char *
825 convert_octal (struct type *type, char *p, 
826                char *limit, struct obstack *output)
827 {
828   int i;
829   unsigned long value = 0;
830
831   for (i = 0;
832        i < 3 && p < limit && isdigit (*p) && *p != '8' && *p != '9';
833        ++i)
834     {
835       value = 8 * value + host_hex_value (*p);
836       ++p;
837     }
838
839   emit_numeric_character (type, value, output);
840
841   return p;
842 }
843
844 /* Convert a hex escape sequence.  TYPE is the target character type.
845    The digits of the escape sequence begin at P and extend no farther
846    than LIMIT.  The result is written to OUTPUT.  Returns a pointer to
847    just after the final digit of the escape sequence.  */
848
849 static char *
850 convert_hex (struct type *type, char *p,
851              char *limit, struct obstack *output)
852 {
853   unsigned long value = 0;
854
855   while (p < limit && isxdigit (*p))
856     {
857       value = 16 * value + host_hex_value (*p);
858       ++p;
859     }
860
861   emit_numeric_character (type, value, output);
862
863   return p;
864 }
865
866 #define ADVANCE                                 \
867   do {                                          \
868     ++p;                                        \
869     if (p == limit)                             \
870       error (_("Malformed escape sequence"));   \
871   } while (0)
872
873 /* Convert an escape sequence to a target format.  TYPE is the target
874    character type to use, and DEST_CHARSET is the name of the target
875    character set.  The backslash of the escape sequence is at *P, and
876    the escape sequence will not extend past LIMIT.  The results are
877    written to OUTPUT.  Returns a pointer to just past the final
878    character of the escape sequence.  */
879
880 static char *
881 convert_escape (struct type *type, const char *dest_charset,
882                 char *p, char *limit, struct obstack *output)
883 {
884   /* Skip the backslash.  */
885   ADVANCE;
886
887   switch (*p)
888     {
889     case '\\':
890       obstack_1grow (output, '\\');
891       ++p;
892       break;
893
894     case 'x':
895       ADVANCE;
896       if (!isxdigit (*p))
897         error (_("\\x used with no following hex digits."));
898       p = convert_hex (type, p, limit, output);
899       break;
900
901     case '0':
902     case '1':
903     case '2':
904     case '3':
905     case '4':
906     case '5':
907     case '6':
908     case '7':
909       p = convert_octal (type, p, limit, output);
910       break;
911
912     case 'u':
913     case 'U':
914       {
915         int length = *p == 'u' ? 4 : 8;
916
917         ADVANCE;
918         if (!isxdigit (*p))
919           error (_("\\u used with no following hex digits"));
920         p = convert_ucn (p, limit, dest_charset, output, length);
921       }
922     }
923
924   return p;
925 }
926
927 /* Given a single string from a (C-specific) OP_STRING list, convert
928    it to a target string, handling escape sequences specially.  The
929    output is written to OUTPUT.  DATA is the input string, which has
930    length LEN.  DEST_CHARSET is the name of the target character set,
931    and TYPE is the type of target character to use.  */
932
933 static void
934 parse_one_string (struct obstack *output, char *data, int len,
935                   const char *dest_charset, struct type *type)
936 {
937   char *limit;
938
939   limit = data + len;
940
941   while (data < limit)
942     {
943       char *p = data;
944
945       /* Look for next escape, or the end of the input.  */
946       while (p < limit && *p != '\\')
947         ++p;
948       /* If we saw a run of characters, convert them all.  */
949       if (p > data)
950         convert_between_encodings (host_charset (), dest_charset,
951                                    data, p - data, 1,
952                                    output, translit_none);
953       /* If we saw an escape, convert it.  */
954       if (p < limit)
955         p = convert_escape (type, dest_charset, p, limit, output);
956       data = p;
957     }
958 }
959
960 /* Expression evaluator for the C language family.  Most operations
961    are delegated to evaluate_subexp_standard; see that function for a
962    description of the arguments.  */
963
964 struct value *
965 evaluate_subexp_c (struct type *expect_type, struct expression *exp,
966                    int *pos, enum noside noside)
967 {
968   enum exp_opcode op = exp->elts[*pos].opcode;
969
970   switch (op)
971     {
972     case OP_STRING:
973       {
974         int oplen, limit;
975         struct type *type;
976         struct obstack output;
977         struct cleanup *cleanup;
978         struct value *result;
979         enum c_string_type dest_type;
980         const char *dest_charset;
981
982         obstack_init (&output);
983         cleanup = make_cleanup_obstack_free (&output);
984
985         ++*pos;
986         oplen = longest_to_int (exp->elts[*pos].longconst);
987
988         ++*pos;
989         limit = *pos + BYTES_TO_EXP_ELEM (oplen + 1);
990         dest_type
991           = (enum c_string_type) longest_to_int (exp->elts[*pos].longconst);
992         switch (dest_type & ~C_CHAR)
993           {
994           case C_STRING:
995             type = language_string_char_type (exp->language_defn,
996                                               exp->gdbarch);
997             break;
998           case C_WIDE_STRING:
999             type = lookup_typename (exp->language_defn, exp->gdbarch,
1000                                     "wchar_t", NULL, 0);
1001             break;
1002           case C_STRING_16:
1003             type = lookup_typename (exp->language_defn, exp->gdbarch,
1004                                     "char16_t", NULL, 0);
1005             break;
1006           case C_STRING_32:
1007             type = lookup_typename (exp->language_defn, exp->gdbarch,
1008                                     "char32_t", NULL, 0);
1009             break;
1010           default:
1011             internal_error (__FILE__, __LINE__, _("unhandled c_string_type"));
1012           }
1013
1014         /* Ensure TYPE_LENGTH is valid for TYPE.  */
1015         check_typedef (type);
1016
1017         dest_charset = charset_for_string_type (dest_type, exp->gdbarch);
1018
1019         ++*pos;
1020         while (*pos < limit)
1021           {
1022             int len;
1023
1024             len = longest_to_int (exp->elts[*pos].longconst);
1025
1026             ++*pos;
1027             if (noside != EVAL_SKIP)
1028               parse_one_string (&output, &exp->elts[*pos].string, len,
1029                                 dest_charset, type);
1030             *pos += BYTES_TO_EXP_ELEM (len);
1031           }
1032
1033         /* Skip the trailing length and opcode.  */
1034         *pos += 2;
1035
1036         if (noside == EVAL_SKIP)
1037           {
1038             /* Return a dummy value of the appropriate type.  */
1039             if ((dest_type & C_CHAR) != 0)
1040               result = allocate_value (type);
1041             else
1042               result = value_cstring ("", 0, type);
1043             do_cleanups (cleanup);
1044             return result;
1045           }
1046
1047         if ((dest_type & C_CHAR) != 0)
1048           {
1049             LONGEST value;
1050
1051             if (obstack_object_size (&output) != TYPE_LENGTH (type))
1052               error (_("Could not convert character "
1053                        "constant to target character set"));
1054             value = unpack_long (type, obstack_base (&output));
1055             result = value_from_longest (type, value);
1056           }
1057         else
1058           {
1059             int i;
1060
1061             /* Write the terminating character.  */
1062             for (i = 0; i < TYPE_LENGTH (type); ++i)
1063               obstack_1grow (&output, 0);
1064             result = value_cstring (obstack_base (&output),
1065                                     obstack_object_size (&output),
1066                                     type);
1067           }
1068         do_cleanups (cleanup);
1069         return result;
1070       }
1071       break;
1072
1073     default:
1074       break;
1075     }
1076   return evaluate_subexp_standard (expect_type, exp, pos, noside);
1077 }
1078
1079
1080 \f
1081 /* Table mapping opcodes into strings for printing operators
1082    and precedences of the operators.  */
1083
1084 const struct op_print c_op_print_tab[] =
1085 {
1086   {",", BINOP_COMMA, PREC_COMMA, 0},
1087   {"=", BINOP_ASSIGN, PREC_ASSIGN, 1},
1088   {"||", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
1089   {"&&", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
1090   {"|", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
1091   {"^", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
1092   {"&", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
1093   {"==", BINOP_EQUAL, PREC_EQUAL, 0},
1094   {"!=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
1095   {"<=", BINOP_LEQ, PREC_ORDER, 0},
1096   {">=", BINOP_GEQ, PREC_ORDER, 0},
1097   {">", BINOP_GTR, PREC_ORDER, 0},
1098   {"<", BINOP_LESS, PREC_ORDER, 0},
1099   {">>", BINOP_RSH, PREC_SHIFT, 0},
1100   {"<<", BINOP_LSH, PREC_SHIFT, 0},
1101   {"+", BINOP_ADD, PREC_ADD, 0},
1102   {"-", BINOP_SUB, PREC_ADD, 0},
1103   {"*", BINOP_MUL, PREC_MUL, 0},
1104   {"/", BINOP_DIV, PREC_MUL, 0},
1105   {"%", BINOP_REM, PREC_MUL, 0},
1106   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
1107   {"-", UNOP_NEG, PREC_PREFIX, 0},
1108   {"!", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
1109   {"~", UNOP_COMPLEMENT, PREC_PREFIX, 0},
1110   {"*", UNOP_IND, PREC_PREFIX, 0},
1111   {"&", UNOP_ADDR, PREC_PREFIX, 0},
1112   {"sizeof ", UNOP_SIZEOF, PREC_PREFIX, 0},
1113   {"++", UNOP_PREINCREMENT, PREC_PREFIX, 0},
1114   {"--", UNOP_PREDECREMENT, PREC_PREFIX, 0},
1115   {NULL, 0, 0, 0}
1116 };
1117 \f
1118 enum c_primitive_types {
1119   c_primitive_type_int,
1120   c_primitive_type_long,
1121   c_primitive_type_short,
1122   c_primitive_type_char,
1123   c_primitive_type_float,
1124   c_primitive_type_double,
1125   c_primitive_type_void,
1126   c_primitive_type_long_long,
1127   c_primitive_type_signed_char,
1128   c_primitive_type_unsigned_char,
1129   c_primitive_type_unsigned_short,
1130   c_primitive_type_unsigned_int,
1131   c_primitive_type_unsigned_long,
1132   c_primitive_type_unsigned_long_long,
1133   c_primitive_type_long_double,
1134   c_primitive_type_complex,
1135   c_primitive_type_double_complex,
1136   c_primitive_type_decfloat,
1137   c_primitive_type_decdouble,
1138   c_primitive_type_declong,
1139   nr_c_primitive_types
1140 };
1141
1142 void
1143 c_language_arch_info (struct gdbarch *gdbarch,
1144                       struct language_arch_info *lai)
1145 {
1146   const struct builtin_type *builtin = builtin_type (gdbarch);
1147
1148   lai->string_char_type = builtin->builtin_char;
1149   lai->primitive_type_vector
1150     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_c_primitive_types + 1,
1151                               struct type *);
1152   lai->primitive_type_vector [c_primitive_type_int] = builtin->builtin_int;
1153   lai->primitive_type_vector [c_primitive_type_long] = builtin->builtin_long;
1154   lai->primitive_type_vector [c_primitive_type_short] = builtin->builtin_short;
1155   lai->primitive_type_vector [c_primitive_type_char] = builtin->builtin_char;
1156   lai->primitive_type_vector [c_primitive_type_float] = builtin->builtin_float;
1157   lai->primitive_type_vector [c_primitive_type_double] = builtin->builtin_double;
1158   lai->primitive_type_vector [c_primitive_type_void] = builtin->builtin_void;
1159   lai->primitive_type_vector [c_primitive_type_long_long] = builtin->builtin_long_long;
1160   lai->primitive_type_vector [c_primitive_type_signed_char] = builtin->builtin_signed_char;
1161   lai->primitive_type_vector [c_primitive_type_unsigned_char] = builtin->builtin_unsigned_char;
1162   lai->primitive_type_vector [c_primitive_type_unsigned_short] = builtin->builtin_unsigned_short;
1163   lai->primitive_type_vector [c_primitive_type_unsigned_int] = builtin->builtin_unsigned_int;
1164   lai->primitive_type_vector [c_primitive_type_unsigned_long] = builtin->builtin_unsigned_long;
1165   lai->primitive_type_vector [c_primitive_type_unsigned_long_long] = builtin->builtin_unsigned_long_long;
1166   lai->primitive_type_vector [c_primitive_type_long_double] = builtin->builtin_long_double;
1167   lai->primitive_type_vector [c_primitive_type_complex] = builtin->builtin_complex;
1168   lai->primitive_type_vector [c_primitive_type_double_complex] = builtin->builtin_double_complex;
1169   lai->primitive_type_vector [c_primitive_type_decfloat] = builtin->builtin_decfloat;
1170   lai->primitive_type_vector [c_primitive_type_decdouble] = builtin->builtin_decdouble;
1171   lai->primitive_type_vector [c_primitive_type_declong] = builtin->builtin_declong;
1172
1173   lai->bool_type_default = builtin->builtin_int;
1174 }
1175
1176 const struct exp_descriptor exp_descriptor_c = 
1177 {
1178   print_subexp_standard,
1179   operator_length_standard,
1180   operator_check_standard,
1181   op_name_standard,
1182   dump_subexp_body_standard,
1183   evaluate_subexp_c
1184 };
1185
1186 const struct language_defn c_language_defn =
1187 {
1188   "c",                          /* Language name */
1189   language_c,
1190   range_check_off,
1191   type_check_off,
1192   case_sensitive_on,
1193   array_row_major,
1194   macro_expansion_c,
1195   &exp_descriptor_c,
1196   c_parse,
1197   c_error,
1198   null_post_parser,
1199   c_printchar,                  /* Print a character constant */
1200   c_printstr,                   /* Function to print string constant */
1201   c_emit_char,                  /* Print a single char */
1202   c_print_type,                 /* Print a type using appropriate syntax */
1203   c_print_typedef,              /* Print a typedef using appropriate syntax */
1204   c_val_print,                  /* Print a value using appropriate syntax */
1205   c_value_print,                /* Print a top-level value */
1206   NULL,                         /* Language specific skip_trampoline */
1207   NULL,                         /* name_of_this */
1208   basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
1209   basic_lookup_transparent_type,/* lookup_transparent_type */
1210   NULL,                         /* Language specific symbol demangler */
1211   NULL,                         /* Language specific
1212                                    class_name_from_physname */
1213   c_op_print_tab,               /* expression operators for printing */
1214   1,                            /* c-style arrays */
1215   0,                            /* String lower bound */
1216   default_word_break_characters,
1217   default_make_symbol_completion_list,
1218   c_language_arch_info,
1219   default_print_array_index,
1220   default_pass_by_reference,
1221   c_get_string,
1222   LANG_MAGIC
1223 };
1224
1225 enum cplus_primitive_types {
1226   cplus_primitive_type_int,
1227   cplus_primitive_type_long,
1228   cplus_primitive_type_short,
1229   cplus_primitive_type_char,
1230   cplus_primitive_type_float,
1231   cplus_primitive_type_double,
1232   cplus_primitive_type_void,
1233   cplus_primitive_type_long_long,
1234   cplus_primitive_type_signed_char,
1235   cplus_primitive_type_unsigned_char,
1236   cplus_primitive_type_unsigned_short,
1237   cplus_primitive_type_unsigned_int,
1238   cplus_primitive_type_unsigned_long,
1239   cplus_primitive_type_unsigned_long_long,
1240   cplus_primitive_type_long_double,
1241   cplus_primitive_type_complex,
1242   cplus_primitive_type_double_complex,
1243   cplus_primitive_type_bool,
1244   cplus_primitive_type_decfloat,
1245   cplus_primitive_type_decdouble,
1246   cplus_primitive_type_declong,
1247   nr_cplus_primitive_types
1248 };
1249
1250 static void
1251 cplus_language_arch_info (struct gdbarch *gdbarch,
1252                           struct language_arch_info *lai)
1253 {
1254   const struct builtin_type *builtin = builtin_type (gdbarch);
1255
1256   lai->string_char_type = builtin->builtin_char;
1257   lai->primitive_type_vector
1258     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_cplus_primitive_types + 1,
1259                               struct type *);
1260   lai->primitive_type_vector [cplus_primitive_type_int]
1261     = builtin->builtin_int;
1262   lai->primitive_type_vector [cplus_primitive_type_long]
1263     = builtin->builtin_long;
1264   lai->primitive_type_vector [cplus_primitive_type_short]
1265     = builtin->builtin_short;
1266   lai->primitive_type_vector [cplus_primitive_type_char]
1267     = builtin->builtin_char;
1268   lai->primitive_type_vector [cplus_primitive_type_float]
1269     = builtin->builtin_float;
1270   lai->primitive_type_vector [cplus_primitive_type_double]
1271     = builtin->builtin_double;
1272   lai->primitive_type_vector [cplus_primitive_type_void]
1273     = builtin->builtin_void;
1274   lai->primitive_type_vector [cplus_primitive_type_long_long]
1275     = builtin->builtin_long_long;
1276   lai->primitive_type_vector [cplus_primitive_type_signed_char]
1277     = builtin->builtin_signed_char;
1278   lai->primitive_type_vector [cplus_primitive_type_unsigned_char]
1279     = builtin->builtin_unsigned_char;
1280   lai->primitive_type_vector [cplus_primitive_type_unsigned_short]
1281     = builtin->builtin_unsigned_short;
1282   lai->primitive_type_vector [cplus_primitive_type_unsigned_int]
1283     = builtin->builtin_unsigned_int;
1284   lai->primitive_type_vector [cplus_primitive_type_unsigned_long]
1285     = builtin->builtin_unsigned_long;
1286   lai->primitive_type_vector [cplus_primitive_type_unsigned_long_long]
1287     = builtin->builtin_unsigned_long_long;
1288   lai->primitive_type_vector [cplus_primitive_type_long_double]
1289     = builtin->builtin_long_double;
1290   lai->primitive_type_vector [cplus_primitive_type_complex]
1291     = builtin->builtin_complex;
1292   lai->primitive_type_vector [cplus_primitive_type_double_complex]
1293     = builtin->builtin_double_complex;
1294   lai->primitive_type_vector [cplus_primitive_type_bool]
1295     = builtin->builtin_bool;
1296   lai->primitive_type_vector [cplus_primitive_type_decfloat]
1297     = builtin->builtin_decfloat;
1298   lai->primitive_type_vector [cplus_primitive_type_decdouble]
1299     = builtin->builtin_decdouble;
1300   lai->primitive_type_vector [cplus_primitive_type_declong]
1301     = builtin->builtin_declong;
1302
1303   lai->bool_type_symbol = "bool";
1304   lai->bool_type_default = builtin->builtin_bool;
1305 }
1306
1307 const struct language_defn cplus_language_defn =
1308 {
1309   "c++",                        /* Language name */
1310   language_cplus,
1311   range_check_off,
1312   type_check_off,
1313   case_sensitive_on,
1314   array_row_major,
1315   macro_expansion_c,
1316   &exp_descriptor_c,
1317   c_parse,
1318   c_error,
1319   null_post_parser,
1320   c_printchar,                  /* Print a character constant */
1321   c_printstr,                   /* Function to print string constant */
1322   c_emit_char,                  /* Print a single char */
1323   c_print_type,                 /* Print a type using appropriate syntax */
1324   c_print_typedef,              /* Print a typedef using appropriate syntax */
1325   c_val_print,                  /* Print a value using appropriate syntax */
1326   c_value_print,                /* Print a top-level value */
1327   cplus_skip_trampoline,        /* Language specific skip_trampoline */
1328   "this",                       /* name_of_this */
1329   cp_lookup_symbol_nonlocal,    /* lookup_symbol_nonlocal */
1330   cp_lookup_transparent_type,   /* lookup_transparent_type */
1331   cplus_demangle,               /* Language specific symbol demangler */
1332   cp_class_name_from_physname,  /* Language specific
1333                                    class_name_from_physname */
1334   c_op_print_tab,               /* expression operators for printing */
1335   1,                            /* c-style arrays */
1336   0,                            /* String lower bound */
1337   default_word_break_characters,
1338   default_make_symbol_completion_list,
1339   cplus_language_arch_info,
1340   default_print_array_index,
1341   cp_pass_by_reference,
1342   c_get_string,
1343   LANG_MAGIC
1344 };
1345
1346 const struct language_defn asm_language_defn =
1347 {
1348   "asm",                        /* Language name */
1349   language_asm,
1350   range_check_off,
1351   type_check_off,
1352   case_sensitive_on,
1353   array_row_major,
1354   macro_expansion_c,
1355   &exp_descriptor_c,
1356   c_parse,
1357   c_error,
1358   null_post_parser,
1359   c_printchar,                  /* Print a character constant */
1360   c_printstr,                   /* Function to print string constant */
1361   c_emit_char,                  /* Print a single char */
1362   c_print_type,                 /* Print a type using appropriate syntax */
1363   c_print_typedef,              /* Print a typedef using appropriate syntax */
1364   c_val_print,                  /* Print a value using appropriate syntax */
1365   c_value_print,                /* Print a top-level value */
1366   NULL,                         /* Language specific skip_trampoline */
1367   NULL,                         /* name_of_this */
1368   basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
1369   basic_lookup_transparent_type,/* lookup_transparent_type */
1370   NULL,                         /* Language specific symbol demangler */
1371   NULL,                         /* Language specific
1372                                    class_name_from_physname */
1373   c_op_print_tab,               /* expression operators for printing */
1374   1,                            /* c-style arrays */
1375   0,                            /* String lower bound */
1376   default_word_break_characters,
1377   default_make_symbol_completion_list,
1378   c_language_arch_info,         /* FIXME: la_language_arch_info.  */
1379   default_print_array_index,
1380   default_pass_by_reference,
1381   c_get_string,
1382   LANG_MAGIC
1383 };
1384
1385 /* The following language_defn does not represent a real language.
1386    It just provides a minimal support a-la-C that should allow users
1387    to do some simple operations when debugging applications that use
1388    a language currently not supported by GDB.  */
1389
1390 const struct language_defn minimal_language_defn =
1391 {
1392   "minimal",                    /* Language name */
1393   language_minimal,
1394   range_check_off,
1395   type_check_off,
1396   case_sensitive_on,
1397   array_row_major,
1398   macro_expansion_c,
1399   &exp_descriptor_c,
1400   c_parse,
1401   c_error,
1402   null_post_parser,
1403   c_printchar,                  /* Print a character constant */
1404   c_printstr,                   /* Function to print string constant */
1405   c_emit_char,                  /* Print a single char */
1406   c_print_type,                 /* Print a type using appropriate syntax */
1407   c_print_typedef,              /* Print a typedef using appropriate syntax */
1408   c_val_print,                  /* Print a value using appropriate syntax */
1409   c_value_print,                /* Print a top-level value */
1410   NULL,                         /* Language specific skip_trampoline */
1411   NULL,                         /* name_of_this */
1412   basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
1413   basic_lookup_transparent_type,/* lookup_transparent_type */
1414   NULL,                         /* Language specific symbol demangler */
1415   NULL,                         /* Language specific
1416                                    class_name_from_physname */
1417   c_op_print_tab,               /* expression operators for printing */
1418   1,                            /* c-style arrays */
1419   0,                            /* String lower bound */
1420   default_word_break_characters,
1421   default_make_symbol_completion_list,
1422   c_language_arch_info,
1423   default_print_array_index,
1424   default_pass_by_reference,
1425   c_get_string,
1426   LANG_MAGIC
1427 };
1428
1429 void
1430 _initialize_c_language (void)
1431 {
1432   add_language (&c_language_defn);
1433   add_language (&cplus_language_defn);
1434   add_language (&asm_language_defn);
1435   add_language (&minimal_language_defn);
1436 }