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