xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/stack.c (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1 /* Print and select stack frames for GDB, the GNU debugger.
2 
3    Copyright (C) 1986-2019 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 
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 				 ui_out_style_kind::ADDRESS);
1181 	  annotate_frame_address_end ();
1182 	  uiout->text (" in ");
1183 	}
1184     annotate_frame_function_name ();
1185 
1186     string_file stb;
1187     fprintf_symbol_filtered (&stb, funname ? funname.get () : "??",
1188 			     funlang, DMGL_ANSI);
1189     uiout->field_stream ("func", stb, ui_out_style_kind::FUNCTION);
1190     uiout->wrap_hint ("   ");
1191     annotate_frame_args ();
1192 
1193     uiout->text (" (");
1194     if (print_args)
1195       {
1196 	int numargs;
1197 
1198 	if (gdbarch_frame_num_args_p (gdbarch))
1199 	  {
1200 	    numargs = gdbarch_frame_num_args (gdbarch, frame);
1201 	    gdb_assert (numargs >= 0);
1202 	  }
1203 	else
1204 	  numargs = -1;
1205 
1206 	{
1207 	  ui_out_emit_list list_emitter (uiout, "args");
1208 	  TRY
1209 	    {
1210 	      print_frame_args (func, frame, numargs, gdb_stdout);
1211 	    }
1212 	  CATCH (e, RETURN_MASK_ERROR)
1213 	    {
1214 	    }
1215 	  END_CATCH
1216 
1217 	    /* FIXME: ARGS must be a list.  If one argument is a string it
1218 	       will have " that will not be properly escaped.  */
1219 	    }
1220 	QUIT;
1221       }
1222     uiout->text (")");
1223     if (sal.symtab)
1224       {
1225 	const char *filename_display;
1226 
1227 	filename_display = symtab_to_filename_for_display (sal.symtab);
1228 	annotate_frame_source_begin ();
1229 	uiout->wrap_hint ("   ");
1230 	uiout->text (" at ");
1231 	annotate_frame_source_file ();
1232 	uiout->field_string ("file", filename_display, ui_out_style_kind::FILE);
1233 	if (uiout->is_mi_like_p ())
1234 	  {
1235 	    const char *fullname = symtab_to_fullname (sal.symtab);
1236 
1237 	    uiout->field_string ("fullname", fullname);
1238 	  }
1239 	annotate_frame_source_file_end ();
1240 	uiout->text (":");
1241 	annotate_frame_source_line ();
1242 	uiout->field_int ("line", sal.line);
1243 	annotate_frame_source_end ();
1244       }
1245 
1246     if (pc_p && (funname == NULL || sal.symtab == NULL))
1247       {
1248 	char *lib = solib_name_from_address (get_frame_program_space (frame),
1249 					     get_frame_pc (frame));
1250 
1251 	if (lib)
1252 	  {
1253 	    annotate_frame_where ();
1254 	    uiout->wrap_hint ("  ");
1255 	    uiout->text (" from ");
1256 	    uiout->field_string ("from", lib);
1257 	  }
1258       }
1259     if (uiout->is_mi_like_p ())
1260       uiout->field_string ("arch",
1261 			   (gdbarch_bfd_arch_info (gdbarch))->printable_name);
1262   }
1263 
1264   uiout->text ("\n");
1265 }
1266 
1267 
1268 /* Completion function for "frame function", "info frame function", and
1269    "select-frame function" commands.  */
1270 
1271 void
1272 frame_selection_by_function_completer (struct cmd_list_element *ignore,
1273 				       completion_tracker &tracker,
1274 				       const char *text, const char *word)
1275 {
1276   /* This is used to complete function names within a stack.  It would be
1277      nice if we only offered functions that were actually in the stack.
1278      However, this would mean unwinding the stack to completion, which
1279      could take too long, or on a corrupted stack, possibly not end.
1280      Instead, we offer all symbol names as a safer choice.  */
1281   collect_symbol_completion_matches (tracker,
1282 				     complete_symbol_mode::EXPRESSION,
1283 				     symbol_name_match_type::EXPRESSION,
1284 				     text, word);
1285 }
1286 
1287 /* Core of all the "info frame" sub-commands.  Print information about a
1288    frame FI.  If SELECTED_FRAME_P is true then the user didn't provide a
1289    frame specification, they just entered 'info frame'.  If the user did
1290    provide a frame specification (for example 'info frame 0', 'info frame
1291    level 1') then SELECTED_FRAME_P will be false.  */
1292 
1293 static void
1294 info_frame_command_core (struct frame_info *fi, bool selected_frame_p)
1295 {
1296   struct symbol *func;
1297   struct symtab *s;
1298   struct frame_info *calling_frame_info;
1299   int numregs;
1300   const char *funname = 0;
1301   enum language funlang = language_unknown;
1302   const char *pc_regname;
1303   struct gdbarch *gdbarch;
1304   CORE_ADDR frame_pc;
1305   int frame_pc_p;
1306   /* Initialize it to avoid "may be used uninitialized" warning.  */
1307   CORE_ADDR caller_pc = 0;
1308   int caller_pc_p = 0;
1309 
1310   gdbarch = get_frame_arch (fi);
1311 
1312   /* Name of the value returned by get_frame_pc().  Per comments, "pc"
1313      is not a good name.  */
1314   if (gdbarch_pc_regnum (gdbarch) >= 0)
1315     /* OK, this is weird.  The gdbarch_pc_regnum hardware register's value can
1316        easily not match that of the internal value returned by
1317        get_frame_pc().  */
1318     pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1319   else
1320     /* But then, this is weird to.  Even without gdbarch_pc_regnum, an
1321        architectures will often have a hardware register called "pc",
1322        and that register's value, again, can easily not match
1323        get_frame_pc().  */
1324     pc_regname = "pc";
1325 
1326   frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1327   func = get_frame_function (fi);
1328   symtab_and_line sal = find_frame_sal (fi);
1329   s = sal.symtab;
1330   gdb::unique_xmalloc_ptr<char> func_only;
1331   if (func)
1332     {
1333       funname = SYMBOL_PRINT_NAME (func);
1334       funlang = SYMBOL_LANGUAGE (func);
1335       if (funlang == language_cplus)
1336 	{
1337 	  /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1338 	     to display the demangled name that we already have
1339 	     stored in the symbol table, but we stored a version
1340 	     with DMGL_PARAMS turned on, and here we don't want to
1341 	     display parameters.  So remove the parameters.  */
1342 	  func_only = cp_remove_params (funname);
1343 
1344 	  if (func_only)
1345 	    funname = func_only.get ();
1346 	}
1347     }
1348   else if (frame_pc_p)
1349     {
1350       struct bound_minimal_symbol msymbol;
1351 
1352       msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1353       if (msymbol.minsym != NULL)
1354 	{
1355 	  funname = MSYMBOL_PRINT_NAME (msymbol.minsym);
1356 	  funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1357 	}
1358     }
1359   calling_frame_info = get_prev_frame (fi);
1360 
1361   if (selected_frame_p && frame_relative_level (fi) >= 0)
1362     {
1363       printf_filtered (_("Stack level %d, frame at "),
1364 		       frame_relative_level (fi));
1365     }
1366   else
1367     {
1368       printf_filtered (_("Stack frame at "));
1369     }
1370   fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
1371   printf_filtered (":\n");
1372   printf_filtered (" %s = ", pc_regname);
1373   if (frame_pc_p)
1374     fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1375   else
1376     fputs_filtered ("<unavailable>", gdb_stdout);
1377 
1378   wrap_here ("   ");
1379   if (funname)
1380     {
1381       printf_filtered (" in ");
1382       fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1383 			       DMGL_ANSI | DMGL_PARAMS);
1384     }
1385   wrap_here ("   ");
1386   if (sal.symtab)
1387     printf_filtered (" (%s:%d)", symtab_to_filename_for_display (sal.symtab),
1388 		     sal.line);
1389   puts_filtered ("; ");
1390   wrap_here ("    ");
1391   printf_filtered ("saved %s = ", pc_regname);
1392 
1393   if (!frame_id_p (frame_unwind_caller_id (fi)))
1394     val_print_not_saved (gdb_stdout);
1395   else
1396     {
1397       TRY
1398 	{
1399 	  caller_pc = frame_unwind_caller_pc (fi);
1400 	  caller_pc_p = 1;
1401 	}
1402       CATCH (ex, RETURN_MASK_ERROR)
1403 	{
1404 	  switch (ex.error)
1405 	    {
1406 	    case NOT_AVAILABLE_ERROR:
1407 	      val_print_unavailable (gdb_stdout);
1408 	      break;
1409 	    case OPTIMIZED_OUT_ERROR:
1410 	      val_print_not_saved (gdb_stdout);
1411 	      break;
1412 	    default:
1413 	      fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1414 	      break;
1415 	    }
1416 	}
1417       END_CATCH
1418     }
1419 
1420   if (caller_pc_p)
1421     fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
1422   printf_filtered ("\n");
1423 
1424   if (calling_frame_info == NULL)
1425     {
1426       enum unwind_stop_reason reason;
1427 
1428       reason = get_frame_unwind_stop_reason (fi);
1429       if (reason != UNWIND_NO_REASON)
1430 	printf_filtered (_(" Outermost frame: %s\n"),
1431 			 frame_stop_reason_string (fi));
1432     }
1433   else if (get_frame_type (fi) == TAILCALL_FRAME)
1434     puts_filtered (" tail call frame");
1435   else if (get_frame_type (fi) == INLINE_FRAME)
1436     printf_filtered (" inlined into frame %d",
1437 		     frame_relative_level (get_prev_frame (fi)));
1438   else
1439     {
1440       printf_filtered (" called by frame at ");
1441       fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
1442 		      gdb_stdout);
1443     }
1444   if (get_next_frame (fi) && calling_frame_info)
1445     puts_filtered (",");
1446   wrap_here ("   ");
1447   if (get_next_frame (fi))
1448     {
1449       printf_filtered (" caller of frame at ");
1450       fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
1451 		      gdb_stdout);
1452     }
1453   if (get_next_frame (fi) || calling_frame_info)
1454     puts_filtered ("\n");
1455 
1456   if (s)
1457     printf_filtered (" source language %s.\n",
1458 		     language_str (s->language));
1459 
1460   {
1461     /* Address of the argument list for this frame, or 0.  */
1462     CORE_ADDR arg_list = get_frame_args_address (fi);
1463     /* Number of args for this frame, or -1 if unknown.  */
1464     int numargs;
1465 
1466     if (arg_list == 0)
1467       printf_filtered (" Arglist at unknown address.\n");
1468     else
1469       {
1470 	printf_filtered (" Arglist at ");
1471 	fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1472 	printf_filtered (",");
1473 
1474 	if (!gdbarch_frame_num_args_p (gdbarch))
1475 	  {
1476 	    numargs = -1;
1477 	    puts_filtered (" args: ");
1478 	  }
1479 	else
1480 	  {
1481 	    numargs = gdbarch_frame_num_args (gdbarch, fi);
1482 	    gdb_assert (numargs >= 0);
1483 	    if (numargs == 0)
1484 	      puts_filtered (" no args.");
1485 	    else if (numargs == 1)
1486 	      puts_filtered (" 1 arg: ");
1487 	    else
1488 	      printf_filtered (" %d args: ", numargs);
1489 	  }
1490 	print_frame_args (func, fi, numargs, gdb_stdout);
1491 	puts_filtered ("\n");
1492       }
1493   }
1494   {
1495     /* Address of the local variables for this frame, or 0.  */
1496     CORE_ADDR arg_list = get_frame_locals_address (fi);
1497 
1498     if (arg_list == 0)
1499       printf_filtered (" Locals at unknown address,");
1500     else
1501       {
1502 	printf_filtered (" Locals at ");
1503 	fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1504 	printf_filtered (",");
1505       }
1506   }
1507 
1508   /* Print as much information as possible on the location of all the
1509      registers.  */
1510   {
1511     int count;
1512     int i;
1513     int need_nl = 1;
1514     int sp_regnum = gdbarch_sp_regnum (gdbarch);
1515 
1516     /* The sp is special; what's displayed isn't the save address, but
1517        the value of the previous frame's sp.  This is a legacy thing,
1518        at one stage the frame cached the previous frame's SP instead
1519        of its address, hence it was easiest to just display the cached
1520        value.  */
1521     if (sp_regnum >= 0)
1522       {
1523 	struct value *value = frame_unwind_register_value (fi, sp_regnum);
1524 	gdb_assert (value != NULL);
1525 
1526 	if (!value_optimized_out (value) && value_entirely_available (value))
1527 	  {
1528 	    if (VALUE_LVAL (value) == not_lval)
1529 	      {
1530 		CORE_ADDR sp;
1531 		enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1532 		int sp_size = register_size (gdbarch, sp_regnum);
1533 
1534 		sp = extract_unsigned_integer (value_contents_all (value),
1535 					       sp_size, byte_order);
1536 
1537 		printf_filtered (" Previous frame's sp is ");
1538 		fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
1539 		printf_filtered ("\n");
1540 	      }
1541 	    else if (VALUE_LVAL (value) == lval_memory)
1542 	      {
1543 		printf_filtered (" Previous frame's sp at ");
1544 		fputs_filtered (paddress (gdbarch, value_address (value)),
1545 				gdb_stdout);
1546 		printf_filtered ("\n");
1547 	      }
1548 	    else if (VALUE_LVAL (value) == lval_register)
1549 	      {
1550 		printf_filtered (" Previous frame's sp in %s\n",
1551 				 gdbarch_register_name (gdbarch,
1552 							VALUE_REGNUM (value)));
1553 	      }
1554 
1555 	    release_value (value);
1556 	    need_nl = 0;
1557 	  }
1558 	/* else keep quiet.  */
1559       }
1560 
1561     count = 0;
1562     numregs = gdbarch_num_cooked_regs (gdbarch);
1563     for (i = 0; i < numregs; i++)
1564       if (i != sp_regnum
1565 	  && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1566 	{
1567 	  enum lval_type lval;
1568 	  int optimized;
1569 	  int unavailable;
1570 	  CORE_ADDR addr;
1571 	  int realnum;
1572 
1573 	  /* Find out the location of the saved register without
1574              fetching the corresponding value.  */
1575 	  frame_register_unwind (fi, i, &optimized, &unavailable,
1576 				 &lval, &addr, &realnum, NULL);
1577 	  /* For moment, only display registers that were saved on the
1578 	     stack.  */
1579 	  if (!optimized && !unavailable && lval == lval_memory)
1580 	    {
1581 	      if (count == 0)
1582 		puts_filtered (" Saved registers:\n ");
1583 	      else
1584 		puts_filtered (",");
1585 	      wrap_here (" ");
1586 	      printf_filtered (" %s at ",
1587 			       gdbarch_register_name (gdbarch, i));
1588 	      fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1589 	      count++;
1590 	    }
1591 	}
1592     if (count || need_nl)
1593       puts_filtered ("\n");
1594   }
1595 }
1596 
1597 /* Return the innermost frame at level LEVEL.  */
1598 
1599 static struct frame_info *
1600 leading_innermost_frame (int level)
1601 {
1602   struct frame_info *leading;
1603 
1604   leading = get_current_frame ();
1605 
1606   gdb_assert (level >= 0);
1607 
1608   while (leading != nullptr && level)
1609     {
1610       QUIT;
1611       leading = get_prev_frame (leading);
1612       level--;
1613     }
1614 
1615   return leading;
1616 }
1617 
1618 /* Return the starting frame needed to handle COUNT outermost frames.  */
1619 
1620 static struct frame_info *
1621 trailing_outermost_frame (int count)
1622 {
1623   struct frame_info *current;
1624   struct frame_info *trailing;
1625 
1626   trailing = get_current_frame ();
1627 
1628   gdb_assert (count > 0);
1629 
1630   current = trailing;
1631   while (current != nullptr && count--)
1632     {
1633       QUIT;
1634       current = get_prev_frame (current);
1635     }
1636 
1637   /* Will stop when CURRENT reaches the top of the stack.
1638      TRAILING will be COUNT below it.  */
1639   while (current != nullptr)
1640     {
1641       QUIT;
1642       trailing = get_prev_frame (trailing);
1643       current = get_prev_frame (current);
1644     }
1645 
1646   return trailing;
1647 }
1648 
1649 /* The core of all the "select-frame" sub-commands.  Just wraps a call to
1650    SELECT_FRAME.  */
1651 
1652 static void
1653 select_frame_command_core (struct frame_info *fi, bool ignored)
1654 {
1655   struct frame_info *prev_frame = get_selected_frame_if_set ();
1656   select_frame (fi);
1657   if (get_selected_frame_if_set () != prev_frame)
1658     gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
1659 }
1660 
1661 /* See stack.h.  */
1662 
1663 void
1664 select_frame_for_mi (struct frame_info *fi)
1665 {
1666   select_frame_command_core (fi, FALSE /* Ignored.  */);
1667 }
1668 
1669 /* The core of all the "frame" sub-commands.  Select frame FI, and if this
1670    means we change frame send out a change notification (otherwise, just
1671    reprint the current frame summary).   */
1672 
1673 static void
1674 frame_command_core (struct frame_info *fi, bool ignored)
1675 {
1676   struct frame_info *prev_frame = get_selected_frame_if_set ();
1677 
1678   select_frame (fi);
1679   if (get_selected_frame_if_set () != prev_frame)
1680     gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
1681   else
1682     print_selected_thread_frame (current_uiout, USER_SELECTED_FRAME);
1683 }
1684 
1685 /* The three commands 'frame', 'select-frame', and 'info frame' all have a
1686    common set of sub-commands that allow a specific frame to be selected.
1687    All of the sub-command functions are static methods within this class
1688    template which is then instantiated below.  The template parameter is a
1689    callback used to implement the functionality of the base command
1690    ('frame', 'select-frame', or 'info frame').
1691 
1692    In the template parameter FI is the frame being selected.  The
1693    SELECTED_FRAME_P flag is true if the frame being selected was done by
1694    default, which happens when the user uses the base command with no
1695    arguments.  For example the commands 'info frame', 'select-frame',
1696    'frame' will all cause SELECTED_FRAME_P to be true.  In all other cases
1697    SELECTED_FRAME_P is false.  */
1698 
1699 template <void (*FPTR) (struct frame_info *fi, bool selected_frame_p)>
1700 class frame_command_helper
1701 {
1702 public:
1703 
1704   /* The "frame level" family of commands.  The ARG is an integer that is
1705      the frame's level in the stack.  */
1706   static void
1707   level (const char *arg, int from_tty)
1708   {
1709     int level = value_as_long (parse_and_eval (arg));
1710     struct frame_info *fid
1711       = find_relative_frame (get_current_frame (), &level);
1712     if (level != 0)
1713       error (_("No frame at level %s."), arg);
1714     FPTR (fid, false);
1715   }
1716 
1717   /* The "frame address" family of commands.  ARG is a stack-pointer
1718      address for an existing frame.  This command does not allow new
1719      frames to be created.  */
1720 
1721   static void
1722   address (const char *arg, int from_tty)
1723   {
1724     CORE_ADDR addr = value_as_address (parse_and_eval (arg));
1725     struct frame_info *fid = find_frame_for_address (addr);
1726     if (fid == NULL)
1727       error (_("No frame at address %s."), arg);
1728     FPTR (fid, false);
1729   }
1730 
1731   /* The "frame view" family of commands.  ARG is one or two addresses and
1732      is used to view a frame that might be outside the current backtrace.
1733      The addresses are stack-pointer address, and (optional) pc-address.  */
1734 
1735   static void
1736   view (const char *args, int from_tty)
1737   {
1738     struct frame_info *fid;
1739 
1740     if (args == NULL)
1741     error (_("Missing address argument to view a frame"));
1742 
1743     gdb_argv argv (args);
1744 
1745     if (argv.count () == 2)
1746       {
1747 	CORE_ADDR addr[2];
1748 
1749 	addr [0] = value_as_address (parse_and_eval (argv[0]));
1750 	addr [1] = value_as_address (parse_and_eval (argv[1]));
1751 	fid = create_new_frame (addr[0], addr[1]);
1752       }
1753     else
1754       {
1755 	CORE_ADDR addr = value_as_address (parse_and_eval (argv[0]));
1756 	fid = create_new_frame (addr, false);
1757       }
1758     FPTR (fid, false);
1759   }
1760 
1761   /* The "frame function" family of commands.  ARG is the name of a
1762      function within the stack, the first function (searching from frame
1763      0) with that name will be selected.  */
1764 
1765   static void
1766   function (const char *arg, int from_tty)
1767   {
1768     if (arg == NULL)
1769       error (_("Missing function name argument"));
1770     struct frame_info *fid = find_frame_for_function (arg);
1771     if (fid == NULL)
1772       error (_("No frame for function \"%s\"."), arg);
1773     FPTR (fid, false);
1774   }
1775 
1776   /* The "frame" base command, that is, when no sub-command is specified.
1777      If one argument is provided then we assume that this is a frame's
1778      level as historically, this was the supported command syntax that was
1779      used most often.
1780 
1781      If no argument is provided, then the current frame is selected.  */
1782 
1783   static void
1784   base_command (const char *arg, int from_tty)
1785   {
1786     if (arg == NULL)
1787       FPTR (get_selected_frame (_("No stack.")), true);
1788     else
1789       level (arg, from_tty);
1790   }
1791 };
1792 
1793 /* Instantiate three FRAME_COMMAND_HELPER instances to implement the
1794    sub-commands for 'info frame', 'frame', and 'select-frame' commands.  */
1795 
1796 static frame_command_helper <info_frame_command_core> info_frame_cmd;
1797 static frame_command_helper <frame_command_core> frame_cmd;
1798 static frame_command_helper <select_frame_command_core> select_frame_cmd;
1799 
1800 /* Print briefly all stack frames or just the innermost COUNT_EXP
1801    frames.  */
1802 
1803 static void
1804 backtrace_command_1 (const char *count_exp, frame_filter_flags flags,
1805 		     int no_filters, int from_tty)
1806 {
1807   struct frame_info *fi;
1808   int count;
1809   int py_start = 0, py_end = 0;
1810   enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
1811 
1812   if (!target_has_stack)
1813     error (_("No stack."));
1814 
1815   if (count_exp)
1816     {
1817       count = parse_and_eval_long (count_exp);
1818       if (count < 0)
1819 	py_start = count;
1820       else
1821 	{
1822 	  py_start = 0;
1823 	  /* The argument to apply_ext_lang_frame_filter is the number
1824 	     of the final frame to print, and frames start at 0.  */
1825 	  py_end = count - 1;
1826 	}
1827     }
1828   else
1829     {
1830       py_end = -1;
1831       count = -1;
1832     }
1833 
1834   if (! no_filters)
1835     {
1836       enum ext_lang_frame_args arg_type;
1837 
1838       flags |= PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
1839       if (from_tty)
1840 	flags |= PRINT_MORE_FRAMES;
1841 
1842       if (!strcmp (print_frame_arguments, "scalars"))
1843 	arg_type = CLI_SCALAR_VALUES;
1844       else if (!strcmp (print_frame_arguments, "all"))
1845 	arg_type = CLI_ALL_VALUES;
1846       else
1847 	arg_type = NO_VALUES;
1848 
1849       result = apply_ext_lang_frame_filter (get_current_frame (), flags,
1850 					    arg_type, current_uiout,
1851 					    py_start, py_end);
1852     }
1853 
1854   /* Run the inbuilt backtrace if there are no filters registered, or
1855      "no-filters" has been specified from the command.  */
1856   if (no_filters ||  result == EXT_LANG_BT_NO_FILTERS)
1857     {
1858       struct frame_info *trailing;
1859 
1860       /* The following code must do two things.  First, it must set the
1861 	 variable TRAILING to the frame from which we should start
1862 	 printing.  Second, it must set the variable count to the number
1863 	 of frames which we should print, or -1 if all of them.  */
1864 
1865       if (count_exp != NULL && count < 0)
1866 	{
1867 	  trailing = trailing_outermost_frame (-count);
1868 	  count = -1;
1869 	}
1870       else
1871 	trailing = get_current_frame ();
1872 
1873       for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
1874 	{
1875 	  QUIT;
1876 
1877 	  /* Don't use print_stack_frame; if an error() occurs it probably
1878 	     means further attempts to backtrace would fail (on the other
1879 	     hand, perhaps the code does or could be fixed to make sure
1880 	     the frame->prev field gets set to NULL in that case).  */
1881 
1882 	  print_frame_info (fi, 1, LOCATION, 1, 0);
1883 	  if ((flags & PRINT_LOCALS) != 0)
1884 	    {
1885 	      struct frame_id frame_id = get_frame_id (fi);
1886 
1887 	      print_frame_local_vars (fi, false, NULL, NULL, 1, gdb_stdout);
1888 
1889 	      /* print_frame_local_vars invalidates FI.  */
1890 	      fi = frame_find_by_id (frame_id);
1891 	      if (fi == NULL)
1892 		{
1893 		  trailing = NULL;
1894 		  warning (_("Unable to restore previously selected frame."));
1895 		  break;
1896 		}
1897 	    }
1898 
1899 	  /* Save the last frame to check for error conditions.  */
1900 	  trailing = fi;
1901 	}
1902 
1903       /* If we've stopped before the end, mention that.  */
1904       if (fi && from_tty)
1905 	printf_filtered (_("(More stack frames follow...)\n"));
1906 
1907       /* If we've run out of frames, and the reason appears to be an error
1908 	 condition, print it.  */
1909       if (fi == NULL && trailing != NULL)
1910 	{
1911 	  enum unwind_stop_reason reason;
1912 
1913 	  reason = get_frame_unwind_stop_reason (trailing);
1914 	  if (reason >= UNWIND_FIRST_ERROR)
1915 	    printf_filtered (_("Backtrace stopped: %s\n"),
1916 			     frame_stop_reason_string (trailing));
1917 	}
1918     }
1919 }
1920 
1921 static void
1922 backtrace_command (const char *arg, int from_tty)
1923 {
1924   bool filters = true;
1925   frame_filter_flags flags = 0;
1926 
1927   if (arg)
1928     {
1929       bool done = false;
1930 
1931       while (!done)
1932 	{
1933 	  const char *save_arg = arg;
1934 	  std::string this_arg = extract_arg (&arg);
1935 
1936 	  if (this_arg.empty ())
1937 	    break;
1938 
1939 	  if (subset_compare (this_arg.c_str (), "no-filters"))
1940 	    filters = false;
1941 	  else if (subset_compare (this_arg.c_str (), "full"))
1942 	    flags |= PRINT_LOCALS;
1943 	  else if (subset_compare (this_arg.c_str (), "hide"))
1944 	    flags |= PRINT_HIDE;
1945 	  else
1946 	    {
1947 	      /* Not a recognized argument, so stop.  */
1948 	      arg = save_arg;
1949 	      done = true;
1950 	    }
1951 	}
1952 
1953       if (*arg == '\0')
1954 	arg = NULL;
1955     }
1956 
1957   backtrace_command_1 (arg, flags, !filters /* no frame-filters */, from_tty);
1958 }
1959 
1960 /* Iterate over the local variables of a block B, calling CB with
1961    CB_DATA.  */
1962 
1963 static void
1964 iterate_over_block_locals (const struct block *b,
1965 			   iterate_over_block_arg_local_vars_cb cb,
1966 			   void *cb_data)
1967 {
1968   struct block_iterator iter;
1969   struct symbol *sym;
1970 
1971   ALL_BLOCK_SYMBOLS (b, iter, sym)
1972     {
1973       switch (SYMBOL_CLASS (sym))
1974 	{
1975 	case LOC_LOCAL:
1976 	case LOC_REGISTER:
1977 	case LOC_STATIC:
1978 	case LOC_COMPUTED:
1979 	case LOC_OPTIMIZED_OUT:
1980 	  if (SYMBOL_IS_ARGUMENT (sym))
1981 	    break;
1982 	  if (SYMBOL_DOMAIN (sym) == COMMON_BLOCK_DOMAIN)
1983 	    break;
1984 	  (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
1985 	  break;
1986 
1987 	default:
1988 	  /* Ignore symbols which are not locals.  */
1989 	  break;
1990 	}
1991     }
1992 }
1993 
1994 
1995 /* Same, but print labels.  */
1996 
1997 #if 0
1998 /* Commented out, as the code using this function has also been
1999    commented out.  FIXME:brobecker/2009-01-13: Find out why the code
2000    was commented out in the first place.  The discussion introducing
2001    this change (2007-12-04: Support lexical blocks and function bodies
2002    that occupy non-contiguous address ranges) did not explain why
2003    this change was made.  */
2004 static int
2005 print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
2006 			  int *have_default, struct ui_file *stream)
2007 {
2008   struct block_iterator iter;
2009   struct symbol *sym;
2010   int values_printed = 0;
2011 
2012   ALL_BLOCK_SYMBOLS (b, iter, sym)
2013     {
2014       if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
2015 	{
2016 	  if (*have_default)
2017 	    continue;
2018 	  *have_default = 1;
2019 	}
2020       if (SYMBOL_CLASS (sym) == LOC_LABEL)
2021 	{
2022 	  struct symtab_and_line sal;
2023 	  struct value_print_options opts;
2024 
2025 	  sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
2026 	  values_printed = 1;
2027 	  fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
2028 	  get_user_print_options (&opts);
2029 	  if (opts.addressprint)
2030 	    {
2031 	      fprintf_filtered (stream, " ");
2032 	      fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
2033 			      stream);
2034 	    }
2035 	  fprintf_filtered (stream, " in file %s, line %d\n",
2036 			    sal.symtab->filename, sal.line);
2037 	}
2038     }
2039 
2040   return values_printed;
2041 }
2042 #endif
2043 
2044 /* Iterate over all the local variables in block B, including all its
2045    superblocks, stopping when the top-level block is reached.  */
2046 
2047 void
2048 iterate_over_block_local_vars (const struct block *block,
2049 			       iterate_over_block_arg_local_vars_cb cb,
2050 			       void *cb_data)
2051 {
2052   while (block)
2053     {
2054       iterate_over_block_locals (block, cb, cb_data);
2055       /* After handling the function's top-level block, stop.  Don't
2056 	 continue to its superblock, the block of per-file
2057 	 symbols.  */
2058       if (BLOCK_FUNCTION (block))
2059 	break;
2060       block = BLOCK_SUPERBLOCK (block);
2061     }
2062 }
2063 
2064 /* Data to be passed around in the calls to the locals and args
2065    iterators.  */
2066 
2067 struct print_variable_and_value_data
2068 {
2069   gdb::optional<compiled_regex> preg;
2070   gdb::optional<compiled_regex> treg;
2071   struct frame_id frame_id;
2072   int num_tabs;
2073   struct ui_file *stream;
2074   int values_printed;
2075 };
2076 
2077 /* The callback for the locals and args iterators.  */
2078 
2079 static void
2080 do_print_variable_and_value (const char *print_name,
2081 			     struct symbol *sym,
2082 			     void *cb_data)
2083 {
2084   struct print_variable_and_value_data *p
2085     = (struct print_variable_and_value_data *) cb_data;
2086   struct frame_info *frame;
2087 
2088   if (p->preg.has_value ()
2089       && p->preg->exec (SYMBOL_NATURAL_NAME (sym), 0,
2090 			NULL, 0) != 0)
2091     return;
2092   if (p->treg.has_value ()
2093       && !treg_matches_sym_type_name (*p->treg, sym))
2094     return;
2095 
2096   frame = frame_find_by_id (p->frame_id);
2097   if (frame == NULL)
2098     {
2099       warning (_("Unable to restore previously selected frame."));
2100       return;
2101     }
2102 
2103   print_variable_and_value (print_name, sym, frame, p->stream, p->num_tabs);
2104 
2105   /* print_variable_and_value invalidates FRAME.  */
2106   frame = NULL;
2107 
2108   p->values_printed = 1;
2109 }
2110 
2111 /* Prepares the regular expression REG from REGEXP.
2112    If REGEXP is NULL, it results in an empty regular expression.  */
2113 
2114 static void
2115 prepare_reg (const char *regexp, gdb::optional<compiled_regex> *reg)
2116 {
2117   if (regexp != NULL)
2118     {
2119       int cflags = REG_NOSUB | (case_sensitivity == case_sensitive_off
2120 				? REG_ICASE : 0);
2121       reg->emplace (regexp, cflags, _("Invalid regexp"));
2122     }
2123   else
2124     reg->reset ();
2125 }
2126 
2127 /* Print all variables from the innermost up to the function block of FRAME.
2128    Print them with values to STREAM indented by NUM_TABS.
2129    If REGEXP is not NULL, only print local variables whose name
2130    matches REGEXP.
2131    If T_REGEXP is not NULL, only print local variables whose type
2132    matches T_REGEXP.
2133    If no local variables have been printed and !QUIET, prints a message
2134    explaining why no local variables could be printed.
2135 
2136    This function will invalidate FRAME.  */
2137 
2138 static void
2139 print_frame_local_vars (struct frame_info *frame,
2140 			bool quiet,
2141 			const char *regexp, const char *t_regexp,
2142 			int num_tabs, struct ui_file *stream)
2143 {
2144   struct print_variable_and_value_data cb_data;
2145   const struct block *block;
2146   CORE_ADDR pc;
2147 
2148   if (!get_frame_pc_if_available (frame, &pc))
2149     {
2150       if (!quiet)
2151 	fprintf_filtered (stream,
2152 			  _("PC unavailable, cannot determine locals.\n"));
2153       return;
2154     }
2155 
2156   block = get_frame_block (frame, 0);
2157   if (block == 0)
2158     {
2159       if (!quiet)
2160 	fprintf_filtered (stream, "No symbol table info available.\n");
2161       return;
2162     }
2163 
2164   prepare_reg (regexp, &cb_data.preg);
2165   prepare_reg (t_regexp, &cb_data.treg);
2166   cb_data.frame_id = get_frame_id (frame);
2167   cb_data.num_tabs = 4 * num_tabs;
2168   cb_data.stream = stream;
2169   cb_data.values_printed = 0;
2170 
2171   /* Temporarily change the selected frame to the given FRAME.
2172      This allows routines that rely on the selected frame instead
2173      of being given a frame as parameter to use the correct frame.  */
2174   scoped_restore_selected_frame restore_selected_frame;
2175   select_frame (frame);
2176 
2177   iterate_over_block_local_vars (block,
2178 				 do_print_variable_and_value,
2179 				 &cb_data);
2180 
2181   if (!cb_data.values_printed && !quiet)
2182     {
2183       if (regexp == NULL && t_regexp == NULL)
2184 	fprintf_filtered (stream, _("No locals.\n"));
2185       else
2186 	fprintf_filtered (stream, _("No matching locals.\n"));
2187     }
2188 }
2189 
2190 void
2191 info_locals_command (const char *args, int from_tty)
2192 {
2193   std::string regexp;
2194   std::string t_regexp;
2195   bool quiet = false;
2196 
2197   while (args != NULL
2198 	 && extract_info_print_args (&args, &quiet, &regexp, &t_regexp))
2199     ;
2200 
2201   if (args != NULL)
2202     report_unrecognized_option_error ("info locals", args);
2203 
2204   print_frame_local_vars (get_selected_frame (_("No frame selected.")),
2205 			  quiet,
2206 			  regexp.empty () ? NULL : regexp.c_str (),
2207 			  t_regexp.empty () ? NULL : t_regexp.c_str (),
2208 			  0, gdb_stdout);
2209 }
2210 
2211 /* Iterate over all the argument variables in block B.  */
2212 
2213 void
2214 iterate_over_block_arg_vars (const struct block *b,
2215 			     iterate_over_block_arg_local_vars_cb cb,
2216 			     void *cb_data)
2217 {
2218   struct block_iterator iter;
2219   struct symbol *sym, *sym2;
2220 
2221   ALL_BLOCK_SYMBOLS (b, iter, sym)
2222     {
2223       /* Don't worry about things which aren't arguments.  */
2224       if (SYMBOL_IS_ARGUMENT (sym))
2225 	{
2226 	  /* We have to look up the symbol because arguments can have
2227 	     two entries (one a parameter, one a local) and the one we
2228 	     want is the local, which lookup_symbol will find for us.
2229 	     This includes gcc1 (not gcc2) on the sparc when passing a
2230 	     small structure and gcc2 when the argument type is float
2231 	     and it is passed as a double and converted to float by
2232 	     the prologue (in the latter case the type of the LOC_ARG
2233 	     symbol is double and the type of the LOC_LOCAL symbol is
2234 	     float).  There are also LOC_ARG/LOC_REGISTER pairs which
2235 	     are not combined in symbol-reading.  */
2236 
2237 	  sym2 = lookup_symbol_search_name (SYMBOL_SEARCH_NAME (sym),
2238 					    b, VAR_DOMAIN).symbol;
2239 	  (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
2240 	}
2241     }
2242 }
2243 
2244 /* Print all argument variables of the function of FRAME.
2245    Print them with values to STREAM.
2246    If REGEXP is not NULL, only print argument variables whose name
2247    matches REGEXP.
2248    If T_REGEXP is not NULL, only print argument variables whose type
2249    matches T_REGEXP.
2250    If no argument variables have been printed and !QUIET, prints a message
2251    explaining why no argument variables could be printed.
2252 
2253    This function will invalidate FRAME.  */
2254 
2255 static void
2256 print_frame_arg_vars (struct frame_info *frame,
2257 		      bool quiet,
2258 		      const char *regexp, const char *t_regexp,
2259 		      struct ui_file *stream)
2260 {
2261   struct print_variable_and_value_data cb_data;
2262   struct symbol *func;
2263   CORE_ADDR pc;
2264   gdb::optional<compiled_regex> preg;
2265   gdb::optional<compiled_regex> treg;
2266 
2267   if (!get_frame_pc_if_available (frame, &pc))
2268     {
2269       if (!quiet)
2270 	fprintf_filtered (stream,
2271 			  _("PC unavailable, cannot determine args.\n"));
2272       return;
2273     }
2274 
2275   func = get_frame_function (frame);
2276   if (func == NULL)
2277     {
2278       if (!quiet)
2279 	fprintf_filtered (stream, _("No symbol table info available.\n"));
2280       return;
2281     }
2282 
2283   prepare_reg (regexp, &cb_data.preg);
2284   prepare_reg (t_regexp, &cb_data.treg);
2285   cb_data.frame_id = get_frame_id (frame);
2286   cb_data.num_tabs = 0;
2287   cb_data.stream = stream;
2288   cb_data.values_printed = 0;
2289 
2290   iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
2291 			       do_print_variable_and_value, &cb_data);
2292 
2293   /* do_print_variable_and_value invalidates FRAME.  */
2294   frame = NULL;
2295 
2296   if (!cb_data.values_printed && !quiet)
2297     {
2298       if (regexp == NULL && t_regexp == NULL)
2299 	fprintf_filtered (stream, _("No arguments.\n"));
2300       else
2301 	fprintf_filtered (stream, _("No matching arguments.\n"));
2302     }
2303 }
2304 
2305 void
2306 info_args_command (const char *args, int from_tty)
2307 {
2308   std::string regexp;
2309   std::string t_regexp;
2310   bool quiet = false;
2311 
2312   while (args != NULL
2313 	 && extract_info_print_args (&args, &quiet, &regexp, &t_regexp))
2314     ;
2315 
2316   if (args != NULL)
2317     report_unrecognized_option_error ("info args", args);
2318 
2319 
2320   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
2321 			quiet,
2322 			regexp.empty () ? NULL : regexp.c_str (),
2323 			t_regexp.empty () ? NULL : t_regexp.c_str (),
2324 			gdb_stdout);
2325 }
2326 
2327 /* Return the symbol-block in which the selected frame is executing.
2328    Can return zero under various legitimate circumstances.
2329 
2330    If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2331    code address within the block returned.  We use this to decide
2332    which macros are in scope.  */
2333 
2334 const struct block *
2335 get_selected_block (CORE_ADDR *addr_in_block)
2336 {
2337   if (!has_stack_frames ())
2338     return 0;
2339 
2340   return get_frame_block (get_selected_frame (NULL), addr_in_block);
2341 }
2342 
2343 /* Find a frame a certain number of levels away from FRAME.
2344    LEVEL_OFFSET_PTR points to an int containing the number of levels.
2345    Positive means go to earlier frames (up); negative, the reverse.
2346    The int that contains the number of levels is counted toward
2347    zero as the frames for those levels are found.
2348    If the top or bottom frame is reached, that frame is returned,
2349    but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2350    how much farther the original request asked to go.  */
2351 
2352 struct frame_info *
2353 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
2354 {
2355   /* Going up is simple: just call get_prev_frame enough times or
2356      until the initial frame is reached.  */
2357   while (*level_offset_ptr > 0)
2358     {
2359       struct frame_info *prev = get_prev_frame (frame);
2360 
2361       if (!prev)
2362 	break;
2363       (*level_offset_ptr)--;
2364       frame = prev;
2365     }
2366 
2367   /* Going down is just as simple.  */
2368   while (*level_offset_ptr < 0)
2369     {
2370       struct frame_info *next = get_next_frame (frame);
2371 
2372       if (!next)
2373 	break;
2374       (*level_offset_ptr)++;
2375       frame = next;
2376     }
2377 
2378   return frame;
2379 }
2380 
2381 /* Select the frame up one or COUNT_EXP stack levels from the
2382    previously selected frame, and print it briefly.  */
2383 
2384 static void
2385 up_silently_base (const char *count_exp)
2386 {
2387   struct frame_info *frame;
2388   int count = 1;
2389 
2390   if (count_exp)
2391     count = parse_and_eval_long (count_exp);
2392 
2393   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2394   if (count != 0 && count_exp == NULL)
2395     error (_("Initial frame selected; you cannot go up."));
2396   select_frame (frame);
2397 }
2398 
2399 static void
2400 up_silently_command (const char *count_exp, int from_tty)
2401 {
2402   up_silently_base (count_exp);
2403 }
2404 
2405 static void
2406 up_command (const char *count_exp, int from_tty)
2407 {
2408   up_silently_base (count_exp);
2409   gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
2410 }
2411 
2412 /* Select the frame down one or COUNT_EXP stack levels from the previously
2413    selected frame, and print it briefly.  */
2414 
2415 static void
2416 down_silently_base (const char *count_exp)
2417 {
2418   struct frame_info *frame;
2419   int count = -1;
2420 
2421   if (count_exp)
2422     count = -parse_and_eval_long (count_exp);
2423 
2424   frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2425   if (count != 0 && count_exp == NULL)
2426     {
2427       /* We only do this if COUNT_EXP is not specified.  That way
2428          "down" means to really go down (and let me know if that is
2429          impossible), but "down 9999" can be used to mean go all the
2430          way down without getting an error.  */
2431 
2432       error (_("Bottom (innermost) frame selected; you cannot go down."));
2433     }
2434 
2435   select_frame (frame);
2436 }
2437 
2438 static void
2439 down_silently_command (const char *count_exp, int from_tty)
2440 {
2441   down_silently_base (count_exp);
2442 }
2443 
2444 static void
2445 down_command (const char *count_exp, int from_tty)
2446 {
2447   down_silently_base (count_exp);
2448   gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
2449 }
2450 
2451 void
2452 return_command (const char *retval_exp, int from_tty)
2453 {
2454   /* Initialize it just to avoid a GCC false warning.  */
2455   enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2456   struct frame_info *thisframe;
2457   struct gdbarch *gdbarch;
2458   struct symbol *thisfun;
2459   struct value *return_value = NULL;
2460   struct value *function = NULL;
2461   const char *query_prefix = "";
2462 
2463   thisframe = get_selected_frame ("No selected frame.");
2464   thisfun = get_frame_function (thisframe);
2465   gdbarch = get_frame_arch (thisframe);
2466 
2467   if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2468     error (_("Can not force return from an inlined function."));
2469 
2470   /* Compute the return value.  If the computation triggers an error,
2471      let it bail.  If the return type can't be handled, set
2472      RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2473      message.  */
2474   if (retval_exp)
2475     {
2476       expression_up retval_expr = parse_expression (retval_exp);
2477       struct type *return_type = NULL;
2478 
2479       /* Compute the return value.  Should the computation fail, this
2480          call throws an error.  */
2481       return_value = evaluate_expression (retval_expr.get ());
2482 
2483       /* Cast return value to the return type of the function.  Should
2484          the cast fail, this call throws an error.  */
2485       if (thisfun != NULL)
2486 	return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
2487       if (return_type == NULL)
2488       	{
2489 	  if (retval_expr->elts[0].opcode != UNOP_CAST
2490 	      && retval_expr->elts[0].opcode != UNOP_CAST_TYPE)
2491 	    error (_("Return value type not available for selected "
2492 		     "stack frame.\n"
2493 		     "Please use an explicit cast of the value to return."));
2494 	  return_type = value_type (return_value);
2495 	}
2496       return_type = check_typedef (return_type);
2497       return_value = value_cast (return_type, return_value);
2498 
2499       /* Make sure the value is fully evaluated.  It may live in the
2500          stack frame we're about to pop.  */
2501       if (value_lazy (return_value))
2502 	value_fetch_lazy (return_value);
2503 
2504       if (thisfun != NULL)
2505 	function = read_var_value (thisfun, NULL, thisframe);
2506 
2507       rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2508       if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
2509 	/* If the return-type is "void", don't try to find the
2510            return-value's location.  However, do still evaluate the
2511            return expression so that, even when the expression result
2512            is discarded, side effects such as "return i++" still
2513            occur.  */
2514 	return_value = NULL;
2515       else if (thisfun != NULL)
2516 	{
2517 	  rv_conv = struct_return_convention (gdbarch, function, return_type);
2518 	  if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2519 	      || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2520 	    {
2521 	      query_prefix = "The location at which to store the "
2522 		"function's return value is unknown.\n"
2523 		"If you continue, the return value "
2524 		"that you specified will be ignored.\n";
2525 	      return_value = NULL;
2526 	    }
2527 	}
2528     }
2529 
2530   /* Does an interactive user really want to do this?  Include
2531      information, such as how well GDB can handle the return value, in
2532      the query message.  */
2533   if (from_tty)
2534     {
2535       int confirmed;
2536 
2537       if (thisfun == NULL)
2538 	confirmed = query (_("%sMake selected stack frame return now? "),
2539 			   query_prefix);
2540       else
2541 	{
2542 	  if (TYPE_NO_RETURN (thisfun->type))
2543 	    warning (_("Function does not return normally to caller."));
2544 	  confirmed = query (_("%sMake %s return now? "), query_prefix,
2545 			     SYMBOL_PRINT_NAME (thisfun));
2546 	}
2547       if (!confirmed)
2548 	error (_("Not confirmed"));
2549     }
2550 
2551   /* Discard the selected frame and all frames inner-to it.  */
2552   frame_pop (get_selected_frame (NULL));
2553 
2554   /* Store RETURN_VALUE in the just-returned register set.  */
2555   if (return_value != NULL)
2556     {
2557       struct type *return_type = value_type (return_value);
2558       struct gdbarch *cache_arch = get_current_regcache ()->arch ();
2559 
2560       gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2561 		  && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
2562       gdbarch_return_value (cache_arch, function, return_type,
2563 			    get_current_regcache (), NULL /*read*/,
2564 			    value_contents (return_value) /*write*/);
2565     }
2566 
2567   /* If we are at the end of a call dummy now, pop the dummy frame
2568      too.  */
2569   if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2570     frame_pop (get_current_frame ());
2571 
2572   select_frame (get_current_frame ());
2573   /* If interactive, print the frame that is now current.  */
2574   if (from_tty)
2575     print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2576 }
2577 
2578 /* Find the most inner frame in the current stack for a function called
2579    FUNCTION_NAME.  If no matching frame is found return NULL.  */
2580 
2581 static struct frame_info *
2582 find_frame_for_function (const char *function_name)
2583 {
2584   /* Used to hold the lower and upper addresses for each of the
2585      SYMTAB_AND_LINEs found for functions matching FUNCTION_NAME.  */
2586   struct function_bounds
2587   {
2588     CORE_ADDR low, high;
2589   };
2590   struct frame_info *frame;
2591   bool found = false;
2592   int level = 1;
2593 
2594   gdb_assert (function_name != NULL);
2595 
2596   frame = get_current_frame ();
2597   std::vector<symtab_and_line> sals
2598     = decode_line_with_current_source (function_name,
2599 				       DECODE_LINE_FUNFIRSTLINE);
2600   gdb::def_vector<function_bounds> func_bounds (sals.size ());
2601   for (size_t i = 0; i < sals.size (); i++)
2602     {
2603       if (sals[i].pspace != current_program_space)
2604 	func_bounds[i].low = func_bounds[i].high = 0;
2605       else if (sals[i].pc == 0
2606 	       || find_pc_partial_function (sals[i].pc, NULL,
2607 					    &func_bounds[i].low,
2608 					    &func_bounds[i].high) == 0)
2609 	func_bounds[i].low = func_bounds[i].high = 0;
2610     }
2611 
2612   do
2613     {
2614       for (size_t i = 0; (i < sals.size () && !found); i++)
2615 	found = (get_frame_pc (frame) >= func_bounds[i].low
2616 		 && get_frame_pc (frame) < func_bounds[i].high);
2617       if (!found)
2618 	{
2619 	  level = 1;
2620 	  frame = find_relative_frame (frame, &level);
2621 	}
2622     }
2623   while (!found && level == 0);
2624 
2625   if (!found)
2626     frame = NULL;
2627 
2628   return frame;
2629 }
2630 
2631 /* Implements the dbx 'func' command.  */
2632 
2633 static void
2634 func_command (const char *arg, int from_tty)
2635 {
2636   if (arg == NULL)
2637     return;
2638 
2639   struct frame_info *frame = find_frame_for_function (arg);
2640   if (frame == NULL)
2641     error (_("'%s' not within current stack frame."), arg);
2642   if (frame != get_selected_frame (NULL))
2643     {
2644       select_frame (frame);
2645       print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2646     }
2647 }
2648 
2649 /* Apply a GDB command to all stack frames, or a set of identified frames,
2650    or innermost COUNT frames.
2651    With a negative COUNT, apply command on outermost -COUNT frames.
2652 
2653    frame apply 3 info frame     Apply 'info frame' to frames 0, 1, 2
2654    frame apply -3 info frame    Apply 'info frame' to outermost 3 frames.
2655    frame apply all x/i $pc      Apply 'x/i $pc' cmd to all frames.
2656    frame apply all -s p local_var_no_idea_in_which_frame
2657                 If a frame has a local variable called
2658                 local_var_no_idea_in_which_frame, print frame
2659                 and value of local_var_no_idea_in_which_frame.
2660    frame apply all -s -q p local_var_no_idea_in_which_frame
2661                 Same as before, but only print the variable value.
2662    frame apply level 2-5 0 4-7 -s p i = i + 1
2663                 Adds 1 to the variable i in the specified frames.
2664                 Note that i will be incremented twice in
2665                 frames 4 and 5.  */
2666 
2667 /* Apply a GDB command to COUNT stack frames, starting at TRAILING.
2668    CMD starts with 0 or more qcs flags followed by the GDB command to apply.
2669    COUNT -1 means all frames starting at TRAILING.  WHICH_COMMAND is used
2670    for error messages.  */
2671 
2672 static void
2673 frame_apply_command_count (const char *which_command,
2674 			   const char *cmd, int from_tty,
2675 			   struct frame_info *trailing, int count)
2676 {
2677   qcs_flags flags;
2678   struct frame_info *fi;
2679 
2680   while (cmd != NULL && parse_flags_qcs (which_command, &cmd, &flags))
2681     ;
2682 
2683   if (cmd == NULL || *cmd == '\0')
2684     error (_("Please specify a command to apply on the selected frames"));
2685 
2686   /* The below will restore the current inferior/thread/frame.
2687      Usually, only the frame is effectively to be restored.
2688      But in case CMD switches of inferior/thread, better restore
2689      these also.  */
2690   scoped_restore_current_thread restore_thread;
2691 
2692   for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
2693     {
2694       QUIT;
2695 
2696       select_frame (fi);
2697       TRY
2698 	{
2699 	  std::string cmd_result;
2700 	  {
2701 	    /* In case CMD switches of inferior/thread/frame, the below
2702 	       restores the inferior/thread/frame.  FI can then be
2703 	       set to the selected frame.  */
2704 	    scoped_restore_current_thread restore_fi_current_frame;
2705 
2706 	    cmd_result = execute_command_to_string (cmd, from_tty);
2707 	  }
2708 	  fi = get_selected_frame (_("frame apply "
2709 				     "unable to get selected frame."));
2710 	  if (!flags.silent || cmd_result.length () > 0)
2711 	    {
2712 	      if (!flags.quiet)
2713 		print_stack_frame (fi, 1, LOCATION, 0);
2714 	      printf_filtered ("%s", cmd_result.c_str ());
2715 	    }
2716 	}
2717       CATCH (ex, RETURN_MASK_ERROR)
2718 	{
2719 	  fi = get_selected_frame (_("frame apply "
2720 				     "unable to get selected frame."));
2721 	  if (!flags.silent)
2722 	    {
2723 	      if (!flags.quiet)
2724 		print_stack_frame (fi, 1, LOCATION, 0);
2725 	      if (flags.cont)
2726 		printf_filtered ("%s\n", ex.message);
2727 	      else
2728 		throw_exception (ex);
2729 	    }
2730 	}
2731       END_CATCH;
2732     }
2733 }
2734 
2735 /* Implementation of the "frame apply level" command.  */
2736 
2737 static void
2738 frame_apply_level_command (const char *cmd, int from_tty)
2739 {
2740   if (!target_has_stack)
2741     error (_("No stack."));
2742 
2743   bool level_found = false;
2744   const char *levels_str = cmd;
2745   number_or_range_parser levels (levels_str);
2746 
2747   /* Skip the LEVEL list to find the flags and command args.  */
2748   while (!levels.finished ())
2749     {
2750       /* Call for effect.  */
2751       levels.get_number ();
2752 
2753       level_found = true;
2754       if (levels.in_range ())
2755 	levels.skip_range ();
2756     }
2757 
2758   if (!level_found)
2759     error (_("Missing or invalid LEVEL... argument"));
2760 
2761   cmd = levels.cur_tok ();
2762 
2763   /* Redo the LEVELS parsing, but applying COMMAND.  */
2764   levels.init (levels_str);
2765   while (!levels.finished ())
2766     {
2767       const int level_beg = levels.get_number ();
2768       int n_frames;
2769 
2770       if (levels.in_range ())
2771 	{
2772 	  n_frames = levels.end_value () - level_beg + 1;
2773 	  levels.skip_range ();
2774 	}
2775       else
2776 	n_frames = 1;
2777 
2778       frame_apply_command_count ("frame apply level", cmd, from_tty,
2779 				 leading_innermost_frame (level_beg), n_frames);
2780     }
2781 }
2782 
2783 /* Implementation of the "frame apply all" command.  */
2784 
2785 static void
2786 frame_apply_all_command (const char *cmd, int from_tty)
2787 {
2788   if (!target_has_stack)
2789     error (_("No stack."));
2790 
2791   frame_apply_command_count ("frame apply all", cmd, from_tty,
2792 			     get_current_frame (), INT_MAX);
2793 }
2794 
2795 /* Implementation of the "frame apply" command.  */
2796 
2797 static void
2798 frame_apply_command (const char* cmd, int from_tty)
2799 {
2800   int count;
2801   struct frame_info *trailing;
2802 
2803   if (!target_has_stack)
2804     error (_("No stack."));
2805 
2806   if (cmd == NULL)
2807     error (_("Missing COUNT argument."));
2808   count = get_number_trailer (&cmd, 0);
2809   if (count == 0)
2810     error (_("Invalid COUNT argument."));
2811 
2812   if (count < 0)
2813     {
2814       trailing = trailing_outermost_frame (-count);
2815       count = -1;
2816     }
2817   else
2818     trailing = get_current_frame ();
2819 
2820   frame_apply_command_count ("frame apply", cmd, from_tty,
2821 			     trailing, count);
2822 }
2823 
2824 /* Implementation of the "faas" command.  */
2825 
2826 static void
2827 faas_command (const char *cmd, int from_tty)
2828 {
2829   std::string expanded = std::string ("frame apply all -s ") + cmd;
2830   execute_command (expanded.c_str (), from_tty);
2831 }
2832 
2833 
2834 /* Find inner-mode frame with frame address ADDRESS.  Return NULL if no
2835    matching frame can be found.  */
2836 
2837 static struct frame_info *
2838 find_frame_for_address (CORE_ADDR address)
2839 {
2840   struct frame_id id;
2841   struct frame_info *fid;
2842 
2843   id = frame_id_build_wild (address);
2844 
2845   /* If (s)he specifies the frame with an address, he deserves
2846      what (s)he gets.  Still, give the highest one that matches.
2847      (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
2848      know).  */
2849   for (fid = get_current_frame ();
2850        fid != NULL;
2851        fid = get_prev_frame (fid))
2852     {
2853       if (frame_id_eq (id, get_frame_id (fid)))
2854 	{
2855 	  struct frame_info *prev_frame;
2856 
2857 	  while (1)
2858 	    {
2859 	      prev_frame = get_prev_frame (fid);
2860 	      if (!prev_frame
2861 		  || !frame_id_eq (id, get_frame_id (prev_frame)))
2862 		break;
2863 	      fid = prev_frame;
2864 	    }
2865 	  return fid;
2866 	}
2867     }
2868   return NULL;
2869 }
2870 
2871 
2872 
2873 /* Commands with a prefix of `frame apply'.  */
2874 static struct cmd_list_element *frame_apply_cmd_list = NULL;
2875 
2876 /* Commands with a prefix of `frame'.  */
2877 static struct cmd_list_element *frame_cmd_list = NULL;
2878 
2879 /* Commands with a prefix of `select frame'.  */
2880 static struct cmd_list_element *select_frame_cmd_list = NULL;
2881 
2882 /* Commands with a prefix of `info frame'.  */
2883 static struct cmd_list_element *info_frame_cmd_list = NULL;
2884 
2885 void
2886 _initialize_stack (void)
2887 {
2888   struct cmd_list_element *cmd;
2889 
2890   add_com ("return", class_stack, return_command, _("\
2891 Make selected stack frame return to its caller.\n\
2892 Control remains in the debugger, but when you continue\n\
2893 execution will resume in the frame above the one now selected.\n\
2894 If an argument is given, it is an expression for the value to return."));
2895 
2896   add_com ("up", class_stack, up_command, _("\
2897 Select and print stack frame that called this one.\n\
2898 An argument says how many frames up to go."));
2899   add_com ("up-silently", class_support, up_silently_command, _("\
2900 Same as the `up' command, but does not print anything.\n\
2901 This is useful in command scripts."));
2902 
2903   add_com ("down", class_stack, down_command, _("\
2904 Select and print stack frame called by this one.\n\
2905 An argument says how many frames down to go."));
2906   add_com_alias ("do", "down", class_stack, 1);
2907   add_com_alias ("dow", "down", class_stack, 1);
2908   add_com ("down-silently", class_support, down_silently_command, _("\
2909 Same as the `down' command, but does not print anything.\n\
2910 This is useful in command scripts."));
2911 
2912   add_prefix_cmd ("frame", class_stack,
2913                   &frame_cmd.base_command, _("\
2914 Select and print a stack frame.\n\
2915 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
2916 A single numerical argument specifies the frame to select."),
2917                   &frame_cmd_list, "frame ", 1, &cmdlist);
2918 
2919   add_com_alias ("f", "frame", class_stack, 1);
2920 
2921 #define FRAME_APPLY_FLAGS_HELP "\
2922 Prints the frame location information followed by COMMAND output.\n\
2923 FLAG arguments are -q (quiet), -c (continue), -s (silent).\n\
2924 Flag -q disables printing the frame location information.\n\
2925 By default, if a COMMAND raises an error, frame apply is aborted.\n\
2926 Flag -c indicates to print the error and continue.\n\
2927 Flag -s indicates to silently ignore a COMMAND that raises an error\n\
2928 or produces no output."
2929 
2930   add_prefix_cmd ("apply", class_stack, frame_apply_command,
2931 		  _("Apply a command to a number of frames.\n\
2932 Usage: frame apply COUNT [FLAG]... COMMAND\n\
2933 With a negative COUNT argument, applies the command on outermost -COUNT frames.\n"
2934 FRAME_APPLY_FLAGS_HELP),
2935 		  &frame_apply_cmd_list, "frame apply ", 1, &frame_cmd_list);
2936 
2937   add_cmd ("all", class_stack, frame_apply_all_command,
2938 	   _("\
2939 Apply a command to all frames.\n\
2940 \n\
2941 Usage: frame apply all [FLAG]... COMMAND\n"
2942 FRAME_APPLY_FLAGS_HELP),
2943 	   &frame_apply_cmd_list);
2944 
2945   add_cmd ("level", class_stack, frame_apply_level_command,
2946 	   _("\
2947 Apply a command to a list of frames.\n\
2948 \n\
2949 Usage: frame apply level LEVEL... [FLAG]... COMMAND\n\
2950 ID is a space-separated list of LEVELs of frames to apply COMMAND on.\n"
2951 FRAME_APPLY_FLAGS_HELP),
2952 	   &frame_apply_cmd_list);
2953 
2954   add_com ("faas", class_stack, faas_command, _("\
2955 Apply a command to all frames (ignoring errors and empty output).\n\
2956 Usage: faas COMMAND\n\
2957 shortcut for 'frame apply all -s COMMAND'"));
2958 
2959 
2960   add_prefix_cmd ("frame", class_stack,
2961 		  &frame_cmd.base_command, _("\
2962 Select and print a stack frame.\n\
2963 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
2964 A single numerical argument specifies the frame to select."),
2965 		  &frame_cmd_list, "frame ", 1, &cmdlist);
2966   add_com_alias ("f", "frame", class_stack, 1);
2967 
2968   add_cmd ("address", class_stack, &frame_cmd.address,
2969 	   _("\
2970 Select and print a stack frame by stack address\n\
2971 \n\
2972 Usage: frame address STACK-ADDRESS"),
2973 	   &frame_cmd_list);
2974 
2975   add_cmd ("view", class_stack, &frame_cmd.view,
2976 	   _("\
2977 View a stack frame that might be outside the current backtrace.\n\
2978 \n\
2979 Usage: frame view STACK-ADDRESS\n\
2980        frame view STACK-ADDRESS PC-ADDRESS"),
2981 	   &frame_cmd_list);
2982 
2983   cmd = add_cmd ("function", class_stack, &frame_cmd.function,
2984 	   _("\
2985 Select and print a stack frame by function name.\n\
2986 \n\
2987 Usage: frame function NAME\n\
2988 \n\
2989 The innermost frame that visited function NAME is selected."),
2990 	   &frame_cmd_list);
2991   set_cmd_completer (cmd, frame_selection_by_function_completer);
2992 
2993 
2994   add_cmd ("level", class_stack, &frame_cmd.level,
2995 	   _("\
2996 Select and print a stack frame by level.\n\
2997 \n\
2998 Usage: frame level LEVEL"),
2999 	   &frame_cmd_list);
3000 
3001   cmd = add_prefix_cmd_suppress_notification ("select-frame", class_stack,
3002 		      &select_frame_cmd.base_command, _("\
3003 Select a stack frame without printing anything.\n\
3004 A single numerical argument specifies the frame to select."),
3005 		      &select_frame_cmd_list, "select-frame ", 1, &cmdlist,
3006 		      &cli_suppress_notification.user_selected_context);
3007 
3008   add_cmd_suppress_notification ("address", class_stack,
3009 			 &select_frame_cmd.address, _("\
3010 Select a stack frame by stack address.\n\
3011 \n\
3012 Usage: select-frame address STACK-ADDRESS"),
3013 			 &select_frame_cmd_list,
3014 			 &cli_suppress_notification.user_selected_context);
3015 
3016 
3017   add_cmd_suppress_notification ("view", class_stack,
3018 		 &select_frame_cmd.view, _("\
3019 Select a stack frame that might be outside the current backtrace.\n\
3020 \n\
3021 Usage: select-frame view STACK-ADDRESS\n\
3022        select-frame view STACK-ADDRESS PC-ADDRESS"),
3023 		 &select_frame_cmd_list,
3024 		 &cli_suppress_notification.user_selected_context);
3025 
3026   cmd = add_cmd_suppress_notification ("function", class_stack,
3027 	       &select_frame_cmd.function, _("\
3028 Select a stack frame by function name.\n\
3029 \n\
3030 Usage: select-frame function NAME"),
3031 	       &select_frame_cmd_list,
3032 	       &cli_suppress_notification.user_selected_context);
3033   set_cmd_completer (cmd, frame_selection_by_function_completer);
3034 
3035   add_cmd_suppress_notification ("level", class_stack,
3036 			 &select_frame_cmd.level, _("\
3037 Select a stack frame by level.\n\
3038 \n\
3039 Usage: select-frame level LEVEL"),
3040 			 &select_frame_cmd_list,
3041 			 &cli_suppress_notification.user_selected_context);
3042 
3043   add_com ("backtrace", class_stack, backtrace_command, _("\
3044 Print backtrace of all stack frames, or innermost COUNT frames.\n\
3045 Usage: backtrace [QUALIFIERS]... [COUNT]\n\
3046 With a negative argument, print outermost -COUNT frames.\n\
3047 Use of the 'full' qualifier also prints the values of the local variables.\n\
3048 Use of the 'no-filters' qualifier prohibits frame filters from executing\n\
3049 on this backtrace."));
3050   add_com_alias ("bt", "backtrace", class_stack, 0);
3051 
3052   add_com_alias ("where", "backtrace", class_alias, 0);
3053   add_info ("stack", backtrace_command,
3054 	    _("Backtrace of the stack, or innermost COUNT frames."));
3055   add_info_alias ("s", "stack", 1);
3056 
3057   add_prefix_cmd ("frame", class_info, &info_frame_cmd.base_command,
3058 		  _("All about the selected stack frame.\n\
3059 With no arguments, displays information about the currently selected stack\n\
3060 frame.  Alternatively a frame specification may be provided (See \"frame\")\n\
3061 the information is then printed about the specified frame."),
3062 		  &info_frame_cmd_list, "info frame ", 1, &infolist);
3063   add_info_alias ("f", "frame", 1);
3064 
3065   add_cmd ("address", class_stack, &info_frame_cmd.address,
3066 	   _("\
3067 Print information about a stack frame selected by stack address.\n\
3068 \n\
3069 Usage: info frame address STACK-ADDRESS"),
3070 	   &info_frame_cmd_list);
3071 
3072   add_cmd ("view", class_stack, &info_frame_cmd.view,
3073 	   _("\
3074 Print information about a stack frame outside the current backtrace.\n\
3075 \n\
3076 Usage: info frame view STACK-ADDRESS\n\
3077        info frame view STACK-ADDRESS PC-ADDRESS"),
3078 	   &info_frame_cmd_list);
3079 
3080   cmd = add_cmd ("function", class_stack, &info_frame_cmd.function,
3081 	   _("\
3082 Print information about a stack frame selected by function name.\n\
3083 \n\
3084 Usage: info frame function NAME"),
3085 	   &info_frame_cmd_list);
3086   set_cmd_completer (cmd, frame_selection_by_function_completer);
3087 
3088   add_cmd ("level", class_stack, &info_frame_cmd.level,
3089 	   _("\
3090 Print information about a stack frame selected by level.\n\
3091 \n\
3092 Usage: info frame level LEVEL"),
3093 	   &info_frame_cmd_list);
3094 
3095   add_info ("locals", info_locals_command,
3096 	    info_print_args_help (_("\
3097 All local variables of current stack frame or those matching REGEXPs.\n\
3098 Usage: info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3099 Prints the local variables of the current stack frame.\n"),
3100 				  _("local variables")));
3101   add_info ("args", info_args_command,
3102 	    info_print_args_help (_("\
3103 All argument variables of current stack frame or those matching REGEXPs.\n\
3104 Usage: info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3105 Prints the argument variables of the current stack frame.\n"),
3106 				  _("argument variables")));
3107 
3108   if (dbx_commands)
3109     add_com ("func", class_stack, func_command, _("\
3110 Select the stack frame that contains NAME.\n\
3111 Usage: func NAME"));
3112 
3113   add_setshow_enum_cmd ("frame-arguments", class_stack,
3114 			print_frame_arguments_choices, &print_frame_arguments,
3115 			_("Set printing of non-scalar frame arguments"),
3116 			_("Show printing of non-scalar frame arguments"),
3117 			NULL, NULL, NULL, &setprintlist, &showprintlist);
3118 
3119   add_setshow_boolean_cmd ("frame-arguments", no_class,
3120 			   &print_raw_frame_arguments, _("\
3121 Set whether to print frame arguments in raw form."), _("\
3122 Show whether to print frame arguments in raw form."), _("\
3123 If set, frame arguments are printed in raw form, bypassing any\n\
3124 pretty-printers for that value."),
3125 			   NULL, NULL,
3126 			   &setprintrawlist, &showprintrawlist);
3127 
3128   add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
3129 			        &disassemble_next_line, _("\
3130 Set whether to disassemble next source line or insn when execution stops."),
3131 				_("\
3132 Show whether to disassemble next source line or insn when execution stops."),
3133 				_("\
3134 If ON, GDB will display disassembly of the next source line, in addition\n\
3135 to displaying the source line itself.  If the next source line cannot\n\
3136 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
3137 will display disassembly of next instruction instead of showing the\n\
3138 source line.\n\
3139 If AUTO, display disassembly of next instruction only if the source line\n\
3140 cannot be displayed.\n\
3141 If OFF (which is the default), never display the disassembly of the next\n\
3142 source line."),
3143 			        NULL,
3144 			        show_disassemble_next_line,
3145 			        &setlist, &showlist);
3146   disassemble_next_line = AUTO_BOOLEAN_FALSE;
3147 
3148   add_setshow_enum_cmd ("entry-values", class_stack,
3149 			print_entry_values_choices, &print_entry_values,
3150 			_("Set printing of function arguments at function "
3151 			  "entry"),
3152 			_("Show printing of function arguments at function "
3153 			  "entry"),
3154 			_("\
3155 GDB can sometimes determine the values of function arguments at entry,\n\
3156 in addition to their current values.  This option tells GDB whether\n\
3157 to print the current value, the value at entry (marked as val@entry),\n\
3158 or both.  Note that one or both of these values may be <optimized out>."),
3159 			NULL, NULL, &setprintlist, &showprintlist);
3160 }
3161