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