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