Simplify REGISTRY cleanup usages
[deliverable/binutils-gdb.git] / gdb / printcmd.c
CommitLineData
c906108c 1/* Print values for GNU debugger GDB.
e2ad119d 2
28e7fd62 3 Copyright (C) 1986-2013 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 "gdb_string.h"
22#include "frame.h"
23#include "symtab.h"
24#include "gdbtypes.h"
25#include "value.h"
26#include "language.h"
27#include "expression.h"
28#include "gdbcore.h"
29#include "gdbcmd.h"
30#include "target.h"
31#include "breakpoint.h"
32#include "demangle.h"
50f182aa 33#include "gdb-demangle.h"
c906108c
SS
34#include "valprint.h"
35#include "annotate.h"
c5aa993b
JM
36#include "symfile.h" /* for overlay functions */
37#include "objfiles.h" /* ditto */
c94fdfd0 38#include "completer.h" /* for completion functions */
8b93c638 39#include "ui-out.h"
261397f8 40#include "gdb_assert.h"
fe898f56 41#include "block.h"
92bf2b80 42#include "disasm.h"
1a619819 43#include "dfp.h"
79a45b7d 44#include "valprint.h"
a3247a22
PP
45#include "exceptions.h"
46#include "observer.h"
47#include "solist.h"
a3247a22 48#include "parser-defs.h"
6c7a06a3 49#include "charset.h"
704e9165 50#include "arch-utils.h"
e9cafbcc 51#include "cli/cli-utils.h"
d3ce09f5 52#include "format.h"
05cba821 53#include "source.h"
c906108c 54
6a83354a 55#ifdef TUI
0df8b418 56#include "tui/tui.h" /* For tui_active et al. */
6a83354a
AC
57#endif
58
c906108c 59struct format_data
c5aa993b
JM
60 {
61 int count;
62 char format;
63 char size;
a6bac58e
TT
64
65 /* True if the value should be printed raw -- that is, bypassing
66 python-based formatters. */
67 unsigned char raw;
c5aa993b 68 };
c906108c
SS
69
70/* Last specified output format. */
71
a6bac58e 72static char last_format = 0;
c906108c
SS
73
74/* Last specified examination size. 'b', 'h', 'w' or `q'. */
75
76static char last_size = 'w';
77
5d3729b5 78/* Default address to examine next, and associated architecture. */
c906108c 79
5d3729b5 80static struct gdbarch *next_gdbarch;
c906108c
SS
81static CORE_ADDR next_address;
82
a4642986
MR
83/* Number of delay instructions following current disassembled insn. */
84
85static int branch_delay_insns;
86
c906108c
SS
87/* Last address examined. */
88
89static CORE_ADDR last_examine_address;
90
91/* Contents of last address examined.
92 This is not valid past the end of the `x' command! */
93
3d6d86c6 94static struct value *last_examine_value;
c906108c
SS
95
96/* Largest offset between a symbolic value and an address, that will be
97 printed as `0x1234 <symbol+offset>'. */
98
99static unsigned int max_symbolic_offset = UINT_MAX;
920d2a44
AC
100static void
101show_max_symbolic_offset (struct ui_file *file, int from_tty,
102 struct cmd_list_element *c, const char *value)
103{
3e43a32a
MS
104 fprintf_filtered (file,
105 _("The largest offset that will be "
106 "printed in <symbol+1234> form is %s.\n"),
920d2a44
AC
107 value);
108}
c906108c
SS
109
110/* Append the source filename and linenumber of the symbol when
111 printing a symbolic value as `<symbol at filename:linenum>' if set. */
112static int print_symbol_filename = 0;
920d2a44
AC
113static void
114show_print_symbol_filename (struct ui_file *file, int from_tty,
115 struct cmd_list_element *c, const char *value)
116{
3e43a32a
MS
117 fprintf_filtered (file, _("Printing of source filename and "
118 "line number with <symbol> is %s.\n"),
920d2a44
AC
119 value);
120}
c906108c
SS
121
122/* Number of auto-display expression currently being displayed.
9d8fa392 123 So that we can disable it if we get a signal within it.
c906108c
SS
124 -1 when not doing one. */
125
5a18e302 126static int current_display_number;
c906108c 127
c906108c 128struct display
c5aa993b
JM
129 {
130 /* Chain link to next auto-display item. */
131 struct display *next;
6c95b8df 132
fa8a61dc
TT
133 /* The expression as the user typed it. */
134 char *exp_string;
6c95b8df 135
c5aa993b
JM
136 /* Expression to be evaluated and displayed. */
137 struct expression *exp;
6c95b8df 138
c5aa993b
JM
139 /* Item number of this auto-display item. */
140 int number;
6c95b8df 141
c5aa993b
JM
142 /* Display format specified. */
143 struct format_data format;
6c95b8df
PA
144
145 /* Program space associated with `block'. */
146 struct program_space *pspace;
147
0df8b418 148 /* Innermost block required by this expression when evaluated. */
270140bd 149 const struct block *block;
6c95b8df 150
0df8b418 151 /* Status of this display (enabled or disabled). */
b5de0fa7 152 int enabled_p;
c5aa993b 153 };
c906108c
SS
154
155/* Chain of expressions whose values should be displayed
156 automatically each time the program stops. */
157
158static struct display *display_chain;
159
160static int display_number;
161
c9174737
PA
162/* Walk the following statement or block through all displays.
163 ALL_DISPLAYS_SAFE does so even if the statement deletes the current
164 display. */
3c3fe74c
PA
165
166#define ALL_DISPLAYS(B) \
167 for (B = display_chain; B; B = B->next)
168
c9174737
PA
169#define ALL_DISPLAYS_SAFE(B,TMP) \
170 for (B = display_chain; \
171 B ? (TMP = B->next, 1): 0; \
172 B = TMP)
173
0df8b418 174/* Prototypes for exported functions. */
c906108c 175
a14ed312 176void _initialize_printcmd (void);
c906108c 177
0df8b418 178/* Prototypes for local functions. */
c906108c 179
a14ed312 180static void do_one_display (struct display *);
c906108c 181\f
c5aa993b 182
c906108c
SS
183/* Decode a format specification. *STRING_PTR should point to it.
184 OFORMAT and OSIZE are used as defaults for the format and size
185 if none are given in the format specification.
186 If OSIZE is zero, then the size field of the returned value
187 should be set only if a size is explicitly specified by the
188 user.
189 The structure returned describes all the data
190 found in the specification. In addition, *STRING_PTR is advanced
191 past the specification and past all whitespace following it. */
192
193static struct format_data
6f937416 194decode_format (const char **string_ptr, int oformat, int osize)
c906108c
SS
195{
196 struct format_data val;
6f937416 197 const char *p = *string_ptr;
c906108c
SS
198
199 val.format = '?';
200 val.size = '?';
201 val.count = 1;
a6bac58e 202 val.raw = 0;
c906108c
SS
203
204 if (*p >= '0' && *p <= '9')
205 val.count = atoi (p);
c5aa993b
JM
206 while (*p >= '0' && *p <= '9')
207 p++;
c906108c
SS
208
209 /* Now process size or format letters that follow. */
210
211 while (1)
212 {
213 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
214 val.size = *p++;
a6bac58e
TT
215 else if (*p == 'r')
216 {
217 val.raw = 1;
218 p++;
219 }
c906108c
SS
220 else if (*p >= 'a' && *p <= 'z')
221 val.format = *p++;
222 else
223 break;
224 }
225
c5aa993b
JM
226 while (*p == ' ' || *p == '\t')
227 p++;
c906108c
SS
228 *string_ptr = p;
229
230 /* Set defaults for format and size if not specified. */
231 if (val.format == '?')
232 {
233 if (val.size == '?')
234 {
235 /* Neither has been specified. */
236 val.format = oformat;
237 val.size = osize;
238 }
239 else
240 /* If a size is specified, any format makes a reasonable
241 default except 'i'. */
242 val.format = oformat == 'i' ? 'x' : oformat;
243 }
244 else if (val.size == '?')
245 switch (val.format)
246 {
247 case 'a':
5d3729b5
UW
248 /* Pick the appropriate size for an address. This is deferred
249 until do_examine when we know the actual architecture to use.
250 A special size value of 'a' is used to indicate this case. */
251 val.size = osize ? 'a' : osize;
c906108c
SS
252 break;
253 case 'f':
254 /* Floating point has to be word or giantword. */
255 if (osize == 'w' || osize == 'g')
256 val.size = osize;
257 else
258 /* Default it to giantword if the last used size is not
259 appropriate. */
260 val.size = osize ? 'g' : osize;
261 break;
262 case 'c':
263 /* Characters default to one byte. */
264 val.size = osize ? 'b' : osize;
265 break;
9a22f0d0 266 case 's':
3e43a32a
MS
267 /* Display strings with byte size chars unless explicitly
268 specified. */
9a22f0d0
PM
269 val.size = '\0';
270 break;
271
c906108c
SS
272 default:
273 /* The default is the size most recently specified. */
274 val.size = osize;
275 }
276
277 return val;
278}
279\f
79a45b7d 280/* Print value VAL on stream according to OPTIONS.
c906108c 281 Do not end with a newline.
c906108c 282 SIZE is the letter for the size of datum being printed.
ea37ba09
DJ
283 This is used to pad hex numbers so they line up. SIZE is 0
284 for print / output and set for examine. */
c906108c
SS
285
286static void
79a45b7d
TT
287print_formatted (struct value *val, int size,
288 const struct value_print_options *options,
fba45db2 289 struct ui_file *stream)
c906108c 290{
df407dfe 291 struct type *type = check_typedef (value_type (val));
c906108c
SS
292 int len = TYPE_LENGTH (type);
293
294 if (VALUE_LVAL (val) == lval_memory)
42ae5230 295 next_address = value_address (val) + len;
c906108c 296
ea37ba09 297 if (size)
c906108c 298 {
79a45b7d 299 switch (options->format)
ea37ba09
DJ
300 {
301 case 's':
6c7a06a3
TT
302 {
303 struct type *elttype = value_type (val);
ad3bbd48 304
42ae5230 305 next_address = (value_address (val)
09ca9e2e 306 + val_print_string (elttype, NULL,
42ae5230 307 value_address (val), -1,
9a22f0d0 308 stream, options) * len);
6c7a06a3 309 }
ea37ba09 310 return;
c906108c 311
ea37ba09
DJ
312 case 'i':
313 /* We often wrap here if there are long symbolic names. */
314 wrap_here (" ");
42ae5230 315 next_address = (value_address (val)
13274fc3
UW
316 + gdb_print_insn (get_type_arch (type),
317 value_address (val), stream,
ea37ba09
DJ
318 &branch_delay_insns));
319 return;
320 }
c906108c 321 }
ea37ba09 322
79a45b7d 323 if (options->format == 0 || options->format == 's'
4e885b20 324 || TYPE_CODE (type) == TYPE_CODE_REF
ea37ba09
DJ
325 || TYPE_CODE (type) == TYPE_CODE_ARRAY
326 || TYPE_CODE (type) == TYPE_CODE_STRING
327 || TYPE_CODE (type) == TYPE_CODE_STRUCT
328 || TYPE_CODE (type) == TYPE_CODE_UNION
329 || TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
79a45b7d 330 value_print (val, stream, options);
ea37ba09 331 else
b021a221
MS
332 /* User specified format, so don't look to the type to tell us
333 what to do. */
ab2188aa
PA
334 val_print_scalar_formatted (type,
335 value_contents_for_printing (val),
336 value_embedded_offset (val),
337 val,
338 options, size, stream);
c906108c
SS
339}
340
b806fb9a
UW
341/* Return builtin floating point type of same length as TYPE.
342 If no such type is found, return TYPE itself. */
343static struct type *
50810684 344float_type_from_length (struct type *type)
b806fb9a 345{
50810684 346 struct gdbarch *gdbarch = get_type_arch (type);
b806fb9a 347 const struct builtin_type *builtin = builtin_type (gdbarch);
b806fb9a 348
744a8059 349 if (TYPE_LENGTH (type) == TYPE_LENGTH (builtin->builtin_float))
b806fb9a 350 type = builtin->builtin_float;
744a8059 351 else if (TYPE_LENGTH (type) == TYPE_LENGTH (builtin->builtin_double))
b806fb9a 352 type = builtin->builtin_double;
744a8059 353 else if (TYPE_LENGTH (type) == TYPE_LENGTH (builtin->builtin_long_double))
b806fb9a
UW
354 type = builtin->builtin_long_double;
355
356 return type;
357}
358
c906108c 359/* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
ab2188aa
PA
360 according to OPTIONS and SIZE on STREAM. Formats s and i are not
361 supported at this level. */
c906108c
SS
362
363void
366b1cbf 364print_scalar_formatted (const void *valaddr, struct type *type,
79a45b7d
TT
365 const struct value_print_options *options,
366 int size, struct ui_file *stream)
c906108c 367{
50810684 368 struct gdbarch *gdbarch = get_type_arch (type);
81cb7cc9 369 LONGEST val_long = 0;
c906108c 370 unsigned int len = TYPE_LENGTH (type);
69feb676 371 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
c906108c 372
ab2188aa
PA
373 /* String printing should go through val_print_scalar_formatted. */
374 gdb_assert (options->format != 's');
ea37ba09 375
6b9acc27
JJ
376 if (len > sizeof(LONGEST) &&
377 (TYPE_CODE (type) == TYPE_CODE_INT
378 || TYPE_CODE (type) == TYPE_CODE_ENUM))
379 {
79a45b7d 380 switch (options->format)
6b9acc27
JJ
381 {
382 case 'o':
d44e8473 383 print_octal_chars (stream, valaddr, len, byte_order);
6b9acc27
JJ
384 return;
385 case 'u':
386 case 'd':
d44e8473 387 print_decimal_chars (stream, valaddr, len, byte_order);
6b9acc27
JJ
388 return;
389 case 't':
d44e8473 390 print_binary_chars (stream, valaddr, len, byte_order);
6b9acc27
JJ
391 return;
392 case 'x':
d44e8473 393 print_hex_chars (stream, valaddr, len, byte_order);
6b9acc27
JJ
394 return;
395 case 'c':
6c7a06a3 396 print_char_chars (stream, type, valaddr, len, byte_order);
6b9acc27
JJ
397 return;
398 default:
399 break;
400 };
401 }
402
79a45b7d 403 if (options->format != 'f')
c906108c
SS
404 val_long = unpack_long (type, valaddr);
405
ef166cf4 406 /* If the value is a pointer, and pointers and addresses are not the
d0aee0c4 407 same, then at this point, the value's length (in target bytes) is
17a912b6 408 gdbarch_addr_bit/TARGET_CHAR_BIT, not TYPE_LENGTH (type). */
ef166cf4 409 if (TYPE_CODE (type) == TYPE_CODE_PTR)
69feb676 410 len = gdbarch_addr_bit (gdbarch) / TARGET_CHAR_BIT;
ef166cf4 411
c906108c
SS
412 /* If we are printing it as unsigned, truncate it in case it is actually
413 a negative signed value (e.g. "print/u (short)-1" should print 65535
414 (if shorts are 16 bits) instead of 4294967295). */
1fac167a 415 if (options->format != 'd' || TYPE_UNSIGNED (type))
c906108c
SS
416 {
417 if (len < sizeof (LONGEST))
418 val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
419 }
420
79a45b7d 421 switch (options->format)
c906108c
SS
422 {
423 case 'x':
424 if (!size)
425 {
675dcf4f 426 /* No size specified, like in print. Print varying # of digits. */
c906108c
SS
427 print_longest (stream, 'x', 1, val_long);
428 }
429 else
430 switch (size)
431 {
432 case 'b':
433 case 'h':
434 case 'w':
435 case 'g':
436 print_longest (stream, size, 1, val_long);
437 break;
438 default:
8a3fe4f8 439 error (_("Undefined output size \"%c\"."), size);
c906108c
SS
440 }
441 break;
442
443 case 'd':
444 print_longest (stream, 'd', 1, val_long);
445 break;
446
447 case 'u':
448 print_longest (stream, 'u', 0, val_long);
449 break;
450
451 case 'o':
452 if (val_long)
453 print_longest (stream, 'o', 1, val_long);
454 else
455 fprintf_filtered (stream, "0");
456 break;
457
458 case 'a':
593de6a6 459 {
593de6a6 460 CORE_ADDR addr = unpack_pointer (type, valaddr);
ad3bbd48 461
5af949e3 462 print_address (gdbarch, addr, stream);
593de6a6 463 }
c906108c
SS
464 break;
465
466 case 'c':
79a45b7d
TT
467 {
468 struct value_print_options opts = *options;
69feb676 469
ad3bbd48 470 opts.format = 0;
79a45b7d 471 if (TYPE_UNSIGNED (type))
69feb676
UW
472 type = builtin_type (gdbarch)->builtin_true_unsigned_char;
473 else
474 type = builtin_type (gdbarch)->builtin_true_char;
475
476 value_print (value_from_longest (type, val_long), stream, &opts);
79a45b7d 477 }
c906108c
SS
478 break;
479
480 case 'f':
50810684 481 type = float_type_from_length (type);
c906108c
SS
482 print_floating (valaddr, type, stream);
483 break;
484
485 case 0:
675dcf4f
MK
486 internal_error (__FILE__, __LINE__,
487 _("failed internal consistency check"));
c906108c
SS
488
489 case 't':
490 /* Binary; 't' stands for "two". */
491 {
c5aa993b
JM
492 char bits[8 * (sizeof val_long) + 1];
493 char buf[8 * (sizeof val_long) + 32];
c906108c
SS
494 char *cp = bits;
495 int width;
496
c5aa993b
JM
497 if (!size)
498 width = 8 * (sizeof val_long);
499 else
500 switch (size)
c906108c
SS
501 {
502 case 'b':
503 width = 8;
504 break;
505 case 'h':
506 width = 16;
507 break;
508 case 'w':
509 width = 32;
510 break;
511 case 'g':
512 width = 64;
513 break;
514 default:
8a3fe4f8 515 error (_("Undefined output size \"%c\"."), size);
c906108c
SS
516 }
517
c5aa993b
JM
518 bits[width] = '\0';
519 while (width-- > 0)
520 {
521 bits[width] = (val_long & 1) ? '1' : '0';
522 val_long >>= 1;
523 }
c906108c
SS
524 if (!size)
525 {
526 while (*cp && *cp == '0')
527 cp++;
528 if (*cp == '\0')
529 cp--;
530 }
daac021a 531 strncpy (buf, cp, sizeof (bits));
306d9ac5 532 fputs_filtered (buf, stream);
c906108c
SS
533 }
534 break;
535
6fbe845e
AB
536 case 'z':
537 print_hex_chars (stream, valaddr, len, byte_order);
538 break;
539
c906108c 540 default:
79a45b7d 541 error (_("Undefined output format \"%c\"."), options->format);
c906108c
SS
542 }
543}
544
545/* Specify default address for `x' command.
675dcf4f 546 The `info lines' command uses this. */
c906108c
SS
547
548void
8b9b9e1a 549set_next_address (struct gdbarch *gdbarch, CORE_ADDR addr)
c906108c 550{
8b9b9e1a
UW
551 struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
552
5d3729b5 553 next_gdbarch = gdbarch;
c906108c
SS
554 next_address = addr;
555
556 /* Make address available to the user as $_. */
557 set_internalvar (lookup_internalvar ("_"),
8b9b9e1a 558 value_from_pointer (ptr_type, addr));
c906108c
SS
559}
560
561/* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
562 after LEADIN. Print nothing if no symbolic name is found nearby.
563 Optionally also print source file and line number, if available.
564 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
565 or to interpret it as a possible C++ name and convert it back to source
566 form. However note that DO_DEMANGLE can be overridden by the specific
9cb709b6
TT
567 settings of the demangle and asm_demangle variables. Returns
568 non-zero if anything was printed; zero otherwise. */
c906108c 569
9cb709b6 570int
22e722e1
DJ
571print_address_symbolic (struct gdbarch *gdbarch, CORE_ADDR addr,
572 struct ui_file *stream,
675dcf4f 573 int do_demangle, char *leadin)
dfcd3bfb
JM
574{
575 char *name = NULL;
576 char *filename = NULL;
577 int unmapped = 0;
578 int offset = 0;
579 int line = 0;
580
675dcf4f 581 /* Throw away both name and filename. */
2f9429ae
AC
582 struct cleanup *cleanup_chain = make_cleanup (free_current_contents, &name);
583 make_cleanup (free_current_contents, &filename);
dfcd3bfb 584
22e722e1 585 if (build_address_symbolic (gdbarch, addr, do_demangle, &name, &offset,
675dcf4f 586 &filename, &line, &unmapped))
2f9429ae
AC
587 {
588 do_cleanups (cleanup_chain);
9cb709b6 589 return 0;
2f9429ae 590 }
dfcd3bfb
JM
591
592 fputs_filtered (leadin, stream);
593 if (unmapped)
594 fputs_filtered ("<*", stream);
595 else
596 fputs_filtered ("<", stream);
597 fputs_filtered (name, stream);
598 if (offset != 0)
599 fprintf_filtered (stream, "+%u", (unsigned int) offset);
600
601 /* Append source filename and line number if desired. Give specific
602 line # of this addr, if we have it; else line # of the nearest symbol. */
603 if (print_symbol_filename && filename != NULL)
604 {
605 if (line != -1)
606 fprintf_filtered (stream, " at %s:%d", filename, line);
607 else
608 fprintf_filtered (stream, " in %s", filename);
609 }
610 if (unmapped)
611 fputs_filtered ("*>", stream);
612 else
613 fputs_filtered (">", stream);
614
615 do_cleanups (cleanup_chain);
9cb709b6 616 return 1;
dfcd3bfb
JM
617}
618
619/* Given an address ADDR return all the elements needed to print the
0df8b418 620 address in a symbolic form. NAME can be mangled or not depending
dfcd3bfb 621 on DO_DEMANGLE (and also on the asm_demangle global variable,
0df8b418
MS
622 manipulated via ''set print asm-demangle''). Return 0 in case of
623 success, when all the info in the OUT paramters is valid. Return 1
624 otherwise. */
dfcd3bfb 625int
22e722e1
DJ
626build_address_symbolic (struct gdbarch *gdbarch,
627 CORE_ADDR addr, /* IN */
dfcd3bfb
JM
628 int do_demangle, /* IN */
629 char **name, /* OUT */
630 int *offset, /* OUT */
631 char **filename, /* OUT */
632 int *line, /* OUT */
633 int *unmapped) /* OUT */
c906108c
SS
634{
635 struct minimal_symbol *msymbol;
636 struct symbol *symbol;
c906108c 637 CORE_ADDR name_location = 0;
714835d5 638 struct obj_section *section = NULL;
0d5cff50 639 const char *name_temp = "";
dfcd3bfb 640
89c83b10 641 /* Let's say it is mapped (not unmapped). */
dfcd3bfb 642 *unmapped = 0;
c906108c 643
dfcd3bfb 644 /* Determine if the address is in an overlay, and whether it is
675dcf4f 645 mapped. */
c906108c
SS
646 if (overlay_debugging)
647 {
648 section = find_pc_overlay (addr);
649 if (pc_in_unmapped_range (addr, section))
650 {
dfcd3bfb 651 *unmapped = 1;
c906108c
SS
652 addr = overlay_mapped_address (addr, section);
653 }
654 }
655
c906108c
SS
656 /* First try to find the address in the symbol table, then
657 in the minsyms. Take the closest one. */
658
659 /* This is defective in the sense that it only finds text symbols. So
660 really this is kind of pointless--we should make sure that the
661 minimal symbols have everything we need (by changing that we could
662 save some memory, but for many debug format--ELF/DWARF or
663 anything/stabs--it would be inconvenient to eliminate those minimal
664 symbols anyway). */
7cbd4a93 665 msymbol = lookup_minimal_symbol_by_pc_section (addr, section).minsym;
c906108c
SS
666 symbol = find_pc_sect_function (addr, section);
667
668 if (symbol)
669 {
22e722e1
DJ
670 /* If this is a function (i.e. a code address), strip out any
671 non-address bits. For instance, display a pointer to the
672 first instruction of a Thumb function as <function>; the
673 second instruction will be <function+2>, even though the
674 pointer is <function+3>. This matches the ISA behavior. */
675 addr = gdbarch_addr_bits_remove (gdbarch, addr);
676
c906108c 677 name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
406fc7fb 678 if (do_demangle || asm_demangle)
de5ad195 679 name_temp = SYMBOL_PRINT_NAME (symbol);
c906108c 680 else
3567439c 681 name_temp = SYMBOL_LINKAGE_NAME (symbol);
c906108c
SS
682 }
683
9cb709b6 684 if (msymbol != NULL
d9eaeb59 685 && MSYMBOL_HAS_SIZE (msymbol)
9cb709b6
TT
686 && MSYMBOL_SIZE (msymbol) == 0
687 && MSYMBOL_TYPE (msymbol) != mst_text
688 && MSYMBOL_TYPE (msymbol) != mst_text_gnu_ifunc
689 && MSYMBOL_TYPE (msymbol) != mst_file_text)
690 msymbol = NULL;
691
c906108c
SS
692 if (msymbol != NULL)
693 {
694 if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
695 {
fe8400b4
WN
696 /* If this is a function (i.e. a code address), strip out any
697 non-address bits. For instance, display a pointer to the
698 first instruction of a Thumb function as <function>; the
699 second instruction will be <function+2>, even though the
700 pointer is <function+3>. This matches the ISA behavior. */
701 if (MSYMBOL_TYPE (msymbol) == mst_text
702 || MSYMBOL_TYPE (msymbol) == mst_text_gnu_ifunc
703 || MSYMBOL_TYPE (msymbol) == mst_file_text
704 || MSYMBOL_TYPE (msymbol) == mst_solib_trampoline)
705 addr = gdbarch_addr_bits_remove (gdbarch, addr);
706
c906108c
SS
707 /* The msymbol is closer to the address than the symbol;
708 use the msymbol instead. */
709 symbol = 0;
c906108c 710 name_location = SYMBOL_VALUE_ADDRESS (msymbol);
406fc7fb 711 if (do_demangle || asm_demangle)
de5ad195 712 name_temp = SYMBOL_PRINT_NAME (msymbol);
c906108c 713 else
3567439c 714 name_temp = SYMBOL_LINKAGE_NAME (msymbol);
c906108c
SS
715 }
716 }
717 if (symbol == NULL && msymbol == NULL)
dfcd3bfb 718 return 1;
c906108c 719
c906108c
SS
720 /* If the nearest symbol is too far away, don't print anything symbolic. */
721
722 /* For when CORE_ADDR is larger than unsigned int, we do math in
723 CORE_ADDR. But when we detect unsigned wraparound in the
724 CORE_ADDR math, we ignore this test and print the offset,
725 because addr+max_symbolic_offset has wrapped through the end
726 of the address space back to the beginning, giving bogus comparison. */
727 if (addr > name_location + max_symbolic_offset
728 && name_location + max_symbolic_offset > name_location)
dfcd3bfb 729 return 1;
c906108c 730
dfcd3bfb
JM
731 *offset = addr - name_location;
732
733 *name = xstrdup (name_temp);
c906108c 734
c906108c
SS
735 if (print_symbol_filename)
736 {
737 struct symtab_and_line sal;
738
739 sal = find_pc_sect_line (addr, section, 0);
740
741 if (sal.symtab)
dfcd3bfb 742 {
05cba821 743 *filename = xstrdup (symtab_to_filename_for_display (sal.symtab));
dfcd3bfb
JM
744 *line = sal.line;
745 }
c906108c 746 }
dfcd3bfb 747 return 0;
c906108c
SS
748}
749
c906108c
SS
750
751/* Print address ADDR symbolically on STREAM.
752 First print it as a number. Then perhaps print
753 <SYMBOL + OFFSET> after the number. */
754
755void
5af949e3
UW
756print_address (struct gdbarch *gdbarch,
757 CORE_ADDR addr, struct ui_file *stream)
c906108c 758{
5af949e3 759 fputs_filtered (paddress (gdbarch, addr), stream);
22e722e1 760 print_address_symbolic (gdbarch, addr, stream, asm_demangle, " ");
c906108c
SS
761}
762
2b28d209
PP
763/* Return a prefix for instruction address:
764 "=> " for current instruction, else " ". */
765
766const char *
767pc_prefix (CORE_ADDR addr)
768{
769 if (has_stack_frames ())
770 {
771 struct frame_info *frame;
772 CORE_ADDR pc;
773
774 frame = get_selected_frame (NULL);
ce406537 775 if (get_frame_pc_if_available (frame, &pc) && pc == addr)
2b28d209
PP
776 return "=> ";
777 }
778 return " ";
779}
780
c906108c
SS
781/* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
782 controls whether to print the symbolic name "raw" or demangled.
9cb709b6 783 Return non-zero if anything was printed; zero otherwise. */
c906108c 784
9cb709b6 785int
edf0c1b7
TT
786print_address_demangle (const struct value_print_options *opts,
787 struct gdbarch *gdbarch, CORE_ADDR addr,
5af949e3 788 struct ui_file *stream, int do_demangle)
c906108c 789{
1d51a733 790 if (opts->addressprint)
c906108c 791 {
5af949e3 792 fputs_filtered (paddress (gdbarch, addr), stream);
22e722e1 793 print_address_symbolic (gdbarch, addr, stream, do_demangle, " ");
c906108c
SS
794 }
795 else
796 {
9cb709b6 797 return print_address_symbolic (gdbarch, addr, stream, do_demangle, "");
c906108c 798 }
9cb709b6 799 return 1;
c906108c
SS
800}
801\f
802
c906108c
SS
803/* Examine data at address ADDR in format FMT.
804 Fetch it from memory and print on gdb_stdout. */
805
806static void
5d3729b5 807do_examine (struct format_data fmt, struct gdbarch *gdbarch, CORE_ADDR addr)
c906108c 808{
52f0bd74
AC
809 char format = 0;
810 char size;
811 int count = 1;
c906108c 812 struct type *val_type = NULL;
52f0bd74
AC
813 int i;
814 int maxelts;
79a45b7d 815 struct value_print_options opts;
c906108c
SS
816
817 format = fmt.format;
818 size = fmt.size;
819 count = fmt.count;
5d3729b5 820 next_gdbarch = gdbarch;
c906108c 821 next_address = addr;
c906108c 822
9a22f0d0
PM
823 /* Instruction format implies fetch single bytes
824 regardless of the specified size.
825 The case of strings is handled in decode_format, only explicit
826 size operator are not changed to 'b'. */
827 if (format == 'i')
c906108c
SS
828 size = 'b';
829
5d3729b5
UW
830 if (size == 'a')
831 {
832 /* Pick the appropriate size for an address. */
833 if (gdbarch_ptr_bit (next_gdbarch) == 64)
834 size = 'g';
835 else if (gdbarch_ptr_bit (next_gdbarch) == 32)
836 size = 'w';
837 else if (gdbarch_ptr_bit (next_gdbarch) == 16)
838 size = 'h';
839 else
840 /* Bad value for gdbarch_ptr_bit. */
841 internal_error (__FILE__, __LINE__,
842 _("failed internal consistency check"));
843 }
844
845 if (size == 'b')
df4df182 846 val_type = builtin_type (next_gdbarch)->builtin_int8;
c906108c 847 else if (size == 'h')
df4df182 848 val_type = builtin_type (next_gdbarch)->builtin_int16;
c906108c 849 else if (size == 'w')
df4df182 850 val_type = builtin_type (next_gdbarch)->builtin_int32;
c906108c 851 else if (size == 'g')
df4df182 852 val_type = builtin_type (next_gdbarch)->builtin_int64;
c906108c 853
9a22f0d0
PM
854 if (format == 's')
855 {
856 struct type *char_type = NULL;
ad3bbd48 857
9a22f0d0
PM
858 /* Search for "char16_t" or "char32_t" types or fall back to 8-bit char
859 if type is not found. */
860 if (size == 'h')
861 char_type = builtin_type (next_gdbarch)->builtin_char16;
862 else if (size == 'w')
863 char_type = builtin_type (next_gdbarch)->builtin_char32;
864 if (char_type)
865 val_type = char_type;
866 else
867 {
868 if (size != '\0' && size != 'b')
0df8b418
MS
869 warning (_("Unable to display strings with "
870 "size '%c', using 'b' instead."), size);
9a22f0d0
PM
871 size = 'b';
872 val_type = builtin_type (next_gdbarch)->builtin_int8;
873 }
874 }
875
c906108c
SS
876 maxelts = 8;
877 if (size == 'w')
878 maxelts = 4;
879 if (size == 'g')
880 maxelts = 2;
881 if (format == 's' || format == 'i')
882 maxelts = 1;
883
79a45b7d
TT
884 get_formatted_print_options (&opts, format);
885
c906108c
SS
886 /* Print as many objects as specified in COUNT, at most maxelts per line,
887 with the address of the next one at the start of each line. */
888
889 while (count > 0)
890 {
891 QUIT;
2b28d209
PP
892 if (format == 'i')
893 fputs_filtered (pc_prefix (next_address), gdb_stdout);
5af949e3 894 print_address (next_gdbarch, next_address, gdb_stdout);
c906108c
SS
895 printf_filtered (":");
896 for (i = maxelts;
897 i > 0 && count > 0;
898 i--, count--)
899 {
900 printf_filtered ("\t");
901 /* Note that print_formatted sets next_address for the next
902 object. */
903 last_examine_address = next_address;
904
905 if (last_examine_value)
906 value_free (last_examine_value);
907
908 /* The value to be displayed is not fetched greedily.
5d51a2db
MR
909 Instead, to avoid the possibility of a fetched value not
910 being used, its retrieval is delayed until the print code
c5aa993b
JM
911 uses it. When examining an instruction stream, the
912 disassembler will perform its own memory fetch using just
913 the address stored in LAST_EXAMINE_VALUE. FIXME: Should
914 the disassembler be modified so that LAST_EXAMINE_VALUE
915 is left with the byte sequence from the last complete
0df8b418 916 instruction fetched from memory? */
00a4c844 917 last_examine_value = value_at_lazy (val_type, next_address);
c906108c
SS
918
919 if (last_examine_value)
920 release_value (last_examine_value);
921
79a45b7d 922 print_formatted (last_examine_value, size, &opts, gdb_stdout);
a4642986
MR
923
924 /* Display any branch delay slots following the final insn. */
925 if (format == 'i' && count == 1)
926 count += branch_delay_insns;
c906108c
SS
927 }
928 printf_filtered ("\n");
929 gdb_flush (gdb_stdout);
930 }
931}
932\f
933static void
fba45db2 934validate_format (struct format_data fmt, char *cmdname)
c906108c
SS
935{
936 if (fmt.size != 0)
8a3fe4f8 937 error (_("Size letters are meaningless in \"%s\" command."), cmdname);
c906108c 938 if (fmt.count != 1)
8a3fe4f8 939 error (_("Item count other than 1 is meaningless in \"%s\" command."),
c906108c 940 cmdname);
ea37ba09 941 if (fmt.format == 'i')
8a3fe4f8 942 error (_("Format letter \"%c\" is meaningless in \"%s\" command."),
c906108c
SS
943 fmt.format, cmdname);
944}
945
675dcf4f 946/* Evaluate string EXP as an expression in the current language and
c5aa993b 947 print the resulting value. EXP may contain a format specifier as the
675dcf4f 948 first argument ("/x myvar" for example, to print myvar in hex). */
c906108c
SS
949
950static void
6f937416 951print_command_1 (const char *exp, int voidprint)
c906108c
SS
952{
953 struct expression *expr;
27833de7 954 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
52f0bd74 955 char format = 0;
3d6d86c6 956 struct value *val;
c906108c 957 struct format_data fmt;
c906108c 958
c906108c
SS
959 if (exp && *exp == '/')
960 {
961 exp++;
962 fmt = decode_format (&exp, last_format, 0);
963 validate_format (fmt, "print");
964 last_format = format = fmt.format;
965 }
966 else
967 {
968 fmt.count = 1;
969 fmt.format = 0;
970 fmt.size = 0;
a6bac58e 971 fmt.raw = 0;
c906108c
SS
972 }
973
974 if (exp && *exp)
975 {
c906108c 976 expr = parse_expression (exp);
27833de7 977 make_cleanup (free_current_contents, &expr);
c906108c 978 val = evaluate_expression (expr);
c906108c
SS
979 }
980 else
981 val = access_value_history (0);
982
df407dfe
AC
983 if (voidprint || (val && value_type (val) &&
984 TYPE_CODE (value_type (val)) != TYPE_CODE_VOID))
c906108c 985 {
79a45b7d 986 struct value_print_options opts;
c906108c
SS
987 int histindex = record_latest_value (val);
988
989 if (histindex >= 0)
df407dfe 990 annotate_value_history_begin (histindex, value_type (val));
c906108c 991 else
df407dfe 992 annotate_value_begin (value_type (val));
c906108c 993
e93a8774 994 if (histindex >= 0)
c5aa993b 995 printf_filtered ("$%d = ", histindex);
c906108c
SS
996
997 if (histindex >= 0)
998 annotate_value_history_value ();
999
79a45b7d 1000 get_formatted_print_options (&opts, format);
a6bac58e 1001 opts.raw = fmt.raw;
79a45b7d
TT
1002
1003 print_formatted (val, fmt.size, &opts, gdb_stdout);
c906108c
SS
1004 printf_filtered ("\n");
1005
1006 if (histindex >= 0)
1007 annotate_value_history_end ();
1008 else
1009 annotate_value_end ();
c906108c
SS
1010 }
1011
27833de7 1012 do_cleanups (old_chain);
c906108c
SS
1013}
1014
c906108c 1015static void
fba45db2 1016print_command (char *exp, int from_tty)
c906108c 1017{
e93a8774 1018 print_command_1 (exp, 1);
c906108c
SS
1019}
1020
675dcf4f 1021/* Same as print, except it doesn't print void results. */
c906108c 1022static void
fba45db2 1023call_command (char *exp, int from_tty)
c906108c 1024{
e93a8774 1025 print_command_1 (exp, 0);
c906108c
SS
1026}
1027
6f937416
PA
1028/* Implementation of the "output" command. */
1029
1030static void
fba45db2 1031output_command (char *exp, int from_tty)
6f937416
PA
1032{
1033 output_command_const (exp, from_tty);
1034}
1035
1036/* Like output_command, but takes a const string as argument. */
1037
1038void
1039output_command_const (const char *exp, int from_tty)
c906108c
SS
1040{
1041 struct expression *expr;
52f0bd74
AC
1042 struct cleanup *old_chain;
1043 char format = 0;
3d6d86c6 1044 struct value *val;
c906108c 1045 struct format_data fmt;
79a45b7d 1046 struct value_print_options opts;
c906108c 1047
777ea8f1 1048 fmt.size = 0;
a6bac58e 1049 fmt.raw = 0;
777ea8f1 1050
c906108c
SS
1051 if (exp && *exp == '/')
1052 {
1053 exp++;
1054 fmt = decode_format (&exp, 0, 0);
1055 validate_format (fmt, "output");
1056 format = fmt.format;
1057 }
1058
1059 expr = parse_expression (exp);
c13c43fd 1060 old_chain = make_cleanup (free_current_contents, &expr);
c906108c
SS
1061
1062 val = evaluate_expression (expr);
1063
df407dfe 1064 annotate_value_begin (value_type (val));
c906108c 1065
79a45b7d 1066 get_formatted_print_options (&opts, format);
a6bac58e 1067 opts.raw = fmt.raw;
79a45b7d 1068 print_formatted (val, fmt.size, &opts, gdb_stdout);
c906108c
SS
1069
1070 annotate_value_end ();
1071
2acceee2
JM
1072 wrap_here ("");
1073 gdb_flush (gdb_stdout);
1074
c906108c
SS
1075 do_cleanups (old_chain);
1076}
1077
c906108c 1078static void
fba45db2 1079set_command (char *exp, int from_tty)
c906108c
SS
1080{
1081 struct expression *expr = parse_expression (exp);
52f0bd74 1082 struct cleanup *old_chain =
c13c43fd 1083 make_cleanup (free_current_contents, &expr);
ad3bbd48 1084
0ece64fd
TG
1085 if (expr->nelts >= 1)
1086 switch (expr->elts[0].opcode)
1087 {
1088 case UNOP_PREINCREMENT:
1089 case UNOP_POSTINCREMENT:
1090 case UNOP_PREDECREMENT:
1091 case UNOP_POSTDECREMENT:
1092 case BINOP_ASSIGN:
1093 case BINOP_ASSIGN_MODIFY:
1094 case BINOP_COMMA:
1095 break;
1096 default:
1097 warning
1098 (_("Expression is not an assignment (and might have no effect)"));
1099 }
52b3699b 1100
c906108c
SS
1101 evaluate_expression (expr);
1102 do_cleanups (old_chain);
1103}
1104
c906108c 1105static void
fba45db2 1106sym_info (char *arg, int from_tty)
c906108c
SS
1107{
1108 struct minimal_symbol *msymbol;
c5aa993b
JM
1109 struct objfile *objfile;
1110 struct obj_section *osect;
c5aa993b
JM
1111 CORE_ADDR addr, sect_addr;
1112 int matches = 0;
1113 unsigned int offset;
c906108c
SS
1114
1115 if (!arg)
e2e0b3e5 1116 error_no_arg (_("address"));
c906108c
SS
1117
1118 addr = parse_and_eval_address (arg);
1119 ALL_OBJSECTIONS (objfile, osect)
c5aa993b 1120 {
94277a38
DJ
1121 /* Only process each object file once, even if there's a separate
1122 debug file. */
1123 if (objfile->separate_debug_objfile_backlink)
1124 continue;
1125
714835d5 1126 sect_addr = overlay_mapped_address (addr, osect);
c906108c 1127
f1f6aadf
PA
1128 if (obj_section_addr (osect) <= sect_addr
1129 && sect_addr < obj_section_endaddr (osect)
7cbd4a93
TT
1130 && (msymbol
1131 = lookup_minimal_symbol_by_pc_section (sect_addr, osect).minsym))
c5aa993b 1132 {
c14c28ba 1133 const char *obj_name, *mapped, *sec_name, *msym_name;
e2fd701e
DE
1134 char *loc_string;
1135 struct cleanup *old_chain;
c14c28ba 1136
c5aa993b
JM
1137 matches = 1;
1138 offset = sect_addr - SYMBOL_VALUE_ADDRESS (msymbol);
c14c28ba
PP
1139 mapped = section_is_mapped (osect) ? _("mapped") : _("unmapped");
1140 sec_name = osect->the_bfd_section->name;
1141 msym_name = SYMBOL_PRINT_NAME (msymbol);
1142
e2fd701e
DE
1143 /* Don't print the offset if it is zero.
1144 We assume there's no need to handle i18n of "sym + offset". */
1145 if (offset)
549ba0f8 1146 loc_string = xstrprintf ("%s + %u", msym_name, offset);
e2fd701e 1147 else
549ba0f8 1148 loc_string = xstrprintf ("%s", msym_name);
e2fd701e
DE
1149
1150 /* Use a cleanup to free loc_string in case the user quits
1151 a pagination request inside printf_filtered. */
1152 old_chain = make_cleanup (xfree, loc_string);
1153
4262abfb
JK
1154 gdb_assert (osect->objfile && objfile_name (osect->objfile));
1155 obj_name = objfile_name (osect->objfile);
c14c28ba
PP
1156
1157 if (MULTI_OBJFILE_P ())
1158 if (pc_in_unmapped_range (addr, osect))
1159 if (section_is_overlay (osect))
e2fd701e 1160 printf_filtered (_("%s in load address range of "
c14c28ba 1161 "%s overlay section %s of %s\n"),
e2fd701e 1162 loc_string, mapped, sec_name, obj_name);
c14c28ba 1163 else
e2fd701e 1164 printf_filtered (_("%s in load address range of "
c14c28ba 1165 "section %s of %s\n"),
e2fd701e 1166 loc_string, sec_name, obj_name);
c14c28ba
PP
1167 else
1168 if (section_is_overlay (osect))
e2fd701e
DE
1169 printf_filtered (_("%s in %s overlay section %s of %s\n"),
1170 loc_string, mapped, sec_name, obj_name);
c14c28ba 1171 else
e2fd701e
DE
1172 printf_filtered (_("%s in section %s of %s\n"),
1173 loc_string, sec_name, obj_name);
c5aa993b 1174 else
c14c28ba
PP
1175 if (pc_in_unmapped_range (addr, osect))
1176 if (section_is_overlay (osect))
e2fd701e 1177 printf_filtered (_("%s in load address range of %s overlay "
c14c28ba 1178 "section %s\n"),
e2fd701e 1179 loc_string, mapped, sec_name);
c14c28ba 1180 else
e2fd701e
DE
1181 printf_filtered (_("%s in load address range of section %s\n"),
1182 loc_string, sec_name);
c14c28ba
PP
1183 else
1184 if (section_is_overlay (osect))
e2fd701e
DE
1185 printf_filtered (_("%s in %s overlay section %s\n"),
1186 loc_string, mapped, sec_name);
c14c28ba 1187 else
e2fd701e
DE
1188 printf_filtered (_("%s in section %s\n"),
1189 loc_string, sec_name);
1190
1191 do_cleanups (old_chain);
c5aa993b
JM
1192 }
1193 }
c906108c 1194 if (matches == 0)
a3f17187 1195 printf_filtered (_("No symbol matches %s.\n"), arg);
c906108c
SS
1196}
1197
c906108c 1198static void
fba45db2 1199address_info (char *exp, int from_tty)
c906108c 1200{
768a979c
UW
1201 struct gdbarch *gdbarch;
1202 int regno;
52f0bd74 1203 struct symbol *sym;
7c7b6655 1204 struct bound_minimal_symbol msymbol;
52f0bd74 1205 long val;
714835d5 1206 struct obj_section *section;
08922a10 1207 CORE_ADDR load_addr, context_pc = 0;
1993b719 1208 struct field_of_this_result is_a_field_of_this;
c906108c
SS
1209
1210 if (exp == 0)
8a3fe4f8 1211 error (_("Argument required."));
c906108c 1212
08922a10 1213 sym = lookup_symbol (exp, get_selected_block (&context_pc), VAR_DOMAIN,
2570f2b7 1214 &is_a_field_of_this);
c906108c
SS
1215 if (sym == NULL)
1216 {
1993b719 1217 if (is_a_field_of_this.type != NULL)
c906108c
SS
1218 {
1219 printf_filtered ("Symbol \"");
1220 fprintf_symbol_filtered (gdb_stdout, exp,
1221 current_language->la_language, DMGL_ANSI);
e2b23ee9
AF
1222 printf_filtered ("\" is a field of the local class variable ");
1223 if (current_language->la_language == language_objc)
2625d86c 1224 printf_filtered ("`self'\n"); /* ObjC equivalent of "this" */
e2b23ee9 1225 else
2625d86c 1226 printf_filtered ("`this'\n");
c906108c
SS
1227 return;
1228 }
1229
7c7b6655 1230 msymbol = lookup_bound_minimal_symbol (exp);
c906108c 1231
7c7b6655 1232 if (msymbol.minsym != NULL)
c906108c 1233 {
7c7b6655 1234 struct objfile *objfile = msymbol.objfile;
e27d198c
TT
1235
1236 gdbarch = get_objfile_arch (objfile);
7c7b6655 1237 load_addr = SYMBOL_VALUE_ADDRESS (msymbol.minsym);
c906108c
SS
1238
1239 printf_filtered ("Symbol \"");
1240 fprintf_symbol_filtered (gdb_stdout, exp,
1241 current_language->la_language, DMGL_ANSI);
1242 printf_filtered ("\" is at ");
5af949e3 1243 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
c906108c 1244 printf_filtered (" in a file compiled without debugging");
7c7b6655 1245 section = SYMBOL_OBJ_SECTION (objfile, msymbol.minsym);
c906108c
SS
1246 if (section_is_overlay (section))
1247 {
1248 load_addr = overlay_unmapped_address (load_addr, section);
1249 printf_filtered (",\n -- loaded at ");
5af949e3 1250 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
714835d5
UW
1251 printf_filtered (" in overlay section %s",
1252 section->the_bfd_section->name);
c906108c
SS
1253 }
1254 printf_filtered (".\n");
1255 }
1256 else
8a3fe4f8 1257 error (_("No symbol \"%s\" in current context."), exp);
c906108c
SS
1258 return;
1259 }
1260
1261 printf_filtered ("Symbol \"");
3567439c 1262 fprintf_symbol_filtered (gdb_stdout, SYMBOL_PRINT_NAME (sym),
c906108c
SS
1263 current_language->la_language, DMGL_ANSI);
1264 printf_filtered ("\" is ");
c5aa993b 1265 val = SYMBOL_VALUE (sym);
e27d198c 1266 section = SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (sym), sym);
768a979c 1267 gdbarch = get_objfile_arch (SYMBOL_SYMTAB (sym)->objfile);
c906108c 1268
24d6c2a0
TT
1269 if (SYMBOL_COMPUTED_OPS (sym) != NULL)
1270 {
1271 SYMBOL_COMPUTED_OPS (sym)->describe_location (sym, context_pc,
1272 gdb_stdout);
1273 printf_filtered (".\n");
1274 return;
1275 }
1276
c906108c
SS
1277 switch (SYMBOL_CLASS (sym))
1278 {
1279 case LOC_CONST:
1280 case LOC_CONST_BYTES:
1281 printf_filtered ("constant");
1282 break;
1283
1284 case LOC_LABEL:
1285 printf_filtered ("a label at address ");
5af949e3
UW
1286 load_addr = SYMBOL_VALUE_ADDRESS (sym);
1287 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
c906108c
SS
1288 if (section_is_overlay (section))
1289 {
1290 load_addr = overlay_unmapped_address (load_addr, section);
1291 printf_filtered (",\n -- loaded at ");
5af949e3 1292 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
714835d5
UW
1293 printf_filtered (" in overlay section %s",
1294 section->the_bfd_section->name);
c906108c
SS
1295 }
1296 break;
1297
4c2df51b 1298 case LOC_COMPUTED:
24d6c2a0 1299 gdb_assert_not_reached (_("LOC_COMPUTED variable missing a method"));
4c2df51b 1300
c906108c 1301 case LOC_REGISTER:
768a979c
UW
1302 /* GDBARCH is the architecture associated with the objfile the symbol
1303 is defined in; the target architecture may be different, and may
1304 provide additional registers. However, we do not know the target
1305 architecture at this point. We assume the objfile architecture
1306 will contain all the standard registers that occur in debug info
1307 in that objfile. */
1308 regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
1309
2a2d4dc3
AS
1310 if (SYMBOL_IS_ARGUMENT (sym))
1311 printf_filtered (_("an argument in register %s"),
768a979c 1312 gdbarch_register_name (gdbarch, regno));
2a2d4dc3
AS
1313 else
1314 printf_filtered (_("a variable in register %s"),
768a979c 1315 gdbarch_register_name (gdbarch, regno));
c906108c
SS
1316 break;
1317
1318 case LOC_STATIC:
a3f17187 1319 printf_filtered (_("static storage at address "));
5af949e3
UW
1320 load_addr = SYMBOL_VALUE_ADDRESS (sym);
1321 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
c906108c
SS
1322 if (section_is_overlay (section))
1323 {
1324 load_addr = overlay_unmapped_address (load_addr, section);
a3f17187 1325 printf_filtered (_(",\n -- loaded at "));
5af949e3 1326 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
714835d5
UW
1327 printf_filtered (_(" in overlay section %s"),
1328 section->the_bfd_section->name);
c906108c
SS
1329 }
1330 break;
1331
c906108c 1332 case LOC_REGPARM_ADDR:
768a979c
UW
1333 /* Note comment at LOC_REGISTER. */
1334 regno = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
675dcf4f 1335 printf_filtered (_("address of an argument in register %s"),
768a979c 1336 gdbarch_register_name (gdbarch, regno));
c906108c
SS
1337 break;
1338
1339 case LOC_ARG:
a3f17187 1340 printf_filtered (_("an argument at offset %ld"), val);
c906108c
SS
1341 break;
1342
c906108c 1343 case LOC_LOCAL:
a3f17187 1344 printf_filtered (_("a local variable at frame offset %ld"), val);
c906108c
SS
1345 break;
1346
1347 case LOC_REF_ARG:
a3f17187 1348 printf_filtered (_("a reference argument at offset %ld"), val);
c906108c
SS
1349 break;
1350
c906108c 1351 case LOC_TYPEDEF:
a3f17187 1352 printf_filtered (_("a typedef"));
c906108c
SS
1353 break;
1354
1355 case LOC_BLOCK:
a3f17187 1356 printf_filtered (_("a function at address "));
675dcf4f 1357 load_addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
5af949e3 1358 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
c906108c
SS
1359 if (section_is_overlay (section))
1360 {
1361 load_addr = overlay_unmapped_address (load_addr, section);
a3f17187 1362 printf_filtered (_(",\n -- loaded at "));
5af949e3 1363 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
714835d5
UW
1364 printf_filtered (_(" in overlay section %s"),
1365 section->the_bfd_section->name);
c906108c
SS
1366 }
1367 break;
1368
1369 case LOC_UNRESOLVED:
1370 {
e27d198c 1371 struct bound_minimal_symbol msym;
c906108c 1372
e27d198c
TT
1373 msym = lookup_minimal_symbol_and_objfile (SYMBOL_LINKAGE_NAME (sym));
1374 if (msym.minsym == NULL)
c906108c
SS
1375 printf_filtered ("unresolved");
1376 else
1377 {
e27d198c
TT
1378 section = SYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
1379 load_addr = SYMBOL_VALUE_ADDRESS (msym.minsym);
e0740f77
JK
1380
1381 if (section
1382 && (section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
1383 printf_filtered (_("a thread-local variable at offset %s "
1384 "in the thread-local storage for `%s'"),
5af949e3 1385 paddress (gdbarch, load_addr),
4262abfb 1386 objfile_name (section->objfile));
e0740f77 1387 else
c906108c 1388 {
e0740f77 1389 printf_filtered (_("static storage at address "));
5af949e3 1390 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
e0740f77
JK
1391 if (section_is_overlay (section))
1392 {
1393 load_addr = overlay_unmapped_address (load_addr, section);
1394 printf_filtered (_(",\n -- loaded at "));
5af949e3 1395 fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
e0740f77
JK
1396 printf_filtered (_(" in overlay section %s"),
1397 section->the_bfd_section->name);
1398 }
c906108c
SS
1399 }
1400 }
1401 }
1402 break;
1403
c906108c 1404 case LOC_OPTIMIZED_OUT:
a3f17187 1405 printf_filtered (_("optimized out"));
c906108c 1406 break;
c5aa993b 1407
c906108c 1408 default:
a3f17187 1409 printf_filtered (_("of unknown (botched) type"));
c906108c
SS
1410 break;
1411 }
1412 printf_filtered (".\n");
1413}
1414\f
675dcf4f
MK
1415
1416static void
fba45db2 1417x_command (char *exp, int from_tty)
c906108c
SS
1418{
1419 struct expression *expr;
1420 struct format_data fmt;
1421 struct cleanup *old_chain;
1422 struct value *val;
1423
a6bac58e 1424 fmt.format = last_format ? last_format : 'x';
c906108c
SS
1425 fmt.size = last_size;
1426 fmt.count = 1;
a6bac58e 1427 fmt.raw = 0;
c906108c
SS
1428
1429 if (exp && *exp == '/')
1430 {
6f937416
PA
1431 const char *tmp = exp + 1;
1432
1433 fmt = decode_format (&tmp, last_format, last_size);
1434 exp = (char *) tmp;
c906108c
SS
1435 }
1436
1437 /* If we have an expression, evaluate it and use it as the address. */
1438
1439 if (exp != 0 && *exp != 0)
1440 {
1441 expr = parse_expression (exp);
675dcf4f
MK
1442 /* Cause expression not to be there any more if this command is
1443 repeated with Newline. But don't clobber a user-defined
1444 command's definition. */
c906108c
SS
1445 if (from_tty)
1446 *exp = 0;
c13c43fd 1447 old_chain = make_cleanup (free_current_contents, &expr);
c906108c 1448 val = evaluate_expression (expr);
df407dfe 1449 if (TYPE_CODE (value_type (val)) == TYPE_CODE_REF)
e1c34c5d 1450 val = coerce_ref (val);
c906108c 1451 /* In rvalue contexts, such as this, functions are coerced into
c5aa993b 1452 pointers to functions. This makes "x/i main" work. */
c0d8fd9a 1453 if (/* last_format == 'i' && */
df407dfe 1454 TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
c5aa993b 1455 && VALUE_LVAL (val) == lval_memory)
42ae5230 1456 next_address = value_address (val);
c906108c 1457 else
1aa20aa8 1458 next_address = value_as_address (val);
5d3729b5
UW
1459
1460 next_gdbarch = expr->gdbarch;
c906108c
SS
1461 do_cleanups (old_chain);
1462 }
1463
5d3729b5
UW
1464 if (!next_gdbarch)
1465 error_no_arg (_("starting display address"));
1466
1467 do_examine (fmt, next_gdbarch, next_address);
c906108c 1468
675dcf4f 1469 /* If the examine succeeds, we remember its size and format for next
9a22f0d0
PM
1470 time. Set last_size to 'b' for strings. */
1471 if (fmt.format == 's')
1472 last_size = 'b';
1473 else
1474 last_size = fmt.size;
c906108c
SS
1475 last_format = fmt.format;
1476
0df8b418 1477 /* Set a couple of internal variables if appropriate. */
c906108c
SS
1478 if (last_examine_value)
1479 {
1480 /* Make last address examined available to the user as $_. Use
c5aa993b 1481 the correct pointer type. */
4478b372 1482 struct type *pointer_type
df407dfe 1483 = lookup_pointer_type (value_type (last_examine_value));
c906108c 1484 set_internalvar (lookup_internalvar ("_"),
4478b372
JB
1485 value_from_pointer (pointer_type,
1486 last_examine_address));
c5aa993b 1487
675dcf4f
MK
1488 /* Make contents of last address examined available to the user
1489 as $__. If the last value has not been fetched from memory
1490 then don't fetch it now; instead mark it by voiding the $__
1491 variable. */
d69fe07e 1492 if (value_lazy (last_examine_value))
4fa62494 1493 clear_internalvar (lookup_internalvar ("__"));
c906108c
SS
1494 else
1495 set_internalvar (lookup_internalvar ("__"), last_examine_value);
1496 }
1497}
c906108c 1498\f
c5aa993b 1499
c906108c
SS
1500/* Add an expression to the auto-display chain.
1501 Specify the expression. */
1502
1503static void
6f937416 1504display_command (char *arg, int from_tty)
c906108c
SS
1505{
1506 struct format_data fmt;
52f0bd74
AC
1507 struct expression *expr;
1508 struct display *new;
c906108c 1509 int display_it = 1;
6f937416 1510 const char *exp = arg;
c906108c
SS
1511
1512#if defined(TUI)
021e7609
AC
1513 /* NOTE: cagney/2003-02-13 The `tui_active' was previously
1514 `tui_version'. */
fd33e6cb 1515 if (tui_active && exp != NULL && *exp == '$')
080ce8c0 1516 display_it = (tui_set_layout_for_display_command (exp) == TUI_FAILURE);
c906108c
SS
1517#endif
1518
1519 if (display_it)
1520 {
1521 if (exp == 0)
1522 {
1523 do_displays ();
1524 return;
1525 }
1526
1527 if (*exp == '/')
1528 {
1529 exp++;
1530 fmt = decode_format (&exp, 0, 0);
1531 if (fmt.size && fmt.format == 0)
1532 fmt.format = 'x';
1533 if (fmt.format == 'i' || fmt.format == 's')
1534 fmt.size = 'b';
1535 }
1536 else
1537 {
1538 fmt.format = 0;
1539 fmt.size = 0;
1540 fmt.count = 0;
a6bac58e 1541 fmt.raw = 0;
c906108c
SS
1542 }
1543
a3247a22 1544 innermost_block = NULL;
c906108c
SS
1545 expr = parse_expression (exp);
1546
1547 new = (struct display *) xmalloc (sizeof (struct display));
1548
fa8a61dc 1549 new->exp_string = xstrdup (exp);
c906108c
SS
1550 new->exp = expr;
1551 new->block = innermost_block;
6c95b8df 1552 new->pspace = current_program_space;
c906108c
SS
1553 new->next = display_chain;
1554 new->number = ++display_number;
1555 new->format = fmt;
b5de0fa7 1556 new->enabled_p = 1;
c906108c
SS
1557 display_chain = new;
1558
1559 if (from_tty && target_has_execution)
1560 do_one_display (new);
1561
1562 dont_repeat ();
1563 }
1564}
1565
1566static void
fba45db2 1567free_display (struct display *d)
c906108c 1568{
fa8a61dc 1569 xfree (d->exp_string);
b8c9b27d
KB
1570 xfree (d->exp);
1571 xfree (d);
c906108c
SS
1572}
1573
675dcf4f
MK
1574/* Clear out the display_chain. Done when new symtabs are loaded,
1575 since this invalidates the types stored in many expressions. */
c906108c
SS
1576
1577void
fba45db2 1578clear_displays (void)
c906108c 1579{
52f0bd74 1580 struct display *d;
c906108c
SS
1581
1582 while ((d = display_chain) != NULL)
1583 {
c906108c 1584 display_chain = d->next;
fa8a61dc 1585 free_display (d);
c906108c
SS
1586 }
1587}
1588
3c3fe74c 1589/* Delete the auto-display DISPLAY. */
c906108c
SS
1590
1591static void
3c3fe74c 1592delete_display (struct display *display)
c906108c 1593{
3c3fe74c 1594 struct display *d;
c906108c 1595
3c3fe74c 1596 gdb_assert (display != NULL);
c906108c 1597
3c3fe74c
PA
1598 if (display_chain == display)
1599 display_chain = display->next;
1600
1601 ALL_DISPLAYS (d)
1602 if (d->next == display)
c906108c 1603 {
3c3fe74c
PA
1604 d->next = display->next;
1605 break;
c906108c 1606 }
3c3fe74c
PA
1607
1608 free_display (display);
c906108c
SS
1609}
1610
c9174737
PA
1611/* Call FUNCTION on each of the displays whose numbers are given in
1612 ARGS. DATA is passed unmodified to FUNCTION. */
c906108c
SS
1613
1614static void
c9174737
PA
1615map_display_numbers (char *args,
1616 void (*function) (struct display *,
1617 void *),
1618 void *data)
c906108c 1619{
197f0a60 1620 struct get_number_or_range_state state;
c9174737 1621 int num;
c906108c 1622
c9174737
PA
1623 if (args == NULL)
1624 error_no_arg (_("one or more display numbers"));
c906108c 1625
197f0a60 1626 init_number_or_range (&state, args);
c9174737 1627
197f0a60 1628 while (!state.finished)
c906108c 1629 {
197f0a60 1630 char *p = state.string;
c906108c 1631
197f0a60 1632 num = get_number_or_range (&state);
3c3fe74c
PA
1633 if (num == 0)
1634 warning (_("bad display number at or near '%s'"), p);
1635 else
1636 {
c9174737 1637 struct display *d, *tmp;
c906108c 1638
c9174737 1639 ALL_DISPLAYS_SAFE (d, tmp)
3c3fe74c
PA
1640 if (d->number == num)
1641 break;
1642 if (d == NULL)
1643 printf_unfiltered (_("No display number %d.\n"), num);
1644 else
c9174737 1645 function (d, data);
3c3fe74c 1646 }
c906108c 1647 }
c9174737
PA
1648}
1649
1650/* Callback for map_display_numbers, that deletes a display. */
1651
1652static void
1653do_delete_display (struct display *d, void *data)
1654{
1655 delete_display (d);
1656}
1657
1658/* "undisplay" command. */
1659
1660static void
1661undisplay_command (char *args, int from_tty)
1662{
c9174737
PA
1663 if (args == NULL)
1664 {
1665 if (query (_("Delete all auto-display expressions? ")))
1666 clear_displays ();
1667 dont_repeat ();
1668 return;
1669 }
1670
1671 map_display_numbers (args, do_delete_display, NULL);
c906108c
SS
1672 dont_repeat ();
1673}
1674
1675/* Display a single auto-display.
1676 Do nothing if the display cannot be printed in the current context,
0df8b418 1677 or if the display is disabled. */
c906108c
SS
1678
1679static void
fba45db2 1680do_one_display (struct display *d)
c906108c 1681{
af6e93b2 1682 struct cleanup *old_chain;
c906108c
SS
1683 int within_current_scope;
1684
b5de0fa7 1685 if (d->enabled_p == 0)
c906108c
SS
1686 return;
1687
704e9165
UW
1688 /* The expression carries the architecture that was used at parse time.
1689 This is a problem if the expression depends on architecture features
1690 (e.g. register numbers), and the current architecture is now different.
1691 For example, a display statement like "display/i $pc" is expected to
1692 display the PC register of the current architecture, not the arch at
1693 the time the display command was given. Therefore, we re-parse the
1694 expression if the current architecture has changed. */
1695 if (d->exp != NULL && d->exp->gdbarch != get_current_arch ())
1696 {
1697 xfree (d->exp);
1698 d->exp = NULL;
1699 d->block = NULL;
1700 }
1701
a3247a22
PP
1702 if (d->exp == NULL)
1703 {
1704 volatile struct gdb_exception ex;
ad3bbd48 1705
a3247a22
PP
1706 TRY_CATCH (ex, RETURN_MASK_ALL)
1707 {
1708 innermost_block = NULL;
1709 d->exp = parse_expression (d->exp_string);
1710 d->block = innermost_block;
1711 }
1712 if (ex.reason < 0)
1713 {
1714 /* Can't re-parse the expression. Disable this display item. */
1715 d->enabled_p = 0;
1716 warning (_("Unable to display \"%s\": %s"),
1717 d->exp_string, ex.message);
1718 return;
1719 }
1720 }
1721
c906108c 1722 if (d->block)
6c95b8df
PA
1723 {
1724 if (d->pspace == current_program_space)
1725 within_current_scope = contained_in (get_selected_block (0), d->block);
1726 else
1727 within_current_scope = 0;
1728 }
c906108c
SS
1729 else
1730 within_current_scope = 1;
1731 if (!within_current_scope)
1732 return;
1733
9d8fa392 1734 old_chain = make_cleanup_restore_integer (&current_display_number);
c906108c
SS
1735 current_display_number = d->number;
1736
1737 annotate_display_begin ();
1738 printf_filtered ("%d", d->number);
1739 annotate_display_number_end ();
1740 printf_filtered (": ");
1741 if (d->format.size)
1742 {
9d8fa392 1743 volatile struct gdb_exception ex;
c906108c
SS
1744
1745 annotate_display_format ();
1746
1747 printf_filtered ("x/");
1748 if (d->format.count != 1)
1749 printf_filtered ("%d", d->format.count);
1750 printf_filtered ("%c", d->format.format);
1751 if (d->format.format != 'i' && d->format.format != 's')
1752 printf_filtered ("%c", d->format.size);
1753 printf_filtered (" ");
1754
1755 annotate_display_expression ();
1756
fa8a61dc 1757 puts_filtered (d->exp_string);
c906108c
SS
1758 annotate_display_expression_end ();
1759
6a2eb474 1760 if (d->format.count != 1 || d->format.format == 'i')
c906108c
SS
1761 printf_filtered ("\n");
1762 else
1763 printf_filtered (" ");
c5aa993b 1764
c906108c
SS
1765 annotate_display_value ();
1766
9d8fa392
PA
1767 TRY_CATCH (ex, RETURN_MASK_ERROR)
1768 {
1769 struct value *val;
1770 CORE_ADDR addr;
1771
1772 val = evaluate_expression (d->exp);
1773 addr = value_as_address (val);
1774 if (d->format.format == 'i')
1775 addr = gdbarch_addr_bits_remove (d->exp->gdbarch, addr);
1776 do_examine (d->format, d->exp->gdbarch, addr);
1777 }
1778 if (ex.reason < 0)
1779 fprintf_filtered (gdb_stdout, _("<error: %s>\n"), ex.message);
c906108c
SS
1780 }
1781 else
1782 {
79a45b7d 1783 struct value_print_options opts;
9d8fa392 1784 volatile struct gdb_exception ex;
79a45b7d 1785
c906108c
SS
1786 annotate_display_format ();
1787
1788 if (d->format.format)
1789 printf_filtered ("/%c ", d->format.format);
1790
1791 annotate_display_expression ();
1792
fa8a61dc 1793 puts_filtered (d->exp_string);
c906108c
SS
1794 annotate_display_expression_end ();
1795
1796 printf_filtered (" = ");
1797
1798 annotate_display_expression ();
1799
79a45b7d 1800 get_formatted_print_options (&opts, d->format.format);
a6bac58e 1801 opts.raw = d->format.raw;
9d8fa392
PA
1802
1803 TRY_CATCH (ex, RETURN_MASK_ERROR)
1804 {
1805 struct value *val;
1806
1807 val = evaluate_expression (d->exp);
1808 print_formatted (val, d->format.size, &opts, gdb_stdout);
1809 }
1810 if (ex.reason < 0)
1811 fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
c906108c
SS
1812 printf_filtered ("\n");
1813 }
1814
1815 annotate_display_end ();
1816
1817 gdb_flush (gdb_stdout);
9d8fa392 1818 do_cleanups (old_chain);
c906108c
SS
1819}
1820
1821/* Display all of the values on the auto-display chain which can be
1822 evaluated in the current scope. */
1823
1824void
fba45db2 1825do_displays (void)
c906108c 1826{
52f0bd74 1827 struct display *d;
c906108c
SS
1828
1829 for (d = display_chain; d; d = d->next)
1830 do_one_display (d);
1831}
1832
1833/* Delete the auto-display which we were in the process of displaying.
1834 This is done when there is an error or a signal. */
1835
1836void
fba45db2 1837disable_display (int num)
c906108c 1838{
52f0bd74 1839 struct display *d;
c906108c
SS
1840
1841 for (d = display_chain; d; d = d->next)
1842 if (d->number == num)
1843 {
b5de0fa7 1844 d->enabled_p = 0;
c906108c
SS
1845 return;
1846 }
a3f17187 1847 printf_unfiltered (_("No display number %d.\n"), num);
c906108c 1848}
c5aa993b 1849
c906108c 1850void
fba45db2 1851disable_current_display (void)
c906108c
SS
1852{
1853 if (current_display_number >= 0)
1854 {
1855 disable_display (current_display_number);
3e43a32a
MS
1856 fprintf_unfiltered (gdb_stderr,
1857 _("Disabling display %d to "
1858 "avoid infinite recursion.\n"),
c5aa993b 1859 current_display_number);
c906108c
SS
1860 }
1861 current_display_number = -1;
1862}
1863
1864static void
fba45db2 1865display_info (char *ignore, int from_tty)
c906108c 1866{
52f0bd74 1867 struct display *d;
c906108c
SS
1868
1869 if (!display_chain)
a3f17187 1870 printf_unfiltered (_("There are no auto-display expressions now.\n"));
c906108c 1871 else
a3f17187
AC
1872 printf_filtered (_("Auto-display expressions now in effect:\n\
1873Num Enb Expression\n"));
c906108c
SS
1874
1875 for (d = display_chain; d; d = d->next)
1876 {
b5de0fa7 1877 printf_filtered ("%d: %c ", d->number, "ny"[(int) d->enabled_p]);
c906108c
SS
1878 if (d->format.size)
1879 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
c5aa993b 1880 d->format.format);
c906108c
SS
1881 else if (d->format.format)
1882 printf_filtered ("/%c ", d->format.format);
fa8a61dc 1883 puts_filtered (d->exp_string);
ae767bfb 1884 if (d->block && !contained_in (get_selected_block (0), d->block))
a3f17187 1885 printf_filtered (_(" (cannot be evaluated in the current context)"));
c906108c
SS
1886 printf_filtered ("\n");
1887 gdb_flush (gdb_stdout);
1888 }
1889}
1890
c9174737
PA
1891/* Callback fo map_display_numbers, that enables or disables the
1892 passed in display D. */
1893
c906108c 1894static void
c9174737 1895do_enable_disable_display (struct display *d, void *data)
c906108c 1896{
c9174737
PA
1897 d->enabled_p = *(int *) data;
1898}
c906108c 1899
c9174737
PA
1900/* Implamentation of both the "disable display" and "enable display"
1901 commands. ENABLE decides what to do. */
1902
1903static void
1904enable_disable_display_command (char *args, int from_tty, int enable)
1905{
1906 if (args == NULL)
c906108c 1907 {
c9174737 1908 struct display *d;
c5aa993b 1909
c9174737
PA
1910 ALL_DISPLAYS (d)
1911 d->enabled_p = enable;
1912 return;
1913 }
c5aa993b 1914
c9174737 1915 map_display_numbers (args, do_enable_disable_display, &enable);
c906108c
SS
1916}
1917
c9174737
PA
1918/* The "enable display" command. */
1919
c906108c 1920static void
c9174737 1921enable_display_command (char *args, int from_tty)
c906108c 1922{
c9174737
PA
1923 enable_disable_display_command (args, from_tty, 1);
1924}
c5aa993b 1925
c9174737 1926/* The "disable display" command. */
c906108c 1927
c9174737
PA
1928static void
1929disable_display_command (char *args, int from_tty)
1930{
1931 enable_disable_display_command (args, from_tty, 0);
c906108c 1932}
a3247a22 1933
a3247a22
PP
1934/* display_chain items point to blocks and expressions. Some expressions in
1935 turn may point to symbols.
1936 Both symbols and blocks are obstack_alloc'd on objfile_stack, and are
1937 obstack_free'd when a shared library is unloaded.
1938 Clear pointers that are about to become dangling.
1939 Both .exp and .block fields will be restored next time we need to display
1940 an item by re-parsing .exp_string field in the new execution context. */
1941
1942static void
1943clear_dangling_display_expressions (struct so_list *solib)
1944{
c0201579 1945 struct objfile *objfile = solib->objfile;
a3247a22 1946 struct display *d;
a3247a22 1947
c0201579
JK
1948 /* With no symbol file we cannot have a block or expression from it. */
1949 if (objfile == NULL)
1950 return;
1951 if (objfile->separate_debug_objfile_backlink)
1952 objfile = objfile->separate_debug_objfile_backlink;
1953 gdb_assert (objfile->pspace == solib->pspace);
1954
1955 for (d = display_chain; d != NULL; d = d->next)
a3247a22 1956 {
c0201579
JK
1957 if (d->pspace != solib->pspace)
1958 continue;
1959
1960 if (lookup_objfile_from_block (d->block) == objfile
1961 || (d->exp && exp_uses_objfile (d->exp, objfile)))
1962 {
1963 xfree (d->exp);
1964 d->exp = NULL;
1965 d->block = NULL;
1966 }
a3247a22
PP
1967 }
1968}
c906108c 1969\f
c5aa993b 1970
675dcf4f 1971/* Print the value in stack frame FRAME of a variable specified by a
aad95b57
TT
1972 struct symbol. NAME is the name to print; if NULL then VAR's print
1973 name will be used. STREAM is the ui_file on which to print the
1974 value. INDENT specifies the number of indent levels to print
8f043999
JK
1975 before printing the variable name.
1976
1977 This function invalidates FRAME. */
c906108c
SS
1978
1979void
aad95b57
TT
1980print_variable_and_value (const char *name, struct symbol *var,
1981 struct frame_info *frame,
1982 struct ui_file *stream, int indent)
c906108c 1983{
0f6a939d 1984 volatile struct gdb_exception except;
c906108c 1985
aad95b57
TT
1986 if (!name)
1987 name = SYMBOL_PRINT_NAME (var);
1988
1989 fprintf_filtered (stream, "%s%s = ", n_spaces (2 * indent), name);
0f6a939d
PM
1990 TRY_CATCH (except, RETURN_MASK_ERROR)
1991 {
1992 struct value *val;
1993 struct value_print_options opts;
aad95b57 1994
0f6a939d
PM
1995 val = read_var_value (var, frame);
1996 get_user_print_options (&opts);
3343315b 1997 opts.deref_ref = 1;
0f6a939d 1998 common_val_print (val, stream, indent, &opts, current_language);
8f043999
JK
1999
2000 /* common_val_print invalidates FRAME when a pretty printer calls inferior
2001 function. */
2002 frame = NULL;
0f6a939d
PM
2003 }
2004 if (except.reason < 0)
2005 fprintf_filtered(stream, "<error reading variable %s (%s)>", name,
2006 except.message);
aad95b57 2007 fprintf_filtered (stream, "\n");
c906108c
SS
2008}
2009
c2792f5a
DE
2010/* Subroutine of ui_printf to simplify it.
2011 Print VALUE to STREAM using FORMAT.
e12f57ab 2012 VALUE is a C-style string on the target. */
c2792f5a
DE
2013
2014static void
2015printf_c_string (struct ui_file *stream, const char *format,
2016 struct value *value)
2017{
2018 gdb_byte *str;
2019 CORE_ADDR tem;
2020 int j;
2021
2022 tem = value_as_address (value);
2023
2024 /* This is a %s argument. Find the length of the string. */
2025 for (j = 0;; j++)
2026 {
2027 gdb_byte c;
2028
2029 QUIT;
2030 read_memory (tem + j, &c, 1);
2031 if (c == 0)
2032 break;
2033 }
2034
2035 /* Copy the string contents into a string inside GDB. */
2036 str = (gdb_byte *) alloca (j + 1);
2037 if (j != 0)
2038 read_memory (tem, str, j);
2039 str[j] = 0;
2040
2041 fprintf_filtered (stream, format, (char *) str);
2042}
2043
2044/* Subroutine of ui_printf to simplify it.
2045 Print VALUE to STREAM using FORMAT.
e12f57ab 2046 VALUE is a wide C-style string on the target. */
c2792f5a
DE
2047
2048static void
2049printf_wide_c_string (struct ui_file *stream, const char *format,
2050 struct value *value)
2051{
2052 gdb_byte *str;
2053 CORE_ADDR tem;
2054 int j;
2055 struct gdbarch *gdbarch = get_type_arch (value_type (value));
2056 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2057 struct type *wctype = lookup_typename (current_language, gdbarch,
2058 "wchar_t", NULL, 0);
2059 int wcwidth = TYPE_LENGTH (wctype);
2060 gdb_byte *buf = alloca (wcwidth);
2061 struct obstack output;
2062 struct cleanup *inner_cleanup;
2063
2064 tem = value_as_address (value);
2065
2066 /* This is a %s argument. Find the length of the string. */
2067 for (j = 0;; j += wcwidth)
2068 {
2069 QUIT;
2070 read_memory (tem + j, buf, wcwidth);
2071 if (extract_unsigned_integer (buf, wcwidth, byte_order) == 0)
2072 break;
2073 }
2074
2075 /* Copy the string contents into a string inside GDB. */
2076 str = (gdb_byte *) alloca (j + wcwidth);
2077 if (j != 0)
2078 read_memory (tem, str, j);
2079 memset (&str[j], 0, wcwidth);
2080
2081 obstack_init (&output);
2082 inner_cleanup = make_cleanup_obstack_free (&output);
2083
2084 convert_between_encodings (target_wide_charset (gdbarch),
2085 host_charset (),
2086 str, j, wcwidth,
2087 &output, translit_char);
2088 obstack_grow_str0 (&output, "");
2089
2090 fprintf_filtered (stream, format, obstack_base (&output));
2091 do_cleanups (inner_cleanup);
2092}
2093
2094/* Subroutine of ui_printf to simplify it.
2095 Print VALUE, a decimal floating point value, to STREAM using FORMAT. */
2096
2097static void
2098printf_decfloat (struct ui_file *stream, const char *format,
2099 struct value *value)
2100{
2101 const gdb_byte *param_ptr = value_contents (value);
2102
2103#if defined (PRINTF_HAS_DECFLOAT)
2104 /* If we have native support for Decimal floating
2105 printing, handle it here. */
2106 fprintf_filtered (stream, format, param_ptr);
2107#else
2108 /* As a workaround until vasprintf has native support for DFP
2109 we convert the DFP values to string and print them using
2110 the %s format specifier. */
2111 const char *p;
2112
2113 /* Parameter data. */
2114 struct type *param_type = value_type (value);
2115 struct gdbarch *gdbarch = get_type_arch (param_type);
2116 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2117
2118 /* DFP output data. */
2119 struct value *dfp_value = NULL;
2120 gdb_byte *dfp_ptr;
2121 int dfp_len = 16;
2122 gdb_byte dec[16];
2123 struct type *dfp_type = NULL;
2124 char decstr[MAX_DECIMAL_STRING];
2125
2126 /* Points to the end of the string so that we can go back
2127 and check for DFP length modifiers. */
2128 p = format + strlen (format);
2129
2130 /* Look for the float/double format specifier. */
2131 while (*p != 'f' && *p != 'e' && *p != 'E'
2132 && *p != 'g' && *p != 'G')
2133 p--;
2134
2135 /* Search for the '%' char and extract the size and type of
2136 the output decimal value based on its modifiers
2137 (%Hf, %Df, %DDf). */
2138 while (*--p != '%')
2139 {
2140 if (*p == 'H')
2141 {
2142 dfp_len = 4;
2143 dfp_type = builtin_type (gdbarch)->builtin_decfloat;
2144 }
2145 else if (*p == 'D' && *(p - 1) == 'D')
2146 {
2147 dfp_len = 16;
2148 dfp_type = builtin_type (gdbarch)->builtin_declong;
2149 p--;
2150 }
2151 else
2152 {
2153 dfp_len = 8;
2154 dfp_type = builtin_type (gdbarch)->builtin_decdouble;
2155 }
2156 }
2157
2158 /* Conversion between different DFP types. */
2159 if (TYPE_CODE (param_type) == TYPE_CODE_DECFLOAT)
2160 decimal_convert (param_ptr, TYPE_LENGTH (param_type),
2161 byte_order, dec, dfp_len, byte_order);
2162 else
2163 /* If this is a non-trivial conversion, just output 0.
2164 A correct converted value can be displayed by explicitly
2165 casting to a DFP type. */
2166 decimal_from_string (dec, dfp_len, byte_order, "0");
2167
2168 dfp_value = value_from_decfloat (dfp_type, dec);
2169
2170 dfp_ptr = (gdb_byte *) value_contents (dfp_value);
2171
2172 decimal_to_string (dfp_ptr, dfp_len, byte_order, decstr);
2173
2174 /* Print the DFP value. */
2175 fprintf_filtered (stream, "%s", decstr);
2176#endif
2177}
2178
2179/* Subroutine of ui_printf to simplify it.
2180 Print VALUE, a target pointer, to STREAM using FORMAT. */
2181
2182static void
2183printf_pointer (struct ui_file *stream, const char *format,
2184 struct value *value)
2185{
2186 /* We avoid the host's %p because pointers are too
2187 likely to be the wrong size. The only interesting
2188 modifier for %p is a width; extract that, and then
2189 handle %p as glibc would: %#x or a literal "(nil)". */
2190
2191 const char *p;
2192 char *fmt, *fmt_p;
2193#ifdef PRINTF_HAS_LONG_LONG
2194 long long val = value_as_long (value);
2195#else
2196 long val = value_as_long (value);
2197#endif
2198
2199 fmt = alloca (strlen (format) + 5);
2200
2201 /* Copy up to the leading %. */
2202 p = format;
2203 fmt_p = fmt;
2204 while (*p)
2205 {
2206 int is_percent = (*p == '%');
2207
2208 *fmt_p++ = *p++;
2209 if (is_percent)
2210 {
2211 if (*p == '%')
2212 *fmt_p++ = *p++;
2213 else
2214 break;
2215 }
2216 }
2217
2218 if (val != 0)
2219 *fmt_p++ = '#';
2220
2221 /* Copy any width. */
2222 while (*p >= '0' && *p < '9')
2223 *fmt_p++ = *p++;
2224
2225 gdb_assert (*p == 'p' && *(p + 1) == '\0');
2226 if (val != 0)
2227 {
2228#ifdef PRINTF_HAS_LONG_LONG
2229 *fmt_p++ = 'l';
2230#endif
2231 *fmt_p++ = 'l';
2232 *fmt_p++ = 'x';
2233 *fmt_p++ = '\0';
2234 fprintf_filtered (stream, fmt, val);
2235 }
2236 else
2237 {
2238 *fmt_p++ = 's';
2239 *fmt_p++ = '\0';
2240 fprintf_filtered (stream, fmt, "(nil)");
2241 }
2242}
2243
a04b0428
JB
2244/* printf "printf format string" ARG to STREAM. */
2245
2246static void
bbc13ae3 2247ui_printf (const char *arg, struct ui_file *stream)
c906108c 2248{
d3ce09f5 2249 struct format_piece *fpieces;
bbc13ae3 2250 const char *s = arg;
3d6d86c6 2251 struct value **val_args;
c906108c
SS
2252 int allocated_args = 20;
2253 struct cleanup *old_cleanups;
2254
675dcf4f 2255 val_args = xmalloc (allocated_args * sizeof (struct value *));
c13c43fd 2256 old_cleanups = make_cleanup (free_current_contents, &val_args);
c906108c
SS
2257
2258 if (s == 0)
e2e0b3e5 2259 error_no_arg (_("format-control string and values to print"));
c906108c 2260
bbc13ae3 2261 s = skip_spaces_const (s);
c906108c 2262
675dcf4f 2263 /* A format string should follow, enveloped in double quotes. */
c906108c 2264 if (*s++ != '"')
8a3fe4f8 2265 error (_("Bad format string, missing '\"'."));
c906108c 2266
d3ce09f5 2267 fpieces = parse_format_string (&s);
c906108c 2268
d3ce09f5 2269 make_cleanup (free_format_pieces_cleanup, &fpieces);
c906108c 2270
d3ce09f5
SS
2271 if (*s++ != '"')
2272 error (_("Bad format string, non-terminated '\"'."));
2273
bbc13ae3 2274 s = skip_spaces_const (s);
c906108c
SS
2275
2276 if (*s != ',' && *s != 0)
8a3fe4f8 2277 error (_("Invalid argument syntax"));
c906108c 2278
c5aa993b
JM
2279 if (*s == ',')
2280 s++;
bbc13ae3 2281 s = skip_spaces_const (s);
c906108c 2282
c906108c 2283 {
d3ce09f5 2284 int nargs = 0;
c906108c 2285 int nargs_wanted;
d3ce09f5
SS
2286 int i, fr;
2287 char *current_substring;
c906108c 2288
c906108c 2289 nargs_wanted = 0;
d3ce09f5
SS
2290 for (fr = 0; fpieces[fr].string != NULL; fr++)
2291 if (fpieces[fr].argclass != literal_piece)
2292 ++nargs_wanted;
c906108c
SS
2293
2294 /* Now, parse all arguments and evaluate them.
2295 Store the VALUEs in VAL_ARGS. */
2296
2297 while (*s != '\0')
2298 {
bbc13ae3 2299 const char *s1;
ad3bbd48 2300
c906108c 2301 if (nargs == allocated_args)
f976f6d4
AC
2302 val_args = (struct value **) xrealloc ((char *) val_args,
2303 (allocated_args *= 2)
2304 * sizeof (struct value *));
a04b0428
JB
2305 s1 = s;
2306 val_args[nargs] = parse_to_comma_and_eval (&s1);
c5aa993b 2307
c906108c
SS
2308 nargs++;
2309 s = s1;
2310 if (*s == ',')
2311 s++;
2312 }
c5aa993b 2313
c906108c 2314 if (nargs != nargs_wanted)
8a3fe4f8 2315 error (_("Wrong number of arguments for specified format-string"));
c906108c
SS
2316
2317 /* Now actually print them. */
d3ce09f5
SS
2318 i = 0;
2319 for (fr = 0; fpieces[fr].string != NULL; fr++)
c906108c 2320 {
d3ce09f5
SS
2321 current_substring = fpieces[fr].string;
2322 switch (fpieces[fr].argclass)
c906108c
SS
2323 {
2324 case string_arg:
c2792f5a 2325 printf_c_string (stream, current_substring, val_args[i]);
c906108c 2326 break;
6c7a06a3 2327 case wide_string_arg:
c2792f5a 2328 printf_wide_c_string (stream, current_substring, val_args[i]);
6c7a06a3
TT
2329 break;
2330 case wide_char_arg:
2331 {
50810684
UW
2332 struct gdbarch *gdbarch
2333 = get_type_arch (value_type (val_args[i]));
2334 struct type *wctype = lookup_typename (current_language, gdbarch,
e6c014f2 2335 "wchar_t", NULL, 0);
6c7a06a3
TT
2336 struct type *valtype;
2337 struct obstack output;
2338 struct cleanup *inner_cleanup;
2339 const gdb_byte *bytes;
2340
2341 valtype = value_type (val_args[i]);
2342 if (TYPE_LENGTH (valtype) != TYPE_LENGTH (wctype)
2343 || TYPE_CODE (valtype) != TYPE_CODE_INT)
2344 error (_("expected wchar_t argument for %%lc"));
2345
2346 bytes = value_contents (val_args[i]);
2347
2348 obstack_init (&output);
2349 inner_cleanup = make_cleanup_obstack_free (&output);
2350
f870a310 2351 convert_between_encodings (target_wide_charset (gdbarch),
6c7a06a3
TT
2352 host_charset (),
2353 bytes, TYPE_LENGTH (valtype),
2354 TYPE_LENGTH (valtype),
2355 &output, translit_char);
2356 obstack_grow_str0 (&output, "");
2357
f1421989
HZ
2358 fprintf_filtered (stream, current_substring,
2359 obstack_base (&output));
6c7a06a3
TT
2360 do_cleanups (inner_cleanup);
2361 }
2362 break;
c906108c
SS
2363 case double_arg:
2364 {
b806fb9a
UW
2365 struct type *type = value_type (val_args[i]);
2366 DOUBLEST val;
2367 int inv;
2368
2369 /* If format string wants a float, unchecked-convert the value
2370 to floating point of the same size. */
50810684 2371 type = float_type_from_length (type);
b806fb9a
UW
2372 val = unpack_double (type, value_contents (val_args[i]), &inv);
2373 if (inv)
2374 error (_("Invalid floating value found in program."));
2375
f1421989 2376 fprintf_filtered (stream, current_substring, (double) val);
c906108c
SS
2377 break;
2378 }
46e9880c
DJ
2379 case long_double_arg:
2380#ifdef HAVE_LONG_DOUBLE
2381 {
b806fb9a
UW
2382 struct type *type = value_type (val_args[i]);
2383 DOUBLEST val;
2384 int inv;
2385
2386 /* If format string wants a float, unchecked-convert the value
2387 to floating point of the same size. */
50810684 2388 type = float_type_from_length (type);
b806fb9a
UW
2389 val = unpack_double (type, value_contents (val_args[i]), &inv);
2390 if (inv)
2391 error (_("Invalid floating value found in program."));
2392
f1421989
HZ
2393 fprintf_filtered (stream, current_substring,
2394 (long double) val);
46e9880c
DJ
2395 break;
2396 }
2397#else
2398 error (_("long double not supported in printf"));
2399#endif
c906108c 2400 case long_long_arg:
74a0d9f6 2401#ifdef PRINTF_HAS_LONG_LONG
c906108c
SS
2402 {
2403 long long val = value_as_long (val_args[i]);
ad3bbd48 2404
f1421989 2405 fprintf_filtered (stream, current_substring, val);
c906108c
SS
2406 break;
2407 }
2408#else
8a3fe4f8 2409 error (_("long long not supported in printf"));
c906108c
SS
2410#endif
2411 case int_arg:
2412 {
46e9880c 2413 int val = value_as_long (val_args[i]);
ad3bbd48 2414
f1421989 2415 fprintf_filtered (stream, current_substring, val);
46e9880c
DJ
2416 break;
2417 }
2418 case long_arg:
2419 {
c906108c 2420 long val = value_as_long (val_args[i]);
ad3bbd48 2421
f1421989 2422 fprintf_filtered (stream, current_substring, val);
c906108c
SS
2423 break;
2424 }
0aea4bf3 2425 /* Handles decimal floating values. */
c2792f5a
DE
2426 case decfloat_arg:
2427 printf_decfloat (stream, current_substring, val_args[i]);
2428 break;
2025a643 2429 case ptr_arg:
c2792f5a
DE
2430 printf_pointer (stream, current_substring, val_args[i]);
2431 break;
d3ce09f5
SS
2432 case literal_piece:
2433 /* Print a portion of the format string that has no
2434 directives. Note that this will not include any
2435 ordinary %-specs, but it might include "%%". That is
2436 why we use printf_filtered and not puts_filtered here.
2437 Also, we pass a dummy argument because some platforms
2438 have modified GCC to include -Wformat-security by
2439 default, which will warn here if there is no
2440 argument. */
2441 fprintf_filtered (stream, current_substring, 0);
2442 break;
675dcf4f
MK
2443 default:
2444 internal_error (__FILE__, __LINE__,
2025a643 2445 _("failed internal consistency check"));
c906108c 2446 }
d3ce09f5
SS
2447 /* Maybe advance to the next argument. */
2448 if (fpieces[fr].argclass != literal_piece)
2449 ++i;
c906108c 2450 }
c906108c
SS
2451 }
2452 do_cleanups (old_cleanups);
2453}
c906108c 2454
f1421989
HZ
2455/* Implement the "printf" command. */
2456
a04b0428 2457static void
f1421989
HZ
2458printf_command (char *arg, int from_tty)
2459{
a04b0428 2460 ui_printf (arg, gdb_stdout);
50b34a18 2461 gdb_flush (gdb_stdout);
f1421989
HZ
2462}
2463
2464/* Implement the "eval" command. */
2465
2466static void
2467eval_command (char *arg, int from_tty)
2468{
2469 struct ui_file *ui_out = mem_fileopen ();
2470 struct cleanup *cleanups = make_cleanup_ui_file_delete (ui_out);
2471 char *expanded;
2472
a04b0428 2473 ui_printf (arg, ui_out);
f1421989
HZ
2474
2475 expanded = ui_file_xstrdup (ui_out, NULL);
2476 make_cleanup (xfree, expanded);
2477
2478 execute_command (expanded, from_tty);
2479
2480 do_cleanups (cleanups);
2481}
2482
c906108c 2483void
fba45db2 2484_initialize_printcmd (void)
c906108c 2485{
c94fdfd0
EZ
2486 struct cmd_list_element *c;
2487
c906108c
SS
2488 current_display_number = -1;
2489
a3247a22
PP
2490 observer_attach_solib_unloaded (clear_dangling_display_expressions);
2491
c906108c 2492 add_info ("address", address_info,
1bedd215 2493 _("Describe where symbol SYM is stored."));
c906108c 2494
1bedd215
AC
2495 add_info ("symbol", sym_info, _("\
2496Describe what symbol is at location ADDR.\n\
2497Only for symbols with fixed locations (global or static scope)."));
c906108c 2498
1bedd215
AC
2499 add_com ("x", class_vars, x_command, _("\
2500Examine memory: x/FMT ADDRESS.\n\
c906108c
SS
2501ADDRESS is an expression for the memory address to examine.\n\
2502FMT is a repeat count followed by a format letter and a size letter.\n\
2503Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
6fbe845e
AB
2504 t(binary), f(float), a(address), i(instruction), c(char), s(string)\n\
2505 and z(hex, zero padded on the left).\n\
1bedd215 2506Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
c906108c
SS
2507The specified number of objects of the specified size are printed\n\
2508according to the format.\n\n\
2509Defaults for format and size letters are those previously used.\n\
2510Default count is 1. Default address is following last thing printed\n\
1bedd215 2511with this command or \"print\"."));
c906108c 2512
c906108c
SS
2513#if 0
2514 add_com ("whereis", class_vars, whereis_command,
1bedd215 2515 _("Print line number and file of definition of variable."));
c906108c 2516#endif
c5aa993b 2517
1bedd215
AC
2518 add_info ("display", display_info, _("\
2519Expressions to display when program stops, with code numbers."));
c906108c 2520
1a966eab
AC
2521 add_cmd ("undisplay", class_vars, undisplay_command, _("\
2522Cancel some expressions to be displayed when program stops.\n\
c906108c
SS
2523Arguments are the code numbers of the expressions to stop displaying.\n\
2524No argument means cancel all automatic-display expressions.\n\
2525\"delete display\" has the same effect as this command.\n\
1a966eab 2526Do \"info display\" to see current list of code numbers."),
c5aa993b 2527 &cmdlist);
c906108c 2528
1bedd215
AC
2529 add_com ("display", class_vars, display_command, _("\
2530Print value of expression EXP each time the program stops.\n\
c906108c
SS
2531/FMT may be used before EXP as in the \"print\" command.\n\
2532/FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2533as in the \"x\" command, and then EXP is used to get the address to examine\n\
2534and examining is done as in the \"x\" command.\n\n\
2535With no argument, display all currently requested auto-display expressions.\n\
1bedd215 2536Use \"undisplay\" to cancel display requests previously made."));
c906108c 2537
c9174737 2538 add_cmd ("display", class_vars, enable_display_command, _("\
1a966eab 2539Enable some expressions to be displayed when program stops.\n\
c906108c
SS
2540Arguments are the code numbers of the expressions to resume displaying.\n\
2541No argument means enable all automatic-display expressions.\n\
1a966eab 2542Do \"info display\" to see current list of code numbers."), &enablelist);
c906108c 2543
1a966eab
AC
2544 add_cmd ("display", class_vars, disable_display_command, _("\
2545Disable some expressions to be displayed when program stops.\n\
c906108c
SS
2546Arguments are the code numbers of the expressions to stop displaying.\n\
2547No argument means disable all automatic-display expressions.\n\
1a966eab 2548Do \"info display\" to see current list of code numbers."), &disablelist);
c906108c 2549
1a966eab
AC
2550 add_cmd ("display", class_vars, undisplay_command, _("\
2551Cancel some expressions to be displayed when program stops.\n\
c906108c
SS
2552Arguments are the code numbers of the expressions to stop displaying.\n\
2553No argument means cancel all automatic-display expressions.\n\
1a966eab 2554Do \"info display\" to see current list of code numbers."), &deletelist);
c906108c 2555
1bedd215
AC
2556 add_com ("printf", class_vars, printf_command, _("\
2557printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2558This is useful for formatted output in user-defined commands."));
c906108c 2559
1bedd215
AC
2560 add_com ("output", class_vars, output_command, _("\
2561Like \"print\" but don't put in value history and don't print newline.\n\
2562This is useful in user-defined commands."));
c906108c 2563
1bedd215
AC
2564 add_prefix_cmd ("set", class_vars, set_command, _("\
2565Evaluate expression EXP and assign result to variable VAR, using assignment\n\
c906108c
SS
2566syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2567example). VAR may be a debugger \"convenience\" variable (names starting\n\
2568with $), a register (a few standard names starting with $), or an actual\n\
1bedd215
AC
2569variable in the program being debugged. EXP is any valid expression.\n\
2570Use \"set variable\" for variables with names identical to set subcommands.\n\
2571\n\
2572With a subcommand, this command modifies parts of the gdb environment.\n\
2573You can see these environment settings with the \"show\" command."),
c5aa993b 2574 &setlist, "set ", 1, &cmdlist);
c906108c 2575 if (dbx_commands)
1bedd215
AC
2576 add_com ("assign", class_vars, set_command, _("\
2577Evaluate expression EXP and assign result to variable VAR, using assignment\n\
c906108c
SS
2578syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2579example). VAR may be a debugger \"convenience\" variable (names starting\n\
2580with $), a register (a few standard names starting with $), or an actual\n\
1bedd215
AC
2581variable in the program being debugged. EXP is any valid expression.\n\
2582Use \"set variable\" for variables with names identical to set subcommands.\n\
c906108c 2583\nWith a subcommand, this command modifies parts of the gdb environment.\n\
1bedd215 2584You can see these environment settings with the \"show\" command."));
c906108c 2585
0df8b418 2586 /* "call" is the same as "set", but handy for dbx users to call fns. */
1bedd215
AC
2587 c = add_com ("call", class_vars, call_command, _("\
2588Call a function in the program.\n\
c906108c
SS
2589The argument is the function name and arguments, in the notation of the\n\
2590current working language. The result is printed and saved in the value\n\
1bedd215 2591history, if it is not void."));
65d12d83 2592 set_cmd_completer (c, expression_completer);
c906108c 2593
1a966eab
AC
2594 add_cmd ("variable", class_vars, set_command, _("\
2595Evaluate expression EXP and assign result to variable VAR, using assignment\n\
c906108c
SS
2596syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2597example). VAR may be a debugger \"convenience\" variable (names starting\n\
2598with $), a register (a few standard names starting with $), or an actual\n\
2599variable in the program being debugged. EXP is any valid expression.\n\
1a966eab 2600This may usually be abbreviated to simply \"set\"."),
c5aa993b 2601 &setlist);
c906108c 2602
1bedd215
AC
2603 c = add_com ("print", class_vars, print_command, _("\
2604Print value of expression EXP.\n\
c906108c
SS
2605Variables accessible are those of the lexical environment of the selected\n\
2606stack frame, plus all those whose scope is global or an entire file.\n\
2607\n\
2608$NUM gets previous value number NUM. $ and $$ are the last two values.\n\
2609$$NUM refers to NUM'th value back from the last one.\n\
1bedd215
AC
2610Names starting with $ refer to registers (with the values they would have\n\
2611if the program were to return to the stack frame now selected, restoring\n\
c906108c
SS
2612all registers saved by frames farther in) or else to debugger\n\
2613\"convenience\" variables (any such name not a known register).\n\
1bedd215
AC
2614Use assignment expressions to give values to convenience variables.\n\
2615\n\
c906108c
SS
2616{TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2617@ is a binary operator for treating consecutive data objects\n\
2618anywhere in memory as an array. FOO@NUM gives an array whose first\n\
2619element is FOO, whose second element is stored in the space following\n\
2620where FOO is stored, etc. FOO must be an expression whose value\n\
1bedd215
AC
2621resides in memory.\n\
2622\n\
c906108c 2623EXP may be preceded with /FMT, where FMT is a format letter\n\
1bedd215 2624but no count or size letter (see \"x\" command)."));
65d12d83 2625 set_cmd_completer (c, expression_completer);
c906108c 2626 add_com_alias ("p", "print", class_vars, 1);
e93a8774 2627 add_com_alias ("inspect", "print", class_vars, 1);
c906108c 2628
35096d9d
AC
2629 add_setshow_uinteger_cmd ("max-symbolic-offset", no_class,
2630 &max_symbolic_offset, _("\
2631Set the largest offset that will be printed in <symbol+1234> form."), _("\
f81d1120
PA
2632Show the largest offset that will be printed in <symbol+1234> form."), _("\
2633Tell GDB to only display the symbolic form of an address if the\n\
2634offset between the closest earlier symbol and the address is less than\n\
2635the specified maximum offset. The default is \"unlimited\", which tells GDB\n\
2636to always print the symbolic form of an address if any symbol precedes\n\
2637it. Zero is equivalent to \"unlimited\"."),
35096d9d 2638 NULL,
920d2a44 2639 show_max_symbolic_offset,
35096d9d 2640 &setprintlist, &showprintlist);
5bf193a2
AC
2641 add_setshow_boolean_cmd ("symbol-filename", no_class,
2642 &print_symbol_filename, _("\
2643Set printing of source filename and line number with <symbol>."), _("\
2644Show printing of source filename and line number with <symbol>."), NULL,
2645 NULL,
920d2a44 2646 show_print_symbol_filename,
5bf193a2 2647 &setprintlist, &showprintlist);
f1421989
HZ
2648
2649 add_com ("eval", no_class, eval_command, _("\
2650Convert \"printf format string\", arg1, arg2, arg3, ..., argn to\n\
2651a command line, and call it."));
c906108c 2652}
This page took 1.441157 seconds and 4 git commands to generate.