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