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