1 /* C language support routines for GDB, the GNU debugger.
3 Copyright (C) 1992-2018 Free Software Foundation, Inc.
5 This file is part of GDB.
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.
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.
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/>. */
23 #include "expression.h"
24 #include "parser-defs.h"
29 #include "macroscope.h"
33 #include "cp-support.h"
34 #include "gdb_obstack.h"
38 /* Given a C string type, STR_TYPE, return the corresponding target
39 character set name. */
42 charset_for_string_type (c_string_type str_type, struct gdbarch *gdbarch)
44 switch (str_type & ~C_CHAR)
47 return target_charset (gdbarch);
49 return target_wide_charset (gdbarch);
51 /* FIXME: UTF-16 is not always correct. */
52 if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
57 /* FIXME: UTF-32 is not always correct. */
58 if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
63 internal_error (__FILE__, __LINE__, _("unhandled c_string_type"));
66 /* Classify ELTTYPE according to what kind of character it is. Return
67 the enum constant representing the character type. Also set
68 *ENCODING to the name of the character set to use when converting
69 characters of this type in target BYTE_ORDER to the host character
73 classify_type (struct type *elttype, struct gdbarch *gdbarch,
74 const char **encoding)
78 /* We loop because ELTTYPE may be a typedef, and we want to
79 successively peel each typedef until we reach a type we
80 understand. We don't use CHECK_TYPEDEF because that will strip
81 all typedefs at once -- but in C, wchar_t is itself a typedef, so
82 that would do the wrong thing. */
85 const char *name = TYPE_NAME (elttype);
87 if (TYPE_CODE (elttype) == TYPE_CODE_CHAR || !name)
93 if (!strcmp (name, "wchar_t"))
99 if (!strcmp (name, "char16_t"))
105 if (!strcmp (name, "char32_t"))
111 if (TYPE_CODE (elttype) != TYPE_CODE_TYPEDEF)
114 /* Call for side effects. */
115 check_typedef (elttype);
117 if (TYPE_TARGET_TYPE (elttype))
118 elttype = TYPE_TARGET_TYPE (elttype);
121 /* Perhaps check_typedef did not update the target type. In
122 this case, force the lookup again and hope it works out.
123 It never will for C, but it might for C++. */
124 elttype = check_typedef (elttype);
133 *encoding = charset_for_string_type (result, gdbarch);
138 /* Print the character C on STREAM as part of the contents of a
139 literal string whose delimiter is QUOTER. Note that that format
140 for printing characters and strings is language specific. */
143 c_emit_char (int c, struct type *type,
144 struct ui_file *stream, int quoter)
146 const char *encoding;
148 classify_type (type, get_type_arch (type), &encoding);
149 generic_emit_char (c, type, stream, quoter, encoding);
153 c_printchar (int c, struct type *type, struct ui_file *stream)
155 c_string_type str_type;
157 str_type = classify_type (type, get_type_arch (type), NULL);
163 fputc_filtered ('L', stream);
166 fputc_filtered ('u', stream);
169 fputc_filtered ('U', stream);
173 fputc_filtered ('\'', stream);
174 LA_EMIT_CHAR (c, type, stream, '\'');
175 fputc_filtered ('\'', stream);
178 /* Print the character string STRING, printing at most LENGTH
179 characters. LENGTH is -1 if the string is nul terminated. Each
180 character is WIDTH bytes long. Printing stops early if the number
181 hits print_max; repeat counts are printed as appropriate. Print
182 ellipses at the end if we had to stop before printing LENGTH
183 characters, or if FORCE_ELLIPSES. */
186 c_printstr (struct ui_file *stream, struct type *type,
187 const gdb_byte *string, unsigned int length,
188 const char *user_encoding, int force_ellipses,
189 const struct value_print_options *options)
191 c_string_type str_type;
192 const char *type_encoding;
193 const char *encoding;
195 str_type = (classify_type (type, get_type_arch (type), &type_encoding)
202 fputs_filtered ("L", stream);
205 fputs_filtered ("u", stream);
208 fputs_filtered ("U", stream);
212 encoding = (user_encoding && *user_encoding) ? user_encoding : type_encoding;
214 generic_printstr (stream, type, string, length, encoding, force_ellipses,
218 /* Obtain a C string from the inferior storing it in a newly allocated
219 buffer in BUFFER, which should be freed by the caller. If the in-
220 and out-parameter *LENGTH is specified at -1, the string is read
221 until a null character of the appropriate width is found, otherwise
222 the string is read to the length of characters specified. The size
223 of a character is determined by the length of the target type of
224 the pointer or array.
226 If VALUE is an array with a known length, and *LENGTH is -1,
227 the function will not read past the end of the array. However, any
228 declared size of the array is ignored if *LENGTH > 0.
230 On completion, *LENGTH will be set to the size of the string read in
231 characters. (If a length of -1 is specified, the length returned
232 will not include the null character). CHARSET is always set to the
236 c_get_string (struct value *value, gdb_byte **buffer,
237 int *length, struct type **char_type,
238 const char **charset)
241 unsigned int fetchlimit;
242 struct type *type = check_typedef (value_type (value));
243 struct type *element_type = TYPE_TARGET_TYPE (type);
244 int req_length = *length;
245 enum bfd_endian byte_order
246 = gdbarch_byte_order (get_type_arch (type));
248 if (element_type == NULL)
251 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
253 /* If we know the size of the array, we can use it as a limit on
254 the number of characters to be fetched. */
255 if (TYPE_NFIELDS (type) == 1
256 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_RANGE)
258 LONGEST low_bound, high_bound;
260 get_discrete_bounds (TYPE_FIELD_TYPE (type, 0),
261 &low_bound, &high_bound);
262 fetchlimit = high_bound - low_bound + 1;
265 fetchlimit = UINT_MAX;
267 else if (TYPE_CODE (type) == TYPE_CODE_PTR)
268 fetchlimit = UINT_MAX;
270 /* We work only with arrays and pointers. */
273 if (! c_textual_element_type (element_type, 0))
275 classify_type (element_type, get_type_arch (element_type), charset);
276 width = TYPE_LENGTH (element_type);
278 /* If the string lives in GDB's memory instead of the inferior's,
279 then we just need to copy it to BUFFER. Also, since such strings
280 are arrays with known size, FETCHLIMIT will hold the size of the
282 if ((VALUE_LVAL (value) == not_lval
283 || VALUE_LVAL (value) == lval_internalvar)
284 && fetchlimit != UINT_MAX)
287 const gdb_byte *contents = value_contents (value);
289 /* If a length is specified, use that. */
293 /* Otherwise, look for a null character. */
294 for (i = 0; i < fetchlimit; i++)
295 if (extract_unsigned_integer (contents + i * width,
296 width, byte_order) == 0)
299 /* I is now either a user-defined length, the number of non-null
300 characters, or FETCHLIMIT. */
302 *buffer = (gdb_byte *) xmalloc (*length);
303 memcpy (*buffer, contents, *length);
308 CORE_ADDR addr = value_as_address (value);
310 /* Prior to the fix for PR 16196 read_string would ignore fetchlimit
311 if length > 0. The old "broken" behaviour is the behaviour we want:
312 The caller may want to fetch 100 bytes from a variable length array
313 implemented using the common idiom of having an array of length 1 at
314 the end of a struct. In this case we want to ignore the declared
315 size of the array. However, it's counterintuitive to implement that
316 behaviour in read_string: what does fetchlimit otherwise mean if
317 length > 0. Therefore we implement the behaviour we want here:
318 If *length > 0, don't specify a fetchlimit. This preserves the
319 previous behaviour. We could move this check above where we know
320 whether the array is declared with a fixed size, but we only want
321 to apply this behaviour when calling read_string. PR 16286. */
323 fetchlimit = UINT_MAX;
325 err = read_string (addr, *length, width, fetchlimit,
326 byte_order, buffer, length);
330 memory_error (TARGET_XFER_E_IO, addr);
334 /* If the LENGTH is specified at -1, we want to return the string
335 length up to the terminating null character. If an actual length
336 was specified, we want to return the length of exactly what was
338 if (req_length == -1)
339 /* If the last character is null, subtract it from LENGTH. */
341 && extract_unsigned_integer (*buffer + *length - width,
342 width, byte_order) == 0)
345 /* The read_string function will return the number of bytes read.
346 If length returned from read_string was > 0, return the number of
347 characters read by dividing the number of bytes by width. */
349 *length = *length / width;
351 *char_type = element_type;
357 std::string type_str = type_to_string (type);
358 if (!type_str.empty ())
360 error (_("Trying to read string with inappropriate type `%s'."),
364 error (_("Trying to read string with inappropriate type."));
369 /* Evaluating C and C++ expressions. */
371 /* Convert a UCN. The digits of the UCN start at P and extend no
372 farther than LIMIT. DEST_CHARSET is the name of the character set
373 into which the UCN should be converted. The results are written to
374 OUTPUT. LENGTH is the maximum length of the UCN, either 4 or 8.
375 Returns a pointer to just after the final digit of the UCN. */
378 convert_ucn (char *p, char *limit, const char *dest_charset,
379 struct obstack *output, int length)
381 unsigned long result = 0;
385 for (i = 0; i < length && p < limit && isxdigit (*p); ++i, ++p)
386 result = (result << 4) + host_hex_value (*p);
388 for (i = 3; i >= 0; --i)
390 data[i] = result & 0xff;
394 convert_between_encodings ("UTF-32BE", dest_charset, data,
395 4, 4, output, translit_none);
400 /* Emit a character, VALUE, which was specified numerically, to
401 OUTPUT. TYPE is the target character type. */
404 emit_numeric_character (struct type *type, unsigned long value,
405 struct obstack *output)
409 buffer = (gdb_byte *) alloca (TYPE_LENGTH (type));
410 pack_long (buffer, type, value);
411 obstack_grow (output, buffer, TYPE_LENGTH (type));
414 /* Convert an octal escape sequence. TYPE is the target character
415 type. The digits of the escape sequence begin at P and extend no
416 farther than LIMIT. The result is written to OUTPUT. Returns a
417 pointer to just after the final digit of the escape sequence. */
420 convert_octal (struct type *type, char *p,
421 char *limit, struct obstack *output)
424 unsigned long value = 0;
427 i < 3 && p < limit && isdigit (*p) && *p != '8' && *p != '9';
430 value = 8 * value + host_hex_value (*p);
434 emit_numeric_character (type, value, output);
439 /* Convert a hex escape sequence. TYPE is the target character type.
440 The digits of the escape sequence begin at P and extend no farther
441 than LIMIT. The result is written to OUTPUT. Returns a pointer to
442 just after the final digit of the escape sequence. */
445 convert_hex (struct type *type, char *p,
446 char *limit, struct obstack *output)
448 unsigned long value = 0;
450 while (p < limit && isxdigit (*p))
452 value = 16 * value + host_hex_value (*p);
456 emit_numeric_character (type, value, output);
465 error (_("Malformed escape sequence")); \
468 /* Convert an escape sequence to a target format. TYPE is the target
469 character type to use, and DEST_CHARSET is the name of the target
470 character set. The backslash of the escape sequence is at *P, and
471 the escape sequence will not extend past LIMIT. The results are
472 written to OUTPUT. Returns a pointer to just past the final
473 character of the escape sequence. */
476 convert_escape (struct type *type, const char *dest_charset,
477 char *p, char *limit, struct obstack *output)
479 /* Skip the backslash. */
485 obstack_1grow (output, '\\');
492 error (_("\\x used with no following hex digits."));
493 p = convert_hex (type, p, limit, output);
504 p = convert_octal (type, p, limit, output);
510 int length = *p == 'u' ? 4 : 8;
514 error (_("\\u used with no following hex digits"));
515 p = convert_ucn (p, limit, dest_charset, output, length);
522 /* Given a single string from a (C-specific) OP_STRING list, convert
523 it to a target string, handling escape sequences specially. The
524 output is written to OUTPUT. DATA is the input string, which has
525 length LEN. DEST_CHARSET is the name of the target character set,
526 and TYPE is the type of target character to use. */
529 parse_one_string (struct obstack *output, char *data, int len,
530 const char *dest_charset, struct type *type)
540 /* Look for next escape, or the end of the input. */
541 while (p < limit && *p != '\\')
543 /* If we saw a run of characters, convert them all. */
545 convert_between_encodings (host_charset (), dest_charset,
546 (gdb_byte *) data, p - data, 1,
547 output, translit_none);
548 /* If we saw an escape, convert it. */
550 p = convert_escape (type, dest_charset, p, limit, output);
555 /* Expression evaluator for the C language family. Most operations
556 are delegated to evaluate_subexp_standard; see that function for a
557 description of the arguments. */
560 evaluate_subexp_c (struct type *expect_type, struct expression *exp,
561 int *pos, enum noside noside)
563 enum exp_opcode op = exp->elts[*pos].opcode;
571 struct value *result;
572 c_string_type dest_type;
573 const char *dest_charset;
574 int satisfy_expected = 0;
579 oplen = longest_to_int (exp->elts[*pos].longconst);
582 limit = *pos + BYTES_TO_EXP_ELEM (oplen + 1);
583 dest_type = ((enum c_string_type_values)
584 longest_to_int (exp->elts[*pos].longconst));
585 switch (dest_type & ~C_CHAR)
588 type = language_string_char_type (exp->language_defn,
592 type = lookup_typename (exp->language_defn, exp->gdbarch,
596 type = lookup_typename (exp->language_defn, exp->gdbarch,
597 "char16_t", NULL, 0);
600 type = lookup_typename (exp->language_defn, exp->gdbarch,
601 "char32_t", NULL, 0);
604 internal_error (__FILE__, __LINE__, _("unhandled c_string_type"));
607 /* Ensure TYPE_LENGTH is valid for TYPE. */
608 check_typedef (type);
610 /* If the caller expects an array of some integral type,
611 satisfy them. If something odder is expected, rely on the
613 if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_ARRAY)
615 struct type *element_type
616 = check_typedef (TYPE_TARGET_TYPE (expect_type));
618 if (TYPE_CODE (element_type) == TYPE_CODE_INT
619 || TYPE_CODE (element_type) == TYPE_CODE_CHAR)
622 satisfy_expected = 1;
626 dest_charset = charset_for_string_type (dest_type, exp->gdbarch);
633 len = longest_to_int (exp->elts[*pos].longconst);
636 if (noside != EVAL_SKIP)
637 parse_one_string (&output, &exp->elts[*pos].string, len,
639 *pos += BYTES_TO_EXP_ELEM (len);
642 /* Skip the trailing length and opcode. */
645 if (noside == EVAL_SKIP)
647 /* Return a dummy value of the appropriate type. */
648 if (expect_type != NULL)
649 result = allocate_value (expect_type);
650 else if ((dest_type & C_CHAR) != 0)
651 result = allocate_value (type);
653 result = value_cstring ("", 0, type);
657 if ((dest_type & C_CHAR) != 0)
661 if (obstack_object_size (&output) != TYPE_LENGTH (type))
662 error (_("Could not convert character "
663 "constant to target character set"));
664 value = unpack_long (type, (gdb_byte *) obstack_base (&output));
665 result = value_from_longest (type, value);
671 /* Write the terminating character. */
672 for (i = 0; i < TYPE_LENGTH (type); ++i)
673 obstack_1grow (&output, 0);
675 if (satisfy_expected)
677 LONGEST low_bound, high_bound;
678 int element_size = TYPE_LENGTH (type);
680 if (get_discrete_bounds (TYPE_INDEX_TYPE (expect_type),
681 &low_bound, &high_bound) < 0)
684 high_bound = (TYPE_LENGTH (expect_type) / element_size) - 1;
686 if (obstack_object_size (&output) / element_size
687 > (high_bound - low_bound + 1))
688 error (_("Too many array elements"));
690 result = allocate_value (expect_type);
691 memcpy (value_contents_raw (result), obstack_base (&output),
692 obstack_object_size (&output));
695 result = value_cstring ((const char *) obstack_base (&output),
696 obstack_object_size (&output),
706 return evaluate_subexp_standard (expect_type, exp, pos, noside);
709 /* la_watch_location_expression for C. */
711 gdb::unique_xmalloc_ptr<char>
712 c_watch_location_expression (struct type *type, CORE_ADDR addr)
714 type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
715 std::string name = type_to_string (type);
716 return gdb::unique_xmalloc_ptr<char>
717 (xstrprintf ("* (%s *) %s", name.c_str (), core_addr_to_string (addr)));
721 /* Table mapping opcodes into strings for printing operators
722 and precedences of the operators. */
724 const struct op_print c_op_print_tab[] =
726 {",", BINOP_COMMA, PREC_COMMA, 0},
727 {"=", BINOP_ASSIGN, PREC_ASSIGN, 1},
728 {"||", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
729 {"&&", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
730 {"|", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
731 {"^", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
732 {"&", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
733 {"==", BINOP_EQUAL, PREC_EQUAL, 0},
734 {"!=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
735 {"<=", BINOP_LEQ, PREC_ORDER, 0},
736 {">=", BINOP_GEQ, PREC_ORDER, 0},
737 {">", BINOP_GTR, PREC_ORDER, 0},
738 {"<", BINOP_LESS, PREC_ORDER, 0},
739 {">>", BINOP_RSH, PREC_SHIFT, 0},
740 {"<<", BINOP_LSH, PREC_SHIFT, 0},
741 {"+", BINOP_ADD, PREC_ADD, 0},
742 {"-", BINOP_SUB, PREC_ADD, 0},
743 {"*", BINOP_MUL, PREC_MUL, 0},
744 {"/", BINOP_DIV, PREC_MUL, 0},
745 {"%", BINOP_REM, PREC_MUL, 0},
746 {"@", BINOP_REPEAT, PREC_REPEAT, 0},
747 {"+", UNOP_PLUS, PREC_PREFIX, 0},
748 {"-", UNOP_NEG, PREC_PREFIX, 0},
749 {"!", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
750 {"~", UNOP_COMPLEMENT, PREC_PREFIX, 0},
751 {"*", UNOP_IND, PREC_PREFIX, 0},
752 {"&", UNOP_ADDR, PREC_PREFIX, 0},
753 {"sizeof ", UNOP_SIZEOF, PREC_PREFIX, 0},
754 {"alignof ", UNOP_ALIGNOF, PREC_PREFIX, 0},
755 {"++", UNOP_PREINCREMENT, PREC_PREFIX, 0},
756 {"--", UNOP_PREDECREMENT, PREC_PREFIX, 0},
757 {NULL, OP_NULL, PREC_PREFIX, 0}
760 enum c_primitive_types {
761 c_primitive_type_int,
762 c_primitive_type_long,
763 c_primitive_type_short,
764 c_primitive_type_char,
765 c_primitive_type_float,
766 c_primitive_type_double,
767 c_primitive_type_void,
768 c_primitive_type_long_long,
769 c_primitive_type_signed_char,
770 c_primitive_type_unsigned_char,
771 c_primitive_type_unsigned_short,
772 c_primitive_type_unsigned_int,
773 c_primitive_type_unsigned_long,
774 c_primitive_type_unsigned_long_long,
775 c_primitive_type_long_double,
776 c_primitive_type_complex,
777 c_primitive_type_double_complex,
778 c_primitive_type_decfloat,
779 c_primitive_type_decdouble,
780 c_primitive_type_declong,
785 c_language_arch_info (struct gdbarch *gdbarch,
786 struct language_arch_info *lai)
788 const struct builtin_type *builtin = builtin_type (gdbarch);
790 lai->string_char_type = builtin->builtin_char;
791 lai->primitive_type_vector
792 = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_c_primitive_types + 1,
794 lai->primitive_type_vector [c_primitive_type_int] = builtin->builtin_int;
795 lai->primitive_type_vector [c_primitive_type_long] = builtin->builtin_long;
796 lai->primitive_type_vector [c_primitive_type_short] = builtin->builtin_short;
797 lai->primitive_type_vector [c_primitive_type_char] = builtin->builtin_char;
798 lai->primitive_type_vector [c_primitive_type_float] = builtin->builtin_float;
799 lai->primitive_type_vector [c_primitive_type_double] = builtin->builtin_double;
800 lai->primitive_type_vector [c_primitive_type_void] = builtin->builtin_void;
801 lai->primitive_type_vector [c_primitive_type_long_long] = builtin->builtin_long_long;
802 lai->primitive_type_vector [c_primitive_type_signed_char] = builtin->builtin_signed_char;
803 lai->primitive_type_vector [c_primitive_type_unsigned_char] = builtin->builtin_unsigned_char;
804 lai->primitive_type_vector [c_primitive_type_unsigned_short] = builtin->builtin_unsigned_short;
805 lai->primitive_type_vector [c_primitive_type_unsigned_int] = builtin->builtin_unsigned_int;
806 lai->primitive_type_vector [c_primitive_type_unsigned_long] = builtin->builtin_unsigned_long;
807 lai->primitive_type_vector [c_primitive_type_unsigned_long_long] = builtin->builtin_unsigned_long_long;
808 lai->primitive_type_vector [c_primitive_type_long_double] = builtin->builtin_long_double;
809 lai->primitive_type_vector [c_primitive_type_complex] = builtin->builtin_complex;
810 lai->primitive_type_vector [c_primitive_type_double_complex] = builtin->builtin_double_complex;
811 lai->primitive_type_vector [c_primitive_type_decfloat] = builtin->builtin_decfloat;
812 lai->primitive_type_vector [c_primitive_type_decdouble] = builtin->builtin_decdouble;
813 lai->primitive_type_vector [c_primitive_type_declong] = builtin->builtin_declong;
815 lai->bool_type_default = builtin->builtin_int;
818 const struct exp_descriptor exp_descriptor_c =
820 print_subexp_standard,
821 operator_length_standard,
822 operator_check_standard,
824 dump_subexp_body_standard,
828 static const char *c_extensions[] =
833 extern const struct language_defn c_language_defn =
835 "c", /* Language name */
847 c_printchar, /* Print a character constant */
848 c_printstr, /* Function to print string constant */
849 c_emit_char, /* Print a single char */
850 c_print_type, /* Print a type using appropriate syntax */
851 c_print_typedef, /* Print a typedef using appropriate syntax */
852 c_val_print, /* Print a value using appropriate syntax */
853 c_value_print, /* Print a top-level value */
854 default_read_var_value, /* la_read_var_value */
855 NULL, /* Language specific skip_trampoline */
856 NULL, /* name_of_this */
857 true, /* la_store_sym_names_in_linkage_form_p */
858 basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
859 basic_lookup_transparent_type,/* lookup_transparent_type */
860 NULL, /* Language specific symbol demangler */
862 NULL, /* Language specific
863 class_name_from_physname */
864 c_op_print_tab, /* expression operators for printing */
865 1, /* c-style arrays */
866 0, /* String lower bound */
867 default_word_break_characters,
868 default_collect_symbol_completion_matches,
869 c_language_arch_info,
870 default_print_array_index,
871 default_pass_by_reference,
873 c_watch_location_expression,
874 NULL, /* la_get_symbol_name_matcher */
875 iterate_over_symbols,
876 default_search_name_hash,
878 c_get_compile_context,
883 enum cplus_primitive_types {
884 cplus_primitive_type_int,
885 cplus_primitive_type_long,
886 cplus_primitive_type_short,
887 cplus_primitive_type_char,
888 cplus_primitive_type_float,
889 cplus_primitive_type_double,
890 cplus_primitive_type_void,
891 cplus_primitive_type_long_long,
892 cplus_primitive_type_signed_char,
893 cplus_primitive_type_unsigned_char,
894 cplus_primitive_type_unsigned_short,
895 cplus_primitive_type_unsigned_int,
896 cplus_primitive_type_unsigned_long,
897 cplus_primitive_type_unsigned_long_long,
898 cplus_primitive_type_long_double,
899 cplus_primitive_type_complex,
900 cplus_primitive_type_double_complex,
901 cplus_primitive_type_bool,
902 cplus_primitive_type_decfloat,
903 cplus_primitive_type_decdouble,
904 cplus_primitive_type_declong,
905 cplus_primitive_type_char16_t,
906 cplus_primitive_type_char32_t,
907 cplus_primitive_type_wchar_t,
908 nr_cplus_primitive_types
912 cplus_language_arch_info (struct gdbarch *gdbarch,
913 struct language_arch_info *lai)
915 const struct builtin_type *builtin = builtin_type (gdbarch);
917 lai->string_char_type = builtin->builtin_char;
918 lai->primitive_type_vector
919 = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_cplus_primitive_types + 1,
921 lai->primitive_type_vector [cplus_primitive_type_int]
922 = builtin->builtin_int;
923 lai->primitive_type_vector [cplus_primitive_type_long]
924 = builtin->builtin_long;
925 lai->primitive_type_vector [cplus_primitive_type_short]
926 = builtin->builtin_short;
927 lai->primitive_type_vector [cplus_primitive_type_char]
928 = builtin->builtin_char;
929 lai->primitive_type_vector [cplus_primitive_type_float]
930 = builtin->builtin_float;
931 lai->primitive_type_vector [cplus_primitive_type_double]
932 = builtin->builtin_double;
933 lai->primitive_type_vector [cplus_primitive_type_void]
934 = builtin->builtin_void;
935 lai->primitive_type_vector [cplus_primitive_type_long_long]
936 = builtin->builtin_long_long;
937 lai->primitive_type_vector [cplus_primitive_type_signed_char]
938 = builtin->builtin_signed_char;
939 lai->primitive_type_vector [cplus_primitive_type_unsigned_char]
940 = builtin->builtin_unsigned_char;
941 lai->primitive_type_vector [cplus_primitive_type_unsigned_short]
942 = builtin->builtin_unsigned_short;
943 lai->primitive_type_vector [cplus_primitive_type_unsigned_int]
944 = builtin->builtin_unsigned_int;
945 lai->primitive_type_vector [cplus_primitive_type_unsigned_long]
946 = builtin->builtin_unsigned_long;
947 lai->primitive_type_vector [cplus_primitive_type_unsigned_long_long]
948 = builtin->builtin_unsigned_long_long;
949 lai->primitive_type_vector [cplus_primitive_type_long_double]
950 = builtin->builtin_long_double;
951 lai->primitive_type_vector [cplus_primitive_type_complex]
952 = builtin->builtin_complex;
953 lai->primitive_type_vector [cplus_primitive_type_double_complex]
954 = builtin->builtin_double_complex;
955 lai->primitive_type_vector [cplus_primitive_type_bool]
956 = builtin->builtin_bool;
957 lai->primitive_type_vector [cplus_primitive_type_decfloat]
958 = builtin->builtin_decfloat;
959 lai->primitive_type_vector [cplus_primitive_type_decdouble]
960 = builtin->builtin_decdouble;
961 lai->primitive_type_vector [cplus_primitive_type_declong]
962 = builtin->builtin_declong;
963 lai->primitive_type_vector [cplus_primitive_type_char16_t]
964 = builtin->builtin_char16;
965 lai->primitive_type_vector [cplus_primitive_type_char32_t]
966 = builtin->builtin_char32;
967 lai->primitive_type_vector [cplus_primitive_type_wchar_t]
968 = builtin->builtin_wchar;
970 lai->bool_type_symbol = "bool";
971 lai->bool_type_default = builtin->builtin_bool;
974 static const char *cplus_extensions[] =
976 ".C", ".cc", ".cp", ".cpp", ".cxx", ".c++", NULL
979 extern const struct language_defn cplus_language_defn =
981 "c++", /* Language name */
993 c_printchar, /* Print a character constant */
994 c_printstr, /* Function to print string constant */
995 c_emit_char, /* Print a single char */
996 c_print_type, /* Print a type using appropriate syntax */
997 c_print_typedef, /* Print a typedef using appropriate syntax */
998 c_val_print, /* Print a value using appropriate syntax */
999 c_value_print, /* Print a top-level value */
1000 default_read_var_value, /* la_read_var_value */
1001 cplus_skip_trampoline, /* Language specific skip_trampoline */
1002 "this", /* name_of_this */
1003 false, /* la_store_sym_names_in_linkage_form_p */
1004 cp_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
1005 cp_lookup_transparent_type, /* lookup_transparent_type */
1006 gdb_demangle, /* Language specific symbol demangler */
1007 gdb_sniff_from_mangled_name,
1008 cp_class_name_from_physname, /* Language specific
1009 class_name_from_physname */
1010 c_op_print_tab, /* expression operators for printing */
1011 1, /* c-style arrays */
1012 0, /* String lower bound */
1013 default_word_break_characters,
1014 default_collect_symbol_completion_matches,
1015 cplus_language_arch_info,
1016 default_print_array_index,
1017 cp_pass_by_reference,
1019 c_watch_location_expression,
1020 cp_get_symbol_name_matcher,
1021 iterate_over_symbols,
1022 cp_search_name_hash,
1029 static const char *asm_extensions[] =
1031 ".s", ".sx", ".S", NULL
1034 extern const struct language_defn asm_language_defn =
1036 "asm", /* Language name */
1048 c_printchar, /* Print a character constant */
1049 c_printstr, /* Function to print string constant */
1050 c_emit_char, /* Print a single char */
1051 c_print_type, /* Print a type using appropriate syntax */
1052 c_print_typedef, /* Print a typedef using appropriate syntax */
1053 c_val_print, /* Print a value using appropriate syntax */
1054 c_value_print, /* Print a top-level value */
1055 default_read_var_value, /* la_read_var_value */
1056 NULL, /* Language specific skip_trampoline */
1057 NULL, /* name_of_this */
1058 true, /* la_store_sym_names_in_linkage_form_p */
1059 basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
1060 basic_lookup_transparent_type,/* lookup_transparent_type */
1061 NULL, /* Language specific symbol demangler */
1063 NULL, /* Language specific
1064 class_name_from_physname */
1065 c_op_print_tab, /* expression operators for printing */
1066 1, /* c-style arrays */
1067 0, /* String lower bound */
1068 default_word_break_characters,
1069 default_collect_symbol_completion_matches,
1070 c_language_arch_info, /* FIXME: la_language_arch_info. */
1071 default_print_array_index,
1072 default_pass_by_reference,
1074 c_watch_location_expression,
1075 NULL, /* la_get_symbol_name_matcher */
1076 iterate_over_symbols,
1077 default_search_name_hash,
1078 &default_varobj_ops,
1084 /* The following language_defn does not represent a real language.
1085 It just provides a minimal support a-la-C that should allow users
1086 to do some simple operations when debugging applications that use
1087 a language currently not supported by GDB. */
1089 extern const struct language_defn minimal_language_defn =
1091 "minimal", /* Language name */
1103 c_printchar, /* Print a character constant */
1104 c_printstr, /* Function to print string constant */
1105 c_emit_char, /* Print a single char */
1106 c_print_type, /* Print a type using appropriate syntax */
1107 c_print_typedef, /* Print a typedef using appropriate syntax */
1108 c_val_print, /* Print a value using appropriate syntax */
1109 c_value_print, /* Print a top-level value */
1110 default_read_var_value, /* la_read_var_value */
1111 NULL, /* Language specific skip_trampoline */
1112 NULL, /* name_of_this */
1113 true, /* la_store_sym_names_in_linkage_form_p */
1114 basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
1115 basic_lookup_transparent_type,/* lookup_transparent_type */
1116 NULL, /* Language specific symbol demangler */
1118 NULL, /* Language specific
1119 class_name_from_physname */
1120 c_op_print_tab, /* expression operators for printing */
1121 1, /* c-style arrays */
1122 0, /* String lower bound */
1123 default_word_break_characters,
1124 default_collect_symbol_completion_matches,
1125 c_language_arch_info,
1126 default_print_array_index,
1127 default_pass_by_reference,
1129 c_watch_location_expression,
1130 NULL, /* la_get_symbol_name_matcher */
1131 iterate_over_symbols,
1132 default_search_name_hash,
1133 &default_varobj_ops,