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