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