1 /* Cache and manage frames for GDB, the GNU debugger.
3 Copyright 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000,
4 2001, 2002 Free Software Foundation, Inc.
6 This file is part of GDB.
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.
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.
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. */
27 #include "inferior.h" /* for inferior_ptid */
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"
38 /* Return a frame uniq ID that can be used to, later, re-find the
42 get_frame_id (struct frame_info *fi)
57 const struct frame_id null_frame_id; /* All zeros. */
60 frame_id_build (CORE_ADDR base, CORE_ADDR func_or_pc)
69 frame_id_p (struct frame_id l)
71 /* The .func can be NULL but the .base cannot. */
76 frame_id_eq (struct frame_id l, struct frame_id r)
78 /* If .base is different, the frames are different. */
81 /* Add a test to check that the frame ID's are for the same function
87 frame_id_inner (struct frame_id l, struct frame_id r)
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
93 return INNER_THAN (l.base, r.base);
97 frame_find_by_id (struct frame_id id)
99 struct frame_info *frame;
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))
106 for (frame = get_current_frame ();
108 frame = get_prev_frame (frame))
110 struct frame_id this = get_frame_id (frame);
111 if (frame_id_eq (id, this))
112 /* An exact match. */
114 if (frame_id_inner (id, this))
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. */
126 frame_pc_unwind (struct frame_info *frame)
128 if (!frame->pc_unwind_cache_p)
130 frame->pc_unwind_cache = frame->pc_unwind (frame, &frame->unwind_cache);
131 frame->pc_unwind_cache_p = 1;
133 return frame->pc_unwind_cache;
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)
141 struct frame_unwind_cache *cache;
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); */
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. */
159 /* We're in the inner-most frame, get the value direct from the
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
171 deprecated_read_register_gen (regnum, bufferp);
175 /* Ask this frame to unwind its register. */
176 frame->register_unwind (frame, &frame->unwind_cache, regnum,
177 optimizedp, lvalp, addrp, realnump, bufferp);
181 frame_register (struct frame_info *frame, int regnum,
182 int *optimizedp, enum lval_type *lvalp,
183 CORE_ADDR *addrp, int *realnump, void *bufferp)
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); */
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 ())
198 GET_SAVED_REGISTER (bufferp, optimizedp, addrp, frame, regnum, lvalp);
199 /* Compute the REALNUM if the caller wants it. */
200 if (*lvalp == lval_register)
203 for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
205 if (*addrp == register_offset_hack (current_gdbarch, regnum))
211 internal_error (__FILE__, __LINE__,
212 "Failed to compute the register number corresponding"
213 " to 0x%s", paddr_d (*addrp));
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. */
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. */
233 frame_register_unwind (NULL, regnum, optimizedp, lvalp, addrp, realnump,
236 frame_register_unwind (frame->next, regnum, optimizedp, lvalp, addrp,
241 frame_unwind_signed_register (struct frame_info *frame, int regnum,
248 void *buf = alloca (MAX_REGISTER_RAW_SIZE);
249 frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
251 (*val) = extract_signed_integer (buf, REGISTER_VIRTUAL_SIZE (regnum));
255 frame_unwind_unsigned_register (struct frame_info *frame, int regnum,
262 void *buf = alloca (MAX_REGISTER_RAW_SIZE);
263 frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
265 (*val) = extract_unsigned_integer (buf, REGISTER_VIRTUAL_SIZE (regnum));
269 frame_read_unsigned_register (struct frame_info *frame, int regnum,
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
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
289 gdb_assert (frame != NULL);
290 frame_unwind_unsigned_register (get_next_frame (frame), regnum, val);
294 frame_read_signed_register (struct frame_info *frame, int regnum,
297 /* See note in frame_read_unsigned_register(). */
298 gdb_assert (frame != NULL);
299 frame_unwind_signed_register (get_next_frame (frame), regnum, val);
303 generic_unwind_get_saved_register (char *raw_buffer,
306 struct frame_info *frame,
308 enum lval_type *lvalp)
313 enum lval_type lvalx;
315 if (!target_has_registers)
316 error ("No registers.");
318 /* Keep things simple, ensure that all the pointers (except valuep)
320 if (optimizedp == NULL)
321 optimizedp = &optimizedx;
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. */
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. */
341 frame_register_unwind (NULL, regnum, optimizedp, lvalp, addrp, &realnumx,
344 frame_register_unwind (frame->next, regnum, optimizedp, lvalp, addrp,
345 &realnumx, raw_buffer);
349 get_saved_register (char *raw_buffer,
352 struct frame_info *frame,
354 enum lval_type *lval)
356 if (GET_SAVED_REGISTER_P ())
358 GET_SAVED_REGISTER (raw_buffer, optimized, addrp, frame, regnum, lval);
361 generic_unwind_get_saved_register (raw_buffer, optimized, addrp, frame,
365 /* frame_register_read ()
367 Find and return the value of REGNUM for the specified stack frame.
368 The number of bytes copied is REGISTER_RAW_SIZE (REGNUM).
370 Returns 0 if the register value could not be found. */
373 frame_register_read (struct frame_info *frame, int regnum, void *myaddr)
379 frame_register (frame, regnum, &optimized, &lval, &addr, &realnum, myaddr);
381 /* FIXME: cagney/2002-05-15: This test, is just bogus.
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. */
388 if (register_cached (regnum) < 0)
389 return 0; /* register value not available */
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. */
400 frame_map_name_to_regnum (const char *name, int len)
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)
412 /* Try builtin registers. */
413 i = builtin_reg_map_name_to_regnum (name, len);
416 /* A builtin register doesn't fall into the architecture's
418 gdb_assert (i >= NUM_REGS + NUM_PSEUDO_REGS);
426 frame_map_regnum_to_name (int regnum)
430 if (regnum < NUM_REGS + NUM_PSEUDO_REGS)
431 return REGISTER_NAME (regnum);
432 return builtin_reg_map_regnum_to_name (regnum);
435 /* Info about the innermost stack frame (contents of FP register) */
437 static struct frame_info *current_frame;
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. */
443 static struct obstack frame_cache_obstack;
446 frame_obstack_alloc (unsigned long size)
448 return obstack_alloc (&frame_cache_obstack, size);
452 frame_saved_regs_zalloc (struct frame_info *fi)
454 fi->saved_regs = (CORE_ADDR *)
455 frame_obstack_alloc (SIZEOF_FRAME_SAVED_REGS);
456 memset (fi->saved_regs, 0, SIZEOF_FRAME_SAVED_REGS);
460 /* Return the innermost (currently executing) stack frame. */
463 get_current_frame (void)
465 if (current_frame == NULL)
467 if (target_has_stack)
468 current_frame = create_new_frame (read_fp (), read_pc ());
472 return current_frame;
476 set_current_frame (struct frame_info *frame)
478 current_frame = frame;
481 /* The "selected" stack frame is used by default for local and arg
482 access. May be zero, for no selected frame. */
484 struct frame_info *deprecated_selected_frame;
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
491 get_selected_frame (void)
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;
503 /* Select frame FI (or NULL - to invalidate the current frame). */
506 select_frame (struct frame_info *fi)
508 register struct symtab *s;
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));
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.
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. */
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. */
529 s = find_pc_symtab (fi->pc);
531 && s->language != current_language->la_language
532 && s->language != language_unknown
533 && language_mode == language_mode_auto)
535 set_language (s->language);
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
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)
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
556 gdb_assert (!(DEPRECATED_USE_GENERIC_DUMMY_FRAMES
557 && (get_frame_type (frame) == DUMMY_FRAME)));
559 /* Load the saved_regs register cache. */
560 if (frame->saved_regs == NULL)
561 FRAME_INIT_SAVED_REGS (frame);
563 if (frame->saved_regs != NULL
564 && frame->saved_regs[regnum] != 0)
566 if (regnum == SP_REGNUM)
568 /* SP register treated specially. */
574 store_address (bufferp, REGISTER_RAW_SIZE (regnum),
575 frame->saved_regs[regnum]);
579 /* Any other register is saved in memory, fetch it but cache
580 a local copy of its value. */
582 *lvalp = lval_memory;
583 *addrp = frame->saved_regs[regnum];
588 /* Save each register value, as it is read in, in a
589 frame based cache. */
590 void **regs = (*cache);
593 int sizeof_cache = ((NUM_REGS + NUM_PSEUDO_REGS)
595 regs = frame_obstack_alloc (sizeof_cache);
596 memset (regs, 0, sizeof_cache);
599 if (regs[regnum] == NULL)
602 = frame_obstack_alloc (REGISTER_RAW_SIZE (regnum));
603 read_memory (frame->saved_regs[regnum], regs[regnum],
604 REGISTER_RAW_SIZE (regnum));
606 memcpy (bufferp, regs[regnum], REGISTER_RAW_SIZE (regnum));
608 /* Read the value in from memory. */
609 read_memory (frame->saved_regs[regnum], bufferp,
610 REGISTER_RAW_SIZE (regnum));
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. */
624 *lvalp = lval_register;
630 frame_register_unwind (frame->next, regnum, optimizedp, lvalp, addrp,
636 frame_saved_regs_pc_unwind (struct frame_info *frame, void **cache)
638 return FRAME_SAVED_PC (frame);
641 /* Function: get_saved_register
642 Find register number REGNUM relative to FRAME and put its (raw,
643 target format) contents in *RAW_BUFFER.
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.
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.
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.
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.
663 The argument RAW_BUFFER must point to aligned memory. */
666 deprecated_generic_get_saved_register (char *raw_buffer, int *optimized,
668 struct frame_info *frame, int regnum,
669 enum lval_type *lval)
671 if (!target_has_registers)
672 error ("No registers.");
674 /* Normal systems don't optimize out things with register numbers. */
675 if (optimized != NULL)
678 if (addrp) /* default assumption: not found in memory */
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. */
686 while (frame && ((frame = frame->next) != NULL))
688 if (get_frame_type (frame) == DUMMY_FRAME)
690 if (lval) /* found it in a CALL_DUMMY frame */
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
697 regcache_raw_read (generic_find_dummy_frame (frame->pc,
703 FRAME_INIT_SAVED_REGS (frame);
704 if (frame->saved_regs != NULL
705 && frame->saved_regs[regnum] != 0)
707 if (lval) /* found it saved on the stack */
709 if (regnum == SP_REGNUM)
711 if (raw_buffer) /* SP register treated specially */
712 store_address (raw_buffer, REGISTER_RAW_SIZE (regnum),
713 frame->saved_regs[regnum]);
717 if (addrp) /* any other register */
718 *addrp = frame->saved_regs[regnum];
720 read_memory (frame->saved_regs[regnum], raw_buffer,
721 REGISTER_RAW_SIZE (regnum));
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. */
730 if (lval) /* found it in a live register */
731 *lval = lval_register;
733 *addrp = REGISTER_BYTE (regnum);
735 deprecated_read_register_gen (regnum, raw_buffer);
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. */
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)
747 if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
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;
756 else if (DEPRECATED_PC_IN_CALL_DUMMY_P ()
757 ? DEPRECATED_PC_IN_CALL_DUMMY (pc, 0, 0)
758 : pc_in_dummy_frame (pc))
760 *unwind_register = dummy_frame_register_unwind;
761 *unwind_pc = dummy_frame_pc_unwind;
765 *unwind_register = frame_saved_regs_register_unwind;
766 *unwind_pc = frame_saved_regs_pc_unwind;
770 /* Create an arbitrary (i.e. address specified by user) or innermost frame.
771 Always returns a non-NULL value. */
774 create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
776 struct frame_info *fi;
777 enum frame_type type;
779 fi = (struct frame_info *)
780 obstack_alloc (&frame_cache_obstack,
781 sizeof (struct frame_info));
783 /* Zero all fields by default. */
784 memset (fi, 0, sizeof (struct frame_info));
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? */
805 find_pc_partial_function (pc, &name, NULL, NULL);
806 if (PC_IN_SIGTRAMP (fi->pc, name))
807 type = SIGTRAMP_FRAME;
813 if (INIT_EXTRA_FRAME_INFO_P ())
814 INIT_EXTRA_FRAME_INFO (0, fi);
816 /* Select/initialize an unwind function. */
817 set_unwind_by_pc (fi->pc, fi->frame, &fi->register_unwind,
823 /* Return the frame that FRAME calls (NULL if FRAME is the innermost
827 get_next_frame (struct frame_info *frame)
832 /* Flush the entire frame cache. */
835 flush_cached_frames (void)
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);
841 current_frame = NULL; /* Invalidate cache */
843 annotate_frames_invalid ();
846 /* Flush the frame cache, and start a new one if necessary. */
849 reinit_frame_cache (void)
851 flush_cached_frames ();
853 /* FIXME: The inferior_ptid test is wrong if there is a corefile. */
854 if (PIDGET (inferior_ptid) != 0)
856 select_frame (get_current_frame ());
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. */
865 get_prev_frame (struct frame_info *next_frame)
867 CORE_ADDR address = 0;
868 struct frame_info *prev;
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)
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 ...
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
888 Per the above, this code shouldn't even be called with a NULL
890 return current_frame;
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;
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. */
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);
917 /* A frameless inner-most frame. The `FP' (which isn't an
918 architecture frame-pointer register!) of the caller is the same
920 /* FIXME: 2002-11-09: There isn't any reason to special case this
921 edge condition. Instead the per-architecture code should hande
923 address = get_frame_base (next_frame);
926 /* Two macros defined in tm.h specify the machine-dependent
927 actions to be performed here.
929 First, get the frame's chain-pointer.
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
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
941 address = FRAME_CHAIN (next_frame);
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))
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));
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;
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
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.
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
989 We shouldn't need DEPRECATED_INIT_FRAME_PC_FIRST to add more
990 complication to an already overcomplicated part of GDB.
993 Assuming that some machines need INIT_FRAME_PC after
994 INIT_EXTRA_FRAME_INFO, one possible scheme:
996 SETUP_INNERMOST_FRAME(): Default version is just create_new_frame
997 (read_fp ()), read_pc ()). Machines with extra frame info would
998 do that (or the local equivalent) and then set the extra fields.
1000 SETUP_ARBITRARY_FRAME(argc, argv): Only change here is that
1001 create_new_frame would no longer init extra frame info;
1002 SETUP_ARBITRARY_FRAME would have to do that.
1004 INIT_PREV_FRAME(fromleaf, prev) Replace INIT_EXTRA_FRAME_INFO and
1005 INIT_FRAME_PC. This should also return a flag saying whether to
1006 keep the new frame, or whether to discard it, because on some
1007 machines (e.g. mips) it is really awkward to have
1008 FRAME_CHAIN_VALID called *before* INIT_EXTRA_FRAME_INFO (there is
1009 no good way to get information deduced in FRAME_CHAIN_VALID into
1010 the extra fields of the new frame). std_frame_pc(fromleaf, prev)
1012 This is the default setting for INIT_PREV_FRAME. It just does
1013 what the default INIT_FRAME_PC does. Some machines will call it
1014 from INIT_PREV_FRAME (either at the beginning, the end, or in the
1015 middle). Some machines won't use it.
1019 /* NOTE: cagney/2002-11-09: Just ignore the above! There is no
1020 reason for things to be this complicated.
1022 The trick is to assume that there is always a frame. Instead of
1023 special casing the inner-most frame, create fake frame
1024 (containing the hardware registers) that is inner to the
1025 user-visible inner-most frame (...) and then unwind from that.
1026 That way architecture code can use use the standard
1027 frame_XX_unwind() functions and not differentiate between the
1028 inner most and any other case.
1030 Since there is always a frame to unwind from, there is always
1031 somewhere (NEXT_FRAME) to store all the info needed to construct
1032 a new (previous) frame without having to first create it. This
1033 means that the convolution below - needing to carefully order a
1034 frame's initialization - isn't needed.
1036 The irony here though, is that FRAME_CHAIN(), at least for a more
1037 up-to-date architecture, always calls FRAME_SAVED_PC(), and
1038 FRAME_SAVED_PC() computes the PC but without first needing the
1039 frame! Instead of the convolution below, we could have simply
1040 called FRAME_SAVED_PC() and been done with it! Note that
1041 FRAME_SAVED_PC() is being superseed by frame_pc_unwind() and that
1042 function does have somewhere to cache that PC value. */
1044 if (DEPRECATED_INIT_FRAME_PC_FIRST_P ())
1045 DEPRECATED_INIT_FRAME_PC_FIRST (fromleaf, prev);
1047 if (INIT_EXTRA_FRAME_INFO_P ())
1048 INIT_EXTRA_FRAME_INFO (fromleaf, prev);
1050 /* This entry is in the frame queue now, which is good since
1051 FRAME_SAVED_PC may use that queue to figure out its value (see
1052 tm-sparc.h). We want the pc saved in the inferior frame. */
1053 INIT_FRAME_PC (fromleaf, prev);
1055 /* If ->frame and ->pc are unchanged, we are in the process of
1056 getting ourselves into an infinite backtrace. Some architectures
1057 check this in FRAME_CHAIN or thereabouts, but it seems like there
1058 is no reason this can't be an architecture-independent check. */
1059 if (prev->frame == next_frame->frame
1060 && prev->pc == next_frame->pc)
1062 next_frame->prev = NULL;
1063 obstack_free (&frame_cache_obstack, prev);
1067 /* Initialize the code used to unwind the frame PREV based on the PC
1068 (and probably other architectural information). The PC lets you
1069 check things like the debug info at that point (dwarf2cfi?) and
1070 use that to decide how the frame should be unwound. */
1071 set_unwind_by_pc (prev->pc, prev->frame, &prev->register_unwind,
1074 /* NOTE: cagney/2002-11-18: The code segments, found in
1075 create_new_frame and get_prev_frame(), that initializes the
1076 frames type is subtly different. The latter only updates ->type
1077 when it encounters a SIGTRAMP_FRAME or DUMMY_FRAME. This stops
1078 get_prev_frame() overriding the frame's type when the INIT code
1079 has previously set it. This is really somewhat bogus. The
1080 initialization, as seen in create_new_frame(), should occur
1081 before the INIT function has been called. */
1082 if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
1083 && (DEPRECATED_PC_IN_CALL_DUMMY_P ()
1084 ? DEPRECATED_PC_IN_CALL_DUMMY (prev->pc, 0, 0)
1085 : pc_in_dummy_frame (prev->pc)))
1086 prev->type = DUMMY_FRAME;
1089 /* FIXME: cagney/2002-11-10: This should be moved to before the
1090 INIT code above so that the INIT code knows what the frame's
1091 type is (in fact, for a [generic] dummy-frame, the type can
1092 be set and then the entire initialization can be skipped.
1093 Unforunatly, its the INIT code that sets the PC (Hmm, catch
1096 find_pc_partial_function (prev->pc, &name, NULL, NULL);
1097 if (PC_IN_SIGTRAMP (prev->pc, name))
1098 prev->type = SIGTRAMP_FRAME;
1099 /* FIXME: cagney/2002-11-11: Leave prev->type alone. Some
1100 architectures are forcing the frame's type in INIT so we
1101 don't want to override it here. Remember, NORMAL_FRAME == 0,
1102 so it all works (just :-/). Once this initialization is
1103 moved to the start of this function, all this nastness will
1111 get_frame_pc (struct frame_info *frame)
1117 pc_notcurrent (struct frame_info *frame)
1119 /* If FRAME is not the innermost frame, that normally means that
1120 FRAME->pc points at the return instruction (which is *after* the
1121 call instruction), and we want to get the line containing the
1122 call (because the call is where the user thinks the program is).
1123 However, if the next frame is either a SIGTRAMP_FRAME or a
1124 DUMMY_FRAME, then the next frame will contain a saved interrupt
1125 PC and such a PC indicates the current (rather than next)
1126 instruction/line, consequently, for such cases, want to get the
1127 line containing fi->pc. */
1128 struct frame_info *next = get_next_frame (frame);
1129 int notcurrent = (next != NULL && get_frame_type (next) == NORMAL_FRAME);
1134 find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
1136 (*sal) = find_pc_line (frame->pc, pc_notcurrent (frame));
1139 /* Per "frame.h", return the ``address'' of the frame. Code should
1140 really be using get_frame_id(). */
1142 get_frame_base (struct frame_info *fi)
1147 /* Level of the selected frame: 0 for innermost, 1 for its caller, ...
1148 or -1 for a NULL frame. */
1151 frame_relative_level (struct frame_info *fi)
1160 get_frame_type (struct frame_info *frame)
1162 /* Some targets still don't use [generic] dummy frames. Catch them
1164 if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES
1165 && deprecated_frame_in_dummy (frame))
1171 deprecated_set_frame_type (struct frame_info *frame, enum frame_type type)
1173 /* Arrrg! See comment in "frame.h". */
1177 #ifdef FRAME_FIND_SAVED_REGS
1178 /* XXX - deprecated. This is a compatibility function for targets
1179 that do not yet implement FRAME_INIT_SAVED_REGS. */
1180 /* Find the addresses in which registers are saved in FRAME. */
1183 get_frame_saved_regs (struct frame_info *frame,
1184 struct frame_saved_regs *saved_regs_addr)
1186 if (frame->saved_regs == NULL)
1188 frame->saved_regs = (CORE_ADDR *)
1189 frame_obstack_alloc (SIZEOF_FRAME_SAVED_REGS);
1191 if (saved_regs_addr == NULL)
1193 struct frame_saved_regs saved_regs;
1194 FRAME_FIND_SAVED_REGS (frame, saved_regs);
1195 memcpy (frame->saved_regs, &saved_regs, SIZEOF_FRAME_SAVED_REGS);
1199 FRAME_FIND_SAVED_REGS (frame, *saved_regs_addr);
1200 memcpy (frame->saved_regs, saved_regs_addr, SIZEOF_FRAME_SAVED_REGS);
1206 _initialize_frame (void)
1208 obstack_init (&frame_cache_obstack);