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