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