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