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