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