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