]> Git Repo - binutils.git/blob - gdb/frame.c
2003-02-02 Andrew Cagney <[email protected]>
[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, 2003 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 "sentinel-frame.h"
35 #include "gdbcore.h"
36 #include "annotate.h"
37 #include "language.h"
38 #include "frame-unwind.h"
39 #include "command.h"
40 #include "gdbcmd.h"
41
42 /* Flag to indicate whether backtraces should stop at main.  */
43
44 static int backtrace_below_main;
45
46 /* Return a frame uniq ID that can be used to, later, re-find the
47    frame.  */
48
49 struct frame_id
50 get_frame_id (struct frame_info *fi)
51 {
52   if (fi == NULL)
53     {
54       return null_frame_id;
55     }
56   else
57     {
58       struct frame_id id;
59       id.base = fi->frame;
60       id.pc = fi->pc;
61       return id;
62     }
63 }
64
65 const struct frame_id null_frame_id; /* All zeros.  */
66
67 struct frame_id
68 frame_id_build (CORE_ADDR base, CORE_ADDR func_or_pc)
69 {
70   struct frame_id id;
71   id.base = base;
72   id.pc = func_or_pc;
73   return id;
74 }
75
76 int
77 frame_id_p (struct frame_id l)
78 {
79   /* The .func can be NULL but the .base cannot.  */
80   return (l.base != 0);
81 }
82
83 int
84 frame_id_eq (struct frame_id l, struct frame_id r)
85 {
86   /* If .base is different, the frames are different.  */
87   if (l.base != r.base)
88     return 0;
89   /* Add a test to check that the frame ID's are for the same function
90      here.  */
91   return 1;
92 }
93
94 int
95 frame_id_inner (struct frame_id l, struct frame_id r)
96 {
97   /* Only return non-zero when strictly inner than.  Note that, per
98      comment in "frame.h", there is some fuzz here.  Frameless
99      functions are not strictly inner than (same .base but different
100      .func).  */
101   return INNER_THAN (l.base, r.base);
102 }
103
104 struct frame_info *
105 frame_find_by_id (struct frame_id id)
106 {
107   struct frame_info *frame;
108
109   /* ZERO denotes the null frame, let the caller decide what to do
110      about it.  Should it instead return get_current_frame()?  */
111   if (!frame_id_p (id))
112     return NULL;
113
114   for (frame = get_current_frame ();
115        frame != NULL;
116        frame = get_prev_frame (frame))
117     {
118       struct frame_id this = get_frame_id (frame);
119       if (frame_id_eq (id, this))
120         /* An exact match.  */
121         return frame;
122       if (frame_id_inner (id, this))
123         /* Gone to far.  */
124         return NULL;
125       /* Either, we're not yet gone far enough out along the frame
126          chain (inner(this,id), or we're comparing frameless functions
127          (same .base, different .func, no test available).  Struggle
128          on until we've definitly gone to far.  */
129     }
130   return NULL;
131 }
132
133 CORE_ADDR
134 frame_pc_unwind (struct frame_info *frame)
135 {
136   if (!frame->pc_unwind_cache_p)
137     {
138       frame->pc_unwind_cache = frame->unwind->pc (frame, &frame->unwind_cache);
139       frame->pc_unwind_cache_p = 1;
140     }
141   return frame->pc_unwind_cache;
142 }
143
144 struct frame_id
145 frame_id_unwind (struct frame_info *frame)
146 {
147   if (!frame->id_unwind_cache_p)
148     {
149       frame->unwind->id (frame, &frame->unwind_cache, &frame->id_unwind_cache);
150       frame->id_unwind_cache_p = 1;
151     }
152   return frame->id_unwind_cache;
153 }
154
155 void
156 frame_pop (struct frame_info *frame)
157 {
158   /* FIXME: cagney/2003-01-18: There is probably a chicken-egg problem
159      with passing in current_regcache.  The pop function needs to be
160      written carefully so as to not overwrite registers whose [old]
161      values are needed to restore other registers.  Instead, this code
162      should pass in a scratch cache and, as a second step, restore the
163      registers using that.  */
164   frame->unwind->pop (frame, &frame->unwind_cache, current_regcache);
165   flush_cached_frames ();
166 }
167
168 void
169 frame_register_unwind (struct frame_info *frame, int regnum,
170                        int *optimizedp, enum lval_type *lvalp,
171                        CORE_ADDR *addrp, int *realnump, void *bufferp)
172 {
173   struct frame_unwind_cache *cache;
174
175   /* Require all but BUFFERP to be valid.  A NULL BUFFERP indicates
176      that the value proper does not need to be fetched.  */
177   gdb_assert (optimizedp != NULL);
178   gdb_assert (lvalp != NULL);
179   gdb_assert (addrp != NULL);
180   gdb_assert (realnump != NULL);
181   /* gdb_assert (bufferp != NULL); */
182
183   /* NOTE: cagney/2002-11-27: A program trying to unwind a NULL frame
184      is broken.  There is always a frame.  If there, for some reason,
185      isn't, there is some pretty busted code as it should have
186      detected the problem before calling here.  */
187   gdb_assert (frame != NULL);
188
189   /* Ask this frame to unwind its register.  */
190   frame->unwind->reg (frame, &frame->unwind_cache, regnum,
191                       optimizedp, lvalp, addrp, realnump, bufferp);
192 }
193
194 void
195 frame_register (struct frame_info *frame, int regnum,
196                 int *optimizedp, enum lval_type *lvalp,
197                 CORE_ADDR *addrp, int *realnump, void *bufferp)
198 {
199   /* Require all but BUFFERP to be valid.  A NULL BUFFERP indicates
200      that the value proper does not need to be fetched.  */
201   gdb_assert (optimizedp != NULL);
202   gdb_assert (lvalp != NULL);
203   gdb_assert (addrp != NULL);
204   gdb_assert (realnump != NULL);
205   /* gdb_assert (bufferp != NULL); */
206
207   /* Ulgh!  Old code that, for lval_register, sets ADDRP to the offset
208      of the register in the register cache.  It should instead return
209      the REGNUM corresponding to that register.  Translate the .  */
210   if (GET_SAVED_REGISTER_P ())
211     {
212       GET_SAVED_REGISTER (bufferp, optimizedp, addrp, frame, regnum, lvalp);
213       /* Compute the REALNUM if the caller wants it.  */
214       if (*lvalp == lval_register)
215         {
216           int regnum;
217           for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
218             {
219               if (*addrp == register_offset_hack (current_gdbarch, regnum))
220                 {
221                   *realnump = regnum;
222                   return;
223                 }
224             }
225           internal_error (__FILE__, __LINE__,
226                           "Failed to compute the register number corresponding"
227                           " to 0x%s", paddr_d (*addrp));
228         }
229       *realnump = -1;
230       return;
231     }
232
233   /* Obtain the register value by unwinding the register from the next
234      (more inner frame).  */
235   gdb_assert (frame != NULL && frame->next != NULL);
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 && frame->next != NULL);
290   frame_unwind_unsigned_register (frame->next, regnum, val);
291 }
292
293 void
294 frame_read_signed_register (struct frame_info *frame, int regnum,
295                             LONGEST *val)
296 {
297   /* See note above in frame_read_unsigned_register().  */
298   gdb_assert (frame != NULL && frame->next != NULL);
299   frame_unwind_signed_register (frame->next, 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   gdb_assert (frame != NULL && frame->next != NULL);
328   frame_register_unwind (frame->next, regnum, optimizedp, lvalp, addrp,
329                          &realnumx, raw_buffer);
330 }
331
332 void
333 get_saved_register (char *raw_buffer,
334                     int *optimized,
335                     CORE_ADDR *addrp,
336                     struct frame_info *frame,
337                     int regnum,
338                     enum lval_type *lval)
339 {
340   if (GET_SAVED_REGISTER_P ())
341     {
342       GET_SAVED_REGISTER (raw_buffer, optimized, addrp, frame, regnum, lval);
343       return;
344     }
345   generic_unwind_get_saved_register (raw_buffer, optimized, addrp, frame,
346                                      regnum, lval);
347 }
348
349 /* frame_register_read ()
350
351    Find and return the value of REGNUM for the specified stack frame.
352    The number of bytes copied is REGISTER_RAW_SIZE (REGNUM).
353
354    Returns 0 if the register value could not be found.  */
355
356 int
357 frame_register_read (struct frame_info *frame, int regnum, void *myaddr)
358 {
359   int optimized;
360   enum lval_type lval;
361   CORE_ADDR addr;
362   int realnum;
363   frame_register (frame, regnum, &optimized, &lval, &addr, &realnum, myaddr);
364
365   /* FIXME: cagney/2002-05-15: This test, is just bogus.
366
367      It indicates that the target failed to supply a value for a
368      register because it was "not available" at this time.  Problem
369      is, the target still has the register and so get saved_register()
370      may be returning a value saved on the stack.  */
371
372   if (register_cached (regnum) < 0)
373     return 0;                   /* register value not available */
374
375   return !optimized;
376 }
377
378
379 /* Map between a frame register number and its name.  A frame register
380    space is a superset of the cooked register space --- it also
381    includes builtin registers.  */
382
383 int
384 frame_map_name_to_regnum (const char *name, int len)
385 {
386   int i;
387
388   if (len < 0)
389     len = strlen (name);
390
391   /* Search register name space. */
392   for (i = 0; i < NUM_REGS + NUM_PSEUDO_REGS; i++)
393     if (REGISTER_NAME (i) && len == strlen (REGISTER_NAME (i))
394         && strncmp (name, REGISTER_NAME (i), len) == 0)
395       {
396         return i;
397       }
398
399   /* Try builtin registers.  */
400   i = builtin_reg_map_name_to_regnum (name, len);
401   if (i >= 0)
402     {
403       /* A builtin register doesn't fall into the architecture's
404          register range.  */
405       gdb_assert (i >= NUM_REGS + NUM_PSEUDO_REGS);
406       return i;
407     }
408
409   return -1;
410 }
411
412 const char *
413 frame_map_regnum_to_name (int regnum)
414 {
415   if (regnum < 0)
416     return NULL;
417   if (regnum < NUM_REGS + NUM_PSEUDO_REGS)
418     return REGISTER_NAME (regnum);
419   return builtin_reg_map_regnum_to_name (regnum);
420 }
421
422 /* Create a sentinel frame.  */
423
424 struct frame_info *
425 create_sentinel_frame (struct regcache *regcache)
426 {
427   struct frame_info *frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
428   frame->type = NORMAL_FRAME;
429   frame->level = -1;
430   /* Explicitly initialize the sentinel frame's cache.  Provide it
431      with the underlying regcache.  In the future additional
432      information, such as the frame's thread will be added.  */
433   frame->unwind_cache = sentinel_frame_cache (regcache);
434   /* For the moment there is only one sentinel frame implementation.  */
435   frame->unwind = sentinel_frame_unwind;
436   /* Link this frame back to itself.  The frame is self referential
437      (the unwound PC is the same as the pc), so make it so.  */
438   frame->next = frame;
439   /* Always unwind the PC as part of creating this frame.  This
440      ensures that the frame's PC points at something valid.  */
441   /* FIXME: cagney/2003-01-10: Problem here.  Unwinding a sentinel
442      frame's PC may require information such as the frame's thread's
443      stop reason.  Is it possible to get to that?  */
444   frame->pc = frame_pc_unwind (frame);
445   return frame;
446 }
447
448 /* Info about the innermost stack frame (contents of FP register) */
449
450 static struct frame_info *current_frame;
451
452 /* Cache for frame addresses already read by gdb.  Valid only while
453    inferior is stopped.  Control variables for the frame cache should
454    be local to this module.  */
455
456 static struct obstack frame_cache_obstack;
457
458 void *
459 frame_obstack_zalloc (unsigned long size)
460 {
461   void *data = obstack_alloc (&frame_cache_obstack, size);
462   memset (data, 0, size);
463   return data;
464 }
465
466 CORE_ADDR *
467 frame_saved_regs_zalloc (struct frame_info *fi)
468 {
469   fi->saved_regs = (CORE_ADDR *)
470     frame_obstack_zalloc (SIZEOF_FRAME_SAVED_REGS);
471   return fi->saved_regs;
472 }
473
474 CORE_ADDR *
475 get_frame_saved_regs (struct frame_info *fi)
476 {
477   return fi->saved_regs;
478 }
479
480 /* Return the innermost (currently executing) stack frame.  This is
481    split into two functions.  The function unwind_to_current_frame()
482    is wrapped in catch exceptions so that, even when the unwind of the
483    sentinel frame fails, the function still returns a stack frame.  */
484
485 static int
486 unwind_to_current_frame (struct ui_out *ui_out, void *args)
487 {
488   struct frame_info *frame = get_prev_frame (args);
489   /* A sentinel frame can fail to unwind, eg, because it's PC value
490      lands in somewhere like start.  */
491   if (frame == NULL)
492     return 1;
493   current_frame = frame;
494   return 0;
495 }
496
497 struct frame_info *
498 get_current_frame (void)
499 {
500   if (!target_has_stack)
501     error ("No stack.");
502   if (!target_has_registers)
503     error ("No registers.");
504   if (!target_has_memory)
505     error ("No memory.");
506   if (current_frame == NULL)
507     {
508       struct frame_info *sentinel_frame =
509         create_sentinel_frame (current_regcache);
510       if (catch_exceptions (uiout, unwind_to_current_frame, sentinel_frame,
511                             NULL, RETURN_MASK_ERROR) != 0)
512         {
513           /* Oops! Fake a current frame?  Is this useful?  It has a PC
514              of zero, for instance.  */
515           current_frame = sentinel_frame;
516         }
517     }
518   return current_frame;
519 }
520
521 /* The "selected" stack frame is used by default for local and arg
522    access.  May be zero, for no selected frame.  */
523
524 struct frame_info *deprecated_selected_frame;
525
526 /* Return the selected frame.  Always non-null (unless there isn't an
527    inferior sufficient for creating a frame) in which case an error is
528    thrown.  */
529
530 struct frame_info *
531 get_selected_frame (void)
532 {
533   if (deprecated_selected_frame == NULL)
534     /* Hey!  Don't trust this.  It should really be re-finding the
535        last selected frame of the currently selected thread.  This,
536        though, is better than nothing.  */
537     select_frame (get_current_frame ());
538   /* There is always a frame.  */
539   gdb_assert (deprecated_selected_frame != NULL);
540   return deprecated_selected_frame;
541 }
542
543 /* Select frame FI (or NULL - to invalidate the current frame).  */
544
545 void
546 select_frame (struct frame_info *fi)
547 {
548   register struct symtab *s;
549
550   deprecated_selected_frame = fi;
551   /* NOTE: cagney/2002-05-04: FI can be NULL.  This occures when the
552      frame is being invalidated.  */
553   if (selected_frame_level_changed_hook)
554     selected_frame_level_changed_hook (frame_relative_level (fi));
555
556   /* FIXME: kseitz/2002-08-28: It would be nice to call
557      selected_frame_level_changed_event right here, but due to limitations
558      in the current interfaces, we would end up flooding UIs with events
559      because select_frame is used extensively internally.
560
561      Once we have frame-parameterized frame (and frame-related) commands,
562      the event notification can be moved here, since this function will only
563      be called when the users selected frame is being changed. */
564
565   /* Ensure that symbols for this frame are read in.  Also, determine the
566      source language of this frame, and switch to it if desired.  */
567   if (fi)
568     {
569       s = find_pc_symtab (fi->pc);
570       if (s
571           && s->language != current_language->la_language
572           && s->language != language_unknown
573           && language_mode == language_mode_auto)
574         {
575           set_language (s->language);
576         }
577     }
578 }
579
580 /* Return the register saved in the simplistic ``saved_regs'' cache.
581    If the value isn't here AND a value is needed, try the next inner
582    most frame.  */
583
584 static void
585 frame_saved_regs_register_unwind (struct frame_info *frame, void **cache,
586                                   int regnum, int *optimizedp,
587                                   enum lval_type *lvalp, CORE_ADDR *addrp,
588                                   int *realnump, void *bufferp)
589 {
590   /* There is always a frame at this point.  And THIS is the frame
591      we're interested in.  */
592   gdb_assert (frame != NULL);
593   /* If we're using generic dummy frames, we'd better not be in a call
594      dummy.  (generic_call_dummy_register_unwind ought to have been called
595      instead.)  */
596   gdb_assert (!(DEPRECATED_USE_GENERIC_DUMMY_FRAMES
597                 && (get_frame_type (frame) == DUMMY_FRAME)));
598
599   /* Only (older) architectures that implement the
600      FRAME_INIT_SAVED_REGS method should be using this function.  */
601   gdb_assert (FRAME_INIT_SAVED_REGS_P ());
602
603   /* Load the saved_regs register cache.  */
604   if (get_frame_saved_regs (frame) == NULL)
605     FRAME_INIT_SAVED_REGS (frame);
606
607   if (get_frame_saved_regs (frame) != NULL
608       && get_frame_saved_regs (frame)[regnum] != 0)
609     {
610       if (regnum == SP_REGNUM)
611         {
612           /* SP register treated specially.  */
613           *optimizedp = 0;
614           *lvalp = not_lval;
615           *addrp = 0;
616           *realnump = -1;
617           if (bufferp != NULL)
618             store_address (bufferp, REGISTER_RAW_SIZE (regnum),
619                            get_frame_saved_regs (frame)[regnum]);
620         }
621       else
622         {
623           /* Any other register is saved in memory, fetch it but cache
624              a local copy of its value.  */
625           *optimizedp = 0;
626           *lvalp = lval_memory;
627           *addrp = get_frame_saved_regs (frame)[regnum];
628           *realnump = -1;
629           if (bufferp != NULL)
630             {
631 #if 1
632               /* Save each register value, as it is read in, in a
633                  frame based cache.  */
634               void **regs = (*cache);
635               if (regs == NULL)
636                 {
637                   int sizeof_cache = ((NUM_REGS + NUM_PSEUDO_REGS)
638                                       * sizeof (void *));
639                   regs = frame_obstack_zalloc (sizeof_cache);
640                   (*cache) = regs;
641                 }
642               if (regs[regnum] == NULL)
643                 {
644                   regs[regnum]
645                     = frame_obstack_zalloc (REGISTER_RAW_SIZE (regnum));
646                   read_memory (get_frame_saved_regs (frame)[regnum], regs[regnum],
647                                REGISTER_RAW_SIZE (regnum));
648                 }
649               memcpy (bufferp, regs[regnum], REGISTER_RAW_SIZE (regnum));
650 #else
651               /* Read the value in from memory.  */
652               read_memory (get_frame_saved_regs (frame)[regnum], bufferp,
653                            REGISTER_RAW_SIZE (regnum));
654 #endif
655             }
656         }
657       return;
658     }
659
660   /* No luck, assume this and the next frame have the same register
661      value.  Pass the request down the frame chain to the next frame.
662      Hopefully that will find the register's location, either in a
663      register or in memory.  */
664   frame_register (frame, regnum, optimizedp, lvalp, addrp, realnump,
665                   bufferp);
666 }
667
668 static CORE_ADDR
669 frame_saved_regs_pc_unwind (struct frame_info *frame, void **cache)
670 {
671   gdb_assert (FRAME_SAVED_PC_P ());
672   return FRAME_SAVED_PC (frame);
673 }
674         
675 static void
676 frame_saved_regs_id_unwind (struct frame_info *next_frame, void **cache,
677                             struct frame_id *id)
678 {
679   int fromleaf;
680   CORE_ADDR base;
681   CORE_ADDR pc;
682
683   /* Start out by assuming it's NULL.  */
684   (*id) = null_frame_id;
685
686   if (frame_relative_level (next_frame) <= 0)
687     /* FIXME: 2002-11-09: Frameless functions can occure anywhere in
688        the frame chain, not just the inner most frame!  The generic,
689        per-architecture, frame code should handle this and the below
690        should simply be removed.  */
691     fromleaf = FRAMELESS_FUNCTION_INVOCATION (next_frame);
692   else
693     fromleaf = 0;
694
695   if (fromleaf)
696     /* A frameless inner-most frame.  The `FP' (which isn't an
697        architecture frame-pointer register!) of the caller is the same
698        as the callee.  */
699     /* FIXME: 2002-11-09: There isn't any reason to special case this
700        edge condition.  Instead the per-architecture code should hande
701        it locally.  */
702     base = get_frame_base (next_frame);
703   else
704     {
705       /* Two macros defined in tm.h specify the machine-dependent
706          actions to be performed here.
707
708          First, get the frame's chain-pointer.
709
710          If that is zero, the frame is the outermost frame or a leaf
711          called by the outermost frame.  This means that if start
712          calls main without a frame, we'll return 0 (which is fine
713          anyway).
714
715          Nope; there's a problem.  This also returns when the current
716          routine is a leaf of main.  This is unacceptable.  We move
717          this to after the ffi test; I'd rather have backtraces from
718          start go curfluy than have an abort called from main not show
719          main.  */
720       gdb_assert (FRAME_CHAIN_P ());
721       base = FRAME_CHAIN (next_frame);
722
723       if (!frame_chain_valid (base, next_frame))
724         return;
725     }
726   if (base == 0)
727     return;
728
729   /* FIXME: cagney/2002-06-08: This should probably return the frame's
730      function and not the PC (a.k.a. resume address).  */
731   pc = frame_pc_unwind (next_frame);
732   id->pc = pc;
733   id->base = base;
734 }
735         
736 static void
737 frame_saved_regs_pop (struct frame_info *fi, void **cache,
738                       struct regcache *regcache)
739 {
740   gdb_assert (POP_FRAME_P ());
741   POP_FRAME;
742 }
743
744 const struct frame_unwind trad_frame_unwinder = {
745   frame_saved_regs_pop,
746   frame_saved_regs_pc_unwind,
747   frame_saved_regs_id_unwind,
748   frame_saved_regs_register_unwind
749 };
750 const struct frame_unwind *trad_frame_unwind = &trad_frame_unwinder;
751
752
753 /* Function: get_saved_register
754    Find register number REGNUM relative to FRAME and put its (raw,
755    target format) contents in *RAW_BUFFER.  
756
757    Set *OPTIMIZED if the variable was optimized out (and thus can't be
758    fetched).  Note that this is never set to anything other than zero
759    in this implementation.
760
761    Set *LVAL to lval_memory, lval_register, or not_lval, depending on
762    whether the value was fetched from memory, from a register, or in a
763    strange and non-modifiable way (e.g. a frame pointer which was
764    calculated rather than fetched).  We will use not_lval for values
765    fetched from generic dummy frames.
766
767    Set *ADDRP to the address, either in memory or as a REGISTER_BYTE
768    offset into the registers array.  If the value is stored in a dummy
769    frame, set *ADDRP to zero.
770
771    To use this implementation, define a function called
772    "get_saved_register" in your target code, which simply passes all
773    of its arguments to this function.
774
775    The argument RAW_BUFFER must point to aligned memory.  */
776
777 void
778 deprecated_generic_get_saved_register (char *raw_buffer, int *optimized,
779                                        CORE_ADDR *addrp,
780                                        struct frame_info *frame, int regnum,
781                                        enum lval_type *lval)
782 {
783   if (!target_has_registers)
784     error ("No registers.");
785
786   gdb_assert (FRAME_INIT_SAVED_REGS_P ());
787
788   /* Normal systems don't optimize out things with register numbers.  */
789   if (optimized != NULL)
790     *optimized = 0;
791
792   if (addrp)                    /* default assumption: not found in memory */
793     *addrp = 0;
794
795   /* Note: since the current frame's registers could only have been
796      saved by frames INTERIOR TO the current frame, we skip examining
797      the current frame itself: otherwise, we would be getting the
798      previous frame's registers which were saved by the current frame.  */
799
800   if (frame != NULL)
801     {
802       for (frame = get_next_frame (frame);
803            frame_relative_level (frame) >= 0;
804            frame = get_next_frame (frame))
805         {
806           if (get_frame_type (frame) == DUMMY_FRAME)
807             {
808               if (lval)         /* found it in a CALL_DUMMY frame */
809                 *lval = not_lval;
810               if (raw_buffer)
811                 /* FIXME: cagney/2002-06-26: This should be via the
812                    gdbarch_register_read() method so that it, on the
813                    fly, constructs either a raw or pseudo register
814                    from the raw register cache.  */
815                 regcache_raw_read
816                   (generic_find_dummy_frame (get_frame_pc (frame),
817                                              get_frame_base (frame)),
818                    regnum, raw_buffer);
819               return;
820             }
821
822           FRAME_INIT_SAVED_REGS (frame);
823           if (get_frame_saved_regs (frame) != NULL
824               && get_frame_saved_regs (frame)[regnum] != 0)
825             {
826               if (lval)         /* found it saved on the stack */
827                 *lval = lval_memory;
828               if (regnum == SP_REGNUM)
829                 {
830                   if (raw_buffer)       /* SP register treated specially */
831                     store_address (raw_buffer, REGISTER_RAW_SIZE (regnum),
832                                    get_frame_saved_regs (frame)[regnum]);
833                 }
834               else
835                 {
836                   if (addrp)    /* any other register */
837                     *addrp = get_frame_saved_regs (frame)[regnum];
838                   if (raw_buffer)
839                     read_memory (get_frame_saved_regs (frame)[regnum], raw_buffer,
840                                  REGISTER_RAW_SIZE (regnum));
841                 }
842               return;
843             }
844         }
845     }
846
847   /* If we get thru the loop to this point, it means the register was
848      not saved in any frame.  Return the actual live-register value.  */
849
850   if (lval)                     /* found it in a live register */
851     *lval = lval_register;
852   if (addrp)
853     *addrp = REGISTER_BYTE (regnum);
854   if (raw_buffer)
855     deprecated_read_register_gen (regnum, raw_buffer);
856 }
857
858 /* Determine the frame's type based on its PC.  */
859
860 static enum frame_type
861 frame_type_from_pc (CORE_ADDR pc)
862 {
863   /* FIXME: cagney/2002-11-24: Can't yet directly call
864      pc_in_dummy_frame() as some architectures don't set
865      PC_IN_CALL_DUMMY() to generic_pc_in_call_dummy() (remember the
866      latter is implemented by simply calling pc_in_dummy_frame).  */
867   if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
868       && DEPRECATED_PC_IN_CALL_DUMMY (pc, 0, 0))
869     return DUMMY_FRAME;
870   else
871     {
872       char *name;
873       find_pc_partial_function (pc, &name, NULL, NULL);
874       if (PC_IN_SIGTRAMP (pc, name))
875         return SIGTRAMP_FRAME;
876       else
877         return NORMAL_FRAME;
878     }
879 }
880
881 /* Create an arbitrary (i.e. address specified by user) or innermost frame.
882    Always returns a non-NULL value.  */
883
884 struct frame_info *
885 create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
886 {
887   struct frame_info *fi;
888
889   fi = frame_obstack_zalloc (sizeof (struct frame_info));
890
891   fi->frame = addr;
892   fi->pc = pc;
893   fi->next = create_sentinel_frame (current_regcache);
894   fi->type = frame_type_from_pc (pc);
895
896   if (INIT_EXTRA_FRAME_INFO_P ())
897     INIT_EXTRA_FRAME_INFO (0, fi);
898
899   /* Select/initialize an unwind function.  */
900   fi->unwind = frame_unwind_find_by_pc (current_gdbarch, fi->pc);
901
902   return fi;
903 }
904
905 /* Return the frame that FRAME calls (NULL if FRAME is the innermost
906    frame).  Be careful to not fall off the bottom of the frame chain
907    and onto the sentinel frame.  */
908
909 struct frame_info *
910 get_next_frame (struct frame_info *frame)
911 {
912   if (frame->level > 0)
913     return frame->next;
914   else
915     return NULL;
916 }
917
918 /* Flush the entire frame cache.  */
919
920 void
921 flush_cached_frames (void)
922 {
923   /* Since we can't really be sure what the first object allocated was */
924   obstack_free (&frame_cache_obstack, 0);
925   obstack_init (&frame_cache_obstack);
926
927   current_frame = NULL;         /* Invalidate cache */
928   select_frame (NULL);
929   annotate_frames_invalid ();
930 }
931
932 /* Flush the frame cache, and start a new one if necessary.  */
933
934 void
935 reinit_frame_cache (void)
936 {
937   flush_cached_frames ();
938
939   /* FIXME: The inferior_ptid test is wrong if there is a corefile.  */
940   if (PIDGET (inferior_ptid) != 0)
941     {
942       select_frame (get_current_frame ());
943     }
944 }
945
946 /* Create the previous frame using the deprecated methods
947    INIT_EXTRA_INFO, INIT_FRAME_PC and INIT_FRAME_PC_FIRST.  */
948
949 static struct frame_info *
950 legacy_get_prev_frame (struct frame_info *next_frame)
951 {
952   CORE_ADDR address = 0;
953   struct frame_info *prev;
954   int fromleaf;
955
956   /* This code only works on normal frames.  A sentinel frame, where
957      the level is -1, should never reach this code.  */
958   gdb_assert (next_frame->level >= 0);
959
960   /* On some machines it is possible to call a function without
961      setting up a stack frame for it.  On these machines, we
962      define this macro to take two args; a frameinfo pointer
963      identifying a frame and a variable to set or clear if it is
964      or isn't leafless.  */
965
966   /* Still don't want to worry about this except on the innermost
967      frame.  This macro will set FROMLEAF if NEXT_FRAME is a frameless
968      function invocation.  */
969   if (next_frame->level == 0)
970     /* FIXME: 2002-11-09: Frameless functions can occure anywhere in
971        the frame chain, not just the inner most frame!  The generic,
972        per-architecture, frame code should handle this and the below
973        should simply be removed.  */
974     fromleaf = FRAMELESS_FUNCTION_INVOCATION (next_frame);
975   else
976     fromleaf = 0;
977
978   if (fromleaf)
979     /* A frameless inner-most frame.  The `FP' (which isn't an
980        architecture frame-pointer register!) of the caller is the same
981        as the callee.  */
982     /* FIXME: 2002-11-09: There isn't any reason to special case this
983        edge condition.  Instead the per-architecture code should hande
984        it locally.  */
985     address = get_frame_base (next_frame);
986   else
987     {
988       /* Two macros defined in tm.h specify the machine-dependent
989          actions to be performed here.
990
991          First, get the frame's chain-pointer.
992
993          If that is zero, the frame is the outermost frame or a leaf
994          called by the outermost frame.  This means that if start
995          calls main without a frame, we'll return 0 (which is fine
996          anyway).
997
998          Nope; there's a problem.  This also returns when the current
999          routine is a leaf of main.  This is unacceptable.  We move
1000          this to after the ffi test; I'd rather have backtraces from
1001          start go curfluy than have an abort called from main not show
1002          main.  */
1003       gdb_assert (FRAME_CHAIN_P ());
1004       address = FRAME_CHAIN (next_frame);
1005
1006       if (!frame_chain_valid (address, next_frame))
1007         return 0;
1008     }
1009   if (address == 0)
1010     return 0;
1011
1012   /* Create an initially zero previous frame.  */
1013   prev = frame_obstack_zalloc (sizeof (struct frame_info));
1014
1015   /* Link it in.  */
1016   next_frame->prev = prev;
1017   prev->next = next_frame;
1018   prev->frame = address;
1019   prev->level = next_frame->level + 1;
1020   /* FIXME: cagney/2002-11-18: Should be setting the frame's type
1021      here, before anything else, and not last.  Various INIT functions
1022      are full of work-arounds for the frames type not being set
1023      correctly from the word go.  Ulgh!  */
1024   prev->type = NORMAL_FRAME;
1025
1026   /* This change should not be needed, FIXME!  We should determine
1027      whether any targets *need* DEPRECATED_INIT_FRAME_PC to happen
1028      after INIT_EXTRA_FRAME_INFO and come up with a simple way to
1029      express what goes on here.
1030
1031      INIT_EXTRA_FRAME_INFO is called from two places: create_new_frame
1032      (where the PC is already set up) and here (where it isn't).
1033      DEPRECATED_INIT_FRAME_PC is only called from here, always after
1034      INIT_EXTRA_FRAME_INFO.
1035
1036      The catch is the MIPS, where INIT_EXTRA_FRAME_INFO requires the
1037      PC value (which hasn't been set yet).  Some other machines appear
1038      to require INIT_EXTRA_FRAME_INFO before they can do
1039      DEPRECATED_INIT_FRAME_PC.  Phoo.
1040
1041      We shouldn't need DEPRECATED_INIT_FRAME_PC_FIRST to add more
1042      complication to an already overcomplicated part of GDB.
1043      [email protected], 15Sep92.
1044
1045      Assuming that some machines need DEPRECATED_INIT_FRAME_PC after
1046      INIT_EXTRA_FRAME_INFO, one possible scheme:
1047
1048      SETUP_INNERMOST_FRAME(): Default version is just create_new_frame
1049      (read_fp ()), read_pc ()).  Machines with extra frame info would
1050      do that (or the local equivalent) and then set the extra fields.
1051
1052      SETUP_ARBITRARY_FRAME(argc, argv): Only change here is that
1053      create_new_frame would no longer init extra frame info;
1054      SETUP_ARBITRARY_FRAME would have to do that.
1055
1056      INIT_PREV_FRAME(fromleaf, prev) Replace INIT_EXTRA_FRAME_INFO and
1057      DEPRECATED_INIT_FRAME_PC.  This should also return a flag saying
1058      whether to keep the new frame, or whether to discard it, because
1059      on some machines (e.g.  mips) it is really awkward to have
1060      FRAME_CHAIN_VALID called *before* INIT_EXTRA_FRAME_INFO (there is
1061      no good way to get information deduced in FRAME_CHAIN_VALID into
1062      the extra fields of the new frame).  std_frame_pc(fromleaf, prev)
1063
1064      This is the default setting for INIT_PREV_FRAME.  It just does
1065      what the default DEPRECATED_INIT_FRAME_PC does.  Some machines
1066      will call it from INIT_PREV_FRAME (either at the beginning, the
1067      end, or in the middle).  Some machines won't use it.
1068
1069      [email protected], 13Apr93, 31Jan94, 14Dec94.  */
1070
1071   /* NOTE: cagney/2002-11-09: Just ignore the above!  There is no
1072      reason for things to be this complicated.
1073
1074      The trick is to assume that there is always a frame.  Instead of
1075      special casing the inner-most frame, create fake frame
1076      (containing the hardware registers) that is inner to the
1077      user-visible inner-most frame (...) and then unwind from that.
1078      That way architecture code can use use the standard
1079      frame_XX_unwind() functions and not differentiate between the
1080      inner most and any other case.
1081
1082      Since there is always a frame to unwind from, there is always
1083      somewhere (NEXT_FRAME) to store all the info needed to construct
1084      a new (previous) frame without having to first create it.  This
1085      means that the convolution below - needing to carefully order a
1086      frame's initialization - isn't needed.
1087
1088      The irony here though, is that FRAME_CHAIN(), at least for a more
1089      up-to-date architecture, always calls FRAME_SAVED_PC(), and
1090      FRAME_SAVED_PC() computes the PC but without first needing the
1091      frame!  Instead of the convolution below, we could have simply
1092      called FRAME_SAVED_PC() and been done with it!  Note that
1093      FRAME_SAVED_PC() is being superseed by frame_pc_unwind() and that
1094      function does have somewhere to cache that PC value.  */
1095
1096   if (DEPRECATED_INIT_FRAME_PC_FIRST_P ())
1097     prev->pc = (DEPRECATED_INIT_FRAME_PC_FIRST (fromleaf, prev));
1098
1099   if (INIT_EXTRA_FRAME_INFO_P ())
1100     INIT_EXTRA_FRAME_INFO (fromleaf, prev);
1101
1102   /* This entry is in the frame queue now, which is good since
1103      FRAME_SAVED_PC may use that queue to figure out its value (see
1104      tm-sparc.h).  We want the pc saved in the inferior frame. */
1105   if (DEPRECATED_INIT_FRAME_PC_P ())
1106     prev->pc = DEPRECATED_INIT_FRAME_PC (fromleaf, prev);
1107
1108   /* If ->frame and ->pc are unchanged, we are in the process of
1109      getting ourselves into an infinite backtrace.  Some architectures
1110      check this in FRAME_CHAIN or thereabouts, but it seems like there
1111      is no reason this can't be an architecture-independent check.  */
1112   if (prev->frame == next_frame->frame
1113       && prev->pc == next_frame->pc)
1114     {
1115       next_frame->prev = NULL;
1116       obstack_free (&frame_cache_obstack, prev);
1117       return NULL;
1118     }
1119
1120   /* Initialize the code used to unwind the frame PREV based on the PC
1121      (and probably other architectural information).  The PC lets you
1122      check things like the debug info at that point (dwarf2cfi?) and
1123      use that to decide how the frame should be unwound.  */
1124   prev->unwind = frame_unwind_find_by_pc (current_gdbarch, prev->pc);
1125
1126   /* NOTE: cagney/2002-11-18: The code segments, found in
1127      create_new_frame and get_prev_frame(), that initializes the
1128      frames type is subtly different.  The latter only updates ->type
1129      when it encounters a SIGTRAMP_FRAME or DUMMY_FRAME.  This stops
1130      get_prev_frame() overriding the frame's type when the INIT code
1131      has previously set it.  This is really somewhat bogus.  The
1132      initialization, as seen in create_new_frame(), should occur
1133      before the INIT function has been called.  */
1134   if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
1135       && (DEPRECATED_PC_IN_CALL_DUMMY_P ()
1136           ? DEPRECATED_PC_IN_CALL_DUMMY (prev->pc, 0, 0)
1137           : pc_in_dummy_frame (prev->pc)))
1138     prev->type = DUMMY_FRAME;
1139   else
1140     {
1141       /* FIXME: cagney/2002-11-10: This should be moved to before the
1142          INIT code above so that the INIT code knows what the frame's
1143          type is (in fact, for a [generic] dummy-frame, the type can
1144          be set and then the entire initialization can be skipped.
1145          Unforunatly, its the INIT code that sets the PC (Hmm, catch
1146          22).  */
1147       char *name;
1148       find_pc_partial_function (prev->pc, &name, NULL, NULL);
1149       if (PC_IN_SIGTRAMP (prev->pc, name))
1150         prev->type = SIGTRAMP_FRAME;
1151       /* FIXME: cagney/2002-11-11: Leave prev->type alone.  Some
1152          architectures are forcing the frame's type in INIT so we
1153          don't want to override it here.  Remember, NORMAL_FRAME == 0,
1154          so it all works (just :-/).  Once this initialization is
1155          moved to the start of this function, all this nastness will
1156          go away.  */
1157     }
1158
1159   return prev;
1160 }
1161
1162 /* Return a structure containing various interesting information
1163    about the frame that called NEXT_FRAME.  Returns NULL
1164    if there is no such frame.  */
1165
1166 struct frame_info *
1167 get_prev_frame (struct frame_info *next_frame)
1168 {
1169   struct frame_info *prev_frame;
1170
1171   /* Return the inner-most frame, when the caller passes in NULL.  */
1172   /* NOTE: cagney/2002-11-09: Not sure how this would happen.  The
1173      caller should have previously obtained a valid frame using
1174      get_selected_frame() and then called this code - only possibility
1175      I can think of is code behaving badly.
1176
1177      NOTE: cagney/2003-01-10: Talk about code behaving badly.  Check
1178      block_innermost_frame().  It does the sequence: frame = NULL;
1179      while (1) { frame = get_prev_frame (frame); .... }.  Ulgh!  Why
1180      it couldn't be written better, I don't know.
1181
1182      NOTE: cagney/2003-01-11: I suspect what is happening is
1183      block_innermost_frame() is, when the target has no state
1184      (registers, memory, ...), still calling this function.  The
1185      assumption being that this function will return NULL indicating
1186      that a frame isn't possible, rather than checking that the target
1187      has state and then calling get_current_frame() and
1188      get_prev_frame().  This is a guess mind.  */
1189   if (next_frame == NULL)
1190     {
1191       /* NOTE: cagney/2002-11-09: There was a code segment here that
1192          would error out when CURRENT_FRAME was NULL.  The comment
1193          that went with it made the claim ...
1194
1195          ``This screws value_of_variable, which just wants a nice
1196          clean NULL return from block_innermost_frame if there are no
1197          frames.  I don't think I've ever seen this message happen
1198          otherwise.  And returning NULL here is a perfectly legitimate
1199          thing to do.''
1200
1201          Per the above, this code shouldn't even be called with a NULL
1202          NEXT_FRAME.  */
1203       return current_frame;
1204     }
1205
1206   /* There is always a frame.  If this assertion fails, suspect that
1207      something should be calling get_selected_frame() or
1208      get_current_frame().  */
1209   gdb_assert (next_frame != NULL);
1210
1211   if (next_frame->level >= 0
1212       && !backtrace_below_main
1213       && inside_main_func (get_frame_pc (next_frame)))
1214     /* Don't unwind past main(), bug always unwind the sentinel frame.
1215        Note, this is done _before_ the frame has been marked as
1216        previously unwound.  That way if the user later decides to
1217        allow unwinds past main(), that just happens.  */
1218     return NULL;
1219
1220   /* Only try to do the unwind once.  */
1221   if (next_frame->prev_p)
1222     return next_frame->prev;
1223   next_frame->prev_p = 1;
1224
1225   /* If we're inside the entry file, it isn't valid.  */
1226   /* NOTE: drow/2002-12-25: should there be a way to disable this
1227      check?  It assumes a single small entry file, and the way some
1228      debug readers (e.g.  dbxread) figure out which object is the
1229      entry file is somewhat hokey.  */
1230   /* NOTE: cagney/2003-01-10: If there is a way of disabling this test
1231      then it should probably be moved to before the ->prev_p test,
1232      above.  */
1233   if (inside_entry_file (get_frame_pc (next_frame)))
1234       return NULL;
1235
1236   /* If any of the old frame initialization methods are around, use
1237      the legacy get_prev_frame method.  Just don't try to unwind a
1238      sentinel frame using that method - it doesn't work.  All sentinal
1239      frames use the new unwind code.  */
1240   if ((DEPRECATED_INIT_FRAME_PC_P ()
1241        || DEPRECATED_INIT_FRAME_PC_FIRST_P ()
1242        || INIT_EXTRA_FRAME_INFO_P ()
1243        || FRAME_CHAIN_P ())
1244       && next_frame->level >= 0)
1245     return legacy_get_prev_frame (next_frame);
1246
1247   /* Allocate the new frame but do not wire it in to the frame chain.
1248      Some (bad) code in INIT_FRAME_EXTRA_INFO tries to look along
1249      frame->next to pull some fancy tricks (of course such code is, by
1250      definition, recursive).  Try to prevent it.
1251
1252      There is no reason to worry about memory leaks, should the
1253      remainder of the function fail.  The allocated memory will be
1254      quickly reclaimed when the frame cache is flushed, and the `we've
1255      been here before' check above will stop repeated memory
1256      allocation calls.  */
1257   prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
1258   prev_frame->level = next_frame->level + 1;
1259
1260   /* Try to unwind the PC.  If that doesn't work, assume we've reached
1261      the oldest frame and simply return.  Is there a better sentinal
1262      value?  The unwound PC value is then used to initialize the new
1263      previous frame's type.
1264
1265      Note that the pc-unwind is intentionally performed before the
1266      frame chain.  This is ok since, for old targets, both
1267      frame_pc_unwind (nee, FRAME_SAVED_PC) and FRAME_CHAIN()) assume
1268      NEXT_FRAME's data structures have already been initialized (using
1269      INIT_EXTRA_FRAME_INFO) and hence the call order doesn't matter.
1270
1271      By unwinding the PC first, it becomes possible to, in the case of
1272      a dummy frame, avoid also unwinding the frame ID.  This is
1273      because (well ignoring the PPC) a dummy frame can be located
1274      using NEXT_FRAME's frame ID.  */
1275
1276   prev_frame->pc = frame_pc_unwind (next_frame);
1277   if (prev_frame->pc == 0)
1278     /* The allocated PREV_FRAME will be reclaimed when the frame
1279        obstack is next purged.  */
1280     return NULL;
1281   prev_frame->type = frame_type_from_pc (prev_frame->pc);
1282
1283   /* Set the unwind functions based on that identified PC.  */
1284   prev_frame->unwind = frame_unwind_find_by_pc (current_gdbarch,
1285                                                 prev_frame->pc);
1286
1287   /* FIXME: cagney/2003-01-13: A dummy frame doesn't need to unwind
1288      the frame ID because the frame ID comes from the previous frame.
1289      The other frames do though.  True?  */
1290   {
1291     /* FIXME: cagney/2002-12-18: Instead of this hack, should just
1292        save the frame ID directly.  */
1293     struct frame_id id = frame_id_unwind (next_frame);
1294     if (!frame_id_p (id))
1295       return NULL;
1296     prev_frame->frame = id.base;
1297   }
1298
1299   /* Link it in.  */
1300   next_frame->prev = prev_frame;
1301   prev_frame->next = next_frame;
1302
1303   /* FIXME: cagney/2002-01-19: This call will go away.  Instead of
1304      initializing extra info, all frames will use the frame_cache
1305      (passed to the unwind functions) to store additional frame info.
1306      Unfortunatly legacy targets can't use legacy_get_prev_frame() to
1307      unwind the sentinel frame and, consequently, are forced to take
1308      this code path and rely on the below call to INIT_EXTR_FRAME_INFO
1309      to initialize the inner-most frame.  */
1310   if (INIT_EXTRA_FRAME_INFO_P ())
1311     {
1312       gdb_assert (prev_frame->level == 0);
1313       INIT_EXTRA_FRAME_INFO (0, prev_frame);
1314     }
1315
1316   return prev_frame;
1317 }
1318
1319 CORE_ADDR
1320 get_frame_pc (struct frame_info *frame)
1321 {
1322   return frame->pc;
1323 }
1324
1325 static int
1326 pc_notcurrent (struct frame_info *frame)
1327 {
1328   /* If FRAME is not the innermost frame, that normally means that
1329      FRAME->pc points at the return instruction (which is *after* the
1330      call instruction), and we want to get the line containing the
1331      call (because the call is where the user thinks the program is).
1332      However, if the next frame is either a SIGTRAMP_FRAME or a
1333      DUMMY_FRAME, then the next frame will contain a saved interrupt
1334      PC and such a PC indicates the current (rather than next)
1335      instruction/line, consequently, for such cases, want to get the
1336      line containing fi->pc.  */
1337   struct frame_info *next = get_next_frame (frame);
1338   int notcurrent = (next != NULL && get_frame_type (next) == NORMAL_FRAME);
1339   return notcurrent;
1340 }
1341
1342 void
1343 find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
1344 {
1345   (*sal) = find_pc_line (frame->pc, pc_notcurrent (frame));
1346 }
1347
1348 /* Per "frame.h", return the ``address'' of the frame.  Code should
1349    really be using get_frame_id().  */
1350 CORE_ADDR
1351 get_frame_base (struct frame_info *fi)
1352 {
1353   return fi->frame;
1354 }
1355
1356 /* Level of the selected frame: 0 for innermost, 1 for its caller, ...
1357    or -1 for a NULL frame.  */
1358
1359 int
1360 frame_relative_level (struct frame_info *fi)
1361 {
1362   if (fi == NULL)
1363     return -1;
1364   else
1365     return fi->level;
1366 }
1367
1368 enum frame_type
1369 get_frame_type (struct frame_info *frame)
1370 {
1371   /* Some targets still don't use [generic] dummy frames.  Catch them
1372      here.  */
1373   if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES
1374       && deprecated_frame_in_dummy (frame))
1375     return DUMMY_FRAME;
1376   return frame->type;
1377 }
1378
1379 void
1380 deprecated_set_frame_type (struct frame_info *frame, enum frame_type type)
1381 {
1382   /* Arrrg!  See comment in "frame.h".  */
1383   frame->type = type;
1384 }
1385
1386 #ifdef FRAME_FIND_SAVED_REGS
1387 /* XXX - deprecated.  This is a compatibility function for targets
1388    that do not yet implement FRAME_INIT_SAVED_REGS.  */
1389 /* Find the addresses in which registers are saved in FRAME.  */
1390
1391 void
1392 deprecated_get_frame_saved_regs (struct frame_info *frame,
1393                                  struct frame_saved_regs *saved_regs_addr)
1394 {
1395   if (frame->saved_regs == NULL)
1396     {
1397       frame->saved_regs = (CORE_ADDR *)
1398         frame_obstack_zalloc (SIZEOF_FRAME_SAVED_REGS);
1399     }
1400   if (saved_regs_addr == NULL)
1401     {
1402       struct frame_saved_regs saved_regs;
1403       FRAME_FIND_SAVED_REGS (frame, saved_regs);
1404       memcpy (frame->saved_regs, &saved_regs, SIZEOF_FRAME_SAVED_REGS);
1405     }
1406   else
1407     {
1408       FRAME_FIND_SAVED_REGS (frame, *saved_regs_addr);
1409       memcpy (frame->saved_regs, saved_regs_addr, SIZEOF_FRAME_SAVED_REGS);
1410     }
1411 }
1412 #endif
1413
1414 struct frame_extra_info *
1415 get_frame_extra_info (struct frame_info *fi)
1416 {
1417   return fi->extra_info;
1418 }
1419
1420 struct frame_extra_info *
1421 frame_extra_info_zalloc (struct frame_info *fi, long size)
1422 {
1423   fi->extra_info = frame_obstack_zalloc (size);
1424   return fi->extra_info;
1425 }
1426
1427 void
1428 deprecated_update_frame_pc_hack (struct frame_info *frame, CORE_ADDR pc)
1429 {
1430   /* See comment in "frame.h".  */
1431   gdb_assert (frame->next != NULL);
1432   frame->pc = pc;
1433 }
1434
1435 void
1436 deprecated_update_frame_base_hack (struct frame_info *frame, CORE_ADDR base)
1437 {
1438   /* See comment in "frame.h".  */
1439   frame->frame = base;
1440 }
1441
1442 void
1443 deprecated_set_frame_saved_regs_hack (struct frame_info *frame,
1444                                       CORE_ADDR *saved_regs)
1445 {
1446   frame->saved_regs = saved_regs;
1447 }
1448
1449 void
1450 deprecated_set_frame_extra_info_hack (struct frame_info *frame,
1451                                       struct frame_extra_info *extra_info)
1452 {
1453   frame->extra_info = extra_info;
1454 }
1455
1456 void
1457 deprecated_set_frame_next_hack (struct frame_info *fi,
1458                                 struct frame_info *next)
1459 {
1460   fi->next = next;
1461 }
1462
1463 void
1464 deprecated_set_frame_prev_hack (struct frame_info *fi,
1465                                 struct frame_info *prev)
1466 {
1467   fi->prev = prev;
1468 }
1469
1470 struct context *
1471 deprecated_get_frame_context (struct frame_info *fi)
1472 {
1473   return fi->context;
1474 }
1475
1476 void
1477 deprecated_set_frame_context (struct frame_info *fi,
1478                               struct context *context)
1479 {
1480   fi->context = context;
1481 }
1482
1483 struct frame_info *
1484 deprecated_frame_xmalloc (void)
1485 {
1486   struct frame_info *frame = XMALLOC (struct frame_info);
1487   memset (frame, 0, sizeof (struct frame_info));
1488   return frame;
1489 }
1490
1491 struct frame_info *
1492 deprecated_frame_xmalloc_with_cleanup (long sizeof_saved_regs,
1493                                        long sizeof_extra_info)
1494 {
1495   struct frame_info *frame = deprecated_frame_xmalloc ();
1496   make_cleanup (xfree, frame);
1497   if (sizeof_saved_regs > 0)
1498     {
1499       frame->saved_regs = xcalloc (1, sizeof_saved_regs);
1500       make_cleanup (xfree, frame->saved_regs);
1501     }
1502   if (sizeof_extra_info > 0)
1503     {
1504       frame->extra_info = xcalloc (1, sizeof_extra_info);
1505       make_cleanup (xfree, frame->extra_info);
1506     }
1507   return frame;
1508 }
1509
1510 void
1511 _initialize_frame (void)
1512 {
1513   obstack_init (&frame_cache_obstack);
1514
1515   /* FIXME: cagney/2003-01-19: This command needs a rename.  Suggest
1516      `set backtrace {past,beyond,...}-main'.  Also suggest adding `set
1517      backtrace ...-start' to control backtraces past start.  The
1518      problem with `below' is that it stops the `up' command.  */
1519
1520   add_setshow_boolean_cmd ("backtrace-below-main", class_obscure,
1521                            &backtrace_below_main, "\
1522 Set whether backtraces should continue past \"main\".\n\
1523 Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
1524 the backtrace at \"main\".  Set this variable if you need to see the rest\n\
1525 of the stack trace.", "\
1526 Show whether backtraces should continue past \"main\".\n\
1527 Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
1528 the backtrace at \"main\".  Set this variable if you need to see the rest\n\
1529 of the stack trace.",
1530                            NULL, NULL, &setlist, &showlist);
1531 }
This page took 0.109784 seconds and 4 git commands to generate.