]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/frame.c
2002-12-08 Andrew Cagney <ac131313@redhat.com>
[thirdparty/binutils-gdb.git] / gdb / frame.c
CommitLineData
4f460812 1/* Cache and manage frames for GDB, the GNU debugger.
96cb11df
AC
2
3 Copyright 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000,
4 2001, 2002 Free Software Foundation, Inc.
d65fe839
AC
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"
39f77062 27#include "inferior.h" /* for inferior_ptid */
4e052eda 28#include "regcache.h"
4f460812 29#include "gdb_assert.h"
e36180d7
AC
30#include "gdb_string.h"
31#include "builtin-regs.h"
4c1e7e9d
AC
32#include "gdb_obstack.h"
33#include "dummy-frame.h"
34#include "gdbcore.h"
35#include "annotate.h"
6e7f8b9c 36#include "language.h"
d65fe839 37
7a424e99 38/* Return a frame uniq ID that can be used to, later, re-find the
101dcfbe
AC
39 frame. */
40
7a424e99
AC
41struct frame_id
42get_frame_id (struct frame_info *fi)
101dcfbe
AC
43{
44 if (fi == NULL)
45 {
7a424e99 46 return null_frame_id;
101dcfbe
AC
47 }
48 else
49 {
7a424e99
AC
50 struct frame_id id;
51 id.base = fi->frame;
52 id.pc = fi->pc;
53 return id;
101dcfbe
AC
54 }
55}
56
7a424e99
AC
57const struct frame_id null_frame_id; /* All zeros. */
58
59struct frame_id
60frame_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
68int
69frame_id_p (struct frame_id l)
70{
71 /* The .func can be NULL but the .base cannot. */
72 return (l.base != 0);
73}
74
75int
76frame_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
86int
87frame_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
101dcfbe
AC
96struct frame_info *
97frame_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()? */
7a424e99 103 if (!frame_id_p (id))
101dcfbe
AC
104 return NULL;
105
106 for (frame = get_current_frame ();
107 frame != NULL;
108 frame = get_prev_frame (frame))
109 {
7a424e99
AC
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. */
101dcfbe 116 return NULL;
7a424e99
AC
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. */
101dcfbe
AC
121 }
122 return NULL;
123}
124
f18c5a73
AC
125CORE_ADDR
126frame_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
4f460812
AC
136void
137frame_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;
fa5f27c7
AC
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);
4f460812
AC
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)
4caf0990 171 deprecated_read_register_gen (regnum, bufferp);
4f460812
AC
172 return;
173 }
174
175 /* Ask this frame to unwind its register. */
f18c5a73 176 frame->register_unwind (frame, &frame->unwind_cache, regnum,
4f460812
AC
177 optimizedp, lvalp, addrp, realnump, bufferp);
178}
179
a216a322
AC
180void
181frame_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
135c175f
AC
240void
241frame_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
254void
255frame_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}
4f460812 267
f908a0eb
AC
268void
269frame_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
293void
294frame_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
18cde8d5 302static void
4f460812
AC
303generic_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
d65fe839
AC
348void
349get_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{
a216a322
AC
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);
d65fe839
AC
363}
364
cda5a58a 365/* frame_register_read ()
d65fe839 366
cda5a58a 367 Find and return the value of REGNUM for the specified stack frame.
d65fe839
AC
368 The number of bytes copied is REGISTER_RAW_SIZE (REGNUM).
369
cda5a58a 370 Returns 0 if the register value could not be found. */
d65fe839 371
cda5a58a
AC
372int
373frame_register_read (struct frame_info *frame, int regnum, void *myaddr)
d65fe839 374{
a216a322
AC
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);
d65fe839 380
c97dcfc7
AC
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
d65fe839 388 if (register_cached (regnum) < 0)
cda5a58a 389 return 0; /* register value not available */
d65fe839 390
a216a322 391 return !optimized;
d65fe839 392}
e36180d7
AC
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
399int
400frame_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
425const char *
426frame_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}
4c1e7e9d
AC
434
435/* Info about the innermost stack frame (contents of FP register) */
436
437static 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
443static struct obstack frame_cache_obstack;
444
445void *
446frame_obstack_alloc (unsigned long size)
447{
448 return obstack_alloc (&frame_cache_obstack, size);
449}
450
451void
452frame_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
462struct frame_info *
463get_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
475void
476set_current_frame (struct frame_info *frame)
477{
478 current_frame = frame;
479}
480
6e7f8b9c
AC
481/* The "selected" stack frame is used by default for local and arg
482 access. May be zero, for no selected frame. */
483
484struct 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
490struct frame_info *
491get_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
505void
506select_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
4c1e7e9d
AC
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
544static void
545frame_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.) */
07555a72 556 gdb_assert (!(DEPRECATED_USE_GENERIC_DUMMY_FRAMES
5e0f933e 557 && (get_frame_type (frame) == DUMMY_FRAME)));
4c1e7e9d
AC
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
f18c5a73
AC
635static CORE_ADDR
636frame_saved_regs_pc_unwind (struct frame_info *frame, void **cache)
637{
638 return FRAME_SAVED_PC (frame);
639}
640
4c1e7e9d
AC
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
665void
666deprecated_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 {
5e0f933e 688 if (get_frame_type (frame) == DUMMY_FRAME)
4c1e7e9d
AC
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
742static void
743set_unwind_by_pc (CORE_ADDR pc, CORE_ADDR fp,
f18c5a73
AC
744 frame_register_unwind_ftype **unwind_register,
745 frame_pc_unwind_ftype **unwind_pc)
4c1e7e9d 746{
07555a72 747 if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
f18c5a73
AC
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 }
ae45cd16
AC
756 else if (DEPRECATED_PC_IN_CALL_DUMMY_P ()
757 ? DEPRECATED_PC_IN_CALL_DUMMY (pc, 0, 0)
758 : pc_in_dummy_frame (pc))
f18c5a73
AC
759 {
760 *unwind_register = dummy_frame_register_unwind;
761 *unwind_pc = dummy_frame_pc_unwind;
762 }
4c1e7e9d 763 else
f18c5a73
AC
764 {
765 *unwind_register = frame_saved_regs_register_unwind;
766 *unwind_pc = frame_saved_regs_pc_unwind;
767 }
4c1e7e9d
AC
768}
769
770/* Create an arbitrary (i.e. address specified by user) or innermost frame.
771 Always returns a non-NULL value. */
772
773struct frame_info *
774create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
775{
776 struct frame_info *fi;
5a203e44 777 enum frame_type type;
4c1e7e9d
AC
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;
5a203e44
AC
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. */
ae45cd16
AC
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)))
5a203e44
AC
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;
4c1e7e9d
AC
812
813 if (INIT_EXTRA_FRAME_INFO_P ())
814 INIT_EXTRA_FRAME_INFO (0, fi);
815
816 /* Select/initialize an unwind function. */
f18c5a73
AC
817 set_unwind_by_pc (fi->pc, fi->frame, &fi->register_unwind,
818 &fi->pc_unwind);
4c1e7e9d
AC
819
820 return fi;
821}
822
823/* Return the frame that FRAME calls (NULL if FRAME is the innermost
824 frame). */
825
826struct frame_info *
827get_next_frame (struct frame_info *frame)
828{
829 return frame->next;
830}
831
832/* Flush the entire frame cache. */
833
834void
835flush_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
848void
849reinit_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
864struct frame_info *
865get_prev_frame (struct frame_info *next_frame)
866{
867 CORE_ADDR address = 0;
868 struct frame_info *prev;
95adb866 869 int fromleaf;
4c1e7e9d 870
95adb866
AC
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)
4c1e7e9d 877 {
95adb866
AC
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. */
4c1e7e9d
AC
890 return current_frame;
891 }
892
15220c65
AC
893 /* Only try to do the unwind once. */
894 if (next_frame->prev_p)
4c1e7e9d 895 return next_frame->prev;
15220c65 896 next_frame->prev_p = 1;
4c1e7e9d
AC
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
95adb866
AC
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. */
c193f6ac 923 address = get_frame_base (next_frame);
95adb866 924 else
4c1e7e9d
AC
925 {
926 /* Two macros defined in tm.h specify the machine-dependent
927 actions to be performed here.
95adb866 928
4c1e7e9d 929 First, get the frame's chain-pointer.
95adb866 930
4c1e7e9d
AC
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
95adb866 957 /* Create an initially zero previous frame. */
4c1e7e9d
AC
958 prev = (struct frame_info *)
959 obstack_alloc (&frame_cache_obstack,
960 sizeof (struct frame_info));
4c1e7e9d
AC
961 memset (prev, 0, sizeof (struct frame_info));
962
95adb866
AC
963 /* Link it in. */
964 next_frame->prev = prev;
4c1e7e9d
AC
965 prev->next = next_frame;
966 prev->frame = address;
967 prev->level = next_frame->level + 1;
5a203e44
AC
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;
4c1e7e9d 973
95adb866
AC
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
2ca6c561
AC
989 We shouldn't need DEPRECATED_INIT_FRAME_PC_FIRST to add more
990 complication to an already overcomplicated part of GDB.
991 gnu@cygnus.com, 15Sep92.
95adb866
AC
992
993 Assuming that some machines need INIT_FRAME_PC after
994 INIT_EXTRA_FRAME_INFO, one possible scheme:
995
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.
999
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.
1003
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)
1011
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.
1016
1017 kingdon@cygnus.com, 13Apr93, 31Jan94, 14Dec94. */
1018
1019 /* NOTE: cagney/2002-11-09: Just ignore the above! There is no
1020 reason for things to be this complicated.
1021
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.
1029
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.
1035
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. */
4c1e7e9d 1043
2ca6c561
AC
1044 if (DEPRECATED_INIT_FRAME_PC_FIRST_P ())
1045 DEPRECATED_INIT_FRAME_PC_FIRST (fromleaf, prev);
4c1e7e9d
AC
1046
1047 if (INIT_EXTRA_FRAME_INFO_P ())
1048 INIT_EXTRA_FRAME_INFO (fromleaf, prev);
1049
1050 /* This entry is in the frame queue now, which is good since
95adb866
AC
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. */
4c1e7e9d
AC
1053 INIT_FRAME_PC (fromleaf, prev);
1054
95adb866
AC
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)
4c1e7e9d 1061 {
95adb866
AC
1062 next_frame->prev = NULL;
1063 obstack_free (&frame_cache_obstack, prev);
1064 return NULL;
4c1e7e9d
AC
1065 }
1066
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. */
f18c5a73
AC
1071 set_unwind_by_pc (prev->pc, prev->frame, &prev->register_unwind,
1072 &prev->pc_unwind);
4c1e7e9d 1073
5a203e44
AC
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. */
07555a72 1082 if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
ae45cd16
AC
1083 && (DEPRECATED_PC_IN_CALL_DUMMY_P ()
1084 ? DEPRECATED_PC_IN_CALL_DUMMY (prev->pc, 0, 0)
1085 : pc_in_dummy_frame (prev->pc)))
5a203e44
AC
1086 prev->type = DUMMY_FRAME;
1087 else
1088 {
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
1094 22). */
1095 char *name;
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
1104 go away. */
1105 }
4c1e7e9d
AC
1106
1107 return prev;
1108}
1109
1110CORE_ADDR
1111get_frame_pc (struct frame_info *frame)
1112{
1113 return frame->pc;
1114}
1115
1058bca7
AC
1116static int
1117pc_notcurrent (struct frame_info *frame)
1118{
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);
1130 return notcurrent;
1131}
1132
1133void
1134find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
1135{
1136 (*sal) = find_pc_line (frame->pc, pc_notcurrent (frame));
1137}
1138
c193f6ac
AC
1139/* Per "frame.h", return the ``address'' of the frame. Code should
1140 really be using get_frame_id(). */
1141CORE_ADDR
1142get_frame_base (struct frame_info *fi)
1143{
1144 return fi->frame;
1145}
1146
85cf597a
AC
1147/* Level of the selected frame: 0 for innermost, 1 for its caller, ...
1148 or -1 for a NULL frame. */
1149
1150int
1151frame_relative_level (struct frame_info *fi)
1152{
1153 if (fi == NULL)
1154 return -1;
1155 else
1156 return fi->level;
1157}
1158
5a203e44
AC
1159enum frame_type
1160get_frame_type (struct frame_info *frame)
1161{
1162 /* Some targets still don't use [generic] dummy frames. Catch them
1163 here. */
07555a72 1164 if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES
5a203e44
AC
1165 && deprecated_frame_in_dummy (frame))
1166 return DUMMY_FRAME;
1167 return frame->type;
1168}
1169
1170void
1171deprecated_set_frame_type (struct frame_info *frame, enum frame_type type)
1172{
1173 /* Arrrg! See comment in "frame.h". */
1174 frame->type = type;
1175}
1176
4c1e7e9d
AC
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. */
1181
1182void
1183get_frame_saved_regs (struct frame_info *frame,
1184 struct frame_saved_regs *saved_regs_addr)
1185{
1186 if (frame->saved_regs == NULL)
1187 {
1188 frame->saved_regs = (CORE_ADDR *)
1189 frame_obstack_alloc (SIZEOF_FRAME_SAVED_REGS);
1190 }
1191 if (saved_regs_addr == NULL)
1192 {
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);
1196 }
1197 else
1198 {
1199 FRAME_FIND_SAVED_REGS (frame, *saved_regs_addr);
1200 memcpy (frame->saved_regs, saved_regs_addr, SIZEOF_FRAME_SAVED_REGS);
1201 }
1202}
1203#endif
1204
1205void
1206_initialize_frame (void)
1207{
1208 obstack_init (&frame_cache_obstack);
1209}