]> Git Repo - binutils.git/blob - gdb/c-lang.c
Allow 'ptype/o' for assembly
[binutils.git] / gdb / c-lang.c
1 /* C language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2022 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 "c-support.h"
29 #include "valprint.h"
30 #include "macroscope.h"
31 #include "charset.h"
32 #include "demangle.h"
33 #include "cp-abi.h"
34 #include "cp-support.h"
35 #include "gdbsupport/gdb_obstack.h"
36 #include <ctype.h>
37 #include "gdbcore.h"
38 #include "gdbarch.h"
39 #include "compile/compile-internal.h"
40 #include "c-exp.h"
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 (c_string_type str_type, struct gdbarch *gdbarch)
47 {
48   switch (str_type & ~C_CHAR)
49     {
50     case C_STRING:
51       return target_charset (gdbarch);
52     case C_WIDE_STRING:
53       return target_wide_charset (gdbarch);
54     case C_STRING_16:
55       /* FIXME: UTF-16 is not always correct.  */
56       if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
57         return "UTF-16BE";
58       else
59         return "UTF-16LE";
60     case C_STRING_32:
61       /* FIXME: UTF-32 is not always correct.  */
62       if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
63         return "UTF-32BE";
64       else
65         return "UTF-32LE";
66     }
67   internal_error (_("unhandled c_string_type"));
68 }
69
70 /* Classify ELTTYPE according to what kind of character it is.  Return
71    the enum constant representing the character type.  Also set
72    *ENCODING to the name of the character set to use when converting
73    characters of this type in target BYTE_ORDER to the host character
74    set.  */
75
76 static c_string_type
77 classify_type (struct type *elttype, struct gdbarch *gdbarch,
78                const char **encoding)
79 {
80   c_string_type result;
81
82   /* We loop because ELTTYPE may be a typedef, and we want to
83      successively peel each typedef until we reach a type we
84      understand.  We don't use CHECK_TYPEDEF because that will strip
85      all typedefs at once -- but in C, wchar_t is itself a typedef, so
86      that would do the wrong thing.  */
87   while (elttype)
88     {
89       const char *name = elttype->name ();
90
91       if (name == nullptr)
92         {
93           result = C_CHAR;
94           goto done;
95         }
96
97       if (!strcmp (name, "wchar_t"))
98         {
99           result = C_WIDE_CHAR;
100           goto done;
101         }
102
103       if (!strcmp (name, "char16_t"))
104         {
105           result = C_CHAR_16;
106           goto done;
107         }
108
109       if (!strcmp (name, "char32_t"))
110         {
111           result = C_CHAR_32;
112           goto done;
113         }
114
115       if (elttype->code () != TYPE_CODE_TYPEDEF)
116         break;
117
118       /* Call for side effects.  */
119       check_typedef (elttype);
120
121       if (elttype->target_type ())
122         elttype = elttype->target_type ();
123       else
124         {
125           /* Perhaps check_typedef did not update the target type.  In
126              this case, force the lookup again and hope it works out.
127              It never will for C, but it might for C++.  */
128           elttype = check_typedef (elttype);
129         }
130     }
131
132   /* Punt.  */
133   result = C_CHAR;
134
135  done:
136   if (encoding)
137     *encoding = charset_for_string_type (result, gdbarch);
138
139   return result;
140 }
141
142 /* Print the character C on STREAM as part of the contents of a
143    literal string whose delimiter is QUOTER.  Note that that format
144    for printing characters and strings is language specific.  */
145
146 void
147 language_defn::emitchar (int c, struct type *type,
148                          struct ui_file *stream, int quoter) const
149 {
150   const char *encoding;
151
152   classify_type (type, type->arch (), &encoding);
153   generic_emit_char (c, type, stream, quoter, encoding);
154 }
155
156 /* See language.h.  */
157
158 void
159 language_defn::printchar (int c, struct type *type,
160                           struct ui_file * stream) const
161 {
162   c_string_type str_type;
163
164   str_type = classify_type (type, type->arch (), NULL);
165   switch (str_type)
166     {
167     case C_CHAR:
168       break;
169     case C_WIDE_CHAR:
170       gdb_putc ('L', stream);
171       break;
172     case C_CHAR_16:
173       gdb_putc ('u', stream);
174       break;
175     case C_CHAR_32:
176       gdb_putc ('U', stream);
177       break;
178     }
179
180   gdb_putc ('\'', stream);
181   emitchar (c, type, stream, '\'');
182   gdb_putc ('\'', stream);
183 }
184
185 /* Print the character string STRING, printing at most LENGTH
186    characters.  LENGTH is -1 if the string is nul terminated.  Each
187    character is WIDTH bytes long.  Printing stops early if the number
188    hits print_max; repeat counts are printed as appropriate.  Print
189    ellipses at the end if we had to stop before printing LENGTH
190    characters, or if FORCE_ELLIPSES.  */
191
192 void
193 language_defn::printstr (struct ui_file *stream, struct type *type,
194                          const gdb_byte *string, unsigned int length,
195                          const char *user_encoding, int force_ellipses,
196                          const struct value_print_options *options) const
197 {
198   c_string_type str_type;
199   const char *type_encoding;
200   const char *encoding;
201
202   str_type = (classify_type (type, type->arch (), &type_encoding)
203               & ~C_CHAR);
204   switch (str_type)
205     {
206     case C_STRING:
207       break;
208     case C_WIDE_STRING:
209       gdb_puts ("L", stream);
210       break;
211     case C_STRING_16:
212       gdb_puts ("u", stream);
213       break;
214     case C_STRING_32:
215       gdb_puts ("U", stream);
216       break;
217     }
218
219   encoding = (user_encoding && *user_encoding) ? user_encoding : type_encoding;
220
221   generic_printstr (stream, type, string, length, encoding, force_ellipses,
222                     '"', 1, options);
223 }
224
225 /* Obtain a C string from the inferior storing it in a newly allocated
226    buffer in BUFFER, which should be freed by the caller.  If the in-
227    and out-parameter *LENGTH is specified at -1, the string is read
228    until a null character of the appropriate width is found, otherwise
229    the string is read to the length of characters specified.  The size
230    of a character is determined by the length of the target type of
231    the pointer or array.
232
233    If VALUE is an array with a known length, and *LENGTH is -1,
234    the function will not read past the end of the array.  However, any
235    declared size of the array is ignored if *LENGTH > 0.
236
237    On completion, *LENGTH will be set to the size of the string read in
238    characters.  (If a length of -1 is specified, the length returned
239    will not include the null character).  CHARSET is always set to the
240    target charset.  */
241
242 void
243 c_get_string (struct value *value, gdb::unique_xmalloc_ptr<gdb_byte> *buffer,
244               int *length, struct type **char_type,
245               const char **charset)
246 {
247   int err, width;
248   unsigned int fetchlimit;
249   struct type *type = check_typedef (value_type (value));
250   struct type *element_type = type->target_type ();
251   int req_length = *length;
252   enum bfd_endian byte_order
253     = type_byte_order (type);
254
255   if (element_type == NULL)
256     goto error;
257
258   if (type->code () == TYPE_CODE_ARRAY)
259     {
260       /* If we know the size of the array, we can use it as a limit on
261          the number of characters to be fetched.  */
262       if (type->num_fields () == 1
263           && type->field (0).type ()->code () == TYPE_CODE_RANGE)
264         {
265           LONGEST low_bound, high_bound;
266
267           get_discrete_bounds (type->field (0).type (),
268                                &low_bound, &high_bound);
269           fetchlimit = high_bound - low_bound + 1;
270         }
271       else
272         fetchlimit = UINT_MAX;
273     }
274   else if (type->code () == TYPE_CODE_PTR)
275     fetchlimit = UINT_MAX;
276   else
277     /* We work only with arrays and pointers.  */
278     goto error;
279
280   if (! c_textual_element_type (element_type, 0))
281     goto error;
282   classify_type (element_type, element_type->arch (), charset);
283   width = element_type->length ();
284
285   /* If the string lives in GDB's memory instead of the inferior's,
286      then we just need to copy it to BUFFER.  Also, since such strings
287      are arrays with known size, FETCHLIMIT will hold the size of the
288      array.
289
290      An array is assumed to live in GDB's memory, so we take this path
291      here.
292
293      However, it's possible for the caller to request more array
294      elements than apparently exist -- this can happen when using the
295      C struct hack.  So, only do this if either no length was
296      specified, or the length is within the existing bounds.  This
297      avoids running off the end of the value's contents.  */
298   if ((VALUE_LVAL (value) == not_lval
299        || VALUE_LVAL (value) == lval_internalvar
300        || type->code () == TYPE_CODE_ARRAY)
301       && fetchlimit != UINT_MAX
302       && (*length < 0 || *length <= fetchlimit))
303     {
304       int i;
305       const gdb_byte *contents = value_contents (value).data ();
306
307       /* If a length is specified, use that.  */
308       if (*length >= 0)
309         i  = *length;
310       else
311         /* Otherwise, look for a null character.  */
312         for (i = 0; i < fetchlimit; i++)
313           if (extract_unsigned_integer (contents + i * width,
314                                         width, byte_order) == 0)
315             break;
316   
317       /* I is now either a user-defined length, the number of non-null
318          characters, or FETCHLIMIT.  */
319       *length = i * width;
320       buffer->reset ((gdb_byte *) xmalloc (*length));
321       memcpy (buffer->get (), contents, *length);
322       err = 0;
323     }
324   else
325     {
326       /* value_as_address does not return an address for an array when
327          c_style_arrays is false, so we handle that specially
328          here.  */
329       CORE_ADDR addr;
330       if (type->code () == TYPE_CODE_ARRAY)
331         {
332           if (VALUE_LVAL (value) != lval_memory)
333             error (_("Attempt to take address of value "
334                      "not located in memory."));
335           addr = value_address (value);
336         }
337       else
338         addr = value_as_address (value);
339
340       /* Prior to the fix for PR 16196 read_string would ignore fetchlimit
341          if length > 0.  The old "broken" behaviour is the behaviour we want:
342          The caller may want to fetch 100 bytes from a variable length array
343          implemented using the common idiom of having an array of length 1 at
344          the end of a struct.  In this case we want to ignore the declared
345          size of the array.  However, it's counterintuitive to implement that
346          behaviour in read_string: what does fetchlimit otherwise mean if
347          length > 0.  Therefore we implement the behaviour we want here:
348          If *length > 0, don't specify a fetchlimit.  This preserves the
349          previous behaviour.  We could move this check above where we know
350          whether the array is declared with a fixed size, but we only want
351          to apply this behaviour when calling read_string.  PR 16286.  */
352       if (*length > 0)
353         fetchlimit = UINT_MAX;
354
355       err = target_read_string (addr, *length, width, fetchlimit,
356                                 buffer, length);
357       if (err != 0)
358         memory_error (TARGET_XFER_E_IO, addr);
359     }
360
361   /* If the LENGTH is specified at -1, we want to return the string
362      length up to the terminating null character.  If an actual length
363      was specified, we want to return the length of exactly what was
364      read.  */
365   if (req_length == -1)
366     /* If the last character is null, subtract it from LENGTH.  */
367     if (*length > 0
368         && extract_unsigned_integer (buffer->get () + *length - width,
369                                      width, byte_order) == 0)
370       *length -= width;
371   
372   /* The read_string function will return the number of bytes read.
373      If length returned from read_string was > 0, return the number of
374      characters read by dividing the number of bytes by width.  */
375   if (*length != 0)
376      *length = *length / width;
377
378   *char_type = element_type;
379
380   return;
381
382  error:
383   {
384     std::string type_str = type_to_string (type);
385     if (!type_str.empty ())
386       {
387         error (_("Trying to read string with inappropriate type `%s'."),
388                type_str.c_str ());
389       }
390     else
391       error (_("Trying to read string with inappropriate type."));
392   }
393 }
394
395 \f
396 /* Evaluating C and C++ expressions.  */
397
398 /* Convert a UCN.  The digits of the UCN start at P and extend no
399    farther than LIMIT.  DEST_CHARSET is the name of the character set
400    into which the UCN should be converted.  The results are written to
401    OUTPUT.  LENGTH is the maximum length of the UCN, either 4 or 8.
402    Returns a pointer to just after the final digit of the UCN.  */
403
404 static const char *
405 convert_ucn (const char *p, const char *limit, const char *dest_charset,
406              struct obstack *output, int length)
407 {
408   unsigned long result = 0;
409   gdb_byte data[4];
410   int i;
411
412   for (i = 0; i < length && p < limit && ISXDIGIT (*p); ++i, ++p)
413     result = (result << 4) + fromhex (*p);
414
415   for (i = 3; i >= 0; --i)
416     {
417       data[i] = result & 0xff;
418       result >>= 8;
419     }
420
421   convert_between_encodings ("UTF-32BE", dest_charset, data,
422                              4, 4, output, translit_none);
423
424   return p;
425 }
426
427 /* Emit a character, VALUE, which was specified numerically, to
428    OUTPUT.  TYPE is the target character type.  */
429
430 static void
431 emit_numeric_character (struct type *type, unsigned long value,
432                         struct obstack *output)
433 {
434   gdb_byte *buffer;
435
436   buffer = (gdb_byte *) alloca (type->length ());
437   pack_long (buffer, type, value);
438   obstack_grow (output, buffer, type->length ());
439 }
440
441 /* Convert an octal escape sequence.  TYPE is the target character
442    type.  The digits of the escape sequence begin at P and extend no
443    farther than LIMIT.  The result is written to OUTPUT.  Returns a
444    pointer to just after the final digit of the escape sequence.  */
445
446 static const char *
447 convert_octal (struct type *type, const char *p,
448                const char *limit, struct obstack *output)
449 {
450   int i;
451   unsigned long value = 0;
452
453   for (i = 0;
454        i < 3 && p < limit && ISDIGIT (*p) && *p != '8' && *p != '9';
455        ++i)
456     {
457       value = 8 * value + fromhex (*p);
458       ++p;
459     }
460
461   emit_numeric_character (type, value, output);
462
463   return p;
464 }
465
466 /* Convert a hex escape sequence.  TYPE is the target character type.
467    The digits of the escape sequence begin at P and extend no farther
468    than LIMIT.  The result is written to OUTPUT.  Returns a pointer to
469    just after the final digit of the escape sequence.  */
470
471 static const char *
472 convert_hex (struct type *type, const char *p,
473              const char *limit, struct obstack *output)
474 {
475   unsigned long value = 0;
476
477   while (p < limit && ISXDIGIT (*p))
478     {
479       value = 16 * value + fromhex (*p);
480       ++p;
481     }
482
483   emit_numeric_character (type, value, output);
484
485   return p;
486 }
487
488 #define ADVANCE                                 \
489   do {                                          \
490     ++p;                                        \
491     if (p == limit)                             \
492       error (_("Malformed escape sequence"));   \
493   } while (0)
494
495 /* Convert an escape sequence to a target format.  TYPE is the target
496    character type to use, and DEST_CHARSET is the name of the target
497    character set.  The backslash of the escape sequence is at *P, and
498    the escape sequence will not extend past LIMIT.  The results are
499    written to OUTPUT.  Returns a pointer to just past the final
500    character of the escape sequence.  */
501
502 static const char *
503 convert_escape (struct type *type, const char *dest_charset,
504                 const char *p, const char *limit, struct obstack *output)
505 {
506   /* Skip the backslash.  */
507   ADVANCE;
508
509   switch (*p)
510     {
511     case '\\':
512       obstack_1grow (output, '\\');
513       ++p;
514       break;
515
516     case 'x':
517       ADVANCE;
518       if (!ISXDIGIT (*p))
519         error (_("\\x used with no following hex digits."));
520       p = convert_hex (type, p, limit, output);
521       break;
522
523     case '0':
524     case '1':
525     case '2':
526     case '3':
527     case '4':
528     case '5':
529     case '6':
530     case '7':
531       p = convert_octal (type, p, limit, output);
532       break;
533
534     case 'u':
535     case 'U':
536       {
537         int length = *p == 'u' ? 4 : 8;
538
539         ADVANCE;
540         if (!ISXDIGIT (*p))
541           error (_("\\u used with no following hex digits"));
542         p = convert_ucn (p, limit, dest_charset, output, length);
543       }
544     }
545
546   return p;
547 }
548
549 /* Given a single string from a (C-specific) OP_STRING list, convert
550    it to a target string, handling escape sequences specially.  The
551    output is written to OUTPUT.  DATA is the input string, which has
552    length LEN.  DEST_CHARSET is the name of the target character set,
553    and TYPE is the type of target character to use.  */
554
555 static void
556 parse_one_string (struct obstack *output, const char *data, int len,
557                   const char *dest_charset, struct type *type)
558 {
559   const char *limit;
560
561   limit = data + len;
562
563   while (data < limit)
564     {
565       const char *p = data;
566
567       /* Look for next escape, or the end of the input.  */
568       while (p < limit && *p != '\\')
569         ++p;
570       /* If we saw a run of characters, convert them all.  */
571       if (p > data)
572         convert_between_encodings (host_charset (), dest_charset,
573                                    (const gdb_byte *) data, p - data, 1,
574                                    output, translit_none);
575       /* If we saw an escape, convert it.  */
576       if (p < limit)
577         p = convert_escape (type, dest_charset, p, limit, output);
578       data = p;
579     }
580 }
581
582 namespace expr
583 {
584
585 value *
586 c_string_operation::evaluate (struct type *expect_type,
587                               struct expression *exp,
588                               enum noside noside)
589 {
590   struct type *type;
591   struct value *result;
592   c_string_type dest_type;
593   const char *dest_charset;
594   int satisfy_expected = 0;
595
596   auto_obstack output;
597
598   dest_type = std::get<0> (m_storage);
599
600   switch (dest_type & ~C_CHAR)
601     {
602     case C_STRING:
603       type = language_string_char_type (exp->language_defn,
604                                         exp->gdbarch);
605       break;
606     case C_WIDE_STRING:
607       type = lookup_typename (exp->language_defn, "wchar_t", NULL, 0);
608       break;
609     case C_STRING_16:
610       type = lookup_typename (exp->language_defn, "char16_t", NULL, 0);
611       break;
612     case C_STRING_32:
613       type = lookup_typename (exp->language_defn, "char32_t", NULL, 0);
614       break;
615     default:
616       internal_error (_("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 && expect_type->code () == TYPE_CODE_ARRAY)
626     {
627       struct type *element_type
628         = check_typedef (expect_type->target_type ());
629
630       if (element_type->code () == TYPE_CODE_INT
631           || element_type->code () == 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   for (const std::string &item : std::get<1> (m_storage))
641     parse_one_string (&output, item.c_str (), item.size (),
642                       dest_charset, type);
643
644   if ((dest_type & C_CHAR) != 0)
645     {
646       LONGEST value;
647
648       if (obstack_object_size (&output) != type->length ())
649         error (_("Could not convert character "
650                  "constant to target character set"));
651       value = unpack_long (type, (gdb_byte *) obstack_base (&output));
652       result = value_from_longest (type, value);
653     }
654   else
655     {
656       int i;
657
658       /* Write the terminating character.  */
659       for (i = 0; i < type->length (); ++i)
660         obstack_1grow (&output, 0);
661
662       if (satisfy_expected)
663         {
664           LONGEST low_bound, high_bound;
665           int element_size = type->length ();
666
667           if (!get_discrete_bounds (expect_type->index_type (),
668                                     &low_bound, &high_bound))
669             {
670               low_bound = 0;
671               high_bound = (expect_type->length () / element_size) - 1;
672             }
673           if (obstack_object_size (&output) / element_size
674               > (high_bound - low_bound + 1))
675             error (_("Too many array elements"));
676
677           result = allocate_value (expect_type);
678           memcpy (value_contents_raw (result).data (), obstack_base (&output),
679                   obstack_object_size (&output));
680         }
681       else
682         result = value_cstring ((const char *) obstack_base (&output),
683                                 obstack_object_size (&output),
684                                 type);
685     }
686   return result;
687 }
688
689 } /* namespace expr */
690
691 \f
692 /* See c-lang.h.  */
693
694 bool
695 c_is_string_type_p (struct type *type)
696 {
697   type = check_typedef (type);
698   while (type->code () == TYPE_CODE_REF)
699     {
700       type = type->target_type ();
701       type = check_typedef (type);
702     }
703
704   switch (type->code ())
705     {
706     case TYPE_CODE_ARRAY:
707       {
708         /* See if target type looks like a string.  */
709         struct type *array_target_type = type->target_type ();
710         return (type->length () > 0
711                 && array_target_type->length () > 0
712                 && c_textual_element_type (array_target_type, 0));
713       }
714     case TYPE_CODE_STRING:
715       return true;
716     case TYPE_CODE_PTR:
717       {
718         struct type *element_type = type->target_type ();
719         return c_textual_element_type (element_type, 0);
720       }
721     default:
722       break;
723     }
724
725   return false;
726 }
727
728 \f
729
730 void
731 c_language_arch_info (struct gdbarch *gdbarch,
732                       struct language_arch_info *lai)
733 {
734   const struct builtin_type *builtin = builtin_type (gdbarch);
735
736   /* Helper function to allow shorter lines below.  */
737   auto add  = [&] (struct type * t)
738   {
739     lai->add_primitive_type (t);
740   };
741
742   add (builtin->builtin_int);
743   add (builtin->builtin_long);
744   add (builtin->builtin_short);
745   add (builtin->builtin_char);
746   add (builtin->builtin_float);
747   add (builtin->builtin_double);
748   add (builtin->builtin_void);
749   add (builtin->builtin_long_long);
750   add (builtin->builtin_signed_char);
751   add (builtin->builtin_unsigned_char);
752   add (builtin->builtin_unsigned_short);
753   add (builtin->builtin_unsigned_int);
754   add (builtin->builtin_unsigned_long);
755   add (builtin->builtin_unsigned_long_long);
756   add (builtin->builtin_long_double);
757   add (builtin->builtin_complex);
758   add (builtin->builtin_double_complex);
759   add (builtin->builtin_decfloat);
760   add (builtin->builtin_decdouble);
761   add (builtin->builtin_declong);
762
763   lai->set_string_char_type (builtin->builtin_char);
764   lai->set_bool_type (builtin->builtin_int);
765 }
766
767 /* Class representing the C language.  */
768
769 class c_language : public language_defn
770 {
771 public:
772   c_language ()
773     : language_defn (language_c)
774   { /* Nothing.  */ }
775
776   /* See language.h.  */
777
778   const char *name () const override
779   { return "c"; }
780
781   /* See language.h.  */
782
783   const char *natural_name () const override
784   { return "C"; }
785
786   /* See language.h.  */
787
788   const std::vector<const char *> &filename_extensions () const override
789   {
790     static const std::vector<const char *> extensions = { ".c" };
791     return extensions;
792   }
793
794   /* See language.h.  */
795   void language_arch_info (struct gdbarch *gdbarch,
796                            struct language_arch_info *lai) const override
797   {
798     c_language_arch_info (gdbarch, lai);
799   }
800
801   /* See language.h.  */
802   std::unique_ptr<compile_instance> get_compile_instance () const override
803   {
804     return c_get_compile_context ();
805   }
806
807   /* See language.h.  */
808   std::string compute_program (compile_instance *inst,
809                                const char *input,
810                                struct gdbarch *gdbarch,
811                                const struct block *expr_block,
812                                CORE_ADDR expr_pc) const override
813   {
814     return c_compute_program (inst, input, gdbarch, expr_block, expr_pc);
815   }
816
817   /* See language.h.  */
818
819   bool can_print_type_offsets () const override
820   {
821     return true;
822   }
823
824   /* See language.h.  */
825
826   void print_type (struct type *type, const char *varstring,
827                    struct ui_file *stream, int show, int level,
828                    const struct type_print_options *flags) const override
829   {
830     c_print_type (type, varstring, stream, show, level, la_language, flags);
831   }
832
833   /* See language.h.  */
834
835   bool store_sym_names_in_linkage_form_p () const override
836   { return true; }
837
838   /* See language.h.  */
839
840   enum macro_expansion macro_expansion () const override
841   { return macro_expansion_c; }
842 };
843
844 /* Single instance of the C language class.  */
845
846 static c_language c_language_defn;
847
848 /* A class for the C++ language.  */
849
850 class cplus_language : public language_defn
851 {
852 public:
853   cplus_language ()
854     : language_defn (language_cplus)
855   { /* Nothing.  */ }
856
857   /* See language.h.  */
858
859   const char *name () const override
860   { return "c++"; }
861
862   /* See language.h.  */
863
864   const char *natural_name () const override
865   { return "C++"; }
866
867   /* See language.h  */
868   const char *get_digit_separator () const override
869   { return "\'"; }
870
871   /* See language.h.  */
872
873   const std::vector<const char *> &filename_extensions () const override
874   {
875     static const std::vector<const char *> extensions
876       = { ".C", ".cc", ".cp", ".cpp", ".cxx", ".c++" };
877     return extensions;
878   }
879
880   /* See language.h.  */
881
882   struct language_pass_by_ref_info pass_by_reference_info
883         (struct type *type) const override
884   {
885     return cp_pass_by_reference (type);
886   }
887
888   /* See language.h.  */
889   void language_arch_info (struct gdbarch *gdbarch,
890                            struct language_arch_info *lai) const override
891   {
892     const struct builtin_type *builtin = builtin_type (gdbarch);
893
894     /* Helper function to allow shorter lines below.  */
895     auto add  = [&] (struct type * t)
896     {
897       lai->add_primitive_type (t);
898     };
899
900     add (builtin->builtin_int);
901     add (builtin->builtin_long);
902     add (builtin->builtin_short);
903     add (builtin->builtin_char);
904     add (builtin->builtin_float);
905     add (builtin->builtin_double);
906     add (builtin->builtin_void);
907     add (builtin->builtin_long_long);
908     add (builtin->builtin_signed_char);
909     add (builtin->builtin_unsigned_char);
910     add (builtin->builtin_unsigned_short);
911     add (builtin->builtin_unsigned_int);
912     add (builtin->builtin_unsigned_long);
913     add (builtin->builtin_unsigned_long_long);
914     add (builtin->builtin_long_double);
915     add (builtin->builtin_complex);
916     add (builtin->builtin_double_complex);
917     add (builtin->builtin_bool);
918     add (builtin->builtin_decfloat);
919     add (builtin->builtin_decdouble);
920     add (builtin->builtin_declong);
921     add (builtin->builtin_char16);
922     add (builtin->builtin_char32);
923     add (builtin->builtin_wchar);
924
925     lai->set_string_char_type (builtin->builtin_char);
926     lai->set_bool_type (builtin->builtin_bool, "bool");
927   }
928
929   /* See language.h.  */
930   struct type *lookup_transparent_type (const char *name) const override
931   {
932     return cp_lookup_transparent_type (name);
933   }
934
935   /* See language.h.  */
936   std::unique_ptr<compile_instance> get_compile_instance () const override
937   {
938     return cplus_get_compile_context ();
939   }
940
941   /* See language.h.  */
942   std::string compute_program (compile_instance *inst,
943                                const char *input,
944                                struct gdbarch *gdbarch,
945                                const struct block *expr_block,
946                                CORE_ADDR expr_pc) const override
947   {
948     return cplus_compute_program (inst, input, gdbarch, expr_block, expr_pc);
949   }
950
951   /* See language.h.  */
952   unsigned int search_name_hash (const char *name) const override
953   {
954     return cp_search_name_hash (name);
955   }
956
957   /* See language.h.  */
958   bool sniff_from_mangled_name
959        (const char *mangled,
960         gdb::unique_xmalloc_ptr<char> *demangled) const override
961   {
962     *demangled = gdb_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
963     return *demangled != NULL;
964   }
965
966   /* See language.h.  */
967
968   gdb::unique_xmalloc_ptr<char> demangle_symbol (const char *mangled,
969                                                  int options) const override
970   {
971     return gdb_demangle (mangled, options);
972   }
973
974   /* See language.h.  */
975
976   bool can_print_type_offsets () const override
977   {
978     return true;
979   }
980
981   /* See language.h.  */
982
983   void print_type (struct type *type, const char *varstring,
984                    struct ui_file *stream, int show, int level,
985                    const struct type_print_options *flags) const override
986   {
987     c_print_type (type, varstring, stream, show, level, la_language, flags);
988   }
989
990   /* See language.h.  */
991
992   CORE_ADDR skip_trampoline (frame_info_ptr fi,
993                              CORE_ADDR pc) const override
994   {
995     return cplus_skip_trampoline (fi, pc);
996   }
997
998   /* See language.h.  */
999
1000   char *class_name_from_physname (const char *physname) const override
1001   {
1002     return cp_class_name_from_physname (physname);
1003   }
1004
1005   /* See language.h.  */
1006
1007   struct block_symbol lookup_symbol_nonlocal
1008         (const char *name, const struct block *block,
1009          const domain_enum domain) const override
1010   {
1011     return cp_lookup_symbol_nonlocal (this, name, block, domain);
1012   }
1013
1014   /* See language.h.  */
1015
1016   const char *name_of_this () const override
1017   { return "this"; }
1018
1019   /* See language.h.  */
1020
1021   enum macro_expansion macro_expansion () const override
1022   { return macro_expansion_c; }
1023
1024   /* See language.h.  */
1025
1026   const struct lang_varobj_ops *varobj_ops () const override
1027   { return &cplus_varobj_ops; }
1028
1029 protected:
1030
1031   /* See language.h.  */
1032
1033   symbol_name_matcher_ftype *get_symbol_name_matcher_inner
1034         (const lookup_name_info &lookup_name) const override
1035   {
1036     return cp_get_symbol_name_matcher (lookup_name);
1037   }
1038 };
1039
1040 /* The single instance of the C++ language class.  */
1041
1042 static cplus_language cplus_language_defn;
1043
1044 /* A class for the ASM language.  */
1045
1046 class asm_language : public language_defn
1047 {
1048 public:
1049   asm_language ()
1050     : language_defn (language_asm)
1051   { /* Nothing.  */ }
1052
1053   /* See language.h.  */
1054
1055   const char *name () const override
1056   { return "asm"; }
1057
1058   /* See language.h.  */
1059
1060   const char *natural_name () const override
1061   { return "Assembly"; }
1062
1063   /* See language.h.  */
1064
1065   const std::vector<const char *> &filename_extensions () const override
1066   {
1067     static const std::vector<const char *> extensions
1068       = { ".s", ".sx", ".S" };
1069     return extensions;
1070   }
1071
1072   /* See language.h.
1073
1074      FIXME: Should this have its own arch info method?  */
1075   void language_arch_info (struct gdbarch *gdbarch,
1076                            struct language_arch_info *lai) const override
1077   {
1078     c_language_arch_info (gdbarch, lai);
1079   }
1080
1081   /* See language.h.  */
1082
1083   bool can_print_type_offsets () const override
1084   {
1085     return true;
1086   }
1087
1088   /* See language.h.  */
1089
1090   void print_type (struct type *type, const char *varstring,
1091                    struct ui_file *stream, int show, int level,
1092                    const struct type_print_options *flags) const override
1093   {
1094     c_print_type (type, varstring, stream, show, level, la_language, flags);
1095   }
1096
1097   /* See language.h.  */
1098
1099   bool store_sym_names_in_linkage_form_p () const override
1100   { return true; }
1101
1102   /* See language.h.  */
1103
1104   enum macro_expansion macro_expansion () const override
1105   { return macro_expansion_c; }
1106 };
1107
1108 /* The single instance of the ASM language class.  */
1109 static asm_language asm_language_defn;
1110
1111 /* A class for the minimal language.  This does not represent a real
1112    language.  It just provides a minimal support a-la-C that should allow
1113    users to do some simple operations when debugging applications that use
1114    a language currently not supported by GDB.  */
1115
1116 class minimal_language : public language_defn
1117 {
1118 public:
1119   minimal_language ()
1120     : language_defn (language_minimal)
1121   { /* Nothing.  */ }
1122
1123   /* See language.h.  */
1124
1125   const char *name () const override
1126   { return "minimal"; }
1127
1128   /* See language.h.  */
1129
1130   const char *natural_name () const override
1131   { return "Minimal"; }
1132
1133   /* See language.h.  */
1134   void language_arch_info (struct gdbarch *gdbarch,
1135                            struct language_arch_info *lai) const override
1136   {
1137     c_language_arch_info (gdbarch, lai);
1138   }
1139
1140   /* See language.h.  */
1141
1142   bool can_print_type_offsets () const override
1143   {
1144     return true;
1145   }
1146
1147   /* See language.h.  */
1148
1149   void print_type (struct type *type, const char *varstring,
1150                    struct ui_file *stream, int show, int level,
1151                    const struct type_print_options *flags) const override
1152   {
1153     c_print_type (type, varstring, stream, show, level, la_language, flags);
1154   }
1155
1156   /* See language.h.  */
1157
1158   bool store_sym_names_in_linkage_form_p () const override
1159   { return true; }
1160
1161   /* See language.h.  */
1162
1163   enum macro_expansion macro_expansion () const override
1164   { return macro_expansion_c; }
1165 };
1166
1167 /* The single instance of the minimal language class.  */
1168 static minimal_language minimal_language_defn;
This page took 0.096331 seconds and 4 git commands to generate.