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