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