* frame.c (frame_unwind_id): Renamed to ...
[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               struct frame_info *prev_frame;
903
904               while (1)
905                 {
906                   prev_frame = get_prev_frame (fid);
907                   if (!prev_frame
908                       || !frame_id_eq (id, get_frame_id (prev_frame)))
909                     break;
910                   fid = prev_frame;
911                 }
912               return fid;
913             }
914         }
915       }
916
917   /* We couldn't identify the frame as an existing frame, but
918      perhaps we can create one with a single argument.  */
919   if (numargs == 1)
920     return create_new_frame (addrs[0], 0);
921   else if (numargs == 2)
922     return create_new_frame (addrs[0], addrs[1]);
923   else
924     error (_("Too many args in frame specification"));
925 }
926
927 static struct frame_info *
928 parse_frame_specification (char *frame_exp)
929 {
930   return parse_frame_specification_1 (frame_exp, NULL, NULL);
931 }
932
933 /* Print verbosely the selected frame or the frame at address
934    ADDR_EXP.  Absolutely all information in the frame is printed.  */
935
936 static void
937 frame_info (char *addr_exp, int from_tty)
938 {
939   struct frame_info *fi;
940   struct symtab_and_line sal;
941   struct symbol *func;
942   struct symtab *s;
943   struct frame_info *calling_frame_info;
944   int i, count, numregs;
945   char *funname = 0;
946   enum language funlang = language_unknown;
947   const char *pc_regname;
948   int selected_frame_p;
949   struct gdbarch *gdbarch;
950   struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
951
952   fi = parse_frame_specification_1 (addr_exp, "No stack.", &selected_frame_p);
953   gdbarch = get_frame_arch (fi);
954
955   /* Name of the value returned by get_frame_pc().  Per comments, "pc"
956      is not a good name.  */
957   if (gdbarch_pc_regnum (gdbarch) >= 0)
958     /* OK, this is weird.  The gdbarch_pc_regnum hardware register's value can
959        easily not match that of the internal value returned by
960        get_frame_pc().  */
961     pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
962   else
963     /* But then, this is weird to.  Even without gdbarch_pc_regnum, an
964        architectures will often have a hardware register called "pc",
965        and that register's value, again, can easily not match
966        get_frame_pc().  */
967     pc_regname = "pc";
968
969   find_frame_sal (fi, &sal);
970   func = get_frame_function (fi);
971   /* FIXME: cagney/2002-11-28: Why bother?  Won't sal.symtab contain
972      the same value?  */
973   s = find_pc_symtab (get_frame_pc (fi));
974   if (func)
975     {
976       funname = SYMBOL_PRINT_NAME (func);
977       funlang = SYMBOL_LANGUAGE (func);
978       if (funlang == language_cplus)
979         {
980           /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
981              to display the demangled name that we already have
982              stored in the symbol table, but we stored a version
983              with DMGL_PARAMS turned on, and here we don't want to
984              display parameters.  So remove the parameters.  */
985           char *func_only = cp_remove_params (funname);
986           if (func_only)
987             {
988               funname = func_only;
989               make_cleanup (xfree, func_only);
990             }
991         }
992     }
993   else
994     {
995       struct minimal_symbol *msymbol;
996
997       msymbol = lookup_minimal_symbol_by_pc (get_frame_pc (fi));
998       if (msymbol != NULL)
999         {
1000           funname = SYMBOL_PRINT_NAME (msymbol);
1001           funlang = SYMBOL_LANGUAGE (msymbol);
1002         }
1003     }
1004   calling_frame_info = get_prev_frame (fi);
1005
1006   if (selected_frame_p && frame_relative_level (fi) >= 0)
1007     {
1008       printf_filtered (_("Stack level %d, frame at "),
1009                        frame_relative_level (fi));
1010     }
1011   else
1012     {
1013       printf_filtered (_("Stack frame at "));
1014     }
1015   fputs_filtered (paddress (get_frame_base (fi)), gdb_stdout);
1016   printf_filtered (":\n");
1017   printf_filtered (" %s = ", pc_regname);
1018   fputs_filtered (paddress (get_frame_pc (fi)), gdb_stdout);
1019
1020   wrap_here ("   ");
1021   if (funname)
1022     {
1023       printf_filtered (" in ");
1024       fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1025                                DMGL_ANSI | DMGL_PARAMS);
1026     }
1027   wrap_here ("   ");
1028   if (sal.symtab)
1029     printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
1030   puts_filtered ("; ");
1031   wrap_here ("    ");
1032   printf_filtered ("saved %s ", pc_regname);
1033   fputs_filtered (paddress (frame_unwind_caller_pc (fi)), gdb_stdout);
1034   printf_filtered ("\n");
1035
1036   if (calling_frame_info == NULL)
1037     {
1038       enum unwind_stop_reason reason;
1039
1040       reason = get_frame_unwind_stop_reason (fi);
1041       if (reason != UNWIND_NO_REASON)
1042         printf_filtered (_(" Outermost frame: %s\n"),
1043                          frame_stop_reason_string (reason));
1044     }
1045
1046   if (calling_frame_info)
1047     {
1048       printf_filtered (" called by frame at ");
1049       fputs_filtered (paddress (get_frame_base (calling_frame_info)),
1050                       gdb_stdout);
1051     }
1052   if (get_next_frame (fi) && calling_frame_info)
1053     puts_filtered (",");
1054   wrap_here ("   ");
1055   if (get_next_frame (fi))
1056     {
1057       printf_filtered (" caller of frame at ");
1058       fputs_filtered (paddress (get_frame_base (get_next_frame (fi))),
1059                       gdb_stdout);
1060     }
1061   if (get_next_frame (fi) || calling_frame_info)
1062     puts_filtered ("\n");
1063
1064   if (s)
1065     printf_filtered (" source language %s.\n",
1066                      language_str (s->language));
1067
1068   {
1069     /* Address of the argument list for this frame, or 0.  */
1070     CORE_ADDR arg_list = get_frame_args_address (fi);
1071     /* Number of args for this frame, or -1 if unknown.  */
1072     int numargs;
1073
1074     if (arg_list == 0)
1075       printf_filtered (" Arglist at unknown address.\n");
1076     else
1077       {
1078         printf_filtered (" Arglist at ");
1079         fputs_filtered (paddress (arg_list), gdb_stdout);
1080         printf_filtered (",");
1081
1082         if (!gdbarch_frame_num_args_p (gdbarch))
1083           {
1084             numargs = -1;
1085             puts_filtered (" args: ");
1086           }
1087         else
1088           {
1089             numargs = gdbarch_frame_num_args (gdbarch, fi);
1090             gdb_assert (numargs >= 0);
1091             if (numargs == 0)
1092               puts_filtered (" no args.");
1093             else if (numargs == 1)
1094               puts_filtered (" 1 arg: ");
1095             else
1096               printf_filtered (" %d args: ", numargs);
1097           }
1098         print_frame_args (func, fi, numargs, gdb_stdout);
1099         puts_filtered ("\n");
1100       }
1101   }
1102   {
1103     /* Address of the local variables for this frame, or 0.  */
1104     CORE_ADDR arg_list = get_frame_locals_address (fi);
1105
1106     if (arg_list == 0)
1107       printf_filtered (" Locals at unknown address,");
1108     else
1109       {
1110         printf_filtered (" Locals at ");
1111         fputs_filtered (paddress (arg_list), gdb_stdout);
1112         printf_filtered (",");
1113       }
1114   }
1115
1116   /* Print as much information as possible on the location of all the
1117      registers.  */
1118   {
1119     enum lval_type lval;
1120     int optimized;
1121     CORE_ADDR addr;
1122     int realnum;
1123     int count;
1124     int i;
1125     int need_nl = 1;
1126
1127     /* The sp is special; what's displayed isn't the save address, but
1128        the value of the previous frame's sp.  This is a legacy thing,
1129        at one stage the frame cached the previous frame's SP instead
1130        of its address, hence it was easiest to just display the cached
1131        value.  */
1132     if (gdbarch_sp_regnum (gdbarch) >= 0)
1133       {
1134         /* Find out the location of the saved stack pointer with out
1135            actually evaluating it.  */
1136         frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1137                                &optimized, &lval, &addr,
1138                                &realnum, NULL);
1139         if (!optimized && lval == not_lval)
1140           {
1141             gdb_byte value[MAX_REGISTER_SIZE];
1142             CORE_ADDR sp;
1143             frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1144                                    &optimized, &lval, &addr,
1145                                    &realnum, value);
1146             /* NOTE: cagney/2003-05-22: This is assuming that the
1147                stack pointer was packed as an unsigned integer.  That
1148                may or may not be valid.  */
1149             sp = extract_unsigned_integer (value,
1150                                            register_size (gdbarch,
1151                                            gdbarch_sp_regnum (gdbarch)));
1152             printf_filtered (" Previous frame's sp is ");
1153             fputs_filtered (paddress (sp), gdb_stdout);
1154             printf_filtered ("\n");
1155             need_nl = 0;
1156           }
1157         else if (!optimized && lval == lval_memory)
1158           {
1159             printf_filtered (" Previous frame's sp at ");
1160             fputs_filtered (paddress (addr), gdb_stdout);
1161             printf_filtered ("\n");
1162             need_nl = 0;
1163           }
1164         else if (!optimized && lval == lval_register)
1165           {
1166             printf_filtered (" Previous frame's sp in %s\n",
1167                              gdbarch_register_name (gdbarch, realnum));
1168             need_nl = 0;
1169           }
1170         /* else keep quiet.  */
1171       }
1172
1173     count = 0;
1174     numregs = gdbarch_num_regs (gdbarch)
1175               + gdbarch_num_pseudo_regs (gdbarch);
1176     for (i = 0; i < numregs; i++)
1177       if (i != gdbarch_sp_regnum (gdbarch)
1178           && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1179         {
1180           /* Find out the location of the saved register without
1181              fetching the corresponding value.  */
1182           frame_register_unwind (fi, i, &optimized, &lval, &addr, &realnum,
1183                                  NULL);
1184           /* For moment, only display registers that were saved on the
1185              stack.  */
1186           if (!optimized && lval == lval_memory)
1187             {
1188               if (count == 0)
1189                 puts_filtered (" Saved registers:\n ");
1190               else
1191                 puts_filtered (",");
1192               wrap_here (" ");
1193               printf_filtered (" %s at ",
1194                                gdbarch_register_name (gdbarch, i));
1195               fputs_filtered (paddress (addr), gdb_stdout);
1196               count++;
1197             }
1198         }
1199     if (count || need_nl)
1200       puts_filtered ("\n");
1201   }
1202
1203   do_cleanups (back_to);
1204 }
1205
1206 /* Print briefly all stack frames or just the innermost COUNT_EXP
1207    frames.  */
1208
1209 static void
1210 backtrace_command_1 (char *count_exp, int show_locals, int from_tty)
1211 {
1212   struct frame_info *fi;
1213   int count;
1214   int i;
1215   struct frame_info *trailing;
1216   int trailing_level;
1217
1218   if (!target_has_stack)
1219     error (_("No stack."));
1220
1221   /* The following code must do two things.  First, it must set the
1222      variable TRAILING to the frame from which we should start
1223      printing.  Second, it must set the variable count to the number
1224      of frames which we should print, or -1 if all of them.  */
1225   trailing = get_current_frame ();
1226
1227   /* The target can be in a state where there is no valid frames
1228      (e.g., just connected). */
1229   if (trailing == NULL)
1230     error (_("No stack."));
1231
1232   trailing_level = 0;
1233   if (count_exp)
1234     {
1235       count = parse_and_eval_long (count_exp);
1236       if (count < 0)
1237         {
1238           struct frame_info *current;
1239
1240           count = -count;
1241
1242           current = trailing;
1243           while (current && count--)
1244             {
1245               QUIT;
1246               current = get_prev_frame (current);
1247             }
1248
1249           /* Will stop when CURRENT reaches the top of the stack.
1250              TRAILING will be COUNT below it.  */
1251           while (current)
1252             {
1253               QUIT;
1254               trailing = get_prev_frame (trailing);
1255               current = get_prev_frame (current);
1256               trailing_level++;
1257             }
1258
1259           count = -1;
1260         }
1261     }
1262   else
1263     count = -1;
1264
1265   if (info_verbose)
1266     {
1267       struct partial_symtab *ps;
1268
1269       /* Read in symbols for all of the frames.  Need to do this in a
1270          separate pass so that "Reading in symbols for xxx" messages
1271          don't screw up the appearance of the backtrace.  Also if
1272          people have strong opinions against reading symbols for
1273          backtrace this may have to be an option.  */
1274       i = count;
1275       for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
1276         {
1277           QUIT;
1278           ps = find_pc_psymtab (get_frame_address_in_block (fi));
1279           if (ps)
1280             PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in.  */
1281         }
1282     }
1283
1284   for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
1285     {
1286       QUIT;
1287
1288       /* Don't use print_stack_frame; if an error() occurs it probably
1289          means further attempts to backtrace would fail (on the other
1290          hand, perhaps the code does or could be fixed to make sure
1291          the frame->prev field gets set to NULL in that case).  */
1292       print_frame_info (fi, 1, LOCATION, 1);
1293       if (show_locals)
1294         print_frame_local_vars (fi, 1, gdb_stdout);
1295
1296       /* Save the last frame to check for error conditions.  */
1297       trailing = fi;
1298     }
1299
1300   /* If we've stopped before the end, mention that.  */
1301   if (fi && from_tty)
1302     printf_filtered (_("(More stack frames follow...)\n"));
1303
1304   /* If we've run out of frames, and the reason appears to be an error
1305      condition, print it.  */
1306   if (fi == NULL && trailing != NULL)
1307     {
1308       enum unwind_stop_reason reason;
1309
1310       reason = get_frame_unwind_stop_reason (trailing);
1311       if (reason > UNWIND_FIRST_ERROR)
1312         printf_filtered (_("Backtrace stopped: %s\n"),
1313                          frame_stop_reason_string (reason));
1314     }
1315 }
1316
1317 struct backtrace_command_args
1318 {
1319   char *count_exp;
1320   int show_locals;
1321   int from_tty;
1322 };
1323
1324 /* Stub for catch_errors.  */
1325
1326 static int
1327 backtrace_command_stub (void *data)
1328 {
1329   struct backtrace_command_args *args = data;
1330   backtrace_command_1 (args->count_exp, args->show_locals, args->from_tty);
1331   return 0;
1332 }
1333
1334 static void
1335 backtrace_command (char *arg, int from_tty)
1336 {
1337   struct cleanup *old_chain = NULL;
1338   int fulltrace_arg = -1, arglen = 0, argc = 0;
1339   struct backtrace_command_args btargs;
1340
1341   if (arg)
1342     {
1343       char **argv;
1344       int i;
1345
1346       argv = gdb_buildargv (arg);
1347       old_chain = make_cleanup_freeargv (argv);
1348       argc = 0;
1349       for (i = 0; argv[i]; i++)
1350         {
1351           unsigned int j;
1352
1353           for (j = 0; j < strlen (argv[i]); j++)
1354             argv[i][j] = tolower (argv[i][j]);
1355
1356           if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1357             fulltrace_arg = argc;
1358           else
1359             {
1360               arglen += strlen (argv[i]);
1361               argc++;
1362             }
1363         }
1364       arglen += argc;
1365       if (fulltrace_arg >= 0)
1366         {
1367           if (arglen > 0)
1368             {
1369               arg = xmalloc (arglen + 1);
1370               memset (arg, 0, arglen + 1);
1371               for (i = 0; i < (argc + 1); i++)
1372                 {
1373                   if (i != fulltrace_arg)
1374                     {
1375                       strcat (arg, argv[i]);
1376                       strcat (arg, " ");
1377                     }
1378                 }
1379             }
1380           else
1381             arg = NULL;
1382         }
1383     }
1384
1385   btargs.count_exp = arg;
1386   btargs.show_locals = (fulltrace_arg >= 0);
1387   btargs.from_tty = from_tty;
1388   catch_errors (backtrace_command_stub, &btargs, "", RETURN_MASK_ERROR);
1389
1390   if (fulltrace_arg >= 0 && arglen > 0)
1391     xfree (arg);
1392
1393   if (old_chain)
1394     do_cleanups (old_chain);
1395 }
1396
1397 static void
1398 backtrace_full_command (char *arg, int from_tty)
1399 {
1400   struct backtrace_command_args btargs;
1401   btargs.count_exp = arg;
1402   btargs.show_locals = 1;
1403   btargs.from_tty = from_tty;
1404   catch_errors (backtrace_command_stub, &btargs, "", RETURN_MASK_ERROR);
1405 }
1406 \f
1407
1408 /* Print the local variables of a block B active in FRAME on STREAM.
1409    Return 1 if any variables were printed; 0 otherwise.  */
1410
1411 static int
1412 print_block_frame_locals (struct block *b, struct frame_info *frame,
1413                           int num_tabs, struct ui_file *stream)
1414 {
1415   struct dict_iterator iter;
1416   struct symbol *sym;
1417   int values_printed = 0;
1418   int j;
1419
1420   ALL_BLOCK_SYMBOLS (b, iter, sym)
1421     {
1422       switch (SYMBOL_CLASS (sym))
1423         {
1424         case LOC_LOCAL:
1425         case LOC_REGISTER:
1426         case LOC_STATIC:
1427         case LOC_COMPUTED:
1428           if (SYMBOL_IS_ARGUMENT (sym))
1429             break;
1430           values_printed = 1;
1431           print_variable_and_value (NULL, sym, frame, stream, 4 * num_tabs);
1432           break;
1433
1434         default:
1435           /* Ignore symbols which are not locals.  */
1436           break;
1437         }
1438     }
1439
1440   return values_printed;
1441 }
1442
1443 /* Same, but print labels.  */
1444
1445 static int
1446 print_block_frame_labels (struct block *b, int *have_default,
1447                           struct ui_file *stream)
1448 {
1449   struct dict_iterator iter;
1450   struct symbol *sym;
1451   int values_printed = 0;
1452
1453   ALL_BLOCK_SYMBOLS (b, iter, sym)
1454     {
1455       if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
1456         {
1457           if (*have_default)
1458             continue;
1459           *have_default = 1;
1460         }
1461       if (SYMBOL_CLASS (sym) == LOC_LABEL)
1462         {
1463           struct symtab_and_line sal;
1464           struct value_print_options opts;
1465           sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1466           values_printed = 1;
1467           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1468           get_user_print_options (&opts);
1469           if (opts.addressprint)
1470             {
1471               fprintf_filtered (stream, " ");
1472               fputs_filtered (paddress (SYMBOL_VALUE_ADDRESS (sym)), stream);
1473             }
1474           fprintf_filtered (stream, " in file %s, line %d\n",
1475                             sal.symtab->filename, sal.line);
1476         }
1477     }
1478
1479   return values_printed;
1480 }
1481
1482 /* Print on STREAM all the local variables in frame FRAME, including
1483    all the blocks active in that frame at its current PC.
1484
1485    Returns 1 if the job was done, or 0 if nothing was printed because
1486    we have no info on the function running in FRAME.  */
1487
1488 static void
1489 print_frame_local_vars (struct frame_info *frame, int num_tabs,
1490                         struct ui_file *stream)
1491 {
1492   struct block *block = get_frame_block (frame, 0);
1493   int values_printed = 0;
1494
1495   if (block == 0)
1496     {
1497       fprintf_filtered (stream, "No symbol table info available.\n");
1498       return;
1499     }
1500
1501   while (block)
1502     {
1503       if (print_block_frame_locals (block, frame, num_tabs, stream))
1504         values_printed = 1;
1505       /* After handling the function's top-level block, stop.  Don't
1506          continue to its superblock, the block of per-file symbols.  */
1507       if (BLOCK_FUNCTION (block))
1508         break;
1509       block = BLOCK_SUPERBLOCK (block);
1510     }
1511
1512   if (!values_printed)
1513     fprintf_filtered (stream, _("No locals.\n"));
1514 }
1515
1516 /* Same, but print labels.  */
1517
1518 static void
1519 print_frame_label_vars (struct frame_info *frame, int this_level_only,
1520                         struct ui_file *stream)
1521 {
1522 #if 1
1523   fprintf_filtered (stream, "print_frame_label_vars disabled.\n");
1524 #else
1525   struct blockvector *bl;
1526   struct block *block = get_frame_block (frame, 0);
1527   int values_printed = 0;
1528   int index, have_default = 0;
1529   char *blocks_printed;
1530   CORE_ADDR pc = get_frame_pc (frame);
1531
1532   if (block == 0)
1533     {
1534       fprintf_filtered (stream, "No symbol table info available.\n");
1535       return;
1536     }
1537
1538   bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
1539   blocks_printed = alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1540   memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1541
1542   while (block != 0)
1543     {
1544       CORE_ADDR end = BLOCK_END (block) - 4;
1545       int last_index;
1546
1547       if (bl != blockvector_for_pc (end, &index))
1548         error (_("blockvector blotch"));
1549       if (BLOCKVECTOR_BLOCK (bl, index) != block)
1550         error (_("blockvector botch"));
1551       last_index = BLOCKVECTOR_NBLOCKS (bl);
1552       index += 1;
1553
1554       /* Don't print out blocks that have gone by.  */
1555       while (index < last_index
1556              && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1557         index++;
1558
1559       while (index < last_index
1560              && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1561         {
1562           if (blocks_printed[index] == 0)
1563             {
1564               if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index),
1565                                             &have_default, stream))
1566                 values_printed = 1;
1567               blocks_printed[index] = 1;
1568             }
1569           index++;
1570         }
1571       if (have_default)
1572         return;
1573       if (values_printed && this_level_only)
1574         return;
1575
1576       /* After handling the function's top-level block, stop.  Don't
1577          continue to its superblock, the block of per-file symbols.  */
1578       if (BLOCK_FUNCTION (block))
1579         break;
1580       block = BLOCK_SUPERBLOCK (block);
1581     }
1582
1583   if (!values_printed && !this_level_only)
1584     fprintf_filtered (stream, _("No catches.\n"));
1585 #endif
1586 }
1587
1588 void
1589 locals_info (char *args, int from_tty)
1590 {
1591   print_frame_local_vars (get_selected_frame (_("No frame selected.")),
1592                           0, gdb_stdout);
1593 }
1594
1595 static void
1596 catch_info (char *ignore, int from_tty)
1597 {
1598   struct symtab_and_line *sal;
1599
1600   /* Assume g++ compiled code; old GDB 4.16 behaviour.  */
1601   print_frame_label_vars (get_selected_frame (_("No frame selected.")),
1602                           0, gdb_stdout);
1603 }
1604
1605 static void
1606 print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
1607 {
1608   struct symbol *func = get_frame_function (frame);
1609   struct block *b;
1610   struct dict_iterator iter;
1611   struct symbol *sym, *sym2;
1612   int values_printed = 0;
1613
1614   if (func == 0)
1615     {
1616       fprintf_filtered (stream, _("No symbol table info available.\n"));
1617       return;
1618     }
1619
1620   b = SYMBOL_BLOCK_VALUE (func);
1621   ALL_BLOCK_SYMBOLS (b, iter, sym)
1622     {
1623       /* Don't worry about things which aren't arguments.  */
1624       if (SYMBOL_IS_ARGUMENT (sym))
1625         {
1626           values_printed = 1;
1627
1628           /* We have to look up the symbol because arguments can have
1629              two entries (one a parameter, one a local) and the one we
1630              want is the local, which lookup_symbol will find for us.
1631              This includes gcc1 (not gcc2) on the sparc when passing a
1632              small structure and gcc2 when the argument type is float
1633              and it is passed as a double and converted to float by
1634              the prologue (in the latter case the type of the LOC_ARG
1635              symbol is double and the type of the LOC_LOCAL symbol is
1636              float).  There are also LOC_ARG/LOC_REGISTER pairs which
1637              are not combined in symbol-reading.  */
1638
1639           sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
1640                                 b, VAR_DOMAIN, NULL);
1641           print_variable_and_value (SYMBOL_PRINT_NAME (sym), sym2,
1642                                     frame, stream, 0);
1643         }
1644     }
1645
1646   if (!values_printed)
1647     fprintf_filtered (stream, _("No arguments.\n"));
1648 }
1649
1650 void
1651 args_info (char *ignore, int from_tty)
1652 {
1653   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
1654                         gdb_stdout);
1655 }
1656
1657
1658 static void
1659 args_plus_locals_info (char *ignore, int from_tty)
1660 {
1661   args_info (ignore, from_tty);
1662   locals_info (ignore, from_tty);
1663 }
1664 \f
1665
1666 /* Select frame FRAME.  Also print the stack frame and show the source
1667    if this is the tui version.  */
1668 static void
1669 select_and_print_frame (struct frame_info *frame)
1670 {
1671   select_frame (frame);
1672   if (frame)
1673     print_stack_frame (frame, 1, SRC_AND_LOC);
1674 }
1675 \f
1676 /* Return the symbol-block in which the selected frame is executing.
1677    Can return zero under various legitimate circumstances.
1678
1679    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1680    code address within the block returned.  We use this to decide
1681    which macros are in scope.  */
1682
1683 struct block *
1684 get_selected_block (CORE_ADDR *addr_in_block)
1685 {
1686   if (!has_stack_frames ())
1687     return 0;
1688
1689   return get_frame_block (get_selected_frame (NULL), addr_in_block);
1690 }
1691
1692 /* Find a frame a certain number of levels away from FRAME.
1693    LEVEL_OFFSET_PTR points to an int containing the number of levels.
1694    Positive means go to earlier frames (up); negative, the reverse.
1695    The int that contains the number of levels is counted toward
1696    zero as the frames for those levels are found.
1697    If the top or bottom frame is reached, that frame is returned,
1698    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1699    how much farther the original request asked to go.  */
1700
1701 struct frame_info *
1702 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
1703 {
1704   /* Going up is simple: just call get_prev_frame enough times or
1705      until the initial frame is reached.  */
1706   while (*level_offset_ptr > 0)
1707     {
1708       struct frame_info *prev = get_prev_frame (frame);
1709       if (!prev)
1710         break;
1711       (*level_offset_ptr)--;
1712       frame = prev;
1713     }
1714
1715   /* Going down is just as simple.  */
1716   while (*level_offset_ptr < 0)
1717     {
1718       struct frame_info *next = get_next_frame (frame);
1719       if (!next)
1720         break;
1721       (*level_offset_ptr)++;
1722       frame = next;
1723     }
1724
1725   return frame;
1726 }
1727
1728 /* The "select_frame" command.  With no argument this is a NOP.
1729    Select the frame at level LEVEL_EXP if it is a valid level.
1730    Otherwise, treat LEVEL_EXP as an address expression and select it.
1731
1732    See parse_frame_specification for more info on proper frame
1733    expressions.  */
1734
1735 void
1736 select_frame_command (char *level_exp, int from_tty)
1737 {
1738   select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
1739 }
1740
1741 /* The "frame" command.  With no argument, print the selected frame
1742    briefly.  With an argument, behave like select_frame and then print
1743    the selected frame.  */
1744
1745 static void
1746 frame_command (char *level_exp, int from_tty)
1747 {
1748   select_frame_command (level_exp, from_tty);
1749   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1750 }
1751
1752 /* The XDB Compatibility command to print the current frame.  */
1753
1754 static void
1755 current_frame_command (char *level_exp, int from_tty)
1756 {
1757   print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC);
1758 }
1759
1760 /* Select the frame up one or COUNT_EXP stack levels from the
1761    previously selected frame, and print it briefly.  */
1762
1763 static void
1764 up_silently_base (char *count_exp)
1765 {
1766   struct frame_info *frame;
1767   int count = 1;
1768
1769   if (count_exp)
1770     count = parse_and_eval_long (count_exp);
1771
1772   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1773   if (count != 0 && count_exp == NULL)
1774     error (_("Initial frame selected; you cannot go up."));
1775   select_frame (frame);
1776 }
1777
1778 static void
1779 up_silently_command (char *count_exp, int from_tty)
1780 {
1781   up_silently_base (count_exp);
1782 }
1783
1784 static void
1785 up_command (char *count_exp, int from_tty)
1786 {
1787   up_silently_base (count_exp);
1788   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1789 }
1790
1791 /* Select the frame down one or COUNT_EXP stack levels from the previously
1792    selected frame, and print it briefly.  */
1793
1794 static void
1795 down_silently_base (char *count_exp)
1796 {
1797   struct frame_info *frame;
1798   int count = -1;
1799   if (count_exp)
1800     count = -parse_and_eval_long (count_exp);
1801
1802   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1803   if (count != 0 && count_exp == NULL)
1804     {
1805       /* We only do this if COUNT_EXP is not specified.  That way
1806          "down" means to really go down (and let me know if that is
1807          impossible), but "down 9999" can be used to mean go all the
1808          way down without getting an error.  */
1809
1810       error (_("Bottom (innermost) frame selected; you cannot go down."));
1811     }
1812
1813   select_frame (frame);
1814 }
1815
1816 static void
1817 down_silently_command (char *count_exp, int from_tty)
1818 {
1819   down_silently_base (count_exp);
1820 }
1821
1822 static void
1823 down_command (char *count_exp, int from_tty)
1824 {
1825   down_silently_base (count_exp);
1826   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1827 }
1828 \f
1829
1830 void
1831 return_command (char *retval_exp, int from_tty)
1832 {
1833   struct frame_info *thisframe;
1834   struct gdbarch *gdbarch;
1835   struct symbol *thisfun;
1836   struct value *return_value = NULL;
1837   const char *query_prefix = "";
1838
1839   thisframe = get_selected_frame ("No selected frame.");
1840   thisfun = get_frame_function (thisframe);
1841   gdbarch = get_frame_arch (thisframe);
1842
1843   /* Compute the return value.  If the computation triggers an error,
1844      let it bail.  If the return type can't be handled, set
1845      RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
1846      message.  */
1847   if (retval_exp)
1848     {
1849       struct expression *retval_expr = parse_expression (retval_exp);
1850       struct cleanup *old_chain = make_cleanup (xfree, retval_expr);
1851       struct type *return_type = NULL;
1852
1853       /* Compute the return value.  Should the computation fail, this
1854          call throws an error.  */
1855       return_value = evaluate_expression (retval_expr);
1856
1857       /* Cast return value to the return type of the function.  Should
1858          the cast fail, this call throws an error.  */
1859       if (thisfun != NULL)
1860         return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1861       if (return_type == NULL)
1862         {
1863           if (retval_expr->elts[0].opcode != UNOP_CAST)
1864             error (_("Return value type not available for selected "
1865                      "stack frame.\n"
1866                      "Please use an explicit cast of the value to return."));
1867           return_type = value_type (return_value);
1868         }
1869       do_cleanups (old_chain);
1870       CHECK_TYPEDEF (return_type);
1871       return_value = value_cast (return_type, return_value);
1872
1873       /* Make sure the value is fully evaluated.  It may live in the
1874          stack frame we're about to pop.  */
1875       if (value_lazy (return_value))
1876         value_fetch_lazy (return_value);
1877
1878       if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
1879         /* If the return-type is "void", don't try to find the
1880            return-value's location.  However, do still evaluate the
1881            return expression so that, even when the expression result
1882            is discarded, side effects such as "return i++" still
1883            occur.  */
1884         return_value = NULL;
1885       else if (thisfun != NULL
1886                && using_struct_return (gdbarch,
1887                                        SYMBOL_TYPE (thisfun), return_type))
1888         {
1889           query_prefix = "\
1890 The location at which to store the function's return value is unknown.\n\
1891 If you continue, the return value that you specified will be ignored.\n";
1892           return_value = NULL;
1893         }
1894     }
1895
1896   /* Does an interactive user really want to do this?  Include
1897      information, such as how well GDB can handle the return value, in
1898      the query message.  */
1899   if (from_tty)
1900     {
1901       int confirmed;
1902       if (thisfun == NULL)
1903         confirmed = query (_("%sMake selected stack frame return now? "),
1904                            query_prefix);
1905       else
1906         confirmed = query (_("%sMake %s return now? "), query_prefix,
1907                            SYMBOL_PRINT_NAME (thisfun));
1908       if (!confirmed)
1909         error (_("Not confirmed"));
1910     }
1911
1912   /* Discard the selected frame and all frames inner-to it.  */
1913   frame_pop (get_selected_frame (NULL));
1914
1915   /* Store RETURN_VALUE in the just-returned register set.  */
1916   if (return_value != NULL)
1917     {
1918       struct type *return_type = value_type (return_value);
1919       struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
1920       struct type *func_type = thisfun == NULL ? NULL : SYMBOL_TYPE (thisfun);
1921
1922       gdb_assert (gdbarch_return_value (gdbarch, func_type, return_type, NULL,
1923                                         NULL, NULL)
1924                   == RETURN_VALUE_REGISTER_CONVENTION);
1925       gdbarch_return_value (gdbarch, func_type, return_type,
1926                             get_current_regcache (), NULL /*read*/,
1927                             value_contents (return_value) /*write*/);
1928     }
1929
1930   /* If we are at the end of a call dummy now, pop the dummy frame
1931      too.  */
1932   if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
1933     frame_pop (get_current_frame ());
1934
1935   /* If interactive, print the frame that is now current.  */
1936   if (from_tty)
1937     frame_command ("0", 1);
1938   else
1939     select_frame_command ("0", 0);
1940 }
1941
1942 /* Sets the scope to input function name, provided that the function
1943    is within the current stack frame */
1944
1945 struct function_bounds
1946 {
1947   CORE_ADDR low, high;
1948 };
1949
1950 static void
1951 func_command (char *arg, int from_tty)
1952 {
1953   struct frame_info *frame;
1954   int found = 0;
1955   struct symtabs_and_lines sals;
1956   int i;
1957   int level = 1;
1958   struct function_bounds *func_bounds = NULL;
1959
1960   if (arg != NULL)
1961     return;
1962
1963   frame = parse_frame_specification ("0");
1964   sals = decode_line_spec (arg, 1);
1965   func_bounds = (struct function_bounds *) xmalloc (
1966                               sizeof (struct function_bounds) * sals.nelts);
1967   for (i = 0; (i < sals.nelts && !found); i++)
1968     {
1969       if (sals.sals[i].pc == 0
1970           || find_pc_partial_function (sals.sals[i].pc, NULL,
1971                                        &func_bounds[i].low,
1972                                        &func_bounds[i].high) == 0)
1973         {
1974           func_bounds[i].low = func_bounds[i].high = 0;
1975         }
1976     }
1977
1978   do
1979     {
1980       for (i = 0; (i < sals.nelts && !found); i++)
1981         found = (get_frame_pc (frame) >= func_bounds[i].low
1982                  && get_frame_pc (frame) < func_bounds[i].high);
1983       if (!found)
1984         {
1985           level = 1;
1986           frame = find_relative_frame (frame, &level);
1987         }
1988     }
1989   while (!found && level == 0);
1990
1991   if (func_bounds)
1992     xfree (func_bounds);
1993
1994   if (!found)
1995     printf_filtered (_("'%s' not within current stack frame.\n"), arg);
1996   else if (frame != get_selected_frame (NULL))
1997     select_and_print_frame (frame);
1998 }
1999
2000 /* Gets the language of the current frame.  */
2001
2002 enum language
2003 get_frame_language (void)
2004 {
2005   struct frame_info *frame = deprecated_safe_get_selected_frame ();
2006
2007   if (frame)
2008     {
2009       /* We determine the current frame language by looking up its
2010          associated symtab.  To retrieve this symtab, we use the frame
2011          PC.  However we cannot use the frame PC as is, because it
2012          usually points to the instruction following the "call", which
2013          is sometimes the first instruction of another function.  So
2014          we rely on get_frame_address_in_block(), it provides us with
2015          a PC that is guaranteed to be inside the frame's code
2016          block.  */
2017       CORE_ADDR pc = get_frame_address_in_block (frame);
2018       struct symtab *s = find_pc_symtab (pc);
2019
2020       if (s)
2021         return s->language;
2022     }
2023
2024   return language_unknown;
2025 }
2026 \f
2027
2028 /* Provide a prototype to silence -Wmissing-prototypes.  */
2029 void _initialize_stack (void);
2030
2031 void
2032 _initialize_stack (void)
2033 {
2034 #if 0
2035   backtrace_limit = 30;
2036 #endif
2037
2038   add_com ("return", class_stack, return_command, _("\
2039 Make selected stack frame return to its caller.\n\
2040 Control remains in the debugger, but when you continue\n\
2041 execution will resume in the frame above the one now selected.\n\
2042 If an argument is given, it is an expression for the value to return."));
2043
2044   add_com ("up", class_stack, up_command, _("\
2045 Select and print stack frame that called this one.\n\
2046 An argument says how many frames up to go."));
2047   add_com ("up-silently", class_support, up_silently_command, _("\
2048 Same as the `up' command, but does not print anything.\n\
2049 This is useful in command scripts."));
2050
2051   add_com ("down", class_stack, down_command, _("\
2052 Select and print stack frame called by this one.\n\
2053 An argument says how many frames down to go."));
2054   add_com_alias ("do", "down", class_stack, 1);
2055   add_com_alias ("dow", "down", class_stack, 1);
2056   add_com ("down-silently", class_support, down_silently_command, _("\
2057 Same as the `down' command, but does not print anything.\n\
2058 This is useful in command scripts."));
2059
2060   add_com ("frame", class_stack, frame_command, _("\
2061 Select and print a stack frame.\n\
2062 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
2063 An argument specifies the frame to select.\n\
2064 It can be a stack frame number or the address of the frame.\n\
2065 With argument, nothing is printed if input is coming from\n\
2066 a command file or a user-defined command."));
2067
2068   add_com_alias ("f", "frame", class_stack, 1);
2069
2070   if (xdb_commands)
2071     {
2072       add_com ("L", class_stack, current_frame_command,
2073                _("Print the current stack frame.\n"));
2074       add_com_alias ("V", "frame", class_stack, 1);
2075     }
2076   add_com ("select-frame", class_stack, select_frame_command, _("\
2077 Select a stack frame without printing anything.\n\
2078 An argument specifies the frame to select.\n\
2079 It can be a stack frame number or the address of the frame.\n"));
2080
2081   add_com ("backtrace", class_stack, backtrace_command, _("\
2082 Print backtrace of all stack frames, or innermost COUNT frames.\n\
2083 With a negative argument, print outermost -COUNT frames.\n\
2084 Use of the 'full' qualifier also prints the values of the local variables.\n"));
2085   add_com_alias ("bt", "backtrace", class_stack, 0);
2086   if (xdb_commands)
2087     {
2088       add_com_alias ("t", "backtrace", class_stack, 0);
2089       add_com ("T", class_stack, backtrace_full_command, _("\
2090 Print backtrace of all stack frames, or innermost COUNT frames \n\
2091 and the values of the local variables.\n\
2092 With a negative argument, print outermost -COUNT frames.\n\
2093 Usage: T <count>\n"));
2094     }
2095
2096   add_com_alias ("where", "backtrace", class_alias, 0);
2097   add_info ("stack", backtrace_command,
2098             _("Backtrace of the stack, or innermost COUNT frames."));
2099   add_info_alias ("s", "stack", 1);
2100   add_info ("frame", frame_info,
2101             _("All about selected stack frame, or frame at ADDR."));
2102   add_info_alias ("f", "frame", 1);
2103   add_info ("locals", locals_info,
2104             _("Local variables of current stack frame."));
2105   add_info ("args", args_info,
2106             _("Argument variables of current stack frame."));
2107   if (xdb_commands)
2108     add_com ("l", class_info, args_plus_locals_info,
2109              _("Argument and local variables of current stack frame."));
2110
2111   if (dbx_commands)
2112     add_com ("func", class_stack, func_command, _("\
2113 Select the stack frame that contains <func>.\n\
2114 Usage: func <name>\n"));
2115
2116   add_info ("catch", catch_info,
2117             _("Exceptions that can be caught in the current stack frame."));
2118
2119   add_setshow_enum_cmd ("frame-arguments", class_stack,
2120                         print_frame_arguments_choices, &print_frame_arguments,
2121                         _("Set printing of non-scalar frame arguments"),
2122                         _("Show printing of non-scalar frame arguments"),
2123                         NULL, NULL, NULL, &setprintlist, &showprintlist);
2124
2125   add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
2126                                 &disassemble_next_line, _("\
2127 Set whether to disassemble next source line or insn when execution stops."), _("\
2128 Show whether to disassemble next source line or insn when execution stops."), _("\
2129 If ON, GDB will display disassembly of the next source line, in addition\n\
2130 to displaying the source line itself.  If the next source line cannot\n\
2131 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2132 will display disassembly of next instruction instead of showing the\n\
2133 source line.\n\
2134 If AUTO, display disassembly of next instruction only if the source line\n\
2135 cannot be displayed.\n\
2136 If OFF (which is the default), never display the disassembly of the next\n\
2137 source line."),
2138                                 NULL,
2139                                 show_disassemble_next_line,
2140                                 &setlist, &showlist);
2141   disassemble_next_line = AUTO_BOOLEAN_FALSE;
2142
2143 #if 0
2144   add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command, _(\
2145 "Specify maximum number of frames for \"backtrace\" to print by default."),
2146            &setlist);
2147   add_info ("backtrace-limit", backtrace_limit_info, _("\
2148 The maximum number of frames for \"backtrace\" to print by default."));
2149 #endif
2150 }