Allow integer immediate for VFP vmov instructions.
[deliverable/binutils-gdb.git] / gdb / c-lang.c
CommitLineData
c906108c 1/* C language support routines for GDB, the GNU debugger.
ce27fb25 2
e2882c85 3 Copyright (C) 1992-2018 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"
21#include "symtab.h"
22#include "gdbtypes.h"
23#include "expression.h"
24#include "parser-defs.h"
25#include "language.h"
a53b64ea 26#include "varobj.h"
c906108c 27#include "c-lang.h"
745b8ca0 28#include "valprint.h"
84f0252a 29#include "macroscope.h"
234b45d4 30#include "charset.h"
9a3d7dfd 31#include "demangle.h"
b18be20d 32#include "cp-abi.h"
1fcb5155 33#include "cp-support.h"
6c7a06a3
TT
34#include "gdb_obstack.h"
35#include <ctype.h>
578d3588 36#include "gdbcore.h"
c906108c 37
6c7a06a3
TT
38/* Given a C string type, STR_TYPE, return the corresponding target
39 character set name. */
40
41static const char *
0c801b96 42charset_for_string_type (c_string_type str_type, struct gdbarch *gdbarch)
6c7a06a3
TT
43{
44 switch (str_type & ~C_CHAR)
45 {
46 case C_STRING:
f870a310 47 return target_charset (gdbarch);
6c7a06a3 48 case C_WIDE_STRING:
f870a310 49 return target_wide_charset (gdbarch);
6c7a06a3 50 case C_STRING_16:
b8899f2b 51 /* FIXME: UTF-16 is not always correct. */
f870a310 52 if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
b8899f2b 53 return "UTF-16BE";
6c7a06a3 54 else
b8899f2b 55 return "UTF-16LE";
6c7a06a3 56 case C_STRING_32:
b8899f2b 57 /* FIXME: UTF-32 is not always correct. */
f870a310 58 if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
b8899f2b 59 return "UTF-32BE";
6c7a06a3 60 else
b8899f2b 61 return "UTF-32LE";
6c7a06a3 62 }
9b20d036 63 internal_error (__FILE__, __LINE__, _("unhandled c_string_type"));
6c7a06a3
TT
64}
65
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
aff410f1
MS
69 characters of this type in target BYTE_ORDER to the host character
70 set. */
6c7a06a3 71
0c801b96 72static c_string_type
f870a310 73classify_type (struct type *elttype, struct gdbarch *gdbarch,
e17a4113 74 const char **encoding)
6c7a06a3 75{
0c801b96 76 c_string_type result;
6c7a06a3 77
85e306ed
TT
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. */
83 while (elttype)
6c7a06a3 84 {
0d5cff50 85 const char *name = TYPE_NAME (elttype);
6c7a06a3
TT
86
87 if (TYPE_CODE (elttype) == TYPE_CODE_CHAR || !name)
88 {
89 result = C_CHAR;
90 goto done;
91 }
92
93 if (!strcmp (name, "wchar_t"))
94 {
95 result = C_WIDE_CHAR;
96 goto done;
97 }
98
99 if (!strcmp (name, "char16_t"))
100 {
101 result = C_CHAR_16;
102 goto done;
103 }
104
105 if (!strcmp (name, "char32_t"))
106 {
107 result = C_CHAR_32;
108 goto done;
109 }
110
85e306ed
TT
111 if (TYPE_CODE (elttype) != TYPE_CODE_TYPEDEF)
112 break;
113
114 /* Call for side effects. */
115 check_typedef (elttype);
116
117 if (TYPE_TARGET_TYPE (elttype))
118 elttype = TYPE_TARGET_TYPE (elttype);
119 else
120 {
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++. */
f168693b 124 elttype = check_typedef (elttype);
85e306ed 125 }
6c7a06a3 126 }
6c7a06a3
TT
127
128 /* Punt. */
129 result = C_CHAR;
130
131 done:
e17a4113 132 if (encoding)
f870a310 133 *encoding = charset_for_string_type (result, gdbarch);
e17a4113 134
6c7a06a3
TT
135 return result;
136}
137
aff410f1
MS
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. */
c906108c 141
6aecb9c2
JB
142void
143c_emit_char (int c, struct type *type,
144 struct ui_file *stream, int quoter)
c906108c 145{
6c7a06a3 146 const char *encoding;
234b45d4 147
f870a310 148 classify_type (type, get_type_arch (type), &encoding);
3b2b8fea 149 generic_emit_char (c, type, stream, quoter, encoding);
c906108c
SS
150}
151
152void
6c7a06a3 153c_printchar (int c, struct type *type, struct ui_file *stream)
c906108c 154{
0c801b96 155 c_string_type str_type;
6c7a06a3 156
f870a310 157 str_type = classify_type (type, get_type_arch (type), NULL);
6c7a06a3
TT
158 switch (str_type)
159 {
160 case C_CHAR:
161 break;
162 case C_WIDE_CHAR:
163 fputc_filtered ('L', stream);
164 break;
165 case C_CHAR_16:
166 fputc_filtered ('u', stream);
167 break;
168 case C_CHAR_32:
169 fputc_filtered ('U', stream);
170 break;
171 }
172
c906108c 173 fputc_filtered ('\'', stream);
6c7a06a3 174 LA_EMIT_CHAR (c, type, stream, '\'');
c906108c
SS
175 fputc_filtered ('\'', stream);
176}
177
aff410f1
MS
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. */
c906108c
SS
184
185void
aff410f1
MS
186c_printstr (struct ui_file *stream, struct type *type,
187 const gdb_byte *string, unsigned int length,
188 const char *user_encoding, int force_ellipses,
79a45b7d 189 const struct value_print_options *options)
c906108c 190{
0c801b96 191 c_string_type str_type;
3b2b8fea
TT
192 const char *type_encoding;
193 const char *encoding;
194
f870a310
TT
195 str_type = (classify_type (type, get_type_arch (type), &type_encoding)
196 & ~C_CHAR);
6c7a06a3
TT
197 switch (str_type)
198 {
199 case C_STRING:
200 break;
201 case C_WIDE_STRING:
202 fputs_filtered ("L", stream);
203 break;
204 case C_STRING_16:
205 fputs_filtered ("u", stream);
206 break;
207 case C_STRING_32:
208 fputs_filtered ("U", stream);
209 break;
210 }
211
3b2b8fea 212 encoding = (user_encoding && *user_encoding) ? user_encoding : type_encoding;
6c7a06a3 213
3b2b8fea
TT
214 generic_printstr (stream, type, string, length, encoding, force_ellipses,
215 '"', 1, options);
c906108c 216}
ae6a3a4c
TJB
217
218/* Obtain a C string from the inferior storing it in a newly allocated
aff410f1
MS
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
fbb8f299 221 until a null character of the appropriate width is found, otherwise
aff410f1
MS
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
0987cf35
DE
224 the pointer or array.
225
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.
229
230 On completion, *LENGTH will be set to the size of the string read in
fbb8f299
PM
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
233 target charset. */
ae6a3a4c
TJB
234
235void
aff410f1
MS
236c_get_string (struct value *value, gdb_byte **buffer,
237 int *length, struct type **char_type,
238 const char **charset)
ae6a3a4c
TJB
239{
240 int err, width;
241 unsigned int fetchlimit;
242 struct type *type = check_typedef (value_type (value));
243 struct type *element_type = TYPE_TARGET_TYPE (type);
fbb8f299 244 int req_length = *length;
aff410f1
MS
245 enum bfd_endian byte_order
246 = gdbarch_byte_order (get_type_arch (type));
ae6a3a4c
TJB
247
248 if (element_type == NULL)
249 goto error;
250
251 if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
252 {
aff410f1
MS
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. */
ae6a3a4c
TJB
255 if (TYPE_NFIELDS (type) == 1
256 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_RANGE)
257 {
258 LONGEST low_bound, high_bound;
259
260 get_discrete_bounds (TYPE_FIELD_TYPE (type, 0),
261 &low_bound, &high_bound);
262 fetchlimit = high_bound - low_bound + 1;
263 }
264 else
265 fetchlimit = UINT_MAX;
266 }
267 else if (TYPE_CODE (type) == TYPE_CODE_PTR)
268 fetchlimit = UINT_MAX;
269 else
270 /* We work only with arrays and pointers. */
271 goto error;
272
96c07c5b 273 if (! c_textual_element_type (element_type, 0))
ae6a3a4c 274 goto error;
df54f8eb 275 classify_type (element_type, get_type_arch (element_type), charset);
ae6a3a4c
TJB
276 width = TYPE_LENGTH (element_type);
277
aff410f1
MS
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
281 array. */
ae6a3a4c
TJB
282 if ((VALUE_LVAL (value) == not_lval
283 || VALUE_LVAL (value) == lval_internalvar)
284 && fetchlimit != UINT_MAX)
285 {
286 int i;
287 const gdb_byte *contents = value_contents (value);
288
fbb8f299
PM
289 /* If a length is specified, use that. */
290 if (*length >= 0)
291 i = *length;
292 else
293 /* Otherwise, look for a null character. */
294 for (i = 0; i < fetchlimit; i++)
aff410f1
MS
295 if (extract_unsigned_integer (contents + i * width,
296 width, byte_order) == 0)
fbb8f299
PM
297 break;
298
299 /* I is now either a user-defined length, the number of non-null
300 characters, or FETCHLIMIT. */
ae6a3a4c 301 *length = i * width;
224c3ddb 302 *buffer = (gdb_byte *) xmalloc (*length);
ae6a3a4c
TJB
303 memcpy (*buffer, contents, *length);
304 err = 0;
305 }
306 else
307 {
621c8364
TT
308 CORE_ADDR addr = value_as_address (value);
309
0987cf35
DE
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. */
322 if (*length > 0)
323 fetchlimit = UINT_MAX;
324
621c8364
TT
325 err = read_string (addr, *length, width, fetchlimit,
326 byte_order, buffer, length);
d09f2c3f 327 if (err != 0)
ae6a3a4c 328 {
8ea5dfdf 329 xfree (*buffer);
d09f2c3f 330 memory_error (TARGET_XFER_E_IO, addr);
ae6a3a4c
TJB
331 }
332 }
333
fbb8f299
PM
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
337 read. */
338 if (req_length == -1)
339 /* If the last character is null, subtract it from LENGTH. */
340 if (*length > 0
aff410f1
MS
341 && extract_unsigned_integer (*buffer + *length - width,
342 width, byte_order) == 0)
fbb8f299
PM
343 *length -= width;
344
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. */
348 if (*length != 0)
349 *length = *length / width;
ae6a3a4c 350
96c07c5b 351 *char_type = element_type;
ae6a3a4c
TJB
352
353 return;
354
355 error:
356 {
2f408ecb
PA
357 std::string type_str = type_to_string (type);
358 if (!type_str.empty ())
ae6a3a4c 359 {
ae6a3a4c 360 error (_("Trying to read string with inappropriate type `%s'."),
2f408ecb 361 type_str.c_str ());
ae6a3a4c
TJB
362 }
363 else
364 error (_("Trying to read string with inappropriate type."));
365 }
366}
367
c906108c 368\f
6c7a06a3
TT
369/* Evaluating C and C++ expressions. */
370
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. */
376
377static char *
378convert_ucn (char *p, char *limit, const char *dest_charset,
379 struct obstack *output, int length)
380{
381 unsigned long result = 0;
382 gdb_byte data[4];
383 int i;
384
385 for (i = 0; i < length && p < limit && isxdigit (*p); ++i, ++p)
386 result = (result << 4) + host_hex_value (*p);
387
388 for (i = 3; i >= 0; --i)
389 {
390 data[i] = result & 0xff;
391 result >>= 8;
392 }
393
aff410f1
MS
394 convert_between_encodings ("UTF-32BE", dest_charset, data,
395 4, 4, output, translit_none);
6c7a06a3
TT
396
397 return p;
398}
399
400/* Emit a character, VALUE, which was specified numerically, to
401 OUTPUT. TYPE is the target character type. */
402
403static void
404emit_numeric_character (struct type *type, unsigned long value,
405 struct obstack *output)
406{
407 gdb_byte *buffer;
408
224c3ddb 409 buffer = (gdb_byte *) alloca (TYPE_LENGTH (type));
6c7a06a3
TT
410 pack_long (buffer, type, value);
411 obstack_grow (output, buffer, TYPE_LENGTH (type));
412}
413
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. */
418
419static char *
aff410f1
MS
420convert_octal (struct type *type, char *p,
421 char *limit, struct obstack *output)
6c7a06a3 422{
30b66ecc 423 int i;
6c7a06a3
TT
424 unsigned long value = 0;
425
30b66ecc
TT
426 for (i = 0;
427 i < 3 && p < limit && isdigit (*p) && *p != '8' && *p != '9';
428 ++i)
6c7a06a3
TT
429 {
430 value = 8 * value + host_hex_value (*p);
431 ++p;
432 }
433
434 emit_numeric_character (type, value, output);
435
436 return p;
437}
438
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. */
443
444static char *
aff410f1
MS
445convert_hex (struct type *type, char *p,
446 char *limit, struct obstack *output)
6c7a06a3
TT
447{
448 unsigned long value = 0;
449
450 while (p < limit && isxdigit (*p))
451 {
452 value = 16 * value + host_hex_value (*p);
453 ++p;
454 }
455
456 emit_numeric_character (type, value, output);
457
458 return p;
459}
460
461#define ADVANCE \
462 do { \
463 ++p; \
464 if (p == limit) \
465 error (_("Malformed escape sequence")); \
466 } while (0)
467
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. */
474
475static char *
476convert_escape (struct type *type, const char *dest_charset,
477 char *p, char *limit, struct obstack *output)
478{
479 /* Skip the backslash. */
480 ADVANCE;
481
482 switch (*p)
483 {
484 case '\\':
485 obstack_1grow (output, '\\');
486 ++p;
487 break;
488
489 case 'x':
490 ADVANCE;
491 if (!isxdigit (*p))
492 error (_("\\x used with no following hex digits."));
493 p = convert_hex (type, p, limit, output);
494 break;
495
496 case '0':
497 case '1':
498 case '2':
499 case '3':
500 case '4':
501 case '5':
502 case '6':
503 case '7':
504 p = convert_octal (type, p, limit, output);
505 break;
506
507 case 'u':
508 case 'U':
509 {
510 int length = *p == 'u' ? 4 : 8;
c5504eaf 511
6c7a06a3
TT
512 ADVANCE;
513 if (!isxdigit (*p))
514 error (_("\\u used with no following hex digits"));
515 p = convert_ucn (p, limit, dest_charset, output, length);
516 }
517 }
518
519 return p;
520}
521
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. */
527
528static void
529parse_one_string (struct obstack *output, char *data, int len,
530 const char *dest_charset, struct type *type)
531{
532 char *limit;
533
534 limit = data + len;
535
536 while (data < limit)
537 {
538 char *p = data;
c5504eaf 539
6c7a06a3
TT
540 /* Look for next escape, or the end of the input. */
541 while (p < limit && *p != '\\')
542 ++p;
543 /* If we saw a run of characters, convert them all. */
544 if (p > data)
545 convert_between_encodings (host_charset (), dest_charset,
ac91cd70 546 (gdb_byte *) data, p - data, 1,
aff410f1 547 output, translit_none);
6c7a06a3
TT
548 /* If we saw an escape, convert it. */
549 if (p < limit)
550 p = convert_escape (type, dest_charset, p, limit, output);
551 data = p;
552 }
553}
554
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. */
558
f4b8a18d 559struct value *
6c7a06a3
TT
560evaluate_subexp_c (struct type *expect_type, struct expression *exp,
561 int *pos, enum noside noside)
562{
563 enum exp_opcode op = exp->elts[*pos].opcode;
564
565 switch (op)
566 {
567 case OP_STRING:
568 {
569 int oplen, limit;
570 struct type *type;
6c7a06a3 571 struct value *result;
0c801b96 572 c_string_type dest_type;
6c7a06a3 573 const char *dest_charset;
c50491a7 574 int satisfy_expected = 0;
6c7a06a3 575
8268c778 576 auto_obstack output;
6c7a06a3
TT
577
578 ++*pos;
579 oplen = longest_to_int (exp->elts[*pos].longconst);
580
581 ++*pos;
582 limit = *pos + BYTES_TO_EXP_ELEM (oplen + 1);
0c801b96
SM
583 dest_type = ((enum c_string_type_values)
584 longest_to_int (exp->elts[*pos].longconst));
6c7a06a3
TT
585 switch (dest_type & ~C_CHAR)
586 {
587 case C_STRING:
d80b854b
UW
588 type = language_string_char_type (exp->language_defn,
589 exp->gdbarch);
6c7a06a3
TT
590 break;
591 case C_WIDE_STRING:
e6c014f2
UW
592 type = lookup_typename (exp->language_defn, exp->gdbarch,
593 "wchar_t", NULL, 0);
6c7a06a3
TT
594 break;
595 case C_STRING_16:
e6c014f2
UW
596 type = lookup_typename (exp->language_defn, exp->gdbarch,
597 "char16_t", NULL, 0);
6c7a06a3
TT
598 break;
599 case C_STRING_32:
e6c014f2
UW
600 type = lookup_typename (exp->language_defn, exp->gdbarch,
601 "char32_t", NULL, 0);
6c7a06a3
TT
602 break;
603 default:
9b20d036 604 internal_error (__FILE__, __LINE__, _("unhandled c_string_type"));
6c7a06a3 605 }
546e879e
TT
606
607 /* Ensure TYPE_LENGTH is valid for TYPE. */
608 check_typedef (type);
609
c50491a7
TT
610 /* If the caller expects an array of some integral type,
611 satisfy them. If something odder is expected, rely on the
612 caller to cast. */
613 if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_ARRAY)
614 {
615 struct type *element_type
616 = check_typedef (TYPE_TARGET_TYPE (expect_type));
617
618 if (TYPE_CODE (element_type) == TYPE_CODE_INT
619 || TYPE_CODE (element_type) == TYPE_CODE_CHAR)
620 {
621 type = element_type;
622 satisfy_expected = 1;
623 }
624 }
625
f870a310 626 dest_charset = charset_for_string_type (dest_type, exp->gdbarch);
6c7a06a3
TT
627
628 ++*pos;
629 while (*pos < limit)
630 {
631 int len;
632
633 len = longest_to_int (exp->elts[*pos].longconst);
634
635 ++*pos;
636 if (noside != EVAL_SKIP)
637 parse_one_string (&output, &exp->elts[*pos].string, len,
638 dest_charset, type);
639 *pos += BYTES_TO_EXP_ELEM (len);
640 }
641
642 /* Skip the trailing length and opcode. */
643 *pos += 2;
644
645 if (noside == EVAL_SKIP)
334cc82d
TT
646 {
647 /* Return a dummy value of the appropriate type. */
c50491a7
TT
648 if (expect_type != NULL)
649 result = allocate_value (expect_type);
650 else if ((dest_type & C_CHAR) != 0)
334cc82d
TT
651 result = allocate_value (type);
652 else
3b7538c0 653 result = value_cstring ("", 0, type);
334cc82d
TT
654 return result;
655 }
6c7a06a3
TT
656
657 if ((dest_type & C_CHAR) != 0)
658 {
659 LONGEST value;
660
661 if (obstack_object_size (&output) != TYPE_LENGTH (type))
3e43a32a
MS
662 error (_("Could not convert character "
663 "constant to target character set"));
51a5cd90 664 value = unpack_long (type, (gdb_byte *) obstack_base (&output));
6c7a06a3
TT
665 result = value_from_longest (type, value);
666 }
667 else
668 {
669 int i;
c5504eaf 670
6c7a06a3
TT
671 /* Write the terminating character. */
672 for (i = 0; i < TYPE_LENGTH (type); ++i)
673 obstack_1grow (&output, 0);
c50491a7
TT
674
675 if (satisfy_expected)
676 {
677 LONGEST low_bound, high_bound;
678 int element_size = TYPE_LENGTH (type);
679
680 if (get_discrete_bounds (TYPE_INDEX_TYPE (expect_type),
681 &low_bound, &high_bound) < 0)
682 {
683 low_bound = 0;
684 high_bound = (TYPE_LENGTH (expect_type) / element_size) - 1;
685 }
686 if (obstack_object_size (&output) / element_size
687 > (high_bound - low_bound + 1))
688 error (_("Too many array elements"));
689
690 result = allocate_value (expect_type);
691 memcpy (value_contents_raw (result), obstack_base (&output),
692 obstack_object_size (&output));
693 }
694 else
79f33898 695 result = value_cstring ((const char *) obstack_base (&output),
c50491a7
TT
696 obstack_object_size (&output),
697 type);
6c7a06a3 698 }
6c7a06a3
TT
699 return result;
700 }
701 break;
702
703 default:
704 break;
705 }
706 return evaluate_subexp_standard (expect_type, exp, pos, noside);
707}
43cc5389
TT
708\f
709/* la_watch_location_expression for C. */
c5aa993b 710
43cc5389
TT
711gdb::unique_xmalloc_ptr<char>
712c_watch_location_expression (struct type *type, CORE_ADDR addr)
713{
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)));
718}
84f0252a 719
84f0252a 720\f
c906108c
SS
721/* Table mapping opcodes into strings for printing operators
722 and precedences of the operators. */
723
724const struct op_print c_op_print_tab[] =
c5aa993b
JM
725{
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},
a016fc87 747 {"+", UNOP_PLUS, PREC_PREFIX, 0},
c5aa993b
JM
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},
007e1530 754 {"alignof ", UNOP_ALIGNOF, PREC_PREFIX, 0},
c5aa993b
JM
755 {"++", UNOP_PREINCREMENT, PREC_PREFIX, 0},
756 {"--", UNOP_PREDECREMENT, PREC_PREFIX, 0},
f486487f 757 {NULL, OP_NULL, PREC_PREFIX, 0}
c906108c
SS
758};
759\f
685419e2
AC
760enum 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,
213e4dc2
TJB
778 c_primitive_type_decfloat,
779 c_primitive_type_decdouble,
780 c_primitive_type_declong,
685419e2
AC
781 nr_c_primitive_types
782};
783
e9667a65 784void
685419e2
AC
785c_language_arch_info (struct gdbarch *gdbarch,
786 struct language_arch_info *lai)
787{
788 const struct builtin_type *builtin = builtin_type (gdbarch);
c5504eaf 789
e9667a65 790 lai->string_char_type = builtin->builtin_char;
685419e2
AC
791 lai->primitive_type_vector
792 = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_c_primitive_types + 1,
793 struct type *);
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;
213e4dc2
TJB
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;
fbb06eb1
UW
814
815 lai->bool_type_default = builtin->builtin_int;
cad351d1 816}
685419e2 817
6aecb9c2 818const struct exp_descriptor exp_descriptor_c =
6c7a06a3
TT
819{
820 print_subexp_standard,
821 operator_length_standard,
c0201579 822 operator_check_standard,
6c7a06a3
TT
823 op_name_standard,
824 dump_subexp_body_standard,
825 evaluate_subexp_c
826};
827
56618e20
TT
828static const char *c_extensions[] =
829{
830 ".c", NULL
831};
832
47e77640 833extern const struct language_defn c_language_defn =
c5aa993b 834{
c906108c 835 "c", /* Language name */
6abde28f 836 "C",
c906108c 837 language_c,
c906108c 838 range_check_off,
63872f9d 839 case_sensitive_on,
7ca2d3a3 840 array_row_major,
9a044a89 841 macro_expansion_c,
56618e20 842 c_extensions,
6c7a06a3 843 &exp_descriptor_c,
7c8adf68 844 c_parse,
b3f11165 845 c_yyerror,
e85c3284 846 null_post_parser,
c906108c
SS
847 c_printchar, /* Print a character constant */
848 c_printstr, /* Function to print string constant */
849 c_emit_char, /* Print a single char */
c906108c 850 c_print_type, /* Print a type using appropriate syntax */
5c6ce71d 851 c_print_typedef, /* Print a typedef using appropriate syntax */
c906108c
SS
852 c_val_print, /* Print a value using appropriate syntax */
853 c_value_print, /* Print a top-level value */
a5ee536b 854 default_read_var_value, /* la_read_var_value */
f636b87d 855 NULL, /* Language specific skip_trampoline */
2b2d9e11 856 NULL, /* name_of_this */
59cc4834 857 true, /* la_store_sym_names_in_linkage_form_p */
5f9a71c3 858 basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
b368761e 859 basic_lookup_transparent_type,/* lookup_transparent_type */
9a3d7dfd 860 NULL, /* Language specific symbol demangler */
8b302db8 861 NULL,
aff410f1
MS
862 NULL, /* Language specific
863 class_name_from_physname */
c906108c
SS
864 c_op_print_tab, /* expression operators for printing */
865 1, /* c-style arrays */
866 0, /* String lower bound */
6084f43a 867 default_word_break_characters,
eb3ff9a5 868 default_collect_symbol_completion_matches,
685419e2 869 c_language_arch_info,
e79af960 870 default_print_array_index,
41f1b697 871 default_pass_by_reference,
ae6a3a4c 872 c_get_string,
43cc5389 873 c_watch_location_expression,
b5ec771e 874 NULL, /* la_get_symbol_name_matcher */
f8eba3c6 875 iterate_over_symbols,
5ffa0793 876 default_search_name_hash,
a53b64ea 877 &c_varobj_ops,
bb2ec1b3
TT
878 c_get_compile_context,
879 c_compute_program,
c906108c
SS
880 LANG_MAGIC
881};
882
cad351d1
UW
883enum 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,
213e4dc2
TJB
902 cplus_primitive_type_decfloat,
903 cplus_primitive_type_decdouble,
904 cplus_primitive_type_declong,
53e710ac
PA
905 cplus_primitive_type_char16_t,
906 cplus_primitive_type_char32_t,
53375380 907 cplus_primitive_type_wchar_t,
cad351d1 908 nr_cplus_primitive_types
c906108c
SS
909};
910
cad351d1
UW
911static void
912cplus_language_arch_info (struct gdbarch *gdbarch,
913 struct language_arch_info *lai)
914{
915 const struct builtin_type *builtin = builtin_type (gdbarch);
c5504eaf 916
cad351d1
UW
917 lai->string_char_type = builtin->builtin_char;
918 lai->primitive_type_vector
919 = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_cplus_primitive_types + 1,
920 struct type *);
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;
213e4dc2
TJB
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;
53e710ac
PA
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;
53375380
PA
967 lai->primitive_type_vector [cplus_primitive_type_wchar_t]
968 = builtin->builtin_wchar;
fbb06eb1
UW
969
970 lai->bool_type_symbol = "bool";
971 lai->bool_type_default = builtin->builtin_bool;
cad351d1
UW
972}
973
56618e20
TT
974static const char *cplus_extensions[] =
975{
976 ".C", ".cc", ".cp", ".cpp", ".cxx", ".c++", NULL
977};
978
47e77640 979extern const struct language_defn cplus_language_defn =
c5aa993b
JM
980{
981 "c++", /* Language name */
6abde28f 982 "C++",
c906108c 983 language_cplus,
c906108c 984 range_check_off,
63872f9d 985 case_sensitive_on,
7ca2d3a3 986 array_row_major,
9a044a89 987 macro_expansion_c,
56618e20 988 cplus_extensions,
6c7a06a3 989 &exp_descriptor_c,
7c8adf68 990 c_parse,
b3f11165 991 c_yyerror,
e85c3284 992 null_post_parser,
c906108c
SS
993 c_printchar, /* Print a character constant */
994 c_printstr, /* Function to print string constant */
995 c_emit_char, /* Print a single char */
c906108c 996 c_print_type, /* Print a type using appropriate syntax */
5c6ce71d 997 c_print_typedef, /* Print a typedef using appropriate syntax */
c906108c
SS
998 c_val_print, /* Print a value using appropriate syntax */
999 c_value_print, /* Print a top-level value */
a5ee536b 1000 default_read_var_value, /* la_read_var_value */
b18be20d 1001 cplus_skip_trampoline, /* Language specific skip_trampoline */
2b2d9e11 1002 "this", /* name_of_this */
59cc4834 1003 false, /* la_store_sym_names_in_linkage_form_p */
1fcb5155 1004 cp_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
b368761e 1005 cp_lookup_transparent_type, /* lookup_transparent_type */
8de20a37 1006 gdb_demangle, /* Language specific symbol demangler */
8b302db8 1007 gdb_sniff_from_mangled_name,
aff410f1
MS
1008 cp_class_name_from_physname, /* Language specific
1009 class_name_from_physname */
c906108c
SS
1010 c_op_print_tab, /* expression operators for printing */
1011 1, /* c-style arrays */
1012 0, /* String lower bound */
6084f43a 1013 default_word_break_characters,
eb3ff9a5 1014 default_collect_symbol_completion_matches,
cad351d1 1015 cplus_language_arch_info,
e79af960 1016 default_print_array_index,
41f1b697 1017 cp_pass_by_reference,
ae6a3a4c 1018 c_get_string,
43cc5389 1019 c_watch_location_expression,
b5ec771e 1020 cp_get_symbol_name_matcher,
f8eba3c6 1021 iterate_over_symbols,
a20714ff 1022 cp_search_name_hash,
a53b64ea 1023 &cplus_varobj_ops,
bb2ec1b3
TT
1024 NULL,
1025 NULL,
c906108c
SS
1026 LANG_MAGIC
1027};
1028
56618e20
TT
1029static const char *asm_extensions[] =
1030{
1031 ".s", ".sx", ".S", NULL
1032};
1033
47e77640 1034extern const struct language_defn asm_language_defn =
c5aa993b 1035{
c906108c 1036 "asm", /* Language name */
6abde28f 1037 "assembly",
c906108c 1038 language_asm,
c906108c 1039 range_check_off,
63872f9d 1040 case_sensitive_on,
7ca2d3a3 1041 array_row_major,
9a044a89 1042 macro_expansion_c,
56618e20 1043 asm_extensions,
6c7a06a3 1044 &exp_descriptor_c,
7c8adf68 1045 c_parse,
b3f11165 1046 c_yyerror,
e85c3284 1047 null_post_parser,
c906108c
SS
1048 c_printchar, /* Print a character constant */
1049 c_printstr, /* Function to print string constant */
1050 c_emit_char, /* Print a single char */
c906108c 1051 c_print_type, /* Print a type using appropriate syntax */
5c6ce71d 1052 c_print_typedef, /* Print a typedef using appropriate syntax */
c906108c
SS
1053 c_val_print, /* Print a value using appropriate syntax */
1054 c_value_print, /* Print a top-level value */
a5ee536b 1055 default_read_var_value, /* la_read_var_value */
f636b87d 1056 NULL, /* Language specific skip_trampoline */
2b2d9e11 1057 NULL, /* name_of_this */
59cc4834 1058 true, /* la_store_sym_names_in_linkage_form_p */
5f9a71c3 1059 basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
b368761e 1060 basic_lookup_transparent_type,/* lookup_transparent_type */
9a3d7dfd 1061 NULL, /* Language specific symbol demangler */
8b302db8 1062 NULL,
aff410f1
MS
1063 NULL, /* Language specific
1064 class_name_from_physname */
c906108c
SS
1065 c_op_print_tab, /* expression operators for printing */
1066 1, /* c-style arrays */
1067 0, /* String lower bound */
6084f43a 1068 default_word_break_characters,
eb3ff9a5 1069 default_collect_symbol_completion_matches,
aff410f1 1070 c_language_arch_info, /* FIXME: la_language_arch_info. */
e79af960 1071 default_print_array_index,
41f1b697 1072 default_pass_by_reference,
ae6a3a4c 1073 c_get_string,
43cc5389 1074 c_watch_location_expression,
b5ec771e 1075 NULL, /* la_get_symbol_name_matcher */
f8eba3c6 1076 iterate_over_symbols,
5ffa0793 1077 default_search_name_hash,
a53b64ea 1078 &default_varobj_ops,
bb2ec1b3
TT
1079 NULL,
1080 NULL,
c906108c
SS
1081 LANG_MAGIC
1082};
1083
20a0e81d
JB
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. */
1088
47e77640 1089extern const struct language_defn minimal_language_defn =
20a0e81d
JB
1090{
1091 "minimal", /* Language name */
6abde28f 1092 "Minimal",
20a0e81d 1093 language_minimal,
20a0e81d 1094 range_check_off,
20a0e81d 1095 case_sensitive_on,
7ca2d3a3 1096 array_row_major,
9a044a89 1097 macro_expansion_c,
56618e20 1098 NULL,
6c7a06a3 1099 &exp_descriptor_c,
7c8adf68 1100 c_parse,
b3f11165 1101 c_yyerror,
e85c3284 1102 null_post_parser,
20a0e81d
JB
1103 c_printchar, /* Print a character constant */
1104 c_printstr, /* Function to print string constant */
1105 c_emit_char, /* Print a single char */
20a0e81d 1106 c_print_type, /* Print a type using appropriate syntax */
5c6ce71d 1107 c_print_typedef, /* Print a typedef using appropriate syntax */
20a0e81d
JB
1108 c_val_print, /* Print a value using appropriate syntax */
1109 c_value_print, /* Print a top-level value */
a5ee536b 1110 default_read_var_value, /* la_read_var_value */
20a0e81d 1111 NULL, /* Language specific skip_trampoline */
2b2d9e11 1112 NULL, /* name_of_this */
59cc4834 1113 true, /* la_store_sym_names_in_linkage_form_p */
5f9a71c3 1114 basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
b368761e 1115 basic_lookup_transparent_type,/* lookup_transparent_type */
20a0e81d 1116 NULL, /* Language specific symbol demangler */
8b302db8 1117 NULL,
aff410f1
MS
1118 NULL, /* Language specific
1119 class_name_from_physname */
20a0e81d
JB
1120 c_op_print_tab, /* expression operators for printing */
1121 1, /* c-style arrays */
1122 0, /* String lower bound */
6084f43a 1123 default_word_break_characters,
eb3ff9a5 1124 default_collect_symbol_completion_matches,
e9667a65 1125 c_language_arch_info,
e79af960 1126 default_print_array_index,
41f1b697 1127 default_pass_by_reference,
ae6a3a4c 1128 c_get_string,
43cc5389 1129 c_watch_location_expression,
b5ec771e 1130 NULL, /* la_get_symbol_name_matcher */
f8eba3c6 1131 iterate_over_symbols,
5ffa0793 1132 default_search_name_hash,
a53b64ea 1133 &default_varobj_ops,
bb2ec1b3
TT
1134 NULL,
1135 NULL,
20a0e81d
JB
1136 LANG_MAGIC
1137};
This page took 1.322191 seconds and 4 git commands to generate.