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