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