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