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