gdb/
[deliverable/binutils-gdb.git] / gdb / stack.c
1 /* Print and select stack frames for GDB, the GNU debugger.
2
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
5 2009, 2010, 2011 Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22 #include "defs.h"
23 #include "value.h"
24 #include "symtab.h"
25 #include "gdbtypes.h"
26 #include "expression.h"
27 #include "language.h"
28 #include "frame.h"
29 #include "gdbcmd.h"
30 #include "gdbcore.h"
31 #include "target.h"
32 #include "source.h"
33 #include "breakpoint.h"
34 #include "demangle.h"
35 #include "inferior.h"
36 #include "annotate.h"
37 #include "ui-out.h"
38 #include "block.h"
39 #include "stack.h"
40 #include "dictionary.h"
41 #include "exceptions.h"
42 #include "reggroups.h"
43 #include "regcache.h"
44 #include "solib.h"
45 #include "valprint.h"
46 #include "gdbthread.h"
47 #include "cp-support.h"
48 #include "disasm.h"
49 #include "inline-frame.h"
50
51 #include "gdb_assert.h"
52 #include <ctype.h>
53 #include "gdb_string.h"
54
55 #include "psymtab.h"
56 #include "symfile.h"
57
58 void (*deprecated_selected_frame_level_changed_hook) (int);
59
60 /* The possible choices of "set print frame-arguments", and the value
61 of this setting. */
62
63 static const char *print_frame_arguments_choices[] =
64 {"all", "scalars", "none", NULL};
65 static const char *print_frame_arguments = "scalars";
66
67 /* Prototypes for local functions. */
68
69 static void print_frame_local_vars (struct frame_info *, int,
70 struct ui_file *);
71
72 static void print_frame (struct frame_info *frame, int print_level,
73 enum print_what print_what, int print_args,
74 struct symtab_and_line sal);
75
76 /* Zero means do things normally; we are interacting directly with the
77 user. One means print the full filename and linenumber when a
78 frame is printed, and do so in a format emacs18/emacs19.22 can
79 parse. Two means print similar annotations, but in many more
80 cases and in a slightly different syntax. */
81
82 int annotation_level = 0;
83 \f
84
85 /* Return 1 if we should display the address in addition to the location,
86 because we are in the middle of a statement. */
87
88 static int
89 frame_show_address (struct frame_info *frame,
90 struct symtab_and_line sal)
91 {
92 /* If there is a line number, but no PC, then there is no location
93 information associated with this sal. The only way that should
94 happen is for the call sites of inlined functions (SAL comes from
95 find_frame_sal). Otherwise, we would have some PC range if the
96 SAL came from a line table. */
97 if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
98 {
99 if (get_next_frame (frame) == NULL)
100 gdb_assert (inline_skipped_frames (inferior_ptid) > 0);
101 else
102 gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
103 return 0;
104 }
105
106 return get_frame_pc (frame) != sal.pc;
107 }
108
109 /* Show or print a stack frame FRAME briefly. The output is format
110 according to PRINT_LEVEL and PRINT_WHAT printing the frame's
111 relative level, function name, argument list, and file name and
112 line number. If the frame's PC is not at the beginning of the
113 source line, the actual PC is printed at the beginning. */
114
115 void
116 print_stack_frame (struct frame_info *frame, int print_level,
117 enum print_what print_what)
118 {
119 volatile struct gdb_exception e;
120
121 /* For mi, alway print location and address. */
122 if (ui_out_is_mi_like_p (current_uiout))
123 print_what = LOC_AND_ADDRESS;
124
125 TRY_CATCH (e, RETURN_MASK_ERROR)
126 {
127 int center = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
128
129 print_frame_info (frame, print_level, print_what, 1 /* print_args */);
130 set_current_sal_from_frame (frame, center);
131 }
132 }
133
134 /* Print nameless arguments of frame FRAME on STREAM, where START is
135 the offset of the first nameless argument, and NUM is the number of
136 nameless arguments to print. FIRST is nonzero if this is the first
137 argument (not just the first nameless argument). */
138
139 static void
140 print_frame_nameless_args (struct frame_info *frame, long start, int num,
141 int first, struct ui_file *stream)
142 {
143 struct gdbarch *gdbarch = get_frame_arch (frame);
144 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
145 int i;
146 CORE_ADDR argsaddr;
147 long arg_value;
148
149 for (i = 0; i < num; i++)
150 {
151 QUIT;
152 argsaddr = get_frame_args_address (frame);
153 if (!argsaddr)
154 return;
155 arg_value = read_memory_integer (argsaddr + start,
156 sizeof (int), byte_order);
157 if (!first)
158 fprintf_filtered (stream, ", ");
159 fprintf_filtered (stream, "%ld", arg_value);
160 first = 0;
161 start += sizeof (int);
162 }
163 }
164
165 /* Print the arguments of frame FRAME on STREAM, given the function
166 FUNC running in that frame (as a symbol), where NUM is the number
167 of arguments according to the stack frame (or -1 if the number of
168 arguments is unknown). */
169
170 /* Note that currently the "number of arguments according to the
171 stack frame" is only known on VAX where i refers to the "number of
172 ints of arguments according to the stack frame". */
173
174 static void
175 print_frame_args (struct symbol *func, struct frame_info *frame,
176 int num, struct ui_file *stream)
177 {
178 struct ui_out *uiout = current_uiout;
179 int first = 1;
180 /* Offset of next stack argument beyond the one we have seen that is
181 at the highest offset, or -1 if we haven't come to a stack
182 argument yet. */
183 long highest_offset = -1;
184 /* Number of ints of arguments that we have printed so far. */
185 int args_printed = 0;
186 struct cleanup *old_chain, *list_chain;
187 struct ui_stream *stb;
188 /* True if we should print arguments, false otherwise. */
189 int print_args = strcmp (print_frame_arguments, "none");
190 /* True in "summary" mode, false otherwise. */
191 int summary = !strcmp (print_frame_arguments, "scalars");
192
193 stb = ui_out_stream_new (uiout);
194 old_chain = make_cleanup_ui_out_stream_delete (stb);
195
196 if (func)
197 {
198 struct block *b = SYMBOL_BLOCK_VALUE (func);
199 struct dict_iterator iter;
200 struct symbol *sym;
201 struct value *val;
202
203 ALL_BLOCK_SYMBOLS (b, iter, sym)
204 {
205 QUIT;
206
207 /* Keep track of the highest stack argument offset seen, and
208 skip over any kinds of symbols we don't care about. */
209
210 if (!SYMBOL_IS_ARGUMENT (sym))
211 continue;
212
213 switch (SYMBOL_CLASS (sym))
214 {
215 case LOC_ARG:
216 case LOC_REF_ARG:
217 {
218 long current_offset = SYMBOL_VALUE (sym);
219 int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
220
221 /* Compute address of next argument by adding the size of
222 this argument and rounding to an int boundary. */
223 current_offset =
224 ((current_offset + arg_size + sizeof (int) - 1)
225 & ~(sizeof (int) - 1));
226
227 /* If this is the highest offset seen yet, set
228 highest_offset. */
229 if (highest_offset == -1
230 || (current_offset > highest_offset))
231 highest_offset = current_offset;
232
233 /* Add the number of ints we're about to print to
234 args_printed. */
235 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
236 }
237
238 /* We care about types of symbols, but don't need to
239 keep track of stack offsets in them. */
240 case LOC_REGISTER:
241 case LOC_REGPARM_ADDR:
242 case LOC_COMPUTED:
243 case LOC_OPTIMIZED_OUT:
244 default:
245 break;
246 }
247
248 /* We have to look up the symbol because arguments can have
249 two entries (one a parameter, one a local) and the one we
250 want is the local, which lookup_symbol will find for us.
251 This includes gcc1 (not gcc2) on SPARC when passing a
252 small structure and gcc2 when the argument type is float
253 and it is passed as a double and converted to float by
254 the prologue (in the latter case the type of the LOC_ARG
255 symbol is double and the type of the LOC_LOCAL symbol is
256 float). */
257 /* But if the parameter name is null, don't try it. Null
258 parameter names occur on the RS/6000, for traceback
259 tables. FIXME, should we even print them? */
260
261 if (*SYMBOL_LINKAGE_NAME (sym))
262 {
263 struct symbol *nsym;
264
265 nsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
266 b, VAR_DOMAIN, NULL);
267 gdb_assert (nsym != NULL);
268 if (SYMBOL_CLASS (nsym) == LOC_REGISTER
269 && !SYMBOL_IS_ARGUMENT (nsym))
270 {
271 /* There is a LOC_ARG/LOC_REGISTER pair. This means
272 that it was passed on the stack and loaded into a
273 register, or passed in a register and stored in a
274 stack slot. GDB 3.x used the LOC_ARG; GDB
275 4.0-4.11 used the LOC_REGISTER.
276
277 Reasons for using the LOC_ARG:
278
279 (1) Because find_saved_registers may be slow for
280 remote debugging.
281
282 (2) Because registers are often re-used and stack
283 slots rarely (never?) are. Therefore using
284 the stack slot is much less likely to print
285 garbage.
286
287 Reasons why we might want to use the LOC_REGISTER:
288
289 (1) So that the backtrace prints the same value
290 as "print foo". I see no compelling reason
291 why this needs to be the case; having the
292 backtrace print the value which was passed
293 in, and "print foo" print the value as
294 modified within the called function, makes
295 perfect sense to me.
296
297 Additional note: It might be nice if "info args"
298 displayed both values.
299
300 One more note: There is a case with SPARC
301 structure passing where we need to use the
302 LOC_REGISTER, but this is dealt with by creating
303 a single LOC_REGPARM in symbol reading. */
304
305 /* Leave sym (the LOC_ARG) alone. */
306 ;
307 }
308 else
309 sym = nsym;
310 }
311
312 /* Print the current arg. */
313 if (!first)
314 ui_out_text (uiout, ", ");
315 ui_out_wrap_hint (uiout, " ");
316
317 annotate_arg_begin ();
318
319 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
320 fprintf_symbol_filtered (stb->stream, SYMBOL_PRINT_NAME (sym),
321 SYMBOL_LANGUAGE (sym),
322 DMGL_PARAMS | DMGL_ANSI);
323 ui_out_field_stream (uiout, "name", stb);
324 annotate_arg_name_end ();
325 ui_out_text (uiout, "=");
326
327 if (print_args)
328 {
329 volatile struct gdb_exception except;
330
331 TRY_CATCH (except, RETURN_MASK_ERROR)
332 {
333 const struct language_defn *language;
334 struct value_print_options opts;
335
336 /* Avoid value_print because it will deref ref parameters.
337 We just want to print their addresses. Print ??? for
338 args whose address we do not know. We pass 2 as
339 "recurse" to val_print because our standard indentation
340 here is 4 spaces, and val_print indents 2 for each
341 recurse. */
342 val = read_var_value (sym, frame);
343
344 annotate_arg_value (value_type (val));
345
346 /* Use the appropriate language to display our symbol,
347 unless the user forced the language to a specific
348 language. */
349 if (language_mode == language_mode_auto)
350 language = language_def (SYMBOL_LANGUAGE (sym));
351 else
352 language = current_language;
353
354 get_raw_print_options (&opts);
355 opts.deref_ref = 0;
356 opts.summary = summary;
357 common_val_print (val, stb->stream, 2, &opts, language);
358 ui_out_field_stream (uiout, "value", stb);
359 }
360 if (except.reason < 0)
361 {
362 fprintf_filtered (stb->stream,
363 _("<error reading variable: %s>"),
364 except.message);
365 ui_out_field_stream (uiout, "value", stb);
366 }
367 }
368 else
369 ui_out_text (uiout, "...");
370
371
372 /* Invoke ui_out_tuple_end. */
373 do_cleanups (list_chain);
374
375 annotate_arg_end ();
376
377 first = 0;
378 }
379 }
380
381 /* Don't print nameless args in situations where we don't know
382 enough about the stack to find them. */
383 if (num != -1)
384 {
385 long start;
386
387 if (highest_offset == -1)
388 start = gdbarch_frame_args_skip (get_frame_arch (frame));
389 else
390 start = highest_offset;
391
392 print_frame_nameless_args (frame, start, num - args_printed,
393 first, stream);
394 }
395
396 do_cleanups (old_chain);
397 }
398
399 /* Set the current source and line to the location given by frame
400 FRAME, if possible. When CENTER is true, adjust so the relevant
401 line is in the center of the next 'list'. */
402
403 void
404 set_current_sal_from_frame (struct frame_info *frame, int center)
405 {
406 struct symtab_and_line sal;
407
408 find_frame_sal (frame, &sal);
409 if (sal.symtab)
410 {
411 if (center)
412 sal.line = max (sal.line - get_lines_to_list () / 2, 1);
413 set_current_source_symtab_and_line (&sal);
414 }
415 }
416
417 /* If ON, GDB will display disassembly of the next source line when
418 execution of the program being debugged stops.
419 If AUTO (which is the default), or there's no line info to determine
420 the source line of the next instruction, display disassembly of next
421 instruction instead. */
422
423 static enum auto_boolean disassemble_next_line;
424
425 static void
426 show_disassemble_next_line (struct ui_file *file, int from_tty,
427 struct cmd_list_element *c,
428 const char *value)
429 {
430 fprintf_filtered (file,
431 _("Debugger's willingness to use "
432 "disassemble-next-line is %s.\n"),
433 value);
434 }
435
436 /* Use TRY_CATCH to catch the exception from the gdb_disassembly
437 because it will be broken by filter sometime. */
438
439 static void
440 do_gdb_disassembly (struct gdbarch *gdbarch,
441 int how_many, CORE_ADDR low, CORE_ADDR high)
442 {
443 volatile struct gdb_exception exception;
444
445 TRY_CATCH (exception, RETURN_MASK_ERROR)
446 {
447 gdb_disassembly (gdbarch, current_uiout, 0,
448 DISASSEMBLY_RAW_INSN, how_many,
449 low, high);
450 }
451 if (exception.reason < 0)
452 {
453 /* If an exception was thrown while doing the disassembly, print
454 the error message, to give the user a clue of what happened. */
455 exception_print (gdb_stderr, exception);
456 }
457 }
458
459 /* Print information about frame FRAME. The output is format according
460 to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS. The meaning of
461 PRINT_WHAT is:
462
463 SRC_LINE: Print only source line.
464 LOCATION: Print only location.
465 LOC_AND_SRC: Print location and source line.
466
467 Used in "where" output, and to emit breakpoint or step
468 messages. */
469
470 void
471 print_frame_info (struct frame_info *frame, int print_level,
472 enum print_what print_what, int print_args)
473 {
474 struct gdbarch *gdbarch = get_frame_arch (frame);
475 struct symtab_and_line sal;
476 int source_print;
477 int location_print;
478 struct ui_out *uiout = current_uiout;
479
480 if (get_frame_type (frame) == DUMMY_FRAME
481 || get_frame_type (frame) == SIGTRAMP_FRAME
482 || get_frame_type (frame) == ARCH_FRAME)
483 {
484 struct cleanup *uiout_cleanup
485 = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
486
487 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
488 gdbarch, get_frame_pc (frame));
489
490 /* Do this regardless of SOURCE because we don't have any source
491 to list for this frame. */
492 if (print_level)
493 {
494 ui_out_text (uiout, "#");
495 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
496 frame_relative_level (frame));
497 }
498 if (ui_out_is_mi_like_p (uiout))
499 {
500 annotate_frame_address ();
501 ui_out_field_core_addr (uiout, "addr",
502 gdbarch, get_frame_pc (frame));
503 annotate_frame_address_end ();
504 }
505
506 if (get_frame_type (frame) == DUMMY_FRAME)
507 {
508 annotate_function_call ();
509 ui_out_field_string (uiout, "func", "<function called from gdb>");
510 }
511 else if (get_frame_type (frame) == SIGTRAMP_FRAME)
512 {
513 annotate_signal_handler_caller ();
514 ui_out_field_string (uiout, "func", "<signal handler called>");
515 }
516 else if (get_frame_type (frame) == ARCH_FRAME)
517 {
518 ui_out_field_string (uiout, "func", "<cross-architecture call>");
519 }
520 ui_out_text (uiout, "\n");
521 annotate_frame_end ();
522
523 do_cleanups (uiout_cleanup);
524 return;
525 }
526
527 /* If FRAME is not the innermost frame, that normally means that
528 FRAME->pc points to *after* the call instruction, and we want to
529 get the line containing the call, never the next line. But if
530 the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
531 next frame was not entered as the result of a call, and we want
532 to get the line containing FRAME->pc. */
533 find_frame_sal (frame, &sal);
534
535 location_print = (print_what == LOCATION
536 || print_what == LOC_AND_ADDRESS
537 || print_what == SRC_AND_LOC);
538
539 if (location_print || !sal.symtab)
540 print_frame (frame, print_level, print_what, print_args, sal);
541
542 source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
543
544 /* If disassemble-next-line is set to auto or on and doesn't have
545 the line debug messages for $pc, output the next instruction. */
546 if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
547 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
548 && source_print && !sal.symtab)
549 do_gdb_disassembly (get_frame_arch (frame), 1,
550 get_frame_pc (frame), get_frame_pc (frame) + 1);
551
552 if (source_print && sal.symtab)
553 {
554 int done = 0;
555 int mid_statement = ((print_what == SRC_LINE)
556 && frame_show_address (frame, sal));
557
558 if (annotation_level)
559 done = identify_source_line (sal.symtab, sal.line, mid_statement,
560 get_frame_pc (frame));
561 if (!done)
562 {
563 if (deprecated_print_frame_info_listing_hook)
564 deprecated_print_frame_info_listing_hook (sal.symtab,
565 sal.line,
566 sal.line + 1, 0);
567 else
568 {
569 struct value_print_options opts;
570
571 get_user_print_options (&opts);
572 /* We used to do this earlier, but that is clearly
573 wrong. This function is used by many different
574 parts of gdb, including normal_stop in infrun.c,
575 which uses this to print out the current PC
576 when we stepi/nexti into the middle of a source
577 line. Only the command line really wants this
578 behavior. Other UIs probably would like the
579 ability to decide for themselves if it is desired. */
580 if (opts.addressprint && mid_statement)
581 {
582 ui_out_field_core_addr (uiout, "addr",
583 gdbarch, get_frame_pc (frame));
584 ui_out_text (uiout, "\t");
585 }
586
587 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
588 }
589 }
590
591 /* If disassemble-next-line is set to on and there is line debug
592 messages, output assembly codes for next line. */
593 if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
594 do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
595 }
596
597 if (print_what != LOCATION)
598 {
599 CORE_ADDR pc;
600
601 if (get_frame_pc_if_available (frame, &pc))
602 set_default_breakpoint (1, sal.pspace, pc, sal.symtab, sal.line);
603 else
604 set_default_breakpoint (0, 0, 0, 0, 0);
605 }
606
607 annotate_frame_end ();
608
609 gdb_flush (gdb_stdout);
610 }
611
612 /* Attempt to obtain the FUNNAME, FUNLANG and optionally FUNCP of the function
613 corresponding to FRAME. */
614
615 void
616 find_frame_funname (struct frame_info *frame, char **funname,
617 enum language *funlang, struct symbol **funcp)
618 {
619 struct symbol *func;
620
621 *funname = NULL;
622 *funlang = language_unknown;
623 if (funcp)
624 *funcp = NULL;
625
626 func = get_frame_function (frame);
627 if (func)
628 {
629 /* In certain pathological cases, the symtabs give the wrong
630 function (when we are in the first function in a file which
631 is compiled without debugging symbols, the previous function
632 is compiled with debugging symbols, and the "foo.o" symbol
633 that is supposed to tell us where the file with debugging
634 symbols ends has been truncated by ar because it is longer
635 than 15 characters). This also occurs if the user uses asm()
636 to create a function but not stabs for it (in a file compiled
637 with -g).
638
639 So look in the minimal symbol tables as well, and if it comes
640 up with a larger address for the function use that instead.
641 I don't think this can ever cause any problems; there
642 shouldn't be any minimal symbols in the middle of a function;
643 if this is ever changed many parts of GDB will need to be
644 changed (and we'll create a find_pc_minimal_function or some
645 such). */
646
647 struct minimal_symbol *msymbol = NULL;
648
649 /* Don't attempt to do this for inlined functions, which do not
650 have a corresponding minimal symbol. */
651 if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
652 msymbol
653 = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
654
655 if (msymbol != NULL
656 && (SYMBOL_VALUE_ADDRESS (msymbol)
657 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
658 {
659 /* We also don't know anything about the function besides
660 its address and name. */
661 func = 0;
662 *funname = SYMBOL_PRINT_NAME (msymbol);
663 *funlang = SYMBOL_LANGUAGE (msymbol);
664 }
665 else
666 {
667 *funname = SYMBOL_PRINT_NAME (func);
668 *funlang = SYMBOL_LANGUAGE (func);
669 if (funcp)
670 *funcp = func;
671 if (*funlang == language_cplus)
672 {
673 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
674 to display the demangled name that we already have
675 stored in the symbol table, but we stored a version
676 with DMGL_PARAMS turned on, and here we don't want to
677 display parameters. So remove the parameters. */
678 char *func_only = cp_remove_params (*funname);
679
680 if (func_only)
681 {
682 *funname = func_only;
683 make_cleanup (xfree, func_only);
684 }
685 }
686 }
687 }
688 else
689 {
690 struct minimal_symbol *msymbol;
691 CORE_ADDR pc;
692
693 if (!get_frame_address_in_block_if_available (frame, &pc))
694 return;
695
696 msymbol = lookup_minimal_symbol_by_pc (pc);
697 if (msymbol != NULL)
698 {
699 *funname = SYMBOL_PRINT_NAME (msymbol);
700 *funlang = SYMBOL_LANGUAGE (msymbol);
701 }
702 }
703 }
704
705 static void
706 print_frame (struct frame_info *frame, int print_level,
707 enum print_what print_what, int print_args,
708 struct symtab_and_line sal)
709 {
710 struct gdbarch *gdbarch = get_frame_arch (frame);
711 struct ui_out *uiout = current_uiout;
712 char *funname = NULL;
713 enum language funlang = language_unknown;
714 struct ui_stream *stb;
715 struct cleanup *old_chain, *list_chain;
716 struct value_print_options opts;
717 struct symbol *func;
718 CORE_ADDR pc = 0;
719 int pc_p;
720
721 pc_p = get_frame_pc_if_available (frame, &pc);
722
723 stb = ui_out_stream_new (uiout);
724 old_chain = make_cleanup_ui_out_stream_delete (stb);
725
726 find_frame_funname (frame, &funname, &funlang, &func);
727
728 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
729 gdbarch, pc);
730
731 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
732
733 if (print_level)
734 {
735 ui_out_text (uiout, "#");
736 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
737 frame_relative_level (frame));
738 }
739 get_user_print_options (&opts);
740 if (opts.addressprint)
741 if (!sal.symtab
742 || frame_show_address (frame, sal)
743 || print_what == LOC_AND_ADDRESS)
744 {
745 annotate_frame_address ();
746 if (pc_p)
747 ui_out_field_core_addr (uiout, "addr", gdbarch, pc);
748 else
749 ui_out_field_string (uiout, "addr", "<unavailable>");
750 annotate_frame_address_end ();
751 ui_out_text (uiout, " in ");
752 }
753 annotate_frame_function_name ();
754 fprintf_symbol_filtered (stb->stream, funname ? funname : "??",
755 funlang, DMGL_ANSI);
756 ui_out_field_stream (uiout, "func", stb);
757 ui_out_wrap_hint (uiout, " ");
758 annotate_frame_args ();
759
760 ui_out_text (uiout, " (");
761 if (print_args)
762 {
763 struct gdbarch *gdbarch = get_frame_arch (frame);
764 int numargs;
765 struct cleanup *args_list_chain;
766 volatile struct gdb_exception e;
767
768 if (gdbarch_frame_num_args_p (gdbarch))
769 {
770 numargs = gdbarch_frame_num_args (gdbarch, frame);
771 gdb_assert (numargs >= 0);
772 }
773 else
774 numargs = -1;
775
776 args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
777 TRY_CATCH (e, RETURN_MASK_ERROR)
778 {
779 print_frame_args (func, frame, numargs, gdb_stdout);
780 }
781 /* FIXME: ARGS must be a list. If one argument is a string it
782 will have " that will not be properly escaped. */
783 /* Invoke ui_out_tuple_end. */
784 do_cleanups (args_list_chain);
785 QUIT;
786 }
787 ui_out_text (uiout, ")");
788 if (sal.symtab && sal.symtab->filename)
789 {
790 annotate_frame_source_begin ();
791 ui_out_wrap_hint (uiout, " ");
792 ui_out_text (uiout, " at ");
793 annotate_frame_source_file ();
794 ui_out_field_string (uiout, "file", sal.symtab->filename);
795 if (ui_out_is_mi_like_p (uiout))
796 {
797 const char *fullname = symtab_to_fullname (sal.symtab);
798
799 if (fullname != NULL)
800 ui_out_field_string (uiout, "fullname", fullname);
801 }
802 annotate_frame_source_file_end ();
803 ui_out_text (uiout, ":");
804 annotate_frame_source_line ();
805 ui_out_field_int (uiout, "line", sal.line);
806 annotate_frame_source_end ();
807 }
808
809 if (pc_p && (!funname || (!sal.symtab || !sal.symtab->filename)))
810 {
811 #ifdef PC_SOLIB
812 char *lib = PC_SOLIB (get_frame_pc (frame));
813 #else
814 char *lib = solib_name_from_address (get_frame_program_space (frame),
815 get_frame_pc (frame));
816 #endif
817 if (lib)
818 {
819 annotate_frame_where ();
820 ui_out_wrap_hint (uiout, " ");
821 ui_out_text (uiout, " from ");
822 ui_out_field_string (uiout, "from", lib);
823 }
824 }
825
826 /* do_cleanups will call ui_out_tuple_end() for us. */
827 do_cleanups (list_chain);
828 ui_out_text (uiout, "\n");
829 do_cleanups (old_chain);
830 }
831 \f
832
833 /* Read a frame specification in whatever the appropriate format is
834 from FRAME_EXP. Call error(), printing MESSAGE, if the
835 specification is in any way invalid (so this function never returns
836 NULL). When SEPECTED_P is non-NULL set its target to indicate that
837 the default selected frame was used. */
838
839 static struct frame_info *
840 parse_frame_specification_1 (const char *frame_exp, const char *message,
841 int *selected_frame_p)
842 {
843 int numargs;
844 struct value *args[4];
845 CORE_ADDR addrs[ARRAY_SIZE (args)];
846
847 if (frame_exp == NULL)
848 numargs = 0;
849 else
850 {
851 numargs = 0;
852 while (1)
853 {
854 char *addr_string;
855 struct cleanup *cleanup;
856 const char *p;
857
858 /* Skip leading white space, bail of EOL. */
859 while (isspace (*frame_exp))
860 frame_exp++;
861 if (!*frame_exp)
862 break;
863
864 /* Parse the argument, extract it, save it. */
865 for (p = frame_exp;
866 *p && !isspace (*p);
867 p++);
868 addr_string = savestring (frame_exp, p - frame_exp);
869 frame_exp = p;
870 cleanup = make_cleanup (xfree, addr_string);
871
872 /* NOTE: Parse and evaluate expression, but do not use
873 functions such as parse_and_eval_long or
874 parse_and_eval_address to also extract the value.
875 Instead value_as_long and value_as_address are used.
876 This avoids problems with expressions that contain
877 side-effects. */
878 if (numargs >= ARRAY_SIZE (args))
879 error (_("Too many args in frame specification"));
880 args[numargs++] = parse_and_eval (addr_string);
881
882 do_cleanups (cleanup);
883 }
884 }
885
886 /* If no args, default to the selected frame. */
887 if (numargs == 0)
888 {
889 if (selected_frame_p != NULL)
890 (*selected_frame_p) = 1;
891 return get_selected_frame (message);
892 }
893
894 /* None of the remaining use the selected frame. */
895 if (selected_frame_p != NULL)
896 (*selected_frame_p) = 0;
897
898 /* Assume the single arg[0] is an integer, and try using that to
899 select a frame relative to current. */
900 if (numargs == 1)
901 {
902 struct frame_info *fid;
903 int level = value_as_long (args[0]);
904
905 fid = find_relative_frame (get_current_frame (), &level);
906 if (level == 0)
907 /* find_relative_frame was successful. */
908 return fid;
909 }
910
911 /* Convert each value into a corresponding address. */
912 {
913 int i;
914
915 for (i = 0; i < numargs; i++)
916 addrs[i] = value_as_address (args[i]);
917 }
918
919 /* Assume that the single arg[0] is an address, use that to identify
920 a frame with a matching ID. Should this also accept stack/pc or
921 stack/pc/special. */
922 if (numargs == 1)
923 {
924 struct frame_id id = frame_id_build_wild (addrs[0]);
925 struct frame_info *fid;
926
927 /* If (s)he specifies the frame with an address, he deserves
928 what (s)he gets. Still, give the highest one that matches.
929 (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
930 know). */
931 for (fid = get_current_frame ();
932 fid != NULL;
933 fid = get_prev_frame (fid))
934 {
935 if (frame_id_eq (id, get_frame_id (fid)))
936 {
937 struct frame_info *prev_frame;
938
939 while (1)
940 {
941 prev_frame = get_prev_frame (fid);
942 if (!prev_frame
943 || !frame_id_eq (id, get_frame_id (prev_frame)))
944 break;
945 fid = prev_frame;
946 }
947 return fid;
948 }
949 }
950 }
951
952 /* We couldn't identify the frame as an existing frame, but
953 perhaps we can create one with a single argument. */
954 if (numargs == 1)
955 return create_new_frame (addrs[0], 0);
956 else if (numargs == 2)
957 return create_new_frame (addrs[0], addrs[1]);
958 else
959 error (_("Too many args in frame specification"));
960 }
961
962 static struct frame_info *
963 parse_frame_specification (char *frame_exp)
964 {
965 return parse_frame_specification_1 (frame_exp, NULL, NULL);
966 }
967
968 /* Print verbosely the selected frame or the frame at address
969 ADDR_EXP. Absolutely all information in the frame is printed. */
970
971 static void
972 frame_info (char *addr_exp, int from_tty)
973 {
974 struct frame_info *fi;
975 struct symtab_and_line sal;
976 struct symbol *func;
977 struct symtab *s;
978 struct frame_info *calling_frame_info;
979 int numregs;
980 char *funname = 0;
981 enum language funlang = language_unknown;
982 const char *pc_regname;
983 int selected_frame_p;
984 struct gdbarch *gdbarch;
985 struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
986 CORE_ADDR frame_pc;
987 int frame_pc_p;
988 CORE_ADDR caller_pc;
989
990 fi = parse_frame_specification_1 (addr_exp, "No stack.", &selected_frame_p);
991 gdbarch = get_frame_arch (fi);
992
993 /* Name of the value returned by get_frame_pc(). Per comments, "pc"
994 is not a good name. */
995 if (gdbarch_pc_regnum (gdbarch) >= 0)
996 /* OK, this is weird. The gdbarch_pc_regnum hardware register's value can
997 easily not match that of the internal value returned by
998 get_frame_pc(). */
999 pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1000 else
1001 /* But then, this is weird to. Even without gdbarch_pc_regnum, an
1002 architectures will often have a hardware register called "pc",
1003 and that register's value, again, can easily not match
1004 get_frame_pc(). */
1005 pc_regname = "pc";
1006
1007 frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1008 find_frame_sal (fi, &sal);
1009 func = get_frame_function (fi);
1010 s = sal.symtab;
1011 if (func)
1012 {
1013 funname = SYMBOL_PRINT_NAME (func);
1014 funlang = SYMBOL_LANGUAGE (func);
1015 if (funlang == language_cplus)
1016 {
1017 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1018 to display the demangled name that we already have
1019 stored in the symbol table, but we stored a version
1020 with DMGL_PARAMS turned on, and here we don't want to
1021 display parameters. So remove the parameters. */
1022 char *func_only = cp_remove_params (funname);
1023
1024 if (func_only)
1025 {
1026 funname = func_only;
1027 make_cleanup (xfree, func_only);
1028 }
1029 }
1030 }
1031 else if (frame_pc_p)
1032 {
1033 struct minimal_symbol *msymbol;
1034
1035 msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1036 if (msymbol != NULL)
1037 {
1038 funname = SYMBOL_PRINT_NAME (msymbol);
1039 funlang = SYMBOL_LANGUAGE (msymbol);
1040 }
1041 }
1042 calling_frame_info = get_prev_frame (fi);
1043
1044 if (selected_frame_p && frame_relative_level (fi) >= 0)
1045 {
1046 printf_filtered (_("Stack level %d, frame at "),
1047 frame_relative_level (fi));
1048 }
1049 else
1050 {
1051 printf_filtered (_("Stack frame at "));
1052 }
1053 fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
1054 printf_filtered (":\n");
1055 printf_filtered (" %s = ", pc_regname);
1056 if (frame_pc_p)
1057 fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1058 else
1059 fputs_filtered ("<unavailable>", gdb_stdout);
1060
1061 wrap_here (" ");
1062 if (funname)
1063 {
1064 printf_filtered (" in ");
1065 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1066 DMGL_ANSI | DMGL_PARAMS);
1067 }
1068 wrap_here (" ");
1069 if (sal.symtab)
1070 printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
1071 puts_filtered ("; ");
1072 wrap_here (" ");
1073 printf_filtered ("saved %s ", pc_regname);
1074 if (frame_unwind_caller_pc_if_available (fi, &caller_pc))
1075 fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
1076 else
1077 fputs_filtered ("<unavailable>", gdb_stdout);
1078 printf_filtered ("\n");
1079
1080 if (calling_frame_info == NULL)
1081 {
1082 enum unwind_stop_reason reason;
1083
1084 reason = get_frame_unwind_stop_reason (fi);
1085 if (reason != UNWIND_NO_REASON)
1086 printf_filtered (_(" Outermost frame: %s\n"),
1087 frame_stop_reason_string (reason));
1088 }
1089 else if (get_frame_type (fi) == INLINE_FRAME)
1090 printf_filtered (" inlined into frame %d",
1091 frame_relative_level (get_prev_frame (fi)));
1092 else
1093 {
1094 printf_filtered (" called by frame at ");
1095 fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
1096 gdb_stdout);
1097 }
1098 if (get_next_frame (fi) && calling_frame_info)
1099 puts_filtered (",");
1100 wrap_here (" ");
1101 if (get_next_frame (fi))
1102 {
1103 printf_filtered (" caller of frame at ");
1104 fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
1105 gdb_stdout);
1106 }
1107 if (get_next_frame (fi) || calling_frame_info)
1108 puts_filtered ("\n");
1109
1110 if (s)
1111 printf_filtered (" source language %s.\n",
1112 language_str (s->language));
1113
1114 {
1115 /* Address of the argument list for this frame, or 0. */
1116 CORE_ADDR arg_list = get_frame_args_address (fi);
1117 /* Number of args for this frame, or -1 if unknown. */
1118 int numargs;
1119
1120 if (arg_list == 0)
1121 printf_filtered (" Arglist at unknown address.\n");
1122 else
1123 {
1124 printf_filtered (" Arglist at ");
1125 fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1126 printf_filtered (",");
1127
1128 if (!gdbarch_frame_num_args_p (gdbarch))
1129 {
1130 numargs = -1;
1131 puts_filtered (" args: ");
1132 }
1133 else
1134 {
1135 numargs = gdbarch_frame_num_args (gdbarch, fi);
1136 gdb_assert (numargs >= 0);
1137 if (numargs == 0)
1138 puts_filtered (" no args.");
1139 else if (numargs == 1)
1140 puts_filtered (" 1 arg: ");
1141 else
1142 printf_filtered (" %d args: ", numargs);
1143 }
1144 print_frame_args (func, fi, numargs, gdb_stdout);
1145 puts_filtered ("\n");
1146 }
1147 }
1148 {
1149 /* Address of the local variables for this frame, or 0. */
1150 CORE_ADDR arg_list = get_frame_locals_address (fi);
1151
1152 if (arg_list == 0)
1153 printf_filtered (" Locals at unknown address,");
1154 else
1155 {
1156 printf_filtered (" Locals at ");
1157 fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1158 printf_filtered (",");
1159 }
1160 }
1161
1162 /* Print as much information as possible on the location of all the
1163 registers. */
1164 {
1165 enum lval_type lval;
1166 int optimized;
1167 int unavailable;
1168 CORE_ADDR addr;
1169 int realnum;
1170 int count;
1171 int i;
1172 int need_nl = 1;
1173
1174 /* The sp is special; what's displayed isn't the save address, but
1175 the value of the previous frame's sp. This is a legacy thing,
1176 at one stage the frame cached the previous frame's SP instead
1177 of its address, hence it was easiest to just display the cached
1178 value. */
1179 if (gdbarch_sp_regnum (gdbarch) >= 0)
1180 {
1181 /* Find out the location of the saved stack pointer with out
1182 actually evaluating it. */
1183 frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1184 &optimized, &unavailable, &lval, &addr,
1185 &realnum, NULL);
1186 if (!optimized && !unavailable && lval == not_lval)
1187 {
1188 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1189 int sp_size = register_size (gdbarch, gdbarch_sp_regnum (gdbarch));
1190 gdb_byte value[MAX_REGISTER_SIZE];
1191 CORE_ADDR sp;
1192
1193 frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1194 &optimized, &unavailable, &lval, &addr,
1195 &realnum, value);
1196 /* NOTE: cagney/2003-05-22: This is assuming that the
1197 stack pointer was packed as an unsigned integer. That
1198 may or may not be valid. */
1199 sp = extract_unsigned_integer (value, sp_size, byte_order);
1200 printf_filtered (" Previous frame's sp is ");
1201 fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
1202 printf_filtered ("\n");
1203 need_nl = 0;
1204 }
1205 else if (!optimized && !unavailable && lval == lval_memory)
1206 {
1207 printf_filtered (" Previous frame's sp at ");
1208 fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1209 printf_filtered ("\n");
1210 need_nl = 0;
1211 }
1212 else if (!optimized && !unavailable && lval == lval_register)
1213 {
1214 printf_filtered (" Previous frame's sp in %s\n",
1215 gdbarch_register_name (gdbarch, realnum));
1216 need_nl = 0;
1217 }
1218 /* else keep quiet. */
1219 }
1220
1221 count = 0;
1222 numregs = gdbarch_num_regs (gdbarch)
1223 + gdbarch_num_pseudo_regs (gdbarch);
1224 for (i = 0; i < numregs; i++)
1225 if (i != gdbarch_sp_regnum (gdbarch)
1226 && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1227 {
1228 /* Find out the location of the saved register without
1229 fetching the corresponding value. */
1230 frame_register_unwind (fi, i, &optimized, &unavailable,
1231 &lval, &addr, &realnum, NULL);
1232 /* For moment, only display registers that were saved on the
1233 stack. */
1234 if (!optimized && !unavailable && lval == lval_memory)
1235 {
1236 if (count == 0)
1237 puts_filtered (" Saved registers:\n ");
1238 else
1239 puts_filtered (",");
1240 wrap_here (" ");
1241 printf_filtered (" %s at ",
1242 gdbarch_register_name (gdbarch, i));
1243 fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1244 count++;
1245 }
1246 }
1247 if (count || need_nl)
1248 puts_filtered ("\n");
1249 }
1250
1251 do_cleanups (back_to);
1252 }
1253
1254 /* Print briefly all stack frames or just the innermost COUNT_EXP
1255 frames. */
1256
1257 static void
1258 backtrace_command_1 (char *count_exp, int show_locals, int from_tty)
1259 {
1260 struct frame_info *fi;
1261 int count;
1262 int i;
1263 struct frame_info *trailing;
1264 int trailing_level;
1265
1266 if (!target_has_stack)
1267 error (_("No stack."));
1268
1269 /* The following code must do two things. First, it must set the
1270 variable TRAILING to the frame from which we should start
1271 printing. Second, it must set the variable count to the number
1272 of frames which we should print, or -1 if all of them. */
1273 trailing = get_current_frame ();
1274
1275 trailing_level = 0;
1276 if (count_exp)
1277 {
1278 count = parse_and_eval_long (count_exp);
1279 if (count < 0)
1280 {
1281 struct frame_info *current;
1282
1283 count = -count;
1284
1285 current = trailing;
1286 while (current && count--)
1287 {
1288 QUIT;
1289 current = get_prev_frame (current);
1290 }
1291
1292 /* Will stop when CURRENT reaches the top of the stack.
1293 TRAILING will be COUNT below it. */
1294 while (current)
1295 {
1296 QUIT;
1297 trailing = get_prev_frame (trailing);
1298 current = get_prev_frame (current);
1299 trailing_level++;
1300 }
1301
1302 count = -1;
1303 }
1304 }
1305 else
1306 count = -1;
1307
1308 if (info_verbose)
1309 {
1310 /* Read in symbols for all of the frames. Need to do this in a
1311 separate pass so that "Reading in symbols for xxx" messages
1312 don't screw up the appearance of the backtrace. Also if
1313 people have strong opinions against reading symbols for
1314 backtrace this may have to be an option. */
1315 i = count;
1316 for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
1317 {
1318 CORE_ADDR pc;
1319
1320 QUIT;
1321 pc = get_frame_address_in_block (fi);
1322 find_pc_sect_symtab_via_partial (pc, find_pc_mapped_section (pc));
1323 }
1324 }
1325
1326 for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
1327 {
1328 QUIT;
1329
1330 /* Don't use print_stack_frame; if an error() occurs it probably
1331 means further attempts to backtrace would fail (on the other
1332 hand, perhaps the code does or could be fixed to make sure
1333 the frame->prev field gets set to NULL in that case). */
1334 print_frame_info (fi, 1, LOCATION, 1);
1335 if (show_locals)
1336 print_frame_local_vars (fi, 1, gdb_stdout);
1337
1338 /* Save the last frame to check for error conditions. */
1339 trailing = fi;
1340 }
1341
1342 /* If we've stopped before the end, mention that. */
1343 if (fi && from_tty)
1344 printf_filtered (_("(More stack frames follow...)\n"));
1345
1346 /* If we've run out of frames, and the reason appears to be an error
1347 condition, print it. */
1348 if (fi == NULL && trailing != NULL)
1349 {
1350 enum unwind_stop_reason reason;
1351
1352 reason = get_frame_unwind_stop_reason (trailing);
1353 if (reason > UNWIND_FIRST_ERROR)
1354 printf_filtered (_("Backtrace stopped: %s\n"),
1355 frame_stop_reason_string (reason));
1356 }
1357 }
1358
1359 static void
1360 backtrace_command (char *arg, int from_tty)
1361 {
1362 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
1363 int fulltrace_arg = -1, arglen = 0, argc = 0;
1364
1365 if (arg)
1366 {
1367 char **argv;
1368 int i;
1369
1370 argv = gdb_buildargv (arg);
1371 make_cleanup_freeargv (argv);
1372 argc = 0;
1373 for (i = 0; argv[i]; i++)
1374 {
1375 unsigned int j;
1376
1377 for (j = 0; j < strlen (argv[i]); j++)
1378 argv[i][j] = tolower (argv[i][j]);
1379
1380 if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1381 fulltrace_arg = argc;
1382 else
1383 {
1384 arglen += strlen (argv[i]);
1385 argc++;
1386 }
1387 }
1388 arglen += argc;
1389 if (fulltrace_arg >= 0)
1390 {
1391 if (arglen > 0)
1392 {
1393 arg = xmalloc (arglen + 1);
1394 make_cleanup (xfree, arg);
1395 arg[0] = 0;
1396 for (i = 0; i < (argc + 1); i++)
1397 {
1398 if (i != fulltrace_arg)
1399 {
1400 strcat (arg, argv[i]);
1401 strcat (arg, " ");
1402 }
1403 }
1404 }
1405 else
1406 arg = NULL;
1407 }
1408 }
1409
1410 backtrace_command_1 (arg, fulltrace_arg >= 0 /* show_locals */, from_tty);
1411
1412 do_cleanups (old_chain);
1413 }
1414
1415 static void
1416 backtrace_full_command (char *arg, int from_tty)
1417 {
1418 backtrace_command_1 (arg, 1 /* show_locals */, from_tty);
1419 }
1420 \f
1421
1422 /* Iterate over the local variables of a block B, calling CB with
1423 CB_DATA. */
1424
1425 static void
1426 iterate_over_block_locals (struct block *b,
1427 iterate_over_block_arg_local_vars_cb cb,
1428 void *cb_data)
1429 {
1430 struct dict_iterator iter;
1431 struct symbol *sym;
1432
1433 ALL_BLOCK_SYMBOLS (b, iter, sym)
1434 {
1435 switch (SYMBOL_CLASS (sym))
1436 {
1437 case LOC_LOCAL:
1438 case LOC_REGISTER:
1439 case LOC_STATIC:
1440 case LOC_COMPUTED:
1441 if (SYMBOL_IS_ARGUMENT (sym))
1442 break;
1443 (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
1444 break;
1445
1446 default:
1447 /* Ignore symbols which are not locals. */
1448 break;
1449 }
1450 }
1451 }
1452
1453
1454 /* Same, but print labels. */
1455
1456 #if 0
1457 /* Commented out, as the code using this function has also been
1458 commented out. FIXME:brobecker/2009-01-13: Find out why the code
1459 was commented out in the first place. The discussion introducing
1460 this change (2007-12-04: Support lexical blocks and function bodies
1461 that occupy non-contiguous address ranges) did not explain why
1462 this change was made. */
1463 static int
1464 print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
1465 int *have_default, struct ui_file *stream)
1466 {
1467 struct dict_iterator iter;
1468 struct symbol *sym;
1469 int values_printed = 0;
1470
1471 ALL_BLOCK_SYMBOLS (b, iter, sym)
1472 {
1473 if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
1474 {
1475 if (*have_default)
1476 continue;
1477 *have_default = 1;
1478 }
1479 if (SYMBOL_CLASS (sym) == LOC_LABEL)
1480 {
1481 struct symtab_and_line sal;
1482 struct value_print_options opts;
1483
1484 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1485 values_printed = 1;
1486 fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1487 get_user_print_options (&opts);
1488 if (opts.addressprint)
1489 {
1490 fprintf_filtered (stream, " ");
1491 fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
1492 stream);
1493 }
1494 fprintf_filtered (stream, " in file %s, line %d\n",
1495 sal.symtab->filename, sal.line);
1496 }
1497 }
1498
1499 return values_printed;
1500 }
1501 #endif
1502
1503 /* Iterate over all the local variables in block B, including all its
1504 superblocks, stopping when the top-level block is reached. */
1505
1506 void
1507 iterate_over_block_local_vars (struct block *block,
1508 iterate_over_block_arg_local_vars_cb cb,
1509 void *cb_data)
1510 {
1511 while (block)
1512 {
1513 iterate_over_block_locals (block, cb, cb_data);
1514 /* After handling the function's top-level block, stop. Don't
1515 continue to its superblock, the block of per-file
1516 symbols. */
1517 if (BLOCK_FUNCTION (block))
1518 break;
1519 block = BLOCK_SUPERBLOCK (block);
1520 }
1521 }
1522
1523 /* Data to be passed around in the calls to the locals and args
1524 iterators. */
1525
1526 struct print_variable_and_value_data
1527 {
1528 struct frame_info *frame;
1529 int num_tabs;
1530 struct ui_file *stream;
1531 int values_printed;
1532 };
1533
1534 /* The callback for the locals and args iterators. */
1535
1536 static void
1537 do_print_variable_and_value (const char *print_name,
1538 struct symbol *sym,
1539 void *cb_data)
1540 {
1541 struct print_variable_and_value_data *p = cb_data;
1542
1543 print_variable_and_value (print_name, sym,
1544 p->frame, p->stream, p->num_tabs);
1545 p->values_printed = 1;
1546 }
1547
1548 static void
1549 print_frame_local_vars (struct frame_info *frame, int num_tabs,
1550 struct ui_file *stream)
1551 {
1552 struct print_variable_and_value_data cb_data;
1553 struct block *block;
1554 CORE_ADDR pc;
1555
1556 if (!get_frame_pc_if_available (frame, &pc))
1557 {
1558 fprintf_filtered (stream,
1559 _("PC unavailable, cannot determine locals.\n"));
1560 return;
1561 }
1562
1563 block = get_frame_block (frame, 0);
1564 if (block == 0)
1565 {
1566 fprintf_filtered (stream, "No symbol table info available.\n");
1567 return;
1568 }
1569
1570 cb_data.frame = frame;
1571 cb_data.num_tabs = 4 * num_tabs;
1572 cb_data.stream = stream;
1573 cb_data.values_printed = 0;
1574
1575 iterate_over_block_local_vars (block,
1576 do_print_variable_and_value,
1577 &cb_data);
1578
1579 if (!cb_data.values_printed)
1580 fprintf_filtered (stream, _("No locals.\n"));
1581 }
1582
1583 /* Same, but print labels. */
1584
1585 static void
1586 print_frame_label_vars (struct frame_info *frame, int this_level_only,
1587 struct ui_file *stream)
1588 {
1589 #if 1
1590 fprintf_filtered (stream, "print_frame_label_vars disabled.\n");
1591 #else
1592 struct blockvector *bl;
1593 struct block *block = get_frame_block (frame, 0);
1594 struct gdbarch *gdbarch = get_frame_arch (frame);
1595 int values_printed = 0;
1596 int index, have_default = 0;
1597 char *blocks_printed;
1598 CORE_ADDR pc = get_frame_pc (frame);
1599
1600 if (block == 0)
1601 {
1602 fprintf_filtered (stream, "No symbol table info available.\n");
1603 return;
1604 }
1605
1606 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
1607 blocks_printed = alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1608 memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1609
1610 while (block != 0)
1611 {
1612 CORE_ADDR end = BLOCK_END (block) - 4;
1613 int last_index;
1614
1615 if (bl != blockvector_for_pc (end, &index))
1616 error (_("blockvector blotch"));
1617 if (BLOCKVECTOR_BLOCK (bl, index) != block)
1618 error (_("blockvector botch"));
1619 last_index = BLOCKVECTOR_NBLOCKS (bl);
1620 index += 1;
1621
1622 /* Don't print out blocks that have gone by. */
1623 while (index < last_index
1624 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1625 index++;
1626
1627 while (index < last_index
1628 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1629 {
1630 if (blocks_printed[index] == 0)
1631 {
1632 if (print_block_frame_labels (gdbarch,
1633 BLOCKVECTOR_BLOCK (bl, index),
1634 &have_default, stream))
1635 values_printed = 1;
1636 blocks_printed[index] = 1;
1637 }
1638 index++;
1639 }
1640 if (have_default)
1641 return;
1642 if (values_printed && this_level_only)
1643 return;
1644
1645 /* After handling the function's top-level block, stop. Don't
1646 continue to its superblock, the block of per-file symbols.
1647 Also do not continue to the containing function of an inlined
1648 function. */
1649 if (BLOCK_FUNCTION (block))
1650 break;
1651 block = BLOCK_SUPERBLOCK (block);
1652 }
1653
1654 if (!values_printed && !this_level_only)
1655 fprintf_filtered (stream, _("No catches.\n"));
1656 #endif
1657 }
1658
1659 void
1660 locals_info (char *args, int from_tty)
1661 {
1662 print_frame_local_vars (get_selected_frame (_("No frame selected.")),
1663 0, gdb_stdout);
1664 }
1665
1666 static void
1667 catch_info (char *ignore, int from_tty)
1668 {
1669 /* Assume g++ compiled code; old GDB 4.16 behaviour. */
1670 print_frame_label_vars (get_selected_frame (_("No frame selected.")),
1671 0, gdb_stdout);
1672 }
1673
1674 /* Iterate over all the argument variables in block B.
1675
1676 Returns 1 if any argument was walked; 0 otherwise. */
1677
1678 void
1679 iterate_over_block_arg_vars (struct block *b,
1680 iterate_over_block_arg_local_vars_cb cb,
1681 void *cb_data)
1682 {
1683 struct dict_iterator iter;
1684 struct symbol *sym, *sym2;
1685
1686 ALL_BLOCK_SYMBOLS (b, iter, sym)
1687 {
1688 /* Don't worry about things which aren't arguments. */
1689 if (SYMBOL_IS_ARGUMENT (sym))
1690 {
1691 /* We have to look up the symbol because arguments can have
1692 two entries (one a parameter, one a local) and the one we
1693 want is the local, which lookup_symbol will find for us.
1694 This includes gcc1 (not gcc2) on the sparc when passing a
1695 small structure and gcc2 when the argument type is float
1696 and it is passed as a double and converted to float by
1697 the prologue (in the latter case the type of the LOC_ARG
1698 symbol is double and the type of the LOC_LOCAL symbol is
1699 float). There are also LOC_ARG/LOC_REGISTER pairs which
1700 are not combined in symbol-reading. */
1701
1702 sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
1703 b, VAR_DOMAIN, NULL);
1704 (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
1705 }
1706 }
1707 }
1708
1709 static void
1710 print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
1711 {
1712 struct print_variable_and_value_data cb_data;
1713 struct symbol *func;
1714 CORE_ADDR pc;
1715
1716 if (!get_frame_pc_if_available (frame, &pc))
1717 {
1718 fprintf_filtered (stream, _("PC unavailable, cannot determine args.\n"));
1719 return;
1720 }
1721
1722 func = get_frame_function (frame);
1723 if (func == NULL)
1724 {
1725 fprintf_filtered (stream, _("No symbol table info available.\n"));
1726 return;
1727 }
1728
1729 cb_data.frame = frame;
1730 cb_data.num_tabs = 0;
1731 cb_data.stream = gdb_stdout;
1732 cb_data.values_printed = 0;
1733
1734 iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
1735 do_print_variable_and_value, &cb_data);
1736
1737 if (!cb_data.values_printed)
1738 fprintf_filtered (stream, _("No arguments.\n"));
1739 }
1740
1741 void
1742 args_info (char *ignore, int from_tty)
1743 {
1744 print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
1745 gdb_stdout);
1746 }
1747
1748
1749 static void
1750 args_plus_locals_info (char *ignore, int from_tty)
1751 {
1752 args_info (ignore, from_tty);
1753 locals_info (ignore, from_tty);
1754 }
1755 \f
1756
1757 /* Select frame FRAME. Also print the stack frame and show the source
1758 if this is the tui version. */
1759 static void
1760 select_and_print_frame (struct frame_info *frame)
1761 {
1762 select_frame (frame);
1763 if (frame)
1764 print_stack_frame (frame, 1, SRC_AND_LOC);
1765 }
1766 \f
1767 /* Return the symbol-block in which the selected frame is executing.
1768 Can return zero under various legitimate circumstances.
1769
1770 If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1771 code address within the block returned. We use this to decide
1772 which macros are in scope. */
1773
1774 struct block *
1775 get_selected_block (CORE_ADDR *addr_in_block)
1776 {
1777 if (!has_stack_frames ())
1778 return 0;
1779
1780 return get_frame_block (get_selected_frame (NULL), addr_in_block);
1781 }
1782
1783 /* Find a frame a certain number of levels away from FRAME.
1784 LEVEL_OFFSET_PTR points to an int containing the number of levels.
1785 Positive means go to earlier frames (up); negative, the reverse.
1786 The int that contains the number of levels is counted toward
1787 zero as the frames for those levels are found.
1788 If the top or bottom frame is reached, that frame is returned,
1789 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1790 how much farther the original request asked to go. */
1791
1792 struct frame_info *
1793 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
1794 {
1795 /* Going up is simple: just call get_prev_frame enough times or
1796 until the initial frame is reached. */
1797 while (*level_offset_ptr > 0)
1798 {
1799 struct frame_info *prev = get_prev_frame (frame);
1800
1801 if (!prev)
1802 break;
1803 (*level_offset_ptr)--;
1804 frame = prev;
1805 }
1806
1807 /* Going down is just as simple. */
1808 while (*level_offset_ptr < 0)
1809 {
1810 struct frame_info *next = get_next_frame (frame);
1811
1812 if (!next)
1813 break;
1814 (*level_offset_ptr)++;
1815 frame = next;
1816 }
1817
1818 return frame;
1819 }
1820
1821 /* The "select_frame" command. With no argument this is a NOP.
1822 Select the frame at level LEVEL_EXP if it is a valid level.
1823 Otherwise, treat LEVEL_EXP as an address expression and select it.
1824
1825 See parse_frame_specification for more info on proper frame
1826 expressions. */
1827
1828 void
1829 select_frame_command (char *level_exp, int from_tty)
1830 {
1831 select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
1832 }
1833
1834 /* The "frame" command. With no argument, print the selected frame
1835 briefly. With an argument, behave like select_frame and then print
1836 the selected frame. */
1837
1838 static void
1839 frame_command (char *level_exp, int from_tty)
1840 {
1841 select_frame_command (level_exp, from_tty);
1842 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1843 }
1844
1845 /* The XDB Compatibility command to print the current frame. */
1846
1847 static void
1848 current_frame_command (char *level_exp, int from_tty)
1849 {
1850 print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC);
1851 }
1852
1853 /* Select the frame up one or COUNT_EXP stack levels from the
1854 previously selected frame, and print it briefly. */
1855
1856 static void
1857 up_silently_base (char *count_exp)
1858 {
1859 struct frame_info *frame;
1860 int count = 1;
1861
1862 if (count_exp)
1863 count = parse_and_eval_long (count_exp);
1864
1865 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1866 if (count != 0 && count_exp == NULL)
1867 error (_("Initial frame selected; you cannot go up."));
1868 select_frame (frame);
1869 }
1870
1871 static void
1872 up_silently_command (char *count_exp, int from_tty)
1873 {
1874 up_silently_base (count_exp);
1875 }
1876
1877 static void
1878 up_command (char *count_exp, int from_tty)
1879 {
1880 up_silently_base (count_exp);
1881 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1882 }
1883
1884 /* Select the frame down one or COUNT_EXP stack levels from the previously
1885 selected frame, and print it briefly. */
1886
1887 static void
1888 down_silently_base (char *count_exp)
1889 {
1890 struct frame_info *frame;
1891 int count = -1;
1892
1893 if (count_exp)
1894 count = -parse_and_eval_long (count_exp);
1895
1896 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1897 if (count != 0 && count_exp == NULL)
1898 {
1899 /* We only do this if COUNT_EXP is not specified. That way
1900 "down" means to really go down (and let me know if that is
1901 impossible), but "down 9999" can be used to mean go all the
1902 way down without getting an error. */
1903
1904 error (_("Bottom (innermost) frame selected; you cannot go down."));
1905 }
1906
1907 select_frame (frame);
1908 }
1909
1910 static void
1911 down_silently_command (char *count_exp, int from_tty)
1912 {
1913 down_silently_base (count_exp);
1914 }
1915
1916 static void
1917 down_command (char *count_exp, int from_tty)
1918 {
1919 down_silently_base (count_exp);
1920 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1921 }
1922 \f
1923
1924 void
1925 return_command (char *retval_exp, int from_tty)
1926 {
1927 struct frame_info *thisframe;
1928 struct gdbarch *gdbarch;
1929 struct symbol *thisfun;
1930 struct value *return_value = NULL;
1931 const char *query_prefix = "";
1932
1933 thisframe = get_selected_frame ("No selected frame.");
1934 thisfun = get_frame_function (thisframe);
1935 gdbarch = get_frame_arch (thisframe);
1936
1937 if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
1938 error (_("Can not force return from an inlined function."));
1939
1940 /* Compute the return value. If the computation triggers an error,
1941 let it bail. If the return type can't be handled, set
1942 RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
1943 message. */
1944 if (retval_exp)
1945 {
1946 struct expression *retval_expr = parse_expression (retval_exp);
1947 struct cleanup *old_chain = make_cleanup (xfree, retval_expr);
1948 struct type *return_type = NULL;
1949
1950 /* Compute the return value. Should the computation fail, this
1951 call throws an error. */
1952 return_value = evaluate_expression (retval_expr);
1953
1954 /* Cast return value to the return type of the function. Should
1955 the cast fail, this call throws an error. */
1956 if (thisfun != NULL)
1957 return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1958 if (return_type == NULL)
1959 {
1960 if (retval_expr->elts[0].opcode != UNOP_CAST)
1961 error (_("Return value type not available for selected "
1962 "stack frame.\n"
1963 "Please use an explicit cast of the value to return."));
1964 return_type = value_type (return_value);
1965 }
1966 do_cleanups (old_chain);
1967 CHECK_TYPEDEF (return_type);
1968 return_value = value_cast (return_type, return_value);
1969
1970 /* Make sure the value is fully evaluated. It may live in the
1971 stack frame we're about to pop. */
1972 if (value_lazy (return_value))
1973 value_fetch_lazy (return_value);
1974
1975 if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
1976 /* If the return-type is "void", don't try to find the
1977 return-value's location. However, do still evaluate the
1978 return expression so that, even when the expression result
1979 is discarded, side effects such as "return i++" still
1980 occur. */
1981 return_value = NULL;
1982 else if (thisfun != NULL
1983 && using_struct_return (gdbarch,
1984 SYMBOL_TYPE (thisfun), return_type))
1985 {
1986 query_prefix = "The location at which to store the "
1987 "function's return value is unknown.\n"
1988 "If you continue, the return value "
1989 "that you specified will be ignored.\n";
1990 return_value = NULL;
1991 }
1992 }
1993
1994 /* Does an interactive user really want to do this? Include
1995 information, such as how well GDB can handle the return value, in
1996 the query message. */
1997 if (from_tty)
1998 {
1999 int confirmed;
2000
2001 if (thisfun == NULL)
2002 confirmed = query (_("%sMake selected stack frame return now? "),
2003 query_prefix);
2004 else
2005 confirmed = query (_("%sMake %s return now? "), query_prefix,
2006 SYMBOL_PRINT_NAME (thisfun));
2007 if (!confirmed)
2008 error (_("Not confirmed"));
2009 }
2010
2011 /* Discard the selected frame and all frames inner-to it. */
2012 frame_pop (get_selected_frame (NULL));
2013
2014 /* Store RETURN_VALUE in the just-returned register set. */
2015 if (return_value != NULL)
2016 {
2017 struct type *return_type = value_type (return_value);
2018 struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
2019 struct type *func_type = thisfun == NULL ? NULL : SYMBOL_TYPE (thisfun);
2020
2021 gdb_assert (gdbarch_return_value (gdbarch, func_type, return_type, NULL,
2022 NULL, NULL)
2023 == RETURN_VALUE_REGISTER_CONVENTION);
2024 gdbarch_return_value (gdbarch, func_type, return_type,
2025 get_current_regcache (), NULL /*read*/,
2026 value_contents (return_value) /*write*/);
2027 }
2028
2029 /* If we are at the end of a call dummy now, pop the dummy frame
2030 too. */
2031 if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2032 frame_pop (get_current_frame ());
2033
2034 /* If interactive, print the frame that is now current. */
2035 if (from_tty)
2036 frame_command ("0", 1);
2037 else
2038 select_frame_command ("0", 0);
2039 }
2040
2041 /* Sets the scope to input function name, provided that the function
2042 is within the current stack frame. */
2043
2044 struct function_bounds
2045 {
2046 CORE_ADDR low, high;
2047 };
2048
2049 static void
2050 func_command (char *arg, int from_tty)
2051 {
2052 struct frame_info *frame;
2053 int found = 0;
2054 struct symtabs_and_lines sals;
2055 int i;
2056 int level = 1;
2057 struct function_bounds *func_bounds = NULL;
2058
2059 if (arg != NULL)
2060 return;
2061
2062 frame = parse_frame_specification ("0");
2063 sals = decode_line_spec (arg, 1);
2064 func_bounds = (struct function_bounds *) xmalloc (
2065 sizeof (struct function_bounds) * sals.nelts);
2066 for (i = 0; (i < sals.nelts && !found); i++)
2067 {
2068 if (sals.sals[i].pc == 0
2069 || find_pc_partial_function (sals.sals[i].pc, NULL,
2070 &func_bounds[i].low,
2071 &func_bounds[i].high) == 0)
2072 {
2073 func_bounds[i].low = func_bounds[i].high = 0;
2074 }
2075 }
2076
2077 do
2078 {
2079 for (i = 0; (i < sals.nelts && !found); i++)
2080 found = (get_frame_pc (frame) >= func_bounds[i].low
2081 && get_frame_pc (frame) < func_bounds[i].high);
2082 if (!found)
2083 {
2084 level = 1;
2085 frame = find_relative_frame (frame, &level);
2086 }
2087 }
2088 while (!found && level == 0);
2089
2090 if (func_bounds)
2091 xfree (func_bounds);
2092
2093 if (!found)
2094 printf_filtered (_("'%s' not within current stack frame.\n"), arg);
2095 else if (frame != get_selected_frame (NULL))
2096 select_and_print_frame (frame);
2097 }
2098
2099 /* Gets the language of the current frame. */
2100
2101 enum language
2102 get_frame_language (void)
2103 {
2104 struct frame_info *frame = deprecated_safe_get_selected_frame ();
2105
2106 if (frame)
2107 {
2108 volatile struct gdb_exception ex;
2109 CORE_ADDR pc = 0;
2110 struct symtab *s;
2111
2112 /* We determine the current frame language by looking up its
2113 associated symtab. To retrieve this symtab, we use the frame
2114 PC. However we cannot use the frame PC as is, because it
2115 usually points to the instruction following the "call", which
2116 is sometimes the first instruction of another function. So
2117 we rely on get_frame_address_in_block(), it provides us with
2118 a PC that is guaranteed to be inside the frame's code
2119 block. */
2120
2121 TRY_CATCH (ex, RETURN_MASK_ERROR)
2122 {
2123 pc = get_frame_address_in_block (frame);
2124 }
2125 if (ex.reason < 0)
2126 {
2127 if (ex.error != NOT_AVAILABLE_ERROR)
2128 throw_exception (ex);
2129 }
2130 else
2131 {
2132 s = find_pc_symtab (pc);
2133 if (s != NULL)
2134 return s->language;
2135 }
2136 }
2137
2138 return language_unknown;
2139 }
2140 \f
2141
2142 /* Provide a prototype to silence -Wmissing-prototypes. */
2143 void _initialize_stack (void);
2144
2145 void
2146 _initialize_stack (void)
2147 {
2148 add_com ("return", class_stack, return_command, _("\
2149 Make selected stack frame return to its caller.\n\
2150 Control remains in the debugger, but when you continue\n\
2151 execution will resume in the frame above the one now selected.\n\
2152 If an argument is given, it is an expression for the value to return."));
2153
2154 add_com ("up", class_stack, up_command, _("\
2155 Select and print stack frame that called this one.\n\
2156 An argument says how many frames up to go."));
2157 add_com ("up-silently", class_support, up_silently_command, _("\
2158 Same as the `up' command, but does not print anything.\n\
2159 This is useful in command scripts."));
2160
2161 add_com ("down", class_stack, down_command, _("\
2162 Select and print stack frame called by this one.\n\
2163 An argument says how many frames down to go."));
2164 add_com_alias ("do", "down", class_stack, 1);
2165 add_com_alias ("dow", "down", class_stack, 1);
2166 add_com ("down-silently", class_support, down_silently_command, _("\
2167 Same as the `down' command, but does not print anything.\n\
2168 This is useful in command scripts."));
2169
2170 add_com ("frame", class_stack, frame_command, _("\
2171 Select and print a stack frame.\nWith no argument, \
2172 print the selected stack frame. (See also \"info frame\").\n\
2173 An argument specifies the frame to select.\n\
2174 It can be a stack frame number or the address of the frame.\n\
2175 With argument, nothing is printed if input is coming from\n\
2176 a command file or a user-defined command."));
2177
2178 add_com_alias ("f", "frame", class_stack, 1);
2179
2180 if (xdb_commands)
2181 {
2182 add_com ("L", class_stack, current_frame_command,
2183 _("Print the current stack frame.\n"));
2184 add_com_alias ("V", "frame", class_stack, 1);
2185 }
2186 add_com ("select-frame", class_stack, select_frame_command, _("\
2187 Select a stack frame without printing anything.\n\
2188 An argument specifies the frame to select.\n\
2189 It can be a stack frame number or the address of the frame.\n"));
2190
2191 add_com ("backtrace", class_stack, backtrace_command, _("\
2192 Print backtrace of all stack frames, or innermost COUNT frames.\n\
2193 With a negative argument, print outermost -COUNT frames.\nUse of the \
2194 'full' qualifier also prints the values of the local variables.\n"));
2195 add_com_alias ("bt", "backtrace", class_stack, 0);
2196 if (xdb_commands)
2197 {
2198 add_com_alias ("t", "backtrace", class_stack, 0);
2199 add_com ("T", class_stack, backtrace_full_command, _("\
2200 Print backtrace of all stack frames, or innermost COUNT frames\n\
2201 and the values of the local variables.\n\
2202 With a negative argument, print outermost -COUNT frames.\n\
2203 Usage: T <count>\n"));
2204 }
2205
2206 add_com_alias ("where", "backtrace", class_alias, 0);
2207 add_info ("stack", backtrace_command,
2208 _("Backtrace of the stack, or innermost COUNT frames."));
2209 add_info_alias ("s", "stack", 1);
2210 add_info ("frame", frame_info,
2211 _("All about selected stack frame, or frame at ADDR."));
2212 add_info_alias ("f", "frame", 1);
2213 add_info ("locals", locals_info,
2214 _("Local variables of current stack frame."));
2215 add_info ("args", args_info,
2216 _("Argument variables of current stack frame."));
2217 if (xdb_commands)
2218 add_com ("l", class_info, args_plus_locals_info,
2219 _("Argument and local variables of current stack frame."));
2220
2221 if (dbx_commands)
2222 add_com ("func", class_stack, func_command, _("\
2223 Select the stack frame that contains <func>.\n\
2224 Usage: func <name>\n"));
2225
2226 add_info ("catch", catch_info,
2227 _("Exceptions that can be caught in the current stack frame."));
2228
2229 add_setshow_enum_cmd ("frame-arguments", class_stack,
2230 print_frame_arguments_choices, &print_frame_arguments,
2231 _("Set printing of non-scalar frame arguments"),
2232 _("Show printing of non-scalar frame arguments"),
2233 NULL, NULL, NULL, &setprintlist, &showprintlist);
2234
2235 add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
2236 &disassemble_next_line, _("\
2237 Set whether to disassemble next source line or insn when execution stops."),
2238 _("\
2239 Show whether to disassemble next source line or insn when execution stops."),
2240 _("\
2241 If ON, GDB will display disassembly of the next source line, in addition\n\
2242 to displaying the source line itself. If the next source line cannot\n\
2243 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2244 will display disassembly of next instruction instead of showing the\n\
2245 source line.\n\
2246 If AUTO, display disassembly of next instruction only if the source line\n\
2247 cannot be displayed.\n\
2248 If OFF (which is the default), never display the disassembly of the next\n\
2249 source line."),
2250 NULL,
2251 show_disassemble_next_line,
2252 &setlist, &showlist);
2253 disassemble_next_line = AUTO_BOOLEAN_FALSE;
2254 }
This page took 0.088955 seconds and 5 git commands to generate.