2012-03-01 Pedro Alves <palves@redhat.com>
[platform/upstream/binutils.git] / gdb / frame.c
1 /* Cache and manage frames for GDB, the GNU debugger.
2
3    Copyright (C) 1986-1987, 1989, 1991, 1994-1996, 1998, 2000-2004,
4    2007-2012 Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20
21 #include "defs.h"
22 #include "frame.h"
23 #include "target.h"
24 #include "value.h"
25 #include "inferior.h"   /* for inferior_ptid */
26 #include "regcache.h"
27 #include "gdb_assert.h"
28 #include "gdb_string.h"
29 #include "user-regs.h"
30 #include "gdb_obstack.h"
31 #include "dummy-frame.h"
32 #include "sentinel-frame.h"
33 #include "gdbcore.h"
34 #include "annotate.h"
35 #include "language.h"
36 #include "frame-unwind.h"
37 #include "frame-base.h"
38 #include "command.h"
39 #include "gdbcmd.h"
40 #include "observer.h"
41 #include "objfiles.h"
42 #include "exceptions.h"
43 #include "gdbthread.h"
44 #include "block.h"
45 #include "inline-frame.h"
46 #include  "tracepoint.h"
47
48 static struct frame_info *get_prev_frame_1 (struct frame_info *this_frame);
49 static struct frame_info *get_prev_frame_raw (struct frame_info *this_frame);
50
51 /* We keep a cache of stack frames, each of which is a "struct
52    frame_info".  The innermost one gets allocated (in
53    wait_for_inferior) each time the inferior stops; current_frame
54    points to it.  Additional frames get allocated (in get_prev_frame)
55    as needed, and are chained through the next and prev fields.  Any
56    time that the frame cache becomes invalid (most notably when we
57    execute something, but also if we change how we interpret the
58    frames (e.g. "set heuristic-fence-post" in mips-tdep.c, or anything
59    which reads new symbols)), we should call reinit_frame_cache.  */
60
61 struct frame_info
62 {
63   /* Level of this frame.  The inner-most (youngest) frame is at level
64      0.  As you move towards the outer-most (oldest) frame, the level
65      increases.  This is a cached value.  It could just as easily be
66      computed by counting back from the selected frame to the inner
67      most frame.  */
68   /* NOTE: cagney/2002-04-05: Perhaps a level of ``-1'' should be
69      reserved to indicate a bogus frame - one that has been created
70      just to keep GDB happy (GDB always needs a frame).  For the
71      moment leave this as speculation.  */
72   int level;
73
74   /* The frame's program space.  */
75   struct program_space *pspace;
76
77   /* The frame's address space.  */
78   struct address_space *aspace;
79
80   /* The frame's low-level unwinder and corresponding cache.  The
81      low-level unwinder is responsible for unwinding register values
82      for the previous frame.  The low-level unwind methods are
83      selected based on the presence, or otherwise, of register unwind
84      information such as CFI.  */
85   void *prologue_cache;
86   const struct frame_unwind *unwind;
87
88   /* Cached copy of the previous frame's architecture.  */
89   struct
90   {
91     int p;
92     struct gdbarch *arch;
93   } prev_arch;
94
95   /* Cached copy of the previous frame's resume address.  */
96   struct {
97     int p;
98     CORE_ADDR value;
99   } prev_pc;
100   
101   /* Cached copy of the previous frame's function address.  */
102   struct
103   {
104     CORE_ADDR addr;
105     int p;
106   } prev_func;
107   
108   /* This frame's ID.  */
109   struct
110   {
111     int p;
112     struct frame_id value;
113   } this_id;
114   
115   /* The frame's high-level base methods, and corresponding cache.
116      The high level base methods are selected based on the frame's
117      debug info.  */
118   const struct frame_base *base;
119   void *base_cache;
120
121   /* Pointers to the next (down, inner, younger) and previous (up,
122      outer, older) frame_info's in the frame cache.  */
123   struct frame_info *next; /* down, inner, younger */
124   int prev_p;
125   struct frame_info *prev; /* up, outer, older */
126
127   /* The reason why we could not set PREV, or UNWIND_NO_REASON if we
128      could.  Only valid when PREV_P is set.  */
129   enum unwind_stop_reason stop_reason;
130 };
131
132 /* A frame stash used to speed up frame lookups.  */
133
134 /* We currently only stash one frame at a time, as this seems to be
135    sufficient for now.  */
136 static struct frame_info *frame_stash = NULL;
137
138 /* Add the following FRAME to the frame stash.  */
139
140 static void
141 frame_stash_add (struct frame_info *frame)
142 {
143   frame_stash = frame;
144 }
145
146 /* Search the frame stash for an entry with the given frame ID.
147    If found, return that frame.  Otherwise return NULL.  */
148
149 static struct frame_info *
150 frame_stash_find (struct frame_id id)
151 {
152   if (frame_stash && frame_id_eq (frame_stash->this_id.value, id))
153     return frame_stash;
154
155   return NULL;
156 }
157
158 /* Invalidate the frame stash by removing all entries in it.  */
159
160 static void
161 frame_stash_invalidate (void)
162 {
163   frame_stash = NULL;
164 }
165
166 /* Flag to control debugging.  */
167
168 int frame_debug;
169 static void
170 show_frame_debug (struct ui_file *file, int from_tty,
171                   struct cmd_list_element *c, const char *value)
172 {
173   fprintf_filtered (file, _("Frame debugging is %s.\n"), value);
174 }
175
176 /* Flag to indicate whether backtraces should stop at main et.al.  */
177
178 static int backtrace_past_main;
179 static void
180 show_backtrace_past_main (struct ui_file *file, int from_tty,
181                           struct cmd_list_element *c, const char *value)
182 {
183   fprintf_filtered (file,
184                     _("Whether backtraces should "
185                       "continue past \"main\" is %s.\n"),
186                     value);
187 }
188
189 static int backtrace_past_entry;
190 static void
191 show_backtrace_past_entry (struct ui_file *file, int from_tty,
192                            struct cmd_list_element *c, const char *value)
193 {
194   fprintf_filtered (file, _("Whether backtraces should continue past the "
195                             "entry point of a program is %s.\n"),
196                     value);
197 }
198
199 static int backtrace_limit = INT_MAX;
200 static void
201 show_backtrace_limit (struct ui_file *file, int from_tty,
202                       struct cmd_list_element *c, const char *value)
203 {
204   fprintf_filtered (file,
205                     _("An upper bound on the number "
206                       "of backtrace levels is %s.\n"),
207                     value);
208 }
209
210
211 static void
212 fprint_field (struct ui_file *file, const char *name, int p, CORE_ADDR addr)
213 {
214   if (p)
215     fprintf_unfiltered (file, "%s=%s", name, hex_string (addr));
216   else
217     fprintf_unfiltered (file, "!%s", name);
218 }
219
220 void
221 fprint_frame_id (struct ui_file *file, struct frame_id id)
222 {
223   fprintf_unfiltered (file, "{");
224   fprint_field (file, "stack", id.stack_addr_p, id.stack_addr);
225   fprintf_unfiltered (file, ",");
226   fprint_field (file, "code", id.code_addr_p, id.code_addr);
227   fprintf_unfiltered (file, ",");
228   fprint_field (file, "special", id.special_addr_p, id.special_addr);
229   if (id.inline_depth)
230     fprintf_unfiltered (file, ",inlined=%d", id.inline_depth);
231   fprintf_unfiltered (file, "}");
232 }
233
234 static void
235 fprint_frame_type (struct ui_file *file, enum frame_type type)
236 {
237   switch (type)
238     {
239     case NORMAL_FRAME:
240       fprintf_unfiltered (file, "NORMAL_FRAME");
241       return;
242     case DUMMY_FRAME:
243       fprintf_unfiltered (file, "DUMMY_FRAME");
244       return;
245     case INLINE_FRAME:
246       fprintf_unfiltered (file, "INLINE_FRAME");
247       return;
248     case SENTINEL_FRAME:
249       fprintf_unfiltered (file, "SENTINEL_FRAME");
250       return;
251     case SIGTRAMP_FRAME:
252       fprintf_unfiltered (file, "SIGTRAMP_FRAME");
253       return;
254     case ARCH_FRAME:
255       fprintf_unfiltered (file, "ARCH_FRAME");
256       return;
257     default:
258       fprintf_unfiltered (file, "<unknown type>");
259       return;
260     };
261 }
262
263 static void
264 fprint_frame (struct ui_file *file, struct frame_info *fi)
265 {
266   if (fi == NULL)
267     {
268       fprintf_unfiltered (file, "<NULL frame>");
269       return;
270     }
271   fprintf_unfiltered (file, "{");
272   fprintf_unfiltered (file, "level=%d", fi->level);
273   fprintf_unfiltered (file, ",");
274   fprintf_unfiltered (file, "type=");
275   if (fi->unwind != NULL)
276     fprint_frame_type (file, fi->unwind->type);
277   else
278     fprintf_unfiltered (file, "<unknown>");
279   fprintf_unfiltered (file, ",");
280   fprintf_unfiltered (file, "unwind=");
281   if (fi->unwind != NULL)
282     gdb_print_host_address (fi->unwind, file);
283   else
284     fprintf_unfiltered (file, "<unknown>");
285   fprintf_unfiltered (file, ",");
286   fprintf_unfiltered (file, "pc=");
287   if (fi->next != NULL && fi->next->prev_pc.p)
288     fprintf_unfiltered (file, "%s", hex_string (fi->next->prev_pc.value));
289   else
290     fprintf_unfiltered (file, "<unknown>");
291   fprintf_unfiltered (file, ",");
292   fprintf_unfiltered (file, "id=");
293   if (fi->this_id.p)
294     fprint_frame_id (file, fi->this_id.value);
295   else
296     fprintf_unfiltered (file, "<unknown>");
297   fprintf_unfiltered (file, ",");
298   fprintf_unfiltered (file, "func=");
299   if (fi->next != NULL && fi->next->prev_func.p)
300     fprintf_unfiltered (file, "%s", hex_string (fi->next->prev_func.addr));
301   else
302     fprintf_unfiltered (file, "<unknown>");
303   fprintf_unfiltered (file, "}");
304 }
305
306 /* Given FRAME, return the enclosing normal frame for inlined
307    function frames.  Otherwise return the original frame.  */
308
309 static struct frame_info *
310 skip_inlined_frames (struct frame_info *frame)
311 {
312   while (get_frame_type (frame) == INLINE_FRAME)
313     frame = get_prev_frame (frame);
314
315   return frame;
316 }
317
318 /* Return a frame uniq ID that can be used to, later, re-find the
319    frame.  */
320
321 struct frame_id
322 get_frame_id (struct frame_info *fi)
323 {
324   if (fi == NULL)
325     return null_frame_id;
326
327   if (!fi->this_id.p)
328     {
329       if (frame_debug)
330         fprintf_unfiltered (gdb_stdlog, "{ get_frame_id (fi=%d) ",
331                             fi->level);
332       /* Find the unwinder.  */
333       if (fi->unwind == NULL)
334         frame_unwind_find_by_frame (fi, &fi->prologue_cache);
335       /* Find THIS frame's ID.  */
336       /* Default to outermost if no ID is found.  */
337       fi->this_id.value = outer_frame_id;
338       fi->unwind->this_id (fi, &fi->prologue_cache, &fi->this_id.value);
339       gdb_assert (frame_id_p (fi->this_id.value));
340       fi->this_id.p = 1;
341       if (frame_debug)
342         {
343           fprintf_unfiltered (gdb_stdlog, "-> ");
344           fprint_frame_id (gdb_stdlog, fi->this_id.value);
345           fprintf_unfiltered (gdb_stdlog, " }\n");
346         }
347     }
348
349   frame_stash_add (fi);
350
351   return fi->this_id.value;
352 }
353
354 struct frame_id
355 get_stack_frame_id (struct frame_info *next_frame)
356 {
357   return get_frame_id (skip_inlined_frames (next_frame));
358 }
359
360 struct frame_id
361 frame_unwind_caller_id (struct frame_info *next_frame)
362 {
363   struct frame_info *this_frame;
364
365   /* Use get_prev_frame_1, and not get_prev_frame.  The latter will truncate
366      the frame chain, leading to this function unintentionally
367      returning a null_frame_id (e.g., when a caller requests the frame
368      ID of "main()"s caller.  */
369
370   next_frame = skip_inlined_frames (next_frame);
371   this_frame = get_prev_frame_1 (next_frame);
372   if (this_frame)
373     return get_frame_id (skip_inlined_frames (this_frame));
374   else
375     return null_frame_id;
376 }
377
378 const struct frame_id null_frame_id; /* All zeros.  */
379 const struct frame_id outer_frame_id = { 0, 0, 0, 0, 0, 1, 0 };
380
381 struct frame_id
382 frame_id_build_special (CORE_ADDR stack_addr, CORE_ADDR code_addr,
383                         CORE_ADDR special_addr)
384 {
385   struct frame_id id = null_frame_id;
386
387   id.stack_addr = stack_addr;
388   id.stack_addr_p = 1;
389   id.code_addr = code_addr;
390   id.code_addr_p = 1;
391   id.special_addr = special_addr;
392   id.special_addr_p = 1;
393   return id;
394 }
395
396 struct frame_id
397 frame_id_build (CORE_ADDR stack_addr, CORE_ADDR code_addr)
398 {
399   struct frame_id id = null_frame_id;
400
401   id.stack_addr = stack_addr;
402   id.stack_addr_p = 1;
403   id.code_addr = code_addr;
404   id.code_addr_p = 1;
405   return id;
406 }
407
408 struct frame_id
409 frame_id_build_wild (CORE_ADDR stack_addr)
410 {
411   struct frame_id id = null_frame_id;
412
413   id.stack_addr = stack_addr;
414   id.stack_addr_p = 1;
415   return id;
416 }
417
418 int
419 frame_id_p (struct frame_id l)
420 {
421   int p;
422
423   /* The frame is valid iff it has a valid stack address.  */
424   p = l.stack_addr_p;
425   /* outer_frame_id is also valid.  */
426   if (!p && memcmp (&l, &outer_frame_id, sizeof (l)) == 0)
427     p = 1;
428   if (frame_debug)
429     {
430       fprintf_unfiltered (gdb_stdlog, "{ frame_id_p (l=");
431       fprint_frame_id (gdb_stdlog, l);
432       fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", p);
433     }
434   return p;
435 }
436
437 int
438 frame_id_inlined_p (struct frame_id l)
439 {
440   if (!frame_id_p (l))
441     return 0;
442
443   return (l.inline_depth != 0);
444 }
445
446 int
447 frame_id_eq (struct frame_id l, struct frame_id r)
448 {
449   int eq;
450
451   if (!l.stack_addr_p && l.special_addr_p
452       && !r.stack_addr_p && r.special_addr_p)
453     /* The outermost frame marker is equal to itself.  This is the
454        dodgy thing about outer_frame_id, since between execution steps
455        we might step into another function - from which we can't
456        unwind either.  More thought required to get rid of
457        outer_frame_id.  */
458     eq = 1;
459   else if (!l.stack_addr_p || !r.stack_addr_p)
460     /* Like a NaN, if either ID is invalid, the result is false.
461        Note that a frame ID is invalid iff it is the null frame ID.  */
462     eq = 0;
463   else if (l.stack_addr != r.stack_addr)
464     /* If .stack addresses are different, the frames are different.  */
465     eq = 0;
466   else if (l.code_addr_p && r.code_addr_p && l.code_addr != r.code_addr)
467     /* An invalid code addr is a wild card.  If .code addresses are
468        different, the frames are different.  */
469     eq = 0;
470   else if (l.special_addr_p && r.special_addr_p
471            && l.special_addr != r.special_addr)
472     /* An invalid special addr is a wild card (or unused).  Otherwise
473        if special addresses are different, the frames are different.  */
474     eq = 0;
475   else if (l.inline_depth != r.inline_depth)
476     /* If inline depths are different, the frames must be different.  */
477     eq = 0;
478   else
479     /* Frames are equal.  */
480     eq = 1;
481
482   if (frame_debug)
483     {
484       fprintf_unfiltered (gdb_stdlog, "{ frame_id_eq (l=");
485       fprint_frame_id (gdb_stdlog, l);
486       fprintf_unfiltered (gdb_stdlog, ",r=");
487       fprint_frame_id (gdb_stdlog, r);
488       fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", eq);
489     }
490   return eq;
491 }
492
493 /* Safety net to check whether frame ID L should be inner to
494    frame ID R, according to their stack addresses.
495
496    This method cannot be used to compare arbitrary frames, as the
497    ranges of valid stack addresses may be discontiguous (e.g. due
498    to sigaltstack).
499
500    However, it can be used as safety net to discover invalid frame
501    IDs in certain circumstances.  Assuming that NEXT is the immediate
502    inner frame to THIS and that NEXT and THIS are both NORMAL frames:
503
504    * The stack address of NEXT must be inner-than-or-equal to the stack
505      address of THIS.
506
507      Therefore, if frame_id_inner (THIS, NEXT) holds, some unwind
508      error has occurred.
509
510    * If NEXT and THIS have different stack addresses, no other frame
511      in the frame chain may have a stack address in between.
512
513      Therefore, if frame_id_inner (TEST, THIS) holds, but
514      frame_id_inner (TEST, NEXT) does not hold, TEST cannot refer
515      to a valid frame in the frame chain.
516
517    The sanity checks above cannot be performed when a SIGTRAMP frame
518    is involved, because signal handlers might be executed on a different
519    stack than the stack used by the routine that caused the signal
520    to be raised.  This can happen for instance when a thread exceeds
521    its maximum stack size.  In this case, certain compilers implement
522    a stack overflow strategy that cause the handler to be run on a
523    different stack.  */
524
525 static int
526 frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r)
527 {
528   int inner;
529
530   if (!l.stack_addr_p || !r.stack_addr_p)
531     /* Like NaN, any operation involving an invalid ID always fails.  */
532     inner = 0;
533   else if (l.inline_depth > r.inline_depth
534            && l.stack_addr == r.stack_addr
535            && l.code_addr_p == r.code_addr_p
536            && l.special_addr_p == r.special_addr_p
537            && l.special_addr == r.special_addr)
538     {
539       /* Same function, different inlined functions.  */
540       struct block *lb, *rb;
541
542       gdb_assert (l.code_addr_p && r.code_addr_p);
543
544       lb = block_for_pc (l.code_addr);
545       rb = block_for_pc (r.code_addr);
546
547       if (lb == NULL || rb == NULL)
548         /* Something's gone wrong.  */
549         inner = 0;
550       else
551         /* This will return true if LB and RB are the same block, or
552            if the block with the smaller depth lexically encloses the
553            block with the greater depth.  */
554         inner = contained_in (lb, rb);
555     }
556   else
557     /* Only return non-zero when strictly inner than.  Note that, per
558        comment in "frame.h", there is some fuzz here.  Frameless
559        functions are not strictly inner than (same .stack but
560        different .code and/or .special address).  */
561     inner = gdbarch_inner_than (gdbarch, l.stack_addr, r.stack_addr);
562   if (frame_debug)
563     {
564       fprintf_unfiltered (gdb_stdlog, "{ frame_id_inner (l=");
565       fprint_frame_id (gdb_stdlog, l);
566       fprintf_unfiltered (gdb_stdlog, ",r=");
567       fprint_frame_id (gdb_stdlog, r);
568       fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", inner);
569     }
570   return inner;
571 }
572
573 struct frame_info *
574 frame_find_by_id (struct frame_id id)
575 {
576   struct frame_info *frame, *prev_frame;
577
578   /* ZERO denotes the null frame, let the caller decide what to do
579      about it.  Should it instead return get_current_frame()?  */
580   if (!frame_id_p (id))
581     return NULL;
582
583   /* Try using the frame stash first.  Finding it there removes the need
584      to perform the search by looping over all frames, which can be very
585      CPU-intensive if the number of frames is very high (the loop is O(n)
586      and get_prev_frame performs a series of checks that are relatively
587      expensive).  This optimization is particularly useful when this function
588      is called from another function (such as value_fetch_lazy, case
589      VALUE_LVAL (val) == lval_register) which already loops over all frames,
590      making the overall behavior O(n^2).  */
591   frame = frame_stash_find (id);
592   if (frame)
593     return frame;
594
595   for (frame = get_current_frame (); ; frame = prev_frame)
596     {
597       struct frame_id this = get_frame_id (frame);
598
599       if (frame_id_eq (id, this))
600         /* An exact match.  */
601         return frame;
602
603       prev_frame = get_prev_frame (frame);
604       if (!prev_frame)
605         return NULL;
606
607       /* As a safety net to avoid unnecessary backtracing while trying
608          to find an invalid ID, we check for a common situation where
609          we can detect from comparing stack addresses that no other
610          frame in the current frame chain can have this ID.  See the
611          comment at frame_id_inner for details.   */
612       if (get_frame_type (frame) == NORMAL_FRAME
613           && !frame_id_inner (get_frame_arch (frame), id, this)
614           && frame_id_inner (get_frame_arch (prev_frame), id,
615                              get_frame_id (prev_frame)))
616         return NULL;
617     }
618   return NULL;
619 }
620
621 static int
622 frame_unwind_pc_if_available (struct frame_info *this_frame, CORE_ADDR *pc)
623 {
624   if (!this_frame->prev_pc.p)
625     {
626       if (gdbarch_unwind_pc_p (frame_unwind_arch (this_frame)))
627         {
628           volatile struct gdb_exception ex;
629           struct gdbarch *prev_gdbarch;
630           CORE_ADDR pc = 0;
631
632           /* The right way.  The `pure' way.  The one true way.  This
633              method depends solely on the register-unwind code to
634              determine the value of registers in THIS frame, and hence
635              the value of this frame's PC (resume address).  A typical
636              implementation is no more than:
637            
638              frame_unwind_register (this_frame, ISA_PC_REGNUM, buf);
639              return extract_unsigned_integer (buf, size of ISA_PC_REGNUM);
640
641              Note: this method is very heavily dependent on a correct
642              register-unwind implementation, it pays to fix that
643              method first; this method is frame type agnostic, since
644              it only deals with register values, it works with any
645              frame.  This is all in stark contrast to the old
646              FRAME_SAVED_PC which would try to directly handle all the
647              different ways that a PC could be unwound.  */
648           prev_gdbarch = frame_unwind_arch (this_frame);
649
650           TRY_CATCH (ex, RETURN_MASK_ERROR)
651             {
652               pc = gdbarch_unwind_pc (prev_gdbarch, this_frame);
653             }
654           if (ex.reason < 0 && ex.error == NOT_AVAILABLE_ERROR)
655             {
656               this_frame->prev_pc.p = -1;
657
658               if (frame_debug)
659                 fprintf_unfiltered (gdb_stdlog,
660                                     "{ frame_unwind_pc (this_frame=%d)"
661                                     " -> <unavailable> }\n",
662                                     this_frame->level);
663             }
664           else if (ex.reason < 0)
665             {
666               throw_exception (ex);
667             }
668           else
669             {
670               this_frame->prev_pc.value = pc;
671               this_frame->prev_pc.p = 1;
672               if (frame_debug)
673                 fprintf_unfiltered (gdb_stdlog,
674                                     "{ frame_unwind_pc (this_frame=%d) "
675                                     "-> %s }\n",
676                                     this_frame->level,
677                                     hex_string (this_frame->prev_pc.value));
678             }
679         }
680       else
681         internal_error (__FILE__, __LINE__, _("No unwind_pc method"));
682     }
683   if (this_frame->prev_pc.p < 0)
684     {
685       *pc = -1;
686       return 0;
687     }
688   else
689     {
690       *pc = this_frame->prev_pc.value;
691       return 1;
692     }
693 }
694
695 static CORE_ADDR
696 frame_unwind_pc (struct frame_info *this_frame)
697 {
698   CORE_ADDR pc;
699
700   if (!frame_unwind_pc_if_available (this_frame, &pc))
701     throw_error (NOT_AVAILABLE_ERROR, _("PC not available"));
702   else
703     return pc;
704 }
705
706 CORE_ADDR
707 frame_unwind_caller_pc (struct frame_info *this_frame)
708 {
709   return frame_unwind_pc (skip_inlined_frames (this_frame));
710 }
711
712 int
713 frame_unwind_caller_pc_if_available (struct frame_info *this_frame,
714                                      CORE_ADDR *pc)
715 {
716   return frame_unwind_pc_if_available (skip_inlined_frames (this_frame), pc);
717 }
718
719 int
720 get_frame_func_if_available (struct frame_info *this_frame, CORE_ADDR *pc)
721 {
722   struct frame_info *next_frame = this_frame->next;
723
724   if (!next_frame->prev_func.p)
725     {
726       CORE_ADDR addr_in_block;
727
728       /* Make certain that this, and not the adjacent, function is
729          found.  */
730       if (!get_frame_address_in_block_if_available (this_frame, &addr_in_block))
731         {
732           next_frame->prev_func.p = -1;
733           if (frame_debug)
734             fprintf_unfiltered (gdb_stdlog,
735                                 "{ get_frame_func (this_frame=%d)"
736                                 " -> unavailable }\n",
737                                 this_frame->level);
738         }
739       else
740         {
741           next_frame->prev_func.p = 1;
742           next_frame->prev_func.addr = get_pc_function_start (addr_in_block);
743           if (frame_debug)
744             fprintf_unfiltered (gdb_stdlog,
745                                 "{ get_frame_func (this_frame=%d) -> %s }\n",
746                                 this_frame->level,
747                                 hex_string (next_frame->prev_func.addr));
748         }
749     }
750
751   if (next_frame->prev_func.p < 0)
752     {
753       *pc = -1;
754       return 0;
755     }
756   else
757     {
758       *pc = next_frame->prev_func.addr;
759       return 1;
760     }
761 }
762
763 CORE_ADDR
764 get_frame_func (struct frame_info *this_frame)
765 {
766   CORE_ADDR pc;
767
768   if (!get_frame_func_if_available (this_frame, &pc))
769     throw_error (NOT_AVAILABLE_ERROR, _("PC not available"));
770
771   return pc;
772 }
773
774 static enum register_status
775 do_frame_register_read (void *src, int regnum, gdb_byte *buf)
776 {
777   if (!frame_register_read (src, regnum, buf))
778     return REG_UNAVAILABLE;
779   else
780     return REG_VALID;
781 }
782
783 struct regcache *
784 frame_save_as_regcache (struct frame_info *this_frame)
785 {
786   struct address_space *aspace = get_frame_address_space (this_frame);
787   struct regcache *regcache = regcache_xmalloc (get_frame_arch (this_frame),
788                                                 aspace);
789   struct cleanup *cleanups = make_cleanup_regcache_xfree (regcache);
790
791   regcache_save (regcache, do_frame_register_read, this_frame);
792   discard_cleanups (cleanups);
793   return regcache;
794 }
795
796 void
797 frame_pop (struct frame_info *this_frame)
798 {
799   struct frame_info *prev_frame;
800   struct regcache *scratch;
801   struct cleanup *cleanups;
802
803   if (get_frame_type (this_frame) == DUMMY_FRAME)
804     {
805       /* Popping a dummy frame involves restoring more than just registers.
806          dummy_frame_pop does all the work.  */
807       dummy_frame_pop (get_frame_id (this_frame));
808       return;
809     }
810
811   /* Ensure that we have a frame to pop to.  */
812   prev_frame = get_prev_frame_1 (this_frame);
813
814   if (!prev_frame)
815     error (_("Cannot pop the initial frame."));
816
817   /* Make a copy of all the register values unwound from this frame.
818      Save them in a scratch buffer so that there isn't a race between
819      trying to extract the old values from the current regcache while
820      at the same time writing new values into that same cache.  */
821   scratch = frame_save_as_regcache (prev_frame);
822   cleanups = make_cleanup_regcache_xfree (scratch);
823
824   /* FIXME: cagney/2003-03-16: It should be possible to tell the
825      target's register cache that it is about to be hit with a burst
826      register transfer and that the sequence of register writes should
827      be batched.  The pair target_prepare_to_store() and
828      target_store_registers() kind of suggest this functionality.
829      Unfortunately, they don't implement it.  Their lack of a formal
830      definition can lead to targets writing back bogus values
831      (arguably a bug in the target code mind).  */
832   /* Now copy those saved registers into the current regcache.
833      Here, regcache_cpy() calls regcache_restore().  */
834   regcache_cpy (get_current_regcache (), scratch);
835   do_cleanups (cleanups);
836
837   /* We've made right mess of GDB's local state, just discard
838      everything.  */
839   reinit_frame_cache ();
840 }
841
842 void
843 frame_register_unwind (struct frame_info *frame, int regnum,
844                        int *optimizedp, int *unavailablep,
845                        enum lval_type *lvalp, CORE_ADDR *addrp,
846                        int *realnump, gdb_byte *bufferp)
847 {
848   struct value *value;
849
850   /* Require all but BUFFERP to be valid.  A NULL BUFFERP indicates
851      that the value proper does not need to be fetched.  */
852   gdb_assert (optimizedp != NULL);
853   gdb_assert (lvalp != NULL);
854   gdb_assert (addrp != NULL);
855   gdb_assert (realnump != NULL);
856   /* gdb_assert (bufferp != NULL); */
857
858   value = frame_unwind_register_value (frame, regnum);
859
860   gdb_assert (value != NULL);
861
862   *optimizedp = value_optimized_out (value);
863   *unavailablep = !value_entirely_available (value);
864   *lvalp = VALUE_LVAL (value);
865   *addrp = value_address (value);
866   *realnump = VALUE_REGNUM (value);
867
868   if (bufferp)
869     {
870       if (!*optimizedp && !*unavailablep)
871         memcpy (bufferp, value_contents_all (value),
872                 TYPE_LENGTH (value_type (value)));
873       else
874         memset (bufferp, 0, TYPE_LENGTH (value_type (value)));
875     }
876
877   /* Dispose of the new value.  This prevents watchpoints from
878      trying to watch the saved frame pointer.  */
879   release_value (value);
880   value_free (value);
881 }
882
883 void
884 frame_register (struct frame_info *frame, int regnum,
885                 int *optimizedp, int *unavailablep, enum lval_type *lvalp,
886                 CORE_ADDR *addrp, int *realnump, gdb_byte *bufferp)
887 {
888   /* Require all but BUFFERP to be valid.  A NULL BUFFERP indicates
889      that the value proper does not need to be fetched.  */
890   gdb_assert (optimizedp != NULL);
891   gdb_assert (lvalp != NULL);
892   gdb_assert (addrp != NULL);
893   gdb_assert (realnump != NULL);
894   /* gdb_assert (bufferp != NULL); */
895
896   /* Obtain the register value by unwinding the register from the next
897      (more inner frame).  */
898   gdb_assert (frame != NULL && frame->next != NULL);
899   frame_register_unwind (frame->next, regnum, optimizedp, unavailablep,
900                          lvalp, addrp, realnump, bufferp);
901 }
902
903 void
904 frame_unwind_register (struct frame_info *frame, int regnum, gdb_byte *buf)
905 {
906   int optimized;
907   int unavailable;
908   CORE_ADDR addr;
909   int realnum;
910   enum lval_type lval;
911
912   frame_register_unwind (frame, regnum, &optimized, &unavailable,
913                          &lval, &addr, &realnum, buf);
914
915   if (optimized)
916     error (_("Register %d was optimized out"), regnum);
917   if (unavailable)
918     throw_error (NOT_AVAILABLE_ERROR,
919                  _("Register %d is not available"), regnum);
920 }
921
922 void
923 get_frame_register (struct frame_info *frame,
924                     int regnum, gdb_byte *buf)
925 {
926   frame_unwind_register (frame->next, regnum, buf);
927 }
928
929 struct value *
930 frame_unwind_register_value (struct frame_info *frame, int regnum)
931 {
932   struct gdbarch *gdbarch;
933   struct value *value;
934
935   gdb_assert (frame != NULL);
936   gdbarch = frame_unwind_arch (frame);
937
938   if (frame_debug)
939     {
940       fprintf_unfiltered (gdb_stdlog,
941                           "{ frame_unwind_register_value "
942                           "(frame=%d,regnum=%d(%s),...) ",
943                           frame->level, regnum,
944                           user_reg_map_regnum_to_name (gdbarch, regnum));
945     }
946
947   /* Find the unwinder.  */
948   if (frame->unwind == NULL)
949     frame_unwind_find_by_frame (frame, &frame->prologue_cache);
950
951   /* Ask this frame to unwind its register.  */
952   value = frame->unwind->prev_register (frame, &frame->prologue_cache, regnum);
953
954   if (frame_debug)
955     {
956       fprintf_unfiltered (gdb_stdlog, "->");
957       if (value_optimized_out (value))
958         fprintf_unfiltered (gdb_stdlog, " optimized out");
959       else
960         {
961           if (VALUE_LVAL (value) == lval_register)
962             fprintf_unfiltered (gdb_stdlog, " register=%d",
963                                 VALUE_REGNUM (value));
964           else if (VALUE_LVAL (value) == lval_memory)
965             fprintf_unfiltered (gdb_stdlog, " address=%s",
966                                 paddress (gdbarch,
967                                           value_address (value)));
968           else
969             fprintf_unfiltered (gdb_stdlog, " computed");
970
971           if (value_lazy (value))
972             fprintf_unfiltered (gdb_stdlog, " lazy");
973           else
974             {
975               int i;
976               const gdb_byte *buf = value_contents (value);
977
978               fprintf_unfiltered (gdb_stdlog, " bytes=");
979               fprintf_unfiltered (gdb_stdlog, "[");
980               for (i = 0; i < register_size (gdbarch, regnum); i++)
981                 fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
982               fprintf_unfiltered (gdb_stdlog, "]");
983             }
984         }
985
986       fprintf_unfiltered (gdb_stdlog, " }\n");
987     }
988
989   return value;
990 }
991
992 struct value *
993 get_frame_register_value (struct frame_info *frame, int regnum)
994 {
995   return frame_unwind_register_value (frame->next, regnum);
996 }
997
998 LONGEST
999 frame_unwind_register_signed (struct frame_info *frame, int regnum)
1000 {
1001   struct gdbarch *gdbarch = frame_unwind_arch (frame);
1002   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1003   int size = register_size (gdbarch, regnum);
1004   gdb_byte buf[MAX_REGISTER_SIZE];
1005
1006   frame_unwind_register (frame, regnum, buf);
1007   return extract_signed_integer (buf, size, byte_order);
1008 }
1009
1010 LONGEST
1011 get_frame_register_signed (struct frame_info *frame, int regnum)
1012 {
1013   return frame_unwind_register_signed (frame->next, regnum);
1014 }
1015
1016 ULONGEST
1017 frame_unwind_register_unsigned (struct frame_info *frame, int regnum)
1018 {
1019   struct gdbarch *gdbarch = frame_unwind_arch (frame);
1020   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1021   int size = register_size (gdbarch, regnum);
1022   gdb_byte buf[MAX_REGISTER_SIZE];
1023
1024   frame_unwind_register (frame, regnum, buf);
1025   return extract_unsigned_integer (buf, size, byte_order);
1026 }
1027
1028 ULONGEST
1029 get_frame_register_unsigned (struct frame_info *frame, int regnum)
1030 {
1031   return frame_unwind_register_unsigned (frame->next, regnum);
1032 }
1033
1034 int
1035 read_frame_register_unsigned (struct frame_info *frame, int regnum,
1036                               ULONGEST *val)
1037 {
1038   struct value *regval = get_frame_register_value (frame, regnum);
1039
1040   if (!value_optimized_out (regval)
1041       && value_entirely_available (regval))
1042     {
1043       struct gdbarch *gdbarch = get_frame_arch (frame);
1044       enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1045       int size = register_size (gdbarch, VALUE_REGNUM (regval));
1046
1047       *val = extract_unsigned_integer (value_contents (regval), size, byte_order);
1048       return 1;
1049     }
1050
1051   return 0;
1052 }
1053
1054 void
1055 put_frame_register (struct frame_info *frame, int regnum,
1056                     const gdb_byte *buf)
1057 {
1058   struct gdbarch *gdbarch = get_frame_arch (frame);
1059   int realnum;
1060   int optim;
1061   int unavail;
1062   enum lval_type lval;
1063   CORE_ADDR addr;
1064
1065   frame_register (frame, regnum, &optim, &unavail,
1066                   &lval, &addr, &realnum, NULL);
1067   if (optim)
1068     error (_("Attempt to assign to a value that was optimized out."));
1069   switch (lval)
1070     {
1071     case lval_memory:
1072       {
1073         /* FIXME: write_memory doesn't yet take constant buffers.
1074            Arrrg!  */
1075         gdb_byte tmp[MAX_REGISTER_SIZE];
1076
1077         memcpy (tmp, buf, register_size (gdbarch, regnum));
1078         write_memory (addr, tmp, register_size (gdbarch, regnum));
1079         break;
1080       }
1081     case lval_register:
1082       regcache_cooked_write (get_current_regcache (), realnum, buf);
1083       break;
1084     default:
1085       error (_("Attempt to assign to an unmodifiable value."));
1086     }
1087 }
1088
1089 /* frame_register_read ()
1090
1091    Find and return the value of REGNUM for the specified stack frame.
1092    The number of bytes copied is REGISTER_SIZE (REGNUM).
1093
1094    Returns 0 if the register value could not be found.  */
1095
1096 int
1097 frame_register_read (struct frame_info *frame, int regnum,
1098                      gdb_byte *myaddr)
1099 {
1100   int optimized;
1101   int unavailable;
1102   enum lval_type lval;
1103   CORE_ADDR addr;
1104   int realnum;
1105
1106   frame_register (frame, regnum, &optimized, &unavailable,
1107                   &lval, &addr, &realnum, myaddr);
1108
1109   return !optimized && !unavailable;
1110 }
1111
1112 int
1113 get_frame_register_bytes (struct frame_info *frame, int regnum,
1114                           CORE_ADDR offset, int len, gdb_byte *myaddr,
1115                           int *optimizedp, int *unavailablep)
1116 {
1117   struct gdbarch *gdbarch = get_frame_arch (frame);
1118   int i;
1119   int maxsize;
1120   int numregs;
1121
1122   /* Skip registers wholly inside of OFFSET.  */
1123   while (offset >= register_size (gdbarch, regnum))
1124     {
1125       offset -= register_size (gdbarch, regnum);
1126       regnum++;
1127     }
1128
1129   /* Ensure that we will not read beyond the end of the register file.
1130      This can only ever happen if the debug information is bad.  */
1131   maxsize = -offset;
1132   numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
1133   for (i = regnum; i < numregs; i++)
1134     {
1135       int thissize = register_size (gdbarch, i);
1136
1137       if (thissize == 0)
1138         break;  /* This register is not available on this architecture.  */
1139       maxsize += thissize;
1140     }
1141   if (len > maxsize)
1142     error (_("Bad debug information detected: "
1143              "Attempt to read %d bytes from registers."), len);
1144
1145   /* Copy the data.  */
1146   while (len > 0)
1147     {
1148       int curr_len = register_size (gdbarch, regnum) - offset;
1149
1150       if (curr_len > len)
1151         curr_len = len;
1152
1153       if (curr_len == register_size (gdbarch, regnum))
1154         {
1155           enum lval_type lval;
1156           CORE_ADDR addr;
1157           int realnum;
1158
1159           frame_register (frame, regnum, optimizedp, unavailablep,
1160                           &lval, &addr, &realnum, myaddr);
1161           if (*optimizedp || *unavailablep)
1162             return 0;
1163         }
1164       else
1165         {
1166           gdb_byte buf[MAX_REGISTER_SIZE];
1167           enum lval_type lval;
1168           CORE_ADDR addr;
1169           int realnum;
1170
1171           frame_register (frame, regnum, optimizedp, unavailablep,
1172                           &lval, &addr, &realnum, buf);
1173           if (*optimizedp || *unavailablep)
1174             return 0;
1175           memcpy (myaddr, buf + offset, curr_len);
1176         }
1177
1178       myaddr += curr_len;
1179       len -= curr_len;
1180       offset = 0;
1181       regnum++;
1182     }
1183
1184   *optimizedp = 0;
1185   *unavailablep = 0;
1186   return 1;
1187 }
1188
1189 void
1190 put_frame_register_bytes (struct frame_info *frame, int regnum,
1191                           CORE_ADDR offset, int len, const gdb_byte *myaddr)
1192 {
1193   struct gdbarch *gdbarch = get_frame_arch (frame);
1194
1195   /* Skip registers wholly inside of OFFSET.  */
1196   while (offset >= register_size (gdbarch, regnum))
1197     {
1198       offset -= register_size (gdbarch, regnum);
1199       regnum++;
1200     }
1201
1202   /* Copy the data.  */
1203   while (len > 0)
1204     {
1205       int curr_len = register_size (gdbarch, regnum) - offset;
1206
1207       if (curr_len > len)
1208         curr_len = len;
1209
1210       if (curr_len == register_size (gdbarch, regnum))
1211         {
1212           put_frame_register (frame, regnum, myaddr);
1213         }
1214       else
1215         {
1216           gdb_byte buf[MAX_REGISTER_SIZE];
1217
1218           frame_register_read (frame, regnum, buf);
1219           memcpy (buf + offset, myaddr, curr_len);
1220           put_frame_register (frame, regnum, buf);
1221         }
1222
1223       myaddr += curr_len;
1224       len -= curr_len;
1225       offset = 0;
1226       regnum++;
1227     }
1228 }
1229
1230 /* Create a sentinel frame.  */
1231
1232 static struct frame_info *
1233 create_sentinel_frame (struct program_space *pspace, struct regcache *regcache)
1234 {
1235   struct frame_info *frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
1236
1237   frame->level = -1;
1238   frame->pspace = pspace;
1239   frame->aspace = get_regcache_aspace (regcache);
1240   /* Explicitly initialize the sentinel frame's cache.  Provide it
1241      with the underlying regcache.  In the future additional
1242      information, such as the frame's thread will be added.  */
1243   frame->prologue_cache = sentinel_frame_cache (regcache);
1244   /* For the moment there is only one sentinel frame implementation.  */
1245   frame->unwind = &sentinel_frame_unwind;
1246   /* Link this frame back to itself.  The frame is self referential
1247      (the unwound PC is the same as the pc), so make it so.  */
1248   frame->next = frame;
1249   /* Make the sentinel frame's ID valid, but invalid.  That way all
1250      comparisons with it should fail.  */
1251   frame->this_id.p = 1;
1252   frame->this_id.value = null_frame_id;
1253   if (frame_debug)
1254     {
1255       fprintf_unfiltered (gdb_stdlog, "{ create_sentinel_frame (...) -> ");
1256       fprint_frame (gdb_stdlog, frame);
1257       fprintf_unfiltered (gdb_stdlog, " }\n");
1258     }
1259   return frame;
1260 }
1261
1262 /* Info about the innermost stack frame (contents of FP register).  */
1263
1264 static struct frame_info *current_frame;
1265
1266 /* Cache for frame addresses already read by gdb.  Valid only while
1267    inferior is stopped.  Control variables for the frame cache should
1268    be local to this module.  */
1269
1270 static struct obstack frame_cache_obstack;
1271
1272 void *
1273 frame_obstack_zalloc (unsigned long size)
1274 {
1275   void *data = obstack_alloc (&frame_cache_obstack, size);
1276
1277   memset (data, 0, size);
1278   return data;
1279 }
1280
1281 /* Return the innermost (currently executing) stack frame.  This is
1282    split into two functions.  The function unwind_to_current_frame()
1283    is wrapped in catch exceptions so that, even when the unwind of the
1284    sentinel frame fails, the function still returns a stack frame.  */
1285
1286 static int
1287 unwind_to_current_frame (struct ui_out *ui_out, void *args)
1288 {
1289   struct frame_info *frame = get_prev_frame (args);
1290
1291   /* A sentinel frame can fail to unwind, e.g., because its PC value
1292      lands in somewhere like start.  */
1293   if (frame == NULL)
1294     return 1;
1295   current_frame = frame;
1296   return 0;
1297 }
1298
1299 struct frame_info *
1300 get_current_frame (void)
1301 {
1302   /* First check, and report, the lack of registers.  Having GDB
1303      report "No stack!" or "No memory" when the target doesn't even
1304      have registers is very confusing.  Besides, "printcmd.exp"
1305      explicitly checks that ``print $pc'' with no registers prints "No
1306      registers".  */
1307   if (!target_has_registers)
1308     error (_("No registers."));
1309   if (!target_has_stack)
1310     error (_("No stack."));
1311   if (!target_has_memory)
1312     error (_("No memory."));
1313   /* Traceframes are effectively a substitute for the live inferior.  */
1314   if (get_traceframe_number () < 0)
1315     {
1316       if (ptid_equal (inferior_ptid, null_ptid))
1317         error (_("No selected thread."));
1318       if (is_exited (inferior_ptid))
1319         error (_("Invalid selected thread."));
1320       if (is_executing (inferior_ptid))
1321         error (_("Target is executing."));
1322     }
1323
1324   if (current_frame == NULL)
1325     {
1326       struct frame_info *sentinel_frame =
1327         create_sentinel_frame (current_program_space, get_current_regcache ());
1328       if (catch_exceptions (current_uiout, unwind_to_current_frame,
1329                             sentinel_frame, RETURN_MASK_ERROR) != 0)
1330         {
1331           /* Oops! Fake a current frame?  Is this useful?  It has a PC
1332              of zero, for instance.  */
1333           current_frame = sentinel_frame;
1334         }
1335     }
1336   return current_frame;
1337 }
1338
1339 /* The "selected" stack frame is used by default for local and arg
1340    access.  May be zero, for no selected frame.  */
1341
1342 static struct frame_info *selected_frame;
1343
1344 int
1345 has_stack_frames (void)
1346 {
1347   if (!target_has_registers || !target_has_stack || !target_has_memory)
1348     return 0;
1349
1350   /* Traceframes are effectively a substitute for the live inferior.  */
1351   if (get_traceframe_number () < 0)
1352     {
1353       /* No current inferior, no frame.  */
1354       if (ptid_equal (inferior_ptid, null_ptid))
1355         return 0;
1356
1357       /* Don't try to read from a dead thread.  */
1358       if (is_exited (inferior_ptid))
1359         return 0;
1360
1361       /* ... or from a spinning thread.  */
1362       if (is_executing (inferior_ptid))
1363         return 0;
1364     }
1365
1366   return 1;
1367 }
1368
1369 /* Return the selected frame.  Always non-NULL (unless there isn't an
1370    inferior sufficient for creating a frame) in which case an error is
1371    thrown.  */
1372
1373 struct frame_info *
1374 get_selected_frame (const char *message)
1375 {
1376   if (selected_frame == NULL)
1377     {
1378       if (message != NULL && !has_stack_frames ())
1379         error (("%s"), message);
1380       /* Hey!  Don't trust this.  It should really be re-finding the
1381          last selected frame of the currently selected thread.  This,
1382          though, is better than nothing.  */
1383       select_frame (get_current_frame ());
1384     }
1385   /* There is always a frame.  */
1386   gdb_assert (selected_frame != NULL);
1387   return selected_frame;
1388 }
1389
1390 /* If there is a selected frame, return it.  Otherwise, return NULL.  */
1391
1392 struct frame_info *
1393 get_selected_frame_if_set (void)
1394 {
1395   return selected_frame;
1396 }
1397
1398 /* This is a variant of get_selected_frame() which can be called when
1399    the inferior does not have a frame; in that case it will return
1400    NULL instead of calling error().  */
1401
1402 struct frame_info *
1403 deprecated_safe_get_selected_frame (void)
1404 {
1405   if (!has_stack_frames ())
1406     return NULL;
1407   return get_selected_frame (NULL);
1408 }
1409
1410 /* Select frame FI (or NULL - to invalidate the current frame).  */
1411
1412 void
1413 select_frame (struct frame_info *fi)
1414 {
1415   selected_frame = fi;
1416   /* NOTE: cagney/2002-05-04: FI can be NULL.  This occurs when the
1417      frame is being invalidated.  */
1418   if (deprecated_selected_frame_level_changed_hook)
1419     deprecated_selected_frame_level_changed_hook (frame_relative_level (fi));
1420
1421   /* FIXME: kseitz/2002-08-28: It would be nice to call
1422      selected_frame_level_changed_event() right here, but due to limitations
1423      in the current interfaces, we would end up flooding UIs with events
1424      because select_frame() is used extensively internally.
1425
1426      Once we have frame-parameterized frame (and frame-related) commands,
1427      the event notification can be moved here, since this function will only
1428      be called when the user's selected frame is being changed.  */
1429
1430   /* Ensure that symbols for this frame are read in.  Also, determine the
1431      source language of this frame, and switch to it if desired.  */
1432   if (fi)
1433     {
1434       CORE_ADDR pc;
1435
1436       /* We retrieve the frame's symtab by using the frame PC.
1437          However we cannot use the frame PC as-is, because it usually
1438          points to the instruction following the "call", which is
1439          sometimes the first instruction of another function.  So we
1440          rely on get_frame_address_in_block() which provides us with a
1441          PC which is guaranteed to be inside the frame's code
1442          block.  */
1443       if (get_frame_address_in_block_if_available (fi, &pc))
1444         {
1445           struct symtab *s = find_pc_symtab (pc);
1446
1447           if (s
1448               && s->language != current_language->la_language
1449               && s->language != language_unknown
1450               && language_mode == language_mode_auto)
1451             set_language (s->language);
1452         }
1453     }
1454 }
1455
1456 /* Create an arbitrary (i.e. address specified by user) or innermost frame.
1457    Always returns a non-NULL value.  */
1458
1459 struct frame_info *
1460 create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
1461 {
1462   struct frame_info *fi;
1463
1464   if (frame_debug)
1465     {
1466       fprintf_unfiltered (gdb_stdlog,
1467                           "{ create_new_frame (addr=%s, pc=%s) ",
1468                           hex_string (addr), hex_string (pc));
1469     }
1470
1471   fi = FRAME_OBSTACK_ZALLOC (struct frame_info);
1472
1473   fi->next = create_sentinel_frame (current_program_space,
1474                                     get_current_regcache ());
1475
1476   /* Set/update this frame's cached PC value, found in the next frame.
1477      Do this before looking for this frame's unwinder.  A sniffer is
1478      very likely to read this, and the corresponding unwinder is
1479      entitled to rely that the PC doesn't magically change.  */
1480   fi->next->prev_pc.value = pc;
1481   fi->next->prev_pc.p = 1;
1482
1483   /* We currently assume that frame chain's can't cross spaces.  */
1484   fi->pspace = fi->next->pspace;
1485   fi->aspace = fi->next->aspace;
1486
1487   /* Select/initialize both the unwind function and the frame's type
1488      based on the PC.  */
1489   frame_unwind_find_by_frame (fi, &fi->prologue_cache);
1490
1491   fi->this_id.p = 1;
1492   fi->this_id.value = frame_id_build (addr, pc);
1493
1494   if (frame_debug)
1495     {
1496       fprintf_unfiltered (gdb_stdlog, "-> ");
1497       fprint_frame (gdb_stdlog, fi);
1498       fprintf_unfiltered (gdb_stdlog, " }\n");
1499     }
1500
1501   return fi;
1502 }
1503
1504 /* Return the frame that THIS_FRAME calls (NULL if THIS_FRAME is the
1505    innermost frame).  Be careful to not fall off the bottom of the
1506    frame chain and onto the sentinel frame.  */
1507
1508 struct frame_info *
1509 get_next_frame (struct frame_info *this_frame)
1510 {
1511   if (this_frame->level > 0)
1512     return this_frame->next;
1513   else
1514     return NULL;
1515 }
1516
1517 /* Observer for the target_changed event.  */
1518
1519 static void
1520 frame_observer_target_changed (struct target_ops *target)
1521 {
1522   reinit_frame_cache ();
1523 }
1524
1525 /* Flush the entire frame cache.  */
1526
1527 void
1528 reinit_frame_cache (void)
1529 {
1530   struct frame_info *fi;
1531
1532   /* Tear down all frame caches.  */
1533   for (fi = current_frame; fi != NULL; fi = fi->prev)
1534     {
1535       if (fi->prologue_cache && fi->unwind->dealloc_cache)
1536         fi->unwind->dealloc_cache (fi, fi->prologue_cache);
1537       if (fi->base_cache && fi->base->unwind->dealloc_cache)
1538         fi->base->unwind->dealloc_cache (fi, fi->base_cache);
1539     }
1540
1541   /* Since we can't really be sure what the first object allocated was.  */
1542   obstack_free (&frame_cache_obstack, 0);
1543   obstack_init (&frame_cache_obstack);
1544
1545   if (current_frame != NULL)
1546     annotate_frames_invalid ();
1547
1548   current_frame = NULL;         /* Invalidate cache */
1549   select_frame (NULL);
1550   frame_stash_invalidate ();
1551   if (frame_debug)
1552     fprintf_unfiltered (gdb_stdlog, "{ reinit_frame_cache () }\n");
1553 }
1554
1555 /* Find where a register is saved (in memory or another register).
1556    The result of frame_register_unwind is just where it is saved
1557    relative to this particular frame.  */
1558
1559 static void
1560 frame_register_unwind_location (struct frame_info *this_frame, int regnum,
1561                                 int *optimizedp, enum lval_type *lvalp,
1562                                 CORE_ADDR *addrp, int *realnump)
1563 {
1564   gdb_assert (this_frame == NULL || this_frame->level >= 0);
1565
1566   while (this_frame != NULL)
1567     {
1568       int unavailable;
1569
1570       frame_register_unwind (this_frame, regnum, optimizedp, &unavailable,
1571                              lvalp, addrp, realnump, NULL);
1572
1573       if (*optimizedp)
1574         break;
1575
1576       if (*lvalp != lval_register)
1577         break;
1578
1579       regnum = *realnump;
1580       this_frame = get_next_frame (this_frame);
1581     }
1582 }
1583
1584 /* Return a "struct frame_info" corresponding to the frame that called
1585    THIS_FRAME.  Returns NULL if there is no such frame.
1586
1587    Unlike get_prev_frame, this function always tries to unwind the
1588    frame.  */
1589
1590 static struct frame_info *
1591 get_prev_frame_1 (struct frame_info *this_frame)
1592 {
1593   struct frame_id this_id;
1594   struct gdbarch *gdbarch;
1595
1596   gdb_assert (this_frame != NULL);
1597   gdbarch = get_frame_arch (this_frame);
1598
1599   if (frame_debug)
1600     {
1601       fprintf_unfiltered (gdb_stdlog, "{ get_prev_frame_1 (this_frame=");
1602       if (this_frame != NULL)
1603         fprintf_unfiltered (gdb_stdlog, "%d", this_frame->level);
1604       else
1605         fprintf_unfiltered (gdb_stdlog, "<NULL>");
1606       fprintf_unfiltered (gdb_stdlog, ") ");
1607     }
1608
1609   /* Only try to do the unwind once.  */
1610   if (this_frame->prev_p)
1611     {
1612       if (frame_debug)
1613         {
1614           fprintf_unfiltered (gdb_stdlog, "-> ");
1615           fprint_frame (gdb_stdlog, this_frame->prev);
1616           fprintf_unfiltered (gdb_stdlog, " // cached \n");
1617         }
1618       return this_frame->prev;
1619     }
1620
1621   /* If the frame unwinder hasn't been selected yet, we must do so
1622      before setting prev_p; otherwise the check for misbehaved
1623      sniffers will think that this frame's sniffer tried to unwind
1624      further (see frame_cleanup_after_sniffer).  */
1625   if (this_frame->unwind == NULL)
1626     frame_unwind_find_by_frame (this_frame, &this_frame->prologue_cache);
1627
1628   this_frame->prev_p = 1;
1629   this_frame->stop_reason = UNWIND_NO_REASON;
1630
1631   /* If we are unwinding from an inline frame, all of the below tests
1632      were already performed when we unwound from the next non-inline
1633      frame.  We must skip them, since we can not get THIS_FRAME's ID
1634      until we have unwound all the way down to the previous non-inline
1635      frame.  */
1636   if (get_frame_type (this_frame) == INLINE_FRAME)
1637     return get_prev_frame_raw (this_frame);
1638
1639   /* Check that this frame is unwindable.  If it isn't, don't try to
1640      unwind to the prev frame.  */
1641   this_frame->stop_reason
1642     = this_frame->unwind->stop_reason (this_frame,
1643                                        &this_frame->prologue_cache);
1644
1645   if (this_frame->stop_reason != UNWIND_NO_REASON)
1646     return NULL;
1647
1648   /* Check that this frame's ID was valid.  If it wasn't, don't try to
1649      unwind to the prev frame.  Be careful to not apply this test to
1650      the sentinel frame.  */
1651   this_id = get_frame_id (this_frame);
1652   if (this_frame->level >= 0 && frame_id_eq (this_id, outer_frame_id))
1653     {
1654       if (frame_debug)
1655         {
1656           fprintf_unfiltered (gdb_stdlog, "-> ");
1657           fprint_frame (gdb_stdlog, NULL);
1658           fprintf_unfiltered (gdb_stdlog, " // this ID is NULL }\n");
1659         }
1660       this_frame->stop_reason = UNWIND_NULL_ID;
1661       return NULL;
1662     }
1663
1664   /* Check that this frame's ID isn't inner to (younger, below, next)
1665      the next frame.  This happens when a frame unwind goes backwards.
1666      This check is valid only if this frame and the next frame are NORMAL.
1667      See the comment at frame_id_inner for details.  */
1668   if (get_frame_type (this_frame) == NORMAL_FRAME
1669       && this_frame->next->unwind->type == NORMAL_FRAME
1670       && frame_id_inner (get_frame_arch (this_frame->next), this_id,
1671                          get_frame_id (this_frame->next)))
1672     {
1673       CORE_ADDR this_pc_in_block;
1674       struct minimal_symbol *morestack_msym;
1675       const char *morestack_name = NULL;
1676       
1677       /* gcc -fsplit-stack __morestack can continue the stack anywhere.  */
1678       this_pc_in_block = get_frame_address_in_block (this_frame);
1679       morestack_msym = lookup_minimal_symbol_by_pc (this_pc_in_block);
1680       if (morestack_msym)
1681         morestack_name = SYMBOL_LINKAGE_NAME (morestack_msym);
1682       if (!morestack_name || strcmp (morestack_name, "__morestack") != 0)
1683         {
1684           if (frame_debug)
1685             {
1686               fprintf_unfiltered (gdb_stdlog, "-> ");
1687               fprint_frame (gdb_stdlog, NULL);
1688               fprintf_unfiltered (gdb_stdlog,
1689                                   " // this frame ID is inner }\n");
1690             }
1691           this_frame->stop_reason = UNWIND_INNER_ID;
1692           return NULL;
1693         }
1694     }
1695
1696   /* Check that this and the next frame are not identical.  If they
1697      are, there is most likely a stack cycle.  As with the inner-than
1698      test above, avoid comparing the inner-most and sentinel frames.  */
1699   if (this_frame->level > 0
1700       && frame_id_eq (this_id, get_frame_id (this_frame->next)))
1701     {
1702       if (frame_debug)
1703         {
1704           fprintf_unfiltered (gdb_stdlog, "-> ");
1705           fprint_frame (gdb_stdlog, NULL);
1706           fprintf_unfiltered (gdb_stdlog, " // this frame has same ID }\n");
1707         }
1708       this_frame->stop_reason = UNWIND_SAME_ID;
1709       return NULL;
1710     }
1711
1712   /* Check that this and the next frame do not unwind the PC register
1713      to the same memory location.  If they do, then even though they
1714      have different frame IDs, the new frame will be bogus; two
1715      functions can't share a register save slot for the PC.  This can
1716      happen when the prologue analyzer finds a stack adjustment, but
1717      no PC save.
1718
1719      This check does assume that the "PC register" is roughly a
1720      traditional PC, even if the gdbarch_unwind_pc method adjusts
1721      it (we do not rely on the value, only on the unwound PC being
1722      dependent on this value).  A potential improvement would be
1723      to have the frame prev_pc method and the gdbarch unwind_pc
1724      method set the same lval and location information as
1725      frame_register_unwind.  */
1726   if (this_frame->level > 0
1727       && gdbarch_pc_regnum (gdbarch) >= 0
1728       && get_frame_type (this_frame) == NORMAL_FRAME
1729       && (get_frame_type (this_frame->next) == NORMAL_FRAME
1730           || get_frame_type (this_frame->next) == INLINE_FRAME))
1731     {
1732       int optimized, realnum, nrealnum;
1733       enum lval_type lval, nlval;
1734       CORE_ADDR addr, naddr;
1735
1736       frame_register_unwind_location (this_frame,
1737                                       gdbarch_pc_regnum (gdbarch),
1738                                       &optimized, &lval, &addr, &realnum);
1739       frame_register_unwind_location (get_next_frame (this_frame),
1740                                       gdbarch_pc_regnum (gdbarch),
1741                                       &optimized, &nlval, &naddr, &nrealnum);
1742
1743       if ((lval == lval_memory && lval == nlval && addr == naddr)
1744           || (lval == lval_register && lval == nlval && realnum == nrealnum))
1745         {
1746           if (frame_debug)
1747             {
1748               fprintf_unfiltered (gdb_stdlog, "-> ");
1749               fprint_frame (gdb_stdlog, NULL);
1750               fprintf_unfiltered (gdb_stdlog, " // no saved PC }\n");
1751             }
1752
1753           this_frame->stop_reason = UNWIND_NO_SAVED_PC;
1754           this_frame->prev = NULL;
1755           return NULL;
1756         }
1757     }
1758
1759   return get_prev_frame_raw (this_frame);
1760 }
1761
1762 /* Construct a new "struct frame_info" and link it previous to
1763    this_frame.  */
1764
1765 static struct frame_info *
1766 get_prev_frame_raw (struct frame_info *this_frame)
1767 {
1768   struct frame_info *prev_frame;
1769
1770   /* Allocate the new frame but do not wire it in to the frame chain.
1771      Some (bad) code in INIT_FRAME_EXTRA_INFO tries to look along
1772      frame->next to pull some fancy tricks (of course such code is, by
1773      definition, recursive).  Try to prevent it.
1774
1775      There is no reason to worry about memory leaks, should the
1776      remainder of the function fail.  The allocated memory will be
1777      quickly reclaimed when the frame cache is flushed, and the `we've
1778      been here before' check above will stop repeated memory
1779      allocation calls.  */
1780   prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
1781   prev_frame->level = this_frame->level + 1;
1782
1783   /* For now, assume we don't have frame chains crossing address
1784      spaces.  */
1785   prev_frame->pspace = this_frame->pspace;
1786   prev_frame->aspace = this_frame->aspace;
1787
1788   /* Don't yet compute ->unwind (and hence ->type).  It is computed
1789      on-demand in get_frame_type, frame_register_unwind, and
1790      get_frame_id.  */
1791
1792   /* Don't yet compute the frame's ID.  It is computed on-demand by
1793      get_frame_id().  */
1794
1795   /* The unwound frame ID is validate at the start of this function,
1796      as part of the logic to decide if that frame should be further
1797      unwound, and not here while the prev frame is being created.
1798      Doing this makes it possible for the user to examine a frame that
1799      has an invalid frame ID.
1800
1801      Some very old VAX code noted: [...]  For the sake of argument,
1802      suppose that the stack is somewhat trashed (which is one reason
1803      that "info frame" exists).  So, return 0 (indicating we don't
1804      know the address of the arglist) if we don't know what frame this
1805      frame calls.  */
1806
1807   /* Link it in.  */
1808   this_frame->prev = prev_frame;
1809   prev_frame->next = this_frame;
1810
1811   if (frame_debug)
1812     {
1813       fprintf_unfiltered (gdb_stdlog, "-> ");
1814       fprint_frame (gdb_stdlog, prev_frame);
1815       fprintf_unfiltered (gdb_stdlog, " }\n");
1816     }
1817
1818   return prev_frame;
1819 }
1820
1821 /* Debug routine to print a NULL frame being returned.  */
1822
1823 static void
1824 frame_debug_got_null_frame (struct frame_info *this_frame,
1825                             const char *reason)
1826 {
1827   if (frame_debug)
1828     {
1829       fprintf_unfiltered (gdb_stdlog, "{ get_prev_frame (this_frame=");
1830       if (this_frame != NULL)
1831         fprintf_unfiltered (gdb_stdlog, "%d", this_frame->level);
1832       else
1833         fprintf_unfiltered (gdb_stdlog, "<NULL>");
1834       fprintf_unfiltered (gdb_stdlog, ") -> // %s}\n", reason);
1835     }
1836 }
1837
1838 /* Is this (non-sentinel) frame in the "main"() function?  */
1839
1840 static int
1841 inside_main_func (struct frame_info *this_frame)
1842 {
1843   struct minimal_symbol *msymbol;
1844   CORE_ADDR maddr;
1845
1846   if (symfile_objfile == 0)
1847     return 0;
1848   msymbol = lookup_minimal_symbol (main_name (), NULL, symfile_objfile);
1849   if (msymbol == NULL)
1850     return 0;
1851   /* Make certain that the code, and not descriptor, address is
1852      returned.  */
1853   maddr = gdbarch_convert_from_func_ptr_addr (get_frame_arch (this_frame),
1854                                               SYMBOL_VALUE_ADDRESS (msymbol),
1855                                               &current_target);
1856   return maddr == get_frame_func (this_frame);
1857 }
1858
1859 /* Test whether THIS_FRAME is inside the process entry point function.  */
1860
1861 static int
1862 inside_entry_func (struct frame_info *this_frame)
1863 {
1864   CORE_ADDR entry_point;
1865
1866   if (!entry_point_address_query (&entry_point))
1867     return 0;
1868
1869   return get_frame_func (this_frame) == entry_point;
1870 }
1871
1872 /* Return a structure containing various interesting information about
1873    the frame that called THIS_FRAME.  Returns NULL if there is entier
1874    no such frame or the frame fails any of a set of target-independent
1875    condition that should terminate the frame chain (e.g., as unwinding
1876    past main()).
1877
1878    This function should not contain target-dependent tests, such as
1879    checking whether the program-counter is zero.  */
1880
1881 struct frame_info *
1882 get_prev_frame (struct frame_info *this_frame)
1883 {
1884   CORE_ADDR frame_pc;
1885   int frame_pc_p;
1886
1887   /* There is always a frame.  If this assertion fails, suspect that
1888      something should be calling get_selected_frame() or
1889      get_current_frame().  */
1890   gdb_assert (this_frame != NULL);
1891   frame_pc_p = get_frame_pc_if_available (this_frame, &frame_pc);
1892
1893   /* tausq/2004-12-07: Dummy frames are skipped because it doesn't make much
1894      sense to stop unwinding at a dummy frame.  One place where a dummy
1895      frame may have an address "inside_main_func" is on HPUX.  On HPUX, the
1896      pcsqh register (space register for the instruction at the head of the
1897      instruction queue) cannot be written directly; the only way to set it
1898      is to branch to code that is in the target space.  In order to implement
1899      frame dummies on HPUX, the called function is made to jump back to where 
1900      the inferior was when the user function was called.  If gdb was inside 
1901      the main function when we created the dummy frame, the dummy frame will 
1902      point inside the main function.  */
1903   if (this_frame->level >= 0
1904       && get_frame_type (this_frame) == NORMAL_FRAME
1905       && !backtrace_past_main
1906       && frame_pc_p
1907       && inside_main_func (this_frame))
1908     /* Don't unwind past main().  Note, this is done _before_ the
1909        frame has been marked as previously unwound.  That way if the
1910        user later decides to enable unwinds past main(), that will
1911        automatically happen.  */
1912     {
1913       frame_debug_got_null_frame (this_frame, "inside main func");
1914       return NULL;
1915     }
1916
1917   /* If the user's backtrace limit has been exceeded, stop.  We must
1918      add two to the current level; one of those accounts for backtrace_limit
1919      being 1-based and the level being 0-based, and the other accounts for
1920      the level of the new frame instead of the level of the current
1921      frame.  */
1922   if (this_frame->level + 2 > backtrace_limit)
1923     {
1924       frame_debug_got_null_frame (this_frame, "backtrace limit exceeded");
1925       return NULL;
1926     }
1927
1928   /* If we're already inside the entry function for the main objfile,
1929      then it isn't valid.  Don't apply this test to a dummy frame -
1930      dummy frame PCs typically land in the entry func.  Don't apply
1931      this test to the sentinel frame.  Sentinel frames should always
1932      be allowed to unwind.  */
1933   /* NOTE: cagney/2003-07-07: Fixed a bug in inside_main_func() -
1934      wasn't checking for "main" in the minimal symbols.  With that
1935      fixed asm-source tests now stop in "main" instead of halting the
1936      backtrace in weird and wonderful ways somewhere inside the entry
1937      file.  Suspect that tests for inside the entry file/func were
1938      added to work around that (now fixed) case.  */
1939   /* NOTE: cagney/2003-07-15: danielj (if I'm reading it right)
1940      suggested having the inside_entry_func test use the
1941      inside_main_func() msymbol trick (along with entry_point_address()
1942      I guess) to determine the address range of the start function.
1943      That should provide a far better stopper than the current
1944      heuristics.  */
1945   /* NOTE: tausq/2004-10-09: this is needed if, for example, the compiler
1946      applied tail-call optimizations to main so that a function called 
1947      from main returns directly to the caller of main.  Since we don't
1948      stop at main, we should at least stop at the entry point of the
1949      application.  */
1950   if (this_frame->level >= 0
1951       && get_frame_type (this_frame) == NORMAL_FRAME
1952       && !backtrace_past_entry
1953       && frame_pc_p
1954       && inside_entry_func (this_frame))
1955     {
1956       frame_debug_got_null_frame (this_frame, "inside entry func");
1957       return NULL;
1958     }
1959
1960   /* Assume that the only way to get a zero PC is through something
1961      like a SIGSEGV or a dummy frame, and hence that NORMAL frames
1962      will never unwind a zero PC.  */
1963   if (this_frame->level > 0
1964       && (get_frame_type (this_frame) == NORMAL_FRAME
1965           || get_frame_type (this_frame) == INLINE_FRAME)
1966       && get_frame_type (get_next_frame (this_frame)) == NORMAL_FRAME
1967       && frame_pc_p && frame_pc == 0)
1968     {
1969       frame_debug_got_null_frame (this_frame, "zero PC");
1970       return NULL;
1971     }
1972
1973   return get_prev_frame_1 (this_frame);
1974 }
1975
1976 CORE_ADDR
1977 get_frame_pc (struct frame_info *frame)
1978 {
1979   gdb_assert (frame->next != NULL);
1980   return frame_unwind_pc (frame->next);
1981 }
1982
1983 int
1984 get_frame_pc_if_available (struct frame_info *frame, CORE_ADDR *pc)
1985 {
1986   volatile struct gdb_exception ex;
1987
1988   gdb_assert (frame->next != NULL);
1989
1990   TRY_CATCH (ex, RETURN_MASK_ERROR)
1991     {
1992       *pc = frame_unwind_pc (frame->next);
1993     }
1994   if (ex.reason < 0)
1995     {
1996       if (ex.error == NOT_AVAILABLE_ERROR)
1997         return 0;
1998       else
1999         throw_exception (ex);
2000     }
2001
2002   return 1;
2003 }
2004
2005 /* Return an address that falls within THIS_FRAME's code block.  */
2006
2007 CORE_ADDR
2008 get_frame_address_in_block (struct frame_info *this_frame)
2009 {
2010   /* A draft address.  */
2011   CORE_ADDR pc = get_frame_pc (this_frame);
2012
2013   struct frame_info *next_frame = this_frame->next;
2014
2015   /* Calling get_frame_pc returns the resume address for THIS_FRAME.
2016      Normally the resume address is inside the body of the function
2017      associated with THIS_FRAME, but there is a special case: when
2018      calling a function which the compiler knows will never return
2019      (for instance abort), the call may be the very last instruction
2020      in the calling function.  The resume address will point after the
2021      call and may be at the beginning of a different function
2022      entirely.
2023
2024      If THIS_FRAME is a signal frame or dummy frame, then we should
2025      not adjust the unwound PC.  For a dummy frame, GDB pushed the
2026      resume address manually onto the stack.  For a signal frame, the
2027      OS may have pushed the resume address manually and invoked the
2028      handler (e.g. GNU/Linux), or invoked the trampoline which called
2029      the signal handler - but in either case the signal handler is
2030      expected to return to the trampoline.  So in both of these
2031      cases we know that the resume address is executable and
2032      related.  So we only need to adjust the PC if THIS_FRAME
2033      is a normal function.
2034
2035      If the program has been interrupted while THIS_FRAME is current,
2036      then clearly the resume address is inside the associated
2037      function.  There are three kinds of interruption: debugger stop
2038      (next frame will be SENTINEL_FRAME), operating system
2039      signal or exception (next frame will be SIGTRAMP_FRAME),
2040      or debugger-induced function call (next frame will be
2041      DUMMY_FRAME).  So we only need to adjust the PC if
2042      NEXT_FRAME is a normal function.
2043
2044      We check the type of NEXT_FRAME first, since it is already
2045      known; frame type is determined by the unwinder, and since
2046      we have THIS_FRAME we've already selected an unwinder for
2047      NEXT_FRAME.
2048
2049      If the next frame is inlined, we need to keep going until we find
2050      the real function - for instance, if a signal handler is invoked
2051      while in an inlined function, then the code address of the
2052      "calling" normal function should not be adjusted either.  */
2053
2054   while (get_frame_type (next_frame) == INLINE_FRAME)
2055     next_frame = next_frame->next;
2056
2057   if ((get_frame_type (next_frame) == NORMAL_FRAME
2058        || get_frame_type (next_frame) == TAILCALL_FRAME)
2059       && (get_frame_type (this_frame) == NORMAL_FRAME
2060           || get_frame_type (this_frame) == TAILCALL_FRAME
2061           || get_frame_type (this_frame) == INLINE_FRAME))
2062     return pc - 1;
2063
2064   return pc;
2065 }
2066
2067 int
2068 get_frame_address_in_block_if_available (struct frame_info *this_frame,
2069                                          CORE_ADDR *pc)
2070 {
2071   volatile struct gdb_exception ex;
2072
2073   TRY_CATCH (ex, RETURN_MASK_ERROR)
2074     {
2075       *pc = get_frame_address_in_block (this_frame);
2076     }
2077   if (ex.reason < 0 && ex.error == NOT_AVAILABLE_ERROR)
2078     return 0;
2079   else if (ex.reason < 0)
2080     throw_exception (ex);
2081   else
2082     return 1;
2083 }
2084
2085 void
2086 find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
2087 {
2088   struct frame_info *next_frame;
2089   int notcurrent;
2090   CORE_ADDR pc;
2091
2092   /* If the next frame represents an inlined function call, this frame's
2093      sal is the "call site" of that inlined function, which can not
2094      be inferred from get_frame_pc.  */
2095   next_frame = get_next_frame (frame);
2096   if (frame_inlined_callees (frame) > 0)
2097     {
2098       struct symbol *sym;
2099
2100       if (next_frame)
2101         sym = get_frame_function (next_frame);
2102       else
2103         sym = inline_skipped_symbol (inferior_ptid);
2104
2105       /* If frame is inline, it certainly has symbols.  */
2106       gdb_assert (sym);
2107       init_sal (sal);
2108       if (SYMBOL_LINE (sym) != 0)
2109         {
2110           sal->symtab = SYMBOL_SYMTAB (sym);
2111           sal->line = SYMBOL_LINE (sym);
2112         }
2113       else
2114         /* If the symbol does not have a location, we don't know where
2115            the call site is.  Do not pretend to.  This is jarring, but
2116            we can't do much better.  */
2117         sal->pc = get_frame_pc (frame);
2118
2119       sal->pspace = get_frame_program_space (frame);
2120
2121       return;
2122     }
2123
2124   /* If FRAME is not the innermost frame, that normally means that
2125      FRAME->pc points at the return instruction (which is *after* the
2126      call instruction), and we want to get the line containing the
2127      call (because the call is where the user thinks the program is).
2128      However, if the next frame is either a SIGTRAMP_FRAME or a
2129      DUMMY_FRAME, then the next frame will contain a saved interrupt
2130      PC and such a PC indicates the current (rather than next)
2131      instruction/line, consequently, for such cases, want to get the
2132      line containing fi->pc.  */
2133   if (!get_frame_pc_if_available (frame, &pc))
2134     {
2135       init_sal (sal);
2136       return;
2137     }
2138
2139   notcurrent = (pc != get_frame_address_in_block (frame));
2140   (*sal) = find_pc_line (pc, notcurrent);
2141 }
2142
2143 /* Per "frame.h", return the ``address'' of the frame.  Code should
2144    really be using get_frame_id().  */
2145 CORE_ADDR
2146 get_frame_base (struct frame_info *fi)
2147 {
2148   return get_frame_id (fi).stack_addr;
2149 }
2150
2151 /* High-level offsets into the frame.  Used by the debug info.  */
2152
2153 CORE_ADDR
2154 get_frame_base_address (struct frame_info *fi)
2155 {
2156   if (get_frame_type (fi) != NORMAL_FRAME)
2157     return 0;
2158   if (fi->base == NULL)
2159     fi->base = frame_base_find_by_frame (fi);
2160   /* Sneaky: If the low-level unwind and high-level base code share a
2161      common unwinder, let them share the prologue cache.  */
2162   if (fi->base->unwind == fi->unwind)
2163     return fi->base->this_base (fi, &fi->prologue_cache);
2164   return fi->base->this_base (fi, &fi->base_cache);
2165 }
2166
2167 CORE_ADDR
2168 get_frame_locals_address (struct frame_info *fi)
2169 {
2170   if (get_frame_type (fi) != NORMAL_FRAME)
2171     return 0;
2172   /* If there isn't a frame address method, find it.  */
2173   if (fi->base == NULL)
2174     fi->base = frame_base_find_by_frame (fi);
2175   /* Sneaky: If the low-level unwind and high-level base code share a
2176      common unwinder, let them share the prologue cache.  */
2177   if (fi->base->unwind == fi->unwind)
2178     return fi->base->this_locals (fi, &fi->prologue_cache);
2179   return fi->base->this_locals (fi, &fi->base_cache);
2180 }
2181
2182 CORE_ADDR
2183 get_frame_args_address (struct frame_info *fi)
2184 {
2185   if (get_frame_type (fi) != NORMAL_FRAME)
2186     return 0;
2187   /* If there isn't a frame address method, find it.  */
2188   if (fi->base == NULL)
2189     fi->base = frame_base_find_by_frame (fi);
2190   /* Sneaky: If the low-level unwind and high-level base code share a
2191      common unwinder, let them share the prologue cache.  */
2192   if (fi->base->unwind == fi->unwind)
2193     return fi->base->this_args (fi, &fi->prologue_cache);
2194   return fi->base->this_args (fi, &fi->base_cache);
2195 }
2196
2197 /* Return true if the frame unwinder for frame FI is UNWINDER; false
2198    otherwise.  */
2199
2200 int
2201 frame_unwinder_is (struct frame_info *fi, const struct frame_unwind *unwinder)
2202 {
2203   if (fi->unwind == NULL)
2204     frame_unwind_find_by_frame (fi, &fi->prologue_cache);
2205   return fi->unwind == unwinder;
2206 }
2207
2208 /* Level of the selected frame: 0 for innermost, 1 for its caller, ...
2209    or -1 for a NULL frame.  */
2210
2211 int
2212 frame_relative_level (struct frame_info *fi)
2213 {
2214   if (fi == NULL)
2215     return -1;
2216   else
2217     return fi->level;
2218 }
2219
2220 enum frame_type
2221 get_frame_type (struct frame_info *frame)
2222 {
2223   if (frame->unwind == NULL)
2224     /* Initialize the frame's unwinder because that's what
2225        provides the frame's type.  */
2226     frame_unwind_find_by_frame (frame, &frame->prologue_cache);
2227   return frame->unwind->type;
2228 }
2229
2230 struct program_space *
2231 get_frame_program_space (struct frame_info *frame)
2232 {
2233   return frame->pspace;
2234 }
2235
2236 struct program_space *
2237 frame_unwind_program_space (struct frame_info *this_frame)
2238 {
2239   gdb_assert (this_frame);
2240
2241   /* This is really a placeholder to keep the API consistent --- we
2242      assume for now that we don't have frame chains crossing
2243      spaces.  */
2244   return this_frame->pspace;
2245 }
2246
2247 struct address_space *
2248 get_frame_address_space (struct frame_info *frame)
2249 {
2250   return frame->aspace;
2251 }
2252
2253 /* Memory access methods.  */
2254
2255 void
2256 get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr,
2257                   gdb_byte *buf, int len)
2258 {
2259   read_memory (addr, buf, len);
2260 }
2261
2262 LONGEST
2263 get_frame_memory_signed (struct frame_info *this_frame, CORE_ADDR addr,
2264                          int len)
2265 {
2266   struct gdbarch *gdbarch = get_frame_arch (this_frame);
2267   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2268
2269   return read_memory_integer (addr, len, byte_order);
2270 }
2271
2272 ULONGEST
2273 get_frame_memory_unsigned (struct frame_info *this_frame, CORE_ADDR addr,
2274                            int len)
2275 {
2276   struct gdbarch *gdbarch = get_frame_arch (this_frame);
2277   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
2278
2279   return read_memory_unsigned_integer (addr, len, byte_order);
2280 }
2281
2282 int
2283 safe_frame_unwind_memory (struct frame_info *this_frame,
2284                           CORE_ADDR addr, gdb_byte *buf, int len)
2285 {
2286   /* NOTE: target_read_memory returns zero on success!  */
2287   return !target_read_memory (addr, buf, len);
2288 }
2289
2290 /* Architecture methods.  */
2291
2292 struct gdbarch *
2293 get_frame_arch (struct frame_info *this_frame)
2294 {
2295   return frame_unwind_arch (this_frame->next);
2296 }
2297
2298 struct gdbarch *
2299 frame_unwind_arch (struct frame_info *next_frame)
2300 {
2301   if (!next_frame->prev_arch.p)
2302     {
2303       struct gdbarch *arch;
2304
2305       if (next_frame->unwind == NULL)
2306         frame_unwind_find_by_frame (next_frame, &next_frame->prologue_cache);
2307
2308       if (next_frame->unwind->prev_arch != NULL)
2309         arch = next_frame->unwind->prev_arch (next_frame,
2310                                               &next_frame->prologue_cache);
2311       else
2312         arch = get_frame_arch (next_frame);
2313
2314       next_frame->prev_arch.arch = arch;
2315       next_frame->prev_arch.p = 1;
2316       if (frame_debug)
2317         fprintf_unfiltered (gdb_stdlog,
2318                             "{ frame_unwind_arch (next_frame=%d) -> %s }\n",
2319                             next_frame->level,
2320                             gdbarch_bfd_arch_info (arch)->printable_name);
2321     }
2322
2323   return next_frame->prev_arch.arch;
2324 }
2325
2326 struct gdbarch *
2327 frame_unwind_caller_arch (struct frame_info *next_frame)
2328 {
2329   return frame_unwind_arch (skip_inlined_frames (next_frame));
2330 }
2331
2332 /* Stack pointer methods.  */
2333
2334 CORE_ADDR
2335 get_frame_sp (struct frame_info *this_frame)
2336 {
2337   struct gdbarch *gdbarch = get_frame_arch (this_frame);
2338
2339   /* Normality - an architecture that provides a way of obtaining any
2340      frame inner-most address.  */
2341   if (gdbarch_unwind_sp_p (gdbarch))
2342     /* NOTE drow/2008-06-28: gdbarch_unwind_sp could be converted to
2343        operate on THIS_FRAME now.  */
2344     return gdbarch_unwind_sp (gdbarch, this_frame->next);
2345   /* Now things are really are grim.  Hope that the value returned by
2346      the gdbarch_sp_regnum register is meaningful.  */
2347   if (gdbarch_sp_regnum (gdbarch) >= 0)
2348     return get_frame_register_unsigned (this_frame,
2349                                         gdbarch_sp_regnum (gdbarch));
2350   internal_error (__FILE__, __LINE__, _("Missing unwind SP method"));
2351 }
2352
2353 /* Return the reason why we can't unwind past FRAME.  */
2354
2355 enum unwind_stop_reason
2356 get_frame_unwind_stop_reason (struct frame_info *frame)
2357 {
2358   /* If we haven't tried to unwind past this point yet, then assume
2359      that unwinding would succeed.  */
2360   if (frame->prev_p == 0)
2361     return UNWIND_NO_REASON;
2362
2363   /* Otherwise, we set a reason when we succeeded (or failed) to
2364      unwind.  */
2365   return frame->stop_reason;
2366 }
2367
2368 /* Return a string explaining REASON.  */
2369
2370 const char *
2371 frame_stop_reason_string (enum unwind_stop_reason reason)
2372 {
2373   switch (reason)
2374     {
2375 #define SET(name, description) \
2376     case name: return _(description);
2377 #include "unwind_stop_reasons.def"
2378 #undef SET
2379
2380     default:
2381       internal_error (__FILE__, __LINE__,
2382                       "Invalid frame stop reason");
2383     }
2384 }
2385
2386 /* Clean up after a failed (wrong unwinder) attempt to unwind past
2387    FRAME.  */
2388
2389 static void
2390 frame_cleanup_after_sniffer (void *arg)
2391 {
2392   struct frame_info *frame = arg;
2393
2394   /* The sniffer should not allocate a prologue cache if it did not
2395      match this frame.  */
2396   gdb_assert (frame->prologue_cache == NULL);
2397
2398   /* No sniffer should extend the frame chain; sniff based on what is
2399      already certain.  */
2400   gdb_assert (!frame->prev_p);
2401
2402   /* The sniffer should not check the frame's ID; that's circular.  */
2403   gdb_assert (!frame->this_id.p);
2404
2405   /* Clear cached fields dependent on the unwinder.
2406
2407      The previous PC is independent of the unwinder, but the previous
2408      function is not (see get_frame_address_in_block).  */
2409   frame->prev_func.p = 0;
2410   frame->prev_func.addr = 0;
2411
2412   /* Discard the unwinder last, so that we can easily find it if an assertion
2413      in this function triggers.  */
2414   frame->unwind = NULL;
2415 }
2416
2417 /* Set FRAME's unwinder temporarily, so that we can call a sniffer.
2418    Return a cleanup which should be called if unwinding fails, and
2419    discarded if it succeeds.  */
2420
2421 struct cleanup *
2422 frame_prepare_for_sniffer (struct frame_info *frame,
2423                            const struct frame_unwind *unwind)
2424 {
2425   gdb_assert (frame->unwind == NULL);
2426   frame->unwind = unwind;
2427   return make_cleanup (frame_cleanup_after_sniffer, frame);
2428 }
2429
2430 extern initialize_file_ftype _initialize_frame; /* -Wmissing-prototypes */
2431
2432 static struct cmd_list_element *set_backtrace_cmdlist;
2433 static struct cmd_list_element *show_backtrace_cmdlist;
2434
2435 static void
2436 set_backtrace_cmd (char *args, int from_tty)
2437 {
2438   help_list (set_backtrace_cmdlist, "set backtrace ", -1, gdb_stdout);
2439 }
2440
2441 static void
2442 show_backtrace_cmd (char *args, int from_tty)
2443 {
2444   cmd_show_list (show_backtrace_cmdlist, from_tty, "");
2445 }
2446
2447 void
2448 _initialize_frame (void)
2449 {
2450   obstack_init (&frame_cache_obstack);
2451
2452   observer_attach_target_changed (frame_observer_target_changed);
2453
2454   add_prefix_cmd ("backtrace", class_maintenance, set_backtrace_cmd, _("\
2455 Set backtrace specific variables.\n\
2456 Configure backtrace variables such as the backtrace limit"),
2457                   &set_backtrace_cmdlist, "set backtrace ",
2458                   0/*allow-unknown*/, &setlist);
2459   add_prefix_cmd ("backtrace", class_maintenance, show_backtrace_cmd, _("\
2460 Show backtrace specific variables\n\
2461 Show backtrace variables such as the backtrace limit"),
2462                   &show_backtrace_cmdlist, "show backtrace ",
2463                   0/*allow-unknown*/, &showlist);
2464
2465   add_setshow_boolean_cmd ("past-main", class_obscure,
2466                            &backtrace_past_main, _("\
2467 Set whether backtraces should continue past \"main\"."), _("\
2468 Show whether backtraces should continue past \"main\"."), _("\
2469 Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
2470 the backtrace at \"main\".  Set this variable if you need to see the rest\n\
2471 of the stack trace."),
2472                            NULL,
2473                            show_backtrace_past_main,
2474                            &set_backtrace_cmdlist,
2475                            &show_backtrace_cmdlist);
2476
2477   add_setshow_boolean_cmd ("past-entry", class_obscure,
2478                            &backtrace_past_entry, _("\
2479 Set whether backtraces should continue past the entry point of a program."),
2480                            _("\
2481 Show whether backtraces should continue past the entry point of a program."),
2482                            _("\
2483 Normally there are no callers beyond the entry point of a program, so GDB\n\
2484 will terminate the backtrace there.  Set this variable if you need to see\n\
2485 the rest of the stack trace."),
2486                            NULL,
2487                            show_backtrace_past_entry,
2488                            &set_backtrace_cmdlist,
2489                            &show_backtrace_cmdlist);
2490
2491   add_setshow_integer_cmd ("limit", class_obscure,
2492                            &backtrace_limit, _("\
2493 Set an upper bound on the number of backtrace levels."), _("\
2494 Show the upper bound on the number of backtrace levels."), _("\
2495 No more than the specified number of frames can be displayed or examined.\n\
2496 Zero is unlimited."),
2497                            NULL,
2498                            show_backtrace_limit,
2499                            &set_backtrace_cmdlist,
2500                            &show_backtrace_cmdlist);
2501
2502   /* Debug this files internals.  */
2503   add_setshow_zinteger_cmd ("frame", class_maintenance, &frame_debug,  _("\
2504 Set frame debugging."), _("\
2505 Show frame debugging."), _("\
2506 When non-zero, frame specific internal debugging is enabled."),
2507                             NULL,
2508                             show_frame_debug,
2509                             &setdebuglist, &showdebuglist);
2510 }