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