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