* core.c (memory_error), symtab.c (cplusplus_hint, decode_line_1),
[deliverable/binutils-gdb.git] / gdb / printcmd.c
CommitLineData
bd5635a1 1/* Print values for GNU debugger GDB.
314e6bf3
JG
2 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1993, 1994
3 Free Software Foundation, Inc.
bd5635a1
RP
4
5This file is part of GDB.
6
36b9d39c 7This program is free software; you can redistribute it and/or modify
bd5635a1 8it under the terms of the GNU General Public License as published by
36b9d39c
JG
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
bd5635a1 11
36b9d39c 12This program is distributed in the hope that it will be useful,
bd5635a1
RP
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
36b9d39c
JG
18along with this program; if not, write to the Free Software
19Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
bd5635a1 20
bd5635a1 21#include "defs.h"
1eeba686 22#include <string.h>
19bdd57f 23#include <varargs.h>
bd5635a1
RP
24#include "frame.h"
25#include "symtab.h"
93fe4e33 26#include "gdbtypes.h"
bd5635a1 27#include "value.h"
c4668207 28#include "language.h"
bd5635a1
RP
29#include "expression.h"
30#include "gdbcore.h"
31#include "gdbcmd.h"
32#include "target.h"
93fe4e33 33#include "breakpoint.h"
4d38b5a8 34#include "demangle.h"
199b2450 35#include "valprint.h"
bd5635a1
RP
36
37extern int asm_demangle; /* Whether to demangle syms in asm printouts */
36b9d39c 38extern int addressprint; /* Whether to print hex addresses in HLL " */
bd5635a1 39
bd5635a1
RP
40struct format_data
41{
42 int count;
43 char format;
44 char size;
45};
46
47/* Last specified output format. */
48
49static char last_format = 'x';
50
51/* Last specified examination size. 'b', 'h', 'w' or `q'. */
52
53static char last_size = 'w';
54
55/* Default address to examine next. */
56
57static CORE_ADDR next_address;
58
59/* Last address examined. */
60
61static CORE_ADDR last_examine_address;
62
63/* Contents of last address examined.
64 This is not valid past the end of the `x' command! */
65
82a2edfb 66static value_ptr last_examine_value;
bd5635a1 67
f77ad505
FF
68/* Largest offset between a symbolic value and an address, that will be
69 printed as `0x1234 <symbol+offset>'. */
70
71static unsigned int max_symbolic_offset = UINT_MAX;
72
b7ccd8e0
PS
73/* Append the source filename and linenumber of the symbol when
74 printing a symbolic value as `<symbol at filename:linenum>' if set. */
75static int print_symbol_filename = 0;
76
bd5635a1 77/* Number of auto-display expression currently being displayed.
f77ad505 78 So that we can disable it if we get an error or a signal within it.
bd5635a1
RP
79 -1 when not doing one. */
80
81int current_display_number;
82
83/* Flag to low-level print routines that this value is being printed
84 in an epoch window. We'd like to pass this as a parameter, but
85 every routine would need to take it. Perhaps we can encapsulate
86 this in the I/O stream once we have GNU stdio. */
87
88int inspect_it = 0;
89
96f7edbd
JK
90void
91print_value_flags (t)
92 struct type *t;
93{
94 /* FIXME: Should we be printing * for references as well as pointers? */
95 if (t != NULL
96 && TYPE_CODE (t) == TYPE_CODE_PTR
97 && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID)
98 printf_filtered ("*");
99 else
100 printf_filtered ("-");
101}
102
93fe4e33
JG
103struct display
104{
105 /* Chain link to next auto-display item. */
106 struct display *next;
107 /* Expression to be evaluated and displayed. */
108 struct expression *exp;
109 /* Item number of this auto-display item. */
110 int number;
111 /* Display format specified. */
112 struct format_data format;
113 /* Innermost block required by this expression when evaluated */
114 struct block *block;
115 /* Status of this display (enabled or disabled) */
8f869b45 116 enum enable status;
93fe4e33
JG
117};
118
119/* Chain of expressions whose values should be displayed
120 automatically each time the program stops. */
121
122static struct display *display_chain;
123
124static int display_number;
125
126/* Prototypes for local functions */
127
128static void
129delete_display PARAMS ((int));
130
131static void
4d38b5a8 132enable_display PARAMS ((char *, int));
93fe4e33
JG
133
134static void
135disable_display_command PARAMS ((char *, int));
136
137static void
138disassemble_command PARAMS ((char *, int));
139
93fe4e33
JG
140static void
141printf_command PARAMS ((char *, int));
142
143static void
f77ad505 144print_frame_nameless_args PARAMS ((struct frame_info *, long, int, int,
199b2450 145 GDB_FILE *));
93fe4e33
JG
146
147static void
4d38b5a8 148display_info PARAMS ((char *, int));
93fe4e33
JG
149
150static void
151do_one_display PARAMS ((struct display *));
152
153static void
4d38b5a8 154undisplay_command PARAMS ((char *, int));
93fe4e33
JG
155
156static void
157free_display PARAMS ((struct display *));
158
159static void
160display_command PARAMS ((char *, int));
161
93fe4e33
JG
162static void
163x_command PARAMS ((char *, int));
164
165static void
166address_info PARAMS ((char *, int));
167
168static void
169set_command PARAMS ((char *, int));
170
171static void
172output_command PARAMS ((char *, int));
bd5635a1 173
93fe4e33
JG
174static void
175call_command PARAMS ((char *, int));
176
177static void
178inspect_command PARAMS ((char *, int));
179
180static void
181print_command PARAMS ((char *, int));
182
183static void
184print_command_1 PARAMS ((char *, int, int));
185
186static void
187validate_format PARAMS ((struct format_data, char *));
188
189static void
190do_examine PARAMS ((struct format_data, CORE_ADDR));
191
192static void
82a2edfb 193print_formatted PARAMS ((value_ptr, int, int));
93fe4e33
JG
194
195static struct format_data
196decode_format PARAMS ((char **, int, int));
bd5635a1
RP
197
198\f
199/* Decode a format specification. *STRING_PTR should point to it.
200 OFORMAT and OSIZE are used as defaults for the format and size
201 if none are given in the format specification.
202 If OSIZE is zero, then the size field of the returned value
203 should be set only if a size is explicitly specified by the
204 user.
205 The structure returned describes all the data
206 found in the specification. In addition, *STRING_PTR is advanced
207 past the specification and past all whitespace following it. */
208
93fe4e33 209static struct format_data
bd5635a1
RP
210decode_format (string_ptr, oformat, osize)
211 char **string_ptr;
93fe4e33
JG
212 int oformat;
213 int osize;
bd5635a1
RP
214{
215 struct format_data val;
216 register char *p = *string_ptr;
217
218 val.format = '?';
219 val.size = '?';
220 val.count = 1;
221
222 if (*p >= '0' && *p <= '9')
223 val.count = atoi (p);
224 while (*p >= '0' && *p <= '9') p++;
225
226 /* Now process size or format letters that follow. */
227
228 while (1)
229 {
230 if (*p == 'b' || *p == 'h' || *p == 'w' || *p == 'g')
231 val.size = *p++;
bd5635a1
RP
232 else if (*p >= 'a' && *p <= 'z')
233 val.format = *p++;
234 else
235 break;
236 }
237
bd5635a1
RP
238 while (*p == ' ' || *p == '\t') p++;
239 *string_ptr = p;
240
241 /* Set defaults for format and size if not specified. */
242 if (val.format == '?')
243 {
244 if (val.size == '?')
245 {
246 /* Neither has been specified. */
247 val.format = oformat;
248 val.size = osize;
249 }
250 else
251 /* If a size is specified, any format makes a reasonable
252 default except 'i'. */
253 val.format = oformat == 'i' ? 'x' : oformat;
254 }
255 else if (val.size == '?')
256 switch (val.format)
257 {
258 case 'a':
259 case 's':
82a2edfb
JK
260 /* Pick the appropriate size for an address. */
261#if TARGET_PTR_BIT == 64
262 val.size = osize ? 'g' : osize;
263 break;
264#else /* Not 64 */
265#if TARGET_PTR_BIT == 32
bd5635a1
RP
266 val.size = osize ? 'w' : osize;
267 break;
82a2edfb
JK
268#else /* Not 32 */
269#if TARGET_PTR_BIT == 16
270 val.size = osize ? 'h' : osize;
271 break;
272#else /* Not 16 */
273 #error Bad value for TARGET_PTR_BIT
274#endif /* Not 16 */
275#endif /* Not 32 */
276#endif /* Not 64 */
277 break;
bd5635a1
RP
278 case 'f':
279 /* Floating point has to be word or giantword. */
280 if (osize == 'w' || osize == 'g')
281 val.size = osize;
282 else
283 /* Default it to giantword if the last used size is not
284 appropriate. */
285 val.size = osize ? 'g' : osize;
286 break;
287 case 'c':
288 /* Characters default to one byte. */
289 val.size = osize ? 'b' : osize;
290 break;
291 default:
292 /* The default is the size most recently specified. */
293 val.size = osize;
294 }
295
296 return val;
297}
298\f
199b2450 299/* Print value VAL on gdb_stdout according to FORMAT, a letter or 0.
bd5635a1
RP
300 Do not end with a newline.
301 0 means print VAL according to its own type.
302 SIZE is the letter for the size of datum being printed.
303 This is used to pad hex numbers so they line up. */
304
305static void
306print_formatted (val, format, size)
82a2edfb 307 register value_ptr val;
93fe4e33
JG
308 register int format;
309 int size;
bd5635a1
RP
310{
311 int len = TYPE_LENGTH (VALUE_TYPE (val));
312
313 if (VALUE_LVAL (val) == lval_memory)
314 next_address = VALUE_ADDRESS (val) + len;
315
316 switch (format)
317 {
318 case 's':
319 next_address = VALUE_ADDRESS (val)
199b2450 320 + value_print (value_addr (val), gdb_stdout, format, Val_pretty_default);
bd5635a1
RP
321 break;
322
323 case 'i':
43795ece
JK
324 /* The old comment says
325 "Force output out, print_insn not using _filtered".
326 I'm not completely sure what that means, I suspect most print_insn
327 now do use _filtered, so I guess it's obsolete. */
328 /* We often wrap here if there are long symbolic names. */
19bdd57f 329 wrap_here (" ");
bd5635a1 330 next_address = VALUE_ADDRESS (val)
199b2450 331 + print_insn (VALUE_ADDRESS (val), gdb_stdout);
bd5635a1
RP
332 break;
333
334 default:
335 if (format == 0
336 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_ARRAY
7dc15bb7 337 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_STRING
bd5635a1
RP
338 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_STRUCT
339 || TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_UNION
340 || VALUE_REPEATED (val))
199b2450 341 value_print (val, gdb_stdout, format, Val_pretty_default);
bd5635a1
RP
342 else
343 print_scalar_formatted (VALUE_CONTENTS (val), VALUE_TYPE (val),
199b2450 344 format, size, gdb_stdout);
bd5635a1
RP
345 }
346}
347
348/* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
349 according to letters FORMAT and SIZE on STREAM.
350 FORMAT may not be zero. Formats s and i are not supported at this level.
351
352 This is how the elements of an array or structure are printed
353 with a format. */
354
355void
356print_scalar_formatted (valaddr, type, format, size, stream)
357 char *valaddr;
358 struct type *type;
93fe4e33 359 int format;
bd5635a1 360 int size;
199b2450 361 GDB_FILE *stream;
bd5635a1
RP
362{
363 LONGEST val_long;
364 int len = TYPE_LENGTH (type);
365
b0f61d04
JK
366 if (len > sizeof (LONGEST)
367 && (format == 't'
368 || format == 'c'
369 || format == 'o'
370 || format == 'u'
371 || format == 'd'
372 || format == 'x'))
bd5635a1 373 {
b0f61d04
JK
374 /* We can't print it normally, but we can print it in hex.
375 Printing it in the wrong radix is more useful than saying
376 "use /x, you dummy". */
377 /* FIXME: we could also do octal or binary if that was the
378 desired format. */
379 /* FIXME: we should be using the size field to give us a minimum
380 field width to print. */
381 val_print_type_code_int (type, valaddr, stream);
bd5635a1
RP
382 return;
383 }
b0f61d04 384
2fe3b329
PS
385 if (format != 'f')
386 val_long = unpack_long (type, valaddr);
bd5635a1 387
f73b07c9
JK
388 /* If we are printing it as unsigned, truncate it in case it is actually
389 a negative signed value (e.g. "print/u (short)-1" should print 65535
390 (if shorts are 16 bits) instead of 4294967295). */
bd5635a1
RP
391 if (format != 'd')
392 {
f73b07c9
JK
393 if (len < sizeof (LONGEST))
394 val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
bd5635a1
RP
395 }
396
397 switch (format)
398 {
399 case 'x':
400 if (!size)
401 {
402 /* no size specified, like in print. Print varying # of digits. */
6fe90fc8 403 print_longest (stream, 'x', 1, val_long);
bd5635a1
RP
404 }
405 else
6fe90fc8
JK
406 switch (size)
407 {
408 case 'b':
409 case 'h':
410 case 'w':
411 case 'g':
412 print_longest (stream, size, 1, val_long);
413 break;
414 default:
415 error ("Undefined output size \"%c\".", size);
416 }
bd5635a1
RP
417 break;
418
419 case 'd':
6fe90fc8 420 print_longest (stream, 'd', 1, val_long);
bd5635a1
RP
421 break;
422
423 case 'u':
6fe90fc8 424 print_longest (stream, 'u', 0, val_long);
bd5635a1
RP
425 break;
426
427 case 'o':
428 if (val_long)
6fe90fc8 429 print_longest (stream, 'o', 1, val_long);
bd5635a1
RP
430 else
431 fprintf_filtered (stream, "0");
432 break;
433
434 case 'a':
e1ce8aa5 435 print_address (unpack_pointer (type, valaddr), stream);
bd5635a1
RP
436 break;
437
438 case 'c':
c4668207 439 value_print (value_from_longest (builtin_type_char, val_long), stream, 0,
bd5635a1
RP
440 Val_pretty_default);
441 break;
442
443 case 'f':
444 if (len == sizeof (float))
445 type = builtin_type_float;
446 else if (len == sizeof (double))
447 type = builtin_type_double;
448 print_floating (valaddr, type, stream);
449 break;
450
451 case 0:
452 abort ();
453
19b7c2a4
JK
454 case 't':
455 /* Binary; 't' stands for "two". */
456 {
457 char bits[8*(sizeof val_long) + 1];
458 char *cp = bits;
459 int width;
460
461 if (!size)
462 width = 8*(sizeof val_long);
463 else
464 switch (size)
465 {
466 case 'b':
467 width = 8;
468 break;
469 case 'h':
470 width = 16;
471 break;
472 case 'w':
473 width = 32;
474 break;
475 case 'g':
476 width = 64;
477 break;
478 default:
479 error ("Undefined output size \"%c\".", size);
480 }
481
482 bits[width] = '\0';
483 while (width-- > 0)
484 {
485 bits[width] = (val_long & 1) ? '1' : '0';
486 val_long >>= 1;
487 }
488 if (!size)
489 {
490 while (*cp && *cp == '0')
491 cp++;
492 if (*cp == '\0')
493 cp--;
494 }
a8a69e63 495 fprintf_filtered (stream, local_binary_format_prefix());
19b7c2a4 496 fprintf_filtered (stream, cp);
a8a69e63 497 fprintf_filtered (stream, local_binary_format_suffix());
19b7c2a4
JK
498 }
499 break;
500
bd5635a1
RP
501 default:
502 error ("Undefined output format \"%c\".", format);
503 }
504}
505
506/* Specify default address for `x' command.
507 `info lines' uses this. */
508
509void
510set_next_address (addr)
511 CORE_ADDR addr;
512{
513 next_address = addr;
514
515 /* Make address available to the user as $_. */
516 set_internalvar (lookup_internalvar ("_"),
c4668207
JG
517 value_from_longest (lookup_pointer_type (builtin_type_void),
518 (LONGEST) addr));
bd5635a1
RP
519}
520
36b9d39c
JG
521/* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
522 after LEADIN. Print nothing if no symbolic name is found nearby.
314e6bf3 523 Optionally also print source file and line number, if available.
bd5635a1
RP
524 DO_DEMANGLE controls whether to print a symbol in its native "raw" form,
525 or to interpret it as a possible C++ name and convert it back to source
2e4964ad 526 form. However note that DO_DEMANGLE can be overridden by the specific
314e6bf3 527 settings of the demangle and asm_demangle variables. */
bd5635a1
RP
528
529void
36b9d39c 530print_address_symbolic (addr, stream, do_demangle, leadin)
bd5635a1 531 CORE_ADDR addr;
199b2450 532 GDB_FILE *stream;
bd5635a1 533 int do_demangle;
36b9d39c 534 char *leadin;
bd5635a1 535{
314e6bf3
JG
536 struct minimal_symbol *msymbol;
537 struct symbol *symbol;
538 struct symtab *symtab = 0;
cd5ee294 539 CORE_ADDR name_location = 0;
c0c9b923 540 char *name = "";
bd5635a1 541
314e6bf3
JG
542 /* First try to find the address in the symbol table, then
543 in the minsyms. Take the closest one. */
544
2fe3b329
PS
545 /* This is defective in the sense that it only finds text symbols. So
546 really this is kind of pointless--we should make sure that the
547 minimal symbols have everything we need (by changing that we could
548 save some memory, but for many debug format--ELF/DWARF or
549 anything/stabs--it would be inconvenient to eliminate those minimal
550 symbols anyway). */
551 symbol = find_pc_function (addr);
552 if (symbol)
553 name_location = BLOCK_START (SYMBOL_BLOCK_VALUE (symbol));
cd5ee294 554
7586127f
PS
555 if (symbol)
556 {
314e6bf3
JG
557 if (do_demangle)
558 name = SYMBOL_SOURCE_NAME (symbol);
559 else
560 name = SYMBOL_LINKAGE_NAME (symbol);
7586127f 561 }
bd5635a1 562
314e6bf3
JG
563 msymbol = lookup_minimal_symbol_by_pc (addr);
564 if (msymbol != NULL)
565 {
cd5ee294 566 if (SYMBOL_VALUE_ADDRESS (msymbol) > name_location || symbol == NULL)
314e6bf3
JG
567 {
568 /* The msymbol is closer to the address than the symbol;
569 use the msymbol instead. */
570 symbol = 0;
571 symtab = 0;
572 name_location = SYMBOL_VALUE_ADDRESS (msymbol);
573 if (do_demangle)
574 name = SYMBOL_SOURCE_NAME (msymbol);
575 else
576 name = SYMBOL_LINKAGE_NAME (msymbol);
577 }
7586127f 578 }
cd5ee294
JK
579 if (symbol == NULL && msymbol == NULL)
580 return;
f77ad505 581
7586127f 582 /* If the nearest symbol is too far away, don't print anything symbolic. */
f77ad505
FF
583
584 /* For when CORE_ADDR is larger than unsigned int, we do math in
585 CORE_ADDR. But when we detect unsigned wraparound in the
586 CORE_ADDR math, we ignore this test and print the offset,
587 because addr+max_symbolic_offset has wrapped through the end
588 of the address space back to the beginning, giving bogus comparison. */
589 if (addr > name_location + max_symbolic_offset
590 && name_location + max_symbolic_offset > name_location)
591 return;
592
36b9d39c
JG
593 fputs_filtered (leadin, stream);
594 fputs_filtered ("<", stream);
7586127f 595 fputs_filtered (name, stream);
f77ad505 596 if (addr != name_location)
b7ccd8e0
PS
597 fprintf_filtered (stream, "+%u", (unsigned int)(addr - name_location));
598
314e6bf3
JG
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)
b7ccd8e0 602 {
633c8b0a
DZ
603 struct symtab_and_line sal;
604
605 sal = find_pc_line (addr, 0);
b7ccd8e0
PS
606 if (sal.symtab)
607 fprintf_filtered (stream, " at %s:%d", sal.symtab->filename, sal.line);
314e6bf3
JG
608 else if (symtab && symbol && symbol->line)
609 fprintf_filtered (stream, " at %s:%d", symtab->filename, symbol->line);
610 else if (symtab)
611 fprintf_filtered (stream, " in %s", symtab->filename);
b7ccd8e0
PS
612 }
613 fputs_filtered (">", stream);
bd5635a1
RP
614}
615
833e0d94
JK
616/* Print address ADDR on STREAM. */
617void
618print_address_numeric (addr, stream)
619 CORE_ADDR addr;
620 GDB_FILE *stream;
621{
622 /* This assumes a CORE_ADDR can fit in a LONGEST. Probably a safe
623 assumption. We pass use_local but I'm not completely sure whether
624 that is correct. When (if ever) should we *not* use_local? */
625 print_longest (stream, 'x', 1, (unsigned LONGEST) addr);
626}
314e6bf3 627
bd5635a1
RP
628/* Print address ADDR symbolically on STREAM.
629 First print it as a number. Then perhaps print
630 <SYMBOL + OFFSET> after the number. */
631
632void
633print_address (addr, stream)
634 CORE_ADDR addr;
199b2450 635 GDB_FILE *stream;
bd5635a1 636{
833e0d94 637 print_address_numeric (addr, stream);
36b9d39c 638 print_address_symbolic (addr, stream, asm_demangle, " ");
bd5635a1
RP
639}
640
641/* Print address ADDR symbolically on STREAM. Parameter DEMANGLE
36b9d39c
JG
642 controls whether to print the symbolic name "raw" or demangled.
643 Global setting "addressprint" controls whether to print hex address
644 or not. */
bd5635a1
RP
645
646void
647print_address_demangle (addr, stream, do_demangle)
648 CORE_ADDR addr;
199b2450 649 GDB_FILE *stream;
bd5635a1
RP
650 int do_demangle;
651{
833e0d94
JK
652 if (addr == 0)
653 {
654 fprintf_filtered (stream, "0");
655 }
656 else if (addressprint)
657 {
658 print_address_numeric (addr, stream);
659 print_address_symbolic (addr, stream, do_demangle, " ");
660 }
661 else
662 {
663 print_address_symbolic (addr, stream, do_demangle, "");
664 }
bd5635a1 665}
bd5635a1
RP
666\f
667
199b2450
TL
668/* These are the types that $__ will get after an examine command of one
669 of these sizes. */
670
671static struct type *examine_b_type;
672static struct type *examine_h_type;
673static struct type *examine_w_type;
674static struct type *examine_g_type;
675
bd5635a1 676/* Examine data at address ADDR in format FMT.
199b2450 677 Fetch it from memory and print on gdb_stdout. */
bd5635a1
RP
678
679static void
680do_examine (fmt, addr)
681 struct format_data fmt;
682 CORE_ADDR addr;
683{
684 register char format = 0;
685 register char size;
686 register int count = 1;
f73b07c9 687 struct type *val_type = NULL;
bd5635a1
RP
688 register int i;
689 register int maxelts;
690
691 format = fmt.format;
692 size = fmt.size;
693 count = fmt.count;
694 next_address = addr;
695
696 /* String or instruction format implies fetch single bytes
697 regardless of the specified size. */
698 if (format == 's' || format == 'i')
699 size = 'b';
700
701 if (size == 'b')
199b2450 702 val_type = examine_b_type;
bd5635a1 703 else if (size == 'h')
199b2450 704 val_type = examine_h_type;
bd5635a1 705 else if (size == 'w')
199b2450 706 val_type = examine_w_type;
bd5635a1 707 else if (size == 'g')
199b2450 708 val_type = examine_g_type;
bd5635a1
RP
709
710 maxelts = 8;
711 if (size == 'w')
712 maxelts = 4;
713 if (size == 'g')
714 maxelts = 2;
715 if (format == 's' || format == 'i')
716 maxelts = 1;
717
718 /* Print as many objects as specified in COUNT, at most maxelts per line,
719 with the address of the next one at the start of each line. */
720
721 while (count > 0)
722 {
199b2450 723 print_address (next_address, gdb_stdout);
bd5635a1
RP
724 printf_filtered (":");
725 for (i = maxelts;
726 i > 0 && count > 0;
727 i--, count--)
728 {
729 printf_filtered ("\t");
730 /* Note that print_formatted sets next_address for the next
731 object. */
732 last_examine_address = next_address;
733 last_examine_value = value_at (val_type, next_address);
734 print_formatted (last_examine_value, format, size);
735 }
736 printf_filtered ("\n");
199b2450 737 gdb_flush (gdb_stdout);
bd5635a1
RP
738 }
739}
740\f
741static void
742validate_format (fmt, cmdname)
743 struct format_data fmt;
744 char *cmdname;
745{
746 if (fmt.size != 0)
747 error ("Size letters are meaningless in \"%s\" command.", cmdname);
748 if (fmt.count != 1)
749 error ("Item count other than 1 is meaningless in \"%s\" command.",
750 cmdname);
751 if (fmt.format == 'i' || fmt.format == 's')
752 error ("Format letter \"%c\" is meaningless in \"%s\" command.",
753 fmt.format, cmdname);
754}
755
7dc15bb7
JG
756/* Evaluate string EXP as an expression in the current language and
757 print the resulting value. EXP may contain a format specifier as the
758 first argument ("/x myvar" for example, to print myvar in hex).
759 */
760
bd5635a1
RP
761static void
762print_command_1 (exp, inspect, voidprint)
763 char *exp;
764 int inspect;
765 int voidprint;
766{
767 struct expression *expr;
768 register struct cleanup *old_chain = 0;
769 register char format = 0;
82a2edfb 770 register value_ptr val;
bd5635a1
RP
771 struct format_data fmt;
772 int cleanup = 0;
773
774 /* Pass inspect flag to the rest of the print routines in a global (sigh). */
775 inspect_it = inspect;
776
777 if (exp && *exp == '/')
778 {
779 exp++;
780 fmt = decode_format (&exp, last_format, 0);
781 validate_format (fmt, "print");
782 last_format = format = fmt.format;
783 }
784 else
785 {
786 fmt.count = 1;
787 fmt.format = 0;
788 fmt.size = 0;
789 }
790
791 if (exp && *exp)
792 {
3577f9b4
JK
793 extern int objectprint;
794 struct type *type;
c4668207 795 expr = parse_expression (exp);
bd5635a1
RP
796 old_chain = make_cleanup (free_current_contents, &expr);
797 cleanup = 1;
798 val = evaluate_expression (expr);
3577f9b4
JK
799
800 /* C++: figure out what type we actually want to print it as. */
801 type = VALUE_TYPE (val);
802
803 if (objectprint
93fe4e33 804 && ( TYPE_CODE (type) == TYPE_CODE_PTR
3577f9b4 805 || TYPE_CODE (type) == TYPE_CODE_REF)
93fe4e33
JG
806 && ( TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT
807 || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_UNION))
3577f9b4 808 {
82a2edfb 809 value_ptr v;
3577f9b4
JK
810
811 v = value_from_vtable_info (val, TYPE_TARGET_TYPE (type));
812 if (v != 0)
813 {
814 val = v;
815 type = VALUE_TYPE (val);
816 }
817 }
bd5635a1
RP
818 }
819 else
820 val = access_value_history (0);
821
822 if (voidprint || (val && VALUE_TYPE (val) &&
823 TYPE_CODE (VALUE_TYPE (val)) != TYPE_CODE_VOID))
824 {
825 int histindex = record_latest_value (val);
826
96f7edbd
JK
827 if (annotation_level > 1)
828 {
829 if (histindex >= 0)
830 printf_filtered ("\n\032\032value-history-begin %d ", histindex);
831 else
832 printf_filtered ("\n\032\032value-begin ");
833 print_value_flags (VALUE_TYPE (val));
834 printf_filtered ("\n");
835 }
836
bd5635a1 837 if (inspect)
199b2450 838 printf_unfiltered ("\031(gdb-makebuffer \"%s\" %d '(\"", exp, histindex);
bd5635a1
RP
839 else
840 if (histindex >= 0) printf_filtered ("$%d = ", histindex);
841
9e8db445
JK
842 if (annotation_level > 1 && histindex >= 0)
843 printf_filtered ("\n\032\032value-history-value\n");
844
bd5635a1
RP
845 print_formatted (val, format, fmt.size);
846 printf_filtered ("\n");
96f7edbd
JK
847
848 if (annotation_level > 1)
849 {
850 if (histindex >= 0)
851 printf_filtered ("\n\032\032value-history-end\n");
852 else
853 printf_filtered ("\n\032\032value-end\n");
854 }
855
bd5635a1 856 if (inspect)
199b2450 857 printf_unfiltered("\") )\030");
bd5635a1
RP
858 }
859
860 if (cleanup)
861 do_cleanups (old_chain);
862 inspect_it = 0; /* Reset print routines to normal */
863}
864
e1ce8aa5 865/* ARGSUSED */
bd5635a1
RP
866static void
867print_command (exp, from_tty)
868 char *exp;
869 int from_tty;
870{
871 print_command_1 (exp, 0, 1);
872}
873
874/* Same as print, except in epoch, it gets its own window */
e1ce8aa5 875/* ARGSUSED */
bd5635a1
RP
876static void
877inspect_command (exp, from_tty)
878 char *exp;
879 int from_tty;
880{
881 extern int epoch_interface;
882
883 print_command_1 (exp, epoch_interface, 1);
884}
885
886/* Same as print, except it doesn't print void results. */
e1ce8aa5 887/* ARGSUSED */
bd5635a1
RP
888static void
889call_command (exp, from_tty)
890 char *exp;
891 int from_tty;
892{
893 print_command_1 (exp, 0, 0);
894}
895
e1ce8aa5 896/* ARGSUSED */
bd5635a1
RP
897static void
898output_command (exp, from_tty)
899 char *exp;
900 int from_tty;
901{
902 struct expression *expr;
903 register struct cleanup *old_chain;
904 register char format = 0;
82a2edfb 905 register value_ptr val;
bd5635a1
RP
906 struct format_data fmt;
907
908 if (exp && *exp == '/')
909 {
910 exp++;
911 fmt = decode_format (&exp, 0, 0);
4d38b5a8 912 validate_format (fmt, "output");
bd5635a1
RP
913 format = fmt.format;
914 }
915
c4668207 916 expr = parse_expression (exp);
bd5635a1
RP
917 old_chain = make_cleanup (free_current_contents, &expr);
918
919 val = evaluate_expression (expr);
920
9e8db445
JK
921 if (annotation_level > 1)
922 {
923 printf_filtered ("\n\032\032value-begin ");
924 print_value_flags (VALUE_TYPE (val));
925 printf_filtered ("\n");
926 }
927
bd5635a1
RP
928 print_formatted (val, format, fmt.size);
929
9e8db445
JK
930 if (annotation_level > 1)
931 printf_filtered ("\n\032\032value-end\n");
932
bd5635a1
RP
933 do_cleanups (old_chain);
934}
935
e1ce8aa5 936/* ARGSUSED */
bd5635a1
RP
937static void
938set_command (exp, from_tty)
939 char *exp;
940 int from_tty;
941{
c4668207 942 struct expression *expr = parse_expression (exp);
bd5635a1
RP
943 register struct cleanup *old_chain
944 = make_cleanup (free_current_contents, &expr);
945 evaluate_expression (expr);
946 do_cleanups (old_chain);
947}
948
e1ce8aa5 949/* ARGSUSED */
bd5635a1
RP
950static void
951address_info (exp, from_tty)
952 char *exp;
953 int from_tty;
954{
955 register struct symbol *sym;
93fe4e33 956 register struct minimal_symbol *msymbol;
e1ce8aa5 957 register long val;
4d38b5a8 958 register long basereg;
bd5635a1
RP
959 int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
960 if exp is a field of `this'. */
961
962 if (exp == 0)
963 error ("Argument required.");
964
965 sym = lookup_symbol (exp, get_selected_block (), VAR_NAMESPACE,
966 &is_a_field_of_this, (struct symtab **)NULL);
2e4964ad 967 if (sym == NULL)
bd5635a1 968 {
bd5635a1
RP
969 if (is_a_field_of_this)
970 {
ca603cff 971 printf_filtered ("Symbol \"");
91f87016
JL
972 fprintf_symbol_filtered (gdb_stdout, exp,
973 current_language->la_language, DMGL_ANSI);
ca603cff 974 printf_filtered ("\" is a field of the local class variable `this'\n");
bd5635a1
RP
975 return;
976 }
977
93fe4e33 978 msymbol = lookup_minimal_symbol (exp, (struct objfile *) NULL);
bd5635a1 979
93fe4e33 980 if (msymbol != NULL)
91f87016 981 {
ca603cff 982 printf_filtered ("Symbol \"");
91f87016
JL
983 fprintf_symbol_filtered (gdb_stdout, exp,
984 current_language->la_language, DMGL_ANSI);
833e0d94
JK
985 printf_filtered ("\" is at ");
986 print_address_numeric (SYMBOL_VALUE_ADDRESS (msymbol), gdb_stdout);
987 printf_filtered (" in a file compiled without debugging.\n");
91f87016 988 }
bd5635a1
RP
989 else
990 error ("No symbol \"%s\" in current context.", exp);
991 return;
992 }
993
ca603cff 994 printf_filtered ("Symbol \"");
91f87016
JL
995 fprintf_symbol_filtered (gdb_stdout, SYMBOL_NAME (sym),
996 current_language->la_language, DMGL_ANSI);
ca603cff 997 printf_filtered ("\" is ", SYMBOL_NAME (sym));
bd5635a1 998 val = SYMBOL_VALUE (sym);
4d38b5a8 999 basereg = SYMBOL_BASEREG (sym);
bd5635a1
RP
1000
1001 switch (SYMBOL_CLASS (sym))
1002 {
1003 case LOC_CONST:
1004 case LOC_CONST_BYTES:
ca603cff 1005 printf_filtered ("constant");
bd5635a1
RP
1006 break;
1007
1008 case LOC_LABEL:
833e0d94
JK
1009 printf_filtered ("a label at address ");
1010 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), gdb_stdout);
bd5635a1
RP
1011 break;
1012
1013 case LOC_REGISTER:
ca603cff 1014 printf_filtered ("a variable in register %s", reg_names[val]);
bd5635a1
RP
1015 break;
1016
1017 case LOC_STATIC:
833e0d94
JK
1018 printf_filtered ("static storage at address ");
1019 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), gdb_stdout);
bd5635a1
RP
1020 break;
1021
1022 case LOC_REGPARM:
ca603cff 1023 printf_filtered ("an argument in register %s", reg_names[val]);
bd5635a1 1024 break;
5afa2040 1025
a1c8d76e 1026 case LOC_REGPARM_ADDR:
ca603cff 1027 printf_filtered ("address of an argument in register %s", reg_names[val]);
a1c8d76e
JK
1028 break;
1029
bd5635a1 1030 case LOC_ARG:
ca603cff 1031 printf_filtered ("an argument at offset %ld", val);
bd5635a1
RP
1032 break;
1033
1034 case LOC_LOCAL_ARG:
ca603cff 1035 printf_filtered ("an argument at frame offset %ld", val);
bd5635a1
RP
1036 break;
1037
1038 case LOC_LOCAL:
ca603cff 1039 printf_filtered ("a local variable at frame offset %ld", val);
bd5635a1
RP
1040 break;
1041
1042 case LOC_REF_ARG:
ca603cff 1043 printf_filtered ("a reference argument at offset %ld", val);
bd5635a1
RP
1044 break;
1045
a1c8d76e 1046 case LOC_BASEREG:
ca603cff 1047 printf_filtered ("a variable at offset %ld from register %s",
a1c8d76e
JK
1048 val, reg_names[basereg]);
1049 break;
1050
1051 case LOC_BASEREG_ARG:
ca603cff 1052 printf_filtered ("an argument at offset %ld from register %s",
a1c8d76e
JK
1053 val, reg_names[basereg]);
1054 break;
1055
bd5635a1 1056 case LOC_TYPEDEF:
ca603cff 1057 printf_filtered ("a typedef");
bd5635a1
RP
1058 break;
1059
1060 case LOC_BLOCK:
833e0d94
JK
1061 printf_filtered ("a function at address ");
1062 print_address_numeric (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)),
1063 gdb_stdout);
bd5635a1
RP
1064 break;
1065
31258e4f
JK
1066 case LOC_OPTIMIZED_OUT:
1067 printf_filtered ("optimized out");
1068 break;
1069
bd5635a1 1070 default:
ca603cff 1071 printf_filtered ("of unknown (botched) type");
bd5635a1
RP
1072 break;
1073 }
ca603cff 1074 printf_filtered (".\n");
bd5635a1
RP
1075}
1076\f
1077static void
1078x_command (exp, from_tty)
1079 char *exp;
1080 int from_tty;
1081{
1082 struct expression *expr;
1083 struct format_data fmt;
1084 struct cleanup *old_chain;
1085 struct value *val;
1086
1087 fmt.format = last_format;
1088 fmt.size = last_size;
1089 fmt.count = 1;
1090
1091 if (exp && *exp == '/')
1092 {
1093 exp++;
1094 fmt = decode_format (&exp, last_format, last_size);
bd5635a1
RP
1095 }
1096
1097 /* If we have an expression, evaluate it and use it as the address. */
1098
1099 if (exp != 0 && *exp != 0)
1100 {
c4668207 1101 expr = parse_expression (exp);
bd5635a1
RP
1102 /* Cause expression not to be there any more
1103 if this command is repeated with Newline.
1104 But don't clobber a user-defined command's definition. */
1105 if (from_tty)
1106 *exp = 0;
1107 old_chain = make_cleanup (free_current_contents, &expr);
1108 val = evaluate_expression (expr);
3577f9b4
JK
1109 if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_REF)
1110 val = value_ind (val);
bd5635a1
RP
1111 /* In rvalue contexts, such as this, functions are coerced into
1112 pointers to functions. This makes "x/i main" work. */
1113 if (/* last_format == 'i'
1114 && */ TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_FUNC
1115 && VALUE_LVAL (val) == lval_memory)
1116 next_address = VALUE_ADDRESS (val);
1117 else
e1ce8aa5 1118 next_address = value_as_pointer (val);
bd5635a1
RP
1119 do_cleanups (old_chain);
1120 }
1121
1122 do_examine (fmt, next_address);
1123
4d38b5a8
JG
1124 /* If the examine succeeds, we remember its size and format for next time. */
1125 last_size = fmt.size;
1126 last_format = fmt.format;
1127
bd5635a1
RP
1128 /* Set a couple of internal variables if appropriate. */
1129 if (last_examine_value)
1130 {
c4668207
JG
1131 /* Make last address examined available to the user as $_. Use
1132 the correct pointer type. */
bd5635a1 1133 set_internalvar (lookup_internalvar ("_"),
c4668207
JG
1134 value_from_longest (
1135 lookup_pointer_type (VALUE_TYPE (last_examine_value)),
1136 (LONGEST) last_examine_address));
bd5635a1
RP
1137
1138 /* Make contents of last address examined available to the user as $__.*/
1139 set_internalvar (lookup_internalvar ("__"), last_examine_value);
1140 }
1141}
bd5635a1 1142
bd5635a1 1143\f
bd5635a1
RP
1144/* Add an expression to the auto-display chain.
1145 Specify the expression. */
1146
1147static void
1148display_command (exp, from_tty)
1149 char *exp;
1150 int from_tty;
1151{
1152 struct format_data fmt;
1153 register struct expression *expr;
1154 register struct display *new;
1155
1156 if (exp == 0)
1157 {
1158 do_displays ();
1159 return;
1160 }
1161
1162 if (*exp == '/')
1163 {
1164 exp++;
1165 fmt = decode_format (&exp, 0, 0);
1166 if (fmt.size && fmt.format == 0)
1167 fmt.format = 'x';
1168 if (fmt.format == 'i' || fmt.format == 's')
1169 fmt.size = 'b';
1170 }
1171 else
1172 {
1173 fmt.format = 0;
1174 fmt.size = 0;
1175 fmt.count = 0;
1176 }
1177
1178 innermost_block = 0;
c4668207 1179 expr = parse_expression (exp);
bd5635a1
RP
1180
1181 new = (struct display *) xmalloc (sizeof (struct display));
1182
1183 new->exp = expr;
1184 new->block = innermost_block;
1185 new->next = display_chain;
1186 new->number = ++display_number;
1187 new->format = fmt;
1188 new->status = enabled;
1189 display_chain = new;
1190
1191 if (from_tty && target_has_execution)
1192 do_one_display (new);
1193
1194 dont_repeat ();
1195}
1196
1197static void
1198free_display (d)
1199 struct display *d;
1200{
4d38b5a8
JG
1201 free ((PTR)d->exp);
1202 free ((PTR)d);
bd5635a1
RP
1203}
1204
1205/* Clear out the display_chain.
1206 Done when new symtabs are loaded, since this invalidates
1207 the types stored in many expressions. */
1208
1209void
1210clear_displays ()
1211{
1212 register struct display *d;
1213
a8a69e63 1214 while ((d = display_chain) != NULL)
bd5635a1 1215 {
4d38b5a8 1216 free ((PTR)d->exp);
bd5635a1 1217 display_chain = d->next;
4d38b5a8 1218 free ((PTR)d);
bd5635a1
RP
1219 }
1220}
1221
1222/* Delete the auto-display number NUM. */
1223
93fe4e33 1224static void
bd5635a1
RP
1225delete_display (num)
1226 int num;
1227{
1228 register struct display *d1, *d;
1229
1230 if (!display_chain)
1231 error ("No display number %d.", num);
1232
1233 if (display_chain->number == num)
1234 {
1235 d1 = display_chain;
1236 display_chain = d1->next;
1237 free_display (d1);
1238 }
1239 else
1240 for (d = display_chain; ; d = d->next)
1241 {
1242 if (d->next == 0)
1243 error ("No display number %d.", num);
1244 if (d->next->number == num)
1245 {
1246 d1 = d->next;
1247 d->next = d1->next;
1248 free_display (d1);
1249 break;
1250 }
1251 }
1252}
1253
1254/* Delete some values from the auto-display chain.
1255 Specify the element numbers. */
1256
1257static void
4d38b5a8 1258undisplay_command (args, from_tty)
bd5635a1 1259 char *args;
4d38b5a8 1260 int from_tty;
bd5635a1
RP
1261{
1262 register char *p = args;
1263 register char *p1;
1264 register int num;
1265
1266 if (args == 0)
1267 {
1268 if (query ("Delete all auto-display expressions? "))
1269 clear_displays ();
1270 dont_repeat ();
1271 return;
1272 }
1273
1274 while (*p)
1275 {
1276 p1 = p;
1277 while (*p1 >= '0' && *p1 <= '9') p1++;
1278 if (*p1 && *p1 != ' ' && *p1 != '\t')
1279 error ("Arguments must be display numbers.");
1280
1281 num = atoi (p);
1282
1283 delete_display (num);
1284
1285 p = p1;
1286 while (*p == ' ' || *p == '\t') p++;
1287 }
1288 dont_repeat ();
1289}
1290
1291/* Display a single auto-display.
1292 Do nothing if the display cannot be printed in the current context,
1293 or if the display is disabled. */
1294
1295static void
1296do_one_display (d)
1297 struct display *d;
1298{
1299 int within_current_scope;
1300
1301 if (d->status == disabled)
1302 return;
1303
1304 if (d->block)
1305 within_current_scope = contained_in (get_selected_block (), d->block);
1306 else
1307 within_current_scope = 1;
1308 if (!within_current_scope)
1309 return;
1310
1311 current_display_number = d->number;
1312
1313 printf_filtered ("%d: ", d->number);
1314 if (d->format.size)
1315 {
1316 CORE_ADDR addr;
1317
1318 printf_filtered ("x/");
1319 if (d->format.count != 1)
1320 printf_filtered ("%d", d->format.count);
1321 printf_filtered ("%c", d->format.format);
1322 if (d->format.format != 'i' && d->format.format != 's')
1323 printf_filtered ("%c", d->format.size);
1324 printf_filtered (" ");
199b2450 1325 print_expression (d->exp, gdb_stdout);
bd5635a1
RP
1326 if (d->format.count != 1)
1327 printf_filtered ("\n");
1328 else
1329 printf_filtered (" ");
1330
e1ce8aa5 1331 addr = value_as_pointer (evaluate_expression (d->exp));
bd5635a1
RP
1332 if (d->format.format == 'i')
1333 addr = ADDR_BITS_REMOVE (addr);
1334
1335 do_examine (d->format, addr);
1336 }
1337 else
1338 {
1339 if (d->format.format)
1340 printf_filtered ("/%c ", d->format.format);
199b2450 1341 print_expression (d->exp, gdb_stdout);
bd5635a1
RP
1342 printf_filtered (" = ");
1343 print_formatted (evaluate_expression (d->exp),
1344 d->format.format, d->format.size);
1345 printf_filtered ("\n");
1346 }
1347
199b2450 1348 gdb_flush (gdb_stdout);
bd5635a1
RP
1349 current_display_number = -1;
1350}
1351
1352/* Display all of the values on the auto-display chain which can be
1353 evaluated in the current scope. */
1354
1355void
1356do_displays ()
1357{
1358 register struct display *d;
1359
1360 for (d = display_chain; d; d = d->next)
1361 do_one_display (d);
1362}
1363
1364/* Delete the auto-display which we were in the process of displaying.
1365 This is done when there is an error or a signal. */
1366
1367void
1368disable_display (num)
1369 int num;
1370{
1371 register struct display *d;
1372
1373 for (d = display_chain; d; d = d->next)
1374 if (d->number == num)
1375 {
1376 d->status = disabled;
1377 return;
1378 }
199b2450 1379 printf_unfiltered ("No display number %d.\n", num);
bd5635a1
RP
1380}
1381
1382void
1383disable_current_display ()
1384{
1385 if (current_display_number >= 0)
1386 {
1387 disable_display (current_display_number);
199b2450 1388 fprintf_unfiltered (gdb_stderr, "Disabling display %d to avoid infinite recursion.\n",
bd5635a1
RP
1389 current_display_number);
1390 }
1391 current_display_number = -1;
1392}
1393
1394static void
4d38b5a8
JG
1395display_info (ignore, from_tty)
1396 char *ignore;
1397 int from_tty;
bd5635a1
RP
1398{
1399 register struct display *d;
1400
1401 if (!display_chain)
199b2450 1402 printf_unfiltered ("There are no auto-display expressions now.\n");
bd5635a1
RP
1403 else
1404 printf_filtered ("Auto-display expressions now in effect:\n\
1405Num Enb Expression\n");
1406
1407 for (d = display_chain; d; d = d->next)
1408 {
1409 printf_filtered ("%d: %c ", d->number, "ny"[(int)d->status]);
1410 if (d->format.size)
1411 printf_filtered ("/%d%c%c ", d->format.count, d->format.size,
1412 d->format.format);
1413 else if (d->format.format)
1414 printf_filtered ("/%c ", d->format.format);
199b2450 1415 print_expression (d->exp, gdb_stdout);
bd5635a1
RP
1416 if (d->block && !contained_in (get_selected_block (), d->block))
1417 printf_filtered (" (cannot be evaluated in the current context)");
1418 printf_filtered ("\n");
199b2450 1419 gdb_flush (gdb_stdout);
bd5635a1
RP
1420 }
1421}
1422
93fe4e33 1423static void
4d38b5a8 1424enable_display (args, from_tty)
bd5635a1 1425 char *args;
4d38b5a8 1426 int from_tty;
bd5635a1
RP
1427{
1428 register char *p = args;
1429 register char *p1;
1430 register int num;
1431 register struct display *d;
1432
1433 if (p == 0)
1434 {
1435 for (d = display_chain; d; d = d->next)
1436 d->status = enabled;
1437 }
1438 else
1439 while (*p)
1440 {
1441 p1 = p;
1442 while (*p1 >= '0' && *p1 <= '9')
1443 p1++;
1444 if (*p1 && *p1 != ' ' && *p1 != '\t')
1445 error ("Arguments must be display numbers.");
1446
1447 num = atoi (p);
1448
1449 for (d = display_chain; d; d = d->next)
1450 if (d->number == num)
1451 {
1452 d->status = enabled;
1453 goto win;
1454 }
199b2450 1455 printf_unfiltered ("No display number %d.\n", num);
bd5635a1
RP
1456 win:
1457 p = p1;
1458 while (*p == ' ' || *p == '\t')
1459 p++;
1460 }
1461}
1462
e1ce8aa5 1463/* ARGSUSED */
93fe4e33 1464static void
bd5635a1
RP
1465disable_display_command (args, from_tty)
1466 char *args;
1467 int from_tty;
1468{
1469 register char *p = args;
1470 register char *p1;
1471 register struct display *d;
1472
1473 if (p == 0)
1474 {
1475 for (d = display_chain; d; d = d->next)
1476 d->status = disabled;
1477 }
1478 else
1479 while (*p)
1480 {
1481 p1 = p;
1482 while (*p1 >= '0' && *p1 <= '9')
1483 p1++;
1484 if (*p1 && *p1 != ' ' && *p1 != '\t')
1485 error ("Arguments must be display numbers.");
1486
1487 disable_display (atoi (p));
1488
1489 p = p1;
1490 while (*p == ' ' || *p == '\t')
1491 p++;
1492 }
1493}
1494
1495\f
1496/* Print the value in stack frame FRAME of a variable
1497 specified by a struct symbol. */
1498
1499void
1500print_variable_value (var, frame, stream)
1501 struct symbol *var;
1502 FRAME frame;
199b2450 1503 GDB_FILE *stream;
bd5635a1 1504{
82a2edfb 1505 value_ptr val = read_var_value (var, frame);
bd5635a1
RP
1506 value_print (val, stream, 0, Val_pretty_default);
1507}
1508
1509/* Print the arguments of a stack frame, given the function FUNC
1510 running in that frame (as a symbol), the info on the frame,
1511 and the number of args according to the stack frame (or -1 if unknown). */
1512
1513/* References here and elsewhere to "number of args according to the
1514 stack frame" appear in all cases to refer to "number of ints of args
1515 according to the stack frame". At least for VAX, i386, isi. */
1516
1517void
1518print_frame_args (func, fi, num, stream)
1519 struct symbol *func;
1520 struct frame_info *fi;
1521 int num;
199b2450 1522 GDB_FILE *stream;
bd5635a1 1523{
f73b07c9 1524 struct block *b = NULL;
bd5635a1
RP
1525 int nsyms = 0;
1526 int first = 1;
1527 register int i;
1528 register struct symbol *sym;
82a2edfb 1529 register value_ptr val;
bd5635a1
RP
1530 /* Offset of next stack argument beyond the one we have seen that is
1531 at the highest offset.
1532 -1 if we haven't come to a stack argument yet. */
e1ce8aa5 1533 long highest_offset = -1;
bd5635a1
RP
1534 int arg_size;
1535 /* Number of ints of arguments that we have printed so far. */
1536 int args_printed = 0;
1537
1538 if (func)
1539 {
1540 b = SYMBOL_BLOCK_VALUE (func);
1541 nsyms = BLOCK_NSYMS (b);
1542 }
1543
1544 for (i = 0; i < nsyms; i++)
1545 {
1546 QUIT;
1547 sym = BLOCK_SYM (b, i);
1548
c4668207
JG
1549 /* Keep track of the highest stack argument offset seen, and
1550 skip over any kinds of symbols we don't care about. */
bd5635a1
RP
1551
1552 switch (SYMBOL_CLASS (sym)) {
bd5635a1
RP
1553 case LOC_ARG:
1554 case LOC_REF_ARG:
1555 {
e1ce8aa5 1556 long current_offset = SYMBOL_VALUE (sym);
bd5635a1
RP
1557
1558 arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
1559
1560 /* Compute address of next argument by adding the size of
1561 this argument and rounding to an int boundary. */
1562 current_offset
1563 = ((current_offset + arg_size + sizeof (int) - 1)
1564 & ~(sizeof (int) - 1));
1565
1566 /* If this is the highest offset seen yet, set highest_offset. */
1567 if (highest_offset == -1
1568 || (current_offset > highest_offset))
1569 highest_offset = current_offset;
1570
1571 /* Add the number of ints we're about to print to args_printed. */
1572 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
1573 }
1574
c4668207
JG
1575 /* We care about types of symbols, but don't need to keep track of
1576 stack offsets in them. */
1577 case LOC_REGPARM:
5afa2040 1578 case LOC_REGPARM_ADDR:
c4668207 1579 case LOC_LOCAL_ARG:
a1c8d76e 1580 case LOC_BASEREG_ARG:
bd5635a1 1581 break;
c4668207
JG
1582
1583 /* Other types of symbols we just skip over. */
1584 default:
1585 continue;
bd5635a1
RP
1586 }
1587
31258e4f
JK
1588 /* We have to look up the symbol because arguments can have
1589 two entries (one a parameter, one a local) and the one we
1590 want is the local, which lookup_symbol will find for us.
1591 This includes gcc1 (not gcc2) on the sparc when passing a
1592 small structure and gcc2 when the argument type is float
1593 and it is passed as a double and converted to float by
1594 the prologue (in the latter case the type of the LOC_ARG
1595 symbol is double and the type of the LOC_LOCAL symbol is
314e6bf3 1596 float). */
31258e4f 1597 /* But if the parameter name is null, don't try it.
a8a69e63
FF
1598 Null parameter names occur on the RS/6000, for traceback tables.
1599 FIXME, should we even print them? */
1600
1601 if (*SYMBOL_NAME (sym))
314e6bf3
JG
1602 {
1603 struct symbol *nsym;
1604 nsym = lookup_symbol
1605 (SYMBOL_NAME (sym),
1606 b, VAR_NAMESPACE, (int *)NULL, (struct symtab **)NULL);
1607 if (SYMBOL_CLASS (nsym) == LOC_REGISTER)
1608 {
1609 /* There is a LOC_ARG/LOC_REGISTER pair. This means that
1610 it was passed on the stack and loaded into a register,
1611 or passed in a register and stored in a stack slot.
1612 GDB 3.x used the LOC_ARG; GDB 4.0-4.11 used the LOC_REGISTER.
1613
1614 Reasons for using the LOC_ARG:
1615 (1) because find_saved_registers may be slow for remote
1616 debugging,
1617 (2) because registers are often re-used and stack slots
1618 rarely (never?) are. Therefore using the stack slot is
1619 much less likely to print garbage.
1620
1621 Reasons why we might want to use the LOC_REGISTER:
1622 (1) So that the backtrace prints the same value as
1623 "print foo". I see no compelling reason why this needs
1624 to be the case; having the backtrace print the value which
1625 was passed in, and "print foo" print the value as modified
1626 within the called function, makes perfect sense to me.
1627
1628 Additional note: It might be nice if "info args" displayed
1629 both values.
c0c9b923 1630 One more note: There is a case with sparc structure passing
314e6bf3
JG
1631 where we need to use the LOC_REGISTER, but this is dealt with
1632 by creating a single LOC_REGPARM in symbol reading. */
1633
1634 /* Leave sym (the LOC_ARG) alone. */
1635 ;
1636 }
1637 else
1638 sym = nsym;
1639 }
c4668207 1640
bd5635a1
RP
1641 /* Print the current arg. */
1642 if (! first)
1643 fprintf_filtered (stream, ", ");
1644 wrap_here (" ");
96f7edbd
JK
1645
1646 if (annotation_level > 1)
c0c9b923
SC
1647 printf_filtered ("\n\032\032arg-begin\n");
1648
31258e4f
JK
1649 fprintf_symbol_filtered (stream, SYMBOL_SOURCE_NAME (sym),
1650 SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI);
96f7edbd
JK
1651 if (annotation_level > 1)
1652 printf_filtered ("\n\032\032arg-name-end\n");
bd5635a1
RP
1653 fputs_filtered ("=", stream);
1654
1655 /* Avoid value_print because it will deref ref parameters. We just
1656 want to print their addresses. Print ??? for args whose address
d11c44f1
JG
1657 we do not know. We pass 2 as "recurse" to val_print because our
1658 standard indentation here is 4 spaces, and val_print indents
1659 2 for each recurse. */
bd5635a1 1660 val = read_var_value (sym, FRAME_INFO_ID (fi));
96f7edbd
JK
1661
1662 if (annotation_level > 1)
1663 {
c0c9b923 1664 printf_filtered ("\n\032\032arg-value ");
96f7edbd
JK
1665 print_value_flags (val == NULL ? NULL : VALUE_TYPE (val));
1666 printf_filtered ("\n");
1667 }
1668
bd5635a1
RP
1669 if (val)
1670 val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), VALUE_ADDRESS (val),
d11c44f1 1671 stream, 0, 0, 2, Val_no_prettyprint);
bd5635a1
RP
1672 else
1673 fputs_filtered ("???", stream);
96f7edbd
JK
1674
1675 if (annotation_level > 1)
1676 printf_filtered ("\n\032\032arg-end\n");
1677
bd5635a1
RP
1678 first = 0;
1679 }
1680
1681 /* Don't print nameless args in situations where we don't know
1682 enough about the stack to find them. */
1683 if (num != -1)
1684 {
e1ce8aa5 1685 long start;
bd5635a1
RP
1686
1687 if (highest_offset == -1)
1688 start = FRAME_ARGS_SKIP;
1689 else
1690 start = highest_offset;
1691
7dc15bb7
JG
1692 print_frame_nameless_args (fi, start, num - args_printed,
1693 first, stream);
bd5635a1
RP
1694 }
1695}
1696
1697/* Print nameless args on STREAM.
7dc15bb7 1698 FI is the frameinfo for this frame, START is the offset
bd5635a1
RP
1699 of the first nameless arg, and NUM is the number of nameless args to
1700 print. FIRST is nonzero if this is the first argument (not just
1701 the first nameless arg). */
1702static void
7dc15bb7
JG
1703print_frame_nameless_args (fi, start, num, first, stream)
1704 struct frame_info *fi;
e1ce8aa5 1705 long start;
bd5635a1
RP
1706 int num;
1707 int first;
199b2450 1708 GDB_FILE *stream;
bd5635a1
RP
1709{
1710 int i;
7dc15bb7
JG
1711 CORE_ADDR argsaddr;
1712 long arg_value;
1713
bd5635a1
RP
1714 for (i = 0; i < num; i++)
1715 {
1716 QUIT;
7dc15bb7
JG
1717#ifdef NAMELESS_ARG_VALUE
1718 NAMELESS_ARG_VALUE (fi, start, &arg_value);
1719#else
1720 argsaddr = FRAME_ARGS_ADDRESS (fi);
1721 if (!argsaddr)
1722 return;
1723
1724 arg_value = read_memory_integer (argsaddr + start, sizeof (int));
1725#endif
1726
bd5635a1
RP
1727 if (!first)
1728 fprintf_filtered (stream, ", ");
7dc15bb7
JG
1729
1730#ifdef PRINT_NAMELESS_INTEGER
1731 PRINT_NAMELESS_INTEGER (stream, arg_value);
bd5635a1 1732#else
7dc15bb7
JG
1733#ifdef PRINT_TYPELESS_INTEGER
1734 PRINT_TYPELESS_INTEGER (stream, builtin_type_int, (LONGEST) arg_value);
1735#else
1736 fprintf_filtered (stream, "%d", arg_value);
1737#endif /* PRINT_TYPELESS_INTEGER */
1738#endif /* PRINT_NAMELESS_INTEGER */
bd5635a1
RP
1739 first = 0;
1740 start += sizeof (int);
1741 }
1742}
1743\f
e1ce8aa5 1744/* ARGSUSED */
bd5635a1
RP
1745static void
1746printf_command (arg, from_tty)
1747 char *arg;
1748 int from_tty;
1749{
1750 register char *f;
1751 register char *s = arg;
1752 char *string;
82a2edfb 1753 value_ptr *val_args;
199b2450
TL
1754 char *substrings;
1755 char *current_substring;
bd5635a1
RP
1756 int nargs = 0;
1757 int allocated_args = 20;
199b2450 1758 struct cleanup *old_cleanups;
bd5635a1 1759
82a2edfb 1760 val_args = (value_ptr *) xmalloc (allocated_args * sizeof (value_ptr));
199b2450 1761 old_cleanups = make_cleanup (free_current_contents, &val_args);
bd5635a1
RP
1762
1763 if (s == 0)
1764 error_no_arg ("format-control string and values to print");
1765
1766 /* Skip white space before format string */
1767 while (*s == ' ' || *s == '\t') s++;
1768
1769 /* A format string should follow, enveloped in double quotes */
1770 if (*s++ != '"')
1771 error ("Bad format string, missing '\"'.");
1772
1773 /* Parse the format-control string and copy it into the string STRING,
1774 processing some kinds of escape sequence. */
1775
1776 f = string = (char *) alloca (strlen (s) + 1);
199b2450 1777
bd5635a1
RP
1778 while (*s != '"')
1779 {
1780 int c = *s++;
1781 switch (c)
1782 {
1783 case '\0':
1784 error ("Bad format string, non-terminated '\"'.");
bd5635a1
RP
1785
1786 case '\\':
1787 switch (c = *s++)
1788 {
1789 case '\\':
1790 *f++ = '\\';
1791 break;
82a2edfb
JK
1792 case 'a':
1793#ifdef __STDC__
1794 *f++ = '\a';
1795#else
1796 *f++ = '\007'; /* Bell */
1797#endif
1798 break;
1799 case 'b':
1800 *f++ = '\b';
1801 break;
1802 case 'f':
1803 *f++ = '\f';
1804 break;
bd5635a1
RP
1805 case 'n':
1806 *f++ = '\n';
1807 break;
82a2edfb
JK
1808 case 'r':
1809 *f++ = '\r';
1810 break;
bd5635a1
RP
1811 case 't':
1812 *f++ = '\t';
1813 break;
82a2edfb
JK
1814 case 'v':
1815 *f++ = '\v';
bd5635a1
RP
1816 break;
1817 case '"':
1818 *f++ = '"';
1819 break;
1820 default:
1821 /* ??? TODO: handle other escape sequences */
82a2edfb
JK
1822 error ("Unrecognized escape character \\%c in format string.",
1823 c);
bd5635a1
RP
1824 }
1825 break;
1826
1827 default:
1828 *f++ = c;
1829 }
1830 }
1831
1832 /* Skip over " and following space and comma. */
1833 s++;
1834 *f++ = '\0';
1835 while (*s == ' ' || *s == '\t') s++;
1836
1837 if (*s != ',' && *s != 0)
1838 error ("Invalid argument syntax");
1839
1840 if (*s == ',') s++;
1841 while (*s == ' ' || *s == '\t') s++;
1842
199b2450
TL
1843 /* Need extra space for the '\0's. Doubling the size is sufficient. */
1844 substrings = alloca (strlen (string) * 2);
1845 current_substring = substrings;
1846
bd5635a1
RP
1847 {
1848 /* Now scan the string for %-specs and see what kinds of args they want.
199b2450 1849 argclass[I] classifies the %-specs so we can give vprintf_unfiltered something
bd5635a1 1850 of the right size. */
199b2450
TL
1851
1852 enum argclass {no_arg, int_arg, string_arg, double_arg, long_long_arg};
bd5635a1 1853 enum argclass *argclass;
199b2450
TL
1854 enum argclass this_argclass;
1855 char *last_arg;
bd5635a1 1856 int nargs_wanted;
bd5635a1
RP
1857 int lcount;
1858 int i;
19bdd57f 1859
bd5635a1
RP
1860 argclass = (enum argclass *) alloca (strlen (s) * sizeof *argclass);
1861 nargs_wanted = 0;
1862 f = string;
199b2450 1863 last_arg = string;
bd5635a1
RP
1864 while (*f)
1865 if (*f++ == '%')
1866 {
1867 lcount = 0;
1868 while (strchr ("0123456789.hlL-+ #", *f))
1869 {
1870 if (*f == 'l' || *f == 'L')
1871 lcount++;
1872 f++;
1873 }
199b2450
TL
1874 switch (*f)
1875 {
1876 case 's':
1877 this_argclass = string_arg;
1878 break;
1879
1880 case 'e':
1881 case 'f':
1882 case 'g':
1883 this_argclass = double_arg;
1884 break;
1885
1886 case '*':
1887 error ("`*' not supported for precision or width in printf");
1888
1889 case 'n':
1890 error ("Format specifier `n' not supported in printf");
1891
1892 case '%':
1893 this_argclass = no_arg;
1894 break;
1895
1896 default:
1897 if (lcount > 1)
1898 this_argclass = long_long_arg;
1899 else
1900 this_argclass = int_arg;
1901 break;
1902 }
bd5635a1 1903 f++;
199b2450
TL
1904 if (this_argclass != no_arg)
1905 {
1906 strncpy (current_substring, last_arg, f - last_arg);
1907 current_substring += f - last_arg;
1908 *current_substring++ = '\0';
1909 last_arg = f;
1910 argclass[nargs_wanted++] = this_argclass;
1911 }
bd5635a1 1912 }
8acf767c 1913
bd5635a1
RP
1914 /* Now, parse all arguments and evaluate them.
1915 Store the VALUEs in VAL_ARGS. */
8acf767c 1916
bd5635a1
RP
1917 while (*s != '\0')
1918 {
1919 char *s1;
1920 if (nargs == allocated_args)
82a2edfb
JK
1921 val_args = (value_ptr *) xrealloc ((char *) val_args,
1922 (allocated_args *= 2)
1923 * sizeof (value_ptr));
bd5635a1
RP
1924 s1 = s;
1925 val_args[nargs] = parse_to_comma_and_eval (&s1);
1926
1927 /* If format string wants a float, unchecked-convert the value to
1928 floating point of the same size */
1929
1930 if (argclass[nargs] == double_arg)
1931 {
1932 if (TYPE_LENGTH (VALUE_TYPE (val_args[nargs])) == sizeof (float))
1933 VALUE_TYPE (val_args[nargs]) = builtin_type_float;
1934 if (TYPE_LENGTH (VALUE_TYPE (val_args[nargs])) == sizeof (double))
1935 VALUE_TYPE (val_args[nargs]) = builtin_type_double;
1936 }
1937 nargs++;
1938 s = s1;
1939 if (*s == ',')
1940 s++;
1941 }
1942
1943 if (nargs != nargs_wanted)
1944 error ("Wrong number of arguments for specified format-string");
19bdd57f 1945
199b2450
TL
1946 /* FIXME: We should be using vprintf_filtered, but as long as it
1947 has an arbitrary limit that is unacceptable. Correct fix is
1948 for vprintf_filtered to scan down the format string so it knows
1949 how big a buffer it needs (perhaps by putting a vasprintf (see
1950 GNU C library) in libiberty).
1951
1952 But for now, just force out any pending output, so at least the output
1953 appears in the correct order. */
1954 wrap_here ((char *)NULL);
19bdd57f 1955
199b2450
TL
1956 /* Now actually print them. */
1957 current_substring = substrings;
bd5635a1
RP
1958 for (i = 0; i < nargs; i++)
1959 {
199b2450 1960 switch (argclass[i])
bd5635a1 1961 {
199b2450
TL
1962 case string_arg:
1963 {
1964 char *str;
1965 CORE_ADDR tem;
1966 int j;
1967 tem = value_as_pointer (val_args[i]);
1968
1969 /* This is a %s argument. Find the length of the string. */
1970 for (j = 0; ; j++)
1971 {
1972 char c;
1973 QUIT;
1974 read_memory (tem + j, &c, 1);
1975 if (c == 0)
1976 break;
1977 }
1978
1979 /* Copy the string contents into a string inside GDB. */
1980 str = (char *) alloca (j + 1);
1981 read_memory (tem, str, j);
1982 str[j] = 0;
1983
1984 /* Don't use printf_filtered because of arbitrary limit. */
1985 printf_unfiltered (current_substring, str);
1986 }
1987 break;
1988 case double_arg:
1989 {
1990 double val = value_as_double (val_args[i]);
1991 /* Don't use printf_filtered because of arbitrary limit. */
1992 printf_unfiltered (current_substring, val);
1993 break;
1994 }
1995 case long_long_arg:
1996#if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
bd5635a1 1997 {
19bdd57f 1998 long long val = value_as_long (val_args[i]);
199b2450
TL
1999 /* Don't use printf_filtered because of arbitrary limit. */
2000 printf_unfiltered (current_substring, val);
2001 break;
bd5635a1 2002 }
199b2450
TL
2003#else
2004 error ("long long not supported in printf");
bd5635a1 2005#endif
199b2450 2006 case int_arg:
bd5635a1 2007 {
199b2450 2008 /* FIXME: there should be separate int_arg and long_arg. */
19bdd57f 2009 long val = value_as_long (val_args[i]);
199b2450
TL
2010 /* Don't use printf_filtered because of arbitrary limit. */
2011 printf_unfiltered (current_substring, val);
2012 break;
bd5635a1 2013 }
199b2450
TL
2014 default:
2015 error ("internal error in printf_command");
2016 }
2017 /* Skip to the next substring. */
2018 current_substring += strlen (current_substring) + 1;
bd5635a1 2019 }
199b2450
TL
2020 /* Print the portion of the format string after the last argument. */
2021 /* It would be OK to use printf_filtered here. */
2022 printf (last_arg);
bd5635a1 2023 }
199b2450 2024 do_cleanups (old_cleanups);
bd5635a1
RP
2025}
2026\f
bd5635a1
RP
2027/* Dump a specified section of assembly code. With no command line
2028 arguments, this command will dump the assembly code for the
2029 function surrounding the pc value in the selected frame. With one
2030 argument, it will dump the assembly code surrounding that pc value.
2031 Two arguments are interpeted as bounds within which to dump
2032 assembly. */
2033
e1ce8aa5 2034/* ARGSUSED */
bd5635a1
RP
2035static void
2036disassemble_command (arg, from_tty)
2037 char *arg;
2038 int from_tty;
2039{
2040 CORE_ADDR low, high;
f1ed4330 2041 char *name;
bd5635a1
RP
2042 CORE_ADDR pc;
2043 char *space_index;
2044
f1ed4330 2045 name = NULL;
bd5635a1
RP
2046 if (!arg)
2047 {
2048 if (!selected_frame)
2049 error ("No frame selected.\n");
2050
2051 pc = get_frame_pc (selected_frame);
f1ed4330
JK
2052 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2053 error ("No function contains program counter for selected frame.\n");
bd5635a1
RP
2054 }
2055 else if (!(space_index = (char *) strchr (arg, ' ')))
2056 {
2057 /* One argument. */
2058 pc = parse_and_eval_address (arg);
f1ed4330
JK
2059 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
2060 error ("No function contains specified address.\n");
bd5635a1
RP
2061 }
2062 else
2063 {
2064 /* Two arguments. */
2065 *space_index = '\0';
2066 low = parse_and_eval_address (arg);
2067 high = parse_and_eval_address (space_index + 1);
2068 }
2069
2070 printf_filtered ("Dump of assembler code ");
f1ed4330 2071 if (name != NULL)
bd5635a1 2072 {
bd5635a1
RP
2073 printf_filtered ("for function %s:\n", name);
2074 }
2075 else
f77ad505 2076 {
833e0d94
JK
2077 printf_filtered ("from ");
2078 print_address_numeric (low, gdb_stdout);
2079 printf_filtered (" to ");
2080 print_address_numeric (high, gdb_stdout);
2081 printf_filtered (":\n");
f77ad505 2082 }
bd5635a1
RP
2083
2084 /* Dump the specified range. */
2085 for (pc = low; pc < high; )
2086 {
2087 QUIT;
199b2450 2088 print_address (pc, gdb_stdout);
bd5635a1 2089 printf_filtered (":\t");
ca603cff
JK
2090 /* We often wrap here if there are long symbolic names. */
2091 wrap_here (" ");
199b2450 2092 pc += print_insn (pc, gdb_stdout);
bd5635a1
RP
2093 printf_filtered ("\n");
2094 }
2095 printf_filtered ("End of assembler dump.\n");
199b2450 2096 gdb_flush (gdb_stdout);
bd5635a1
RP
2097}
2098
2099\f
2100void
2101_initialize_printcmd ()
2102{
2103 current_display_number = -1;
2104
2105 add_info ("address", address_info,
2106 "Describe where variable VAR is stored.");
2107
2108 add_com ("x", class_vars, x_command,
2109 "Examine memory: x/FMT ADDRESS.\n\
2110ADDRESS is an expression for the memory address to examine.\n\
2111FMT is a repeat count followed by a format letter and a size letter.\n\
2112Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),\n\
31258e4f 2113 t(binary), f(float), a(address), i(instruction), c(char) and s(string).\n\
bd5635a1 2114Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).\n\
bd5635a1
RP
2115The specified number of objects of the specified size are printed\n\
2116according to the format.\n\n\
2117Defaults for format and size letters are those previously used.\n\
2118Default count is 1. Default address is following last thing printed\n\
2119with this command or \"print\".");
2120
2121 add_com ("disassemble", class_vars, disassemble_command,
2122 "Disassemble a specified section of memory.\n\
2123Default is the function surrounding the pc of the selected frame.\n\
2124With a single argument, the function surrounding that address is dumped.\n\
2125Two arguments are taken as a range of memory to dump.");
2126
bd5635a1
RP
2127#if 0
2128 add_com ("whereis", class_vars, whereis_command,
2129 "Print line number and file of definition of variable.");
2130#endif
2131
2132 add_info ("display", display_info,
2133 "Expressions to display when program stops, with code numbers.");
2134
2135 add_cmd ("undisplay", class_vars, undisplay_command,
2136 "Cancel some expressions to be displayed when program stops.\n\
2137Arguments are the code numbers of the expressions to stop displaying.\n\
2138No argument means cancel all automatic-display expressions.\n\
2139\"delete display\" has the same effect as this command.\n\
2140Do \"info display\" to see current list of code numbers.",
2141 &cmdlist);
2142
2143 add_com ("display", class_vars, display_command,
2144 "Print value of expression EXP each time the program stops.\n\
2145/FMT may be used before EXP as in the \"print\" command.\n\
2146/FMT \"i\" or \"s\" or including a size-letter is allowed,\n\
2147as in the \"x\" command, and then EXP is used to get the address to examine\n\
2148and examining is done as in the \"x\" command.\n\n\
2149With no argument, display all currently requested auto-display expressions.\n\
2150Use \"undisplay\" to cancel display requests previously made.");
2151
2152 add_cmd ("display", class_vars, enable_display,
2153 "Enable some expressions to be displayed when program stops.\n\
2154Arguments are the code numbers of the expressions to resume displaying.\n\
2155No argument means enable all automatic-display expressions.\n\
2156Do \"info display\" to see current list of code numbers.", &enablelist);
2157
2158 add_cmd ("display", class_vars, disable_display_command,
2159 "Disable some expressions to be displayed when program stops.\n\
2160Arguments are the code numbers of the expressions to stop displaying.\n\
2161No argument means disable all automatic-display expressions.\n\
2162Do \"info display\" to see current list of code numbers.", &disablelist);
2163
2164 add_cmd ("display", class_vars, undisplay_command,
2165 "Cancel some expressions to be displayed when program stops.\n\
2166Arguments are the code numbers of the expressions to stop displaying.\n\
2167No argument means cancel all automatic-display expressions.\n\
2168Do \"info display\" to see current list of code numbers.", &deletelist);
2169
2170 add_com ("printf", class_vars, printf_command,
2171 "printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
2172This is useful for formatted output in user-defined commands.");
2173 add_com ("output", class_vars, output_command,
2174 "Like \"print\" but don't put in value history and don't print newline.\n\
2175This is useful in user-defined commands.");
2176
2177 add_prefix_cmd ("set", class_vars, set_command,
45fe3db4
FF
2178"Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2179syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2180example). VAR may be a debugger \"convenience\" variable (names starting\n\
2181with $), a register (a few standard names starting with $), or an actual\n\
2182variable in the program being debugged. EXP is any valid expression.\n\
bd5635a1
RP
2183Use \"set variable\" for variables with names identical to set subcommands.\n\
2184\nWith a subcommand, this command modifies parts of the gdb environment.\n\
2185You can see these environment settings with the \"show\" command.",
2186 &setlist, "set ", 1, &cmdlist);
2187
2188 /* "call" is the same as "set", but handy for dbx users to call fns. */
2189 add_com ("call", class_vars, call_command,
6fe90fc8 2190 "Call a function in the program.\n\
c4668207
JG
2191The argument is the function name and arguments, in the notation of the\n\
2192current working language. The result is printed and saved in the value\n\
2193history, if it is not void.");
bd5635a1
RP
2194
2195 add_cmd ("variable", class_vars, set_command,
45fe3db4
FF
2196"Evaluate expression EXP and assign result to variable VAR, using assignment\n\
2197syntax appropriate for the current language (VAR = EXP or VAR := EXP for\n\
2198example). VAR may be a debugger \"convenience\" variable (names starting\n\
2199with $), a register (a few standard names starting with $), or an actual\n\
2200variable in the program being debugged. EXP is any valid expression.\n\
bd5635a1
RP
2201This may usually be abbreviated to simply \"set\".",
2202 &setlist);
2203
2204 add_com ("print", class_vars, print_command,
2205 concat ("Print value of expression EXP.\n\
2206Variables accessible are those of the lexical environment of the selected\n\
2207stack frame, plus all those whose scope is global or an entire file.\n\
2208\n\
2209$NUM gets previous value number NUM. $ and $$ are the last two values.\n\
2210$$NUM refers to NUM'th value back from the last one.\n\
2211Names starting with $ refer to registers (with the values they would have\n\
2212if the program were to return to the stack frame now selected, restoring\n\
2213all registers saved by frames farther in) or else to debugger\n\
2214\"convenience\" variables (any such name not a known register).\n\
2215Use assignment expressions to give values to convenience variables.\n",
2216 "\n\
2217{TYPE}ADREXP refers to a datum of data type TYPE, located at address ADREXP.\n\
2218@ is a binary operator for treating consecutive data objects\n\
2219anywhere in memory as an array. FOO@NUM gives an array whose first\n\
2220element is FOO, whose second element is stored in the space following\n\
2221where FOO is stored, etc. FOO must be an expression whose value\n\
2222resides in memory.\n",
2223 "\n\
2224EXP may be preceded with /FMT, where FMT is a format letter\n\
7d9884b9 2225but no count or size letter (see \"x\" command).", NULL));
bd5635a1
RP
2226 add_com_alias ("p", "print", class_vars, 1);
2227
2228 add_com ("inspect", class_vars, inspect_command,
2229"Same as \"print\" command, except that if you are running in the epoch\n\
2230environment, the value is printed in its own window.");
f77ad505
FF
2231
2232 add_show_from_set (
2233 add_set_cmd ("max-symbolic-offset", no_class, var_uinteger,
2234 (char *)&max_symbolic_offset,
2235 "Set the largest offset that will be printed in <symbol+1234> form.",
2236 &setprintlist),
2237 &showprintlist);
b7ccd8e0
PS
2238 add_show_from_set (
2239 add_set_cmd ("symbol-filename", no_class, var_boolean,
2240 (char *)&print_symbol_filename,
2241 "Set printing of source filename and line number with <symbol>.",
2242 &setprintlist),
2243 &showprintlist);
199b2450
TL
2244
2245 examine_b_type = init_type (TYPE_CODE_INT, 1, 0, NULL, NULL);
2246 examine_h_type = init_type (TYPE_CODE_INT, 2, 0, NULL, NULL);
2247 examine_w_type = init_type (TYPE_CODE_INT, 4, 0, NULL, NULL);
2248 examine_g_type = init_type (TYPE_CODE_INT, 8, 0, NULL, NULL);
bd5635a1 2249}
This page took 0.449992 seconds and 4 git commands to generate.