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