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