Style variable names
[external/binutils.git] / gdb / stack.c
1 /* Print and select stack frames for GDB, the GNU debugger.
2
3    Copyright (C) 1986-2018 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 "reggroups.h"
40 #include "regcache.h"
41 #include "solib.h"
42 #include "valprint.h"
43 #include "gdbthread.h"
44 #include "cp-support.h"
45 #include "disasm.h"
46 #include "inline-frame.h"
47 #include "linespec.h"
48 #include "cli/cli-utils.h"
49 #include "objfiles.h"
50
51 #include "symfile.h"
52 #include "extension.h"
53 #include "observable.h"
54 #include "common/def-vector.h"
55
56 /* The possible choices of "set print frame-arguments", and the value
57    of this setting.  */
58
59 static const char *const print_frame_arguments_choices[] =
60   {"all", "scalars", "none", NULL};
61 static const char *print_frame_arguments = "scalars";
62
63 /* If non-zero, don't invoke pretty-printers for frame arguments.  */
64 static int print_raw_frame_arguments;
65
66 /* The possible choices of "set print entry-values", and the value
67    of this setting.  */
68
69 const char print_entry_values_no[] = "no";
70 const char print_entry_values_only[] = "only";
71 const char print_entry_values_preferred[] = "preferred";
72 const char print_entry_values_if_needed[] = "if-needed";
73 const char print_entry_values_both[] = "both";
74 const char print_entry_values_compact[] = "compact";
75 const char print_entry_values_default[] = "default";
76 static const char *const print_entry_values_choices[] =
77 {
78   print_entry_values_no,
79   print_entry_values_only,
80   print_entry_values_preferred,
81   print_entry_values_if_needed,
82   print_entry_values_both,
83   print_entry_values_compact,
84   print_entry_values_default,
85   NULL
86 };
87 const char *print_entry_values = print_entry_values_default;
88
89 /* Prototypes for local functions.  */
90
91 static void print_frame_local_vars (struct frame_info *frame,
92                                     bool quiet,
93                                     const char *regexp, const char *t_regexp,
94                                     int num_tabs, struct ui_file *stream);
95
96 static void print_frame (struct frame_info *frame, int print_level,
97                          enum print_what print_what,  int print_args,
98                          struct symtab_and_line sal);
99
100 static void set_last_displayed_sal (int valid,
101                                     struct program_space *pspace,
102                                     CORE_ADDR addr,
103                                     struct symtab *symtab,
104                                     int line);
105
106 static struct frame_info *find_frame_for_function (const char *);
107 static struct frame_info *find_frame_for_address (CORE_ADDR);
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_thread ()) > 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 /* See frame.h.  */
151
152 void
153 print_stack_frame_to_uiout (struct ui_out *uiout, struct frame_info *frame,
154                             int print_level, enum print_what print_what,
155                             int set_current_sal)
156 {
157   scoped_restore save_uiout = make_scoped_restore (&current_uiout, uiout);
158
159   print_stack_frame (frame, print_level, print_what, set_current_sal);
160 }
161
162 /* Show or print a stack frame FRAME briefly.  The output is formatted
163    according to PRINT_LEVEL and PRINT_WHAT printing the frame's
164    relative level, function name, argument list, and file name and
165    line number.  If the frame's PC is not at the beginning of the
166    source line, the actual PC is printed at the beginning.  */
167
168 void
169 print_stack_frame (struct frame_info *frame, int print_level,
170                    enum print_what print_what,
171                    int set_current_sal)
172 {
173
174   /* For mi, alway print location and address.  */
175   if (current_uiout->is_mi_like_p ())
176     print_what = LOC_AND_ADDRESS;
177
178   TRY
179     {
180       print_frame_info (frame, print_level, print_what, 1 /* print_args */,
181                         set_current_sal);
182       if (set_current_sal)
183         set_current_sal_from_frame (frame);
184     }
185   CATCH (e, RETURN_MASK_ERROR)
186     {
187     }
188   END_CATCH
189 }
190
191 /* Print nameless arguments of frame FRAME on STREAM, where START is
192    the offset of the first nameless argument, and NUM is the number of
193    nameless arguments to print.  FIRST is nonzero if this is the first
194    argument (not just the first nameless argument).  */
195
196 static void
197 print_frame_nameless_args (struct frame_info *frame, long start, int num,
198                            int first, struct ui_file *stream)
199 {
200   struct gdbarch *gdbarch = get_frame_arch (frame);
201   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
202   int i;
203   CORE_ADDR argsaddr;
204   long arg_value;
205
206   for (i = 0; i < num; i++)
207     {
208       QUIT;
209       argsaddr = get_frame_args_address (frame);
210       if (!argsaddr)
211         return;
212       arg_value = read_memory_integer (argsaddr + start,
213                                        sizeof (int), byte_order);
214       if (!first)
215         fprintf_filtered (stream, ", ");
216       fprintf_filtered (stream, "%ld", arg_value);
217       first = 0;
218       start += sizeof (int);
219     }
220 }
221
222 /* Print single argument of inferior function.  ARG must be already
223    read in.
224
225    Errors are printed as if they would be the parameter value.  Use zeroed ARG
226    iff it should not be printed accoring to user settings.  */
227
228 static void
229 print_frame_arg (const struct frame_arg *arg)
230 {
231   struct ui_out *uiout = current_uiout;
232   const char *error_message = NULL;
233
234   string_file stb;
235
236   gdb_assert (!arg->val || !arg->error);
237   gdb_assert (arg->entry_kind == print_entry_values_no
238               || arg->entry_kind == print_entry_values_only
239               || (!uiout->is_mi_like_p ()
240                   && arg->entry_kind == print_entry_values_compact));
241
242   annotate_arg_emitter arg_emitter;
243   ui_out_emit_tuple tuple_emitter (uiout, NULL);
244   fprintf_symbol_filtered (&stb, SYMBOL_PRINT_NAME (arg->sym),
245                            SYMBOL_LANGUAGE (arg->sym), DMGL_PARAMS | DMGL_ANSI);
246   if (arg->entry_kind == print_entry_values_compact)
247     {
248       /* It is OK to provide invalid MI-like stream as with
249          PRINT_ENTRY_VALUE_COMPACT we never use MI.  */
250       stb.puts ("=");
251
252       fprintf_symbol_filtered (&stb, SYMBOL_PRINT_NAME (arg->sym),
253                                SYMBOL_LANGUAGE (arg->sym),
254                                DMGL_PARAMS | DMGL_ANSI);
255     }
256   if (arg->entry_kind == print_entry_values_only
257       || arg->entry_kind == print_entry_values_compact)
258     stb.puts ("@entry");
259   uiout->field_stream ("name", stb, ui_out_style_kind::VARIABLE);
260   annotate_arg_name_end ();
261   uiout->text ("=");
262
263   if (!arg->val && !arg->error)
264     uiout->text ("...");
265   else
266     {
267       if (arg->error)
268         error_message = arg->error;
269       else
270         {
271           TRY
272             {
273               const struct language_defn *language;
274               struct value_print_options opts;
275
276               /* Avoid value_print because it will deref ref parameters.  We
277                  just want to print their addresses.  Print ??? for args whose
278                  address we do not know.  We pass 2 as "recurse" to val_print
279                  because our standard indentation here is 4 spaces, and
280                  val_print indents 2 for each recurse.  */ 
281
282               annotate_arg_value (value_type (arg->val));
283
284               /* Use the appropriate language to display our symbol, unless the
285                  user forced the language to a specific language.  */
286               if (language_mode == language_mode_auto)
287                 language = language_def (SYMBOL_LANGUAGE (arg->sym));
288               else
289                 language = current_language;
290
291               get_no_prettyformat_print_options (&opts);
292               opts.deref_ref = 1;
293               opts.raw = print_raw_frame_arguments;
294
295               /* True in "summary" mode, false otherwise.  */
296               opts.summary = !strcmp (print_frame_arguments, "scalars");
297
298               common_val_print (arg->val, &stb, 2, &opts, language);
299             }
300           CATCH (except, RETURN_MASK_ERROR)
301             {
302               error_message = except.message;
303             }
304           END_CATCH
305         }
306       if (error_message != NULL)
307         stb.printf (_("<error reading variable: %s>"), error_message);
308     }
309
310   uiout->field_stream ("value", stb);
311 }
312
313 /* Read in inferior function local SYM at FRAME into ARGP.  Caller is
314    responsible for xfree of ARGP->ERROR.  This function never throws an
315    exception.  */
316
317 void
318 read_frame_local (struct symbol *sym, struct frame_info *frame,
319                   struct frame_arg *argp)
320 {
321   argp->sym = sym;
322   argp->val = NULL;
323   argp->error = NULL;
324
325   TRY
326     {
327       argp->val = read_var_value (sym, NULL, frame);
328     }
329   CATCH (except, RETURN_MASK_ERROR)
330     {
331       argp->error = xstrdup (except.message);
332     }
333   END_CATCH
334 }
335
336 /* Read in inferior function parameter SYM at FRAME into ARGP.  Caller is
337    responsible for xfree of ARGP->ERROR.  This function never throws an
338    exception.  */
339
340 void
341 read_frame_arg (struct symbol *sym, struct frame_info *frame,
342                 struct frame_arg *argp, struct frame_arg *entryargp)
343 {
344   struct value *val = NULL, *entryval = NULL;
345   char *val_error = NULL, *entryval_error = NULL;
346   int val_equal = 0;
347
348   if (print_entry_values != print_entry_values_only
349       && print_entry_values != print_entry_values_preferred)
350     {
351       TRY
352         {
353           val = read_var_value (sym, NULL, frame);
354         }
355       CATCH (except, RETURN_MASK_ERROR)
356         {
357           val_error = (char *) alloca (strlen (except.message) + 1);
358           strcpy (val_error, except.message);
359         }
360       END_CATCH
361     }
362
363   if (SYMBOL_COMPUTED_OPS (sym) != NULL
364       && SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry != NULL
365       && print_entry_values != print_entry_values_no
366       && (print_entry_values != print_entry_values_if_needed
367           || !val || value_optimized_out (val)))
368     {
369       TRY
370         {
371           const struct symbol_computed_ops *ops;
372
373           ops = SYMBOL_COMPUTED_OPS (sym);
374           entryval = ops->read_variable_at_entry (sym, frame);
375         }
376       CATCH (except, RETURN_MASK_ERROR)
377         {
378           if (except.error != NO_ENTRY_VALUE_ERROR)
379             {
380               entryval_error = (char *) alloca (strlen (except.message) + 1);
381               strcpy (entryval_error, except.message);
382             }
383         }
384       END_CATCH
385
386       if (entryval != NULL && value_optimized_out (entryval))
387         entryval = NULL;
388
389       if (print_entry_values == print_entry_values_compact
390           || print_entry_values == print_entry_values_default)
391         {
392           /* For MI do not try to use print_entry_values_compact for ARGP.  */
393
394           if (val && entryval && !current_uiout->is_mi_like_p ())
395             {
396               struct type *type = value_type (val);
397
398               if (value_lazy (val))
399                 value_fetch_lazy (val);
400               if (value_lazy (entryval))
401                 value_fetch_lazy (entryval);
402
403               if (value_contents_eq (val, 0, entryval, 0, TYPE_LENGTH (type)))
404                 {
405                   /* Initialize it just to avoid a GCC false warning.  */
406                   struct value *val_deref = NULL, *entryval_deref;
407
408                   /* DW_AT_call_value does match with the current
409                      value.  If it is a reference still try to verify if
410                      dereferenced DW_AT_call_data_value does not differ.  */
411
412                   TRY
413                     {
414                       struct type *type_deref;
415
416                       val_deref = coerce_ref (val);
417                       if (value_lazy (val_deref))
418                         value_fetch_lazy (val_deref);
419                       type_deref = value_type (val_deref);
420
421                       entryval_deref = coerce_ref (entryval);
422                       if (value_lazy (entryval_deref))
423                         value_fetch_lazy (entryval_deref);
424
425                       /* If the reference addresses match but dereferenced
426                          content does not match print them.  */
427                       if (val != val_deref
428                           && value_contents_eq (val_deref, 0,
429                                                 entryval_deref, 0,
430                                                 TYPE_LENGTH (type_deref)))
431                         val_equal = 1;
432                     }
433                   CATCH (except, RETURN_MASK_ERROR)
434                     {
435                       /* If the dereferenced content could not be
436                          fetched do not display anything.  */
437                       if (except.error == NO_ENTRY_VALUE_ERROR)
438                         val_equal = 1;
439                       else if (except.message != NULL)
440                         {
441                           entryval_error = (char *) alloca (strlen (except.message) + 1);
442                           strcpy (entryval_error, except.message);
443                         }
444                     }
445                   END_CATCH
446
447                   /* Value was not a reference; and its content matches.  */
448                   if (val == val_deref)
449                     val_equal = 1;
450
451                   if (val_equal)
452                     entryval = NULL;
453                 }
454             }
455
456           /* Try to remove possibly duplicate error message for ENTRYARGP even
457              in MI mode.  */
458
459           if (val_error && entryval_error
460               && strcmp (val_error, entryval_error) == 0)
461             {
462               entryval_error = NULL;
463
464               /* Do not se VAL_EQUAL as the same error message may be shown for
465                  the entry value even if no entry values are present in the
466                  inferior.  */
467             }
468         }
469     }
470
471   if (entryval == NULL)
472     {
473       if (print_entry_values == print_entry_values_preferred)
474         {
475           gdb_assert (val == NULL);
476
477           TRY
478             {
479               val = read_var_value (sym, NULL, frame);
480             }
481           CATCH (except, RETURN_MASK_ERROR)
482             {
483               val_error = (char *) alloca (strlen (except.message) + 1);
484               strcpy (val_error, except.message);
485             }
486           END_CATCH
487         }
488       if (print_entry_values == print_entry_values_only
489           || print_entry_values == print_entry_values_both
490           || (print_entry_values == print_entry_values_preferred
491               && (!val || value_optimized_out (val))))
492         {
493           entryval = allocate_optimized_out_value (SYMBOL_TYPE (sym));
494           entryval_error = NULL;
495         }
496     }
497   if ((print_entry_values == print_entry_values_compact
498        || print_entry_values == print_entry_values_if_needed
499        || print_entry_values == print_entry_values_preferred)
500       && (!val || value_optimized_out (val)) && entryval != NULL)
501     {
502       val = NULL;
503       val_error = NULL;
504     }
505
506   argp->sym = sym;
507   argp->val = val;
508   argp->error = val_error ? xstrdup (val_error) : NULL;
509   if (!val && !val_error)
510     argp->entry_kind = print_entry_values_only;
511   else if ((print_entry_values == print_entry_values_compact
512            || print_entry_values == print_entry_values_default) && val_equal)
513     {
514       argp->entry_kind = print_entry_values_compact;
515       gdb_assert (!current_uiout->is_mi_like_p ());
516     }
517   else
518     argp->entry_kind = print_entry_values_no;
519
520   entryargp->sym = sym;
521   entryargp->val = entryval;
522   entryargp->error = entryval_error ? xstrdup (entryval_error) : NULL;
523   if (!entryval && !entryval_error)
524     entryargp->entry_kind = print_entry_values_no;
525   else
526     entryargp->entry_kind = print_entry_values_only;
527 }
528
529 /* Print the arguments of frame FRAME on STREAM, given the function
530    FUNC running in that frame (as a symbol), where NUM is the number
531    of arguments according to the stack frame (or -1 if the number of
532    arguments is unknown).  */
533
534 /* Note that currently the "number of arguments according to the
535    stack frame" is only known on VAX where i refers to the "number of
536    ints of arguments according to the stack frame".  */
537
538 static void
539 print_frame_args (struct symbol *func, struct frame_info *frame,
540                   int num, struct ui_file *stream)
541 {
542   struct ui_out *uiout = current_uiout;
543   int first = 1;
544   /* Offset of next stack argument beyond the one we have seen that is
545      at the highest offset, or -1 if we haven't come to a stack
546      argument yet.  */
547   long highest_offset = -1;
548   /* Number of ints of arguments that we have printed so far.  */
549   int args_printed = 0;
550   /* True if we should print arguments, false otherwise.  */
551   int print_args = strcmp (print_frame_arguments, "none");
552
553   if (func)
554     {
555       const struct block *b = SYMBOL_BLOCK_VALUE (func);
556       struct block_iterator iter;
557       struct symbol *sym;
558
559       ALL_BLOCK_SYMBOLS (b, iter, sym)
560         {
561           struct frame_arg arg, entryarg;
562
563           QUIT;
564
565           /* Keep track of the highest stack argument offset seen, and
566              skip over any kinds of symbols we don't care about.  */
567
568           if (!SYMBOL_IS_ARGUMENT (sym))
569             continue;
570
571           switch (SYMBOL_CLASS (sym))
572             {
573             case LOC_ARG:
574             case LOC_REF_ARG:
575               {
576                 long current_offset = SYMBOL_VALUE (sym);
577                 int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
578
579                 /* Compute address of next argument by adding the size of
580                    this argument and rounding to an int boundary.  */
581                 current_offset =
582                   ((current_offset + arg_size + sizeof (int) - 1)
583                    & ~(sizeof (int) - 1));
584
585                 /* If this is the highest offset seen yet, set
586                    highest_offset.  */
587                 if (highest_offset == -1
588                     || (current_offset > highest_offset))
589                   highest_offset = current_offset;
590
591                 /* Add the number of ints we're about to print to
592                    args_printed.  */
593                 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
594               }
595
596               /* We care about types of symbols, but don't need to
597                  keep track of stack offsets in them.  */
598             case LOC_REGISTER:
599             case LOC_REGPARM_ADDR:
600             case LOC_COMPUTED:
601             case LOC_OPTIMIZED_OUT:
602             default:
603               break;
604             }
605
606           /* We have to look up the symbol because arguments can have
607              two entries (one a parameter, one a local) and the one we
608              want is the local, which lookup_symbol will find for us.
609              This includes gcc1 (not gcc2) on SPARC when passing a
610              small structure and gcc2 when the argument type is float
611              and it is passed as a double and converted to float by
612              the prologue (in the latter case the type of the LOC_ARG
613              symbol is double and the type of the LOC_LOCAL symbol is
614              float).  */
615           /* But if the parameter name is null, don't try it.  Null
616              parameter names occur on the RS/6000, for traceback
617              tables.  FIXME, should we even print them?  */
618
619           if (*SYMBOL_LINKAGE_NAME (sym))
620             {
621               struct symbol *nsym;
622
623               nsym = lookup_symbol_search_name (SYMBOL_SEARCH_NAME (sym),
624                                                 b, VAR_DOMAIN).symbol;
625               gdb_assert (nsym != NULL);
626               if (SYMBOL_CLASS (nsym) == LOC_REGISTER
627                   && !SYMBOL_IS_ARGUMENT (nsym))
628                 {
629                   /* There is a LOC_ARG/LOC_REGISTER pair.  This means
630                      that it was passed on the stack and loaded into a
631                      register, or passed in a register and stored in a
632                      stack slot.  GDB 3.x used the LOC_ARG; GDB
633                      4.0-4.11 used the LOC_REGISTER.
634
635                      Reasons for using the LOC_ARG:
636
637                      (1) Because find_saved_registers may be slow for
638                          remote debugging.
639
640                      (2) Because registers are often re-used and stack
641                          slots rarely (never?) are.  Therefore using
642                          the stack slot is much less likely to print
643                          garbage.
644
645                      Reasons why we might want to use the LOC_REGISTER:
646
647                      (1) So that the backtrace prints the same value
648                          as "print foo".  I see no compelling reason
649                          why this needs to be the case; having the
650                          backtrace print the value which was passed
651                          in, and "print foo" print the value as
652                          modified within the called function, makes
653                          perfect sense to me.
654
655                      Additional note: It might be nice if "info args"
656                      displayed both values.
657
658                      One more note: There is a case with SPARC
659                      structure passing where we need to use the
660                      LOC_REGISTER, but this is dealt with by creating
661                      a single LOC_REGPARM in symbol reading.  */
662
663                   /* Leave sym (the LOC_ARG) alone.  */
664                   ;
665                 }
666               else
667                 sym = nsym;
668             }
669
670           /* Print the current arg.  */
671           if (!first)
672             uiout->text (", ");
673           uiout->wrap_hint ("    ");
674
675           if (!print_args)
676             {
677               memset (&arg, 0, sizeof (arg));
678               arg.sym = sym;
679               arg.entry_kind = print_entry_values_no;
680               memset (&entryarg, 0, sizeof (entryarg));
681               entryarg.sym = sym;
682               entryarg.entry_kind = print_entry_values_no;
683             }
684           else
685             read_frame_arg (sym, frame, &arg, &entryarg);
686
687           if (arg.entry_kind != print_entry_values_only)
688             print_frame_arg (&arg);
689
690           if (entryarg.entry_kind != print_entry_values_no)
691             {
692               if (arg.entry_kind != print_entry_values_only)
693                 {
694                   uiout->text (", ");
695                   uiout->wrap_hint ("    ");
696                 }
697
698               print_frame_arg (&entryarg);
699             }
700
701           xfree (arg.error);
702           xfree (entryarg.error);
703
704           first = 0;
705         }
706     }
707
708   /* Don't print nameless args in situations where we don't know
709      enough about the stack to find them.  */
710   if (num != -1)
711     {
712       long start;
713
714       if (highest_offset == -1)
715         start = gdbarch_frame_args_skip (get_frame_arch (frame));
716       else
717         start = highest_offset;
718
719       print_frame_nameless_args (frame, start, num - args_printed,
720                                  first, stream);
721     }
722 }
723
724 /* Set the current source and line to the location given by frame
725    FRAME, if possible.  When CENTER is true, adjust so the relevant
726    line is in the center of the next 'list'.  */
727
728 void
729 set_current_sal_from_frame (struct frame_info *frame)
730 {
731   symtab_and_line sal = find_frame_sal (frame);
732   if (sal.symtab != NULL)
733     set_current_source_symtab_and_line (sal);
734 }
735
736 /* If ON, GDB will display disassembly of the next source line when
737    execution of the program being debugged stops.
738    If AUTO (which is the default), or there's no line info to determine
739    the source line of the next instruction, display disassembly of next
740    instruction instead.  */
741
742 static enum auto_boolean disassemble_next_line;
743
744 static void
745 show_disassemble_next_line (struct ui_file *file, int from_tty,
746                                  struct cmd_list_element *c,
747                                  const char *value)
748 {
749   fprintf_filtered (file,
750                     _("Debugger's willingness to use "
751                       "disassemble-next-line is %s.\n"),
752                     value);
753 }
754
755 /* Use TRY_CATCH to catch the exception from the gdb_disassembly
756    because it will be broken by filter sometime.  */
757
758 static void
759 do_gdb_disassembly (struct gdbarch *gdbarch,
760                     int how_many, CORE_ADDR low, CORE_ADDR high)
761 {
762
763   TRY
764     {
765       gdb_disassembly (gdbarch, current_uiout,
766                        DISASSEMBLY_RAW_INSN, how_many,
767                        low, high);
768     }
769   CATCH (exception, RETURN_MASK_ERROR)
770     {
771       /* If an exception was thrown while doing the disassembly, print
772          the error message, to give the user a clue of what happened.  */
773       exception_print (gdb_stderr, exception);
774     }
775   END_CATCH
776 }
777
778 /* Print information about frame FRAME.  The output is format according
779    to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS.  The meaning of
780    PRINT_WHAT is:
781    
782    SRC_LINE: Print only source line.
783    LOCATION: Print only location.
784    SRC_AND_LOC: Print location and source line.
785
786    Used in "where" output, and to emit breakpoint or step
787    messages.  */
788
789 void
790 print_frame_info (struct frame_info *frame, int print_level,
791                   enum print_what print_what, int print_args,
792                   int set_current_sal)
793 {
794   struct gdbarch *gdbarch = get_frame_arch (frame);
795   int source_print;
796   int location_print;
797   struct ui_out *uiout = current_uiout;
798
799   if (get_frame_type (frame) == DUMMY_FRAME
800       || get_frame_type (frame) == SIGTRAMP_FRAME
801       || get_frame_type (frame) == ARCH_FRAME)
802     {
803       ui_out_emit_tuple tuple_emitter (uiout, "frame");
804
805       annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
806                             gdbarch, get_frame_pc (frame));
807
808       /* Do this regardless of SOURCE because we don't have any source
809          to list for this frame.  */
810       if (print_level)
811         {
812           uiout->text ("#");
813           uiout->field_fmt_int (2, ui_left, "level",
814                                 frame_relative_level (frame));
815         }
816       if (uiout->is_mi_like_p ())
817         {
818           annotate_frame_address ();
819           uiout->field_core_addr ("addr",
820                                   gdbarch, get_frame_pc (frame));
821           annotate_frame_address_end ();
822         }
823
824       if (get_frame_type (frame) == DUMMY_FRAME)
825         {
826           annotate_function_call ();
827           uiout->field_string ("func", "<function called from gdb>",
828                                ui_out_style_kind::FUNCTION);
829         }
830       else if (get_frame_type (frame) == SIGTRAMP_FRAME)
831         {
832           annotate_signal_handler_caller ();
833           uiout->field_string ("func", "<signal handler called>",
834                                ui_out_style_kind::FUNCTION);
835         }
836       else if (get_frame_type (frame) == ARCH_FRAME)
837         {
838           uiout->field_string ("func", "<cross-architecture call>",
839                                ui_out_style_kind::FUNCTION);
840         }
841       uiout->text ("\n");
842       annotate_frame_end ();
843
844       /* If disassemble-next-line is set to auto or on output the next
845          instruction.  */
846       if (disassemble_next_line == AUTO_BOOLEAN_AUTO
847           || disassemble_next_line == AUTO_BOOLEAN_TRUE)
848         do_gdb_disassembly (get_frame_arch (frame), 1,
849                             get_frame_pc (frame), get_frame_pc (frame) + 1);
850
851       return;
852     }
853
854   /* If FRAME is not the innermost frame, that normally means that
855      FRAME->pc points to *after* the call instruction, and we want to
856      get the line containing the call, never the next line.  But if
857      the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
858      next frame was not entered as the result of a call, and we want
859      to get the line containing FRAME->pc.  */
860   symtab_and_line sal = find_frame_sal (frame);
861
862   location_print = (print_what == LOCATION 
863                     || print_what == LOC_AND_ADDRESS
864                     || print_what == SRC_AND_LOC);
865
866   if (location_print || !sal.symtab)
867     print_frame (frame, print_level, print_what, print_args, sal);
868
869   source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
870
871   /* If disassemble-next-line is set to auto or on and doesn't have
872      the line debug messages for $pc, output the next instruction.  */
873   if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
874        || disassemble_next_line == AUTO_BOOLEAN_TRUE)
875       && source_print && !sal.symtab)
876     do_gdb_disassembly (get_frame_arch (frame), 1,
877                         get_frame_pc (frame), get_frame_pc (frame) + 1);
878
879   if (source_print && sal.symtab)
880     {
881       int done = 0;
882       int mid_statement = ((print_what == SRC_LINE)
883                            && frame_show_address (frame, sal));
884
885       if (annotation_level)
886         done = identify_source_line (sal.symtab, sal.line, mid_statement,
887                                      get_frame_pc (frame));
888       if (!done)
889         {
890           if (deprecated_print_frame_info_listing_hook)
891             deprecated_print_frame_info_listing_hook (sal.symtab, 
892                                                       sal.line, 
893                                                       sal.line + 1, 0);
894           else
895             {
896               struct value_print_options opts;
897
898               get_user_print_options (&opts);
899               /* We used to do this earlier, but that is clearly
900                  wrong.  This function is used by many different
901                  parts of gdb, including normal_stop in infrun.c,
902                  which uses this to print out the current PC
903                  when we stepi/nexti into the middle of a source
904                  line.  Only the command line really wants this
905                  behavior.  Other UIs probably would like the
906                  ability to decide for themselves if it is desired.  */
907               if (opts.addressprint && mid_statement)
908                 {
909                   uiout->field_core_addr ("addr",
910                                           gdbarch, get_frame_pc (frame));
911                   uiout->text ("\t");
912                 }
913
914               print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
915             }
916         }
917
918       /* If disassemble-next-line is set to on and there is line debug
919          messages, output assembly codes for next line.  */
920       if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
921         do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
922     }
923
924   if (set_current_sal)
925     {
926       CORE_ADDR pc;
927
928       if (get_frame_pc_if_available (frame, &pc))
929         set_last_displayed_sal (1, sal.pspace, pc, sal.symtab, sal.line);
930       else
931         set_last_displayed_sal (0, 0, 0, 0, 0);
932     }
933
934   annotate_frame_end ();
935
936   gdb_flush (gdb_stdout);
937 }
938
939 /* Remember the last symtab and line we displayed, which we use e.g.
940  * as the place to put a breakpoint when the `break' command is
941  * invoked with no arguments.  */
942
943 static void
944 set_last_displayed_sal (int valid, struct program_space *pspace,
945                         CORE_ADDR addr, struct symtab *symtab,
946                         int line)
947 {
948   last_displayed_sal_valid = valid;
949   last_displayed_pspace = pspace;
950   last_displayed_addr = addr;
951   last_displayed_symtab = symtab;
952   last_displayed_line = line;
953   if (valid && pspace == NULL)
954     {
955       clear_last_displayed_sal ();
956       internal_error (__FILE__, __LINE__,
957                       _("Trying to set NULL pspace."));
958     }
959 }
960
961 /* Forget the last sal we displayed.  */
962
963 void
964 clear_last_displayed_sal (void)
965 {
966   last_displayed_sal_valid = 0;
967   last_displayed_pspace = 0;
968   last_displayed_addr = 0;
969   last_displayed_symtab = 0;
970   last_displayed_line = 0;
971 }
972
973 /* Is our record of the last sal we displayed valid?  If not,
974  * the get_last_displayed_* functions will return NULL or 0, as
975  * appropriate.  */
976
977 int
978 last_displayed_sal_is_valid (void)
979 {
980   return last_displayed_sal_valid;
981 }
982
983 /* Get the pspace of the last sal we displayed, if it's valid.  */
984
985 struct program_space *
986 get_last_displayed_pspace (void)
987 {
988   if (last_displayed_sal_valid)
989     return last_displayed_pspace;
990   return 0;
991 }
992
993 /* Get the address of the last sal we displayed, if it's valid.  */
994
995 CORE_ADDR
996 get_last_displayed_addr (void)
997 {
998   if (last_displayed_sal_valid)
999     return last_displayed_addr;
1000   return 0;
1001 }
1002
1003 /* Get the symtab of the last sal we displayed, if it's valid.  */
1004
1005 struct symtab*
1006 get_last_displayed_symtab (void)
1007 {
1008   if (last_displayed_sal_valid)
1009     return last_displayed_symtab;
1010   return 0;
1011 }
1012
1013 /* Get the line of the last sal we displayed, if it's valid.  */
1014
1015 int
1016 get_last_displayed_line (void)
1017 {
1018   if (last_displayed_sal_valid)
1019     return last_displayed_line;
1020   return 0;
1021 }
1022
1023 /* Get the last sal we displayed, if it's valid.  */
1024
1025 symtab_and_line
1026 get_last_displayed_sal ()
1027 {
1028   symtab_and_line sal;
1029
1030   if (last_displayed_sal_valid)
1031     {
1032       sal.pspace = last_displayed_pspace;
1033       sal.pc = last_displayed_addr;
1034       sal.symtab = last_displayed_symtab;
1035       sal.line = last_displayed_line;
1036     }
1037
1038   return sal;
1039 }
1040
1041
1042 /* Attempt to obtain the name, FUNLANG and optionally FUNCP of the function
1043    corresponding to FRAME.  */
1044
1045 gdb::unique_xmalloc_ptr<char>
1046 find_frame_funname (struct frame_info *frame, enum language *funlang,
1047                     struct symbol **funcp)
1048 {
1049   struct symbol *func;
1050   gdb::unique_xmalloc_ptr<char> funname;
1051
1052   *funlang = language_unknown;
1053   if (funcp)
1054     *funcp = NULL;
1055
1056   func = get_frame_function (frame);
1057   if (func)
1058     {
1059       /* In certain pathological cases, the symtabs give the wrong
1060          function (when we are in the first function in a file which
1061          is compiled without debugging symbols, the previous function
1062          is compiled with debugging symbols, and the "foo.o" symbol
1063          that is supposed to tell us where the file with debugging
1064          symbols ends has been truncated by ar because it is longer
1065          than 15 characters).  This also occurs if the user uses asm()
1066          to create a function but not stabs for it (in a file compiled
1067          with -g).
1068
1069          So look in the minimal symbol tables as well, and if it comes
1070          up with a larger address for the function use that instead.
1071          I don't think this can ever cause any problems; there
1072          shouldn't be any minimal symbols in the middle of a function;
1073          if this is ever changed many parts of GDB will need to be
1074          changed (and we'll create a find_pc_minimal_function or some
1075          such).  */
1076
1077       struct bound_minimal_symbol msymbol;
1078
1079       /* Don't attempt to do this for inlined functions, which do not
1080          have a corresponding minimal symbol.  */
1081       if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
1082         msymbol
1083           = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
1084       else
1085         memset (&msymbol, 0, sizeof (msymbol));
1086
1087       if (msymbol.minsym != NULL
1088           && (BMSYMBOL_VALUE_ADDRESS (msymbol)
1089               > BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (func))))
1090         {
1091           /* We also don't know anything about the function besides
1092              its address and name.  */
1093           func = 0;
1094           funname.reset (xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym)));
1095           *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1096         }
1097       else
1098         {
1099           const char *print_name = SYMBOL_PRINT_NAME (func);
1100
1101           *funlang = SYMBOL_LANGUAGE (func);
1102           if (funcp)
1103             *funcp = func;
1104           if (*funlang == language_cplus)
1105             {
1106               /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1107                  to display the demangled name that we already have
1108                  stored in the symbol table, but we stored a version
1109                  with DMGL_PARAMS turned on, and here we don't want to
1110                  display parameters.  So remove the parameters.  */
1111               funname = cp_remove_params (print_name);
1112             }
1113
1114           /* If we didn't hit the C++ case above, set *funname
1115              here.  */
1116           if (funname == NULL)
1117             funname.reset (xstrdup (print_name));
1118         }
1119     }
1120   else
1121     {
1122       struct bound_minimal_symbol msymbol;
1123       CORE_ADDR pc;
1124
1125       if (!get_frame_address_in_block_if_available (frame, &pc))
1126         return funname;
1127
1128       msymbol = lookup_minimal_symbol_by_pc (pc);
1129       if (msymbol.minsym != NULL)
1130         {
1131           funname.reset (xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym)));
1132           *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1133         }
1134     }
1135
1136   return funname;
1137 }
1138
1139 static void
1140 print_frame (struct frame_info *frame, int print_level,
1141              enum print_what print_what, int print_args,
1142              struct symtab_and_line sal)
1143 {
1144   struct gdbarch *gdbarch = get_frame_arch (frame);
1145   struct ui_out *uiout = current_uiout;
1146   enum language funlang = language_unknown;
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   gdb::unique_xmalloc_ptr<char> funname
1155     = find_frame_funname (frame, &funlang, &func);
1156
1157   annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1158                         gdbarch, pc);
1159
1160   {
1161     ui_out_emit_tuple tuple_emitter (uiout, "frame");
1162
1163     if (print_level)
1164       {
1165         uiout->text ("#");
1166         uiout->field_fmt_int (2, ui_left, "level",
1167                               frame_relative_level (frame));
1168       }
1169     get_user_print_options (&opts);
1170     if (opts.addressprint)
1171       if (!sal.symtab
1172           || frame_show_address (frame, sal)
1173           || print_what == LOC_AND_ADDRESS)
1174         {
1175           annotate_frame_address ();
1176           if (pc_p)
1177             uiout->field_core_addr ("addr", gdbarch, pc);
1178           else
1179             uiout->field_string ("addr", "<unavailable>");
1180           annotate_frame_address_end ();
1181           uiout->text (" in ");
1182         }
1183     annotate_frame_function_name ();
1184
1185     string_file stb;
1186     fprintf_symbol_filtered (&stb, funname ? funname.get () : "??",
1187                              funlang, DMGL_ANSI);
1188     uiout->field_stream ("func", stb, ui_out_style_kind::FUNCTION);
1189     uiout->wrap_hint ("   ");
1190     annotate_frame_args ();
1191
1192     uiout->text (" (");
1193     if (print_args)
1194       {
1195         int numargs;
1196
1197         if (gdbarch_frame_num_args_p (gdbarch))
1198           {
1199             numargs = gdbarch_frame_num_args (gdbarch, frame);
1200             gdb_assert (numargs >= 0);
1201           }
1202         else
1203           numargs = -1;
1204     
1205         {
1206           ui_out_emit_list list_emitter (uiout, "args");
1207           TRY
1208             {
1209               print_frame_args (func, frame, numargs, gdb_stdout);
1210             }
1211           CATCH (e, RETURN_MASK_ERROR)
1212             {
1213             }
1214           END_CATCH
1215
1216             /* FIXME: ARGS must be a list.  If one argument is a string it
1217                will have " that will not be properly escaped.  */
1218             }
1219         QUIT;
1220       }
1221     uiout->text (")");
1222     if (sal.symtab)
1223       {
1224         const char *filename_display;
1225       
1226         filename_display = symtab_to_filename_for_display (sal.symtab);
1227         annotate_frame_source_begin ();
1228         uiout->wrap_hint ("   ");
1229         uiout->text (" at ");
1230         annotate_frame_source_file ();
1231         uiout->field_string ("file", filename_display, ui_out_style_kind::FILE);
1232         if (uiout->is_mi_like_p ())
1233           {
1234             const char *fullname = symtab_to_fullname (sal.symtab);
1235
1236             uiout->field_string ("fullname", fullname);
1237           }
1238         annotate_frame_source_file_end ();
1239         uiout->text (":");
1240         annotate_frame_source_line ();
1241         uiout->field_int ("line", sal.line);
1242         annotate_frame_source_end ();
1243       }
1244
1245     if (pc_p && (funname == NULL || sal.symtab == NULL))
1246       {
1247         char *lib = solib_name_from_address (get_frame_program_space (frame),
1248                                              get_frame_pc (frame));
1249
1250         if (lib)
1251           {
1252             annotate_frame_where ();
1253             uiout->wrap_hint ("  ");
1254             uiout->text (" from ");
1255             uiout->field_string ("from", lib);
1256           }
1257       }
1258     if (uiout->is_mi_like_p ())
1259       uiout->field_string ("arch",
1260                            (gdbarch_bfd_arch_info (gdbarch))->printable_name);
1261   }
1262
1263   uiout->text ("\n");
1264 }
1265 \f
1266
1267 /* Completion function for "frame function", "info frame function", and
1268    "select-frame function" commands.  */
1269
1270 void
1271 frame_selection_by_function_completer (struct cmd_list_element *ignore,
1272                                        completion_tracker &tracker,
1273                                        const char *text, const char *word)
1274 {
1275   /* This is used to complete function names within a stack.  It would be
1276      nice if we only offered functions that were actually in the stack.
1277      However, this would mean unwinding the stack to completion, which
1278      could take too long, or on a corrupted stack, possibly not end.
1279      Instead, we offer all symbol names as a safer choice.  */
1280   collect_symbol_completion_matches (tracker,
1281                                      complete_symbol_mode::EXPRESSION,
1282                                      symbol_name_match_type::EXPRESSION,
1283                                      text, word);
1284 }
1285
1286 /* Core of all the "info frame" sub-commands.  Print information about a
1287    frame FI.  If SELECTED_FRAME_P is true then the user didn't provide a
1288    frame specification, they just entered 'info frame'.  If the user did
1289    provide a frame specification (for example 'info frame 0', 'info frame
1290    level 1') then SELECTED_FRAME_P will be false.  */
1291
1292 static void
1293 info_frame_command_core (struct frame_info *fi, bool selected_frame_p)
1294 {
1295   struct symbol *func;
1296   struct symtab *s;
1297   struct frame_info *calling_frame_info;
1298   int numregs;
1299   const char *funname = 0;
1300   enum language funlang = language_unknown;
1301   const char *pc_regname;
1302   struct gdbarch *gdbarch;
1303   CORE_ADDR frame_pc;
1304   int frame_pc_p;
1305   /* Initialize it to avoid "may be used uninitialized" warning.  */
1306   CORE_ADDR caller_pc = 0;
1307   int caller_pc_p = 0;
1308
1309   gdbarch = get_frame_arch (fi);
1310
1311   /* Name of the value returned by get_frame_pc().  Per comments, "pc"
1312      is not a good name.  */
1313   if (gdbarch_pc_regnum (gdbarch) >= 0)
1314     /* OK, this is weird.  The gdbarch_pc_regnum hardware register's value can
1315        easily not match that of the internal value returned by
1316        get_frame_pc().  */
1317     pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1318   else
1319     /* But then, this is weird to.  Even without gdbarch_pc_regnum, an
1320        architectures will often have a hardware register called "pc",
1321        and that register's value, again, can easily not match
1322        get_frame_pc().  */
1323     pc_regname = "pc";
1324
1325   frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1326   func = get_frame_function (fi);
1327   symtab_and_line sal = find_frame_sal (fi);
1328   s = sal.symtab;
1329   gdb::unique_xmalloc_ptr<char> func_only;
1330   if (func)
1331     {
1332       funname = SYMBOL_PRINT_NAME (func);
1333       funlang = SYMBOL_LANGUAGE (func);
1334       if (funlang == language_cplus)
1335         {
1336           /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1337              to display the demangled name that we already have
1338              stored in the symbol table, but we stored a version
1339              with DMGL_PARAMS turned on, and here we don't want to
1340              display parameters.  So remove the parameters.  */
1341           func_only = cp_remove_params (funname);
1342
1343           if (func_only)
1344             funname = func_only.get ();
1345         }
1346     }
1347   else if (frame_pc_p)
1348     {
1349       struct bound_minimal_symbol msymbol;
1350
1351       msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1352       if (msymbol.minsym != NULL)
1353         {
1354           funname = MSYMBOL_PRINT_NAME (msymbol.minsym);
1355           funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1356         }
1357     }
1358   calling_frame_info = get_prev_frame (fi);
1359
1360   if (selected_frame_p && frame_relative_level (fi) >= 0)
1361     {
1362       printf_filtered (_("Stack level %d, frame at "),
1363                        frame_relative_level (fi));
1364     }
1365   else
1366     {
1367       printf_filtered (_("Stack frame at "));
1368     }
1369   fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
1370   printf_filtered (":\n");
1371   printf_filtered (" %s = ", pc_regname);
1372   if (frame_pc_p)
1373     fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1374   else
1375     fputs_filtered ("<unavailable>", gdb_stdout);
1376
1377   wrap_here ("   ");
1378   if (funname)
1379     {
1380       printf_filtered (" in ");
1381       fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1382                                DMGL_ANSI | DMGL_PARAMS);
1383     }
1384   wrap_here ("   ");
1385   if (sal.symtab)
1386     printf_filtered (" (%s:%d)", symtab_to_filename_for_display (sal.symtab),
1387                      sal.line);
1388   puts_filtered ("; ");
1389   wrap_here ("    ");
1390   printf_filtered ("saved %s = ", pc_regname);
1391
1392   if (!frame_id_p (frame_unwind_caller_id (fi)))
1393     val_print_not_saved (gdb_stdout);
1394   else
1395     {
1396       TRY
1397         {
1398           caller_pc = frame_unwind_caller_pc (fi);
1399           caller_pc_p = 1;
1400         }
1401       CATCH (ex, RETURN_MASK_ERROR)
1402         {
1403           switch (ex.error)
1404             {
1405             case NOT_AVAILABLE_ERROR:
1406               val_print_unavailable (gdb_stdout);
1407               break;
1408             case OPTIMIZED_OUT_ERROR:
1409               val_print_not_saved (gdb_stdout);
1410               break;
1411             default:
1412               fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1413               break;
1414             }
1415         }
1416       END_CATCH
1417     }
1418
1419   if (caller_pc_p)
1420     fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
1421   printf_filtered ("\n");
1422
1423   if (calling_frame_info == NULL)
1424     {
1425       enum unwind_stop_reason reason;
1426
1427       reason = get_frame_unwind_stop_reason (fi);
1428       if (reason != UNWIND_NO_REASON)
1429         printf_filtered (_(" Outermost frame: %s\n"),
1430                          frame_stop_reason_string (fi));
1431     }
1432   else if (get_frame_type (fi) == TAILCALL_FRAME)
1433     puts_filtered (" tail call frame");
1434   else if (get_frame_type (fi) == INLINE_FRAME)
1435     printf_filtered (" inlined into frame %d",
1436                      frame_relative_level (get_prev_frame (fi)));
1437   else
1438     {
1439       printf_filtered (" called by frame at ");
1440       fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
1441                       gdb_stdout);
1442     }
1443   if (get_next_frame (fi) && calling_frame_info)
1444     puts_filtered (",");
1445   wrap_here ("   ");
1446   if (get_next_frame (fi))
1447     {
1448       printf_filtered (" caller of frame at ");
1449       fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
1450                       gdb_stdout);
1451     }
1452   if (get_next_frame (fi) || calling_frame_info)
1453     puts_filtered ("\n");
1454
1455   if (s)
1456     printf_filtered (" source language %s.\n",
1457                      language_str (s->language));
1458
1459   {
1460     /* Address of the argument list for this frame, or 0.  */
1461     CORE_ADDR arg_list = get_frame_args_address (fi);
1462     /* Number of args for this frame, or -1 if unknown.  */
1463     int numargs;
1464
1465     if (arg_list == 0)
1466       printf_filtered (" Arglist at unknown address.\n");
1467     else
1468       {
1469         printf_filtered (" Arglist at ");
1470         fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1471         printf_filtered (",");
1472
1473         if (!gdbarch_frame_num_args_p (gdbarch))
1474           {
1475             numargs = -1;
1476             puts_filtered (" args: ");
1477           }
1478         else
1479           {
1480             numargs = gdbarch_frame_num_args (gdbarch, fi);
1481             gdb_assert (numargs >= 0);
1482             if (numargs == 0)
1483               puts_filtered (" no args.");
1484             else if (numargs == 1)
1485               puts_filtered (" 1 arg: ");
1486             else
1487               printf_filtered (" %d args: ", numargs);
1488           }
1489         print_frame_args (func, fi, numargs, gdb_stdout);
1490         puts_filtered ("\n");
1491       }
1492   }
1493   {
1494     /* Address of the local variables for this frame, or 0.  */
1495     CORE_ADDR arg_list = get_frame_locals_address (fi);
1496
1497     if (arg_list == 0)
1498       printf_filtered (" Locals at unknown address,");
1499     else
1500       {
1501         printf_filtered (" Locals at ");
1502         fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1503         printf_filtered (",");
1504       }
1505   }
1506
1507   /* Print as much information as possible on the location of all the
1508      registers.  */
1509   {
1510     int count;
1511     int i;
1512     int need_nl = 1;
1513     int sp_regnum = gdbarch_sp_regnum (gdbarch);
1514
1515     /* The sp is special; what's displayed isn't the save address, but
1516        the value of the previous frame's sp.  This is a legacy thing,
1517        at one stage the frame cached the previous frame's SP instead
1518        of its address, hence it was easiest to just display the cached
1519        value.  */
1520     if (sp_regnum >= 0)
1521       {
1522         struct value *value = frame_unwind_register_value (fi, sp_regnum);
1523         gdb_assert (value != NULL);
1524
1525         if (!value_optimized_out (value) && value_entirely_available (value))
1526           {
1527             if (VALUE_LVAL (value) == not_lval)
1528               {
1529                 CORE_ADDR sp;
1530                 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1531                 int sp_size = register_size (gdbarch, sp_regnum);
1532
1533                 sp = extract_unsigned_integer (value_contents_all (value),
1534                                                sp_size, byte_order);
1535
1536                 printf_filtered (" Previous frame's sp is ");
1537                 fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
1538                 printf_filtered ("\n");
1539               }
1540             else if (VALUE_LVAL (value) == lval_memory)
1541               {
1542                 printf_filtered (" Previous frame's sp at ");
1543                 fputs_filtered (paddress (gdbarch, value_address (value)),
1544                                 gdb_stdout);
1545                 printf_filtered ("\n");
1546               }
1547             else if (VALUE_LVAL (value) == lval_register)
1548               {
1549                 printf_filtered (" Previous frame's sp in %s\n",
1550                                  gdbarch_register_name (gdbarch,
1551                                                         VALUE_REGNUM (value)));
1552               }
1553
1554             release_value (value);
1555             need_nl = 0;
1556           }
1557         /* else keep quiet.  */
1558       }
1559
1560     count = 0;
1561     numregs = gdbarch_num_cooked_regs (gdbarch);
1562     for (i = 0; i < numregs; i++)
1563       if (i != sp_regnum
1564           && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1565         {
1566           enum lval_type lval;
1567           int optimized;
1568           int unavailable;
1569           CORE_ADDR addr;
1570           int realnum;
1571
1572           /* Find out the location of the saved register without
1573              fetching the corresponding value.  */
1574           frame_register_unwind (fi, i, &optimized, &unavailable,
1575                                  &lval, &addr, &realnum, NULL);
1576           /* For moment, only display registers that were saved on the
1577              stack.  */
1578           if (!optimized && !unavailable && lval == lval_memory)
1579             {
1580               if (count == 0)
1581                 puts_filtered (" Saved registers:\n ");
1582               else
1583                 puts_filtered (",");
1584               wrap_here (" ");
1585               printf_filtered (" %s at ",
1586                                gdbarch_register_name (gdbarch, i));
1587               fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1588               count++;
1589             }
1590         }
1591     if (count || need_nl)
1592       puts_filtered ("\n");
1593   }
1594 }
1595
1596 /* Return the innermost frame at level LEVEL.  */
1597
1598 static struct frame_info *
1599 leading_innermost_frame (int level)
1600 {
1601   struct frame_info *leading;
1602
1603   leading = get_current_frame ();
1604
1605   gdb_assert (level >= 0);
1606
1607   while (leading != nullptr && level)
1608     {
1609       QUIT;
1610       leading = get_prev_frame (leading);
1611       level--;
1612     }
1613
1614   return leading;
1615 }
1616
1617 /* Return the starting frame needed to handle COUNT outermost frames.  */
1618
1619 static struct frame_info *
1620 trailing_outermost_frame (int count)
1621 {
1622   struct frame_info *current;
1623   struct frame_info *trailing;
1624
1625   trailing = get_current_frame ();
1626
1627   gdb_assert (count > 0);
1628
1629   current = trailing;
1630   while (current != nullptr && count--)
1631     {
1632       QUIT;
1633       current = get_prev_frame (current);
1634     }
1635
1636   /* Will stop when CURRENT reaches the top of the stack.
1637      TRAILING will be COUNT below it.  */
1638   while (current != nullptr)
1639     {
1640       QUIT;
1641       trailing = get_prev_frame (trailing);
1642       current = get_prev_frame (current);
1643     }
1644
1645   return trailing;
1646 }
1647
1648 /* The core of all the "select-frame" sub-commands.  Just wraps a call to
1649    SELECT_FRAME.  */
1650
1651 static void
1652 select_frame_command_core (struct frame_info *fi, bool ignored)
1653 {
1654   struct frame_info *prev_frame = get_selected_frame_if_set ();
1655   select_frame (fi);
1656   if (get_selected_frame_if_set () != prev_frame)
1657     gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
1658 }
1659
1660 /* See stack.h.  */
1661
1662 void
1663 select_frame_for_mi (struct frame_info *fi)
1664 {
1665   select_frame_command_core (fi, FALSE /* Ignored.  */);
1666 }
1667
1668 /* The core of all the "frame" sub-commands.  Select frame FI, and if this
1669    means we change frame send out a change notification (otherwise, just
1670    reprint the current frame summary).   */
1671
1672 static void
1673 frame_command_core (struct frame_info *fi, bool ignored)
1674 {
1675   struct frame_info *prev_frame = get_selected_frame_if_set ();
1676
1677   select_frame (fi);
1678   if (get_selected_frame_if_set () != prev_frame)
1679     gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
1680   else
1681     print_selected_thread_frame (current_uiout, USER_SELECTED_FRAME);
1682 }
1683
1684 /* The three commands 'frame', 'select-frame', and 'info frame' all have a
1685    common set of sub-commands that allow a specific frame to be selected.
1686    All of the sub-command functions are static methods within this class
1687    template which is then instantiated below.  The template parameter is a
1688    callback used to implement the functionality of the base command
1689    ('frame', 'select-frame', or 'info frame').
1690
1691    In the template parameter FI is the frame being selected.  The
1692    SELECTED_FRAME_P flag is true if the frame being selected was done by
1693    default, which happens when the user uses the base command with no
1694    arguments.  For example the commands 'info frame', 'select-frame',
1695    'frame' will all cause SELECTED_FRAME_P to be true.  In all other cases
1696    SELECTED_FRAME_P is false.  */
1697
1698 template <void (*FPTR) (struct frame_info *fi, bool selected_frame_p)>
1699 class frame_command_helper
1700 {
1701 public:
1702
1703   /* The "frame level" family of commands.  The ARG is an integer that is
1704      the frame's level in the stack.  */
1705   static void
1706   level (const char *arg, int from_tty)
1707   {
1708     int level = value_as_long (parse_and_eval (arg));
1709     struct frame_info *fid
1710       = find_relative_frame (get_current_frame (), &level);
1711     if (level != 0)
1712       error (_("No frame at level %s."), arg);
1713     FPTR (fid, false);
1714   }
1715
1716   /* The "frame address" family of commands.  ARG is a stack-pointer
1717      address for an existing frame.  This command does not allow new
1718      frames to be created.  */
1719
1720   static void
1721   address (const char *arg, int from_tty)
1722   {
1723     CORE_ADDR addr = value_as_address (parse_and_eval (arg));
1724     struct frame_info *fid = find_frame_for_address (addr);
1725     if (fid == NULL)
1726       error (_("No frame at address %s."), arg);
1727     FPTR (fid, false);
1728   }
1729
1730   /* The "frame view" family of commands.  ARG is one or two addresses and
1731      is used to view a frame that might be outside the current backtrace.
1732      The addresses are stack-pointer address, and (optional) pc-address.  */
1733
1734   static void
1735   view (const char *args, int from_tty)
1736   {
1737     struct frame_info *fid;
1738
1739     if (args == NULL)
1740     error (_("Missing address argument to view a frame"));
1741
1742     gdb_argv argv (args);
1743
1744     if (argv.count () == 2)
1745       {
1746         CORE_ADDR addr[2];
1747
1748         addr [0] = value_as_address (parse_and_eval (argv[0]));
1749         addr [1] = value_as_address (parse_and_eval (argv[1]));
1750         fid = create_new_frame (addr[0], addr[1]);
1751       }
1752     else
1753       {
1754         CORE_ADDR addr = value_as_address (parse_and_eval (argv[0]));
1755         fid = create_new_frame (addr, false);
1756       }
1757     FPTR (fid, false);
1758   }
1759
1760   /* The "frame function" family of commands.  ARG is the name of a
1761      function within the stack, the first function (searching from frame
1762      0) with that name will be selected.  */
1763
1764   static void
1765   function (const char *arg, int from_tty)
1766   {
1767     if (arg == NULL)
1768       error (_("Missing function name argument"));
1769     struct frame_info *fid = find_frame_for_function (arg);
1770     if (fid == NULL)
1771       error (_("No frame for function \"%s\"."), arg);
1772     FPTR (fid, false);
1773   }
1774
1775   /* The "frame" base command, that is, when no sub-command is specified.
1776      If one argument is provided then we assume that this is a frame's
1777      level as historically, this was the supported command syntax that was
1778      used most often.
1779
1780      If no argument is provided, then the current frame is selected.  */
1781
1782   static void
1783   base_command (const char *arg, int from_tty)
1784   {
1785     if (arg == NULL)
1786       FPTR (get_selected_frame (_("No stack.")), true);
1787     else
1788       level (arg, from_tty);
1789   }
1790 };
1791
1792 /* Instantiate three FRAME_COMMAND_HELPER instances to implement the
1793    sub-commands for 'info frame', 'frame', and 'select-frame' commands.  */
1794
1795 static frame_command_helper <info_frame_command_core> info_frame_cmd;
1796 static frame_command_helper <frame_command_core> frame_cmd;
1797 static frame_command_helper <select_frame_command_core> select_frame_cmd;
1798
1799 /* Print briefly all stack frames or just the innermost COUNT_EXP
1800    frames.  */
1801
1802 static void
1803 backtrace_command_1 (const char *count_exp, frame_filter_flags flags,
1804                      int no_filters, int from_tty)
1805 {
1806   struct frame_info *fi;
1807   int count;
1808   int py_start = 0, py_end = 0;
1809   enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
1810
1811   if (!target_has_stack)
1812     error (_("No stack."));
1813
1814   if (count_exp)
1815     {
1816       count = parse_and_eval_long (count_exp);
1817       if (count < 0)
1818         py_start = count;
1819       else
1820         {
1821           py_start = 0;
1822           /* The argument to apply_ext_lang_frame_filter is the number
1823              of the final frame to print, and frames start at 0.  */
1824           py_end = count - 1;
1825         }
1826     }
1827   else
1828     {
1829       py_end = -1;
1830       count = -1;
1831     }
1832
1833   if (! no_filters)
1834     {
1835       enum ext_lang_frame_args arg_type;
1836
1837       flags |= PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
1838       if (from_tty)
1839         flags |= PRINT_MORE_FRAMES;
1840
1841       if (!strcmp (print_frame_arguments, "scalars"))
1842         arg_type = CLI_SCALAR_VALUES;
1843       else if (!strcmp (print_frame_arguments, "all"))
1844         arg_type = CLI_ALL_VALUES;
1845       else
1846         arg_type = NO_VALUES;
1847
1848       result = apply_ext_lang_frame_filter (get_current_frame (), flags,
1849                                             arg_type, current_uiout,
1850                                             py_start, py_end);
1851     }
1852
1853   /* Run the inbuilt backtrace if there are no filters registered, or
1854      "no-filters" has been specified from the command.  */
1855   if (no_filters ||  result == EXT_LANG_BT_NO_FILTERS)
1856     {
1857       struct frame_info *trailing;
1858
1859       /* The following code must do two things.  First, it must set the
1860          variable TRAILING to the frame from which we should start
1861          printing.  Second, it must set the variable count to the number
1862          of frames which we should print, or -1 if all of them.  */
1863
1864       if (count_exp != NULL && count < 0)
1865         {
1866           trailing = trailing_outermost_frame (-count);
1867           count = -1;
1868         }
1869       else
1870         trailing = get_current_frame ();
1871
1872       for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
1873         {
1874           QUIT;
1875
1876           /* Don't use print_stack_frame; if an error() occurs it probably
1877              means further attempts to backtrace would fail (on the other
1878              hand, perhaps the code does or could be fixed to make sure
1879              the frame->prev field gets set to NULL in that case).  */
1880
1881           print_frame_info (fi, 1, LOCATION, 1, 0);
1882           if ((flags & PRINT_LOCALS) != 0)
1883             {
1884               struct frame_id frame_id = get_frame_id (fi);
1885
1886               print_frame_local_vars (fi, false, NULL, NULL, 1, gdb_stdout);
1887
1888               /* print_frame_local_vars invalidates FI.  */
1889               fi = frame_find_by_id (frame_id);
1890               if (fi == NULL)
1891                 {
1892                   trailing = NULL;
1893                   warning (_("Unable to restore previously selected frame."));
1894                   break;
1895                 }
1896             }
1897
1898           /* Save the last frame to check for error conditions.  */
1899           trailing = fi;
1900         }
1901
1902       /* If we've stopped before the end, mention that.  */
1903       if (fi && from_tty)
1904         printf_filtered (_("(More stack frames follow...)\n"));
1905
1906       /* If we've run out of frames, and the reason appears to be an error
1907          condition, print it.  */
1908       if (fi == NULL && trailing != NULL)
1909         {
1910           enum unwind_stop_reason reason;
1911
1912           reason = get_frame_unwind_stop_reason (trailing);
1913           if (reason >= UNWIND_FIRST_ERROR)
1914             printf_filtered (_("Backtrace stopped: %s\n"),
1915                              frame_stop_reason_string (trailing));
1916         }
1917     }
1918 }
1919
1920 static void
1921 backtrace_command (const char *arg, int from_tty)
1922 {
1923   bool filters = true;
1924   frame_filter_flags flags = 0;
1925
1926   if (arg)
1927     {
1928       bool done = false;
1929
1930       while (!done)
1931         {
1932           const char *save_arg = arg;
1933           std::string this_arg = extract_arg (&arg);
1934
1935           if (this_arg.empty ())
1936             break;
1937
1938           if (subset_compare (this_arg.c_str (), "no-filters"))
1939             filters = false;
1940           else if (subset_compare (this_arg.c_str (), "full"))
1941             flags |= PRINT_LOCALS;
1942           else if (subset_compare (this_arg.c_str (), "hide"))
1943             flags |= PRINT_HIDE;
1944           else
1945             {
1946               /* Not a recognized argument, so stop.  */
1947               arg = save_arg;
1948               done = true;
1949             }
1950         }
1951
1952       if (*arg == '\0')
1953         arg = NULL;
1954     }
1955
1956   backtrace_command_1 (arg, flags, !filters /* no frame-filters */, from_tty);
1957 }
1958
1959 /* Iterate over the local variables of a block B, calling CB with
1960    CB_DATA.  */
1961
1962 static void
1963 iterate_over_block_locals (const struct block *b,
1964                            iterate_over_block_arg_local_vars_cb cb,
1965                            void *cb_data)
1966 {
1967   struct block_iterator iter;
1968   struct symbol *sym;
1969
1970   ALL_BLOCK_SYMBOLS (b, iter, sym)
1971     {
1972       switch (SYMBOL_CLASS (sym))
1973         {
1974         case LOC_LOCAL:
1975         case LOC_REGISTER:
1976         case LOC_STATIC:
1977         case LOC_COMPUTED:
1978         case LOC_OPTIMIZED_OUT:
1979           if (SYMBOL_IS_ARGUMENT (sym))
1980             break;
1981           if (SYMBOL_DOMAIN (sym) == COMMON_BLOCK_DOMAIN)
1982             break;
1983           (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
1984           break;
1985
1986         default:
1987           /* Ignore symbols which are not locals.  */
1988           break;
1989         }
1990     }
1991 }
1992
1993
1994 /* Same, but print labels.  */
1995
1996 #if 0
1997 /* Commented out, as the code using this function has also been
1998    commented out.  FIXME:brobecker/2009-01-13: Find out why the code
1999    was commented out in the first place.  The discussion introducing
2000    this change (2007-12-04: Support lexical blocks and function bodies
2001    that occupy non-contiguous address ranges) did not explain why
2002    this change was made.  */
2003 static int
2004 print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
2005                           int *have_default, struct ui_file *stream)
2006 {
2007   struct block_iterator iter;
2008   struct symbol *sym;
2009   int values_printed = 0;
2010
2011   ALL_BLOCK_SYMBOLS (b, iter, sym)
2012     {
2013       if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
2014         {
2015           if (*have_default)
2016             continue;
2017           *have_default = 1;
2018         }
2019       if (SYMBOL_CLASS (sym) == LOC_LABEL)
2020         {
2021           struct symtab_and_line sal;
2022           struct value_print_options opts;
2023
2024           sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
2025           values_printed = 1;
2026           fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
2027           get_user_print_options (&opts);
2028           if (opts.addressprint)
2029             {
2030               fprintf_filtered (stream, " ");
2031               fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
2032                               stream);
2033             }
2034           fprintf_filtered (stream, " in file %s, line %d\n",
2035                             sal.symtab->filename, sal.line);
2036         }
2037     }
2038
2039   return values_printed;
2040 }
2041 #endif
2042
2043 /* Iterate over all the local variables in block B, including all its
2044    superblocks, stopping when the top-level block is reached.  */
2045
2046 void
2047 iterate_over_block_local_vars (const struct block *block,
2048                                iterate_over_block_arg_local_vars_cb cb,
2049                                void *cb_data)
2050 {
2051   while (block)
2052     {
2053       iterate_over_block_locals (block, cb, cb_data);
2054       /* After handling the function's top-level block, stop.  Don't
2055          continue to its superblock, the block of per-file
2056          symbols.  */
2057       if (BLOCK_FUNCTION (block))
2058         break;
2059       block = BLOCK_SUPERBLOCK (block);
2060     }
2061 }
2062
2063 /* Data to be passed around in the calls to the locals and args
2064    iterators.  */
2065
2066 struct print_variable_and_value_data
2067 {
2068   gdb::optional<compiled_regex> preg;
2069   gdb::optional<compiled_regex> treg;
2070   struct frame_id frame_id;
2071   int num_tabs;
2072   struct ui_file *stream;
2073   int values_printed;
2074 };
2075
2076 /* The callback for the locals and args iterators.  */
2077
2078 static void
2079 do_print_variable_and_value (const char *print_name,
2080                              struct symbol *sym,
2081                              void *cb_data)
2082 {
2083   struct print_variable_and_value_data *p
2084     = (struct print_variable_and_value_data *) cb_data;
2085   struct frame_info *frame;
2086
2087   if (p->preg.has_value ()
2088       && p->preg->exec (SYMBOL_NATURAL_NAME (sym), 0,
2089                         NULL, 0) != 0)
2090     return;
2091   if (p->treg.has_value ()
2092       && !treg_matches_sym_type_name (*p->treg, sym))
2093     return;
2094
2095   frame = frame_find_by_id (p->frame_id);
2096   if (frame == NULL)
2097     {
2098       warning (_("Unable to restore previously selected frame."));
2099       return;
2100     }
2101
2102   print_variable_and_value (print_name, sym, frame, p->stream, p->num_tabs);
2103
2104   /* print_variable_and_value invalidates FRAME.  */
2105   frame = NULL;
2106
2107   p->values_printed = 1;
2108 }
2109
2110 /* Prepares the regular expression REG from REGEXP.
2111    If REGEXP is NULL, it results in an empty regular expression.  */
2112
2113 static void
2114 prepare_reg (const char *regexp, gdb::optional<compiled_regex> *reg)
2115 {
2116   if (regexp != NULL)
2117     {
2118       int cflags = REG_NOSUB | (case_sensitivity == case_sensitive_off
2119                                 ? REG_ICASE : 0);
2120       reg->emplace (regexp, cflags, _("Invalid regexp"));
2121     }
2122   else
2123     reg->reset ();
2124 }
2125
2126 /* Print all variables from the innermost up to the function block of FRAME.
2127    Print them with values to STREAM indented by NUM_TABS.
2128    If REGEXP is not NULL, only print local variables whose name
2129    matches REGEXP.
2130    If T_REGEXP is not NULL, only print local variables whose type
2131    matches T_REGEXP.
2132    If no local variables have been printed and !QUIET, prints a message
2133    explaining why no local variables could be printed.
2134
2135    This function will invalidate FRAME.  */
2136
2137 static void
2138 print_frame_local_vars (struct frame_info *frame,
2139                         bool quiet,
2140                         const char *regexp, const char *t_regexp,
2141                         int num_tabs, struct ui_file *stream)
2142 {
2143   struct print_variable_and_value_data cb_data;
2144   const struct block *block;
2145   CORE_ADDR pc;
2146
2147   if (!get_frame_pc_if_available (frame, &pc))
2148     {
2149       if (!quiet)
2150         fprintf_filtered (stream,
2151                           _("PC unavailable, cannot determine locals.\n"));
2152       return;
2153     }
2154
2155   block = get_frame_block (frame, 0);
2156   if (block == 0)
2157     {
2158       if (!quiet)
2159         fprintf_filtered (stream, "No symbol table info available.\n");
2160       return;
2161     }
2162
2163   prepare_reg (regexp, &cb_data.preg);
2164   prepare_reg (t_regexp, &cb_data.treg);
2165   cb_data.frame_id = get_frame_id (frame);
2166   cb_data.num_tabs = 4 * num_tabs;
2167   cb_data.stream = stream;
2168   cb_data.values_printed = 0;
2169
2170   /* Temporarily change the selected frame to the given FRAME.
2171      This allows routines that rely on the selected frame instead
2172      of being given a frame as parameter to use the correct frame.  */
2173   scoped_restore_selected_frame restore_selected_frame;
2174   select_frame (frame);
2175
2176   iterate_over_block_local_vars (block,
2177                                  do_print_variable_and_value,
2178                                  &cb_data);
2179
2180   if (!cb_data.values_printed && !quiet)
2181     {
2182       if (regexp == NULL && t_regexp == NULL)
2183         fprintf_filtered (stream, _("No locals.\n"));
2184       else
2185         fprintf_filtered (stream, _("No matching locals.\n"));
2186     }
2187 }
2188
2189 void
2190 info_locals_command (const char *args, int from_tty)
2191 {
2192   std::string regexp;
2193   std::string t_regexp;
2194   bool quiet = false;
2195
2196   while (args != NULL
2197          && extract_info_print_args (&args, &quiet, &regexp, &t_regexp))
2198     ;
2199
2200   if (args != NULL)
2201     report_unrecognized_option_error ("info locals", args);
2202
2203   print_frame_local_vars (get_selected_frame (_("No frame selected.")),
2204                           quiet,
2205                           regexp.empty () ? NULL : regexp.c_str (),
2206                           t_regexp.empty () ? NULL : t_regexp.c_str (),
2207                           0, gdb_stdout);
2208 }
2209
2210 /* Iterate over all the argument variables in block B.  */
2211
2212 void
2213 iterate_over_block_arg_vars (const struct block *b,
2214                              iterate_over_block_arg_local_vars_cb cb,
2215                              void *cb_data)
2216 {
2217   struct block_iterator iter;
2218   struct symbol *sym, *sym2;
2219
2220   ALL_BLOCK_SYMBOLS (b, iter, sym)
2221     {
2222       /* Don't worry about things which aren't arguments.  */
2223       if (SYMBOL_IS_ARGUMENT (sym))
2224         {
2225           /* We have to look up the symbol because arguments can have
2226              two entries (one a parameter, one a local) and the one we
2227              want is the local, which lookup_symbol will find for us.
2228              This includes gcc1 (not gcc2) on the sparc when passing a
2229              small structure and gcc2 when the argument type is float
2230              and it is passed as a double and converted to float by
2231              the prologue (in the latter case the type of the LOC_ARG
2232              symbol is double and the type of the LOC_LOCAL symbol is
2233              float).  There are also LOC_ARG/LOC_REGISTER pairs which
2234              are not combined in symbol-reading.  */
2235
2236           sym2 = lookup_symbol_search_name (SYMBOL_SEARCH_NAME (sym),
2237                                             b, VAR_DOMAIN).symbol;
2238           (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
2239         }
2240     }
2241 }
2242
2243 /* Print all argument variables of the function of FRAME.
2244    Print them with values to STREAM.
2245    If REGEXP is not NULL, only print argument variables whose name
2246    matches REGEXP.
2247    If T_REGEXP is not NULL, only print argument variables whose type
2248    matches T_REGEXP.
2249    If no argument variables have been printed and !QUIET, prints a message
2250    explaining why no argument variables could be printed.
2251
2252    This function will invalidate FRAME.  */
2253
2254 static void
2255 print_frame_arg_vars (struct frame_info *frame,
2256                       bool quiet,
2257                       const char *regexp, const char *t_regexp,
2258                       struct ui_file *stream)
2259 {
2260   struct print_variable_and_value_data cb_data;
2261   struct symbol *func;
2262   CORE_ADDR pc;
2263   gdb::optional<compiled_regex> preg;
2264   gdb::optional<compiled_regex> treg;
2265
2266   if (!get_frame_pc_if_available (frame, &pc))
2267     {
2268       if (!quiet)
2269         fprintf_filtered (stream,
2270                           _("PC unavailable, cannot determine args.\n"));
2271       return;
2272     }
2273
2274   func = get_frame_function (frame);
2275   if (func == NULL)
2276     {
2277       if (!quiet)
2278         fprintf_filtered (stream, _("No symbol table info available.\n"));
2279       return;
2280     }
2281
2282   prepare_reg (regexp, &cb_data.preg);
2283   prepare_reg (t_regexp, &cb_data.treg);
2284   cb_data.frame_id = get_frame_id (frame);
2285   cb_data.num_tabs = 0;
2286   cb_data.stream = stream;
2287   cb_data.values_printed = 0;
2288
2289   iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
2290                                do_print_variable_and_value, &cb_data);
2291
2292   /* do_print_variable_and_value invalidates FRAME.  */
2293   frame = NULL;
2294
2295   if (!cb_data.values_printed && !quiet)
2296     {
2297       if (regexp == NULL && t_regexp == NULL)
2298         fprintf_filtered (stream, _("No arguments.\n"));
2299       else
2300         fprintf_filtered (stream, _("No matching arguments.\n"));
2301     }
2302 }
2303
2304 void
2305 info_args_command (const char *args, int from_tty)
2306 {
2307   std::string regexp;
2308   std::string t_regexp;
2309   bool quiet = false;
2310
2311   while (args != NULL
2312          && extract_info_print_args (&args, &quiet, &regexp, &t_regexp))
2313     ;
2314
2315   if (args != NULL)
2316     report_unrecognized_option_error ("info args", args);
2317
2318
2319   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
2320                         quiet,
2321                         regexp.empty () ? NULL : regexp.c_str (),
2322                         t_regexp.empty () ? NULL : t_regexp.c_str (),
2323                         gdb_stdout);
2324 }
2325 \f
2326 /* Return the symbol-block in which the selected frame is executing.
2327    Can return zero under various legitimate circumstances.
2328
2329    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2330    code address within the block returned.  We use this to decide
2331    which macros are in scope.  */
2332
2333 const struct block *
2334 get_selected_block (CORE_ADDR *addr_in_block)
2335 {
2336   if (!has_stack_frames ())
2337     return 0;
2338
2339   return get_frame_block (get_selected_frame (NULL), addr_in_block);
2340 }
2341
2342 /* Find a frame a certain number of levels away from FRAME.
2343    LEVEL_OFFSET_PTR points to an int containing the number of levels.
2344    Positive means go to earlier frames (up); negative, the reverse.
2345    The int that contains the number of levels is counted toward
2346    zero as the frames for those levels are found.
2347    If the top or bottom frame is reached, that frame is returned,
2348    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2349    how much farther the original request asked to go.  */
2350
2351 struct frame_info *
2352 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
2353 {
2354   /* Going up is simple: just call get_prev_frame enough times or
2355      until the initial frame is reached.  */
2356   while (*level_offset_ptr > 0)
2357     {
2358       struct frame_info *prev = get_prev_frame (frame);
2359
2360       if (!prev)
2361         break;
2362       (*level_offset_ptr)--;
2363       frame = prev;
2364     }
2365
2366   /* Going down is just as simple.  */
2367   while (*level_offset_ptr < 0)
2368     {
2369       struct frame_info *next = get_next_frame (frame);
2370
2371       if (!next)
2372         break;
2373       (*level_offset_ptr)++;
2374       frame = next;
2375     }
2376
2377   return frame;
2378 }
2379
2380 /* Select the frame up one or COUNT_EXP stack levels from the
2381    previously selected frame, and print it briefly.  */
2382
2383 static void
2384 up_silently_base (const char *count_exp)
2385 {
2386   struct frame_info *frame;
2387   int count = 1;
2388
2389   if (count_exp)
2390     count = parse_and_eval_long (count_exp);
2391
2392   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2393   if (count != 0 && count_exp == NULL)
2394     error (_("Initial frame selected; you cannot go up."));
2395   select_frame (frame);
2396 }
2397
2398 static void
2399 up_silently_command (const char *count_exp, int from_tty)
2400 {
2401   up_silently_base (count_exp);
2402 }
2403
2404 static void
2405 up_command (const char *count_exp, int from_tty)
2406 {
2407   up_silently_base (count_exp);
2408   gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
2409 }
2410
2411 /* Select the frame down one or COUNT_EXP stack levels from the previously
2412    selected frame, and print it briefly.  */
2413
2414 static void
2415 down_silently_base (const char *count_exp)
2416 {
2417   struct frame_info *frame;
2418   int count = -1;
2419
2420   if (count_exp)
2421     count = -parse_and_eval_long (count_exp);
2422
2423   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2424   if (count != 0 && count_exp == NULL)
2425     {
2426       /* We only do this if COUNT_EXP is not specified.  That way
2427          "down" means to really go down (and let me know if that is
2428          impossible), but "down 9999" can be used to mean go all the
2429          way down without getting an error.  */
2430
2431       error (_("Bottom (innermost) frame selected; you cannot go down."));
2432     }
2433
2434   select_frame (frame);
2435 }
2436
2437 static void
2438 down_silently_command (const char *count_exp, int from_tty)
2439 {
2440   down_silently_base (count_exp);
2441 }
2442
2443 static void
2444 down_command (const char *count_exp, int from_tty)
2445 {
2446   down_silently_base (count_exp);
2447   gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
2448 }
2449
2450 void
2451 return_command (const char *retval_exp, int from_tty)
2452 {
2453   /* Initialize it just to avoid a GCC false warning.  */
2454   enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2455   struct frame_info *thisframe;
2456   struct gdbarch *gdbarch;
2457   struct symbol *thisfun;
2458   struct value *return_value = NULL;
2459   struct value *function = NULL;
2460   const char *query_prefix = "";
2461
2462   thisframe = get_selected_frame ("No selected frame.");
2463   thisfun = get_frame_function (thisframe);
2464   gdbarch = get_frame_arch (thisframe);
2465
2466   if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2467     error (_("Can not force return from an inlined function."));
2468
2469   /* Compute the return value.  If the computation triggers an error,
2470      let it bail.  If the return type can't be handled, set
2471      RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2472      message.  */
2473   if (retval_exp)
2474     {
2475       expression_up retval_expr = parse_expression (retval_exp);
2476       struct type *return_type = NULL;
2477
2478       /* Compute the return value.  Should the computation fail, this
2479          call throws an error.  */
2480       return_value = evaluate_expression (retval_expr.get ());
2481
2482       /* Cast return value to the return type of the function.  Should
2483          the cast fail, this call throws an error.  */
2484       if (thisfun != NULL)
2485         return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
2486       if (return_type == NULL)
2487         {
2488           if (retval_expr->elts[0].opcode != UNOP_CAST
2489               && retval_expr->elts[0].opcode != UNOP_CAST_TYPE)
2490             error (_("Return value type not available for selected "
2491                      "stack frame.\n"
2492                      "Please use an explicit cast of the value to return."));
2493           return_type = value_type (return_value);
2494         }
2495       return_type = check_typedef (return_type);
2496       return_value = value_cast (return_type, return_value);
2497
2498       /* Make sure the value is fully evaluated.  It may live in the
2499          stack frame we're about to pop.  */
2500       if (value_lazy (return_value))
2501         value_fetch_lazy (return_value);
2502
2503       if (thisfun != NULL)
2504         function = read_var_value (thisfun, NULL, thisframe);
2505
2506       rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2507       if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
2508         /* If the return-type is "void", don't try to find the
2509            return-value's location.  However, do still evaluate the
2510            return expression so that, even when the expression result
2511            is discarded, side effects such as "return i++" still
2512            occur.  */
2513         return_value = NULL;
2514       else if (thisfun != NULL)
2515         {
2516           rv_conv = struct_return_convention (gdbarch, function, return_type);
2517           if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2518               || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2519             {
2520               query_prefix = "The location at which to store the "
2521                 "function's return value is unknown.\n"
2522                 "If you continue, the return value "
2523                 "that you specified will be ignored.\n";
2524               return_value = NULL;
2525             }
2526         }
2527     }
2528
2529   /* Does an interactive user really want to do this?  Include
2530      information, such as how well GDB can handle the return value, in
2531      the query message.  */
2532   if (from_tty)
2533     {
2534       int confirmed;
2535
2536       if (thisfun == NULL)
2537         confirmed = query (_("%sMake selected stack frame return now? "),
2538                            query_prefix);
2539       else
2540         {
2541           if (TYPE_NO_RETURN (thisfun->type))
2542             warning (_("Function does not return normally to caller."));
2543           confirmed = query (_("%sMake %s return now? "), query_prefix,
2544                              SYMBOL_PRINT_NAME (thisfun));
2545         }
2546       if (!confirmed)
2547         error (_("Not confirmed"));
2548     }
2549
2550   /* Discard the selected frame and all frames inner-to it.  */
2551   frame_pop (get_selected_frame (NULL));
2552
2553   /* Store RETURN_VALUE in the just-returned register set.  */
2554   if (return_value != NULL)
2555     {
2556       struct type *return_type = value_type (return_value);
2557       struct gdbarch *cache_arch = get_current_regcache ()->arch ();
2558
2559       gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2560                   && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
2561       gdbarch_return_value (cache_arch, function, return_type,
2562                             get_current_regcache (), NULL /*read*/,
2563                             value_contents (return_value) /*write*/);
2564     }
2565
2566   /* If we are at the end of a call dummy now, pop the dummy frame
2567      too.  */
2568   if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2569     frame_pop (get_current_frame ());
2570
2571   select_frame (get_current_frame ());
2572   /* If interactive, print the frame that is now current.  */
2573   if (from_tty)
2574     print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2575 }
2576
2577 /* Find the most inner frame in the current stack for a function called
2578    FUNCTION_NAME.  If no matching frame is found return NULL.  */
2579
2580 static struct frame_info *
2581 find_frame_for_function (const char *function_name)
2582 {
2583   /* Used to hold the lower and upper addresses for each of the
2584      SYMTAB_AND_LINEs found for functions matching FUNCTION_NAME.  */
2585   struct function_bounds
2586   {
2587     CORE_ADDR low, high;
2588   };
2589   struct frame_info *frame;
2590   bool found = false;
2591   int level = 1;
2592
2593   gdb_assert (function_name != NULL);
2594
2595   frame = get_current_frame ();
2596   std::vector<symtab_and_line> sals
2597     = decode_line_with_current_source (function_name,
2598                                        DECODE_LINE_FUNFIRSTLINE);
2599   gdb::def_vector<function_bounds> func_bounds (sals.size ());
2600   for (size_t i = 0; i < sals.size (); i++)
2601     {
2602       if (sals[i].pspace != current_program_space)
2603         func_bounds[i].low = func_bounds[i].high = 0;
2604       else if (sals[i].pc == 0
2605                || find_pc_partial_function (sals[i].pc, NULL,
2606                                             &func_bounds[i].low,
2607                                             &func_bounds[i].high) == 0)
2608         func_bounds[i].low = func_bounds[i].high = 0;
2609     }
2610
2611   do
2612     {
2613       for (size_t i = 0; (i < sals.size () && !found); i++)
2614         found = (get_frame_pc (frame) >= func_bounds[i].low
2615                  && get_frame_pc (frame) < func_bounds[i].high);
2616       if (!found)
2617         {
2618           level = 1;
2619           frame = find_relative_frame (frame, &level);
2620         }
2621     }
2622   while (!found && level == 0);
2623
2624   if (!found)
2625     frame = NULL;
2626
2627   return frame;
2628 }
2629
2630 /* Implements the dbx 'func' command.  */
2631
2632 static void
2633 func_command (const char *arg, int from_tty)
2634 {
2635   if (arg == NULL)
2636     return;
2637
2638   struct frame_info *frame = find_frame_for_function (arg);
2639   if (frame == NULL)
2640     error (_("'%s' not within current stack frame."), arg);
2641   if (frame != get_selected_frame (NULL))
2642     {
2643       select_frame (frame);
2644       print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2645     }
2646 }
2647
2648 /* Apply a GDB command to all stack frames, or a set of identified frames,
2649    or innermost COUNT frames.
2650    With a negative COUNT, apply command on outermost -COUNT frames.
2651
2652    frame apply 3 info frame     Apply 'info frame' to frames 0, 1, 2
2653    frame apply -3 info frame    Apply 'info frame' to outermost 3 frames.
2654    frame apply all x/i $pc      Apply 'x/i $pc' cmd to all frames.
2655    frame apply all -s p local_var_no_idea_in_which_frame
2656                 If a frame has a local variable called
2657                 local_var_no_idea_in_which_frame, print frame
2658                 and value of local_var_no_idea_in_which_frame.
2659    frame apply all -s -q p local_var_no_idea_in_which_frame
2660                 Same as before, but only print the variable value.
2661    frame apply level 2-5 0 4-7 -s p i = i + 1
2662                 Adds 1 to the variable i in the specified frames.
2663                 Note that i will be incremented twice in
2664                 frames 4 and 5.  */
2665
2666 /* Apply a GDB command to COUNT stack frames, starting at TRAILING.
2667    CMD starts with 0 or more qcs flags followed by the GDB command to apply.
2668    COUNT -1 means all frames starting at TRAILING.  WHICH_COMMAND is used
2669    for error messages.  */
2670
2671 static void
2672 frame_apply_command_count (const char *which_command,
2673                            const char *cmd, int from_tty,
2674                            struct frame_info *trailing, int count)
2675 {
2676   qcs_flags flags;
2677   struct frame_info *fi;
2678
2679   while (cmd != NULL && parse_flags_qcs (which_command, &cmd, &flags))
2680     ;
2681
2682   if (cmd == NULL || *cmd == '\0')
2683     error (_("Please specify a command to apply on the selected frames"));
2684
2685   /* The below will restore the current inferior/thread/frame.
2686      Usually, only the frame is effectively to be restored.
2687      But in case CMD switches of inferior/thread, better restore
2688      these also.  */
2689   scoped_restore_current_thread restore_thread;
2690
2691   for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
2692     {
2693       QUIT;
2694
2695       select_frame (fi);
2696       TRY
2697         {
2698           std::string cmd_result;
2699           {
2700             /* In case CMD switches of inferior/thread/frame, the below
2701                restores the inferior/thread/frame.  FI can then be
2702                set to the selected frame.  */
2703             scoped_restore_current_thread restore_fi_current_frame;
2704
2705             cmd_result = execute_command_to_string (cmd, from_tty);
2706           }
2707           fi = get_selected_frame (_("frame apply "
2708                                      "unable to get selected frame."));
2709           if (!flags.silent || cmd_result.length () > 0)
2710             {
2711               if (!flags.quiet)
2712                 print_stack_frame (fi, 1, LOCATION, 0);
2713               printf_filtered ("%s", cmd_result.c_str ());
2714             }
2715         }
2716       CATCH (ex, RETURN_MASK_ERROR)
2717         {
2718           fi = get_selected_frame (_("frame apply "
2719                                      "unable to get selected frame."));
2720           if (!flags.silent)
2721             {
2722               if (!flags.quiet)
2723                 print_stack_frame (fi, 1, LOCATION, 0);
2724               if (flags.cont)
2725                 printf_filtered ("%s\n", ex.message);
2726               else
2727                 throw_exception (ex);
2728             }
2729         }
2730       END_CATCH;
2731     }
2732 }
2733
2734 /* Implementation of the "frame apply level" command.  */
2735
2736 static void
2737 frame_apply_level_command (const char *cmd, int from_tty)
2738 {
2739   if (!target_has_stack)
2740     error (_("No stack."));
2741
2742   bool level_found = false;
2743   const char *levels_str = cmd;
2744   number_or_range_parser levels (levels_str);
2745
2746   /* Skip the LEVEL list to find the flags and command args.  */
2747   while (!levels.finished ())
2748     {
2749       /* Call for effect.  */
2750       levels.get_number ();
2751
2752       level_found = true;
2753       if (levels.in_range ())
2754         levels.skip_range ();
2755     }
2756
2757   if (!level_found)
2758     error (_("Missing or invalid LEVEL... argument"));
2759
2760   cmd = levels.cur_tok ();
2761
2762   /* Redo the LEVELS parsing, but applying COMMAND.  */
2763   levels.init (levels_str);
2764   while (!levels.finished ())
2765     {
2766       const int level_beg = levels.get_number ();
2767       int n_frames;
2768
2769       if (levels.in_range ())
2770         {
2771           n_frames = levels.end_value () - level_beg + 1;
2772           levels.skip_range ();
2773         }
2774       else
2775         n_frames = 1;
2776
2777       frame_apply_command_count ("frame apply level", cmd, from_tty,
2778                                  leading_innermost_frame (level_beg), n_frames);
2779     }
2780 }
2781
2782 /* Implementation of the "frame apply all" command.  */
2783
2784 static void
2785 frame_apply_all_command (const char *cmd, int from_tty)
2786 {
2787   if (!target_has_stack)
2788     error (_("No stack."));
2789
2790   frame_apply_command_count ("frame apply all", cmd, from_tty,
2791                              get_current_frame (), INT_MAX);
2792 }
2793
2794 /* Implementation of the "frame apply" command.  */
2795
2796 static void
2797 frame_apply_command (const char* cmd, int from_tty)
2798 {
2799   int count;
2800   struct frame_info *trailing;
2801
2802   if (!target_has_stack)
2803     error (_("No stack."));
2804
2805   if (cmd == NULL)
2806     error (_("Missing COUNT argument."));
2807   count = get_number_trailer (&cmd, 0);
2808   if (count == 0)
2809     error (_("Invalid COUNT argument."));
2810
2811   if (count < 0)
2812     {
2813       trailing = trailing_outermost_frame (-count);
2814       count = -1;
2815     }
2816   else
2817     trailing = get_current_frame ();
2818
2819   frame_apply_command_count ("frame apply", cmd, from_tty,
2820                              trailing, count);
2821 }
2822
2823 /* Implementation of the "faas" command.  */
2824
2825 static void
2826 faas_command (const char *cmd, int from_tty)
2827 {
2828   std::string expanded = std::string ("frame apply all -s ") + cmd;
2829   execute_command (expanded.c_str (), from_tty);
2830 }
2831
2832
2833 /* Find inner-mode frame with frame address ADDRESS.  Return NULL if no
2834    matching frame can be found.  */
2835
2836 static struct frame_info *
2837 find_frame_for_address (CORE_ADDR address)
2838 {
2839   struct frame_id id;
2840   struct frame_info *fid;
2841
2842   id = frame_id_build_wild (address);
2843
2844   /* If (s)he specifies the frame with an address, he deserves
2845      what (s)he gets.  Still, give the highest one that matches.
2846      (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
2847      know).  */
2848   for (fid = get_current_frame ();
2849        fid != NULL;
2850        fid = get_prev_frame (fid))
2851     {
2852       if (frame_id_eq (id, get_frame_id (fid)))
2853         {
2854           struct frame_info *prev_frame;
2855
2856           while (1)
2857             {
2858               prev_frame = get_prev_frame (fid);
2859               if (!prev_frame
2860                   || !frame_id_eq (id, get_frame_id (prev_frame)))
2861                 break;
2862               fid = prev_frame;
2863             }
2864           return fid;
2865         }
2866     }
2867   return NULL;
2868 }
2869
2870 \f
2871
2872 /* Commands with a prefix of `frame apply'.  */
2873 static struct cmd_list_element *frame_apply_cmd_list = NULL;
2874
2875 /* Commands with a prefix of `frame'.  */
2876 static struct cmd_list_element *frame_cmd_list = NULL;
2877
2878 /* Commands with a prefix of `select frame'.  */
2879 static struct cmd_list_element *select_frame_cmd_list = NULL;
2880
2881 /* Commands with a prefix of `info frame'.  */
2882 static struct cmd_list_element *info_frame_cmd_list = NULL;
2883
2884 void
2885 _initialize_stack (void)
2886 {
2887   struct cmd_list_element *cmd;
2888
2889   add_com ("return", class_stack, return_command, _("\
2890 Make selected stack frame return to its caller.\n\
2891 Control remains in the debugger, but when you continue\n\
2892 execution will resume in the frame above the one now selected.\n\
2893 If an argument is given, it is an expression for the value to return."));
2894
2895   add_com ("up", class_stack, up_command, _("\
2896 Select and print stack frame that called this one.\n\
2897 An argument says how many frames up to go."));
2898   add_com ("up-silently", class_support, up_silently_command, _("\
2899 Same as the `up' command, but does not print anything.\n\
2900 This is useful in command scripts."));
2901
2902   add_com ("down", class_stack, down_command, _("\
2903 Select and print stack frame called by this one.\n\
2904 An argument says how many frames down to go."));
2905   add_com_alias ("do", "down", class_stack, 1);
2906   add_com_alias ("dow", "down", class_stack, 1);
2907   add_com ("down-silently", class_support, down_silently_command, _("\
2908 Same as the `down' command, but does not print anything.\n\
2909 This is useful in command scripts."));
2910
2911   add_prefix_cmd ("frame", class_stack,
2912                   &frame_cmd.base_command, _("\
2913 Select and print a stack frame.\n\
2914 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
2915 A single numerical argument specifies the frame to select."),
2916                   &frame_cmd_list, "frame ", 1, &cmdlist);
2917
2918   add_com_alias ("f", "frame", class_stack, 1);
2919
2920 #define FRAME_APPLY_FLAGS_HELP "\
2921 Prints the frame location information followed by COMMAND output.\n\
2922 FLAG arguments are -q (quiet), -c (continue), -s (silent).\n\
2923 Flag -q disables printing the frame location information.\n\
2924 By default, if a COMMAND raises an error, frame apply is aborted.\n\
2925 Flag -c indicates to print the error and continue.\n\
2926 Flag -s indicates to silently ignore a COMMAND that raises an error\n\
2927 or produces no output."
2928
2929   add_prefix_cmd ("apply", class_stack, frame_apply_command,
2930                   _("Apply a command to a number of frames.\n\
2931 Usage: frame apply COUNT [FLAG]... COMMAND\n\
2932 With a negative COUNT argument, applies the command on outermost -COUNT frames.\n"
2933 FRAME_APPLY_FLAGS_HELP),
2934                   &frame_apply_cmd_list, "frame apply ", 1, &frame_cmd_list);
2935
2936   add_cmd ("all", class_stack, frame_apply_all_command,
2937            _("\
2938 Apply a command to all frames.\n\
2939 \n\
2940 Usage: frame apply all [FLAG]... COMMAND\n"
2941 FRAME_APPLY_FLAGS_HELP),
2942            &frame_apply_cmd_list);
2943
2944   add_cmd ("level", class_stack, frame_apply_level_command,
2945            _("\
2946 Apply a command to a list of frames.\n\
2947 \n\
2948 Usage: frame apply level LEVEL... [FLAG]... COMMAND\n\
2949 ID is a space-separated list of LEVELs of frames to apply COMMAND on.\n"
2950 FRAME_APPLY_FLAGS_HELP),
2951            &frame_apply_cmd_list);
2952
2953   add_com ("faas", class_stack, faas_command, _("\
2954 Apply a command to all frames (ignoring errors and empty output).\n\
2955 Usage: faas COMMAND\n\
2956 shortcut for 'frame apply all -s COMMAND'"));
2957
2958
2959   add_prefix_cmd ("frame", class_stack,
2960                   &frame_cmd.base_command, _("\
2961 Select and print a stack frame.\n\
2962 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
2963 A single numerical argument specifies the frame to select."),
2964                   &frame_cmd_list, "frame ", 1, &cmdlist);
2965   add_com_alias ("f", "frame", class_stack, 1);
2966
2967   add_cmd ("address", class_stack, &frame_cmd.address,
2968            _("\
2969 Select and print a stack frame by stack address\n\
2970 \n\
2971 Usage: frame address STACK-ADDRESS"),
2972            &frame_cmd_list);
2973
2974   add_cmd ("view", class_stack, &frame_cmd.view,
2975            _("\
2976 View a stack frame that might be outside the current backtrace.\n\
2977 \n\
2978 Usage: frame view STACK-ADDRESS\n\
2979        frame view STACK-ADDRESS PC-ADDRESS"),
2980            &frame_cmd_list);
2981
2982   cmd = add_cmd ("function", class_stack, &frame_cmd.function,
2983            _("\
2984 Select and print a stack frame by function name.\n\
2985 \n\
2986 Usage: frame function NAME\n\
2987 \n\
2988 The innermost frame that visited function NAME is selected."),
2989            &frame_cmd_list);
2990   set_cmd_completer (cmd, frame_selection_by_function_completer);
2991
2992
2993   add_cmd ("level", class_stack, &frame_cmd.level,
2994            _("\
2995 Select and print a stack frame by level.\n\
2996 \n\
2997 Usage: frame level LEVEL"),
2998            &frame_cmd_list);
2999
3000   cmd = add_prefix_cmd_suppress_notification ("select-frame", class_stack,
3001                       &select_frame_cmd.base_command, _("\
3002 Select a stack frame without printing anything.\n\
3003 A single numerical argument specifies the frame to select."),
3004                       &select_frame_cmd_list, "select-frame ", 1, &cmdlist,
3005                       &cli_suppress_notification.user_selected_context);
3006
3007   add_cmd_suppress_notification ("address", class_stack,
3008                          &select_frame_cmd.address, _("\
3009 Select a stack frame by stack address.\n\
3010 \n\
3011 Usage: select-frame address STACK-ADDRESS"),
3012                          &select_frame_cmd_list,
3013                          &cli_suppress_notification.user_selected_context);
3014
3015
3016   add_cmd_suppress_notification ("view", class_stack,
3017                  &select_frame_cmd.view, _("\
3018 Select a stack frame that might be outside the current backtrace.\n\
3019 \n\
3020 Usage: select-frame view STACK-ADDRESS\n\
3021        select-frame view STACK-ADDRESS PC-ADDRESS"),
3022                  &select_frame_cmd_list,
3023                  &cli_suppress_notification.user_selected_context);
3024
3025   cmd = add_cmd_suppress_notification ("function", class_stack,
3026                &select_frame_cmd.function, _("\
3027 Select a stack frame by function name.\n\
3028 \n\
3029 Usage: select-frame function NAME"),
3030                &select_frame_cmd_list,
3031                &cli_suppress_notification.user_selected_context);
3032   set_cmd_completer (cmd, frame_selection_by_function_completer);
3033
3034   add_cmd_suppress_notification ("level", class_stack,
3035                          &select_frame_cmd.level, _("\
3036 Select a stack frame by level.\n\
3037 \n\
3038 Usage: select-frame level LEVEL"),
3039                          &select_frame_cmd_list,
3040                          &cli_suppress_notification.user_selected_context);
3041
3042   add_com ("backtrace", class_stack, backtrace_command, _("\
3043 Print backtrace of all stack frames, or innermost COUNT frames.\n\
3044 Usage: backtrace [QUALIFIERS]... [COUNT]\n\
3045 With a negative argument, print outermost -COUNT frames.\n\
3046 Use of the 'full' qualifier also prints the values of the local variables.\n\
3047 Use of the 'no-filters' qualifier prohibits frame filters from executing\n\
3048 on this backtrace."));
3049   add_com_alias ("bt", "backtrace", class_stack, 0);
3050
3051   add_com_alias ("where", "backtrace", class_alias, 0);
3052   add_info ("stack", backtrace_command,
3053             _("Backtrace of the stack, or innermost COUNT frames."));
3054   add_info_alias ("s", "stack", 1);
3055
3056   add_prefix_cmd ("frame", class_info, &info_frame_cmd.base_command,
3057                   _("All about the selected stack frame.\n\
3058 With no arguments, displays information about the currently selected stack\n\
3059 frame.  Alternatively a frame specification may be provided (See \"frame\")\n\
3060 the information is then printed about the specified frame."),
3061                   &info_frame_cmd_list, "info frame ", 1, &infolist);
3062   add_info_alias ("f", "frame", 1);
3063
3064   add_cmd ("address", class_stack, &info_frame_cmd.address,
3065            _("\
3066 Print information about a stack frame selected by stack address.\n\
3067 \n\
3068 Usage: info frame address STACK-ADDRESS"),
3069            &info_frame_cmd_list);
3070
3071   add_cmd ("view", class_stack, &info_frame_cmd.view,
3072            _("\
3073 Print information about a stack frame outside the current backtrace.\n\
3074 \n\
3075 Usage: info frame view STACK-ADDRESS\n\
3076        info frame view STACK-ADDRESS PC-ADDRESS"),
3077            &info_frame_cmd_list);
3078
3079   cmd = add_cmd ("function", class_stack, &info_frame_cmd.function,
3080            _("\
3081 Print information about a stack frame selected by function name.\n\
3082 \n\
3083 Usage: info frame function NAME"),
3084            &info_frame_cmd_list);
3085   set_cmd_completer (cmd, frame_selection_by_function_completer);
3086
3087   add_cmd ("level", class_stack, &info_frame_cmd.level,
3088            _("\
3089 Print information about a stack frame selected by level.\n\
3090 \n\
3091 Usage: info frame level LEVEL"),
3092            &info_frame_cmd_list);
3093
3094   add_info ("locals", info_locals_command,
3095             info_print_args_help (_("\
3096 All local variables of current stack frame or those matching REGEXPs.\n\
3097 Usage: info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3098 Prints the local variables of the current stack frame.\n"),
3099                                   _("local variables")));
3100   add_info ("args", info_args_command,
3101             info_print_args_help (_("\
3102 All argument variables of current stack frame or those matching REGEXPs.\n\
3103 Usage: info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3104 Prints the argument variables of the current stack frame.\n"),
3105                                   _("argument variables")));
3106
3107   if (dbx_commands)
3108     add_com ("func", class_stack, func_command, _("\
3109 Select the stack frame that contains NAME.\n\
3110 Usage: func NAME"));
3111
3112   add_setshow_enum_cmd ("frame-arguments", class_stack,
3113                         print_frame_arguments_choices, &print_frame_arguments,
3114                         _("Set printing of non-scalar frame arguments"),
3115                         _("Show printing of non-scalar frame arguments"),
3116                         NULL, NULL, NULL, &setprintlist, &showprintlist);
3117
3118   add_setshow_boolean_cmd ("frame-arguments", no_class,
3119                            &print_raw_frame_arguments, _("\
3120 Set whether to print frame arguments in raw form."), _("\
3121 Show whether to print frame arguments in raw form."), _("\
3122 If set, frame arguments are printed in raw form, bypassing any\n\
3123 pretty-printers for that value."),
3124                            NULL, NULL,
3125                            &setprintrawlist, &showprintrawlist);
3126
3127   add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
3128                                 &disassemble_next_line, _("\
3129 Set whether to disassemble next source line or insn when execution stops."),
3130                                 _("\
3131 Show whether to disassemble next source line or insn when execution stops."),
3132                                 _("\
3133 If ON, GDB will display disassembly of the next source line, in addition\n\
3134 to displaying the source line itself.  If the next source line cannot\n\
3135 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
3136 will display disassembly of next instruction instead of showing the\n\
3137 source line.\n\
3138 If AUTO, display disassembly of next instruction only if the source line\n\
3139 cannot be displayed.\n\
3140 If OFF (which is the default), never display the disassembly of the next\n\
3141 source line."),
3142                                 NULL,
3143                                 show_disassemble_next_line,
3144                                 &setlist, &showlist);
3145   disassemble_next_line = AUTO_BOOLEAN_FALSE;
3146
3147   add_setshow_enum_cmd ("entry-values", class_stack,
3148                         print_entry_values_choices, &print_entry_values,
3149                         _("Set printing of function arguments at function "
3150                           "entry"),
3151                         _("Show printing of function arguments at function "
3152                           "entry"),
3153                         _("\
3154 GDB can sometimes determine the values of function arguments at entry,\n\
3155 in addition to their current values.  This option tells GDB whether\n\
3156 to print the current value, the value at entry (marked as val@entry),\n\
3157 or both.  Note that one or both of these values may be <optimized out>."),
3158                         NULL, NULL, &setprintlist, &showprintlist);
3159 }