1/* Cache and manage frames for GDB, the GNU debugger.
2
3   Copyright 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000,
4   2001, 2002, 2003, 2004 Free Software Foundation, Inc.
5
6   This file is part of GDB.
7
8   This program is free software; you can redistribute it and/or modify
9   it under the terms of the GNU General Public License as published by
10   the Free Software Foundation; either version 2 of the License, or
11   (at your option) any later version.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18   You should have received a copy of the GNU General Public License
19   along with this program; if not, write to the Free Software
20   Foundation, Inc., 59 Temple Place - Suite 330,
21   Boston, MA 02111-1307, USA.  */
22
23#include "defs.h"
24#include "frame.h"
25#include "target.h"
26#include "value.h"
27#include "inferior.h"	/* for inferior_ptid */
28#include "regcache.h"
29#include "gdb_assert.h"
30#include "gdb_string.h"
31#include "user-regs.h"
32#include "gdb_obstack.h"
33#include "dummy-frame.h"
34#include "sentinel-frame.h"
35#include "gdbcore.h"
36#include "annotate.h"
37#include "language.h"
38#include "frame-unwind.h"
39#include "frame-base.h"
40#include "command.h"
41#include "gdbcmd.h"
42
43/* We keep a cache of stack frames, each of which is a "struct
44   frame_info".  The innermost one gets allocated (in
45   wait_for_inferior) each time the inferior stops; current_frame
46   points to it.  Additional frames get allocated (in get_prev_frame)
47   as needed, and are chained through the next and prev fields.  Any
48   time that the frame cache becomes invalid (most notably when we
49   execute something, but also if we change how we interpret the
50   frames (e.g. "set heuristic-fence-post" in mips-tdep.c, or anything
51   which reads new symbols)), we should call reinit_frame_cache.  */
52
53struct frame_info
54{
55  /* Level of this frame.  The inner-most (youngest) frame is at level
56     0.  As you move towards the outer-most (oldest) frame, the level
57     increases.  This is a cached value.  It could just as easily be
58     computed by counting back from the selected frame to the inner
59     most frame.  */
60  /* NOTE: cagney/2002-04-05: Perhaphs a level of ``-1'' should be
61     reserved to indicate a bogus frame - one that has been created
62     just to keep GDB happy (GDB always needs a frame).  For the
63     moment leave this as speculation.  */
64  int level;
65
66  /* The frame's type.  */
67  /* FIXME: cagney/2003-04-02: Should instead be returning
68     ->unwind->type.  Unfortunately, legacy code is still explicitly
69     setting the type using the method deprecated_set_frame_type.
70     Eliminate that method and this field can be eliminated.  */
71  enum frame_type type;
72
73  /* For each register, address of where it was saved on entry to the
74     frame, or zero if it was not saved on entry to this frame.  This
75     includes special registers such as pc and fp saved in special
76     ways in the stack frame.  The SP_REGNUM is even more special, the
77     address here is the sp for the previous frame, not the address
78     where the sp was saved.  */
79  /* Allocated by frame_saved_regs_zalloc () which is called /
80     initialized by DEPRECATED_FRAME_INIT_SAVED_REGS(). */
81  CORE_ADDR *saved_regs;	/*NUM_REGS + NUM_PSEUDO_REGS*/
82
83  /* Anything extra for this structure that may have been defined in
84     the machine dependent files. */
85  /* Allocated by frame_extra_info_zalloc () which is called /
86     initialized by DEPRECATED_INIT_EXTRA_FRAME_INFO */
87  struct frame_extra_info *extra_info;
88
89  /* The frame's low-level unwinder and corresponding cache.  The
90     low-level unwinder is responsible for unwinding register values
91     for the previous frame.  The low-level unwind methods are
92     selected based on the presence, or otherwize, of register unwind
93     information such as CFI.  */
94  void *prologue_cache;
95  const struct frame_unwind *unwind;
96
97  /* Cached copy of the previous frame's resume address.  */
98  struct {
99    int p;
100    CORE_ADDR value;
101  } prev_pc;
102
103  /* Cached copy of the previous frame's function address.  */
104  struct
105  {
106    CORE_ADDR addr;
107    int p;
108  } prev_func;
109
110  /* This frame's ID.  */
111  struct
112  {
113    int p;
114    struct frame_id value;
115  } this_id;
116
117  /* The frame's high-level base methods, and corresponding cache.
118     The high level base methods are selected based on the frame's
119     debug info.  */
120  const struct frame_base *base;
121  void *base_cache;
122
123  /* Pointers to the next (down, inner, younger) and previous (up,
124     outer, older) frame_info's in the frame cache.  */
125  struct frame_info *next; /* down, inner, younger */
126  int prev_p;
127  struct frame_info *prev; /* up, outer, older */
128};
129
130/* Flag to control debugging.  */
131
132static int frame_debug;
133
134/* Flag to indicate whether backtraces should stop at main et.al.  */
135
136static int backtrace_past_main;
137static unsigned int backtrace_limit = UINT_MAX;
138
139int (*frame_tdep_pc_fixup)(CORE_ADDR *pc);
140
141void
142fprint_frame_id (struct ui_file *file, struct frame_id id)
143{
144  fprintf_unfiltered (file, "{stack=0x%s,code=0x%s,special=0x%s}",
145		      paddr_nz (id.stack_addr),
146		      paddr_nz (id.code_addr),
147		      paddr_nz (id.special_addr));
148}
149
150static void
151fprint_frame_type (struct ui_file *file, enum frame_type type)
152{
153  switch (type)
154    {
155    case UNKNOWN_FRAME:
156      fprintf_unfiltered (file, "UNKNOWN_FRAME");
157      return;
158    case NORMAL_FRAME:
159      fprintf_unfiltered (file, "NORMAL_FRAME");
160      return;
161    case DUMMY_FRAME:
162      fprintf_unfiltered (file, "DUMMY_FRAME");
163      return;
164    case SIGTRAMP_FRAME:
165      fprintf_unfiltered (file, "SIGTRAMP_FRAME");
166      return;
167    default:
168      fprintf_unfiltered (file, "<unknown type>");
169      return;
170    };
171}
172
173static void
174fprint_frame (struct ui_file *file, struct frame_info *fi)
175{
176  if (fi == NULL)
177    {
178      fprintf_unfiltered (file, "<NULL frame>");
179      return;
180    }
181  fprintf_unfiltered (file, "{");
182  fprintf_unfiltered (file, "level=%d", fi->level);
183  fprintf_unfiltered (file, ",");
184  fprintf_unfiltered (file, "type=");
185  fprint_frame_type (file, fi->type);
186  fprintf_unfiltered (file, ",");
187  fprintf_unfiltered (file, "unwind=");
188  if (fi->unwind != NULL)
189    gdb_print_host_address (fi->unwind, file);
190  else
191    fprintf_unfiltered (file, "<unknown>");
192  fprintf_unfiltered (file, ",");
193  fprintf_unfiltered (file, "pc=");
194  if (fi->next != NULL && fi->next->prev_pc.p)
195    fprintf_unfiltered (file, "0x%s", paddr_nz (fi->next->prev_pc.value));
196  else
197    fprintf_unfiltered (file, "<unknown>");
198  fprintf_unfiltered (file, ",");
199  fprintf_unfiltered (file, "id=");
200  if (fi->this_id.p)
201    fprint_frame_id (file, fi->this_id.value);
202  else
203    fprintf_unfiltered (file, "<unknown>");
204  fprintf_unfiltered (file, ",");
205  fprintf_unfiltered (file, "func=");
206  if (fi->next != NULL && fi->next->prev_func.p)
207    fprintf_unfiltered (file, "0x%s", paddr_nz (fi->next->prev_func.addr));
208  else
209    fprintf_unfiltered (file, "<unknown>");
210  fprintf_unfiltered (file, "}");
211}
212
213/* Return a frame uniq ID that can be used to, later, re-find the
214   frame.  */
215
216struct frame_id
217get_frame_id (struct frame_info *fi)
218{
219  if (fi == NULL)
220    {
221      return null_frame_id;
222    }
223  if (!fi->this_id.p)
224    {
225      gdb_assert (!legacy_frame_p (current_gdbarch));
226      if (frame_debug)
227	fprintf_unfiltered (gdb_stdlog, "{ get_frame_id (fi=%d) ",
228			    fi->level);
229      /* Find the unwinder.  */
230      if (fi->unwind == NULL)
231	{
232	  fi->unwind = frame_unwind_find_by_frame (fi->next);
233	  /* FIXME: cagney/2003-04-02: Rather than storing the frame's
234	     type in the frame, the unwinder's type should be returned
235	     directly.  Unfortunately, legacy code, called by
236	     legacy_get_prev_frame, explicitly set the frames type
237	     using the method deprecated_set_frame_type().  */
238	  fi->type = fi->unwind->type;
239	}
240      /* Find THIS frame's ID.  */
241      fi->unwind->this_id (fi->next, &fi->prologue_cache, &fi->this_id.value);
242      fi->this_id.p = 1;
243      if (frame_debug)
244	{
245	  fprintf_unfiltered (gdb_stdlog, "-> ");
246	  fprint_frame_id (gdb_stdlog, fi->this_id.value);
247	  fprintf_unfiltered (gdb_stdlog, " }\n");
248	}
249    }
250  return fi->this_id.value;
251}
252
253const struct frame_id null_frame_id; /* All zeros.  */
254
255struct frame_id
256frame_id_build_special (CORE_ADDR stack_addr, CORE_ADDR code_addr,
257                        CORE_ADDR special_addr)
258{
259  struct frame_id id;
260  id.stack_addr = stack_addr;
261  id.code_addr = code_addr;
262  id.special_addr = special_addr;
263  return id;
264}
265
266struct frame_id
267frame_id_build (CORE_ADDR stack_addr, CORE_ADDR code_addr)
268{
269  return frame_id_build_special (stack_addr, code_addr, 0);
270}
271
272int
273frame_id_p (struct frame_id l)
274{
275  int p;
276  /* The .code can be NULL but the .stack cannot.  */
277  p = (l.stack_addr != 0);
278  if (frame_debug)
279    {
280      fprintf_unfiltered (gdb_stdlog, "{ frame_id_p (l=");
281      fprint_frame_id (gdb_stdlog, l);
282      fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", p);
283    }
284  return p;
285}
286
287int
288frame_id_eq (struct frame_id l, struct frame_id r)
289{
290  int eq;
291  if (l.stack_addr == 0 || r.stack_addr == 0)
292    /* Like a NaN, if either ID is invalid, the result is false.  */
293    eq = 0;
294  else if (l.stack_addr != r.stack_addr)
295    /* If .stack addresses are different, the frames are different.  */
296    eq = 0;
297  else if (l.code_addr == 0 || r.code_addr == 0)
298    /* A zero code addr is a wild card, always succeed.  */
299    eq = 1;
300  else if (l.code_addr != r.code_addr)
301    /* If .code addresses are different, the frames are different.  */
302    eq = 0;
303  else if (l.special_addr == 0 || r.special_addr == 0)
304    /* A zero special addr is a wild card (or unused), always succeed.  */
305    eq = 1;
306  else if (l.special_addr == r.special_addr)
307    /* Frames are equal.  */
308    eq = 1;
309  else
310    /* No luck.  */
311    eq = 0;
312  if (frame_debug)
313    {
314      fprintf_unfiltered (gdb_stdlog, "{ frame_id_eq (l=");
315      fprint_frame_id (gdb_stdlog, l);
316      fprintf_unfiltered (gdb_stdlog, ",r=");
317      fprint_frame_id (gdb_stdlog, r);
318      fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", eq);
319    }
320  return eq;
321}
322
323int
324frame_id_inner (struct frame_id l, struct frame_id r)
325{
326  int inner;
327  if (l.stack_addr == 0 || r.stack_addr == 0)
328    /* Like NaN, any operation involving an invalid ID always fails.  */
329    inner = 0;
330  else
331    /* Only return non-zero when strictly inner than.  Note that, per
332       comment in "frame.h", there is some fuzz here.  Frameless
333       functions are not strictly inner than (same .stack but
334       different .code and/or .special address).  */
335    inner = INNER_THAN (l.stack_addr, r.stack_addr);
336  if (frame_debug)
337    {
338      fprintf_unfiltered (gdb_stdlog, "{ frame_id_inner (l=");
339      fprint_frame_id (gdb_stdlog, l);
340      fprintf_unfiltered (gdb_stdlog, ",r=");
341      fprint_frame_id (gdb_stdlog, r);
342      fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", inner);
343    }
344  return inner;
345}
346
347struct frame_info *
348frame_find_by_id (struct frame_id id)
349{
350  struct frame_info *frame;
351
352  /* ZERO denotes the null frame, let the caller decide what to do
353     about it.  Should it instead return get_current_frame()?  */
354  if (!frame_id_p (id))
355    return NULL;
356
357  for (frame = get_current_frame ();
358       frame != NULL;
359       frame = get_prev_frame (frame))
360    {
361      struct frame_id this = get_frame_id (frame);
362      if (frame_id_eq (id, this))
363	/* An exact match.  */
364	return frame;
365      if (frame_id_inner (id, this))
366	/* Gone to far.  */
367	return NULL;
368      /* Either, we're not yet gone far enough out along the frame
369         chain (inner(this,id), or we're comparing frameless functions
370         (same .base, different .func, no test available).  Struggle
371         on until we've definitly gone to far.  */
372    }
373  return NULL;
374}
375
376CORE_ADDR
377frame_pc_unwind (struct frame_info *this_frame)
378{
379  if (!this_frame->prev_pc.p)
380    {
381      CORE_ADDR pc;
382      if (gdbarch_unwind_pc_p (current_gdbarch))
383	{
384	  /* The right way.  The `pure' way.  The one true way.  This
385	     method depends solely on the register-unwind code to
386	     determine the value of registers in THIS frame, and hence
387	     the value of this frame's PC (resume address).  A typical
388	     implementation is no more than:
389
390	     frame_unwind_register (this_frame, ISA_PC_REGNUM, buf);
391	     return extract_unsigned_integer (buf, size of ISA_PC_REGNUM);
392
393	     Note: this method is very heavily dependent on a correct
394	     register-unwind implementation, it pays to fix that
395	     method first; this method is frame type agnostic, since
396	     it only deals with register values, it works with any
397	     frame.  This is all in stark contrast to the old
398	     FRAME_SAVED_PC which would try to directly handle all the
399	     different ways that a PC could be unwound.  */
400	  pc = gdbarch_unwind_pc (current_gdbarch, this_frame);
401	}
402      else if (this_frame->level < 0)
403	{
404	  /* FIXME: cagney/2003-03-06: Old code and and a sentinel
405             frame.  Do like was always done.  Fetch the PC's value
406             direct from the global registers array (via read_pc).
407             This assumes that this frame belongs to the current
408             global register cache.  The assumption is dangerous.  */
409	  pc = read_pc ();
410	}
411      else if (DEPRECATED_FRAME_SAVED_PC_P ())
412	{
413	  /* FIXME: cagney/2003-03-06: Old code, but not a sentinel
414             frame.  Do like was always done.  Note that this method,
415             unlike unwind_pc(), tries to handle all the different
416             frame cases directly.  It fails.  */
417	  pc = DEPRECATED_FRAME_SAVED_PC (this_frame);
418	}
419      else
420	internal_error (__FILE__, __LINE__, "No gdbarch_unwind_pc method");
421      this_frame->prev_pc.value = pc;
422      this_frame->prev_pc.p = 1;
423      if (frame_debug)
424	fprintf_unfiltered (gdb_stdlog,
425			    "{ frame_pc_unwind (this_frame=%d) -> 0x%s }\n",
426			    this_frame->level,
427			    paddr_nz (this_frame->prev_pc.value));
428    }
429  return this_frame->prev_pc.value;
430}
431
432CORE_ADDR
433frame_func_unwind (struct frame_info *fi)
434{
435  if (!fi->prev_func.p)
436    {
437      /* Make certain that this, and not the adjacent, function is
438         found.  */
439      CORE_ADDR addr_in_block = frame_unwind_address_in_block (fi);
440      fi->prev_func.p = 1;
441      fi->prev_func.addr = get_pc_function_start (addr_in_block);
442      if (frame_debug)
443	fprintf_unfiltered (gdb_stdlog,
444			    "{ frame_func_unwind (fi=%d) -> 0x%s }\n",
445			    fi->level, paddr_nz (fi->prev_func.addr));
446    }
447  return fi->prev_func.addr;
448}
449
450CORE_ADDR
451get_frame_func (struct frame_info *fi)
452{
453  return frame_func_unwind (fi->next);
454}
455
456static int
457do_frame_unwind_register (void *src, int regnum, void *buf)
458{
459  frame_unwind_register (src, regnum, buf);
460  return 1;
461}
462
463void
464frame_pop (struct frame_info *this_frame)
465{
466  struct regcache *scratch_regcache;
467  struct cleanup *cleanups;
468
469  if (DEPRECATED_POP_FRAME_P ())
470    {
471      /* A legacy architecture that has implemented a custom pop
472	 function.  All new architectures should instead be using the
473	 generic code below.  */
474      DEPRECATED_POP_FRAME;
475    }
476  else
477    {
478      /* Make a copy of all the register values unwound from this
479	 frame.  Save them in a scratch buffer so that there isn't a
480	 race betweening trying to extract the old values from the
481	 current_regcache while, at the same time writing new values
482	 into that same cache.  */
483      struct regcache *scratch = regcache_xmalloc (current_gdbarch);
484      struct cleanup *cleanups = make_cleanup_regcache_xfree (scratch);
485      regcache_save (scratch, do_frame_unwind_register, this_frame);
486      /* FIXME: cagney/2003-03-16: It should be possible to tell the
487         target's register cache that it is about to be hit with a
488         burst register transfer and that the sequence of register
489         writes should be batched.  The pair target_prepare_to_store()
490         and target_store_registers() kind of suggest this
491         functionality.  Unfortunately, they don't implement it.  Their
492         lack of a formal definition can lead to targets writing back
493         bogus values (arguably a bug in the target code mind).  */
494      /* Now copy those saved registers into the current regcache.
495         Here, regcache_cpy() calls regcache_restore().  */
496      regcache_cpy (current_regcache, scratch);
497      do_cleanups (cleanups);
498    }
499  /* We've made right mess of GDB's local state, just discard
500     everything.  */
501  flush_cached_frames ();
502}
503
504void
505frame_register_unwind (struct frame_info *frame, int regnum,
506		       int *optimizedp, enum lval_type *lvalp,
507		       CORE_ADDR *addrp, int *realnump, void *bufferp)
508{
509  struct frame_unwind_cache *cache;
510
511  if (frame_debug)
512    {
513      fprintf_unfiltered (gdb_stdlog, "\
514{ frame_register_unwind (frame=%d,regnum=%d(%s),...) ",
515			  frame->level, regnum,
516			  frame_map_regnum_to_name (frame, regnum));
517    }
518
519  /* Require all but BUFFERP to be valid.  A NULL BUFFERP indicates
520     that the value proper does not need to be fetched.  */
521  gdb_assert (optimizedp != NULL);
522  gdb_assert (lvalp != NULL);
523  gdb_assert (addrp != NULL);
524  gdb_assert (realnump != NULL);
525  /* gdb_assert (bufferp != NULL); */
526
527  /* NOTE: cagney/2002-11-27: A program trying to unwind a NULL frame
528     is broken.  There is always a frame.  If there, for some reason,
529     isn't, there is some pretty busted code as it should have
530     detected the problem before calling here.  */
531  gdb_assert (frame != NULL);
532
533  /* Find the unwinder.  */
534  if (frame->unwind == NULL)
535    {
536      frame->unwind = frame_unwind_find_by_frame (frame->next);
537      /* FIXME: cagney/2003-04-02: Rather than storing the frame's
538	 type in the frame, the unwinder's type should be returned
539	 directly.  Unfortunately, legacy code, called by
540	 legacy_get_prev_frame, explicitly set the frames type using
541	 the method deprecated_set_frame_type().  */
542      frame->type = frame->unwind->type;
543    }
544
545  /* Ask this frame to unwind its register.  See comment in
546     "frame-unwind.h" for why NEXT frame and this unwind cace are
547     passed in.  */
548  frame->unwind->prev_register (frame->next, &frame->prologue_cache, regnum,
549				optimizedp, lvalp, addrp, realnump, bufferp);
550
551  if (frame_debug)
552    {
553      fprintf_unfiltered (gdb_stdlog, "->");
554      fprintf_unfiltered (gdb_stdlog, " *optimizedp=%d", (*optimizedp));
555      fprintf_unfiltered (gdb_stdlog, " *lvalp=%d", (int) (*lvalp));
556      fprintf_unfiltered (gdb_stdlog, " *addrp=0x%s", paddr_nz ((*addrp)));
557      fprintf_unfiltered (gdb_stdlog, " *bufferp=");
558      if (bufferp == NULL)
559	fprintf_unfiltered (gdb_stdlog, "<NULL>");
560      else
561	{
562	  int i;
563	  const unsigned char *buf = bufferp;
564	  fprintf_unfiltered (gdb_stdlog, "[");
565	  for (i = 0; i < register_size (current_gdbarch, regnum); i++)
566	    fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
567	  fprintf_unfiltered (gdb_stdlog, "]");
568	}
569      fprintf_unfiltered (gdb_stdlog, " }\n");
570    }
571}
572
573void
574frame_register (struct frame_info *frame, int regnum,
575		int *optimizedp, enum lval_type *lvalp,
576		CORE_ADDR *addrp, int *realnump, void *bufferp)
577{
578  /* Require all but BUFFERP to be valid.  A NULL BUFFERP indicates
579     that the value proper does not need to be fetched.  */
580  gdb_assert (optimizedp != NULL);
581  gdb_assert (lvalp != NULL);
582  gdb_assert (addrp != NULL);
583  gdb_assert (realnump != NULL);
584  /* gdb_assert (bufferp != NULL); */
585
586  /* Ulgh!  Old code that, for lval_register, sets ADDRP to the offset
587     of the register in the register cache.  It should instead return
588     the REGNUM corresponding to that register.  Translate the .  */
589  if (DEPRECATED_GET_SAVED_REGISTER_P ())
590    {
591      DEPRECATED_GET_SAVED_REGISTER (bufferp, optimizedp, addrp, frame,
592				     regnum, lvalp);
593      /* Compute the REALNUM if the caller wants it.  */
594      if (*lvalp == lval_register)
595	{
596	  int regnum;
597	  for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
598	    {
599	      if (*addrp == register_offset_hack (current_gdbarch, regnum))
600		{
601		  *realnump = regnum;
602		  return;
603		}
604	    }
605	  internal_error (__FILE__, __LINE__,
606			  "Failed to compute the register number corresponding"
607			  " to 0x%s", paddr_d (*addrp));
608	}
609      *realnump = -1;
610      return;
611    }
612
613  /* Obtain the register value by unwinding the register from the next
614     (more inner frame).  */
615  gdb_assert (frame != NULL && frame->next != NULL);
616  frame_register_unwind (frame->next, regnum, optimizedp, lvalp, addrp,
617			 realnump, bufferp);
618}
619
620void
621frame_unwind_register (struct frame_info *frame, int regnum, void *buf)
622{
623  int optimized;
624  CORE_ADDR addr;
625  int realnum;
626  enum lval_type lval;
627  frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
628			 &realnum, buf);
629}
630
631void
632get_frame_register (struct frame_info *frame,
633		    int regnum, void *buf)
634{
635  frame_unwind_register (frame->next, regnum, buf);
636}
637
638LONGEST
639frame_unwind_register_signed (struct frame_info *frame, int regnum)
640{
641  char buf[MAX_REGISTER_SIZE];
642  frame_unwind_register (frame, regnum, buf);
643  return extract_signed_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
644}
645
646LONGEST
647get_frame_register_signed (struct frame_info *frame, int regnum)
648{
649  return frame_unwind_register_signed (frame->next, regnum);
650}
651
652ULONGEST
653frame_unwind_register_unsigned (struct frame_info *frame, int regnum)
654{
655  char buf[MAX_REGISTER_SIZE];
656  frame_unwind_register (frame, regnum, buf);
657  return extract_unsigned_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
658}
659
660ULONGEST
661get_frame_register_unsigned (struct frame_info *frame, int regnum)
662{
663  return frame_unwind_register_unsigned (frame->next, regnum);
664}
665
666void
667frame_unwind_unsigned_register (struct frame_info *frame, int regnum,
668				ULONGEST *val)
669{
670  char buf[MAX_REGISTER_SIZE];
671  frame_unwind_register (frame, regnum, buf);
672  (*val) = extract_unsigned_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
673}
674
675void
676put_frame_register (struct frame_info *frame, int regnum, const void *buf)
677{
678  struct gdbarch *gdbarch = get_frame_arch (frame);
679  int realnum;
680  int optim;
681  enum lval_type lval;
682  CORE_ADDR addr;
683  frame_register (frame, regnum, &optim, &lval, &addr, &realnum, NULL);
684  if (optim)
685    error ("Attempt to assign to a value that was optimized out.");
686  switch (lval)
687    {
688    case lval_memory:
689      {
690	/* FIXME: write_memory doesn't yet take constant buffers.
691           Arrrg!  */
692	char tmp[MAX_REGISTER_SIZE];
693	memcpy (tmp, buf, register_size (gdbarch, regnum));
694	write_memory (addr, tmp, register_size (gdbarch, regnum));
695	break;
696      }
697    case lval_register:
698      regcache_cooked_write (current_regcache, realnum, buf);
699      break;
700    default:
701      error ("Attempt to assign to an unmodifiable value.");
702    }
703}
704
705/* frame_register_read ()
706
707   Find and return the value of REGNUM for the specified stack frame.
708   The number of bytes copied is DEPRECATED_REGISTER_RAW_SIZE
709   (REGNUM).
710
711   Returns 0 if the register value could not be found.  */
712
713int
714frame_register_read (struct frame_info *frame, int regnum, void *myaddr)
715{
716  int optimized;
717  enum lval_type lval;
718  CORE_ADDR addr;
719  int realnum;
720  frame_register (frame, regnum, &optimized, &lval, &addr, &realnum, myaddr);
721
722  /* FIXME: cagney/2002-05-15: This test, is just bogus.
723
724     It indicates that the target failed to supply a value for a
725     register because it was "not available" at this time.  Problem
726     is, the target still has the register and so get saved_register()
727     may be returning a value saved on the stack.  */
728
729  if (register_cached (regnum) < 0)
730    return 0;			/* register value not available */
731
732  return !optimized;
733}
734
735
736/* Map between a frame register number and its name.  A frame register
737   space is a superset of the cooked register space --- it also
738   includes builtin registers.  */
739
740int
741frame_map_name_to_regnum (struct frame_info *frame, const char *name, int len)
742{
743  return user_reg_map_name_to_regnum (get_frame_arch (frame), name, len);
744}
745
746const char *
747frame_map_regnum_to_name (struct frame_info *frame, int regnum)
748{
749  return user_reg_map_regnum_to_name (get_frame_arch (frame), regnum);
750}
751
752/* Create a sentinel frame.  */
753
754static struct frame_info *
755create_sentinel_frame (struct regcache *regcache)
756{
757  struct frame_info *frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
758  frame->type = NORMAL_FRAME;
759  frame->level = -1;
760  /* Explicitly initialize the sentinel frame's cache.  Provide it
761     with the underlying regcache.  In the future additional
762     information, such as the frame's thread will be added.  */
763  frame->prologue_cache = sentinel_frame_cache (regcache);
764  /* For the moment there is only one sentinel frame implementation.  */
765  frame->unwind = sentinel_frame_unwind;
766  /* Link this frame back to itself.  The frame is self referential
767     (the unwound PC is the same as the pc), so make it so.  */
768  frame->next = frame;
769  /* Make the sentinel frame's ID valid, but invalid.  That way all
770     comparisons with it should fail.  */
771  frame->this_id.p = 1;
772  frame->this_id.value = null_frame_id;
773  if (frame_debug)
774    {
775      fprintf_unfiltered (gdb_stdlog, "{ create_sentinel_frame (...) -> ");
776      fprint_frame (gdb_stdlog, frame);
777      fprintf_unfiltered (gdb_stdlog, " }\n");
778    }
779  return frame;
780}
781
782/* Info about the innermost stack frame (contents of FP register) */
783
784static struct frame_info *current_frame;
785
786/* Cache for frame addresses already read by gdb.  Valid only while
787   inferior is stopped.  Control variables for the frame cache should
788   be local to this module.  */
789
790static struct obstack frame_cache_obstack;
791
792void *
793frame_obstack_zalloc (unsigned long size)
794{
795  void *data = obstack_alloc (&frame_cache_obstack, size);
796  memset (data, 0, size);
797  return data;
798}
799
800CORE_ADDR *
801frame_saved_regs_zalloc (struct frame_info *fi)
802{
803  fi->saved_regs = (CORE_ADDR *)
804    frame_obstack_zalloc (SIZEOF_FRAME_SAVED_REGS);
805  return fi->saved_regs;
806}
807
808CORE_ADDR *
809deprecated_get_frame_saved_regs (struct frame_info *fi)
810{
811  return fi->saved_regs;
812}
813
814/* Return the innermost (currently executing) stack frame.  This is
815   split into two functions.  The function unwind_to_current_frame()
816   is wrapped in catch exceptions so that, even when the unwind of the
817   sentinel frame fails, the function still returns a stack frame.  */
818
819static int
820unwind_to_current_frame (struct ui_out *ui_out, void *args)
821{
822  struct frame_info *frame = get_prev_frame (args);
823  /* A sentinel frame can fail to unwind, eg, because it's PC value
824     lands in somewhere like start.  */
825  if (frame == NULL)
826    return 1;
827  current_frame = frame;
828  return 0;
829}
830
831struct frame_info *
832get_current_frame (void)
833{
834  /* First check, and report, the lack of registers.  Having GDB
835     report "No stack!" or "No memory" when the target doesn't even
836     have registers is very confusing.  Besides, "printcmd.exp"
837     explicitly checks that ``print $pc'' with no registers prints "No
838     registers".  */
839  if (!target_has_registers)
840    error ("No registers.");
841  if (!target_has_stack)
842    error ("No stack.");
843  if (!target_has_memory)
844    error ("No memory.");
845  if (current_frame == NULL)
846    {
847      struct frame_info *sentinel_frame =
848	create_sentinel_frame (current_regcache);
849      if (catch_exceptions (uiout, unwind_to_current_frame, sentinel_frame,
850			    NULL, RETURN_MASK_ERROR) != 0)
851	{
852	  /* Oops! Fake a current frame?  Is this useful?  It has a PC
853             of zero, for instance.  */
854	  current_frame = sentinel_frame;
855	}
856    }
857  return current_frame;
858}
859
860/* The "selected" stack frame is used by default for local and arg
861   access.  May be zero, for no selected frame.  */
862
863struct frame_info *deprecated_selected_frame;
864
865/* Return the selected frame.  Always non-null (unless there isn't an
866   inferior sufficient for creating a frame) in which case an error is
867   thrown.  */
868
869struct frame_info *
870get_selected_frame (void)
871{
872  if (deprecated_selected_frame == NULL)
873    /* Hey!  Don't trust this.  It should really be re-finding the
874       last selected frame of the currently selected thread.  This,
875       though, is better than nothing.  */
876    select_frame (get_current_frame ());
877  /* There is always a frame.  */
878  gdb_assert (deprecated_selected_frame != NULL);
879  return deprecated_selected_frame;
880}
881
882/* This is a variant of get_selected_frame which can be called when
883   the inferior does not have a frame; in that case it will return
884   NULL instead of calling error ().  */
885
886struct frame_info *
887deprecated_safe_get_selected_frame (void)
888{
889  if (!target_has_registers || !target_has_stack || !target_has_memory)
890    return NULL;
891  return get_selected_frame ();
892}
893
894/* Select frame FI (or NULL - to invalidate the current frame).  */
895
896void
897select_frame (struct frame_info *fi)
898{
899  struct symtab *s;
900
901  deprecated_selected_frame = fi;
902  /* NOTE: cagney/2002-05-04: FI can be NULL.  This occures when the
903     frame is being invalidated.  */
904  if (selected_frame_level_changed_hook)
905    selected_frame_level_changed_hook (frame_relative_level (fi));
906
907  /* FIXME: kseitz/2002-08-28: It would be nice to call
908     selected_frame_level_changed_event right here, but due to limitations
909     in the current interfaces, we would end up flooding UIs with events
910     because select_frame is used extensively internally.
911
912     Once we have frame-parameterized frame (and frame-related) commands,
913     the event notification can be moved here, since this function will only
914     be called when the users selected frame is being changed. */
915
916  /* Ensure that symbols for this frame are read in.  Also, determine the
917     source language of this frame, and switch to it if desired.  */
918  if (fi)
919    {
920      /* We retrieve the frame's symtab by using the frame PC.  However
921         we cannot use the frame pc as is, because it usually points to
922         the instruction following the "call", which is sometimes the
923         first instruction of another function.  So we rely on
924         get_frame_address_in_block() which provides us with a PC which
925         is guaranteed to be inside the frame's code block.  */
926      s = find_pc_symtab (get_frame_address_in_block (fi));
927      if (s
928	  && s->language != current_language->la_language
929	  && s->language != language_unknown
930	  && language_mode == language_mode_auto)
931	{
932	  set_language (s->language);
933	}
934    }
935}
936
937/* Return the register saved in the simplistic ``saved_regs'' cache.
938   If the value isn't here AND a value is needed, try the next inner
939   most frame.  */
940
941static void
942legacy_saved_regs_prev_register (struct frame_info *next_frame,
943				 void **this_prologue_cache,
944				 int regnum, int *optimizedp,
945				 enum lval_type *lvalp, CORE_ADDR *addrp,
946				 int *realnump, void *bufferp)
947{
948  /* HACK: New code is passed the next frame and this cache.
949     Unfortunately, old code expects this frame.  Since this is a
950     backward compatibility hack, cheat by walking one level along the
951     prologue chain to the frame the old code expects.
952
953     Do not try this at home.  Professional driver, closed course.  */
954  struct frame_info *frame = next_frame->prev;
955  gdb_assert (frame != NULL);
956
957  if (deprecated_get_frame_saved_regs (frame) == NULL)
958    {
959      /* If nothing's initialized the saved regs, do it now.  */
960      gdb_assert (DEPRECATED_FRAME_INIT_SAVED_REGS_P ());
961      DEPRECATED_FRAME_INIT_SAVED_REGS (frame);
962      gdb_assert (deprecated_get_frame_saved_regs (frame) != NULL);
963    }
964
965  if (deprecated_get_frame_saved_regs (frame) != NULL
966      && deprecated_get_frame_saved_regs (frame)[regnum] != 0)
967    {
968      if (regnum == SP_REGNUM)
969	{
970	  /* SP register treated specially.  */
971	  *optimizedp = 0;
972	  *lvalp = not_lval;
973	  *addrp = 0;
974	  *realnump = -1;
975	  if (bufferp != NULL)
976	    /* NOTE: cagney/2003-05-09: In-lined store_address with
977               it's body - store_unsigned_integer.  */
978	    store_unsigned_integer (bufferp, DEPRECATED_REGISTER_RAW_SIZE (regnum),
979				    deprecated_get_frame_saved_regs (frame)[regnum]);
980	}
981      else
982	{
983	  /* Any other register is saved in memory, fetch it but cache
984             a local copy of its value.  */
985	  *optimizedp = 0;
986	  *lvalp = lval_memory;
987	  *addrp = deprecated_get_frame_saved_regs (frame)[regnum];
988	  *realnump = -1;
989	  if (bufferp != NULL)
990	    {
991#if 1
992	      /* Save each register value, as it is read in, in a
993                 frame based cache.  */
994	      void **regs = (*this_prologue_cache);
995	      if (regs == NULL)
996		{
997		  int sizeof_cache = ((NUM_REGS + NUM_PSEUDO_REGS)
998				      * sizeof (void *));
999		  regs = frame_obstack_zalloc (sizeof_cache);
1000		  (*this_prologue_cache) = regs;
1001		}
1002	      if (regs[regnum] == NULL)
1003		{
1004		  regs[regnum]
1005		    = frame_obstack_zalloc (DEPRECATED_REGISTER_RAW_SIZE (regnum));
1006		  read_memory (deprecated_get_frame_saved_regs (frame)[regnum], regs[regnum],
1007			       DEPRECATED_REGISTER_RAW_SIZE (regnum));
1008		}
1009	      memcpy (bufferp, regs[regnum], DEPRECATED_REGISTER_RAW_SIZE (regnum));
1010#else
1011	      /* Read the value in from memory.  */
1012	      read_memory (deprecated_get_frame_saved_regs (frame)[regnum], bufferp,
1013			   DEPRECATED_REGISTER_RAW_SIZE (regnum));
1014#endif
1015	    }
1016	}
1017      return;
1018    }
1019
1020  /* No luck.  Assume this and the next frame have the same register
1021     value.  Pass the unwind request down the frame chain to the next
1022     frame.  Hopefully that frame will find the register's location.  */
1023  frame_register_unwind (next_frame, regnum, optimizedp, lvalp, addrp,
1024			 realnump, bufferp);
1025}
1026
1027static void
1028legacy_saved_regs_this_id (struct frame_info *next_frame,
1029			   void **this_prologue_cache,
1030			   struct frame_id *id)
1031{
1032  /* A developer is trying to bring up a new architecture, help them
1033     by providing a default unwinder that refuses to unwind anything
1034     (the ID is always NULL).  In the case of legacy code,
1035     legacy_get_prev_frame() will have previously set ->this_id.p, so
1036     this code won't be called.  */
1037  (*id) = null_frame_id;
1038}
1039
1040const struct frame_unwind legacy_saved_regs_unwinder = {
1041  /* Not really.  It gets overridden by legacy_get_prev_frame.  */
1042  UNKNOWN_FRAME,
1043  legacy_saved_regs_this_id,
1044  legacy_saved_regs_prev_register
1045};
1046const struct frame_unwind *legacy_saved_regs_unwind = &legacy_saved_regs_unwinder;
1047
1048
1049/* Function: deprecated_generic_get_saved_register
1050   Find register number REGNUM relative to FRAME and put its (raw,
1051   target format) contents in *RAW_BUFFER.
1052
1053   Set *OPTIMIZED if the variable was optimized out (and thus can't be
1054   fetched).  Note that this is never set to anything other than zero
1055   in this implementation.
1056
1057   Set *LVAL to lval_memory, lval_register, or not_lval, depending on
1058   whether the value was fetched from memory, from a register, or in a
1059   strange and non-modifiable way (e.g. a frame pointer which was
1060   calculated rather than fetched).  We will use not_lval for values
1061   fetched from generic dummy frames.
1062
1063   Set *ADDRP to the address, either in memory or as a
1064   DEPRECATED_REGISTER_BYTE offset into the registers array.  If the
1065   value is stored in a dummy frame, set *ADDRP to zero.
1066
1067   The argument RAW_BUFFER must point to aligned memory.  */
1068
1069void
1070deprecated_generic_get_saved_register (char *raw_buffer, int *optimized,
1071				       CORE_ADDR *addrp,
1072				       struct frame_info *frame, int regnum,
1073				       enum lval_type *lval)
1074{
1075  if (!target_has_registers)
1076    error ("No registers.");
1077
1078  /* Normal systems don't optimize out things with register numbers.  */
1079  if (optimized != NULL)
1080    *optimized = 0;
1081
1082  if (addrp)			/* default assumption: not found in memory */
1083    *addrp = 0;
1084
1085  /* Note: since the current frame's registers could only have been
1086     saved by frames INTERIOR TO the current frame, we skip examining
1087     the current frame itself: otherwise, we would be getting the
1088     previous frame's registers which were saved by the current frame.  */
1089
1090  if (frame != NULL)
1091    {
1092      for (frame = get_next_frame (frame);
1093	   frame_relative_level (frame) >= 0;
1094	   frame = get_next_frame (frame))
1095	{
1096	  if (get_frame_type (frame) == DUMMY_FRAME)
1097	    {
1098	      if (lval)		/* found it in a CALL_DUMMY frame */
1099		*lval = not_lval;
1100	      if (raw_buffer)
1101		/* FIXME: cagney/2002-06-26: This should be via the
1102		   gdbarch_register_read() method so that it, on the
1103		   fly, constructs either a raw or pseudo register
1104		   from the raw register cache.  */
1105		regcache_raw_read
1106		  (deprecated_find_dummy_frame_regcache (get_frame_pc (frame),
1107							 get_frame_base (frame)),
1108		   regnum, raw_buffer);
1109	      return;
1110	    }
1111
1112	  DEPRECATED_FRAME_INIT_SAVED_REGS (frame);
1113	  if (deprecated_get_frame_saved_regs (frame) != NULL
1114	      && deprecated_get_frame_saved_regs (frame)[regnum] != 0)
1115	    {
1116	      if (lval)		/* found it saved on the stack */
1117		*lval = lval_memory;
1118	      if (regnum == SP_REGNUM)
1119		{
1120		  if (raw_buffer)	/* SP register treated specially */
1121		    /* NOTE: cagney/2003-05-09: In-line store_address
1122                       with it's body - store_unsigned_integer.  */
1123		    store_unsigned_integer (raw_buffer,
1124					    DEPRECATED_REGISTER_RAW_SIZE (regnum),
1125					    deprecated_get_frame_saved_regs (frame)[regnum]);
1126		}
1127	      else
1128		{
1129		  if (addrp)	/* any other register */
1130		    *addrp = deprecated_get_frame_saved_regs (frame)[regnum];
1131		  if (raw_buffer)
1132		    read_memory (deprecated_get_frame_saved_regs (frame)[regnum], raw_buffer,
1133				 DEPRECATED_REGISTER_RAW_SIZE (regnum));
1134		}
1135	      return;
1136	    }
1137	}
1138    }
1139
1140  /* If we get thru the loop to this point, it means the register was
1141     not saved in any frame.  Return the actual live-register value.  */
1142
1143  if (lval)			/* found it in a live register */
1144    *lval = lval_register;
1145  if (addrp)
1146    *addrp = DEPRECATED_REGISTER_BYTE (regnum);
1147  if (raw_buffer)
1148    deprecated_read_register_gen (regnum, raw_buffer);
1149}
1150
1151/* Determine the frame's type based on its PC.  */
1152
1153static enum frame_type
1154frame_type_from_pc (CORE_ADDR pc)
1155{
1156  /* FIXME: cagney/2002-11-24: Can't yet directly call
1157     pc_in_dummy_frame() as some architectures don't set
1158     PC_IN_CALL_DUMMY() to generic_pc_in_call_dummy() (remember the
1159     latter is implemented by simply calling pc_in_dummy_frame).  */
1160  if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
1161      && DEPRECATED_PC_IN_CALL_DUMMY (pc, 0, 0))
1162    return DUMMY_FRAME;
1163  else
1164    {
1165      char *name;
1166      find_pc_partial_function (pc, &name, NULL, NULL);
1167      if (PC_IN_SIGTRAMP (pc, name))
1168	return SIGTRAMP_FRAME;
1169      else
1170	return NORMAL_FRAME;
1171    }
1172}
1173
1174/* Create an arbitrary (i.e. address specified by user) or innermost frame.
1175   Always returns a non-NULL value.  */
1176
1177struct frame_info *
1178create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
1179{
1180  struct frame_info *fi;
1181
1182  if (frame_debug)
1183    {
1184      fprintf_unfiltered (gdb_stdlog,
1185			  "{ create_new_frame (addr=0x%s, pc=0x%s) ",
1186			  paddr_nz (addr), paddr_nz (pc));
1187    }
1188
1189  fi = frame_obstack_zalloc (sizeof (struct frame_info));
1190
1191  fi->next = create_sentinel_frame (current_regcache);
1192
1193  /* Select/initialize both the unwind function and the frame's type
1194     based on the PC.  */
1195  fi->unwind = frame_unwind_find_by_frame (fi->next);
1196  if (fi->unwind->type != UNKNOWN_FRAME)
1197    fi->type = fi->unwind->type;
1198  else
1199    fi->type = frame_type_from_pc (pc);
1200
1201  fi->this_id.p = 1;
1202  deprecated_update_frame_base_hack (fi, addr);
1203  deprecated_update_frame_pc_hack (fi, pc);
1204
1205  if (DEPRECATED_INIT_EXTRA_FRAME_INFO_P ())
1206    DEPRECATED_INIT_EXTRA_FRAME_INFO (0, fi);
1207
1208  if (frame_debug)
1209    {
1210      fprintf_unfiltered (gdb_stdlog, "-> ");
1211      fprint_frame (gdb_stdlog, fi);
1212      fprintf_unfiltered (gdb_stdlog, " }\n");
1213    }
1214
1215  return fi;
1216}
1217
1218/* Return the frame that THIS_FRAME calls (NULL if THIS_FRAME is the
1219   innermost frame).  Be careful to not fall off the bottom of the
1220   frame chain and onto the sentinel frame.  */
1221
1222struct frame_info *
1223get_next_frame (struct frame_info *this_frame)
1224{
1225  if (this_frame->level > 0)
1226    return this_frame->next;
1227  else
1228    return NULL;
1229}
1230
1231/* Flush the entire frame cache.  */
1232
1233void
1234flush_cached_frames (void)
1235{
1236  /* Since we can't really be sure what the first object allocated was */
1237  obstack_free (&frame_cache_obstack, 0);
1238  obstack_init (&frame_cache_obstack);
1239
1240  current_frame = NULL;		/* Invalidate cache */
1241  select_frame (NULL);
1242  annotate_frames_invalid ();
1243  if (frame_debug)
1244    fprintf_unfiltered (gdb_stdlog, "{ flush_cached_frames () }\n");
1245}
1246
1247/* Flush the frame cache, and start a new one if necessary.  */
1248
1249void
1250reinit_frame_cache (void)
1251{
1252  flush_cached_frames ();
1253
1254  /* FIXME: The inferior_ptid test is wrong if there is a corefile.  */
1255  if (PIDGET (inferior_ptid) != 0)
1256    {
1257      select_frame (get_current_frame ());
1258    }
1259}
1260
1261/* Create the previous frame using the deprecated methods
1262   INIT_EXTRA_INFO, INIT_FRAME_PC and INIT_FRAME_PC_FIRST.  */
1263
1264static struct frame_info *
1265legacy_get_prev_frame (struct frame_info *this_frame)
1266{
1267  CORE_ADDR address = 0;
1268  struct frame_info *prev;
1269  int fromleaf;
1270
1271  /* Don't frame_debug print legacy_get_prev_frame() here, just
1272     confuses the output.  */
1273
1274  /* Allocate the new frame.
1275
1276     There is no reason to worry about memory leaks, should the
1277     remainder of the function fail.  The allocated memory will be
1278     quickly reclaimed when the frame cache is flushed, and the `we've
1279     been here before' check, in get_prev_frame will stop repeated
1280     memory allocation calls.  */
1281  prev = FRAME_OBSTACK_ZALLOC (struct frame_info);
1282  prev->level = this_frame->level + 1;
1283
1284  /* Do not completely wire it in to the frame chain.  Some (bad) code
1285     in INIT_FRAME_EXTRA_INFO tries to look along frame->prev to pull
1286     some fancy tricks (of course such code is, by definition,
1287     recursive).
1288
1289     On the other hand, methods, such as get_frame_pc() and
1290     get_frame_base() rely on being able to walk along the frame
1291     chain.  Make certain that at least they work by providing that
1292     link.  Of course things manipulating prev can't go back.  */
1293  prev->next = this_frame;
1294
1295  /* NOTE: cagney/2002-11-18: Should have been correctly setting the
1296     frame's type here, before anything else, and not last, at the
1297     bottom of this function.  The various
1298     DEPRECATED_INIT_EXTRA_FRAME_INFO, DEPRECATED_INIT_FRAME_PC,
1299     DEPRECATED_INIT_FRAME_PC_FIRST and
1300     DEPRECATED_FRAME_INIT_SAVED_REGS methods are full of work-arounds
1301     that handle the frame not being correctly set from the start.
1302     Unfortunately those same work-arounds rely on the type defaulting
1303     to NORMAL_FRAME.  Ulgh!  The new frame code does not have this
1304     problem.  */
1305  prev->type = UNKNOWN_FRAME;
1306
1307  /* A legacy frame's ID is always computed here.  Mark it as valid.  */
1308  prev->this_id.p = 1;
1309
1310  /* Handle sentinel frame unwind as a special case.  */
1311  if (this_frame->level < 0)
1312    {
1313      /* Try to unwind the PC.  If that doesn't work, assume we've reached
1314	 the oldest frame and simply return.  Is there a better sentinal
1315	 value?  The unwound PC value is then used to initialize the new
1316	 previous frame's type.
1317
1318	 Note that the pc-unwind is intentionally performed before the
1319	 frame chain.  This is ok since, for old targets, both
1320	 frame_pc_unwind (nee, DEPRECATED_FRAME_SAVED_PC) and
1321	 DEPRECATED_FRAME_CHAIN()) assume THIS_FRAME's data structures
1322	 have already been initialized (using
1323	 DEPRECATED_INIT_EXTRA_FRAME_INFO) and hence the call order
1324	 doesn't matter.
1325
1326	 By unwinding the PC first, it becomes possible to, in the case of
1327	 a dummy frame, avoid also unwinding the frame ID.  This is
1328	 because (well ignoring the PPC) a dummy frame can be located
1329	 using THIS_FRAME's frame ID.  */
1330
1331      deprecated_update_frame_pc_hack (prev, frame_pc_unwind (this_frame));
1332      if (get_frame_pc (prev) == 0)
1333	{
1334	  /* The allocated PREV_FRAME will be reclaimed when the frame
1335	     obstack is next purged.  */
1336	  if (frame_debug)
1337	    {
1338	      fprintf_unfiltered (gdb_stdlog, "-> ");
1339	      fprint_frame (gdb_stdlog, NULL);
1340	      fprintf_unfiltered (gdb_stdlog,
1341				  " // unwound legacy PC zero }\n");
1342	    }
1343	  return NULL;
1344	}
1345
1346      /* Set the unwind functions based on that identified PC.  Ditto
1347         for the "type" but strongly prefer the unwinder's frame type.  */
1348      prev->unwind = frame_unwind_find_by_frame (prev->next);
1349      if (prev->unwind->type == UNKNOWN_FRAME)
1350	prev->type = frame_type_from_pc (get_frame_pc (prev));
1351      else
1352	prev->type = prev->unwind->type;
1353
1354      /* Find the prev's frame's ID.  */
1355      if (prev->type == DUMMY_FRAME
1356	  && gdbarch_unwind_dummy_id_p (current_gdbarch))
1357	{
1358	  /* When unwinding a normal frame, the stack structure is
1359	     determined by analyzing the frame's function's code (be
1360	     it using brute force prologue analysis, or the dwarf2
1361	     CFI).  In the case of a dummy frame, that simply isn't
1362	     possible.  The The PC is either the program entry point,
1363	     or some random address on the stack.  Trying to use that
1364	     PC to apply standard frame ID unwind techniques is just
1365	     asking for trouble.  */
1366	  /* Use an architecture specific method to extract the prev's
1367	     dummy ID from the next frame.  Note that this method uses
1368	     frame_register_unwind to obtain the register values
1369	     needed to determine the dummy frame's ID.  */
1370	  prev->this_id.value = gdbarch_unwind_dummy_id (current_gdbarch,
1371							 this_frame);
1372	}
1373      else
1374	{
1375	  /* We're unwinding a sentinel frame, the PC of which is
1376	     pointing at a stack dummy.  Fake up the dummy frame's ID
1377	     using the same sequence as is found a traditional
1378	     unwinder.  Once all architectures supply the
1379	     unwind_dummy_id method, this code can go away.  */
1380	  prev->this_id.value = frame_id_build (deprecated_read_fp (),
1381						read_pc ());
1382	}
1383
1384      /* Check that the unwound ID is valid.  */
1385      if (!frame_id_p (prev->this_id.value))
1386	{
1387	  if (frame_debug)
1388	    {
1389	      fprintf_unfiltered (gdb_stdlog, "-> ");
1390	      fprint_frame (gdb_stdlog, NULL);
1391	      fprintf_unfiltered (gdb_stdlog,
1392				  " // unwound legacy ID invalid }\n");
1393	    }
1394	  return NULL;
1395	}
1396
1397      /* Check that the new frame isn't inner to (younger, below,
1398	 next) the old frame.  If that happens the frame unwind is
1399	 going backwards.  */
1400      /* FIXME: cagney/2003-02-25: Ignore the sentinel frame since
1401	 that doesn't have a valid frame ID.  Should instead set the
1402	 sentinel frame's frame ID to a `sentinel'.  Leave it until
1403	 after the switch to storing the frame ID, instead of the
1404	 frame base, in the frame object.  */
1405
1406      /* Link it in.  */
1407      this_frame->prev = prev;
1408
1409      /* FIXME: cagney/2002-01-19: This call will go away.  Instead of
1410	 initializing extra info, all frames will use the frame_cache
1411	 (passed to the unwind functions) to store additional frame
1412	 info.  Unfortunately legacy targets can't use
1413	 legacy_get_prev_frame() to unwind the sentinel frame and,
1414	 consequently, are forced to take this code path and rely on
1415	 the below call to DEPRECATED_INIT_EXTRA_FRAME_INFO to
1416	 initialize the inner-most frame.  */
1417      if (DEPRECATED_INIT_EXTRA_FRAME_INFO_P ())
1418	{
1419	  DEPRECATED_INIT_EXTRA_FRAME_INFO (0, prev);
1420	}
1421
1422      if (prev->type == NORMAL_FRAME)
1423	prev->this_id.value.code_addr
1424	  = get_pc_function_start (prev->this_id.value.code_addr);
1425
1426      if (frame_debug)
1427	{
1428	  fprintf_unfiltered (gdb_stdlog, "-> ");
1429	  fprint_frame (gdb_stdlog, prev);
1430	  fprintf_unfiltered (gdb_stdlog, " } // legacy innermost frame\n");
1431	}
1432      return prev;
1433    }
1434
1435  /* This code only works on normal frames.  A sentinel frame, where
1436     the level is -1, should never reach this code.  */
1437  gdb_assert (this_frame->level >= 0);
1438
1439  /* On some machines it is possible to call a function without
1440     setting up a stack frame for it.  On these machines, we
1441     define this macro to take two args; a frameinfo pointer
1442     identifying a frame and a variable to set or clear if it is
1443     or isn't leafless.  */
1444
1445  /* Still don't want to worry about this except on the innermost
1446     frame.  This macro will set FROMLEAF if THIS_FRAME is a frameless
1447     function invocation.  */
1448  if (this_frame->level == 0)
1449    /* FIXME: 2002-11-09: Frameless functions can occure anywhere in
1450       the frame chain, not just the inner most frame!  The generic,
1451       per-architecture, frame code should handle this and the below
1452       should simply be removed.  */
1453    fromleaf = (DEPRECATED_FRAMELESS_FUNCTION_INVOCATION_P ()
1454		&& DEPRECATED_FRAMELESS_FUNCTION_INVOCATION (this_frame));
1455  else
1456    fromleaf = 0;
1457
1458  if (fromleaf)
1459    /* A frameless inner-most frame.  The `FP' (which isn't an
1460       architecture frame-pointer register!) of the caller is the same
1461       as the callee.  */
1462    /* FIXME: 2002-11-09: There isn't any reason to special case this
1463       edge condition.  Instead the per-architecture code should hande
1464       it locally.  */
1465    /* FIXME: cagney/2003-06-16: This returns the inner most stack
1466       address for the previous frame, that, however, is wrong.  It
1467       should be the inner most stack address for the previous to
1468       previous frame.  This is because it is the previous to previous
1469       frame's innermost stack address that is constant through out
1470       the lifetime of the previous frame (trust me :-).  */
1471    address = get_frame_base (this_frame);
1472  else
1473    {
1474      /* Two macros defined in tm.h specify the machine-dependent
1475         actions to be performed here.
1476
1477         First, get the frame's chain-pointer.
1478
1479         If that is zero, the frame is the outermost frame or a leaf
1480         called by the outermost frame.  This means that if start
1481         calls main without a frame, we'll return 0 (which is fine
1482         anyway).
1483
1484         Nope; there's a problem.  This also returns when the current
1485         routine is a leaf of main.  This is unacceptable.  We move
1486         this to after the ffi test; I'd rather have backtraces from
1487         start go curfluy than have an abort called from main not show
1488         main.  */
1489      if (DEPRECATED_FRAME_CHAIN_P ())
1490	address = DEPRECATED_FRAME_CHAIN (this_frame);
1491      else
1492	{
1493	  /* Someone is part way through coverting an old architecture
1494             to the new frame code.  Implement FRAME_CHAIN the way the
1495             new frame will.  */
1496	  /* Find PREV frame's unwinder.  */
1497	  prev->unwind = frame_unwind_find_by_frame (this_frame->next);
1498	  /* FIXME: cagney/2003-04-02: Rather than storing the frame's
1499	     type in the frame, the unwinder's type should be returned
1500	     directly.  Unfortunately, legacy code, called by
1501	     legacy_get_prev_frame, explicitly set the frames type
1502	     using the method deprecated_set_frame_type().  */
1503	  prev->type = prev->unwind->type;
1504	  /* Find PREV frame's ID.  */
1505	  prev->unwind->this_id (this_frame,
1506				 &prev->prologue_cache,
1507				 &prev->this_id.value);
1508	  prev->this_id.p = 1;
1509	  address = prev->this_id.value.stack_addr;
1510	}
1511
1512      if (!legacy_frame_chain_valid (address, this_frame))
1513	{
1514	  if (frame_debug)
1515	    {
1516	      fprintf_unfiltered (gdb_stdlog, "-> ");
1517	      fprint_frame (gdb_stdlog, NULL);
1518	      fprintf_unfiltered (gdb_stdlog,
1519				  " // legacy frame chain invalid }\n");
1520	    }
1521	  return NULL;
1522	}
1523    }
1524  if (address == 0)
1525    {
1526      if (frame_debug)
1527	{
1528	  fprintf_unfiltered (gdb_stdlog, "-> ");
1529	  fprint_frame (gdb_stdlog, NULL);
1530	  fprintf_unfiltered (gdb_stdlog,
1531			      " // legacy frame chain NULL }\n");
1532	}
1533      return NULL;
1534    }
1535
1536  /* Link in the already allocated prev frame.  */
1537  this_frame->prev = prev;
1538  deprecated_update_frame_base_hack (prev, address);
1539
1540  /* This change should not be needed, FIXME!  We should determine
1541     whether any targets *need* DEPRECATED_INIT_FRAME_PC to happen
1542     after DEPRECATED_INIT_EXTRA_FRAME_INFO and come up with a simple
1543     way to express what goes on here.
1544
1545     DEPRECATED_INIT_EXTRA_FRAME_INFO is called from two places:
1546     create_new_frame (where the PC is already set up) and here (where
1547     it isn't).  DEPRECATED_INIT_FRAME_PC is only called from here,
1548     always after DEPRECATED_INIT_EXTRA_FRAME_INFO.
1549
1550     The catch is the MIPS, where DEPRECATED_INIT_EXTRA_FRAME_INFO
1551     requires the PC value (which hasn't been set yet).  Some other
1552     machines appear to require DEPRECATED_INIT_EXTRA_FRAME_INFO
1553     before they can do DEPRECATED_INIT_FRAME_PC.  Phoo.
1554
1555     We shouldn't need DEPRECATED_INIT_FRAME_PC_FIRST to add more
1556     complication to an already overcomplicated part of GDB.
1557     gnu@cygnus.com, 15Sep92.
1558
1559     Assuming that some machines need DEPRECATED_INIT_FRAME_PC after
1560     DEPRECATED_INIT_EXTRA_FRAME_INFO, one possible scheme:
1561
1562     SETUP_INNERMOST_FRAME(): Default version is just create_new_frame
1563     (deprecated_read_fp ()), read_pc ()).  Machines with extra frame
1564     info would do that (or the local equivalent) and then set the
1565     extra fields.
1566
1567     SETUP_ARBITRARY_FRAME(argc, argv): Only change here is that
1568     create_new_frame would no longer init extra frame info;
1569     SETUP_ARBITRARY_FRAME would have to do that.
1570
1571     INIT_PREV_FRAME(fromleaf, prev) Replace
1572     DEPRECATED_INIT_EXTRA_FRAME_INFO and DEPRECATED_INIT_FRAME_PC.
1573     This should also return a flag saying whether to keep the new
1574     frame, or whether to discard it, because on some machines (e.g.
1575     mips) it is really awkward to have DEPRECATED_FRAME_CHAIN_VALID
1576     called BEFORE DEPRECATED_INIT_EXTRA_FRAME_INFO (there is no good
1577     way to get information deduced in DEPRECATED_FRAME_CHAIN_VALID
1578     into the extra fields of the new frame).  std_frame_pc(fromleaf,
1579     prev)
1580
1581     This is the default setting for INIT_PREV_FRAME.  It just does
1582     what the default DEPRECATED_INIT_FRAME_PC does.  Some machines
1583     will call it from INIT_PREV_FRAME (either at the beginning, the
1584     end, or in the middle).  Some machines won't use it.
1585
1586     kingdon@cygnus.com, 13Apr93, 31Jan94, 14Dec94.  */
1587
1588  /* NOTE: cagney/2002-11-09: Just ignore the above!  There is no
1589     reason for things to be this complicated.
1590
1591     The trick is to assume that there is always a frame.  Instead of
1592     special casing the inner-most frame, create fake frame
1593     (containing the hardware registers) that is inner to the
1594     user-visible inner-most frame (...) and then unwind from that.
1595     That way architecture code can use use the standard
1596     frame_XX_unwind() functions and not differentiate between the
1597     inner most and any other case.
1598
1599     Since there is always a frame to unwind from, there is always
1600     somewhere (THIS_FRAME) to store all the info needed to construct
1601     a new (previous) frame without having to first create it.  This
1602     means that the convolution below - needing to carefully order a
1603     frame's initialization - isn't needed.
1604
1605     The irony here though, is that DEPRECATED_FRAME_CHAIN(), at least
1606     for a more up-to-date architecture, always calls
1607     FRAME_SAVED_PC(), and FRAME_SAVED_PC() computes the PC but
1608     without first needing the frame!  Instead of the convolution
1609     below, we could have simply called FRAME_SAVED_PC() and been done
1610     with it!  Note that FRAME_SAVED_PC() is being superseed by
1611     frame_pc_unwind() and that function does have somewhere to cache
1612     that PC value.  */
1613
1614  if (DEPRECATED_INIT_FRAME_PC_FIRST_P ())
1615    deprecated_update_frame_pc_hack (prev,
1616				     DEPRECATED_INIT_FRAME_PC_FIRST (fromleaf,
1617								     prev));
1618
1619  if (DEPRECATED_INIT_EXTRA_FRAME_INFO_P ())
1620    DEPRECATED_INIT_EXTRA_FRAME_INFO (fromleaf, prev);
1621
1622  /* This entry is in the frame queue now, which is good since
1623     FRAME_SAVED_PC may use that queue to figure out its value (see
1624     tm-sparc.h).  We want the pc saved in the inferior frame. */
1625  if (DEPRECATED_INIT_FRAME_PC_P ())
1626    deprecated_update_frame_pc_hack (prev,
1627				     DEPRECATED_INIT_FRAME_PC (fromleaf,
1628							       prev));
1629
1630  /* If ->frame and ->pc are unchanged, we are in the process of
1631     getting ourselves into an infinite backtrace.  Some architectures
1632     check this in DEPRECATED_FRAME_CHAIN or thereabouts, but it seems
1633     like there is no reason this can't be an architecture-independent
1634     check.  */
1635  if (get_frame_base (prev) == get_frame_base (this_frame)
1636      && get_frame_pc (prev) == get_frame_pc (this_frame))
1637    {
1638      this_frame->prev = NULL;
1639      obstack_free (&frame_cache_obstack, prev);
1640      if (frame_debug)
1641	{
1642	  fprintf_unfiltered (gdb_stdlog, "-> ");
1643	  fprint_frame (gdb_stdlog, NULL);
1644	  fprintf_unfiltered (gdb_stdlog,
1645			      " // legacy this.id == prev.id }\n");
1646	}
1647      return NULL;
1648    }
1649
1650  /* Initialize the code used to unwind the frame PREV based on the PC
1651     (and probably other architectural information).  The PC lets you
1652     check things like the debug info at that point (dwarf2cfi?) and
1653     use that to decide how the frame should be unwound.
1654
1655     If there isn't a FRAME_CHAIN, the code above will have already
1656     done this.  */
1657  if (prev->unwind == NULL)
1658    prev->unwind = frame_unwind_find_by_frame (prev->next);
1659
1660  /* If the unwinder provides a frame type, use it.  Otherwize
1661     continue on to that heuristic mess.  */
1662  if (prev->unwind->type != UNKNOWN_FRAME)
1663    {
1664      prev->type = prev->unwind->type;
1665      if (prev->type == NORMAL_FRAME)
1666	/* FIXME: cagney/2003-06-16: would get_frame_pc() be better?  */
1667	prev->this_id.value.code_addr
1668	  = get_pc_function_start (prev->this_id.value.code_addr);
1669      if (frame_debug)
1670	{
1671	  fprintf_unfiltered (gdb_stdlog, "-> ");
1672	  fprint_frame (gdb_stdlog, prev);
1673	  fprintf_unfiltered (gdb_stdlog, " } // legacy with unwound type\n");
1674	}
1675      return prev;
1676    }
1677
1678  /* NOTE: cagney/2002-11-18: The code segments, found in
1679     create_new_frame and get_prev_frame(), that initializes the
1680     frames type is subtly different.  The latter only updates ->type
1681     when it encounters a SIGTRAMP_FRAME or DUMMY_FRAME.  This stops
1682     get_prev_frame() overriding the frame's type when the INIT code
1683     has previously set it.  This is really somewhat bogus.  The
1684     initialization, as seen in create_new_frame(), should occur
1685     before the INIT function has been called.  */
1686  if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
1687      && (DEPRECATED_PC_IN_CALL_DUMMY_P ()
1688	  ? DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (prev), 0, 0)
1689	  : pc_in_dummy_frame (get_frame_pc (prev))))
1690    prev->type = DUMMY_FRAME;
1691  else
1692    {
1693      /* FIXME: cagney/2002-11-10: This should be moved to before the
1694	 INIT code above so that the INIT code knows what the frame's
1695	 type is (in fact, for a [generic] dummy-frame, the type can
1696	 be set and then the entire initialization can be skipped.
1697	 Unforunatly, its the INIT code that sets the PC (Hmm, catch
1698	 22).  */
1699      char *name;
1700      find_pc_partial_function (get_frame_pc (prev), &name, NULL, NULL);
1701      if (PC_IN_SIGTRAMP (get_frame_pc (prev), name))
1702	prev->type = SIGTRAMP_FRAME;
1703      /* FIXME: cagney/2002-11-11: Leave prev->type alone.  Some
1704         architectures are forcing the frame's type in INIT so we
1705         don't want to override it here.  Remember, NORMAL_FRAME == 0,
1706         so it all works (just :-/).  Once this initialization is
1707         moved to the start of this function, all this nastness will
1708         go away.  */
1709    }
1710
1711  if (prev->type == NORMAL_FRAME)
1712    prev->this_id.value.code_addr
1713      = get_pc_function_start (prev->this_id.value.code_addr);
1714
1715  if (frame_debug)
1716    {
1717      fprintf_unfiltered (gdb_stdlog, "-> ");
1718      fprint_frame (gdb_stdlog, prev);
1719      fprintf_unfiltered (gdb_stdlog, " } // legacy with confused type\n");
1720    }
1721
1722  return prev;
1723}
1724
1725/* Return a structure containing various interesting information
1726   about the frame that called THIS_FRAME.  Returns NULL
1727   if there is no such frame.
1728
1729   This function tests some target-independent conditions that should
1730   terminate the frame chain, such as unwinding past main().  It
1731   should not contain any target-dependent tests, such as checking
1732   whether the program-counter is zero.  */
1733
1734struct frame_info *
1735get_prev_frame (struct frame_info *this_frame)
1736{
1737  struct frame_info *prev_frame;
1738
1739  if (frame_debug)
1740    {
1741      fprintf_unfiltered (gdb_stdlog, "{ get_prev_frame (this_frame=");
1742      if (this_frame != NULL)
1743	fprintf_unfiltered (gdb_stdlog, "%d", this_frame->level);
1744      else
1745	fprintf_unfiltered (gdb_stdlog, "<NULL>");
1746      fprintf_unfiltered (gdb_stdlog, ") ");
1747    }
1748
1749  /* Return the inner-most frame, when the caller passes in NULL.  */
1750  /* NOTE: cagney/2002-11-09: Not sure how this would happen.  The
1751     caller should have previously obtained a valid frame using
1752     get_selected_frame() and then called this code - only possibility
1753     I can think of is code behaving badly.
1754
1755     NOTE: cagney/2003-01-10: Talk about code behaving badly.  Check
1756     block_innermost_frame().  It does the sequence: frame = NULL;
1757     while (1) { frame = get_prev_frame (frame); .... }.  Ulgh!  Why
1758     it couldn't be written better, I don't know.
1759
1760     NOTE: cagney/2003-01-11: I suspect what is happening is
1761     block_innermost_frame() is, when the target has no state
1762     (registers, memory, ...), still calling this function.  The
1763     assumption being that this function will return NULL indicating
1764     that a frame isn't possible, rather than checking that the target
1765     has state and then calling get_current_frame() and
1766     get_prev_frame().  This is a guess mind.  */
1767  if (this_frame == NULL)
1768    {
1769      /* NOTE: cagney/2002-11-09: There was a code segment here that
1770	 would error out when CURRENT_FRAME was NULL.  The comment
1771	 that went with it made the claim ...
1772
1773	 ``This screws value_of_variable, which just wants a nice
1774	 clean NULL return from block_innermost_frame if there are no
1775	 frames.  I don't think I've ever seen this message happen
1776	 otherwise.  And returning NULL here is a perfectly legitimate
1777	 thing to do.''
1778
1779         Per the above, this code shouldn't even be called with a NULL
1780         THIS_FRAME.  */
1781      return current_frame;
1782    }
1783
1784  /* There is always a frame.  If this assertion fails, suspect that
1785     something should be calling get_selected_frame() or
1786     get_current_frame().  */
1787  gdb_assert (this_frame != NULL);
1788
1789  /* Make sure we pass an address within THIS_FRAME's code block to
1790     inside_main_func.  Otherwise, we might stop unwinding at a
1791     function which has a call instruction as its last instruction if
1792     that function immediately precedes main().  */
1793  if (this_frame->level >= 0
1794      && !backtrace_past_main
1795      && inside_main_func (get_frame_address_in_block (this_frame)))
1796    /* Don't unwind past main(), bug always unwind the sentinel frame.
1797       Note, this is done _before_ the frame has been marked as
1798       previously unwound.  That way if the user later decides to
1799       allow unwinds past main(), that just happens.  */
1800    {
1801      if (frame_debug)
1802	fprintf_unfiltered (gdb_stdlog, "-> NULL // inside main func }\n");
1803      return NULL;
1804    }
1805
1806  if (this_frame->level > backtrace_limit)
1807    {
1808      error ("Backtrace limit of %d exceeded", backtrace_limit);
1809    }
1810
1811  /* If we're already inside the entry function for the main objfile,
1812     then it isn't valid.  Don't apply this test to a dummy frame -
1813     dummy frame PC's typically land in the entry func.  Don't apply
1814     this test to the sentinel frame.  Sentinel frames should always
1815     be allowed to unwind.  */
1816  /* NOTE: cagney/2003-02-25: Don't enable until someone has found
1817     hard evidence that this is needed.  */
1818  /* NOTE: cagney/2003-07-07: Fixed a bug in inside_main_func - wasn't
1819     checking for "main" in the minimal symbols.  With that fixed
1820     asm-source tests now stop in "main" instead of halting the
1821     backtrace in wierd and wonderful ways somewhere inside the entry
1822     file.  Suspect that deprecated_inside_entry_file and
1823     inside_entry_func tests were added to work around that (now
1824     fixed) case.  */
1825  /* NOTE: cagney/2003-07-15: danielj (if I'm reading it right)
1826     suggested having the inside_entry_func test use the
1827     inside_main_func msymbol trick (along with entry_point_address I
1828     guess) to determine the address range of the start function.
1829     That should provide a far better stopper than the current
1830     heuristics.  */
1831  /* NOTE: cagney/2003-07-15: Need to add a "set backtrace
1832     beyond-entry-func" command so that this can be selectively
1833     disabled.  */
1834  if (0
1835#if 0
1836      && backtrace_beyond_entry_func
1837#endif
1838      && this_frame->type != DUMMY_FRAME && this_frame->level >= 0
1839      && inside_entry_func (this_frame))
1840    {
1841      if (frame_debug)
1842	{
1843	  fprintf_unfiltered (gdb_stdlog, "-> ");
1844	  fprint_frame (gdb_stdlog, NULL);
1845	  fprintf_unfiltered (gdb_stdlog, "// inside entry func }\n");
1846	}
1847      return NULL;
1848    }
1849
1850  /* Assume that the only way to get a zero PC is through something
1851     like a SIGSEGV or a dummy frame, and hence that NORMAL frames
1852     will never unwind a zero PC.  */
1853  if (this_frame->level > 0
1854      && get_frame_type (this_frame) == NORMAL_FRAME
1855      && get_frame_type (get_next_frame (this_frame)) == NORMAL_FRAME
1856      && get_frame_pc (this_frame) == 0)
1857    {
1858      if (frame_debug)
1859	{
1860	  fprintf_unfiltered (gdb_stdlog, "-> ");
1861	  fprint_frame (gdb_stdlog, this_frame->prev);
1862	  fprintf_unfiltered (gdb_stdlog, " // zero PC \n");
1863	}
1864      return NULL;
1865    }
1866
1867  /* Only try to do the unwind once.  */
1868  if (this_frame->prev_p)
1869    {
1870      if (frame_debug)
1871	{
1872	  fprintf_unfiltered (gdb_stdlog, "-> ");
1873	  fprint_frame (gdb_stdlog, this_frame->prev);
1874	  fprintf_unfiltered (gdb_stdlog, " // cached \n");
1875	}
1876      return this_frame->prev;
1877    }
1878  this_frame->prev_p = 1;
1879
1880  /* If we're inside the entry file, it isn't valid.  Don't apply this
1881     test to a dummy frame - dummy frame PC's typically land in the
1882     entry file.  Don't apply this test to the sentinel frame.
1883     Sentinel frames should always be allowed to unwind.  */
1884  /* NOTE: drow/2002-12-25: should there be a way to disable this
1885     check?  It assumes a single small entry file, and the way some
1886     debug readers (e.g.  dbxread) figure out which object is the
1887     entry file is somewhat hokey.  */
1888  /* NOTE: cagney/2003-01-10: If there is a way of disabling this test
1889     then it should probably be moved to before the ->prev_p test,
1890     above.  */
1891  /* NOTE: vinschen/2003-04-01: Disabled.  It turns out that the call
1892     to deprecated_inside_entry_file destroys a meaningful backtrace
1893     under some conditions.  E. g. the backtrace tests in the
1894     asm-source testcase are broken for some targets.  In this test
1895     the functions are all implemented as part of one file and the
1896     testcase is not necessarily linked with a start file (depending
1897     on the target).  What happens is, that the first frame is printed
1898     normaly and following frames are treated as being inside the
1899     enttry file then.  This way, only the #0 frame is printed in the
1900     backtrace output.  */
1901  if (0
1902      && this_frame->type != DUMMY_FRAME && this_frame->level >= 0
1903      && deprecated_inside_entry_file (get_frame_pc (this_frame)))
1904    {
1905      if (frame_debug)
1906	{
1907	  fprintf_unfiltered (gdb_stdlog, "-> ");
1908	  fprint_frame (gdb_stdlog, NULL);
1909	  fprintf_unfiltered (gdb_stdlog, " // inside entry file }\n");
1910	}
1911      return NULL;
1912    }
1913
1914  /* If any of the old frame initialization methods are around, use
1915     the legacy get_prev_frame method.  */
1916  if (legacy_frame_p (current_gdbarch))
1917    {
1918      prev_frame = legacy_get_prev_frame (this_frame);
1919      return prev_frame;
1920    }
1921
1922  /* Check that this frame's ID was valid.  If it wasn't, don't try to
1923     unwind to the prev frame.  Be careful to not apply this test to
1924     the sentinel frame.  */
1925  if (this_frame->level >= 0 && !frame_id_p (get_frame_id (this_frame)))
1926    {
1927      if (frame_debug)
1928	{
1929	  fprintf_unfiltered (gdb_stdlog, "-> ");
1930	  fprint_frame (gdb_stdlog, NULL);
1931	  fprintf_unfiltered (gdb_stdlog, " // this ID is NULL }\n");
1932	}
1933      return NULL;
1934    }
1935
1936  /* Check that this frame's ID isn't inner to (younger, below, next)
1937     the next frame.  This happens when a frame unwind goes backwards.
1938     Since the sentinel frame doesn't really exist, don't compare the
1939     inner-most against that sentinel.  */
1940  if (this_frame->level > 0
1941      && frame_id_inner (get_frame_id (this_frame),
1942			 get_frame_id (this_frame->next)))
1943    error ("Previous frame inner to this frame (corrupt stack?)");
1944
1945  /* Check that this and the next frame are not identical.  If they
1946     are, there is most likely a stack cycle.  As with the inner-than
1947     test above, avoid comparing the inner-most and sentinel frames.  */
1948  if (this_frame->level > 0
1949      && frame_id_eq (get_frame_id (this_frame),
1950		      get_frame_id (this_frame->next)))
1951    error ("Previous frame identical to this frame (corrupt stack?)");
1952
1953  /* Allocate the new frame but do not wire it in to the frame chain.
1954     Some (bad) code in INIT_FRAME_EXTRA_INFO tries to look along
1955     frame->next to pull some fancy tricks (of course such code is, by
1956     definition, recursive).  Try to prevent it.
1957
1958     There is no reason to worry about memory leaks, should the
1959     remainder of the function fail.  The allocated memory will be
1960     quickly reclaimed when the frame cache is flushed, and the `we've
1961     been here before' check above will stop repeated memory
1962     allocation calls.  */
1963  prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
1964  prev_frame->level = this_frame->level + 1;
1965
1966  /* Don't yet compute ->unwind (and hence ->type).  It is computed
1967     on-demand in get_frame_type, frame_register_unwind, and
1968     get_frame_id.  */
1969
1970  /* Don't yet compute the frame's ID.  It is computed on-demand by
1971     get_frame_id().  */
1972
1973  /* The unwound frame ID is validate at the start of this function,
1974     as part of the logic to decide if that frame should be further
1975     unwound, and not here while the prev frame is being created.
1976     Doing this makes it possible for the user to examine a frame that
1977     has an invalid frame ID.
1978
1979     Some very old VAX code noted: [...]  For the sake of argument,
1980     suppose that the stack is somewhat trashed (which is one reason
1981     that "info frame" exists).  So, return 0 (indicating we don't
1982     know the address of the arglist) if we don't know what frame this
1983     frame calls.  */
1984
1985  /* Link it in.  */
1986  this_frame->prev = prev_frame;
1987  prev_frame->next = this_frame;
1988
1989  if (frame_debug)
1990    {
1991      fprintf_unfiltered (gdb_stdlog, "-> ");
1992      fprint_frame (gdb_stdlog, prev_frame);
1993      fprintf_unfiltered (gdb_stdlog, " }\n");
1994    }
1995
1996  return prev_frame;
1997}
1998
1999CORE_ADDR
2000get_frame_pc (struct frame_info *frame)
2001{
2002  gdb_assert (frame->next != NULL);
2003  return frame_pc_unwind (frame->next);
2004}
2005
2006/* Return an address of that falls within the frame's code block.  */
2007
2008CORE_ADDR
2009frame_unwind_address_in_block (struct frame_info *next_frame)
2010{
2011  /* A draft address.  */
2012  CORE_ADDR pc = frame_pc_unwind (next_frame);
2013
2014  if ((frame_tdep_pc_fixup != NULL) && (frame_tdep_pc_fixup(&pc) == 0))
2015  	return pc;
2016
2017  /* If THIS frame is not inner most (i.e., NEXT isn't the sentinel),
2018     and NEXT is `normal' (i.e., not a sigtramp, dummy, ....) THIS
2019     frame's PC ends up pointing at the instruction fallowing the
2020     "call".  Adjust that PC value so that it falls on the call
2021     instruction (which, hopefully, falls within THIS frame's code
2022     block.  So far it's proved to be a very good approximation.  See
2023     get_frame_type for why ->type can't be used.  */
2024  if (next_frame->level >= 0
2025      && get_frame_type (next_frame) == NORMAL_FRAME)
2026    --pc;
2027  return pc;
2028}
2029
2030CORE_ADDR
2031get_frame_address_in_block (struct frame_info *this_frame)
2032{
2033  return frame_unwind_address_in_block (this_frame->next);
2034}
2035
2036static int
2037pc_notcurrent (struct frame_info *frame)
2038{
2039  /* If FRAME is not the innermost frame, that normally means that
2040     FRAME->pc points at the return instruction (which is *after* the
2041     call instruction), and we want to get the line containing the
2042     call (because the call is where the user thinks the program is).
2043     However, if the next frame is either a SIGTRAMP_FRAME or a
2044     DUMMY_FRAME, then the next frame will contain a saved interrupt
2045     PC and such a PC indicates the current (rather than next)
2046     instruction/line, consequently, for such cases, want to get the
2047     line containing fi->pc.  */
2048  struct frame_info *next = get_next_frame (frame);
2049  int notcurrent = (next != NULL && get_frame_type (next) == NORMAL_FRAME);
2050  return notcurrent;
2051}
2052
2053void
2054find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
2055{
2056  (*sal) = find_pc_line (get_frame_pc (frame), pc_notcurrent (frame));
2057}
2058
2059/* Per "frame.h", return the ``address'' of the frame.  Code should
2060   really be using get_frame_id().  */
2061CORE_ADDR
2062get_frame_base (struct frame_info *fi)
2063{
2064  return get_frame_id (fi).stack_addr;
2065}
2066
2067/* High-level offsets into the frame.  Used by the debug info.  */
2068
2069CORE_ADDR
2070get_frame_base_address (struct frame_info *fi)
2071{
2072  if (get_frame_type (fi) != NORMAL_FRAME)
2073    return 0;
2074  if (fi->base == NULL)
2075    fi->base = frame_base_find_by_frame (fi->next);
2076  /* Sneaky: If the low-level unwind and high-level base code share a
2077     common unwinder, let them share the prologue cache.  */
2078  if (fi->base->unwind == fi->unwind)
2079    return fi->base->this_base (fi->next, &fi->prologue_cache);
2080  return fi->base->this_base (fi->next, &fi->base_cache);
2081}
2082
2083CORE_ADDR
2084get_frame_locals_address (struct frame_info *fi)
2085{
2086  void **cache;
2087  if (get_frame_type (fi) != NORMAL_FRAME)
2088    return 0;
2089  /* If there isn't a frame address method, find it.  */
2090  if (fi->base == NULL)
2091    fi->base = frame_base_find_by_frame (fi->next);
2092  /* Sneaky: If the low-level unwind and high-level base code share a
2093     common unwinder, let them share the prologue cache.  */
2094  if (fi->base->unwind == fi->unwind)
2095    cache = &fi->prologue_cache;
2096  else
2097    cache = &fi->base_cache;
2098  return fi->base->this_locals (fi->next, cache);
2099}
2100
2101CORE_ADDR
2102get_frame_args_address (struct frame_info *fi)
2103{
2104  void **cache;
2105  if (get_frame_type (fi) != NORMAL_FRAME)
2106    return 0;
2107  /* If there isn't a frame address method, find it.  */
2108  if (fi->base == NULL)
2109    fi->base = frame_base_find_by_frame (fi->next);
2110  /* Sneaky: If the low-level unwind and high-level base code share a
2111     common unwinder, let them share the prologue cache.  */
2112  if (fi->base->unwind == fi->unwind)
2113    cache = &fi->prologue_cache;
2114  else
2115    cache = &fi->base_cache;
2116  return fi->base->this_args (fi->next, cache);
2117}
2118
2119/* Level of the selected frame: 0 for innermost, 1 for its caller, ...
2120   or -1 for a NULL frame.  */
2121
2122int
2123frame_relative_level (struct frame_info *fi)
2124{
2125  if (fi == NULL)
2126    return -1;
2127  else
2128    return fi->level;
2129}
2130
2131enum frame_type
2132get_frame_type (struct frame_info *frame)
2133{
2134  /* Some targets still don't use [generic] dummy frames.  Catch them
2135     here.  */
2136  if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES
2137      && deprecated_frame_in_dummy (frame))
2138    return DUMMY_FRAME;
2139
2140  /* Some legacy code, e.g, mips_init_extra_frame_info() wants
2141     to determine the frame's type prior to it being completely
2142     initialized.  Don't attempt to lazily initialize ->unwind for
2143     legacy code.  It will be initialized in legacy_get_prev_frame().  */
2144  if (frame->unwind == NULL && !legacy_frame_p (current_gdbarch))
2145    {
2146      /* Initialize the frame's unwinder because it is that which
2147         provides the frame's type.  */
2148      frame->unwind = frame_unwind_find_by_frame (frame->next);
2149      /* FIXME: cagney/2003-04-02: Rather than storing the frame's
2150	 type in the frame, the unwinder's type should be returned
2151	 directly.  Unfortunately, legacy code, called by
2152	 legacy_get_prev_frame, explicitly set the frames type using
2153	 the method deprecated_set_frame_type().  */
2154      frame->type = frame->unwind->type;
2155    }
2156  if (frame->type == UNKNOWN_FRAME)
2157    return NORMAL_FRAME;
2158  else
2159    return frame->type;
2160}
2161
2162void
2163deprecated_set_frame_type (struct frame_info *frame, enum frame_type type)
2164{
2165  /* Arrrg!  See comment in "frame.h".  */
2166  frame->type = type;
2167}
2168
2169struct frame_extra_info *
2170get_frame_extra_info (struct frame_info *fi)
2171{
2172  return fi->extra_info;
2173}
2174
2175struct frame_extra_info *
2176frame_extra_info_zalloc (struct frame_info *fi, long size)
2177{
2178  fi->extra_info = frame_obstack_zalloc (size);
2179  return fi->extra_info;
2180}
2181
2182void
2183deprecated_update_frame_pc_hack (struct frame_info *frame, CORE_ADDR pc)
2184{
2185  if (frame_debug)
2186    fprintf_unfiltered (gdb_stdlog,
2187			"{ deprecated_update_frame_pc_hack (frame=%d,pc=0x%s) }\n",
2188			frame->level, paddr_nz (pc));
2189  /* NOTE: cagney/2003-03-11: Some architectures (e.g., Arm) are
2190     maintaining a locally allocated frame object.  Since such frame's
2191     are not in the frame chain, it isn't possible to assume that the
2192     frame has a next.  Sigh.  */
2193  if (frame->next != NULL)
2194    {
2195      /* While we're at it, update this frame's cached PC value, found
2196	 in the next frame.  Oh for the day when "struct frame_info"
2197	 is opaque and this hack on hack can just go away.  */
2198      frame->next->prev_pc.value = pc;
2199      frame->next->prev_pc.p = 1;
2200    }
2201}
2202
2203void
2204deprecated_update_frame_base_hack (struct frame_info *frame, CORE_ADDR base)
2205{
2206  if (frame_debug)
2207    fprintf_unfiltered (gdb_stdlog,
2208			"{ deprecated_update_frame_base_hack (frame=%d,base=0x%s) }\n",
2209			frame->level, paddr_nz (base));
2210  /* See comment in "frame.h".  */
2211  frame->this_id.value.stack_addr = base;
2212}
2213
2214struct frame_info *
2215deprecated_frame_xmalloc_with_cleanup (long sizeof_saved_regs,
2216				       long sizeof_extra_info)
2217{
2218  struct frame_info *frame = XMALLOC (struct frame_info);
2219  memset (frame, 0, sizeof (*frame));
2220  frame->this_id.p = 1;
2221  make_cleanup (xfree, frame);
2222  if (sizeof_saved_regs > 0)
2223    {
2224      frame->saved_regs = xcalloc (1, sizeof_saved_regs);
2225      make_cleanup (xfree, frame->saved_regs);
2226    }
2227  if (sizeof_extra_info > 0)
2228    {
2229      frame->extra_info = xcalloc (1, sizeof_extra_info);
2230      make_cleanup (xfree, frame->extra_info);
2231    }
2232  return frame;
2233}
2234
2235/* Memory access methods.  */
2236
2237void
2238get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr, void *buf,
2239		  int len)
2240{
2241  read_memory (addr, buf, len);
2242}
2243
2244LONGEST
2245get_frame_memory_signed (struct frame_info *this_frame, CORE_ADDR addr,
2246			 int len)
2247{
2248  return read_memory_integer (addr, len);
2249}
2250
2251ULONGEST
2252get_frame_memory_unsigned (struct frame_info *this_frame, CORE_ADDR addr,
2253			   int len)
2254{
2255  return read_memory_unsigned_integer (addr, len);
2256}
2257
2258/* Architecture method.  */
2259
2260struct gdbarch *
2261get_frame_arch (struct frame_info *this_frame)
2262{
2263  return current_gdbarch;
2264}
2265
2266/* Stack pointer methods.  */
2267
2268CORE_ADDR
2269get_frame_sp (struct frame_info *this_frame)
2270{
2271  return frame_sp_unwind (this_frame->next);
2272}
2273
2274CORE_ADDR
2275frame_sp_unwind (struct frame_info *next_frame)
2276{
2277  /* Normality, an architecture that provides a way of obtaining any
2278     frame inner-most address.  */
2279  if (gdbarch_unwind_sp_p (current_gdbarch))
2280    return gdbarch_unwind_sp (current_gdbarch, next_frame);
2281  /* Things are looking grim.  If it's the inner-most frame and there
2282     is a TARGET_READ_SP then that can be used.  */
2283  if (next_frame->level < 0 && TARGET_READ_SP_P ())
2284    return TARGET_READ_SP ();
2285  /* Now things are really are grim.  Hope that the value returned by
2286     the SP_REGNUM register is meaningful.  */
2287  if (SP_REGNUM >= 0)
2288    {
2289      ULONGEST sp;
2290      frame_unwind_unsigned_register (next_frame, SP_REGNUM, &sp);
2291      return sp;
2292    }
2293  internal_error (__FILE__, __LINE__, "Missing unwind SP method");
2294}
2295
2296
2297int
2298legacy_frame_p (struct gdbarch *current_gdbarch)
2299{
2300  if (DEPRECATED_INIT_FRAME_PC_P ()
2301      || DEPRECATED_INIT_FRAME_PC_FIRST_P ()
2302      || DEPRECATED_INIT_EXTRA_FRAME_INFO_P ()
2303      || DEPRECATED_FRAME_CHAIN_P ())
2304    /* No question, it's a legacy frame.  */
2305    return 1;
2306  if (gdbarch_unwind_dummy_id_p (current_gdbarch))
2307    /* No question, it's not a legacy frame (provided none of the
2308       deprecated methods checked above are present that is).  */
2309    return 0;
2310  if (DEPRECATED_TARGET_READ_FP_P ()
2311      || DEPRECATED_FP_REGNUM >= 0)
2312    /* Assume it's legacy.  If you're trying to convert a legacy frame
2313       target to the new mechanism, get rid of these.  legacy
2314       get_prev_frame requires these when unwind_frame_id isn't
2315       available.  */
2316    return 1;
2317  /* Default to assuming that it's brand new code, and hence not
2318     legacy.  Force it down the non-legacy path so that the new code
2319     uses the new frame mechanism from day one.  Dummy frame's won't
2320     work very well but we can live with that.  */
2321  return 0;
2322}
2323
2324extern initialize_file_ftype _initialize_frame; /* -Wmissing-prototypes */
2325
2326static struct cmd_list_element *set_backtrace_cmdlist;
2327static struct cmd_list_element *show_backtrace_cmdlist;
2328
2329static void
2330set_backtrace_cmd (char *args, int from_tty)
2331{
2332  help_list (set_backtrace_cmdlist, "set backtrace ", -1, gdb_stdout);
2333}
2334
2335static void
2336show_backtrace_cmd (char *args, int from_tty)
2337{
2338  cmd_show_list (show_backtrace_cmdlist, from_tty, "");
2339}
2340
2341void
2342_initialize_frame (void)
2343{
2344  obstack_init (&frame_cache_obstack);
2345
2346  add_prefix_cmd ("backtrace", class_maintenance, set_backtrace_cmd, "\
2347Set backtrace specific variables.\n\
2348Configure backtrace variables such as the backtrace limit",
2349		  &set_backtrace_cmdlist, "set backtrace ",
2350		  0/*allow-unknown*/, &setlist);
2351  add_prefix_cmd ("backtrace", class_maintenance, show_backtrace_cmd, "\
2352Show backtrace specific variables\n\
2353Show backtrace variables such as the backtrace limit",
2354		  &show_backtrace_cmdlist, "show backtrace ",
2355		  0/*allow-unknown*/, &showlist);
2356
2357  add_setshow_boolean_cmd ("past-main", class_obscure,
2358			   &backtrace_past_main, "\
2359Set whether backtraces should continue past \"main\".\n\
2360Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
2361the backtrace at \"main\".  Set this variable if you need to see the rest\n\
2362of the stack trace.", "\
2363Show whether backtraces should continue past \"main\".\n\
2364Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
2365the backtrace at \"main\".  Set this variable if you need to see the rest\n\
2366of the stack trace.",
2367			   NULL, NULL, &set_backtrace_cmdlist,
2368			   &show_backtrace_cmdlist);
2369
2370  add_setshow_uinteger_cmd ("limit", class_obscure,
2371			    &backtrace_limit, "\
2372Set an upper bound on the number of backtrace levels.\n\
2373No more than the specified number of frames can be displayed or examined.\n\
2374Zero is unlimited.", "\
2375Show the upper bound on the number of backtrace levels.",
2376			    NULL, NULL, &set_backtrace_cmdlist,
2377			    &show_backtrace_cmdlist);
2378
2379  /* Debug this files internals. */
2380  add_show_from_set (add_set_cmd ("frame", class_maintenance, var_zinteger,
2381				  &frame_debug, "Set frame debugging.\n\
2382When non-zero, frame specific internal debugging is enabled.", &setdebuglist),
2383		     &showdebuglist);
2384}
2385