1918114bdec5965944e7731d71fad9372ef7c2d9
[external/binutils.git] / gdb / frame.c
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 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 "builtin-regs.h"
32 #include "gdb_obstack.h"
33 #include "dummy-frame.h"
34 #include "gdbcore.h"
35 #include "annotate.h"
36
37 /* Return a frame uniq ID that can be used to, later re-find the
38    frame.  */
39
40 void
41 get_frame_id (struct frame_info *fi, struct frame_id *id)
42 {
43   if (fi == NULL)
44     {
45       id->base = 0;
46       id->pc = 0;
47     }
48   else
49     {
50       id->base = fi->frame;
51       id->pc = fi->pc;
52     }
53 }
54
55 struct frame_info *
56 frame_find_by_id (struct frame_id id)
57 {
58   struct frame_info *frame;
59
60   /* ZERO denotes the null frame, let the caller decide what to do
61      about it.  Should it instead return get_current_frame()?  */
62   if (id.base == 0 && id.pc == 0)
63     return NULL;
64
65   for (frame = get_current_frame ();
66        frame != NULL;
67        frame = get_prev_frame (frame))
68     {
69       struct frame_id this;
70       get_frame_id (frame, &this);
71       if (INNER_THAN (this.base, id.base))
72         /* ``inner/current < frame < id.base''.  Keep looking along
73            the frame chain.  */
74         continue;
75       if (INNER_THAN (id.base, this.base))
76         /* ``inner/current < id.base < frame''.  Oops, gone past it.
77            Just give up.  */
78         return NULL;
79       /* FIXME: cagney/2002-04-21: This isn't sufficient.  It should
80          use id.pc / this.pc to check that the two frames belong to
81          the same function.  Otherwise we'll do things like match
82          dummy frames or mis-match frameless functions.  However,
83          until someone notices, stick with the existing behavour.  */
84       return frame;
85     }
86   return NULL;
87 }
88
89 CORE_ADDR
90 frame_pc_unwind (struct frame_info *frame)
91 {
92   if (!frame->pc_unwind_cache_p)
93     {
94       frame->pc_unwind_cache = frame->pc_unwind (frame, &frame->unwind_cache);
95       frame->pc_unwind_cache_p = 1;
96     }
97   return frame->pc_unwind_cache;
98 }
99
100 void
101 frame_register_unwind (struct frame_info *frame, int regnum,
102                        int *optimizedp, enum lval_type *lvalp,
103                        CORE_ADDR *addrp, int *realnump, void *bufferp)
104 {
105   struct frame_unwind_cache *cache;
106
107   /* Require all but BUFFERP to be valid.  A NULL BUFFERP indicates
108      that the value proper does not need to be fetched.  */
109   gdb_assert (optimizedp != NULL);
110   gdb_assert (lvalp != NULL);
111   gdb_assert (addrp != NULL);
112   gdb_assert (realnump != NULL);
113   /* gdb_assert (bufferp != NULL); */
114
115   /* NOTE: cagney/2002-04-14: It would be nice if, instead of a
116      special case, there was always an inner frame dedicated to the
117      hardware registers.  Unfortunatly, there is too much unwind code
118      around that looks up/down the frame chain while making the
119      assumption that each frame level is using the same unwind code.  */
120
121   if (frame == NULL)
122     {
123       /* We're in the inner-most frame, get the value direct from the
124          register cache.  */
125       *optimizedp = 0;
126       *lvalp = lval_register;
127       /* ULGH!  Code uses the offset into the raw register byte array
128          as a way of identifying a register.  */
129       *addrp = REGISTER_BYTE (regnum);
130       /* Should this code test ``register_cached (regnum) < 0'' and do
131          something like set realnum to -1 when the register isn't
132          available?  */
133       *realnump = regnum;
134       if (bufferp)
135         deprecated_read_register_gen (regnum, bufferp);
136       return;
137     }
138
139   /* Ask this frame to unwind its register.  */
140   frame->register_unwind (frame, &frame->unwind_cache, regnum,
141                           optimizedp, lvalp, addrp, realnump, bufferp);
142 }
143
144 void
145 frame_register (struct frame_info *frame, int regnum,
146                 int *optimizedp, enum lval_type *lvalp,
147                 CORE_ADDR *addrp, int *realnump, void *bufferp)
148 {
149   /* Require all but BUFFERP to be valid.  A NULL BUFFERP indicates
150      that the value proper does not need to be fetched.  */
151   gdb_assert (optimizedp != NULL);
152   gdb_assert (lvalp != NULL);
153   gdb_assert (addrp != NULL);
154   gdb_assert (realnump != NULL);
155   /* gdb_assert (bufferp != NULL); */
156
157   /* Ulgh!  Old code that, for lval_register, sets ADDRP to the offset
158      of the register in the register cache.  It should instead return
159      the REGNUM corresponding to that register.  Translate the .  */
160   if (GET_SAVED_REGISTER_P ())
161     {
162       GET_SAVED_REGISTER (bufferp, optimizedp, addrp, frame, regnum, lvalp);
163       /* Compute the REALNUM if the caller wants it.  */
164       if (*lvalp == lval_register)
165         {
166           int regnum;
167           for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
168             {
169               if (*addrp == register_offset_hack (current_gdbarch, regnum))
170                 {
171                   *realnump = regnum;
172                   return;
173                 }
174             }
175           internal_error (__FILE__, __LINE__,
176                           "Failed to compute the register number corresponding"
177                           " to 0x%s", paddr_d (*addrp));
178         }
179       *realnump = -1;
180       return;
181     }
182
183   /* Reached the the bottom (youngest, inner most) of the frame chain
184      (youngest, inner most) frame, go direct to the hardware register
185      cache (do not pass go, do not try to cache the value, ...).  The
186      unwound value would have been cached in frame->next but that
187      doesn't exist.  This doesn't matter as the hardware register
188      cache is stopping any unnecessary accesses to the target.  */
189
190   /* NOTE: cagney/2002-04-14: It would be nice if, instead of a
191      special case, there was always an inner frame dedicated to the
192      hardware registers.  Unfortunatly, there is too much unwind code
193      around that looks up/down the frame chain while making the
194      assumption that each frame level is using the same unwind code.  */
195
196   if (frame == NULL)
197     frame_register_unwind (NULL, regnum, optimizedp, lvalp, addrp, realnump,
198                            bufferp);
199   else
200     frame_register_unwind (frame->next, regnum, optimizedp, lvalp, addrp,
201                            realnump, bufferp);
202 }
203
204 void
205 frame_unwind_signed_register (struct frame_info *frame, int regnum,
206                               LONGEST *val)
207 {
208   int optimized;
209   CORE_ADDR addr;
210   int realnum;
211   enum lval_type lval;
212   void *buf = alloca (MAX_REGISTER_RAW_SIZE);
213   frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
214                          &realnum, buf);
215   (*val) = extract_signed_integer (buf, REGISTER_VIRTUAL_SIZE (regnum));
216 }
217
218 void
219 frame_unwind_unsigned_register (struct frame_info *frame, int regnum,
220                                 ULONGEST *val)
221 {
222   int optimized;
223   CORE_ADDR addr;
224   int realnum;
225   enum lval_type lval;
226   void *buf = alloca (MAX_REGISTER_RAW_SIZE);
227   frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
228                          &realnum, buf);
229   (*val) = extract_unsigned_integer (buf, REGISTER_VIRTUAL_SIZE (regnum));
230 }
231
232 void
233 frame_read_unsigned_register (struct frame_info *frame, int regnum,
234                               ULONGEST *val)
235 {
236   /* NOTE: cagney/2002-10-31: There is a bit of dogma here - there is
237      always a frame.  Both this, and the equivalent
238      frame_read_signed_register() function, can only be called with a
239      valid frame.  If, for some reason, this function is called
240      without a frame then the problem isn't here, but rather in the
241      caller.  It should of first created a frame and then passed that
242      in.  */
243   /* NOTE: cagney/2002-10-31: As a side bar, keep in mind that the
244      ``current_frame'' should not be treated as a special case.  While
245      ``get_next_frame (current_frame) == NULL'' currently holds, it
246      should, as far as possible, not be relied upon.  In the future,
247      ``get_next_frame (current_frame)'' may instead simply return a
248      normal frame object that simply always gets register values from
249      the register cache.  Consequently, frame code should try to avoid
250      tests like ``if get_next_frame() == NULL'' and instead just rely
251      on recursive frame calls (like the below code) when manipulating
252      a frame chain.  */
253   gdb_assert (frame != NULL);
254   frame_unwind_unsigned_register (get_next_frame (frame), regnum, val);
255 }
256
257 void
258 frame_read_signed_register (struct frame_info *frame, int regnum,
259                             LONGEST *val)
260 {
261   /* See note in frame_read_unsigned_register().  */
262   gdb_assert (frame != NULL);
263   frame_unwind_signed_register (get_next_frame (frame), regnum, val);
264 }
265
266 static void
267 generic_unwind_get_saved_register (char *raw_buffer,
268                                    int *optimizedp,
269                                    CORE_ADDR *addrp,
270                                    struct frame_info *frame,
271                                    int regnum,
272                                    enum lval_type *lvalp)
273 {
274   int optimizedx;
275   CORE_ADDR addrx;
276   int realnumx;
277   enum lval_type lvalx;
278
279   if (!target_has_registers)
280     error ("No registers.");
281
282   /* Keep things simple, ensure that all the pointers (except valuep)
283      are non NULL.  */
284   if (optimizedp == NULL)
285     optimizedp = &optimizedx;
286   if (lvalp == NULL)
287     lvalp = &lvalx;
288   if (addrp == NULL)
289     addrp = &addrx;
290
291   /* Reached the the bottom (youngest, inner most) of the frame chain
292      (youngest, inner most) frame, go direct to the hardware register
293      cache (do not pass go, do not try to cache the value, ...).  The
294      unwound value would have been cached in frame->next but that
295      doesn't exist.  This doesn't matter as the hardware register
296      cache is stopping any unnecessary accesses to the target.  */
297
298   /* NOTE: cagney/2002-04-14: It would be nice if, instead of a
299      special case, there was always an inner frame dedicated to the
300      hardware registers.  Unfortunatly, there is too much unwind code
301      around that looks up/down the frame chain while making the
302      assumption that each frame level is using the same unwind code.  */
303
304   if (frame == NULL)
305     frame_register_unwind (NULL, regnum, optimizedp, lvalp, addrp, &realnumx,
306                            raw_buffer);
307   else
308     frame_register_unwind (frame->next, regnum, optimizedp, lvalp, addrp,
309                            &realnumx, raw_buffer);
310 }
311
312 void
313 get_saved_register (char *raw_buffer,
314                     int *optimized,
315                     CORE_ADDR *addrp,
316                     struct frame_info *frame,
317                     int regnum,
318                     enum lval_type *lval)
319 {
320   if (GET_SAVED_REGISTER_P ())
321     {
322       GET_SAVED_REGISTER (raw_buffer, optimized, addrp, frame, regnum, lval);
323       return;
324     }
325   generic_unwind_get_saved_register (raw_buffer, optimized, addrp, frame,
326                                      regnum, lval);
327 }
328
329 /* frame_register_read ()
330
331    Find and return the value of REGNUM for the specified stack frame.
332    The number of bytes copied is REGISTER_RAW_SIZE (REGNUM).
333
334    Returns 0 if the register value could not be found.  */
335
336 int
337 frame_register_read (struct frame_info *frame, int regnum, void *myaddr)
338 {
339   int optimized;
340   enum lval_type lval;
341   CORE_ADDR addr;
342   int realnum;
343   frame_register (frame, regnum, &optimized, &lval, &addr, &realnum, myaddr);
344
345   /* FIXME: cagney/2002-05-15: This test, is just bogus.
346
347      It indicates that the target failed to supply a value for a
348      register because it was "not available" at this time.  Problem
349      is, the target still has the register and so get saved_register()
350      may be returning a value saved on the stack.  */
351
352   if (register_cached (regnum) < 0)
353     return 0;                   /* register value not available */
354
355   return !optimized;
356 }
357
358
359 /* Map between a frame register number and its name.  A frame register
360    space is a superset of the cooked register space --- it also
361    includes builtin registers.  */
362
363 int
364 frame_map_name_to_regnum (const char *name, int len)
365 {
366   int i;
367
368   /* Search register name space. */
369   for (i = 0; i < NUM_REGS + NUM_PSEUDO_REGS; i++)
370     if (REGISTER_NAME (i) && len == strlen (REGISTER_NAME (i))
371         && strncmp (name, REGISTER_NAME (i), len) == 0)
372       {
373         return i;
374       }
375
376   /* Try builtin registers.  */
377   i = builtin_reg_map_name_to_regnum (name, len);
378   if (i >= 0)
379     {
380       /* A builtin register doesn't fall into the architecture's
381          register range.  */
382       gdb_assert (i >= NUM_REGS + NUM_PSEUDO_REGS);
383       return i;
384     }
385
386   return -1;
387 }
388
389 const char *
390 frame_map_regnum_to_name (int regnum)
391 {
392   if (regnum < 0)
393     return NULL;
394   if (regnum < NUM_REGS + NUM_PSEUDO_REGS)
395     return REGISTER_NAME (regnum);
396   return builtin_reg_map_regnum_to_name (regnum);
397 }
398
399 /* Info about the innermost stack frame (contents of FP register) */
400
401 static struct frame_info *current_frame;
402
403 /* Cache for frame addresses already read by gdb.  Valid only while
404    inferior is stopped.  Control variables for the frame cache should
405    be local to this module.  */
406
407 static struct obstack frame_cache_obstack;
408
409 void *
410 frame_obstack_alloc (unsigned long size)
411 {
412   return obstack_alloc (&frame_cache_obstack, size);
413 }
414
415 void
416 frame_saved_regs_zalloc (struct frame_info *fi)
417 {
418   fi->saved_regs = (CORE_ADDR *)
419     frame_obstack_alloc (SIZEOF_FRAME_SAVED_REGS);
420   memset (fi->saved_regs, 0, SIZEOF_FRAME_SAVED_REGS);
421 }
422
423
424 /* Return the innermost (currently executing) stack frame.  */
425
426 struct frame_info *
427 get_current_frame (void)
428 {
429   if (current_frame == NULL)
430     {
431       if (target_has_stack)
432         current_frame = create_new_frame (read_fp (), read_pc ());
433       else
434         error ("No stack.");
435     }
436   return current_frame;
437 }
438
439 void
440 set_current_frame (struct frame_info *frame)
441 {
442   current_frame = frame;
443 }
444
445 /* Return the register saved in the simplistic ``saved_regs'' cache.
446    If the value isn't here AND a value is needed, try the next inner
447    most frame.  */
448
449 static void
450 frame_saved_regs_register_unwind (struct frame_info *frame, void **cache,
451                                   int regnum, int *optimizedp,
452                                   enum lval_type *lvalp, CORE_ADDR *addrp,
453                                   int *realnump, void *bufferp)
454 {
455   /* There is always a frame at this point.  And THIS is the frame
456      we're interested in.  */
457   gdb_assert (frame != NULL);
458   /* If we're using generic dummy frames, we'd better not be in a call
459      dummy.  (generic_call_dummy_register_unwind ought to have been called
460      instead.)  */
461   gdb_assert (!(DEPRECATED_USE_GENERIC_DUMMY_FRAMES
462                 && (get_frame_type (frame) == DUMMY_FRAME)));
463
464   /* Load the saved_regs register cache.  */
465   if (frame->saved_regs == NULL)
466     FRAME_INIT_SAVED_REGS (frame);
467
468   if (frame->saved_regs != NULL
469       && frame->saved_regs[regnum] != 0)
470     {
471       if (regnum == SP_REGNUM)
472         {
473           /* SP register treated specially.  */
474           *optimizedp = 0;
475           *lvalp = not_lval;
476           *addrp = 0;
477           *realnump = -1;
478           if (bufferp != NULL)
479             store_address (bufferp, REGISTER_RAW_SIZE (regnum),
480                            frame->saved_regs[regnum]);
481         }
482       else
483         {
484           /* Any other register is saved in memory, fetch it but cache
485              a local copy of its value.  */
486           *optimizedp = 0;
487           *lvalp = lval_memory;
488           *addrp = frame->saved_regs[regnum];
489           *realnump = -1;
490           if (bufferp != NULL)
491             {
492 #if 1
493               /* Save each register value, as it is read in, in a
494                  frame based cache.  */
495               void **regs = (*cache);
496               if (regs == NULL)
497                 {
498                   int sizeof_cache = ((NUM_REGS + NUM_PSEUDO_REGS)
499                                       * sizeof (void *));
500                   regs = frame_obstack_alloc (sizeof_cache);
501                   memset (regs, 0, sizeof_cache);
502                   (*cache) = regs;
503                 }
504               if (regs[regnum] == NULL)
505                 {
506                   regs[regnum]
507                     = frame_obstack_alloc (REGISTER_RAW_SIZE (regnum));
508                   read_memory (frame->saved_regs[regnum], regs[regnum],
509                                REGISTER_RAW_SIZE (regnum));
510                 }
511               memcpy (bufferp, regs[regnum], REGISTER_RAW_SIZE (regnum));
512 #else
513               /* Read the value in from memory.  */
514               read_memory (frame->saved_regs[regnum], bufferp,
515                            REGISTER_RAW_SIZE (regnum));
516 #endif
517             }
518         }
519       return;
520     }
521
522   /* No luck, assume this and the next frame have the same register
523      value.  If a value is needed, pass the request on down the chain;
524      otherwise just return an indication that the value is in the same
525      register as the next frame.  */
526   if (bufferp == NULL)
527     {
528       *optimizedp = 0;
529       *lvalp = lval_register;
530       *addrp = 0;
531       *realnump = regnum;
532     }
533   else
534     {
535       frame_register_unwind (frame->next, regnum, optimizedp, lvalp, addrp,
536                              realnump, bufferp);
537     }
538 }
539
540 static CORE_ADDR
541 frame_saved_regs_pc_unwind (struct frame_info *frame, void **cache)
542 {
543   return FRAME_SAVED_PC (frame);
544 }
545         
546 /* Function: get_saved_register
547    Find register number REGNUM relative to FRAME and put its (raw,
548    target format) contents in *RAW_BUFFER.  
549
550    Set *OPTIMIZED if the variable was optimized out (and thus can't be
551    fetched).  Note that this is never set to anything other than zero
552    in this implementation.
553
554    Set *LVAL to lval_memory, lval_register, or not_lval, depending on
555    whether the value was fetched from memory, from a register, or in a
556    strange and non-modifiable way (e.g. a frame pointer which was
557    calculated rather than fetched).  We will use not_lval for values
558    fetched from generic dummy frames.
559
560    Set *ADDRP to the address, either in memory or as a REGISTER_BYTE
561    offset into the registers array.  If the value is stored in a dummy
562    frame, set *ADDRP to zero.
563
564    To use this implementation, define a function called
565    "get_saved_register" in your target code, which simply passes all
566    of its arguments to this function.
567
568    The argument RAW_BUFFER must point to aligned memory.  */
569
570 void
571 deprecated_generic_get_saved_register (char *raw_buffer, int *optimized,
572                                        CORE_ADDR *addrp,
573                                        struct frame_info *frame, int regnum,
574                                        enum lval_type *lval)
575 {
576   if (!target_has_registers)
577     error ("No registers.");
578
579   /* Normal systems don't optimize out things with register numbers.  */
580   if (optimized != NULL)
581     *optimized = 0;
582
583   if (addrp)                    /* default assumption: not found in memory */
584     *addrp = 0;
585
586   /* Note: since the current frame's registers could only have been
587      saved by frames INTERIOR TO the current frame, we skip examining
588      the current frame itself: otherwise, we would be getting the
589      previous frame's registers which were saved by the current frame.  */
590
591   while (frame && ((frame = frame->next) != NULL))
592     {
593       if (get_frame_type (frame) == DUMMY_FRAME)
594         {
595           if (lval)             /* found it in a CALL_DUMMY frame */
596             *lval = not_lval;
597           if (raw_buffer)
598             /* FIXME: cagney/2002-06-26: This should be via the
599                gdbarch_register_read() method so that it, on the fly,
600                constructs either a raw or pseudo register from the raw
601                register cache.  */
602             regcache_raw_read (generic_find_dummy_frame (frame->pc,
603                                                          frame->frame),
604                                regnum, raw_buffer);
605           return;
606         }
607
608       FRAME_INIT_SAVED_REGS (frame);
609       if (frame->saved_regs != NULL
610           && frame->saved_regs[regnum] != 0)
611         {
612           if (lval)             /* found it saved on the stack */
613             *lval = lval_memory;
614           if (regnum == SP_REGNUM)
615             {
616               if (raw_buffer)   /* SP register treated specially */
617                 store_address (raw_buffer, REGISTER_RAW_SIZE (regnum),
618                                frame->saved_regs[regnum]);
619             }
620           else
621             {
622               if (addrp)        /* any other register */
623                 *addrp = frame->saved_regs[regnum];
624               if (raw_buffer)
625                 read_memory (frame->saved_regs[regnum], raw_buffer,
626                              REGISTER_RAW_SIZE (regnum));
627             }
628           return;
629         }
630     }
631
632   /* If we get thru the loop to this point, it means the register was
633      not saved in any frame.  Return the actual live-register value.  */
634
635   if (lval)                     /* found it in a live register */
636     *lval = lval_register;
637   if (addrp)
638     *addrp = REGISTER_BYTE (regnum);
639   if (raw_buffer)
640     deprecated_read_register_gen (regnum, raw_buffer);
641 }
642
643 /* Using the PC, select a mechanism for unwinding a frame returning
644    the previous frame.  The register unwind function should, on
645    demand, initialize the ->context object.  */
646
647 static void
648 set_unwind_by_pc (CORE_ADDR pc, CORE_ADDR fp,
649                   frame_register_unwind_ftype **unwind_register,
650                   frame_pc_unwind_ftype **unwind_pc)
651 {
652   if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
653     {
654       /* Still need to set this to something.  The ``info frame'' code
655          calls this function to find out where the saved registers are.
656          Hopefully this is robust enough to stop any core dumps and
657          return vaguely correct values..  */
658       *unwind_register = frame_saved_regs_register_unwind;
659       *unwind_pc = frame_saved_regs_pc_unwind;
660     }
661   /* FIXME: cagney/2002-11-24: Can't yet directly call
662      pc_in_dummy_frame() as some architectures don't set
663      PC_IN_CALL_DUMMY() to generic_pc_in_call_dummy() (remember the
664      latter is implemented by simply calling pc_in_dummy_frame).  */
665   else if (PC_IN_CALL_DUMMY (pc, 0, 0))
666     {
667       *unwind_register = dummy_frame_register_unwind;
668       *unwind_pc = dummy_frame_pc_unwind;
669     }
670   else
671     {
672       *unwind_register = frame_saved_regs_register_unwind;
673       *unwind_pc = frame_saved_regs_pc_unwind;
674     }
675 }
676
677 /* Create an arbitrary (i.e. address specified by user) or innermost frame.
678    Always returns a non-NULL value.  */
679
680 struct frame_info *
681 create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
682 {
683   struct frame_info *fi;
684   enum frame_type type;
685
686   fi = (struct frame_info *)
687     obstack_alloc (&frame_cache_obstack,
688                    sizeof (struct frame_info));
689
690   /* Zero all fields by default.  */
691   memset (fi, 0, sizeof (struct frame_info));
692
693   fi->frame = addr;
694   fi->pc = pc;
695   /* NOTE: cagney/2002-11-18: The code segments, found in
696      create_new_frame and get_prev_frame(), that initializes the
697      frames type is subtly different.  The latter only updates ->type
698      when it encounters a SIGTRAMP_FRAME or DUMMY_FRAME.  This stops
699      get_prev_frame() overriding the frame's type when the INIT code
700      has previously set it.  This is really somewhat bogus.  The
701      initialization, as seen in create_new_frame(), should occur
702      before the INIT function has been called.  */
703   /* FIXME: cagney/2002-11-24: Can't yet directly call
704      pc_in_dummy_frame() as some architectures don't set
705      PC_IN_CALL_DUMMY() to generic_pc_in_call_dummy() (remember the
706      latter is implemented by simply calling pc_in_dummy_frame).  */
707   if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES && PC_IN_CALL_DUMMY (pc, 0, 0))
708     /* NOTE: cagney/2002-11-11: Does this even occure?  */
709     type = DUMMY_FRAME;
710   else
711     {
712       char *name;
713       find_pc_partial_function (pc, &name, NULL, NULL);
714       if (PC_IN_SIGTRAMP (fi->pc, name))
715         type = SIGTRAMP_FRAME;
716       else
717         type = NORMAL_FRAME;
718     }
719   fi->type = type;
720
721   if (INIT_EXTRA_FRAME_INFO_P ())
722     INIT_EXTRA_FRAME_INFO (0, fi);
723
724   /* Select/initialize an unwind function.  */
725   set_unwind_by_pc (fi->pc, fi->frame, &fi->register_unwind,
726                     &fi->pc_unwind);
727
728   return fi;
729 }
730
731 /* Return the frame that FRAME calls (NULL if FRAME is the innermost
732    frame).  */
733
734 struct frame_info *
735 get_next_frame (struct frame_info *frame)
736 {
737   return frame->next;
738 }
739
740 /* Flush the entire frame cache.  */
741
742 void
743 flush_cached_frames (void)
744 {
745   /* Since we can't really be sure what the first object allocated was */
746   obstack_free (&frame_cache_obstack, 0);
747   obstack_init (&frame_cache_obstack);
748
749   current_frame = NULL;         /* Invalidate cache */
750   select_frame (NULL);
751   annotate_frames_invalid ();
752 }
753
754 /* Flush the frame cache, and start a new one if necessary.  */
755
756 void
757 reinit_frame_cache (void)
758 {
759   flush_cached_frames ();
760
761   /* FIXME: The inferior_ptid test is wrong if there is a corefile.  */
762   if (PIDGET (inferior_ptid) != 0)
763     {
764       select_frame (get_current_frame ());
765     }
766 }
767
768 /* Return a structure containing various interesting information
769    about the frame that called NEXT_FRAME.  Returns NULL
770    if there is no such frame.  */
771
772 struct frame_info *
773 get_prev_frame (struct frame_info *next_frame)
774 {
775   CORE_ADDR address = 0;
776   struct frame_info *prev;
777   int fromleaf;
778
779   /* Return the inner-most frame, when the caller passes in NULL.  */
780   /* NOTE: cagney/2002-11-09: Not sure how this would happen.  The
781      caller should have previously obtained a valid frame using
782      get_selected_frame() and then called this code - only possibility
783      I can think of is code behaving badly.  */
784   if (next_frame == NULL)
785     {
786       /* NOTE: cagney/2002-11-09: There was a code segment here that
787          would error out when CURRENT_FRAME was NULL.  The comment
788          that went with it made the claim ...
789
790          ``This screws value_of_variable, which just wants a nice
791          clean NULL return from block_innermost_frame if there are no
792          frames.  I don't think I've ever seen this message happen
793          otherwise.  And returning NULL here is a perfectly legitimate
794          thing to do.''
795
796          Per the above, this code shouldn't even be called with a NULL
797          NEXT_FRAME.  */
798       return current_frame;
799     }
800
801   /* Only try to do the unwind once.  */
802   if (next_frame->prev_p)
803     return next_frame->prev;
804   next_frame->prev_p = 1;
805
806   /* On some machines it is possible to call a function without
807      setting up a stack frame for it.  On these machines, we
808      define this macro to take two args; a frameinfo pointer
809      identifying a frame and a variable to set or clear if it is
810      or isn't leafless.  */
811
812   /* Still don't want to worry about this except on the innermost
813      frame.  This macro will set FROMLEAF if NEXT_FRAME is a frameless
814      function invocation.  */
815   if (next_frame->next == NULL)
816     /* FIXME: 2002-11-09: Frameless functions can occure anywhere in
817        the frame chain, not just the inner most frame!  The generic,
818        per-architecture, frame code should handle this and the below
819        should simply be removed.  */
820     fromleaf = FRAMELESS_FUNCTION_INVOCATION (next_frame);
821   else
822     fromleaf = 0;
823
824   if (fromleaf)
825     /* A frameless inner-most frame.  The `FP' (which isn't an
826        architecture frame-pointer register!) of the caller is the same
827        as the callee.  */
828     /* FIXME: 2002-11-09: There isn't any reason to special case this
829        edge condition.  Instead the per-architecture code should hande
830        it locally.  */
831     address = get_frame_base (next_frame);
832   else
833     {
834       /* Two macros defined in tm.h specify the machine-dependent
835          actions to be performed here.
836
837          First, get the frame's chain-pointer.
838
839          If that is zero, the frame is the outermost frame or a leaf
840          called by the outermost frame.  This means that if start
841          calls main without a frame, we'll return 0 (which is fine
842          anyway).
843
844          Nope; there's a problem.  This also returns when the current
845          routine is a leaf of main.  This is unacceptable.  We move
846          this to after the ffi test; I'd rather have backtraces from
847          start go curfluy than have an abort called from main not show
848          main.  */
849       address = FRAME_CHAIN (next_frame);
850
851       /* FIXME: cagney/2002-06-08: There should be two tests here.
852          The first would check for a valid frame chain based on a user
853          selectable policy.  The default being ``stop at main'' (as
854          implemented by generic_func_frame_chain_valid()).  Other
855          policies would be available - stop at NULL, ....  The second
856          test, if provided by the target architecture, would check for
857          more exotic cases - most target architectures wouldn't bother
858          with this second case.  */
859       if (!FRAME_CHAIN_VALID (address, next_frame))
860         return 0;
861     }
862   if (address == 0)
863     return 0;
864
865   /* Create an initially zero previous frame.  */
866   prev = (struct frame_info *)
867     obstack_alloc (&frame_cache_obstack,
868                    sizeof (struct frame_info));
869   memset (prev, 0, sizeof (struct frame_info));
870
871   /* Link it in.  */
872   next_frame->prev = prev;
873   prev->next = next_frame;
874   prev->frame = address;
875   prev->level = next_frame->level + 1;
876   /* FIXME: cagney/2002-11-18: Should be setting the frame's type
877      here, before anything else, and not last.  Various INIT functions
878      are full of work-arounds for the frames type not being set
879      correctly from the word go.  Ulgh!  */
880   prev->type = NORMAL_FRAME;
881
882   /* This change should not be needed, FIXME!  We should determine
883      whether any targets *need* INIT_FRAME_PC to happen after
884      INIT_EXTRA_FRAME_INFO and come up with a simple way to express
885      what goes on here.
886
887      INIT_EXTRA_FRAME_INFO is called from two places: create_new_frame
888      (where the PC is already set up) and here (where it isn't).
889      INIT_FRAME_PC is only called from here, always after
890      INIT_EXTRA_FRAME_INFO.
891
892      The catch is the MIPS, where INIT_EXTRA_FRAME_INFO requires the
893      PC value (which hasn't been set yet).  Some other machines appear
894      to require INIT_EXTRA_FRAME_INFO before they can do
895      INIT_FRAME_PC.  Phoo.
896
897      We shouldn't need INIT_FRAME_PC_FIRST to add more complication to
898      an already overcomplicated part of GDB.  gnu@cygnus.com, 15Sep92.
899
900      Assuming that some machines need INIT_FRAME_PC after
901      INIT_EXTRA_FRAME_INFO, one possible scheme:
902
903      SETUP_INNERMOST_FRAME(): Default version is just create_new_frame
904      (read_fp ()), read_pc ()).  Machines with extra frame info would
905      do that (or the local equivalent) and then set the extra fields.
906
907      SETUP_ARBITRARY_FRAME(argc, argv): Only change here is that
908      create_new_frame would no longer init extra frame info;
909      SETUP_ARBITRARY_FRAME would have to do that.
910
911      INIT_PREV_FRAME(fromleaf, prev) Replace INIT_EXTRA_FRAME_INFO and
912      INIT_FRAME_PC.  This should also return a flag saying whether to
913      keep the new frame, or whether to discard it, because on some
914      machines (e.g.  mips) it is really awkward to have
915      FRAME_CHAIN_VALID called *before* INIT_EXTRA_FRAME_INFO (there is
916      no good way to get information deduced in FRAME_CHAIN_VALID into
917      the extra fields of the new frame).  std_frame_pc(fromleaf, prev)
918
919      This is the default setting for INIT_PREV_FRAME.  It just does
920      what the default INIT_FRAME_PC does.  Some machines will call it
921      from INIT_PREV_FRAME (either at the beginning, the end, or in the
922      middle).  Some machines won't use it.
923
924      kingdon@cygnus.com, 13Apr93, 31Jan94, 14Dec94.  */
925
926   /* NOTE: cagney/2002-11-09: Just ignore the above!  There is no
927      reason for things to be this complicated.
928
929      The trick is to assume that there is always a frame.  Instead of
930      special casing the inner-most frame, create fake frame
931      (containing the hardware registers) that is inner to the
932      user-visible inner-most frame (...) and then unwind from that.
933      That way architecture code can use use the standard
934      frame_XX_unwind() functions and not differentiate between the
935      inner most and any other case.
936
937      Since there is always a frame to unwind from, there is always
938      somewhere (NEXT_FRAME) to store all the info needed to construct
939      a new (previous) frame without having to first create it.  This
940      means that the convolution below - needing to carefully order a
941      frame's initialization - isn't needed.
942
943      The irony here though, is that FRAME_CHAIN(), at least for a more
944      up-to-date architecture, always calls FRAME_SAVED_PC(), and
945      FRAME_SAVED_PC() computes the PC but without first needing the
946      frame!  Instead of the convolution below, we could have simply
947      called FRAME_SAVED_PC() and been done with it!  Note that
948      FRAME_SAVED_PC() is being superseed by frame_pc_unwind() and that
949      function does have somewhere to cache that PC value.  */
950
951   INIT_FRAME_PC_FIRST (fromleaf, prev);
952
953   if (INIT_EXTRA_FRAME_INFO_P ())
954     INIT_EXTRA_FRAME_INFO (fromleaf, prev);
955
956   /* This entry is in the frame queue now, which is good since
957      FRAME_SAVED_PC may use that queue to figure out its value (see
958      tm-sparc.h).  We want the pc saved in the inferior frame. */
959   INIT_FRAME_PC (fromleaf, prev);
960
961   /* If ->frame and ->pc are unchanged, we are in the process of
962      getting ourselves into an infinite backtrace.  Some architectures
963      check this in FRAME_CHAIN or thereabouts, but it seems like there
964      is no reason this can't be an architecture-independent check.  */
965   if (prev->frame == next_frame->frame
966       && prev->pc == next_frame->pc)
967     {
968       next_frame->prev = NULL;
969       obstack_free (&frame_cache_obstack, prev);
970       return NULL;
971     }
972
973   /* Initialize the code used to unwind the frame PREV based on the PC
974      (and probably other architectural information).  The PC lets you
975      check things like the debug info at that point (dwarf2cfi?) and
976      use that to decide how the frame should be unwound.  */
977   set_unwind_by_pc (prev->pc, prev->frame, &prev->register_unwind,
978                     &prev->pc_unwind);
979
980   /* NOTE: cagney/2002-11-18: The code segments, found in
981      create_new_frame and get_prev_frame(), that initializes the
982      frames type is subtly different.  The latter only updates ->type
983      when it encounters a SIGTRAMP_FRAME or DUMMY_FRAME.  This stops
984      get_prev_frame() overriding the frame's type when the INIT code
985      has previously set it.  This is really somewhat bogus.  The
986      initialization, as seen in create_new_frame(), should occur
987      before the INIT function has been called.  */
988   /* FIXME: cagney/2002-11-24: Can't yet directly call
989      pc_in_dummy_frame() as some architectures don't set
990      PC_IN_CALL_DUMMY() to generic_pc_in_call_dummy() (remember the
991      latter is implemented by simply calling pc_in_dummy_frame).  */
992   if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
993       && PC_IN_CALL_DUMMY (prev->pc, 0, 0))
994     prev->type = DUMMY_FRAME;
995   else
996     {
997       /* FIXME: cagney/2002-11-10: This should be moved to before the
998          INIT code above so that the INIT code knows what the frame's
999          type is (in fact, for a [generic] dummy-frame, the type can
1000          be set and then the entire initialization can be skipped.
1001          Unforunatly, its the INIT code that sets the PC (Hmm, catch
1002          22).  */
1003       char *name;
1004       find_pc_partial_function (prev->pc, &name, NULL, NULL);
1005       if (PC_IN_SIGTRAMP (prev->pc, name))
1006         prev->type = SIGTRAMP_FRAME;
1007       /* FIXME: cagney/2002-11-11: Leave prev->type alone.  Some
1008          architectures are forcing the frame's type in INIT so we
1009          don't want to override it here.  Remember, NORMAL_FRAME == 0,
1010          so it all works (just :-/).  Once this initialization is
1011          moved to the start of this function, all this nastness will
1012          go away.  */
1013     }
1014
1015   return prev;
1016 }
1017
1018 CORE_ADDR
1019 get_frame_pc (struct frame_info *frame)
1020 {
1021   return frame->pc;
1022 }
1023
1024 static int
1025 pc_notcurrent (struct frame_info *frame)
1026 {
1027   /* If FRAME is not the innermost frame, that normally means that
1028      FRAME->pc points at the return instruction (which is *after* the
1029      call instruction), and we want to get the line containing the
1030      call (because the call is where the user thinks the program is).
1031      However, if the next frame is either a SIGTRAMP_FRAME or a
1032      DUMMY_FRAME, then the next frame will contain a saved interrupt
1033      PC and such a PC indicates the current (rather than next)
1034      instruction/line, consequently, for such cases, want to get the
1035      line containing fi->pc.  */
1036   struct frame_info *next = get_next_frame (frame);
1037   int notcurrent = (next != NULL && get_frame_type (next) == NORMAL_FRAME);
1038   return notcurrent;
1039 }
1040
1041 void
1042 find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
1043 {
1044   (*sal) = find_pc_line (frame->pc, pc_notcurrent (frame));
1045 }
1046
1047 /* Per "frame.h", return the ``address'' of the frame.  Code should
1048    really be using get_frame_id().  */
1049 CORE_ADDR
1050 get_frame_base (struct frame_info *fi)
1051 {
1052   return fi->frame;
1053 }
1054
1055 /* Level of the selected frame: 0 for innermost, 1 for its caller, ...
1056    or -1 for a NULL frame.  */
1057
1058 int
1059 frame_relative_level (struct frame_info *fi)
1060 {
1061   if (fi == NULL)
1062     return -1;
1063   else
1064     return fi->level;
1065 }
1066
1067 enum frame_type
1068 get_frame_type (struct frame_info *frame)
1069 {
1070   /* Some targets still don't use [generic] dummy frames.  Catch them
1071      here.  */
1072   if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES
1073       && deprecated_frame_in_dummy (frame))
1074     return DUMMY_FRAME;
1075   return frame->type;
1076 }
1077
1078 void
1079 deprecated_set_frame_type (struct frame_info *frame, enum frame_type type)
1080 {
1081   /* Arrrg!  See comment in "frame.h".  */
1082   frame->type = type;
1083 }
1084
1085 #ifdef FRAME_FIND_SAVED_REGS
1086 /* XXX - deprecated.  This is a compatibility function for targets
1087    that do not yet implement FRAME_INIT_SAVED_REGS.  */
1088 /* Find the addresses in which registers are saved in FRAME.  */
1089
1090 void
1091 get_frame_saved_regs (struct frame_info *frame,
1092                       struct frame_saved_regs *saved_regs_addr)
1093 {
1094   if (frame->saved_regs == NULL)
1095     {
1096       frame->saved_regs = (CORE_ADDR *)
1097         frame_obstack_alloc (SIZEOF_FRAME_SAVED_REGS);
1098     }
1099   if (saved_regs_addr == NULL)
1100     {
1101       struct frame_saved_regs saved_regs;
1102       FRAME_FIND_SAVED_REGS (frame, saved_regs);
1103       memcpy (frame->saved_regs, &saved_regs, SIZEOF_FRAME_SAVED_REGS);
1104     }
1105   else
1106     {
1107       FRAME_FIND_SAVED_REGS (frame, *saved_regs_addr);
1108       memcpy (frame->saved_regs, saved_regs_addr, SIZEOF_FRAME_SAVED_REGS);
1109     }
1110 }
1111 #endif
1112
1113 void
1114 _initialize_frame (void)
1115 {
1116   obstack_init (&frame_cache_obstack);
1117 }