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