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