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