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