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