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