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