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