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