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