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