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