constify deprecate_cmd
[platform/upstream/binutils.git] / gdb / stack.c
1 /* Print and select stack frames for GDB, the GNU debugger.
2
3    Copyright (C) 1986-2014 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "value.h"
22 #include "symtab.h"
23 #include "gdbtypes.h"
24 #include "expression.h"
25 #include "language.h"
26 #include "frame.h"
27 #include "gdbcmd.h"
28 #include "gdbcore.h"
29 #include "target.h"
30 #include "source.h"
31 #include "breakpoint.h"
32 #include "demangle.h"
33 #include "inferior.h"
34 #include "annotate.h"
35 #include "ui-out.h"
36 #include "block.h"
37 #include "stack.h"
38 #include "dictionary.h"
39 #include "exceptions.h"
40 #include "reggroups.h"
41 #include "regcache.h"
42 #include "solib.h"
43 #include "valprint.h"
44 #include "gdbthread.h"
45 #include "cp-support.h"
46 #include "disasm.h"
47 #include "inline-frame.h"
48 #include "linespec.h"
49 #include "cli/cli-utils.h"
50 #include "objfiles.h"
51
52 #include "gdb_assert.h"
53 #include <ctype.h>
54 #include <string.h>
55
56 #include "symfile.h"
57 #include "extension.h"
58
59 void (*deprecated_selected_frame_level_changed_hook) (int);
60
61 /* The possible choices of "set print frame-arguments", and the value
62    of this setting.  */
63
64 static const char *const print_frame_arguments_choices[] =
65   {"all", "scalars", "none", NULL};
66 static const char *print_frame_arguments = "scalars";
67
68 /* If non-zero, don't invoke pretty-printers for frame arguments.  */
69 static int print_raw_frame_arguments;
70
71 /* The possible choices of "set print entry-values", and the value
72    of this setting.  */
73
74 const char print_entry_values_no[] = "no";
75 const char print_entry_values_only[] = "only";
76 const char print_entry_values_preferred[] = "preferred";
77 const char print_entry_values_if_needed[] = "if-needed";
78 const char print_entry_values_both[] = "both";
79 const char print_entry_values_compact[] = "compact";
80 const char print_entry_values_default[] = "default";
81 static const char *const print_entry_values_choices[] =
82 {
83   print_entry_values_no,
84   print_entry_values_only,
85   print_entry_values_preferred,
86   print_entry_values_if_needed,
87   print_entry_values_both,
88   print_entry_values_compact,
89   print_entry_values_default,
90   NULL
91 };
92 const char *print_entry_values = print_entry_values_default;
93
94 /* Prototypes for local functions.  */
95
96 static void print_frame_local_vars (struct frame_info *, int,
97                                     struct ui_file *);
98
99 static void print_frame (struct frame_info *frame, int print_level,
100                          enum print_what print_what,  int print_args,
101                          struct symtab_and_line sal);
102
103 static void set_last_displayed_sal (int valid,
104                                     struct program_space *pspace,
105                                     CORE_ADDR addr,
106                                     struct symtab *symtab,
107                                     int line);
108
109 /* Zero means do things normally; we are interacting directly with the
110    user.  One means print the full filename and linenumber when a
111    frame is printed, and do so in a format emacs18/emacs19.22 can
112    parse.  Two means print similar annotations, but in many more
113    cases and in a slightly different syntax.  */
114
115 int annotation_level = 0;
116
117 /* These variables hold the last symtab and line we displayed to the user.
118  * This is where we insert a breakpoint or a skiplist entry by default.  */
119 static int last_displayed_sal_valid = 0;
120 static struct program_space *last_displayed_pspace = 0;
121 static CORE_ADDR last_displayed_addr = 0;
122 static struct symtab *last_displayed_symtab = 0;
123 static int last_displayed_line = 0;
124 \f
125
126 /* Return 1 if we should display the address in addition to the location,
127    because we are in the middle of a statement.  */
128
129 static int
130 frame_show_address (struct frame_info *frame,
131                     struct symtab_and_line sal)
132 {
133   /* If there is a line number, but no PC, then there is no location
134      information associated with this sal.  The only way that should
135      happen is for the call sites of inlined functions (SAL comes from
136      find_frame_sal).  Otherwise, we would have some PC range if the
137      SAL came from a line table.  */
138   if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
139     {
140       if (get_next_frame (frame) == NULL)
141         gdb_assert (inline_skipped_frames (inferior_ptid) > 0);
142       else
143         gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
144       return 0;
145     }
146
147   return get_frame_pc (frame) != sal.pc;
148 }
149
150 /* Show or print a stack frame FRAME briefly.  The output is format
151    according to PRINT_LEVEL and PRINT_WHAT printing the frame's
152    relative level, function name, argument list, and file name and
153    line number.  If the frame's PC is not at the beginning of the
154    source line, the actual PC is printed at the beginning.  */
155
156 void
157 print_stack_frame (struct frame_info *frame, int print_level,
158                    enum print_what print_what,
159                    int set_current_sal)
160 {
161   volatile struct gdb_exception e;
162
163   /* For mi, alway print location and address.  */
164   if (ui_out_is_mi_like_p (current_uiout))
165     print_what = LOC_AND_ADDRESS;
166
167   TRY_CATCH (e, RETURN_MASK_ERROR)
168     {
169       print_frame_info (frame, print_level, print_what, 1 /* print_args */,
170                         set_current_sal);
171       if (set_current_sal)
172         set_current_sal_from_frame (frame);
173     }
174 }
175
176 /* Print nameless arguments of frame FRAME on STREAM, where START is
177    the offset of the first nameless argument, and NUM is the number of
178    nameless arguments to print.  FIRST is nonzero if this is the first
179    argument (not just the first nameless argument).  */
180
181 static void
182 print_frame_nameless_args (struct frame_info *frame, long start, int num,
183                            int first, struct ui_file *stream)
184 {
185   struct gdbarch *gdbarch = get_frame_arch (frame);
186   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
187   int i;
188   CORE_ADDR argsaddr;
189   long arg_value;
190
191   for (i = 0; i < num; i++)
192     {
193       QUIT;
194       argsaddr = get_frame_args_address (frame);
195       if (!argsaddr)
196         return;
197       arg_value = read_memory_integer (argsaddr + start,
198                                        sizeof (int), byte_order);
199       if (!first)
200         fprintf_filtered (stream, ", ");
201       fprintf_filtered (stream, "%ld", arg_value);
202       first = 0;
203       start += sizeof (int);
204     }
205 }
206
207 /* Print single argument of inferior function.  ARG must be already
208    read in.
209
210    Errors are printed as if they would be the parameter value.  Use zeroed ARG
211    iff it should not be printed accoring to user settings.  */
212
213 static void
214 print_frame_arg (const struct frame_arg *arg)
215 {
216   struct ui_out *uiout = current_uiout;
217   volatile struct gdb_exception except;
218   struct cleanup *old_chain;
219   struct ui_file *stb;
220
221   stb = mem_fileopen ();
222   old_chain = make_cleanup_ui_file_delete (stb);
223
224   gdb_assert (!arg->val || !arg->error);
225   gdb_assert (arg->entry_kind == print_entry_values_no
226               || arg->entry_kind == print_entry_values_only
227               || (!ui_out_is_mi_like_p (uiout)
228                   && arg->entry_kind == print_entry_values_compact));
229
230   annotate_arg_begin ();
231
232   make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
233   fprintf_symbol_filtered (stb, SYMBOL_PRINT_NAME (arg->sym),
234                            SYMBOL_LANGUAGE (arg->sym), DMGL_PARAMS | DMGL_ANSI);
235   if (arg->entry_kind == print_entry_values_compact)
236     {
237       /* It is OK to provide invalid MI-like stream as with
238          PRINT_ENTRY_VALUE_COMPACT we never use MI.  */
239       fputs_filtered ("=", stb);
240
241       fprintf_symbol_filtered (stb, SYMBOL_PRINT_NAME (arg->sym),
242                                SYMBOL_LANGUAGE (arg->sym),
243                                DMGL_PARAMS | DMGL_ANSI);
244     }
245   if (arg->entry_kind == print_entry_values_only
246       || arg->entry_kind == print_entry_values_compact)
247     fputs_filtered ("@entry", stb);
248   ui_out_field_stream (uiout, "name", stb);
249   annotate_arg_name_end ();
250   ui_out_text (uiout, "=");
251
252   if (!arg->val && !arg->error)
253     ui_out_text (uiout, "...");
254   else
255     {
256       if (arg->error)
257         except.message = arg->error;
258       else
259         {
260           /* TRY_CATCH has two statements, wrap it in a block.  */
261
262           TRY_CATCH (except, RETURN_MASK_ERROR)
263             {
264               const struct language_defn *language;
265               struct value_print_options opts;
266
267               /* Avoid value_print because it will deref ref parameters.  We
268                  just want to print their addresses.  Print ??? for args whose
269                  address we do not know.  We pass 2 as "recurse" to val_print
270                  because our standard indentation here is 4 spaces, and
271                  val_print indents 2 for each recurse.  */ 
272
273               annotate_arg_value (value_type (arg->val));
274
275               /* Use the appropriate language to display our symbol, unless the
276                  user forced the language to a specific language.  */
277               if (language_mode == language_mode_auto)
278                 language = language_def (SYMBOL_LANGUAGE (arg->sym));
279               else
280                 language = current_language;
281
282               get_no_prettyformat_print_options (&opts);
283               opts.deref_ref = 1;
284               opts.raw = print_raw_frame_arguments;
285
286               /* True in "summary" mode, false otherwise.  */
287               opts.summary = !strcmp (print_frame_arguments, "scalars");
288
289               common_val_print (arg->val, stb, 2, &opts, language);
290             }
291         }
292       if (except.message)
293         fprintf_filtered (stb, _("<error reading variable: %s>"),
294                           except.message);
295     }
296
297   ui_out_field_stream (uiout, "value", stb);
298
299   /* Also invoke ui_out_tuple_end.  */
300   do_cleanups (old_chain);
301
302   annotate_arg_end ();
303 }
304
305 /* Read in inferior function local SYM at FRAME into ARGP.  Caller is
306    responsible for xfree of ARGP->ERROR.  This function never throws an
307    exception.  */
308
309 void
310 read_frame_local (struct symbol *sym, struct frame_info *frame,
311                   struct frame_arg *argp)
312 {
313   volatile struct gdb_exception except;
314   struct value *val = NULL;
315
316   TRY_CATCH (except, RETURN_MASK_ERROR)
317     {
318       val = read_var_value (sym, frame);
319     }
320
321   argp->error = (val == NULL) ? xstrdup (except.message) : NULL;
322   argp->sym = sym;
323   argp->val = val;
324 }
325
326 /* Read in inferior function parameter SYM at FRAME into ARGP.  Caller is
327    responsible for xfree of ARGP->ERROR.  This function never throws an
328    exception.  */
329
330 void
331 read_frame_arg (struct symbol *sym, struct frame_info *frame,
332                 struct frame_arg *argp, struct frame_arg *entryargp)
333 {
334   struct value *val = NULL, *entryval = NULL;
335   char *val_error = NULL, *entryval_error = NULL;
336   int val_equal = 0;
337   volatile struct gdb_exception except;
338
339   if (print_entry_values != print_entry_values_only
340       && print_entry_values != print_entry_values_preferred)
341     {
342       TRY_CATCH (except, RETURN_MASK_ERROR)
343         {
344           val = read_var_value (sym, frame);
345         }
346       if (!val)
347         {
348           val_error = alloca (strlen (except.message) + 1);
349           strcpy (val_error, except.message);
350         }
351     }
352
353   if (SYMBOL_COMPUTED_OPS (sym) != NULL
354       && SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry != NULL
355       && print_entry_values != print_entry_values_no
356       && (print_entry_values != print_entry_values_if_needed
357           || !val || value_optimized_out (val)))
358     {
359       TRY_CATCH (except, RETURN_MASK_ERROR)
360         {
361           const struct symbol_computed_ops *ops;
362
363           ops = SYMBOL_COMPUTED_OPS (sym);
364           entryval = ops->read_variable_at_entry (sym, frame);
365         }
366       if (!entryval)
367         {
368           entryval_error = alloca (strlen (except.message) + 1);
369           strcpy (entryval_error, except.message);
370         }
371
372       if (except.error == NO_ENTRY_VALUE_ERROR
373           || (entryval && value_optimized_out (entryval)))
374         {
375           entryval = NULL;
376           entryval_error = NULL;
377         }
378
379       if (print_entry_values == print_entry_values_compact
380           || print_entry_values == print_entry_values_default)
381         {
382           /* For MI do not try to use print_entry_values_compact for ARGP.  */
383
384           if (val && entryval && !ui_out_is_mi_like_p (current_uiout))
385             {
386               struct type *type = value_type (val);
387
388               if (!value_optimized_out (val)
389                   && value_available_contents_eq (val, 0, entryval, 0,
390                                                   TYPE_LENGTH (type)))
391                 {
392                   /* Initialize it just to avoid a GCC false warning.  */
393                   struct value *val_deref = NULL, *entryval_deref;
394
395                   /* DW_AT_GNU_call_site_value does match with the current
396                      value.  If it is a reference still try to verify if
397                      dereferenced DW_AT_GNU_call_site_data_value does not
398                      differ.  */
399
400                   TRY_CATCH (except, RETURN_MASK_ERROR)
401                     {
402                       struct type *type_deref;
403
404                       val_deref = coerce_ref (val);
405                       if (value_lazy (val_deref))
406                         value_fetch_lazy (val_deref);
407                       type_deref = value_type (val_deref);
408
409                       entryval_deref = coerce_ref (entryval);
410                       if (value_lazy (entryval_deref))
411                         value_fetch_lazy (entryval_deref);
412
413                       /* If the reference addresses match but dereferenced
414                          content does not match print them.  */
415                       if (val != val_deref
416                           && !value_optimized_out (val_deref)
417                           && !value_optimized_out (entryval_deref)
418                           && value_available_contents_eq (val_deref, 0,
419                                                           entryval_deref, 0,
420                                                       TYPE_LENGTH (type_deref)))
421                         val_equal = 1;
422                     }
423
424                   /* Value was not a reference; and its content matches.  */
425                   if (val == val_deref)
426                     val_equal = 1;
427                   /* If the dereferenced content could not be fetched do not
428                      display anything.  */
429                   else if (except.error == NO_ENTRY_VALUE_ERROR)
430                     val_equal = 1;
431                   else if (except.message)
432                     {
433                       entryval_error = alloca (strlen (except.message) + 1);
434                       strcpy (entryval_error, except.message);
435                     }
436
437                   if (val_equal)
438                     entryval = NULL;
439                 }
440             }
441
442           /* Try to remove possibly duplicate error message for ENTRYARGP even
443              in MI mode.  */
444
445           if (val_error && entryval_error
446               && strcmp (val_error, entryval_error) == 0)
447             {
448               entryval_error = NULL;
449
450               /* Do not se VAL_EQUAL as the same error message may be shown for
451                  the entry value even if no entry values are present in the
452                  inferior.  */
453             }
454         }
455     }
456
457   if (entryval == NULL)
458     {
459       if (print_entry_values == print_entry_values_preferred)
460         {
461           TRY_CATCH (except, RETURN_MASK_ERROR)
462             {
463               val = read_var_value (sym, frame);
464             }
465           if (!val)
466             {
467               val_error = alloca (strlen (except.message) + 1);
468               strcpy (val_error, except.message);
469             }
470         }
471       if (print_entry_values == print_entry_values_only
472           || print_entry_values == print_entry_values_both
473           || (print_entry_values == print_entry_values_preferred
474               && (!val || value_optimized_out (val))))
475         {
476           entryval = allocate_optimized_out_value (SYMBOL_TYPE (sym));
477           entryval_error = NULL;
478         }
479     }
480   if ((print_entry_values == print_entry_values_compact
481        || print_entry_values == print_entry_values_if_needed
482        || print_entry_values == print_entry_values_preferred)
483       && (!val || value_optimized_out (val)) && entryval != NULL)
484     {
485       val = NULL;
486       val_error = NULL;
487     }
488
489   argp->sym = sym;
490   argp->val = val;
491   argp->error = val_error ? xstrdup (val_error) : NULL;
492   if (!val && !val_error)
493     argp->entry_kind = print_entry_values_only;
494   else if ((print_entry_values == print_entry_values_compact
495            || print_entry_values == print_entry_values_default) && val_equal)
496     {
497       argp->entry_kind = print_entry_values_compact;
498       gdb_assert (!ui_out_is_mi_like_p (current_uiout));
499     }
500   else
501     argp->entry_kind = print_entry_values_no;
502
503   entryargp->sym = sym;
504   entryargp->val = entryval;
505   entryargp->error = entryval_error ? xstrdup (entryval_error) : NULL;
506   if (!entryval && !entryval_error)
507     entryargp->entry_kind = print_entry_values_no;
508   else
509     entryargp->entry_kind = print_entry_values_only;
510 }
511
512 /* Print the arguments of frame FRAME on STREAM, given the function
513    FUNC running in that frame (as a symbol), where NUM is the number
514    of arguments according to the stack frame (or -1 if the number of
515    arguments is unknown).  */
516
517 /* Note that currently the "number of arguments according to the
518    stack frame" is only known on VAX where i refers to the "number of
519    ints of arguments according to the stack frame".  */
520
521 static void
522 print_frame_args (struct symbol *func, struct frame_info *frame,
523                   int num, struct ui_file *stream)
524 {
525   struct ui_out *uiout = current_uiout;
526   int first = 1;
527   /* Offset of next stack argument beyond the one we have seen that is
528      at the highest offset, or -1 if we haven't come to a stack
529      argument yet.  */
530   long highest_offset = -1;
531   /* Number of ints of arguments that we have printed so far.  */
532   int args_printed = 0;
533   struct cleanup *old_chain;
534   struct ui_file *stb;
535   /* True if we should print arguments, false otherwise.  */
536   int print_args = strcmp (print_frame_arguments, "none");
537
538   stb = mem_fileopen ();
539   old_chain = make_cleanup_ui_file_delete (stb);
540
541   if (func)
542     {
543       const struct block *b = SYMBOL_BLOCK_VALUE (func);
544       struct block_iterator iter;
545       struct symbol *sym;
546
547       ALL_BLOCK_SYMBOLS (b, iter, sym)
548         {
549           struct frame_arg arg, entryarg;
550
551           QUIT;
552
553           /* Keep track of the highest stack argument offset seen, and
554              skip over any kinds of symbols we don't care about.  */
555
556           if (!SYMBOL_IS_ARGUMENT (sym))
557             continue;
558
559           switch (SYMBOL_CLASS (sym))
560             {
561             case LOC_ARG:
562             case LOC_REF_ARG:
563               {
564                 long current_offset = SYMBOL_VALUE (sym);
565                 int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
566
567                 /* Compute address of next argument by adding the size of
568                    this argument and rounding to an int boundary.  */
569                 current_offset =
570                   ((current_offset + arg_size + sizeof (int) - 1)
571                    & ~(sizeof (int) - 1));
572
573                 /* If this is the highest offset seen yet, set
574                    highest_offset.  */
575                 if (highest_offset == -1
576                     || (current_offset > highest_offset))
577                   highest_offset = current_offset;
578
579                 /* Add the number of ints we're about to print to
580                    args_printed.  */
581                 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
582               }
583
584               /* We care about types of symbols, but don't need to
585                  keep track of stack offsets in them.  */
586             case LOC_REGISTER:
587             case LOC_REGPARM_ADDR:
588             case LOC_COMPUTED:
589             case LOC_OPTIMIZED_OUT:
590             default:
591               break;
592             }
593
594           /* We have to look up the symbol because arguments can have
595              two entries (one a parameter, one a local) and the one we
596              want is the local, which lookup_symbol will find for us.
597              This includes gcc1 (not gcc2) on SPARC when passing a
598              small structure and gcc2 when the argument type is float
599              and it is passed as a double and converted to float by
600              the prologue (in the latter case the type of the LOC_ARG
601              symbol is double and the type of the LOC_LOCAL symbol is
602              float).  */
603           /* But if the parameter name is null, don't try it.  Null
604              parameter names occur on the RS/6000, for traceback
605              tables.  FIXME, should we even print them?  */
606
607           if (*SYMBOL_LINKAGE_NAME (sym))
608             {
609               struct symbol *nsym;
610
611               nsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
612                                     b, VAR_DOMAIN, NULL);
613               gdb_assert (nsym != NULL);
614               if (SYMBOL_CLASS (nsym) == LOC_REGISTER
615                   && !SYMBOL_IS_ARGUMENT (nsym))
616                 {
617                   /* There is a LOC_ARG/LOC_REGISTER pair.  This means
618                      that it was passed on the stack and loaded into a
619                      register, or passed in a register and stored in a
620                      stack slot.  GDB 3.x used the LOC_ARG; GDB
621                      4.0-4.11 used the LOC_REGISTER.
622
623                      Reasons for using the LOC_ARG:
624
625                      (1) Because find_saved_registers may be slow for
626                          remote debugging.
627
628                      (2) Because registers are often re-used and stack
629                          slots rarely (never?) are.  Therefore using
630                          the stack slot is much less likely to print
631                          garbage.
632
633                      Reasons why we might want to use the LOC_REGISTER:
634
635                      (1) So that the backtrace prints the same value
636                          as "print foo".  I see no compelling reason
637                          why this needs to be the case; having the
638                          backtrace print the value which was passed
639                          in, and "print foo" print the value as
640                          modified within the called function, makes
641                          perfect sense to me.
642
643                      Additional note: It might be nice if "info args"
644                      displayed both values.
645
646                      One more note: There is a case with SPARC
647                      structure passing where we need to use the
648                      LOC_REGISTER, but this is dealt with by creating
649                      a single LOC_REGPARM in symbol reading.  */
650
651                   /* Leave sym (the LOC_ARG) alone.  */
652                   ;
653                 }
654               else
655                 sym = nsym;
656             }
657
658           /* Print the current arg.  */
659           if (!first)
660             ui_out_text (uiout, ", ");
661           ui_out_wrap_hint (uiout, "    ");
662
663           if (!print_args)
664             {
665               memset (&arg, 0, sizeof (arg));
666               arg.sym = sym;
667               arg.entry_kind = print_entry_values_no;
668               memset (&entryarg, 0, sizeof (entryarg));
669               entryarg.sym = sym;
670               entryarg.entry_kind = print_entry_values_no;
671             }
672           else
673             read_frame_arg (sym, frame, &arg, &entryarg);
674
675           if (arg.entry_kind != print_entry_values_only)
676             print_frame_arg (&arg);
677
678           if (entryarg.entry_kind != print_entry_values_no)
679             {
680               if (arg.entry_kind != print_entry_values_only)
681                 {
682                   ui_out_text (uiout, ", ");
683                   ui_out_wrap_hint (uiout, "    ");
684                 }
685
686               print_frame_arg (&entryarg);
687             }
688
689           xfree (arg.error);
690           xfree (entryarg.error);
691
692           first = 0;
693         }
694     }
695
696   /* Don't print nameless args in situations where we don't know
697      enough about the stack to find them.  */
698   if (num != -1)
699     {
700       long start;
701
702       if (highest_offset == -1)
703         start = gdbarch_frame_args_skip (get_frame_arch (frame));
704       else
705         start = highest_offset;
706
707       print_frame_nameless_args (frame, start, num - args_printed,
708                                  first, stream);
709     }
710
711   do_cleanups (old_chain);
712 }
713
714 /* Set the current source and line to the location given by frame
715    FRAME, if possible.  When CENTER is true, adjust so the relevant
716    line is in the center of the next 'list'.  */
717
718 void
719 set_current_sal_from_frame (struct frame_info *frame)
720 {
721   struct symtab_and_line sal;
722
723   find_frame_sal (frame, &sal);
724   if (sal.symtab != NULL)
725     set_current_source_symtab_and_line (&sal);
726 }
727
728 /* If ON, GDB will display disassembly of the next source line when
729    execution of the program being debugged stops.
730    If AUTO (which is the default), or there's no line info to determine
731    the source line of the next instruction, display disassembly of next
732    instruction instead.  */
733
734 static enum auto_boolean disassemble_next_line;
735
736 static void
737 show_disassemble_next_line (struct ui_file *file, int from_tty,
738                                  struct cmd_list_element *c,
739                                  const char *value)
740 {
741   fprintf_filtered (file,
742                     _("Debugger's willingness to use "
743                       "disassemble-next-line is %s.\n"),
744                     value);
745 }
746
747 /* Use TRY_CATCH to catch the exception from the gdb_disassembly
748    because it will be broken by filter sometime.  */
749
750 static void
751 do_gdb_disassembly (struct gdbarch *gdbarch,
752                     int how_many, CORE_ADDR low, CORE_ADDR high)
753 {
754   volatile struct gdb_exception exception;
755
756   TRY_CATCH (exception, RETURN_MASK_ERROR)
757     {
758       gdb_disassembly (gdbarch, current_uiout, 0,
759                        DISASSEMBLY_RAW_INSN, how_many,
760                        low, high);
761     }
762   if (exception.reason < 0)
763     {
764       /* If an exception was thrown while doing the disassembly, print
765          the error message, to give the user a clue of what happened.  */
766       exception_print (gdb_stderr, exception);
767     }
768 }
769
770 /* Print information about frame FRAME.  The output is format according
771    to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS.  The meaning of
772    PRINT_WHAT is:
773    
774    SRC_LINE: Print only source line.
775    LOCATION: Print only location.
776    LOC_AND_SRC: Print location and source line.
777
778    Used in "where" output, and to emit breakpoint or step
779    messages.  */
780
781 void
782 print_frame_info (struct frame_info *frame, int print_level,
783                   enum print_what print_what, int print_args,
784                   int set_current_sal)
785 {
786   struct gdbarch *gdbarch = get_frame_arch (frame);
787   struct symtab_and_line sal;
788   int source_print;
789   int location_print;
790   struct ui_out *uiout = current_uiout;
791
792   if (get_frame_type (frame) == DUMMY_FRAME
793       || get_frame_type (frame) == SIGTRAMP_FRAME
794       || get_frame_type (frame) == ARCH_FRAME)
795     {
796       struct cleanup *uiout_cleanup
797         = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
798
799       annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
800                             gdbarch, get_frame_pc (frame));
801
802       /* Do this regardless of SOURCE because we don't have any source
803          to list for this frame.  */
804       if (print_level)
805         {
806           ui_out_text (uiout, "#");
807           ui_out_field_fmt_int (uiout, 2, ui_left, "level",
808                                 frame_relative_level (frame));
809         }
810       if (ui_out_is_mi_like_p (uiout))
811         {
812           annotate_frame_address ();
813           ui_out_field_core_addr (uiout, "addr",
814                                   gdbarch, get_frame_pc (frame));
815           annotate_frame_address_end ();
816         }
817
818       if (get_frame_type (frame) == DUMMY_FRAME)
819         {
820           annotate_function_call ();
821           ui_out_field_string (uiout, "func", "<function called from gdb>");
822         }
823       else if (get_frame_type (frame) == SIGTRAMP_FRAME)
824         {
825           annotate_signal_handler_caller ();
826           ui_out_field_string (uiout, "func", "<signal handler called>");
827         }
828       else if (get_frame_type (frame) == ARCH_FRAME)
829         {
830           ui_out_field_string (uiout, "func", "<cross-architecture call>");
831         }
832       ui_out_text (uiout, "\n");
833       annotate_frame_end ();
834
835       /* If disassemble-next-line is set to auto or on output the next
836          instruction.  */
837       if (disassemble_next_line == AUTO_BOOLEAN_AUTO
838           || disassemble_next_line == AUTO_BOOLEAN_TRUE)
839         do_gdb_disassembly (get_frame_arch (frame), 1,
840                             get_frame_pc (frame), get_frame_pc (frame) + 1);
841
842       do_cleanups (uiout_cleanup);
843       return;
844     }
845
846   /* If FRAME is not the innermost frame, that normally means that
847      FRAME->pc points to *after* the call instruction, and we want to
848      get the line containing the call, never the next line.  But if
849      the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
850      next frame was not entered as the result of a call, and we want
851      to get the line containing FRAME->pc.  */
852   find_frame_sal (frame, &sal);
853
854   location_print = (print_what == LOCATION 
855                     || print_what == LOC_AND_ADDRESS
856                     || print_what == SRC_AND_LOC);
857
858   if (location_print || !sal.symtab)
859     print_frame (frame, print_level, print_what, print_args, sal);
860
861   source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
862
863   /* If disassemble-next-line is set to auto or on and doesn't have
864      the line debug messages for $pc, output the next instruction.  */
865   if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
866        || disassemble_next_line == AUTO_BOOLEAN_TRUE)
867       && source_print && !sal.symtab)
868     do_gdb_disassembly (get_frame_arch (frame), 1,
869                         get_frame_pc (frame), get_frame_pc (frame) + 1);
870
871   if (source_print && sal.symtab)
872     {
873       int done = 0;
874       int mid_statement = ((print_what == SRC_LINE)
875                            && frame_show_address (frame, sal));
876
877       if (annotation_level)
878         done = identify_source_line (sal.symtab, sal.line, mid_statement,
879                                      get_frame_pc (frame));
880       if (!done)
881         {
882           if (deprecated_print_frame_info_listing_hook)
883             deprecated_print_frame_info_listing_hook (sal.symtab, 
884                                                       sal.line, 
885                                                       sal.line + 1, 0);
886           else
887             {
888               struct value_print_options opts;
889
890               get_user_print_options (&opts);
891               /* We used to do this earlier, but that is clearly
892                  wrong.  This function is used by many different
893                  parts of gdb, including normal_stop in infrun.c,
894                  which uses this to print out the current PC
895                  when we stepi/nexti into the middle of a source
896                  line.  Only the command line really wants this
897                  behavior.  Other UIs probably would like the
898                  ability to decide for themselves if it is desired.  */
899               if (opts.addressprint && mid_statement)
900                 {
901                   ui_out_field_core_addr (uiout, "addr",
902                                           gdbarch, get_frame_pc (frame));
903                   ui_out_text (uiout, "\t");
904                 }
905
906               print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
907             }
908         }
909
910       /* If disassemble-next-line is set to on and there is line debug
911          messages, output assembly codes for next line.  */
912       if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
913         do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
914     }
915
916   if (set_current_sal)
917     {
918       CORE_ADDR pc;
919
920       if (get_frame_pc_if_available (frame, &pc))
921         set_last_displayed_sal (1, sal.pspace, pc, sal.symtab, sal.line);
922       else
923         set_last_displayed_sal (0, 0, 0, 0, 0);
924     }
925
926   annotate_frame_end ();
927
928   gdb_flush (gdb_stdout);
929 }
930
931 /* Remember the last symtab and line we displayed, which we use e.g.
932  * as the place to put a breakpoint when the `break' command is
933  * invoked with no arguments.  */
934
935 static void
936 set_last_displayed_sal (int valid, struct program_space *pspace,
937                         CORE_ADDR addr, struct symtab *symtab,
938                         int line)
939 {
940   last_displayed_sal_valid = valid;
941   last_displayed_pspace = pspace;
942   last_displayed_addr = addr;
943   last_displayed_symtab = symtab;
944   last_displayed_line = line;
945   if (valid && pspace == NULL)
946     {
947       clear_last_displayed_sal ();
948       internal_error (__FILE__, __LINE__,
949                       _("Trying to set NULL pspace."));
950     }
951 }
952
953 /* Forget the last sal we displayed.  */
954
955 void
956 clear_last_displayed_sal (void)
957 {
958   last_displayed_sal_valid = 0;
959   last_displayed_pspace = 0;
960   last_displayed_addr = 0;
961   last_displayed_symtab = 0;
962   last_displayed_line = 0;
963 }
964
965 /* Is our record of the last sal we displayed valid?  If not,
966  * the get_last_displayed_* functions will return NULL or 0, as
967  * appropriate.  */
968
969 int
970 last_displayed_sal_is_valid (void)
971 {
972   return last_displayed_sal_valid;
973 }
974
975 /* Get the pspace of the last sal we displayed, if it's valid.  */
976
977 struct program_space *
978 get_last_displayed_pspace (void)
979 {
980   if (last_displayed_sal_valid)
981     return last_displayed_pspace;
982   return 0;
983 }
984
985 /* Get the address of the last sal we displayed, if it's valid.  */
986
987 CORE_ADDR
988 get_last_displayed_addr (void)
989 {
990   if (last_displayed_sal_valid)
991     return last_displayed_addr;
992   return 0;
993 }
994
995 /* Get the symtab of the last sal we displayed, if it's valid.  */
996
997 struct symtab*
998 get_last_displayed_symtab (void)
999 {
1000   if (last_displayed_sal_valid)
1001     return last_displayed_symtab;
1002   return 0;
1003 }
1004
1005 /* Get the line of the last sal we displayed, if it's valid.  */
1006
1007 int
1008 get_last_displayed_line (void)
1009 {
1010   if (last_displayed_sal_valid)
1011     return last_displayed_line;
1012   return 0;
1013 }
1014
1015 /* Get the last sal we displayed, if it's valid.  */
1016
1017 void
1018 get_last_displayed_sal (struct symtab_and_line *sal)
1019 {
1020   if (last_displayed_sal_valid)
1021     {
1022       sal->pspace = last_displayed_pspace;
1023       sal->pc = last_displayed_addr;
1024       sal->symtab = last_displayed_symtab;
1025       sal->line = last_displayed_line;
1026     }
1027   else
1028     {
1029       sal->pspace = 0;
1030       sal->pc = 0;
1031       sal->symtab = 0;
1032       sal->line = 0;
1033     }
1034 }
1035
1036
1037 /* Attempt to obtain the FUNNAME, FUNLANG and optionally FUNCP of the function
1038    corresponding to FRAME.  FUNNAME needs to be freed by the caller.  */
1039
1040 void
1041 find_frame_funname (struct frame_info *frame, char **funname,
1042                     enum language *funlang, struct symbol **funcp)
1043 {
1044   struct symbol *func;
1045
1046   *funname = NULL;
1047   *funlang = language_unknown;
1048   if (funcp)
1049     *funcp = NULL;
1050
1051   func = get_frame_function (frame);
1052   if (func)
1053     {
1054       /* In certain pathological cases, the symtabs give the wrong
1055          function (when we are in the first function in a file which
1056          is compiled without debugging symbols, the previous function
1057          is compiled with debugging symbols, and the "foo.o" symbol
1058          that is supposed to tell us where the file with debugging
1059          symbols ends has been truncated by ar because it is longer
1060          than 15 characters).  This also occurs if the user uses asm()
1061          to create a function but not stabs for it (in a file compiled
1062          with -g).
1063
1064          So look in the minimal symbol tables as well, and if it comes
1065          up with a larger address for the function use that instead.
1066          I don't think this can ever cause any problems; there
1067          shouldn't be any minimal symbols in the middle of a function;
1068          if this is ever changed many parts of GDB will need to be
1069          changed (and we'll create a find_pc_minimal_function or some
1070          such).  */
1071
1072       struct bound_minimal_symbol msymbol;
1073
1074       /* Don't attempt to do this for inlined functions, which do not
1075          have a corresponding minimal symbol.  */
1076       if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
1077         msymbol
1078           = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
1079       else
1080         memset (&msymbol, 0, sizeof (msymbol));
1081
1082       if (msymbol.minsym != NULL
1083           && (BMSYMBOL_VALUE_ADDRESS (msymbol)
1084               > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
1085         {
1086           /* We also don't know anything about the function besides
1087              its address and name.  */
1088           func = 0;
1089           *funname = xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym));
1090           *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1091         }
1092       else
1093         {
1094           *funname = xstrdup (SYMBOL_PRINT_NAME (func));
1095           *funlang = SYMBOL_LANGUAGE (func);
1096           if (funcp)
1097             *funcp = func;
1098           if (*funlang == language_cplus)
1099             {
1100               /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1101                  to display the demangled name that we already have
1102                  stored in the symbol table, but we stored a version
1103                  with DMGL_PARAMS turned on, and here we don't want to
1104                  display parameters.  So remove the parameters.  */
1105               char *func_only = cp_remove_params (*funname);
1106
1107               if (func_only)
1108                 {
1109                   xfree (*funname);
1110                   *funname = func_only;
1111                 }
1112             }
1113         }
1114     }
1115   else
1116     {
1117       struct bound_minimal_symbol msymbol;
1118       CORE_ADDR pc;
1119
1120       if (!get_frame_address_in_block_if_available (frame, &pc))
1121         return;
1122
1123       msymbol = lookup_minimal_symbol_by_pc (pc);
1124       if (msymbol.minsym != NULL)
1125         {
1126           *funname = xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym));
1127           *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1128         }
1129     }
1130 }
1131
1132 static void
1133 print_frame (struct frame_info *frame, int print_level,
1134              enum print_what print_what, int print_args,
1135              struct symtab_and_line sal)
1136 {
1137   struct gdbarch *gdbarch = get_frame_arch (frame);
1138   struct ui_out *uiout = current_uiout;
1139   char *funname = NULL;
1140   enum language funlang = language_unknown;
1141   struct ui_file *stb;
1142   struct cleanup *old_chain, *list_chain;
1143   struct value_print_options opts;
1144   struct symbol *func;
1145   CORE_ADDR pc = 0;
1146   int pc_p;
1147
1148   pc_p = get_frame_pc_if_available (frame, &pc);
1149
1150   stb = mem_fileopen ();
1151   old_chain = make_cleanup_ui_file_delete (stb);
1152
1153   find_frame_funname (frame, &funname, &funlang, &func);
1154   make_cleanup (xfree, funname);
1155
1156   annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1157                         gdbarch, pc);
1158
1159   list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
1160
1161   if (print_level)
1162     {
1163       ui_out_text (uiout, "#");
1164       ui_out_field_fmt_int (uiout, 2, ui_left, "level",
1165                             frame_relative_level (frame));
1166     }
1167   get_user_print_options (&opts);
1168   if (opts.addressprint)
1169     if (!sal.symtab
1170         || frame_show_address (frame, sal)
1171         || print_what == LOC_AND_ADDRESS)
1172       {
1173         annotate_frame_address ();
1174         if (pc_p)
1175           ui_out_field_core_addr (uiout, "addr", gdbarch, pc);
1176         else
1177           ui_out_field_string (uiout, "addr", "<unavailable>");
1178         annotate_frame_address_end ();
1179         ui_out_text (uiout, " in ");
1180       }
1181   annotate_frame_function_name ();
1182   fprintf_symbol_filtered (stb, funname ? funname : "??",
1183                            funlang, DMGL_ANSI);
1184   ui_out_field_stream (uiout, "func", stb);
1185   ui_out_wrap_hint (uiout, "   ");
1186   annotate_frame_args ();
1187       
1188   ui_out_text (uiout, " (");
1189   if (print_args)
1190     {
1191       struct gdbarch *gdbarch = get_frame_arch (frame);
1192       int numargs;
1193       struct cleanup *args_list_chain;
1194       volatile struct gdb_exception e;
1195
1196       if (gdbarch_frame_num_args_p (gdbarch))
1197         {
1198           numargs = gdbarch_frame_num_args (gdbarch, frame);
1199           gdb_assert (numargs >= 0);
1200         }
1201       else
1202         numargs = -1;
1203     
1204       args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
1205       TRY_CATCH (e, RETURN_MASK_ERROR)
1206         {
1207           print_frame_args (func, frame, numargs, gdb_stdout);
1208         }
1209       /* FIXME: ARGS must be a list.  If one argument is a string it
1210           will have " that will not be properly escaped.  */
1211       /* Invoke ui_out_tuple_end.  */
1212       do_cleanups (args_list_chain);
1213       QUIT;
1214     }
1215   ui_out_text (uiout, ")");
1216   if (sal.symtab)
1217     {
1218       const char *filename_display;
1219       
1220       filename_display = symtab_to_filename_for_display (sal.symtab);
1221       annotate_frame_source_begin ();
1222       ui_out_wrap_hint (uiout, "   ");
1223       ui_out_text (uiout, " at ");
1224       annotate_frame_source_file ();
1225       ui_out_field_string (uiout, "file", filename_display);
1226       if (ui_out_is_mi_like_p (uiout))
1227         {
1228           const char *fullname = symtab_to_fullname (sal.symtab);
1229
1230           ui_out_field_string (uiout, "fullname", fullname);
1231         }
1232       annotate_frame_source_file_end ();
1233       ui_out_text (uiout, ":");
1234       annotate_frame_source_line ();
1235       ui_out_field_int (uiout, "line", sal.line);
1236       annotate_frame_source_end ();
1237     }
1238
1239   if (pc_p && (funname == NULL || sal.symtab == NULL))
1240     {
1241       char *lib = solib_name_from_address (get_frame_program_space (frame),
1242                                            get_frame_pc (frame));
1243
1244       if (lib)
1245         {
1246           annotate_frame_where ();
1247           ui_out_wrap_hint (uiout, "  ");
1248           ui_out_text (uiout, " from ");
1249           ui_out_field_string (uiout, "from", lib);
1250         }
1251     }
1252
1253   /* do_cleanups will call ui_out_tuple_end() for us.  */
1254   do_cleanups (list_chain);
1255   ui_out_text (uiout, "\n");
1256   do_cleanups (old_chain);
1257 }
1258 \f
1259
1260 /* Read a frame specification in whatever the appropriate format is
1261    from FRAME_EXP.  Call error(), printing MESSAGE, if the
1262    specification is in any way invalid (so this function never returns
1263    NULL).  When SEPECTED_P is non-NULL set its target to indicate that
1264    the default selected frame was used.  */
1265
1266 static struct frame_info *
1267 parse_frame_specification_1 (const char *frame_exp, const char *message,
1268                              int *selected_frame_p)
1269 {
1270   int numargs;
1271   struct value *args[4];
1272   CORE_ADDR addrs[ARRAY_SIZE (args)];
1273
1274   if (frame_exp == NULL)
1275     numargs = 0;
1276   else
1277     {
1278       numargs = 0;
1279       while (1)
1280         {
1281           char *addr_string;
1282           struct cleanup *cleanup;
1283           const char *p;
1284
1285           /* Skip leading white space, bail of EOL.  */
1286           frame_exp = skip_spaces_const (frame_exp);
1287           if (!*frame_exp)
1288             break;
1289
1290           /* Parse the argument, extract it, save it.  */
1291           for (p = frame_exp;
1292                *p && !isspace (*p);
1293                p++);
1294           addr_string = savestring (frame_exp, p - frame_exp);
1295           frame_exp = p;
1296           cleanup = make_cleanup (xfree, addr_string);
1297           
1298           /* NOTE: Parse and evaluate expression, but do not use
1299              functions such as parse_and_eval_long or
1300              parse_and_eval_address to also extract the value.
1301              Instead value_as_long and value_as_address are used.
1302              This avoids problems with expressions that contain
1303              side-effects.  */
1304           if (numargs >= ARRAY_SIZE (args))
1305             error (_("Too many args in frame specification"));
1306           args[numargs++] = parse_and_eval (addr_string);
1307
1308           do_cleanups (cleanup);
1309         }
1310     }
1311
1312   /* If no args, default to the selected frame.  */
1313   if (numargs == 0)
1314     {
1315       if (selected_frame_p != NULL)
1316         (*selected_frame_p) = 1;
1317       return get_selected_frame (message);
1318     }
1319
1320   /* None of the remaining use the selected frame.  */
1321   if (selected_frame_p != NULL)
1322     (*selected_frame_p) = 0;
1323
1324   /* Assume the single arg[0] is an integer, and try using that to
1325      select a frame relative to current.  */
1326   if (numargs == 1)
1327     {
1328       struct frame_info *fid;
1329       int level = value_as_long (args[0]);
1330
1331       fid = find_relative_frame (get_current_frame (), &level);
1332       if (level == 0)
1333         /* find_relative_frame was successful.  */
1334         return fid;
1335     }
1336
1337   /* Convert each value into a corresponding address.  */
1338   {
1339     int i;
1340
1341     for (i = 0; i < numargs; i++)
1342       addrs[i] = value_as_address (args[i]);
1343   }
1344
1345   /* Assume that the single arg[0] is an address, use that to identify
1346      a frame with a matching ID.  Should this also accept stack/pc or
1347      stack/pc/special.  */
1348   if (numargs == 1)
1349     {
1350       struct frame_id id = frame_id_build_wild (addrs[0]);
1351       struct frame_info *fid;
1352
1353       /* If (s)he specifies the frame with an address, he deserves
1354          what (s)he gets.  Still, give the highest one that matches.
1355          (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
1356          know).  */
1357       for (fid = get_current_frame ();
1358            fid != NULL;
1359            fid = get_prev_frame (fid))
1360         {
1361           if (frame_id_eq (id, get_frame_id (fid)))
1362             {
1363               struct frame_info *prev_frame;
1364
1365               while (1)
1366                 {
1367                   prev_frame = get_prev_frame (fid);
1368                   if (!prev_frame
1369                       || !frame_id_eq (id, get_frame_id (prev_frame)))
1370                     break;
1371                   fid = prev_frame;
1372                 }
1373               return fid;
1374             }
1375         }
1376       }
1377
1378   /* We couldn't identify the frame as an existing frame, but
1379      perhaps we can create one with a single argument.  */
1380   if (numargs == 1)
1381     return create_new_frame (addrs[0], 0);
1382   else if (numargs == 2)
1383     return create_new_frame (addrs[0], addrs[1]);
1384   else
1385     error (_("Too many args in frame specification"));
1386 }
1387
1388 static struct frame_info *
1389 parse_frame_specification (char *frame_exp)
1390 {
1391   return parse_frame_specification_1 (frame_exp, NULL, NULL);
1392 }
1393
1394 /* Print verbosely the selected frame or the frame at address
1395    ADDR_EXP.  Absolutely all information in the frame is printed.  */
1396
1397 static void
1398 frame_info (char *addr_exp, int from_tty)
1399 {
1400   struct frame_info *fi;
1401   struct symtab_and_line sal;
1402   struct symbol *func;
1403   struct symtab *s;
1404   struct frame_info *calling_frame_info;
1405   int numregs;
1406   const char *funname = 0;
1407   enum language funlang = language_unknown;
1408   const char *pc_regname;
1409   int selected_frame_p;
1410   struct gdbarch *gdbarch;
1411   struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
1412   CORE_ADDR frame_pc;
1413   int frame_pc_p;
1414   /* Initialize it to avoid "may be used uninitialized" warning.  */
1415   CORE_ADDR caller_pc = 0;
1416   volatile struct gdb_exception ex;
1417
1418   fi = parse_frame_specification_1 (addr_exp, "No stack.", &selected_frame_p);
1419   gdbarch = get_frame_arch (fi);
1420
1421   /* Name of the value returned by get_frame_pc().  Per comments, "pc"
1422      is not a good name.  */
1423   if (gdbarch_pc_regnum (gdbarch) >= 0)
1424     /* OK, this is weird.  The gdbarch_pc_regnum hardware register's value can
1425        easily not match that of the internal value returned by
1426        get_frame_pc().  */
1427     pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1428   else
1429     /* But then, this is weird to.  Even without gdbarch_pc_regnum, an
1430        architectures will often have a hardware register called "pc",
1431        and that register's value, again, can easily not match
1432        get_frame_pc().  */
1433     pc_regname = "pc";
1434
1435   frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1436   find_frame_sal (fi, &sal);
1437   func = get_frame_function (fi);
1438   s = sal.symtab;
1439   if (func)
1440     {
1441       funname = SYMBOL_PRINT_NAME (func);
1442       funlang = SYMBOL_LANGUAGE (func);
1443       if (funlang == language_cplus)
1444         {
1445           /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1446              to display the demangled name that we already have
1447              stored in the symbol table, but we stored a version
1448              with DMGL_PARAMS turned on, and here we don't want to
1449              display parameters.  So remove the parameters.  */
1450           char *func_only = cp_remove_params (funname);
1451
1452           if (func_only)
1453             {
1454               funname = func_only;
1455               make_cleanup (xfree, func_only);
1456             }
1457         }
1458     }
1459   else if (frame_pc_p)
1460     {
1461       struct bound_minimal_symbol msymbol;
1462
1463       msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1464       if (msymbol.minsym != NULL)
1465         {
1466           funname = MSYMBOL_PRINT_NAME (msymbol.minsym);
1467           funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1468         }
1469     }
1470   calling_frame_info = get_prev_frame (fi);
1471
1472   if (selected_frame_p && frame_relative_level (fi) >= 0)
1473     {
1474       printf_filtered (_("Stack level %d, frame at "),
1475                        frame_relative_level (fi));
1476     }
1477   else
1478     {
1479       printf_filtered (_("Stack frame at "));
1480     }
1481   fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
1482   printf_filtered (":\n");
1483   printf_filtered (" %s = ", pc_regname);
1484   if (frame_pc_p)
1485     fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1486   else
1487     fputs_filtered ("<unavailable>", gdb_stdout);
1488
1489   wrap_here ("   ");
1490   if (funname)
1491     {
1492       printf_filtered (" in ");
1493       fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1494                                DMGL_ANSI | DMGL_PARAMS);
1495     }
1496   wrap_here ("   ");
1497   if (sal.symtab)
1498     printf_filtered (" (%s:%d)", symtab_to_filename_for_display (sal.symtab),
1499                      sal.line);
1500   puts_filtered ("; ");
1501   wrap_here ("    ");
1502   printf_filtered ("saved %s = ", pc_regname);
1503
1504   TRY_CATCH (ex, RETURN_MASK_ERROR)
1505     {
1506       caller_pc = frame_unwind_caller_pc (fi);
1507     }
1508   if (ex.reason < 0)
1509     {
1510       switch (ex.error)
1511         {
1512         case NOT_AVAILABLE_ERROR:
1513           val_print_unavailable (gdb_stdout);
1514           break;
1515         case OPTIMIZED_OUT_ERROR:
1516           val_print_not_saved (gdb_stdout);
1517           break;
1518         default:
1519           fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1520           break;
1521         }
1522     }
1523   else
1524     fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
1525   printf_filtered ("\n");
1526
1527   if (calling_frame_info == NULL)
1528     {
1529       enum unwind_stop_reason reason;
1530
1531       reason = get_frame_unwind_stop_reason (fi);
1532       if (reason != UNWIND_NO_REASON)
1533         printf_filtered (_(" Outermost frame: %s\n"),
1534                          frame_stop_reason_string (fi));
1535     }
1536   else if (get_frame_type (fi) == TAILCALL_FRAME)
1537     puts_filtered (" tail call frame");
1538   else if (get_frame_type (fi) == INLINE_FRAME)
1539     printf_filtered (" inlined into frame %d",
1540                      frame_relative_level (get_prev_frame (fi)));
1541   else
1542     {
1543       printf_filtered (" called by frame at ");
1544       fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
1545                       gdb_stdout);
1546     }
1547   if (get_next_frame (fi) && calling_frame_info)
1548     puts_filtered (",");
1549   wrap_here ("   ");
1550   if (get_next_frame (fi))
1551     {
1552       printf_filtered (" caller of frame at ");
1553       fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
1554                       gdb_stdout);
1555     }
1556   if (get_next_frame (fi) || calling_frame_info)
1557     puts_filtered ("\n");
1558
1559   if (s)
1560     printf_filtered (" source language %s.\n",
1561                      language_str (s->language));
1562
1563   {
1564     /* Address of the argument list for this frame, or 0.  */
1565     CORE_ADDR arg_list = get_frame_args_address (fi);
1566     /* Number of args for this frame, or -1 if unknown.  */
1567     int numargs;
1568
1569     if (arg_list == 0)
1570       printf_filtered (" Arglist at unknown address.\n");
1571     else
1572       {
1573         printf_filtered (" Arglist at ");
1574         fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1575         printf_filtered (",");
1576
1577         if (!gdbarch_frame_num_args_p (gdbarch))
1578           {
1579             numargs = -1;
1580             puts_filtered (" args: ");
1581           }
1582         else
1583           {
1584             numargs = gdbarch_frame_num_args (gdbarch, fi);
1585             gdb_assert (numargs >= 0);
1586             if (numargs == 0)
1587               puts_filtered (" no args.");
1588             else if (numargs == 1)
1589               puts_filtered (" 1 arg: ");
1590             else
1591               printf_filtered (" %d args: ", numargs);
1592           }
1593         print_frame_args (func, fi, numargs, gdb_stdout);
1594         puts_filtered ("\n");
1595       }
1596   }
1597   {
1598     /* Address of the local variables for this frame, or 0.  */
1599     CORE_ADDR arg_list = get_frame_locals_address (fi);
1600
1601     if (arg_list == 0)
1602       printf_filtered (" Locals at unknown address,");
1603     else
1604       {
1605         printf_filtered (" Locals at ");
1606         fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1607         printf_filtered (",");
1608       }
1609   }
1610
1611   /* Print as much information as possible on the location of all the
1612      registers.  */
1613   {
1614     enum lval_type lval;
1615     int optimized;
1616     int unavailable;
1617     CORE_ADDR addr;
1618     int realnum;
1619     int count;
1620     int i;
1621     int need_nl = 1;
1622
1623     /* The sp is special; what's displayed isn't the save address, but
1624        the value of the previous frame's sp.  This is a legacy thing,
1625        at one stage the frame cached the previous frame's SP instead
1626        of its address, hence it was easiest to just display the cached
1627        value.  */
1628     if (gdbarch_sp_regnum (gdbarch) >= 0)
1629       {
1630         /* Find out the location of the saved stack pointer with out
1631            actually evaluating it.  */
1632         frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1633                                &optimized, &unavailable, &lval, &addr,
1634                                &realnum, NULL);
1635         if (!optimized && !unavailable && lval == not_lval)
1636           {
1637             enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1638             int sp_size = register_size (gdbarch, gdbarch_sp_regnum (gdbarch));
1639             gdb_byte value[MAX_REGISTER_SIZE];
1640             CORE_ADDR sp;
1641
1642             frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1643                                    &optimized, &unavailable, &lval, &addr,
1644                                    &realnum, value);
1645             /* NOTE: cagney/2003-05-22: This is assuming that the
1646                stack pointer was packed as an unsigned integer.  That
1647                may or may not be valid.  */
1648             sp = extract_unsigned_integer (value, sp_size, byte_order);
1649             printf_filtered (" Previous frame's sp is ");
1650             fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
1651             printf_filtered ("\n");
1652             need_nl = 0;
1653           }
1654         else if (!optimized && !unavailable && lval == lval_memory)
1655           {
1656             printf_filtered (" Previous frame's sp at ");
1657             fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1658             printf_filtered ("\n");
1659             need_nl = 0;
1660           }
1661         else if (!optimized && !unavailable && lval == lval_register)
1662           {
1663             printf_filtered (" Previous frame's sp in %s\n",
1664                              gdbarch_register_name (gdbarch, realnum));
1665             need_nl = 0;
1666           }
1667         /* else keep quiet.  */
1668       }
1669
1670     count = 0;
1671     numregs = gdbarch_num_regs (gdbarch)
1672               + gdbarch_num_pseudo_regs (gdbarch);
1673     for (i = 0; i < numregs; i++)
1674       if (i != gdbarch_sp_regnum (gdbarch)
1675           && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1676         {
1677           /* Find out the location of the saved register without
1678              fetching the corresponding value.  */
1679           frame_register_unwind (fi, i, &optimized, &unavailable,
1680                                  &lval, &addr, &realnum, NULL);
1681           /* For moment, only display registers that were saved on the
1682              stack.  */
1683           if (!optimized && !unavailable && lval == lval_memory)
1684             {
1685               if (count == 0)
1686                 puts_filtered (" Saved registers:\n ");
1687               else
1688                 puts_filtered (",");
1689               wrap_here (" ");
1690               printf_filtered (" %s at ",
1691                                gdbarch_register_name (gdbarch, i));
1692               fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1693               count++;
1694             }
1695         }
1696     if (count || need_nl)
1697       puts_filtered ("\n");
1698   }
1699
1700   do_cleanups (back_to);
1701 }
1702
1703 /* Print briefly all stack frames or just the innermost COUNT_EXP
1704    frames.  */
1705
1706 static void
1707 backtrace_command_1 (char *count_exp, int show_locals, int no_filters,
1708                      int from_tty)
1709 {
1710   struct frame_info *fi;
1711   int count;
1712   int i;
1713   struct frame_info *trailing;
1714   int trailing_level, py_start = 0, py_end = 0;
1715   enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
1716
1717   if (!target_has_stack)
1718     error (_("No stack."));
1719
1720   /* The following code must do two things.  First, it must set the
1721      variable TRAILING to the frame from which we should start
1722      printing.  Second, it must set the variable count to the number
1723      of frames which we should print, or -1 if all of them.  */
1724   trailing = get_current_frame ();
1725
1726   trailing_level = 0;
1727   if (count_exp)
1728     {
1729       count = parse_and_eval_long (count_exp);
1730       if (count < 0)
1731         {
1732           struct frame_info *current;
1733
1734           py_start = count;
1735           count = -count;
1736
1737           current = trailing;
1738           while (current && count--)
1739             {
1740               QUIT;
1741               current = get_prev_frame (current);
1742             }
1743
1744           /* Will stop when CURRENT reaches the top of the stack.
1745              TRAILING will be COUNT below it.  */
1746           while (current)
1747             {
1748               QUIT;
1749               trailing = get_prev_frame (trailing);
1750               current = get_prev_frame (current);
1751               trailing_level++;
1752             }
1753
1754           count = -1;
1755         }
1756       else
1757         {
1758           py_start = 0;
1759           py_end = count;
1760         }
1761     }
1762   else
1763     {
1764       py_end = -1;
1765       count = -1;
1766     }
1767
1768   if (info_verbose)
1769     {
1770       /* Read in symbols for all of the frames.  Need to do this in a
1771          separate pass so that "Reading in symbols for xxx" messages
1772          don't screw up the appearance of the backtrace.  Also if
1773          people have strong opinions against reading symbols for
1774          backtrace this may have to be an option.  */
1775       i = count;
1776       for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
1777         {
1778           CORE_ADDR pc;
1779
1780           QUIT;
1781           pc = get_frame_address_in_block (fi);
1782           find_pc_sect_symtab_via_partial (pc, find_pc_mapped_section (pc));
1783         }
1784     }
1785
1786   if (! no_filters)
1787     {
1788       int flags = PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
1789       enum ext_lang_frame_args arg_type;
1790
1791       if (show_locals)
1792         flags |= PRINT_LOCALS;
1793
1794       if (!strcmp (print_frame_arguments, "scalars"))
1795         arg_type = CLI_SCALAR_VALUES;
1796       else if (!strcmp (print_frame_arguments, "all"))
1797         arg_type = CLI_ALL_VALUES;
1798       else
1799         arg_type = NO_VALUES;
1800
1801       result = apply_ext_lang_frame_filter (get_current_frame (), flags,
1802                                             arg_type, current_uiout,
1803                                             py_start, py_end);
1804     }
1805
1806   /* Run the inbuilt backtrace if there are no filters registered, or
1807      "no-filters" has been specified from the command.  */
1808   if (no_filters ||  result == EXT_LANG_BT_NO_FILTERS)
1809     {
1810       for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
1811         {
1812           QUIT;
1813
1814           /* Don't use print_stack_frame; if an error() occurs it probably
1815              means further attempts to backtrace would fail (on the other
1816              hand, perhaps the code does or could be fixed to make sure
1817              the frame->prev field gets set to NULL in that case).  */
1818
1819           print_frame_info (fi, 1, LOCATION, 1, 0);
1820           if (show_locals)
1821             {
1822               struct frame_id frame_id = get_frame_id (fi);
1823
1824               print_frame_local_vars (fi, 1, gdb_stdout);
1825
1826               /* print_frame_local_vars invalidates FI.  */
1827               fi = frame_find_by_id (frame_id);
1828               if (fi == NULL)
1829                 {
1830                   trailing = NULL;
1831                   warning (_("Unable to restore previously selected frame."));
1832                   break;
1833                 }
1834             }
1835
1836           /* Save the last frame to check for error conditions.  */
1837           trailing = fi;
1838         }
1839
1840       /* If we've stopped before the end, mention that.  */
1841       if (fi && from_tty)
1842         printf_filtered (_("(More stack frames follow...)\n"));
1843
1844       /* If we've run out of frames, and the reason appears to be an error
1845          condition, print it.  */
1846       if (fi == NULL && trailing != NULL)
1847         {
1848           enum unwind_stop_reason reason;
1849
1850           reason = get_frame_unwind_stop_reason (trailing);
1851           if (reason >= UNWIND_FIRST_ERROR)
1852             printf_filtered (_("Backtrace stopped: %s\n"),
1853                              frame_stop_reason_string (trailing));
1854         }
1855     }
1856 }
1857
1858 static void
1859 backtrace_command (char *arg, int from_tty)
1860 {
1861   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
1862   int fulltrace_arg = -1, arglen = 0, argc = 0, no_filters  = -1;
1863   int user_arg = 0;
1864
1865   if (arg)
1866     {
1867       char **argv;
1868       int i;
1869
1870       argv = gdb_buildargv (arg);
1871       make_cleanup_freeargv (argv);
1872       argc = 0;
1873       for (i = 0; argv[i]; i++)
1874         {
1875           unsigned int j;
1876
1877           for (j = 0; j < strlen (argv[i]); j++)
1878             argv[i][j] = tolower (argv[i][j]);
1879
1880           if (no_filters < 0 && subset_compare (argv[i], "no-filters"))
1881             no_filters = argc;
1882           else
1883             {
1884               if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1885                 fulltrace_arg = argc;
1886               else
1887                 {
1888                   user_arg++;
1889                   arglen += strlen (argv[i]);
1890                 }
1891             }
1892           argc++;
1893         }
1894       arglen += user_arg;
1895       if (fulltrace_arg >= 0 || no_filters >= 0)
1896         {
1897           if (arglen > 0)
1898             {
1899               arg = xmalloc (arglen + 1);
1900               make_cleanup (xfree, arg);
1901               arg[0] = 0;
1902               for (i = 0; i < argc; i++)
1903                 {
1904                   if (i != fulltrace_arg && i != no_filters)
1905                     {
1906                       strcat (arg, argv[i]);
1907                       strcat (arg, " ");
1908                     }
1909                 }
1910             }
1911           else
1912             arg = NULL;
1913         }
1914     }
1915
1916   backtrace_command_1 (arg, fulltrace_arg >= 0 /* show_locals */,
1917                        no_filters >= 0 /* no frame-filters */, from_tty);
1918
1919   do_cleanups (old_chain);
1920 }
1921
1922 static void
1923 backtrace_full_command (char *arg, int from_tty)
1924 {
1925   backtrace_command_1 (arg, 1 /* show_locals */, 0, from_tty);
1926 }
1927 \f
1928
1929 /* Iterate over the local variables of a block B, calling CB with
1930    CB_DATA.  */
1931
1932 static void
1933 iterate_over_block_locals (const struct block *b,
1934                            iterate_over_block_arg_local_vars_cb cb,
1935                            void *cb_data)
1936 {
1937   struct block_iterator iter;
1938   struct symbol *sym;
1939
1940   ALL_BLOCK_SYMBOLS (b, iter, sym)
1941     {
1942       switch (SYMBOL_CLASS (sym))
1943         {
1944         case LOC_LOCAL:
1945         case LOC_REGISTER:
1946         case LOC_STATIC:
1947         case LOC_COMPUTED:
1948           if (SYMBOL_IS_ARGUMENT (sym))
1949             break;
1950           if (SYMBOL_DOMAIN (sym) == COMMON_BLOCK_DOMAIN)
1951             break;
1952           (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
1953           break;
1954
1955         default:
1956           /* Ignore symbols which are not locals.  */
1957           break;
1958         }
1959     }
1960 }
1961
1962
1963 /* Same, but print labels.  */
1964
1965 #if 0
1966 /* Commented out, as the code using this function has also been
1967    commented out.  FIXME:brobecker/2009-01-13: Find out why the code
1968    was commented out in the first place.  The discussion introducing
1969    this change (2007-12-04: Support lexical blocks and function bodies
1970    that occupy non-contiguous address ranges) did not explain why
1971    this change was made.  */
1972 static int
1973 print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
1974                           int *have_default, struct ui_file *stream)
1975 {
1976   struct block_iterator iter;
1977   struct symbol *sym;
1978   int values_printed = 0;
1979
1980   ALL_BLOCK_SYMBOLS (b, iter, sym)
1981     {
1982       if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
1983         {
1984           if (*have_default)
1985             continue;
1986           *have_default = 1;
1987         }
1988       if (SYMBOL_CLASS (sym) == LOC_LABEL)
1989         {
1990           struct symtab_and_line sal;
1991           struct value_print_options opts;
1992
1993           sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1994           values_printed = 1;
1995           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1996           get_user_print_options (&opts);
1997           if (opts.addressprint)
1998             {
1999               fprintf_filtered (stream, " ");
2000               fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
2001                               stream);
2002             }
2003           fprintf_filtered (stream, " in file %s, line %d\n",
2004                             sal.symtab->filename, sal.line);
2005         }
2006     }
2007
2008   return values_printed;
2009 }
2010 #endif
2011
2012 /* Iterate over all the local variables in block B, including all its
2013    superblocks, stopping when the top-level block is reached.  */
2014
2015 void
2016 iterate_over_block_local_vars (const struct block *block,
2017                                iterate_over_block_arg_local_vars_cb cb,
2018                                void *cb_data)
2019 {
2020   while (block)
2021     {
2022       iterate_over_block_locals (block, cb, cb_data);
2023       /* After handling the function's top-level block, stop.  Don't
2024          continue to its superblock, the block of per-file
2025          symbols.  */
2026       if (BLOCK_FUNCTION (block))
2027         break;
2028       block = BLOCK_SUPERBLOCK (block);
2029     }
2030 }
2031
2032 /* Data to be passed around in the calls to the locals and args
2033    iterators.  */
2034
2035 struct print_variable_and_value_data
2036 {
2037   struct frame_id frame_id;
2038   int num_tabs;
2039   struct ui_file *stream;
2040   int values_printed;
2041 };
2042
2043 /* The callback for the locals and args iterators.  */
2044
2045 static void
2046 do_print_variable_and_value (const char *print_name,
2047                              struct symbol *sym,
2048                              void *cb_data)
2049 {
2050   struct print_variable_and_value_data *p = cb_data;
2051   struct frame_info *frame;
2052
2053   frame = frame_find_by_id (p->frame_id);
2054   if (frame == NULL)
2055     {
2056       warning (_("Unable to restore previously selected frame."));
2057       return;
2058     }
2059
2060   print_variable_and_value (print_name, sym, frame, p->stream, p->num_tabs);
2061
2062   /* print_variable_and_value invalidates FRAME.  */
2063   frame = NULL;
2064
2065   p->values_printed = 1;
2066 }
2067
2068 /* Print all variables from the innermost up to the function block of FRAME.
2069    Print them with values to STREAM indented by NUM_TABS.
2070
2071    This function will invalidate FRAME.  */
2072
2073 static void
2074 print_frame_local_vars (struct frame_info *frame, int num_tabs,
2075                         struct ui_file *stream)
2076 {
2077   struct print_variable_and_value_data cb_data;
2078   const struct block *block;
2079   CORE_ADDR pc;
2080
2081   if (!get_frame_pc_if_available (frame, &pc))
2082     {
2083       fprintf_filtered (stream,
2084                         _("PC unavailable, cannot determine locals.\n"));
2085       return;
2086     }
2087
2088   block = get_frame_block (frame, 0);
2089   if (block == 0)
2090     {
2091       fprintf_filtered (stream, "No symbol table info available.\n");
2092       return;
2093     }
2094
2095   cb_data.frame_id = get_frame_id (frame);
2096   cb_data.num_tabs = 4 * num_tabs;
2097   cb_data.stream = stream;
2098   cb_data.values_printed = 0;
2099
2100   iterate_over_block_local_vars (block,
2101                                  do_print_variable_and_value,
2102                                  &cb_data);
2103
2104   /* do_print_variable_and_value invalidates FRAME.  */
2105   frame = NULL;
2106
2107   if (!cb_data.values_printed)
2108     fprintf_filtered (stream, _("No locals.\n"));
2109 }
2110
2111 void
2112 locals_info (char *args, int from_tty)
2113 {
2114   print_frame_local_vars (get_selected_frame (_("No frame selected.")),
2115                           0, gdb_stdout);
2116 }
2117
2118 /* Iterate over all the argument variables in block B.
2119
2120    Returns 1 if any argument was walked; 0 otherwise.  */
2121
2122 void
2123 iterate_over_block_arg_vars (const struct block *b,
2124                              iterate_over_block_arg_local_vars_cb cb,
2125                              void *cb_data)
2126 {
2127   struct block_iterator iter;
2128   struct symbol *sym, *sym2;
2129
2130   ALL_BLOCK_SYMBOLS (b, iter, sym)
2131     {
2132       /* Don't worry about things which aren't arguments.  */
2133       if (SYMBOL_IS_ARGUMENT (sym))
2134         {
2135           /* We have to look up the symbol because arguments can have
2136              two entries (one a parameter, one a local) and the one we
2137              want is the local, which lookup_symbol will find for us.
2138              This includes gcc1 (not gcc2) on the sparc when passing a
2139              small structure and gcc2 when the argument type is float
2140              and it is passed as a double and converted to float by
2141              the prologue (in the latter case the type of the LOC_ARG
2142              symbol is double and the type of the LOC_LOCAL symbol is
2143              float).  There are also LOC_ARG/LOC_REGISTER pairs which
2144              are not combined in symbol-reading.  */
2145
2146           sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
2147                                 b, VAR_DOMAIN, NULL);
2148           (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
2149         }
2150     }
2151 }
2152
2153 /* Print all argument variables of the function of FRAME.
2154    Print them with values to STREAM.
2155
2156    This function will invalidate FRAME.  */
2157
2158 static void
2159 print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
2160 {
2161   struct print_variable_and_value_data cb_data;
2162   struct symbol *func;
2163   CORE_ADDR pc;
2164
2165   if (!get_frame_pc_if_available (frame, &pc))
2166     {
2167       fprintf_filtered (stream, _("PC unavailable, cannot determine args.\n"));
2168       return;
2169     }
2170
2171   func = get_frame_function (frame);
2172   if (func == NULL)
2173     {
2174       fprintf_filtered (stream, _("No symbol table info available.\n"));
2175       return;
2176     }
2177
2178   cb_data.frame_id = get_frame_id (frame);
2179   cb_data.num_tabs = 0;
2180   cb_data.stream = gdb_stdout;
2181   cb_data.values_printed = 0;
2182
2183   iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
2184                                do_print_variable_and_value, &cb_data);
2185
2186   /* do_print_variable_and_value invalidates FRAME.  */
2187   frame = NULL;
2188
2189   if (!cb_data.values_printed)
2190     fprintf_filtered (stream, _("No arguments.\n"));
2191 }
2192
2193 void
2194 args_info (char *ignore, int from_tty)
2195 {
2196   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
2197                         gdb_stdout);
2198 }
2199
2200
2201 static void
2202 args_plus_locals_info (char *ignore, int from_tty)
2203 {
2204   args_info (ignore, from_tty);
2205   locals_info (ignore, from_tty);
2206 }
2207 \f
2208
2209 /* Select frame FRAME.  Also print the stack frame and show the source
2210    if this is the tui version.  */
2211 static void
2212 select_and_print_frame (struct frame_info *frame)
2213 {
2214   select_frame (frame);
2215   if (frame)
2216     print_stack_frame (frame, 1, SRC_AND_LOC, 1);
2217 }
2218 \f
2219 /* Return the symbol-block in which the selected frame is executing.
2220    Can return zero under various legitimate circumstances.
2221
2222    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2223    code address within the block returned.  We use this to decide
2224    which macros are in scope.  */
2225
2226 const struct block *
2227 get_selected_block (CORE_ADDR *addr_in_block)
2228 {
2229   if (!has_stack_frames ())
2230     return 0;
2231
2232   return get_frame_block (get_selected_frame (NULL), addr_in_block);
2233 }
2234
2235 /* Find a frame a certain number of levels away from FRAME.
2236    LEVEL_OFFSET_PTR points to an int containing the number of levels.
2237    Positive means go to earlier frames (up); negative, the reverse.
2238    The int that contains the number of levels is counted toward
2239    zero as the frames for those levels are found.
2240    If the top or bottom frame is reached, that frame is returned,
2241    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2242    how much farther the original request asked to go.  */
2243
2244 struct frame_info *
2245 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
2246 {
2247   /* Going up is simple: just call get_prev_frame enough times or
2248      until the initial frame is reached.  */
2249   while (*level_offset_ptr > 0)
2250     {
2251       struct frame_info *prev = get_prev_frame (frame);
2252
2253       if (!prev)
2254         break;
2255       (*level_offset_ptr)--;
2256       frame = prev;
2257     }
2258
2259   /* Going down is just as simple.  */
2260   while (*level_offset_ptr < 0)
2261     {
2262       struct frame_info *next = get_next_frame (frame);
2263
2264       if (!next)
2265         break;
2266       (*level_offset_ptr)++;
2267       frame = next;
2268     }
2269
2270   return frame;
2271 }
2272
2273 /* The "select_frame" command.  With no argument this is a NOP.
2274    Select the frame at level LEVEL_EXP if it is a valid level.
2275    Otherwise, treat LEVEL_EXP as an address expression and select it.
2276
2277    See parse_frame_specification for more info on proper frame
2278    expressions.  */
2279
2280 void
2281 select_frame_command (char *level_exp, int from_tty)
2282 {
2283   select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
2284 }
2285
2286 /* The "frame" command.  With no argument, print the selected frame
2287    briefly.  With an argument, behave like select_frame and then print
2288    the selected frame.  */
2289
2290 static void
2291 frame_command (char *level_exp, int from_tty)
2292 {
2293   select_frame_command (level_exp, from_tty);
2294   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2295 }
2296
2297 /* The XDB Compatibility command to print the current frame.  */
2298
2299 static void
2300 current_frame_command (char *level_exp, int from_tty)
2301 {
2302   print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC, 1);
2303 }
2304
2305 /* Select the frame up one or COUNT_EXP stack levels from the
2306    previously selected frame, and print it briefly.  */
2307
2308 static void
2309 up_silently_base (const char *count_exp)
2310 {
2311   struct frame_info *frame;
2312   int count = 1;
2313
2314   if (count_exp)
2315     count = parse_and_eval_long (count_exp);
2316
2317   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2318   if (count != 0 && count_exp == NULL)
2319     error (_("Initial frame selected; you cannot go up."));
2320   select_frame (frame);
2321 }
2322
2323 static void
2324 up_silently_command (char *count_exp, int from_tty)
2325 {
2326   up_silently_base (count_exp);
2327 }
2328
2329 static void
2330 up_command (char *count_exp, int from_tty)
2331 {
2332   up_silently_base (count_exp);
2333   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2334 }
2335
2336 /* Select the frame down one or COUNT_EXP stack levels from the previously
2337    selected frame, and print it briefly.  */
2338
2339 static void
2340 down_silently_base (const char *count_exp)
2341 {
2342   struct frame_info *frame;
2343   int count = -1;
2344
2345   if (count_exp)
2346     count = -parse_and_eval_long (count_exp);
2347
2348   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2349   if (count != 0 && count_exp == NULL)
2350     {
2351       /* We only do this if COUNT_EXP is not specified.  That way
2352          "down" means to really go down (and let me know if that is
2353          impossible), but "down 9999" can be used to mean go all the
2354          way down without getting an error.  */
2355
2356       error (_("Bottom (innermost) frame selected; you cannot go down."));
2357     }
2358
2359   select_frame (frame);
2360 }
2361
2362 static void
2363 down_silently_command (char *count_exp, int from_tty)
2364 {
2365   down_silently_base (count_exp);
2366 }
2367
2368 static void
2369 down_command (char *count_exp, int from_tty)
2370 {
2371   down_silently_base (count_exp);
2372   print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2373 }
2374 \f
2375
2376 void
2377 return_command (char *retval_exp, int from_tty)
2378 {
2379   /* Initialize it just to avoid a GCC false warning.  */
2380   enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2381   struct frame_info *thisframe;
2382   struct gdbarch *gdbarch;
2383   struct symbol *thisfun;
2384   struct value *return_value = NULL;
2385   struct value *function = NULL;
2386   const char *query_prefix = "";
2387
2388   thisframe = get_selected_frame ("No selected frame.");
2389   thisfun = get_frame_function (thisframe);
2390   gdbarch = get_frame_arch (thisframe);
2391
2392   if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2393     error (_("Can not force return from an inlined function."));
2394
2395   /* Compute the return value.  If the computation triggers an error,
2396      let it bail.  If the return type can't be handled, set
2397      RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2398      message.  */
2399   if (retval_exp)
2400     {
2401       struct expression *retval_expr = parse_expression (retval_exp);
2402       struct cleanup *old_chain = make_cleanup (xfree, retval_expr);
2403       struct type *return_type = NULL;
2404
2405       /* Compute the return value.  Should the computation fail, this
2406          call throws an error.  */
2407       return_value = evaluate_expression (retval_expr);
2408
2409       /* Cast return value to the return type of the function.  Should
2410          the cast fail, this call throws an error.  */
2411       if (thisfun != NULL)
2412         return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
2413       if (return_type == NULL)
2414         {
2415           if (retval_expr->elts[0].opcode != UNOP_CAST
2416               && retval_expr->elts[0].opcode != UNOP_CAST_TYPE)
2417             error (_("Return value type not available for selected "
2418                      "stack frame.\n"
2419                      "Please use an explicit cast of the value to return."));
2420           return_type = value_type (return_value);
2421         }
2422       do_cleanups (old_chain);
2423       CHECK_TYPEDEF (return_type);
2424       return_value = value_cast (return_type, return_value);
2425
2426       /* Make sure the value is fully evaluated.  It may live in the
2427          stack frame we're about to pop.  */
2428       if (value_lazy (return_value))
2429         value_fetch_lazy (return_value);
2430
2431       if (thisfun != NULL)
2432         function = read_var_value (thisfun, thisframe);
2433
2434       rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2435       if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
2436         /* If the return-type is "void", don't try to find the
2437            return-value's location.  However, do still evaluate the
2438            return expression so that, even when the expression result
2439            is discarded, side effects such as "return i++" still
2440            occur.  */
2441         return_value = NULL;
2442       else if (thisfun != NULL)
2443         {
2444           rv_conv = struct_return_convention (gdbarch, function, return_type);
2445           if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2446               || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2447             {
2448               query_prefix = "The location at which to store the "
2449                 "function's return value is unknown.\n"
2450                 "If you continue, the return value "
2451                 "that you specified will be ignored.\n";
2452               return_value = NULL;
2453             }
2454         }
2455     }
2456
2457   /* Does an interactive user really want to do this?  Include
2458      information, such as how well GDB can handle the return value, in
2459      the query message.  */
2460   if (from_tty)
2461     {
2462       int confirmed;
2463
2464       if (thisfun == NULL)
2465         confirmed = query (_("%sMake selected stack frame return now? "),
2466                            query_prefix);
2467       else
2468         confirmed = query (_("%sMake %s return now? "), query_prefix,
2469                            SYMBOL_PRINT_NAME (thisfun));
2470       if (!confirmed)
2471         error (_("Not confirmed"));
2472     }
2473
2474   /* Discard the selected frame and all frames inner-to it.  */
2475   frame_pop (get_selected_frame (NULL));
2476
2477   /* Store RETURN_VALUE in the just-returned register set.  */
2478   if (return_value != NULL)
2479     {
2480       struct type *return_type = value_type (return_value);
2481       struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
2482
2483       gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2484                   && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
2485       gdbarch_return_value (gdbarch, function, return_type,
2486                             get_current_regcache (), NULL /*read*/,
2487                             value_contents (return_value) /*write*/);
2488     }
2489
2490   /* If we are at the end of a call dummy now, pop the dummy frame
2491      too.  */
2492   if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2493     frame_pop (get_current_frame ());
2494
2495   /* If interactive, print the frame that is now current.  */
2496   if (from_tty)
2497     frame_command ("0", 1);
2498   else
2499     select_frame_command ("0", 0);
2500 }
2501
2502 /* Sets the scope to input function name, provided that the function
2503    is within the current stack frame.  */
2504
2505 struct function_bounds
2506 {
2507   CORE_ADDR low, high;
2508 };
2509
2510 static void
2511 func_command (char *arg, int from_tty)
2512 {
2513   struct frame_info *frame;
2514   int found = 0;
2515   struct symtabs_and_lines sals;
2516   int i;
2517   int level = 1;
2518   struct function_bounds *func_bounds = NULL;
2519   struct cleanup *cleanups;
2520
2521   if (arg != NULL)
2522     return;
2523
2524   frame = parse_frame_specification ("0");
2525   sals = decode_line_with_current_source (arg, DECODE_LINE_FUNFIRSTLINE);
2526   cleanups = make_cleanup (xfree, sals.sals);
2527   func_bounds = (struct function_bounds *) xmalloc (
2528                               sizeof (struct function_bounds) * sals.nelts);
2529   make_cleanup (xfree, func_bounds);
2530   for (i = 0; (i < sals.nelts && !found); i++)
2531     {
2532       if (sals.sals[i].pspace != current_program_space)
2533         func_bounds[i].low = func_bounds[i].high = 0;
2534       else if (sals.sals[i].pc == 0
2535                || find_pc_partial_function (sals.sals[i].pc, NULL,
2536                                             &func_bounds[i].low,
2537                                             &func_bounds[i].high) == 0)
2538         {
2539           func_bounds[i].low = func_bounds[i].high = 0;
2540         }
2541     }
2542
2543   do
2544     {
2545       for (i = 0; (i < sals.nelts && !found); i++)
2546         found = (get_frame_pc (frame) >= func_bounds[i].low
2547                  && get_frame_pc (frame) < func_bounds[i].high);
2548       if (!found)
2549         {
2550           level = 1;
2551           frame = find_relative_frame (frame, &level);
2552         }
2553     }
2554   while (!found && level == 0);
2555
2556   do_cleanups (cleanups);
2557
2558   if (!found)
2559     printf_filtered (_("'%s' not within current stack frame.\n"), arg);
2560   else if (frame != get_selected_frame (NULL))
2561     select_and_print_frame (frame);
2562 }
2563
2564 /* Gets the language of the current frame.  */
2565
2566 enum language
2567 get_frame_language (void)
2568 {
2569   struct frame_info *frame = deprecated_safe_get_selected_frame ();
2570
2571   if (frame)
2572     {
2573       volatile struct gdb_exception ex;
2574       CORE_ADDR pc = 0;
2575       struct symtab *s;
2576
2577       /* We determine the current frame language by looking up its
2578          associated symtab.  To retrieve this symtab, we use the frame
2579          PC.  However we cannot use the frame PC as is, because it
2580          usually points to the instruction following the "call", which
2581          is sometimes the first instruction of another function.  So
2582          we rely on get_frame_address_in_block(), it provides us with
2583          a PC that is guaranteed to be inside the frame's code
2584          block.  */
2585
2586       TRY_CATCH (ex, RETURN_MASK_ERROR)
2587         {
2588           pc = get_frame_address_in_block (frame);
2589         }
2590       if (ex.reason < 0)
2591         {
2592           if (ex.error != NOT_AVAILABLE_ERROR)
2593             throw_exception (ex);
2594         }
2595       else
2596         {
2597           s = find_pc_symtab (pc);
2598           if (s != NULL)
2599             return s->language;
2600         }
2601     }
2602
2603   return language_unknown;
2604 }
2605 \f
2606
2607 /* Provide a prototype to silence -Wmissing-prototypes.  */
2608 void _initialize_stack (void);
2609
2610 void
2611 _initialize_stack (void)
2612 {
2613   add_com ("return", class_stack, return_command, _("\
2614 Make selected stack frame return to its caller.\n\
2615 Control remains in the debugger, but when you continue\n\
2616 execution will resume in the frame above the one now selected.\n\
2617 If an argument is given, it is an expression for the value to return."));
2618
2619   add_com ("up", class_stack, up_command, _("\
2620 Select and print stack frame that called this one.\n\
2621 An argument says how many frames up to go."));
2622   add_com ("up-silently", class_support, up_silently_command, _("\
2623 Same as the `up' command, but does not print anything.\n\
2624 This is useful in command scripts."));
2625
2626   add_com ("down", class_stack, down_command, _("\
2627 Select and print stack frame called by this one.\n\
2628 An argument says how many frames down to go."));
2629   add_com_alias ("do", "down", class_stack, 1);
2630   add_com_alias ("dow", "down", class_stack, 1);
2631   add_com ("down-silently", class_support, down_silently_command, _("\
2632 Same as the `down' command, but does not print anything.\n\
2633 This is useful in command scripts."));
2634
2635   add_com ("frame", class_stack, frame_command, _("\
2636 Select and print a stack frame.\nWith no argument, \
2637 print the selected stack frame.  (See also \"info frame\").\n\
2638 An argument specifies the frame to select.\n\
2639 It can be a stack frame number or the address of the frame.\n\
2640 With argument, nothing is printed if input is coming from\n\
2641 a command file or a user-defined command."));
2642
2643   add_com_alias ("f", "frame", class_stack, 1);
2644
2645   if (xdb_commands)
2646     {
2647       add_com ("L", class_stack, current_frame_command,
2648                _("Print the current stack frame.\n"));
2649       add_com_alias ("V", "frame", class_stack, 1);
2650     }
2651   add_com ("select-frame", class_stack, select_frame_command, _("\
2652 Select a stack frame without printing anything.\n\
2653 An argument specifies the frame to select.\n\
2654 It can be a stack frame number or the address of the frame.\n"));
2655
2656   add_com ("backtrace", class_stack, backtrace_command, _("\
2657 Print backtrace of all stack frames, or innermost COUNT frames.\n\
2658 With a negative argument, print outermost -COUNT frames.\nUse of the \
2659 'full' qualifier also prints the values of the local variables.\n\
2660 Use of the 'no-filters' qualifier prohibits frame filters from executing\n\
2661 on this backtrace.\n"));
2662   add_com_alias ("bt", "backtrace", class_stack, 0);
2663   if (xdb_commands)
2664     {
2665       add_com_alias ("t", "backtrace", class_stack, 0);
2666       add_com ("T", class_stack, backtrace_full_command, _("\
2667 Print backtrace of all stack frames, or innermost COUNT frames\n\
2668 and the values of the local variables.\n\
2669 With a negative argument, print outermost -COUNT frames.\n\
2670 Usage: T <count>\n"));
2671     }
2672
2673   add_com_alias ("where", "backtrace", class_alias, 0);
2674   add_info ("stack", backtrace_command,
2675             _("Backtrace of the stack, or innermost COUNT frames."));
2676   add_info_alias ("s", "stack", 1);
2677   add_info ("frame", frame_info,
2678             _("All about selected stack frame, or frame at ADDR."));
2679   add_info_alias ("f", "frame", 1);
2680   add_info ("locals", locals_info,
2681             _("Local variables of current stack frame."));
2682   add_info ("args", args_info,
2683             _("Argument variables of current stack frame."));
2684   if (xdb_commands)
2685     add_com ("l", class_info, args_plus_locals_info,
2686              _("Argument and local variables of current stack frame."));
2687
2688   if (dbx_commands)
2689     add_com ("func", class_stack, func_command, _("\
2690 Select the stack frame that contains <func>.\n\
2691 Usage: func <name>\n"));
2692
2693   add_setshow_enum_cmd ("frame-arguments", class_stack,
2694                         print_frame_arguments_choices, &print_frame_arguments,
2695                         _("Set printing of non-scalar frame arguments"),
2696                         _("Show printing of non-scalar frame arguments"),
2697                         NULL, NULL, NULL, &setprintlist, &showprintlist);
2698
2699   add_setshow_boolean_cmd ("frame-arguments", no_class,
2700                            &print_raw_frame_arguments, _("\
2701 Set whether to print frame arguments in raw form."), _("\
2702 Show whether to print frame arguments in raw form."), _("\
2703 If set, frame arguments are printed in raw form, bypassing any\n\
2704 pretty-printers for that value."),
2705                            NULL, NULL,
2706                            &setprintrawlist, &showprintrawlist);
2707
2708   add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
2709                                 &disassemble_next_line, _("\
2710 Set whether to disassemble next source line or insn when execution stops."),
2711                                 _("\
2712 Show whether to disassemble next source line or insn when execution stops."),
2713                                 _("\
2714 If ON, GDB will display disassembly of the next source line, in addition\n\
2715 to displaying the source line itself.  If the next source line cannot\n\
2716 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2717 will display disassembly of next instruction instead of showing the\n\
2718 source line.\n\
2719 If AUTO, display disassembly of next instruction only if the source line\n\
2720 cannot be displayed.\n\
2721 If OFF (which is the default), never display the disassembly of the next\n\
2722 source line."),
2723                                 NULL,
2724                                 show_disassemble_next_line,
2725                                 &setlist, &showlist);
2726   disassemble_next_line = AUTO_BOOLEAN_FALSE;
2727
2728   add_setshow_enum_cmd ("entry-values", class_stack,
2729                         print_entry_values_choices, &print_entry_values,
2730                         _("Set printing of function arguments at function "
2731                           "entry"),
2732                         _("Show printing of function arguments at function "
2733                           "entry"),
2734                         _("\
2735 GDB can sometimes determine the values of function arguments at entry,\n\
2736 in addition to their current values.  This option tells GDB whether\n\
2737 to print the current value, the value at entry (marked as val@entry),\n\
2738 or both.  Note that one or both of these values may be <optimized out>."),
2739                         NULL, NULL, &setprintlist, &showprintlist);
2740 }