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