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