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