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