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