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