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