* stack.c (do_gdb_disassembly): Print the exception message if an
[external/binutils.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 when execution stops."), _("\
2153 Show whether to disassemble next source line when execution stops."), _("\
2154 If ON, GDB will display disassembly of the next source line when\n\
2155 execution of the program being debugged stops.\n\
2156 If AUTO, or there's no line info to determine\n\
2157 the source line of the next instruction, display disassembly of next\n\
2158 instruction instead."),
2159                                 NULL,
2160                                 show_disassemble_next_line,
2161                                 &setlist, &showlist);
2162   disassemble_next_line = AUTO_BOOLEAN_FALSE;
2163
2164 #if 0
2165   add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command, _(\
2166 "Specify maximum number of frames for \"backtrace\" to print by default."),
2167            &setlist);
2168   add_info ("backtrace-limit", backtrace_limit_info, _("\
2169 The maximum number of frames for \"backtrace\" to print by default."));
2170 #endif
2171 }