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