2003-10-17 Jeff Johnston <jjohnstn@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, 2003 Free Software Foundation, Inc.
5
6 This file is part of GDB.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
22
23 #include "defs.h"
24 #include "frame.h"
25 #include "target.h"
26 #include "value.h"
27 #include "inferior.h" /* for inferior_ptid */
28 #include "regcache.h"
29 #include "gdb_assert.h"
30 #include "gdb_string.h"
31 #include "user-regs.h"
32 #include "gdb_obstack.h"
33 #include "dummy-frame.h"
34 #include "sentinel-frame.h"
35 #include "gdbcore.h"
36 #include "annotate.h"
37 #include "language.h"
38 #include "frame-unwind.h"
39 #include "frame-base.h"
40 #include "command.h"
41 #include "gdbcmd.h"
42
43 /* We keep a cache of stack frames, each of which is a "struct
44 frame_info". The innermost one gets allocated (in
45 wait_for_inferior) each time the inferior stops; current_frame
46 points to it. Additional frames get allocated (in get_prev_frame)
47 as needed, and are chained through the next and prev fields. Any
48 time that the frame cache becomes invalid (most notably when we
49 execute something, but also if we change how we interpret the
50 frames (e.g. "set heuristic-fence-post" in mips-tdep.c, or anything
51 which reads new symbols)), we should call reinit_frame_cache. */
52
53 struct frame_info
54 {
55 /* Level of this frame. The inner-most (youngest) frame is at level
56 0. As you move towards the outer-most (oldest) frame, the level
57 increases. This is a cached value. It could just as easily be
58 computed by counting back from the selected frame to the inner
59 most frame. */
60 /* NOTE: cagney/2002-04-05: Perhaphs a level of ``-1'' should be
61 reserved to indicate a bogus frame - one that has been created
62 just to keep GDB happy (GDB always needs a frame). For the
63 moment leave this as speculation. */
64 int level;
65
66 /* The frame's type. */
67 /* FIXME: cagney/2003-04-02: Should instead be returning
68 ->unwind->type. Unfortunatly, legacy code is still explicitly
69 setting the type using the method deprecated_set_frame_type.
70 Eliminate that method and this field can be eliminated. */
71 enum frame_type type;
72
73 /* For each register, address of where it was saved on entry to the
74 frame, or zero if it was not saved on entry to this frame. This
75 includes special registers such as pc and fp saved in special
76 ways in the stack frame. The SP_REGNUM is even more special, the
77 address here is the sp for the previous frame, not the address
78 where the sp was saved. */
79 /* Allocated by frame_saved_regs_zalloc () which is called /
80 initialized by DEPRECATED_FRAME_INIT_SAVED_REGS(). */
81 CORE_ADDR *saved_regs; /*NUM_REGS + NUM_PSEUDO_REGS*/
82
83 /* Anything extra for this structure that may have been defined in
84 the machine dependent files. */
85 /* Allocated by frame_extra_info_zalloc () which is called /
86 initialized by DEPRECATED_INIT_EXTRA_FRAME_INFO */
87 struct frame_extra_info *extra_info;
88
89 /* If dwarf2 unwind frame informations is used, this structure holds
90 all related unwind data. */
91 struct context *context;
92
93 /* The frame's low-level unwinder and corresponding cache. The
94 low-level unwinder is responsible for unwinding register values
95 for the previous frame. The low-level unwind methods are
96 selected based on the presence, or otherwize, of register unwind
97 information such as CFI. */
98 void *prologue_cache;
99 const struct frame_unwind *unwind;
100
101 /* Cached copy of the previous frame's resume address. */
102 struct {
103 int p;
104 CORE_ADDR value;
105 } prev_pc;
106
107 /* Cached copy of the previous frame's function address. */
108 struct
109 {
110 CORE_ADDR addr;
111 int p;
112 } prev_func;
113
114 /* This frame's ID. */
115 struct
116 {
117 int p;
118 struct frame_id value;
119 } this_id;
120
121 /* The frame's high-level base methods, and corresponding cache.
122 The high level base methods are selected based on the frame's
123 debug info. */
124 const struct frame_base *base;
125 void *base_cache;
126
127 /* Pointers to the next (down, inner, younger) and previous (up,
128 outer, older) frame_info's in the frame cache. */
129 struct frame_info *next; /* down, inner, younger */
130 int prev_p;
131 struct frame_info *prev; /* up, outer, older */
132 };
133
134 /* Flag to control debugging. */
135
136 static int frame_debug;
137
138 /* Flag to indicate whether backtraces should stop at main et.al. */
139
140 static int backtrace_past_main;
141 static unsigned int backtrace_limit = UINT_MAX;
142
143
144 void
145 fprint_frame_id (struct ui_file *file, struct frame_id id)
146 {
147 fprintf_unfiltered (file, "{stack=0x%s,code=0x%s,special=0x%s}",
148 paddr_nz (id.stack_addr),
149 paddr_nz (id.code_addr),
150 paddr_nz (id.special_addr));
151 }
152
153 static void
154 fprint_frame_type (struct ui_file *file, enum frame_type type)
155 {
156 switch (type)
157 {
158 case UNKNOWN_FRAME:
159 fprintf_unfiltered (file, "UNKNOWN_FRAME");
160 return;
161 case NORMAL_FRAME:
162 fprintf_unfiltered (file, "NORMAL_FRAME");
163 return;
164 case DUMMY_FRAME:
165 fprintf_unfiltered (file, "DUMMY_FRAME");
166 return;
167 case SIGTRAMP_FRAME:
168 fprintf_unfiltered (file, "SIGTRAMP_FRAME");
169 return;
170 default:
171 fprintf_unfiltered (file, "<unknown type>");
172 return;
173 };
174 }
175
176 static void
177 fprint_frame (struct ui_file *file, struct frame_info *fi)
178 {
179 if (fi == NULL)
180 {
181 fprintf_unfiltered (file, "<NULL frame>");
182 return;
183 }
184 fprintf_unfiltered (file, "{");
185 fprintf_unfiltered (file, "level=%d", fi->level);
186 fprintf_unfiltered (file, ",");
187 fprintf_unfiltered (file, "type=");
188 fprint_frame_type (file, fi->type);
189 fprintf_unfiltered (file, ",");
190 fprintf_unfiltered (file, "unwind=");
191 if (fi->unwind != NULL)
192 gdb_print_host_address (fi->unwind, file);
193 else
194 fprintf_unfiltered (file, "<unknown>");
195 fprintf_unfiltered (file, ",");
196 fprintf_unfiltered (file, "pc=");
197 if (fi->next != NULL && fi->next->prev_pc.p)
198 fprintf_unfiltered (file, "0x%s", paddr_nz (fi->next->prev_pc.value));
199 else
200 fprintf_unfiltered (file, "<unknown>");
201 fprintf_unfiltered (file, ",");
202 fprintf_unfiltered (file, "id=");
203 if (fi->this_id.p)
204 fprint_frame_id (file, fi->this_id.value);
205 else
206 fprintf_unfiltered (file, "<unknown>");
207 fprintf_unfiltered (file, ",");
208 fprintf_unfiltered (file, "func=");
209 if (fi->next != NULL && fi->next->prev_func.p)
210 fprintf_unfiltered (file, "0x%s", paddr_nz (fi->next->prev_func.addr));
211 else
212 fprintf_unfiltered (file, "<unknown>");
213 fprintf_unfiltered (file, "}");
214 }
215
216 /* Return a frame uniq ID that can be used to, later, re-find the
217 frame. */
218
219 struct frame_id
220 get_frame_id (struct frame_info *fi)
221 {
222 if (fi == NULL)
223 {
224 return null_frame_id;
225 }
226 if (!fi->this_id.p)
227 {
228 gdb_assert (!legacy_frame_p (current_gdbarch));
229 if (frame_debug)
230 fprintf_unfiltered (gdb_stdlog, "{ get_frame_id (fi=%d) ",
231 fi->level);
232 /* Find the unwinder. */
233 if (fi->unwind == NULL)
234 {
235 fi->unwind = frame_unwind_find_by_frame (fi->next);
236 /* FIXME: cagney/2003-04-02: Rather than storing the frame's
237 type in the frame, the unwinder's type should be returned
238 directly. Unfortunatly, legacy code, called by
239 legacy_get_prev_frame, explicitly set the frames type
240 using the method deprecated_set_frame_type(). */
241 gdb_assert (fi->unwind->type != UNKNOWN_FRAME);
242 fi->type = fi->unwind->type;
243 }
244 /* Find THIS frame's ID. */
245 fi->unwind->this_id (fi->next, &fi->prologue_cache, &fi->this_id.value);
246 fi->this_id.p = 1;
247 if (frame_debug)
248 {
249 fprintf_unfiltered (gdb_stdlog, "-> ");
250 fprint_frame_id (gdb_stdlog, fi->this_id.value);
251 fprintf_unfiltered (gdb_stdlog, " }\n");
252 }
253 }
254 return fi->this_id.value;
255 }
256
257 const struct frame_id null_frame_id; /* All zeros. */
258
259 struct frame_id
260 frame_id_build_special (CORE_ADDR stack_addr, CORE_ADDR code_addr,
261 CORE_ADDR special_addr)
262 {
263 struct frame_id id;
264 id.stack_addr = stack_addr;
265 id.code_addr = code_addr;
266 id.special_addr = special_addr;
267 return id;
268 }
269
270 struct frame_id
271 frame_id_build (CORE_ADDR stack_addr, CORE_ADDR code_addr)
272 {
273 return frame_id_build_special (stack_addr, code_addr, 0);
274 }
275
276 int
277 frame_id_p (struct frame_id l)
278 {
279 int p;
280 /* The .code can be NULL but the .stack cannot. */
281 p = (l.stack_addr != 0);
282 if (frame_debug)
283 {
284 fprintf_unfiltered (gdb_stdlog, "{ frame_id_p (l=");
285 fprint_frame_id (gdb_stdlog, l);
286 fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", p);
287 }
288 return p;
289 }
290
291 int
292 frame_id_eq (struct frame_id l, struct frame_id r)
293 {
294 int eq;
295 if (l.stack_addr == 0 || r.stack_addr == 0)
296 /* Like a NaN, if either ID is invalid, the result is false. */
297 eq = 0;
298 else if (l.stack_addr != r.stack_addr)
299 /* If .stack addresses are different, the frames are different. */
300 eq = 0;
301 else if (l.code_addr == 0 || r.code_addr == 0)
302 /* A zero code addr is a wild card, always succeed. */
303 eq = 1;
304 else if (l.code_addr != r.code_addr)
305 /* If .code addresses are different, the frames are different. */
306 eq = 0;
307 else if (l.special_addr == 0 || r.special_addr == 0)
308 /* A zero special addr is a wild card (or unused), always succeed. */
309 eq = 1;
310 else if (l.special_addr == r.special_addr)
311 /* Frames are equal. */
312 eq = 1;
313 else
314 /* No luck. */
315 eq = 0;
316 if (frame_debug)
317 {
318 fprintf_unfiltered (gdb_stdlog, "{ frame_id_eq (l=");
319 fprint_frame_id (gdb_stdlog, l);
320 fprintf_unfiltered (gdb_stdlog, ",r=");
321 fprint_frame_id (gdb_stdlog, r);
322 fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", eq);
323 }
324 return eq;
325 }
326
327 int
328 frame_id_inner (struct frame_id l, struct frame_id r)
329 {
330 int inner;
331 if (l.stack_addr == 0 || r.stack_addr == 0)
332 /* Like NaN, any operation involving an invalid ID always fails. */
333 inner = 0;
334 else
335 /* Only return non-zero when strictly inner than. Note that, per
336 comment in "frame.h", there is some fuzz here. Frameless
337 functions are not strictly inner than (same .stack but
338 different .code and/or .special address). */
339 inner = INNER_THAN (l.stack_addr, r.stack_addr);
340 if (frame_debug)
341 {
342 fprintf_unfiltered (gdb_stdlog, "{ frame_id_inner (l=");
343 fprint_frame_id (gdb_stdlog, l);
344 fprintf_unfiltered (gdb_stdlog, ",r=");
345 fprint_frame_id (gdb_stdlog, r);
346 fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", inner);
347 }
348 return inner;
349 }
350
351 struct frame_info *
352 frame_find_by_id (struct frame_id id)
353 {
354 struct frame_info *frame;
355
356 /* ZERO denotes the null frame, let the caller decide what to do
357 about it. Should it instead return get_current_frame()? */
358 if (!frame_id_p (id))
359 return NULL;
360
361 for (frame = get_current_frame ();
362 frame != NULL;
363 frame = get_prev_frame (frame))
364 {
365 struct frame_id this = get_frame_id (frame);
366 if (frame_id_eq (id, this))
367 /* An exact match. */
368 return frame;
369 if (frame_id_inner (id, this))
370 /* Gone to far. */
371 return NULL;
372 /* Either, we're not yet gone far enough out along the frame
373 chain (inner(this,id), or we're comparing frameless functions
374 (same .base, different .func, no test available). Struggle
375 on until we've definitly gone to far. */
376 }
377 return NULL;
378 }
379
380 CORE_ADDR
381 frame_pc_unwind (struct frame_info *this_frame)
382 {
383 if (!this_frame->prev_pc.p)
384 {
385 CORE_ADDR pc;
386 if (gdbarch_unwind_pc_p (current_gdbarch))
387 {
388 /* The right way. The `pure' way. The one true way. This
389 method depends solely on the register-unwind code to
390 determine the value of registers in THIS frame, and hence
391 the value of this frame's PC (resume address). A typical
392 implementation is no more than:
393
394 frame_unwind_register (this_frame, ISA_PC_REGNUM, buf);
395 return extract_unsigned_integer (buf, size of ISA_PC_REGNUM);
396
397 Note: this method is very heavily dependent on a correct
398 register-unwind implementation, it pays to fix that
399 method first; this method is frame type agnostic, since
400 it only deals with register values, it works with any
401 frame. This is all in stark contrast to the old
402 FRAME_SAVED_PC which would try to directly handle all the
403 different ways that a PC could be unwound. */
404 pc = gdbarch_unwind_pc (current_gdbarch, this_frame);
405 }
406 else if (this_frame->level < 0)
407 {
408 /* FIXME: cagney/2003-03-06: Old code and and a sentinel
409 frame. Do like was always done. Fetch the PC's value
410 direct from the global registers array (via read_pc).
411 This assumes that this frame belongs to the current
412 global register cache. The assumption is dangerous. */
413 pc = read_pc ();
414 }
415 else if (DEPRECATED_FRAME_SAVED_PC_P ())
416 {
417 /* FIXME: cagney/2003-03-06: Old code, but not a sentinel
418 frame. Do like was always done. Note that this method,
419 unlike unwind_pc(), tries to handle all the different
420 frame cases directly. It fails. */
421 pc = DEPRECATED_FRAME_SAVED_PC (this_frame);
422 }
423 else
424 internal_error (__FILE__, __LINE__, "No gdbarch_unwind_pc method");
425 this_frame->prev_pc.value = pc;
426 this_frame->prev_pc.p = 1;
427 if (frame_debug)
428 fprintf_unfiltered (gdb_stdlog,
429 "{ frame_pc_unwind (this_frame=%d) -> 0x%s }\n",
430 this_frame->level,
431 paddr_nz (this_frame->prev_pc.value));
432 }
433 return this_frame->prev_pc.value;
434 }
435
436 CORE_ADDR
437 frame_func_unwind (struct frame_info *fi)
438 {
439 if (!fi->prev_func.p)
440 {
441 /* Make certain that this, and not the adjacent, function is
442 found. */
443 CORE_ADDR addr_in_block = frame_unwind_address_in_block (fi);
444 fi->prev_func.p = 1;
445 fi->prev_func.addr = get_pc_function_start (addr_in_block);
446 if (frame_debug)
447 fprintf_unfiltered (gdb_stdlog,
448 "{ frame_func_unwind (fi=%d) -> 0x%s }\n",
449 fi->level, paddr_nz (fi->prev_func.addr));
450 }
451 return fi->prev_func.addr;
452 }
453
454 CORE_ADDR
455 get_frame_func (struct frame_info *fi)
456 {
457 return frame_func_unwind (fi->next);
458 }
459
460 static int
461 do_frame_unwind_register (void *src, int regnum, void *buf)
462 {
463 frame_unwind_register (src, regnum, buf);
464 return 1;
465 }
466
467 void
468 frame_pop (struct frame_info *this_frame)
469 {
470 struct regcache *scratch_regcache;
471 struct cleanup *cleanups;
472
473 if (DEPRECATED_POP_FRAME_P ())
474 {
475 /* A legacy architecture that has implemented a custom pop
476 function. All new architectures should instead be using the
477 generic code below. */
478 DEPRECATED_POP_FRAME;
479 }
480 else
481 {
482 /* Make a copy of all the register values unwound from this
483 frame. Save them in a scratch buffer so that there isn't a
484 race betweening trying to extract the old values from the
485 current_regcache while, at the same time writing new values
486 into that same cache. */
487 struct regcache *scratch = regcache_xmalloc (current_gdbarch);
488 struct cleanup *cleanups = make_cleanup_regcache_xfree (scratch);
489 regcache_save (scratch, do_frame_unwind_register, this_frame);
490 /* FIXME: cagney/2003-03-16: It should be possible to tell the
491 target's register cache that it is about to be hit with a
492 burst register transfer and that the sequence of register
493 writes should be batched. The pair target_prepare_to_store()
494 and target_store_registers() kind of suggest this
495 functionality. Unfortunatly, they don't implement it. Their
496 lack of a formal definition can lead to targets writing back
497 bogus values (arguably a bug in the target code mind). */
498 /* Now copy those saved registers into the current regcache.
499 Here, regcache_cpy() calls regcache_restore(). */
500 regcache_cpy (current_regcache, scratch);
501 do_cleanups (cleanups);
502 }
503 /* We've made right mess of GDB's local state, just discard
504 everything. */
505 flush_cached_frames ();
506 }
507
508 void
509 frame_register_unwind (struct frame_info *frame, int regnum,
510 int *optimizedp, enum lval_type *lvalp,
511 CORE_ADDR *addrp, int *realnump, void *bufferp)
512 {
513 struct frame_unwind_cache *cache;
514
515 if (frame_debug)
516 {
517 fprintf_unfiltered (gdb_stdlog,
518 "{ frame_register_unwind (frame=%d,regnum=\"%s\",...) ",
519 frame->level, frame_map_regnum_to_name (frame, regnum));
520 }
521
522 /* Require all but BUFFERP to be valid. A NULL BUFFERP indicates
523 that the value proper does not need to be fetched. */
524 gdb_assert (optimizedp != NULL);
525 gdb_assert (lvalp != NULL);
526 gdb_assert (addrp != NULL);
527 gdb_assert (realnump != NULL);
528 /* gdb_assert (bufferp != NULL); */
529
530 /* NOTE: cagney/2002-11-27: A program trying to unwind a NULL frame
531 is broken. There is always a frame. If there, for some reason,
532 isn't, there is some pretty busted code as it should have
533 detected the problem before calling here. */
534 gdb_assert (frame != NULL);
535
536 /* Find the unwinder. */
537 if (frame->unwind == NULL)
538 {
539 frame->unwind = frame_unwind_find_by_frame (frame->next);
540 /* FIXME: cagney/2003-04-02: Rather than storing the frame's
541 type in the frame, the unwinder's type should be returned
542 directly. Unfortunatly, legacy code, called by
543 legacy_get_prev_frame, explicitly set the frames type using
544 the method deprecated_set_frame_type(). */
545 gdb_assert (frame->unwind->type != UNKNOWN_FRAME);
546 frame->type = frame->unwind->type;
547 }
548
549 /* Ask this frame to unwind its register. See comment in
550 "frame-unwind.h" for why NEXT frame and this unwind cace are
551 passed in. */
552 frame->unwind->prev_register (frame->next, &frame->prologue_cache, regnum,
553 optimizedp, lvalp, addrp, realnump, bufferp);
554
555 if (frame_debug)
556 {
557 fprintf_unfiltered (gdb_stdlog, "->");
558 fprintf_unfiltered (gdb_stdlog, " *optimizedp=%d", (*optimizedp));
559 fprintf_unfiltered (gdb_stdlog, " *lvalp=%d", (int) (*lvalp));
560 fprintf_unfiltered (gdb_stdlog, " *addrp=0x%s", paddr_nz ((*addrp)));
561 fprintf_unfiltered (gdb_stdlog, " *bufferp=");
562 if (bufferp == NULL)
563 fprintf_unfiltered (gdb_stdlog, "<NULL>");
564 else
565 {
566 int i;
567 const unsigned char *buf = bufferp;
568 fprintf_unfiltered (gdb_stdlog, "[");
569 for (i = 0; i < register_size (current_gdbarch, regnum); i++)
570 fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
571 fprintf_unfiltered (gdb_stdlog, "]");
572 }
573 fprintf_unfiltered (gdb_stdlog, " }\n");
574 }
575 }
576
577 void
578 frame_register (struct frame_info *frame, int regnum,
579 int *optimizedp, enum lval_type *lvalp,
580 CORE_ADDR *addrp, int *realnump, void *bufferp)
581 {
582 /* Require all but BUFFERP to be valid. A NULL BUFFERP indicates
583 that the value proper does not need to be fetched. */
584 gdb_assert (optimizedp != NULL);
585 gdb_assert (lvalp != NULL);
586 gdb_assert (addrp != NULL);
587 gdb_assert (realnump != NULL);
588 /* gdb_assert (bufferp != NULL); */
589
590 /* Ulgh! Old code that, for lval_register, sets ADDRP to the offset
591 of the register in the register cache. It should instead return
592 the REGNUM corresponding to that register. Translate the . */
593 if (DEPRECATED_GET_SAVED_REGISTER_P ())
594 {
595 DEPRECATED_GET_SAVED_REGISTER (bufferp, optimizedp, addrp, frame,
596 regnum, lvalp);
597 /* Compute the REALNUM if the caller wants it. */
598 if (*lvalp == lval_register)
599 {
600 int regnum;
601 for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
602 {
603 if (*addrp == register_offset_hack (current_gdbarch, regnum))
604 {
605 *realnump = regnum;
606 return;
607 }
608 }
609 internal_error (__FILE__, __LINE__,
610 "Failed to compute the register number corresponding"
611 " to 0x%s", paddr_d (*addrp));
612 }
613 *realnump = -1;
614 return;
615 }
616
617 /* Obtain the register value by unwinding the register from the next
618 (more inner frame). */
619 gdb_assert (frame != NULL && frame->next != NULL);
620 frame_register_unwind (frame->next, regnum, optimizedp, lvalp, addrp,
621 realnump, bufferp);
622 }
623
624 void
625 frame_unwind_register (struct frame_info *frame, int regnum, void *buf)
626 {
627 int optimized;
628 CORE_ADDR addr;
629 int realnum;
630 enum lval_type lval;
631 frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
632 &realnum, buf);
633 }
634
635 void
636 get_frame_register (struct frame_info *frame,
637 int regnum, void *buf)
638 {
639 frame_unwind_register (frame->next, regnum, buf);
640 }
641
642 LONGEST
643 frame_unwind_register_signed (struct frame_info *frame, int regnum)
644 {
645 char buf[MAX_REGISTER_SIZE];
646 frame_unwind_register (frame, regnum, buf);
647 return extract_signed_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
648 }
649
650 LONGEST
651 get_frame_register_signed (struct frame_info *frame, int regnum)
652 {
653 return frame_unwind_register_signed (frame->next, regnum);
654 }
655
656 ULONGEST
657 frame_unwind_register_unsigned (struct frame_info *frame, int regnum)
658 {
659 char buf[MAX_REGISTER_SIZE];
660 frame_unwind_register (frame, regnum, buf);
661 return extract_unsigned_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
662 }
663
664 ULONGEST
665 get_frame_register_unsigned (struct frame_info *frame, int regnum)
666 {
667 return frame_unwind_register_unsigned (frame->next, regnum);
668 }
669
670 void
671 frame_unwind_signed_register (struct frame_info *frame, int regnum,
672 LONGEST *val)
673 {
674 char buf[MAX_REGISTER_SIZE];
675 frame_unwind_register (frame, regnum, buf);
676 (*val) = extract_signed_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
677 }
678
679 void
680 frame_unwind_unsigned_register (struct frame_info *frame, int regnum,
681 ULONGEST *val)
682 {
683 char buf[MAX_REGISTER_SIZE];
684 frame_unwind_register (frame, regnum, buf);
685 (*val) = extract_unsigned_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
686 }
687
688 void
689 put_frame_register (struct frame_info *frame, int regnum, const void *buf)
690 {
691 struct gdbarch *gdbarch = get_frame_arch (frame);
692 int realnum;
693 int optim;
694 enum lval_type lval;
695 CORE_ADDR addr;
696 frame_register (frame, regnum, &optim, &lval, &addr, &realnum, NULL);
697 if (optim)
698 error ("Attempt to assign to a value that was optimized out.");
699 switch (lval)
700 {
701 case lval_memory:
702 {
703 /* FIXME: write_memory doesn't yet take constant buffers.
704 Arrrg! */
705 char tmp[MAX_REGISTER_SIZE];
706 memcpy (tmp, buf, register_size (gdbarch, regnum));
707 write_memory (addr, tmp, register_size (gdbarch, regnum));
708 break;
709 }
710 case lval_register:
711 regcache_cooked_write (current_regcache, realnum, buf);
712 break;
713 default:
714 error ("Attempt to assign to an unmodifiable value.");
715 }
716 }
717
718 /* frame_register_read ()
719
720 Find and return the value of REGNUM for the specified stack frame.
721 The number of bytes copied is DEPRECATED_REGISTER_RAW_SIZE
722 (REGNUM).
723
724 Returns 0 if the register value could not be found. */
725
726 int
727 frame_register_read (struct frame_info *frame, int regnum, void *myaddr)
728 {
729 int optimized;
730 enum lval_type lval;
731 CORE_ADDR addr;
732 int realnum;
733 frame_register (frame, regnum, &optimized, &lval, &addr, &realnum, myaddr);
734
735 /* FIXME: cagney/2002-05-15: This test, is just bogus.
736
737 It indicates that the target failed to supply a value for a
738 register because it was "not available" at this time. Problem
739 is, the target still has the register and so get saved_register()
740 may be returning a value saved on the stack. */
741
742 if (register_cached (regnum) < 0)
743 return 0; /* register value not available */
744
745 return !optimized;
746 }
747
748
749 /* Map between a frame register number and its name. A frame register
750 space is a superset of the cooked register space --- it also
751 includes builtin registers. */
752
753 int
754 frame_map_name_to_regnum (struct frame_info *frame, const char *name, int len)
755 {
756 return user_reg_map_name_to_regnum (get_frame_arch (frame), name, len);
757 }
758
759 const char *
760 frame_map_regnum_to_name (struct frame_info *frame, int regnum)
761 {
762 return user_reg_map_regnum_to_name (get_frame_arch (frame), regnum);
763 }
764
765 /* Create a sentinel frame. */
766
767 static struct frame_info *
768 create_sentinel_frame (struct regcache *regcache)
769 {
770 struct frame_info *frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
771 frame->type = NORMAL_FRAME;
772 frame->level = -1;
773 /* Explicitly initialize the sentinel frame's cache. Provide it
774 with the underlying regcache. In the future additional
775 information, such as the frame's thread will be added. */
776 frame->prologue_cache = sentinel_frame_cache (regcache);
777 /* For the moment there is only one sentinel frame implementation. */
778 frame->unwind = sentinel_frame_unwind;
779 /* Link this frame back to itself. The frame is self referential
780 (the unwound PC is the same as the pc), so make it so. */
781 frame->next = frame;
782 /* Make the sentinel frame's ID valid, but invalid. That way all
783 comparisons with it should fail. */
784 frame->this_id.p = 1;
785 frame->this_id.value = null_frame_id;
786 if (frame_debug)
787 {
788 fprintf_unfiltered (gdb_stdlog, "{ create_sentinel_frame (...) -> ");
789 fprint_frame (gdb_stdlog, frame);
790 fprintf_unfiltered (gdb_stdlog, " }\n");
791 }
792 return frame;
793 }
794
795 /* Info about the innermost stack frame (contents of FP register) */
796
797 static struct frame_info *current_frame;
798
799 /* Cache for frame addresses already read by gdb. Valid only while
800 inferior is stopped. Control variables for the frame cache should
801 be local to this module. */
802
803 static struct obstack frame_cache_obstack;
804
805 void *
806 frame_obstack_zalloc (unsigned long size)
807 {
808 void *data = obstack_alloc (&frame_cache_obstack, size);
809 memset (data, 0, size);
810 return data;
811 }
812
813 CORE_ADDR *
814 frame_saved_regs_zalloc (struct frame_info *fi)
815 {
816 fi->saved_regs = (CORE_ADDR *)
817 frame_obstack_zalloc (SIZEOF_FRAME_SAVED_REGS);
818 return fi->saved_regs;
819 }
820
821 CORE_ADDR *
822 deprecated_get_frame_saved_regs (struct frame_info *fi)
823 {
824 return fi->saved_regs;
825 }
826
827 /* Return the innermost (currently executing) stack frame. This is
828 split into two functions. The function unwind_to_current_frame()
829 is wrapped in catch exceptions so that, even when the unwind of the
830 sentinel frame fails, the function still returns a stack frame. */
831
832 static int
833 unwind_to_current_frame (struct ui_out *ui_out, void *args)
834 {
835 struct frame_info *frame = get_prev_frame (args);
836 /* A sentinel frame can fail to unwind, eg, because it's PC value
837 lands in somewhere like start. */
838 if (frame == NULL)
839 return 1;
840 current_frame = frame;
841 return 0;
842 }
843
844 struct frame_info *
845 get_current_frame (void)
846 {
847 /* First check, and report, the lack of registers. Having GDB
848 report "No stack!" or "No memory" when the target doesn't even
849 have registers is very confusing. Besides, "printcmd.exp"
850 explicitly checks that ``print $pc'' with no registers prints "No
851 registers". */
852 if (!target_has_registers)
853 error ("No registers.");
854 if (!target_has_stack)
855 error ("No stack.");
856 if (!target_has_memory)
857 error ("No memory.");
858 if (current_frame == NULL)
859 {
860 struct frame_info *sentinel_frame =
861 create_sentinel_frame (current_regcache);
862 if (catch_exceptions (uiout, unwind_to_current_frame, sentinel_frame,
863 NULL, RETURN_MASK_ERROR) != 0)
864 {
865 /* Oops! Fake a current frame? Is this useful? It has a PC
866 of zero, for instance. */
867 current_frame = sentinel_frame;
868 }
869 }
870 return current_frame;
871 }
872
873 /* The "selected" stack frame is used by default for local and arg
874 access. May be zero, for no selected frame. */
875
876 struct frame_info *deprecated_selected_frame;
877
878 /* Return the selected frame. Always non-null (unless there isn't an
879 inferior sufficient for creating a frame) in which case an error is
880 thrown. */
881
882 struct frame_info *
883 get_selected_frame (void)
884 {
885 if (deprecated_selected_frame == NULL)
886 /* Hey! Don't trust this. It should really be re-finding the
887 last selected frame of the currently selected thread. This,
888 though, is better than nothing. */
889 select_frame (get_current_frame ());
890 /* There is always a frame. */
891 gdb_assert (deprecated_selected_frame != NULL);
892 return deprecated_selected_frame;
893 }
894
895 /* This is a variant of get_selected_frame which can be called when
896 the inferior does not have a frame; in that case it will return
897 NULL instead of calling error (). */
898
899 struct frame_info *
900 deprecated_safe_get_selected_frame (void)
901 {
902 if (!target_has_registers || !target_has_stack || !target_has_memory)
903 return NULL;
904 return get_selected_frame ();
905 }
906
907 /* Select frame FI (or NULL - to invalidate the current frame). */
908
909 void
910 select_frame (struct frame_info *fi)
911 {
912 struct symtab *s;
913
914 deprecated_selected_frame = fi;
915 /* NOTE: cagney/2002-05-04: FI can be NULL. This occures when the
916 frame is being invalidated. */
917 if (selected_frame_level_changed_hook)
918 selected_frame_level_changed_hook (frame_relative_level (fi));
919
920 /* FIXME: kseitz/2002-08-28: It would be nice to call
921 selected_frame_level_changed_event right here, but due to limitations
922 in the current interfaces, we would end up flooding UIs with events
923 because select_frame is used extensively internally.
924
925 Once we have frame-parameterized frame (and frame-related) commands,
926 the event notification can be moved here, since this function will only
927 be called when the users selected frame is being changed. */
928
929 /* Ensure that symbols for this frame are read in. Also, determine the
930 source language of this frame, and switch to it if desired. */
931 if (fi)
932 {
933 s = find_pc_symtab (get_frame_pc (fi));
934 if (s
935 && s->language != current_language->la_language
936 && s->language != language_unknown
937 && language_mode == language_mode_auto)
938 {
939 set_language (s->language);
940 }
941 }
942 }
943
944 /* Return the register saved in the simplistic ``saved_regs'' cache.
945 If the value isn't here AND a value is needed, try the next inner
946 most frame. */
947
948 static void
949 legacy_saved_regs_prev_register (struct frame_info *next_frame,
950 void **this_prologue_cache,
951 int regnum, int *optimizedp,
952 enum lval_type *lvalp, CORE_ADDR *addrp,
953 int *realnump, void *bufferp)
954 {
955 /* HACK: New code is passed the next frame and this cache.
956 Unfortunatly, old code expects this frame. Since this is a
957 backward compatibility hack, cheat by walking one level along the
958 prologue chain to the frame the old code expects.
959
960 Do not try this at home. Professional driver, closed course. */
961 struct frame_info *frame = next_frame->prev;
962 gdb_assert (frame != NULL);
963
964 if (deprecated_get_frame_saved_regs (frame) == NULL)
965 {
966 /* If nothing's initialized the saved regs, do it now. */
967 gdb_assert (DEPRECATED_FRAME_INIT_SAVED_REGS_P ());
968 DEPRECATED_FRAME_INIT_SAVED_REGS (frame);
969 gdb_assert (deprecated_get_frame_saved_regs (frame) != NULL);
970 }
971
972 if (deprecated_get_frame_saved_regs (frame) != NULL
973 && deprecated_get_frame_saved_regs (frame)[regnum] != 0)
974 {
975 if (regnum == SP_REGNUM)
976 {
977 /* SP register treated specially. */
978 *optimizedp = 0;
979 *lvalp = not_lval;
980 *addrp = 0;
981 *realnump = -1;
982 if (bufferp != NULL)
983 /* NOTE: cagney/2003-05-09: In-lined store_address with
984 it's body - store_unsigned_integer. */
985 store_unsigned_integer (bufferp, DEPRECATED_REGISTER_RAW_SIZE (regnum),
986 deprecated_get_frame_saved_regs (frame)[regnum]);
987 }
988 else
989 {
990 /* Any other register is saved in memory, fetch it but cache
991 a local copy of its value. */
992 *optimizedp = 0;
993 *lvalp = lval_memory;
994 *addrp = deprecated_get_frame_saved_regs (frame)[regnum];
995 *realnump = -1;
996 if (bufferp != NULL)
997 {
998 #if 1
999 /* Save each register value, as it is read in, in a
1000 frame based cache. */
1001 void **regs = (*this_prologue_cache);
1002 if (regs == NULL)
1003 {
1004 int sizeof_cache = ((NUM_REGS + NUM_PSEUDO_REGS)
1005 * sizeof (void *));
1006 regs = frame_obstack_zalloc (sizeof_cache);
1007 (*this_prologue_cache) = regs;
1008 }
1009 if (regs[regnum] == NULL)
1010 {
1011 regs[regnum]
1012 = frame_obstack_zalloc (DEPRECATED_REGISTER_RAW_SIZE (regnum));
1013 read_memory (deprecated_get_frame_saved_regs (frame)[regnum], regs[regnum],
1014 DEPRECATED_REGISTER_RAW_SIZE (regnum));
1015 }
1016 memcpy (bufferp, regs[regnum], DEPRECATED_REGISTER_RAW_SIZE (regnum));
1017 #else
1018 /* Read the value in from memory. */
1019 read_memory (deprecated_get_frame_saved_regs (frame)[regnum], bufferp,
1020 DEPRECATED_REGISTER_RAW_SIZE (regnum));
1021 #endif
1022 }
1023 }
1024 return;
1025 }
1026
1027 /* No luck. Assume this and the next frame have the same register
1028 value. Pass the unwind request down the frame chain to the next
1029 frame. Hopefully that frame will find the register's location. */
1030 frame_register_unwind (next_frame, regnum, optimizedp, lvalp, addrp,
1031 realnump, bufferp);
1032 }
1033
1034 static void
1035 legacy_saved_regs_this_id (struct frame_info *next_frame,
1036 void **this_prologue_cache,
1037 struct frame_id *id)
1038 {
1039 /* legacy_get_prev_frame() always sets ->this_id.p, hence this is
1040 never needed. */
1041 internal_error (__FILE__, __LINE__, "legacy_saved_regs_this_id() called");
1042 }
1043
1044 const struct frame_unwind legacy_saved_regs_unwinder = {
1045 /* Not really. It gets overridden by legacy_get_prev_frame. */
1046 UNKNOWN_FRAME,
1047 legacy_saved_regs_this_id,
1048 legacy_saved_regs_prev_register
1049 };
1050 const struct frame_unwind *legacy_saved_regs_unwind = &legacy_saved_regs_unwinder;
1051
1052
1053 /* Function: deprecated_generic_get_saved_register
1054 Find register number REGNUM relative to FRAME and put its (raw,
1055 target format) contents in *RAW_BUFFER.
1056
1057 Set *OPTIMIZED if the variable was optimized out (and thus can't be
1058 fetched). Note that this is never set to anything other than zero
1059 in this implementation.
1060
1061 Set *LVAL to lval_memory, lval_register, or not_lval, depending on
1062 whether the value was fetched from memory, from a register, or in a
1063 strange and non-modifiable way (e.g. a frame pointer which was
1064 calculated rather than fetched). We will use not_lval for values
1065 fetched from generic dummy frames.
1066
1067 Set *ADDRP to the address, either in memory or as a
1068 DEPRECATED_REGISTER_BYTE offset into the registers array. If the
1069 value is stored in a dummy frame, set *ADDRP to zero.
1070
1071 The argument RAW_BUFFER must point to aligned memory. */
1072
1073 void
1074 deprecated_generic_get_saved_register (char *raw_buffer, int *optimized,
1075 CORE_ADDR *addrp,
1076 struct frame_info *frame, int regnum,
1077 enum lval_type *lval)
1078 {
1079 if (!target_has_registers)
1080 error ("No registers.");
1081
1082 /* Normal systems don't optimize out things with register numbers. */
1083 if (optimized != NULL)
1084 *optimized = 0;
1085
1086 if (addrp) /* default assumption: not found in memory */
1087 *addrp = 0;
1088
1089 /* Note: since the current frame's registers could only have been
1090 saved by frames INTERIOR TO the current frame, we skip examining
1091 the current frame itself: otherwise, we would be getting the
1092 previous frame's registers which were saved by the current frame. */
1093
1094 if (frame != NULL)
1095 {
1096 for (frame = get_next_frame (frame);
1097 frame_relative_level (frame) >= 0;
1098 frame = get_next_frame (frame))
1099 {
1100 if (get_frame_type (frame) == DUMMY_FRAME)
1101 {
1102 if (lval) /* found it in a CALL_DUMMY frame */
1103 *lval = not_lval;
1104 if (raw_buffer)
1105 /* FIXME: cagney/2002-06-26: This should be via the
1106 gdbarch_register_read() method so that it, on the
1107 fly, constructs either a raw or pseudo register
1108 from the raw register cache. */
1109 regcache_raw_read
1110 (deprecated_find_dummy_frame_regcache (get_frame_pc (frame),
1111 get_frame_base (frame)),
1112 regnum, raw_buffer);
1113 return;
1114 }
1115
1116 DEPRECATED_FRAME_INIT_SAVED_REGS (frame);
1117 if (deprecated_get_frame_saved_regs (frame) != NULL
1118 && deprecated_get_frame_saved_regs (frame)[regnum] != 0)
1119 {
1120 if (lval) /* found it saved on the stack */
1121 *lval = lval_memory;
1122 if (regnum == SP_REGNUM)
1123 {
1124 if (raw_buffer) /* SP register treated specially */
1125 /* NOTE: cagney/2003-05-09: In-line store_address
1126 with it's body - store_unsigned_integer. */
1127 store_unsigned_integer (raw_buffer,
1128 DEPRECATED_REGISTER_RAW_SIZE (regnum),
1129 deprecated_get_frame_saved_regs (frame)[regnum]);
1130 }
1131 else
1132 {
1133 if (addrp) /* any other register */
1134 *addrp = deprecated_get_frame_saved_regs (frame)[regnum];
1135 if (raw_buffer)
1136 read_memory (deprecated_get_frame_saved_regs (frame)[regnum], raw_buffer,
1137 DEPRECATED_REGISTER_RAW_SIZE (regnum));
1138 }
1139 return;
1140 }
1141 }
1142 }
1143
1144 /* If we get thru the loop to this point, it means the register was
1145 not saved in any frame. Return the actual live-register value. */
1146
1147 if (lval) /* found it in a live register */
1148 *lval = lval_register;
1149 if (addrp)
1150 *addrp = DEPRECATED_REGISTER_BYTE (regnum);
1151 if (raw_buffer)
1152 deprecated_read_register_gen (regnum, raw_buffer);
1153 }
1154
1155 /* Determine the frame's type based on its PC. */
1156
1157 static enum frame_type
1158 frame_type_from_pc (CORE_ADDR pc)
1159 {
1160 /* FIXME: cagney/2002-11-24: Can't yet directly call
1161 pc_in_dummy_frame() as some architectures don't set
1162 PC_IN_CALL_DUMMY() to generic_pc_in_call_dummy() (remember the
1163 latter is implemented by simply calling pc_in_dummy_frame). */
1164 if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
1165 && DEPRECATED_PC_IN_CALL_DUMMY (pc, 0, 0))
1166 return DUMMY_FRAME;
1167 else
1168 {
1169 char *name;
1170 find_pc_partial_function (pc, &name, NULL, NULL);
1171 if (PC_IN_SIGTRAMP (pc, name))
1172 return SIGTRAMP_FRAME;
1173 else
1174 return NORMAL_FRAME;
1175 }
1176 }
1177
1178 /* Create an arbitrary (i.e. address specified by user) or innermost frame.
1179 Always returns a non-NULL value. */
1180
1181 struct frame_info *
1182 create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
1183 {
1184 struct frame_info *fi;
1185
1186 if (frame_debug)
1187 {
1188 fprintf_unfiltered (gdb_stdlog,
1189 "{ create_new_frame (addr=0x%s, pc=0x%s) ",
1190 paddr_nz (addr), paddr_nz (pc));
1191 }
1192
1193 fi = frame_obstack_zalloc (sizeof (struct frame_info));
1194
1195 fi->next = create_sentinel_frame (current_regcache);
1196
1197 /* Select/initialize both the unwind function and the frame's type
1198 based on the PC. */
1199 fi->unwind = frame_unwind_find_by_frame (fi->next);
1200 if (fi->unwind->type != UNKNOWN_FRAME)
1201 fi->type = fi->unwind->type;
1202 else
1203 fi->type = frame_type_from_pc (pc);
1204
1205 fi->this_id.p = 1;
1206 deprecated_update_frame_base_hack (fi, addr);
1207 deprecated_update_frame_pc_hack (fi, pc);
1208
1209 if (DEPRECATED_INIT_EXTRA_FRAME_INFO_P ())
1210 DEPRECATED_INIT_EXTRA_FRAME_INFO (0, fi);
1211
1212 if (frame_debug)
1213 {
1214 fprintf_unfiltered (gdb_stdlog, "-> ");
1215 fprint_frame (gdb_stdlog, fi);
1216 fprintf_unfiltered (gdb_stdlog, " }\n");
1217 }
1218
1219 return fi;
1220 }
1221
1222 /* Return the frame that THIS_FRAME calls (NULL if THIS_FRAME is the
1223 innermost frame). Be careful to not fall off the bottom of the
1224 frame chain and onto the sentinel frame. */
1225
1226 struct frame_info *
1227 get_next_frame (struct frame_info *this_frame)
1228 {
1229 if (this_frame->level > 0)
1230 return this_frame->next;
1231 else
1232 return NULL;
1233 }
1234
1235 struct frame_info *
1236 deprecated_get_next_frame_hack (struct frame_info *this_frame)
1237 {
1238 return this_frame->next;
1239 }
1240
1241 /* Flush the entire frame cache. */
1242
1243 void
1244 flush_cached_frames (void)
1245 {
1246 /* Since we can't really be sure what the first object allocated was */
1247 obstack_free (&frame_cache_obstack, 0);
1248 obstack_init (&frame_cache_obstack);
1249
1250 current_frame = NULL; /* Invalidate cache */
1251 select_frame (NULL);
1252 annotate_frames_invalid ();
1253 if (frame_debug)
1254 fprintf_unfiltered (gdb_stdlog, "{ flush_cached_frames () }\n");
1255 }
1256
1257 /* Flush the frame cache, and start a new one if necessary. */
1258
1259 void
1260 reinit_frame_cache (void)
1261 {
1262 flush_cached_frames ();
1263
1264 /* FIXME: The inferior_ptid test is wrong if there is a corefile. */
1265 if (PIDGET (inferior_ptid) != 0)
1266 {
1267 select_frame (get_current_frame ());
1268 }
1269 }
1270
1271 /* Create the previous frame using the deprecated methods
1272 INIT_EXTRA_INFO, INIT_FRAME_PC and INIT_FRAME_PC_FIRST. */
1273
1274 static struct frame_info *
1275 legacy_get_prev_frame (struct frame_info *this_frame)
1276 {
1277 CORE_ADDR address = 0;
1278 struct frame_info *prev;
1279 int fromleaf;
1280
1281 /* Don't frame_debug print legacy_get_prev_frame() here, just
1282 confuses the output. */
1283
1284 /* Allocate the new frame.
1285
1286 There is no reason to worry about memory leaks, should the
1287 remainder of the function fail. The allocated memory will be
1288 quickly reclaimed when the frame cache is flushed, and the `we've
1289 been here before' check, in get_prev_frame will stop repeated
1290 memory allocation calls. */
1291 prev = FRAME_OBSTACK_ZALLOC (struct frame_info);
1292 prev->level = this_frame->level + 1;
1293
1294 /* Do not completly wire it in to the frame chain. Some (bad) code
1295 in INIT_FRAME_EXTRA_INFO tries to look along frame->prev to pull
1296 some fancy tricks (of course such code is, by definition,
1297 recursive).
1298
1299 On the other hand, methods, such as get_frame_pc() and
1300 get_frame_base() rely on being able to walk along the frame
1301 chain. Make certain that at least they work by providing that
1302 link. Of course things manipulating prev can't go back. */
1303 prev->next = this_frame;
1304
1305 /* NOTE: cagney/2002-11-18: Should have been correctly setting the
1306 frame's type here, before anything else, and not last, at the
1307 bottom of this function. The various
1308 DEPRECATED_INIT_EXTRA_FRAME_INFO, DEPRECATED_INIT_FRAME_PC,
1309 DEPRECATED_INIT_FRAME_PC_FIRST and
1310 DEPRECATED_FRAME_INIT_SAVED_REGS methods are full of work-arounds
1311 that handle the frame not being correctly set from the start.
1312 Unfortunatly those same work-arounds rely on the type defaulting
1313 to NORMAL_FRAME. Ulgh! The new frame code does not have this
1314 problem. */
1315 prev->type = UNKNOWN_FRAME;
1316
1317 /* A legacy frame's ID is always computed here. Mark it as valid. */
1318 prev->this_id.p = 1;
1319
1320 /* Handle sentinel frame unwind as a special case. */
1321 if (this_frame->level < 0)
1322 {
1323 /* Try to unwind the PC. If that doesn't work, assume we've reached
1324 the oldest frame and simply return. Is there a better sentinal
1325 value? The unwound PC value is then used to initialize the new
1326 previous frame's type.
1327
1328 Note that the pc-unwind is intentionally performed before the
1329 frame chain. This is ok since, for old targets, both
1330 frame_pc_unwind (nee, DEPRECATED_FRAME_SAVED_PC) and
1331 DEPRECATED_FRAME_CHAIN()) assume THIS_FRAME's data structures
1332 have already been initialized (using
1333 DEPRECATED_INIT_EXTRA_FRAME_INFO) and hence the call order
1334 doesn't matter.
1335
1336 By unwinding the PC first, it becomes possible to, in the case of
1337 a dummy frame, avoid also unwinding the frame ID. This is
1338 because (well ignoring the PPC) a dummy frame can be located
1339 using THIS_FRAME's frame ID. */
1340
1341 deprecated_update_frame_pc_hack (prev, frame_pc_unwind (this_frame));
1342 if (get_frame_pc (prev) == 0)
1343 {
1344 /* The allocated PREV_FRAME will be reclaimed when the frame
1345 obstack is next purged. */
1346 if (frame_debug)
1347 {
1348 fprintf_unfiltered (gdb_stdlog, "-> ");
1349 fprint_frame (gdb_stdlog, NULL);
1350 fprintf_unfiltered (gdb_stdlog,
1351 " // unwound legacy PC zero }\n");
1352 }
1353 return NULL;
1354 }
1355
1356 /* Set the unwind functions based on that identified PC. Ditto
1357 for the "type" but strongly prefer the unwinder's frame type. */
1358 prev->unwind = frame_unwind_find_by_frame (prev->next);
1359 if (prev->unwind->type == UNKNOWN_FRAME)
1360 prev->type = frame_type_from_pc (get_frame_pc (prev));
1361 else
1362 prev->type = prev->unwind->type;
1363
1364 /* Find the prev's frame's ID. */
1365 if (prev->type == DUMMY_FRAME
1366 && gdbarch_unwind_dummy_id_p (current_gdbarch))
1367 {
1368 /* When unwinding a normal frame, the stack structure is
1369 determined by analyzing the frame's function's code (be
1370 it using brute force prologue analysis, or the dwarf2
1371 CFI). In the case of a dummy frame, that simply isn't
1372 possible. The The PC is either the program entry point,
1373 or some random address on the stack. Trying to use that
1374 PC to apply standard frame ID unwind techniques is just
1375 asking for trouble. */
1376 /* Use an architecture specific method to extract the prev's
1377 dummy ID from the next frame. Note that this method uses
1378 frame_register_unwind to obtain the register values
1379 needed to determine the dummy frame's ID. */
1380 prev->this_id.value = gdbarch_unwind_dummy_id (current_gdbarch,
1381 this_frame);
1382 }
1383 else
1384 {
1385 /* We're unwinding a sentinel frame, the PC of which is
1386 pointing at a stack dummy. Fake up the dummy frame's ID
1387 using the same sequence as is found a traditional
1388 unwinder. Once all architectures supply the
1389 unwind_dummy_id method, this code can go away. */
1390 prev->this_id.value = frame_id_build (deprecated_read_fp (),
1391 read_pc ());
1392 }
1393
1394 /* Check that the unwound ID is valid. */
1395 if (!frame_id_p (prev->this_id.value))
1396 {
1397 if (frame_debug)
1398 {
1399 fprintf_unfiltered (gdb_stdlog, "-> ");
1400 fprint_frame (gdb_stdlog, NULL);
1401 fprintf_unfiltered (gdb_stdlog,
1402 " // unwound legacy ID invalid }\n");
1403 }
1404 return NULL;
1405 }
1406
1407 /* Check that the new frame isn't inner to (younger, below,
1408 next) the old frame. If that happens the frame unwind is
1409 going backwards. */
1410 /* FIXME: cagney/2003-02-25: Ignore the sentinel frame since
1411 that doesn't have a valid frame ID. Should instead set the
1412 sentinel frame's frame ID to a `sentinel'. Leave it until
1413 after the switch to storing the frame ID, instead of the
1414 frame base, in the frame object. */
1415
1416 /* Link it in. */
1417 this_frame->prev = prev;
1418
1419 /* FIXME: cagney/2002-01-19: This call will go away. Instead of
1420 initializing extra info, all frames will use the frame_cache
1421 (passed to the unwind functions) to store additional frame
1422 info. Unfortunatly legacy targets can't use
1423 legacy_get_prev_frame() to unwind the sentinel frame and,
1424 consequently, are forced to take this code path and rely on
1425 the below call to DEPRECATED_INIT_EXTRA_FRAME_INFO to
1426 initialize the inner-most frame. */
1427 if (DEPRECATED_INIT_EXTRA_FRAME_INFO_P ())
1428 {
1429 DEPRECATED_INIT_EXTRA_FRAME_INFO (0, prev);
1430 }
1431
1432 if (prev->type == NORMAL_FRAME)
1433 prev->this_id.value.code_addr
1434 = get_pc_function_start (prev->this_id.value.code_addr);
1435
1436 if (frame_debug)
1437 {
1438 fprintf_unfiltered (gdb_stdlog, "-> ");
1439 fprint_frame (gdb_stdlog, prev);
1440 fprintf_unfiltered (gdb_stdlog, " } // legacy innermost frame\n");
1441 }
1442 return prev;
1443 }
1444
1445 /* This code only works on normal frames. A sentinel frame, where
1446 the level is -1, should never reach this code. */
1447 gdb_assert (this_frame->level >= 0);
1448
1449 /* On some machines it is possible to call a function without
1450 setting up a stack frame for it. On these machines, we
1451 define this macro to take two args; a frameinfo pointer
1452 identifying a frame and a variable to set or clear if it is
1453 or isn't leafless. */
1454
1455 /* Still don't want to worry about this except on the innermost
1456 frame. This macro will set FROMLEAF if THIS_FRAME is a frameless
1457 function invocation. */
1458 if (this_frame->level == 0)
1459 /* FIXME: 2002-11-09: Frameless functions can occure anywhere in
1460 the frame chain, not just the inner most frame! The generic,
1461 per-architecture, frame code should handle this and the below
1462 should simply be removed. */
1463 fromleaf = FRAMELESS_FUNCTION_INVOCATION (this_frame);
1464 else
1465 fromleaf = 0;
1466
1467 if (fromleaf)
1468 /* A frameless inner-most frame. The `FP' (which isn't an
1469 architecture frame-pointer register!) of the caller is the same
1470 as the callee. */
1471 /* FIXME: 2002-11-09: There isn't any reason to special case this
1472 edge condition. Instead the per-architecture code should hande
1473 it locally. */
1474 /* FIXME: cagney/2003-06-16: This returns the inner most stack
1475 address for the previous frame, that, however, is wrong. It
1476 should be the inner most stack address for the previous to
1477 previous frame. This is because it is the previous to previous
1478 frame's innermost stack address that is constant through out
1479 the lifetime of the previous frame (trust me :-). */
1480 address = get_frame_base (this_frame);
1481 else
1482 {
1483 /* Two macros defined in tm.h specify the machine-dependent
1484 actions to be performed here.
1485
1486 First, get the frame's chain-pointer.
1487
1488 If that is zero, the frame is the outermost frame or a leaf
1489 called by the outermost frame. This means that if start
1490 calls main without a frame, we'll return 0 (which is fine
1491 anyway).
1492
1493 Nope; there's a problem. This also returns when the current
1494 routine is a leaf of main. This is unacceptable. We move
1495 this to after the ffi test; I'd rather have backtraces from
1496 start go curfluy than have an abort called from main not show
1497 main. */
1498 if (DEPRECATED_FRAME_CHAIN_P ())
1499 address = DEPRECATED_FRAME_CHAIN (this_frame);
1500 else
1501 {
1502 /* Someone is part way through coverting an old architecture
1503 to the new frame code. Implement FRAME_CHAIN the way the
1504 new frame will. */
1505 /* Find PREV frame's unwinder. */
1506 prev->unwind = frame_unwind_find_by_frame (this_frame->next);
1507 /* FIXME: cagney/2003-04-02: Rather than storing the frame's
1508 type in the frame, the unwinder's type should be returned
1509 directly. Unfortunatly, legacy code, called by
1510 legacy_get_prev_frame, explicitly set the frames type
1511 using the method deprecated_set_frame_type(). */
1512 prev->type = prev->unwind->type;
1513 /* Find PREV frame's ID. */
1514 prev->unwind->this_id (this_frame,
1515 &prev->prologue_cache,
1516 &prev->this_id.value);
1517 prev->this_id.p = 1;
1518 address = prev->this_id.value.stack_addr;
1519 }
1520
1521 if (!legacy_frame_chain_valid (address, this_frame))
1522 {
1523 if (frame_debug)
1524 {
1525 fprintf_unfiltered (gdb_stdlog, "-> ");
1526 fprint_frame (gdb_stdlog, NULL);
1527 fprintf_unfiltered (gdb_stdlog,
1528 " // legacy frame chain invalid }\n");
1529 }
1530 return NULL;
1531 }
1532 }
1533 if (address == 0)
1534 {
1535 if (frame_debug)
1536 {
1537 fprintf_unfiltered (gdb_stdlog, "-> ");
1538 fprint_frame (gdb_stdlog, NULL);
1539 fprintf_unfiltered (gdb_stdlog,
1540 " // legacy frame chain NULL }\n");
1541 }
1542 return NULL;
1543 }
1544
1545 /* Link in the already allocated prev frame. */
1546 this_frame->prev = prev;
1547 deprecated_update_frame_base_hack (prev, address);
1548
1549 /* This change should not be needed, FIXME! We should determine
1550 whether any targets *need* DEPRECATED_INIT_FRAME_PC to happen
1551 after DEPRECATED_INIT_EXTRA_FRAME_INFO and come up with a simple
1552 way to express what goes on here.
1553
1554 DEPRECATED_INIT_EXTRA_FRAME_INFO is called from two places:
1555 create_new_frame (where the PC is already set up) and here (where
1556 it isn't). DEPRECATED_INIT_FRAME_PC is only called from here,
1557 always after DEPRECATED_INIT_EXTRA_FRAME_INFO.
1558
1559 The catch is the MIPS, where DEPRECATED_INIT_EXTRA_FRAME_INFO
1560 requires the PC value (which hasn't been set yet). Some other
1561 machines appear to require DEPRECATED_INIT_EXTRA_FRAME_INFO
1562 before they can do DEPRECATED_INIT_FRAME_PC. Phoo.
1563
1564 We shouldn't need DEPRECATED_INIT_FRAME_PC_FIRST to add more
1565 complication to an already overcomplicated part of GDB.
1566 gnu@cygnus.com, 15Sep92.
1567
1568 Assuming that some machines need DEPRECATED_INIT_FRAME_PC after
1569 DEPRECATED_INIT_EXTRA_FRAME_INFO, one possible scheme:
1570
1571 SETUP_INNERMOST_FRAME(): Default version is just create_new_frame
1572 (deprecated_read_fp ()), read_pc ()). Machines with extra frame
1573 info would do that (or the local equivalent) and then set the
1574 extra fields.
1575
1576 SETUP_ARBITRARY_FRAME(argc, argv): Only change here is that
1577 create_new_frame would no longer init extra frame info;
1578 SETUP_ARBITRARY_FRAME would have to do that.
1579
1580 INIT_PREV_FRAME(fromleaf, prev) Replace
1581 DEPRECATED_INIT_EXTRA_FRAME_INFO and DEPRECATED_INIT_FRAME_PC.
1582 This should also return a flag saying whether to keep the new
1583 frame, or whether to discard it, because on some machines (e.g.
1584 mips) it is really awkward to have DEPRECATED_FRAME_CHAIN_VALID
1585 called BEFORE DEPRECATED_INIT_EXTRA_FRAME_INFO (there is no good
1586 way to get information deduced in DEPRECATED_FRAME_CHAIN_VALID
1587 into the extra fields of the new frame). std_frame_pc(fromleaf,
1588 prev)
1589
1590 This is the default setting for INIT_PREV_FRAME. It just does
1591 what the default DEPRECATED_INIT_FRAME_PC does. Some machines
1592 will call it from INIT_PREV_FRAME (either at the beginning, the
1593 end, or in the middle). Some machines won't use it.
1594
1595 kingdon@cygnus.com, 13Apr93, 31Jan94, 14Dec94. */
1596
1597 /* NOTE: cagney/2002-11-09: Just ignore the above! There is no
1598 reason for things to be this complicated.
1599
1600 The trick is to assume that there is always a frame. Instead of
1601 special casing the inner-most frame, create fake frame
1602 (containing the hardware registers) that is inner to the
1603 user-visible inner-most frame (...) and then unwind from that.
1604 That way architecture code can use use the standard
1605 frame_XX_unwind() functions and not differentiate between the
1606 inner most and any other case.
1607
1608 Since there is always a frame to unwind from, there is always
1609 somewhere (THIS_FRAME) to store all the info needed to construct
1610 a new (previous) frame without having to first create it. This
1611 means that the convolution below - needing to carefully order a
1612 frame's initialization - isn't needed.
1613
1614 The irony here though, is that DEPRECATED_FRAME_CHAIN(), at least
1615 for a more up-to-date architecture, always calls
1616 FRAME_SAVED_PC(), and FRAME_SAVED_PC() computes the PC but
1617 without first needing the frame! Instead of the convolution
1618 below, we could have simply called FRAME_SAVED_PC() and been done
1619 with it! Note that FRAME_SAVED_PC() is being superseed by
1620 frame_pc_unwind() and that function does have somewhere to cache
1621 that PC value. */
1622
1623 if (DEPRECATED_INIT_FRAME_PC_FIRST_P ())
1624 deprecated_update_frame_pc_hack (prev,
1625 DEPRECATED_INIT_FRAME_PC_FIRST (fromleaf,
1626 prev));
1627
1628 if (DEPRECATED_INIT_EXTRA_FRAME_INFO_P ())
1629 DEPRECATED_INIT_EXTRA_FRAME_INFO (fromleaf, prev);
1630
1631 /* This entry is in the frame queue now, which is good since
1632 FRAME_SAVED_PC may use that queue to figure out its value (see
1633 tm-sparc.h). We want the pc saved in the inferior frame. */
1634 if (DEPRECATED_INIT_FRAME_PC_P ())
1635 deprecated_update_frame_pc_hack (prev,
1636 DEPRECATED_INIT_FRAME_PC (fromleaf,
1637 prev));
1638
1639 /* If ->frame and ->pc are unchanged, we are in the process of
1640 getting ourselves into an infinite backtrace. Some architectures
1641 check this in DEPRECATED_FRAME_CHAIN or thereabouts, but it seems
1642 like there is no reason this can't be an architecture-independent
1643 check. */
1644 if (get_frame_base (prev) == get_frame_base (this_frame)
1645 && get_frame_pc (prev) == get_frame_pc (this_frame))
1646 {
1647 this_frame->prev = NULL;
1648 obstack_free (&frame_cache_obstack, prev);
1649 if (frame_debug)
1650 {
1651 fprintf_unfiltered (gdb_stdlog, "-> ");
1652 fprint_frame (gdb_stdlog, NULL);
1653 fprintf_unfiltered (gdb_stdlog,
1654 " // legacy this.id == prev.id }\n");
1655 }
1656 return NULL;
1657 }
1658
1659 /* Initialize the code used to unwind the frame PREV based on the PC
1660 (and probably other architectural information). The PC lets you
1661 check things like the debug info at that point (dwarf2cfi?) and
1662 use that to decide how the frame should be unwound.
1663
1664 If there isn't a FRAME_CHAIN, the code above will have already
1665 done this. */
1666 if (prev->unwind == NULL)
1667 prev->unwind = frame_unwind_find_by_frame (prev->next);
1668
1669 /* If the unwinder provides a frame type, use it. Otherwize
1670 continue on to that heuristic mess. */
1671 if (prev->unwind->type != UNKNOWN_FRAME)
1672 {
1673 prev->type = prev->unwind->type;
1674 if (prev->type == NORMAL_FRAME)
1675 /* FIXME: cagney/2003-06-16: would get_frame_pc() be better? */
1676 prev->this_id.value.code_addr
1677 = get_pc_function_start (prev->this_id.value.code_addr);
1678 if (frame_debug)
1679 {
1680 fprintf_unfiltered (gdb_stdlog, "-> ");
1681 fprint_frame (gdb_stdlog, prev);
1682 fprintf_unfiltered (gdb_stdlog, " } // legacy with unwound type\n");
1683 }
1684 return prev;
1685 }
1686
1687 /* NOTE: cagney/2002-11-18: The code segments, found in
1688 create_new_frame and get_prev_frame(), that initializes the
1689 frames type is subtly different. The latter only updates ->type
1690 when it encounters a SIGTRAMP_FRAME or DUMMY_FRAME. This stops
1691 get_prev_frame() overriding the frame's type when the INIT code
1692 has previously set it. This is really somewhat bogus. The
1693 initialization, as seen in create_new_frame(), should occur
1694 before the INIT function has been called. */
1695 if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
1696 && (DEPRECATED_PC_IN_CALL_DUMMY_P ()
1697 ? DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (prev), 0, 0)
1698 : pc_in_dummy_frame (get_frame_pc (prev))))
1699 prev->type = DUMMY_FRAME;
1700 else
1701 {
1702 /* FIXME: cagney/2002-11-10: This should be moved to before the
1703 INIT code above so that the INIT code knows what the frame's
1704 type is (in fact, for a [generic] dummy-frame, the type can
1705 be set and then the entire initialization can be skipped.
1706 Unforunatly, its the INIT code that sets the PC (Hmm, catch
1707 22). */
1708 char *name;
1709 find_pc_partial_function (get_frame_pc (prev), &name, NULL, NULL);
1710 if (PC_IN_SIGTRAMP (get_frame_pc (prev), name))
1711 prev->type = SIGTRAMP_FRAME;
1712 /* FIXME: cagney/2002-11-11: Leave prev->type alone. Some
1713 architectures are forcing the frame's type in INIT so we
1714 don't want to override it here. Remember, NORMAL_FRAME == 0,
1715 so it all works (just :-/). Once this initialization is
1716 moved to the start of this function, all this nastness will
1717 go away. */
1718 }
1719
1720 if (prev->type == NORMAL_FRAME)
1721 prev->this_id.value.code_addr
1722 = get_pc_function_start (prev->this_id.value.code_addr);
1723
1724 if (frame_debug)
1725 {
1726 fprintf_unfiltered (gdb_stdlog, "-> ");
1727 fprint_frame (gdb_stdlog, prev);
1728 fprintf_unfiltered (gdb_stdlog, " } // legacy with confused type\n");
1729 }
1730
1731 return prev;
1732 }
1733
1734 /* Return a structure containing various interesting information
1735 about the frame that called THIS_FRAME. Returns NULL
1736 if there is no such frame. */
1737
1738 struct frame_info *
1739 get_prev_frame (struct frame_info *this_frame)
1740 {
1741 struct frame_info *prev_frame;
1742
1743 if (frame_debug)
1744 {
1745 fprintf_unfiltered (gdb_stdlog, "{ get_prev_frame (this_frame=");
1746 if (this_frame != NULL)
1747 fprintf_unfiltered (gdb_stdlog, "%d", this_frame->level);
1748 else
1749 fprintf_unfiltered (gdb_stdlog, "<NULL>");
1750 fprintf_unfiltered (gdb_stdlog, ") ");
1751 }
1752
1753 /* Return the inner-most frame, when the caller passes in NULL. */
1754 /* NOTE: cagney/2002-11-09: Not sure how this would happen. The
1755 caller should have previously obtained a valid frame using
1756 get_selected_frame() and then called this code - only possibility
1757 I can think of is code behaving badly.
1758
1759 NOTE: cagney/2003-01-10: Talk about code behaving badly. Check
1760 block_innermost_frame(). It does the sequence: frame = NULL;
1761 while (1) { frame = get_prev_frame (frame); .... }. Ulgh! Why
1762 it couldn't be written better, I don't know.
1763
1764 NOTE: cagney/2003-01-11: I suspect what is happening is
1765 block_innermost_frame() is, when the target has no state
1766 (registers, memory, ...), still calling this function. The
1767 assumption being that this function will return NULL indicating
1768 that a frame isn't possible, rather than checking that the target
1769 has state and then calling get_current_frame() and
1770 get_prev_frame(). This is a guess mind. */
1771 if (this_frame == NULL)
1772 {
1773 /* NOTE: cagney/2002-11-09: There was a code segment here that
1774 would error out when CURRENT_FRAME was NULL. The comment
1775 that went with it made the claim ...
1776
1777 ``This screws value_of_variable, which just wants a nice
1778 clean NULL return from block_innermost_frame if there are no
1779 frames. I don't think I've ever seen this message happen
1780 otherwise. And returning NULL here is a perfectly legitimate
1781 thing to do.''
1782
1783 Per the above, this code shouldn't even be called with a NULL
1784 THIS_FRAME. */
1785 return current_frame;
1786 }
1787
1788 /* There is always a frame. If this assertion fails, suspect that
1789 something should be calling get_selected_frame() or
1790 get_current_frame(). */
1791 gdb_assert (this_frame != NULL);
1792
1793 if (this_frame->level >= 0
1794 && !backtrace_past_main
1795 && inside_main_func (get_frame_pc (this_frame)))
1796 /* Don't unwind past main(), bug always unwind the sentinel frame.
1797 Note, this is done _before_ the frame has been marked as
1798 previously unwound. That way if the user later decides to
1799 allow unwinds past main(), that just happens. */
1800 {
1801 if (frame_debug)
1802 fprintf_unfiltered (gdb_stdlog, "-> NULL // inside main func }\n");
1803 return NULL;
1804 }
1805
1806 if (this_frame->level > backtrace_limit)
1807 {
1808 error ("Backtrace limit of %d exceeded", backtrace_limit);
1809 }
1810
1811 /* If we're already inside the entry function for the main objfile,
1812 then it isn't valid. Don't apply this test to a dummy frame -
1813 dummy frame PC's typically land in the entry func. Don't apply
1814 this test to the sentinel frame. Sentinel frames should always
1815 be allowed to unwind. */
1816 /* NOTE: cagney/2003-02-25: Don't enable until someone has found
1817 hard evidence that this is needed. */
1818 /* NOTE: cagney/2003-07-07: Fixed a bug in inside_main_func - wasn't
1819 checking for "main" in the minimal symbols. With that fixed
1820 asm-source tests now stop in "main" instead of halting the
1821 backtrace in wierd and wonderful ways somewhere inside the entry
1822 file. Suspect that deprecated_inside_entry_file and
1823 inside_entry_func tests were added to work around that (now
1824 fixed) case. */
1825 /* NOTE: cagney/2003-07-15: danielj (if I'm reading it right)
1826 suggested having the inside_entry_func test use the
1827 inside_main_func msymbol trick (along with entry_point_address I
1828 guess) to determine the address range of the start function.
1829 That should provide a far better stopper than the current
1830 heuristics. */
1831 /* NOTE: cagney/2003-07-15: Need to add a "set backtrace
1832 beyond-entry-func" command so that this can be selectively
1833 disabled. */
1834 if (0
1835 #if 0
1836 && backtrace_beyond_entry_func
1837 #endif
1838 && this_frame->type != DUMMY_FRAME && this_frame->level >= 0
1839 && inside_entry_func (get_frame_pc (this_frame)))
1840 {
1841 if (frame_debug)
1842 {
1843 fprintf_unfiltered (gdb_stdlog, "-> ");
1844 fprint_frame (gdb_stdlog, NULL);
1845 fprintf_unfiltered (gdb_stdlog, "// inside entry func }\n");
1846 }
1847 return NULL;
1848 }
1849
1850 /* Only try to do the unwind once. */
1851 if (this_frame->prev_p)
1852 {
1853 if (frame_debug)
1854 {
1855 fprintf_unfiltered (gdb_stdlog, "-> ");
1856 fprint_frame (gdb_stdlog, this_frame->prev);
1857 fprintf_unfiltered (gdb_stdlog, " // cached \n");
1858 }
1859 return this_frame->prev;
1860 }
1861 this_frame->prev_p = 1;
1862
1863 /* If we're inside the entry file, it isn't valid. Don't apply this
1864 test to a dummy frame - dummy frame PC's typically land in the
1865 entry file. Don't apply this test to the sentinel frame.
1866 Sentinel frames should always be allowed to unwind. */
1867 /* NOTE: drow/2002-12-25: should there be a way to disable this
1868 check? It assumes a single small entry file, and the way some
1869 debug readers (e.g. dbxread) figure out which object is the
1870 entry file is somewhat hokey. */
1871 /* NOTE: cagney/2003-01-10: If there is a way of disabling this test
1872 then it should probably be moved to before the ->prev_p test,
1873 above. */
1874 /* NOTE: vinschen/2003-04-01: Disabled. It turns out that the call
1875 to deprecated_inside_entry_file destroys a meaningful backtrace
1876 under some conditions. E. g. the backtrace tests in the
1877 asm-source testcase are broken for some targets. In this test
1878 the functions are all implemented as part of one file and the
1879 testcase is not necessarily linked with a start file (depending
1880 on the target). What happens is, that the first frame is printed
1881 normaly and following frames are treated as being inside the
1882 enttry file then. This way, only the #0 frame is printed in the
1883 backtrace output. */
1884 if (0
1885 && this_frame->type != DUMMY_FRAME && this_frame->level >= 0
1886 && deprecated_inside_entry_file (get_frame_pc (this_frame)))
1887 {
1888 if (frame_debug)
1889 {
1890 fprintf_unfiltered (gdb_stdlog, "-> ");
1891 fprint_frame (gdb_stdlog, NULL);
1892 fprintf_unfiltered (gdb_stdlog, " // inside entry file }\n");
1893 }
1894 return NULL;
1895 }
1896
1897 /* If any of the old frame initialization methods are around, use
1898 the legacy get_prev_frame method. */
1899 if (legacy_frame_p (current_gdbarch))
1900 {
1901 prev_frame = legacy_get_prev_frame (this_frame);
1902 return prev_frame;
1903 }
1904
1905 /* Check that this frame's ID was valid. If it wasn't, don't try to
1906 unwind to the prev frame. Be careful to not apply this test to
1907 the sentinel frame. */
1908 if (this_frame->level >= 0 && !frame_id_p (get_frame_id (this_frame)))
1909 {
1910 if (frame_debug)
1911 {
1912 fprintf_unfiltered (gdb_stdlog, "-> ");
1913 fprint_frame (gdb_stdlog, NULL);
1914 fprintf_unfiltered (gdb_stdlog, " // this ID is NULL }\n");
1915 }
1916 return NULL;
1917 }
1918
1919 /* Check that this frame's ID isn't inner to (younger, below, next)
1920 the next frame. This happens when a frame unwind goes backwards.
1921 Since the sentinel frame doesn't really exist, don't compare the
1922 inner-most against that sentinel. */
1923 if (this_frame->level > 0
1924 && frame_id_inner (get_frame_id (this_frame),
1925 get_frame_id (this_frame->next)))
1926 error ("Previous frame inner to this frame (corrupt stack?)");
1927
1928 /* Check that this and the next frame are not identical. If they
1929 are, there is most likely a stack cycle. As with the inner-than
1930 test above, avoid comparing the inner-most and sentinel frames. */
1931 if (this_frame->level > 0
1932 && frame_id_eq (get_frame_id (this_frame),
1933 get_frame_id (this_frame->next)))
1934 error ("Previous frame identical to this frame (corrupt stack?)");
1935
1936 /* Allocate the new frame but do not wire it in to the frame chain.
1937 Some (bad) code in INIT_FRAME_EXTRA_INFO tries to look along
1938 frame->next to pull some fancy tricks (of course such code is, by
1939 definition, recursive). Try to prevent it.
1940
1941 There is no reason to worry about memory leaks, should the
1942 remainder of the function fail. The allocated memory will be
1943 quickly reclaimed when the frame cache is flushed, and the `we've
1944 been here before' check above will stop repeated memory
1945 allocation calls. */
1946 prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
1947 prev_frame->level = this_frame->level + 1;
1948
1949 /* Try to unwind the PC. If that doesn't work, assume we've reached
1950 the oldest frame and simply return. Is there a better sentinal
1951 value? The unwound PC value is then used to initialize the new
1952 previous frame's type.
1953
1954 Note that the pc-unwind is intentionally performed before the
1955 frame chain. This is ok since, for old targets, both
1956 frame_pc_unwind (nee, FRAME_SAVED_PC) and
1957 DEPRECATED_FRAME_CHAIN()) assume THIS_FRAME's data structures
1958 have already been initialized (using
1959 DEPRECATED_INIT_EXTRA_FRAME_INFO) and hence the call order
1960 doesn't matter.
1961
1962 By unwinding the PC first, it becomes possible to, in the case of
1963 a dummy frame, avoid also unwinding the frame ID. This is
1964 because (well ignoring the PPC) a dummy frame can be located
1965 using THIS_FRAME's frame ID. */
1966
1967 if (frame_pc_unwind (this_frame) == 0)
1968 {
1969 /* The allocated PREV_FRAME will be reclaimed when the frame
1970 obstack is next purged. */
1971 if (frame_debug)
1972 {
1973 fprintf_unfiltered (gdb_stdlog, "-> ");
1974 fprint_frame (gdb_stdlog, NULL);
1975 fprintf_unfiltered (gdb_stdlog, " // unwound PC zero }\n");
1976 }
1977 return NULL;
1978 }
1979
1980 /* Don't yet compute ->unwind (and hence ->type). It is computed
1981 on-demand in get_frame_type, frame_register_unwind, and
1982 get_frame_id. */
1983
1984 /* Don't yet compute the frame's ID. It is computed on-demand by
1985 get_frame_id(). */
1986
1987 /* The unwound frame ID is validate at the start of this function,
1988 as part of the logic to decide if that frame should be further
1989 unwound, and not here while the prev frame is being created.
1990 Doing this makes it possible for the user to examine a frame that
1991 has an invalid frame ID.
1992
1993 Some very old VAX code noted: [...] For the sake of argument,
1994 suppose that the stack is somewhat trashed (which is one reason
1995 that "info frame" exists). So, return 0 (indicating we don't
1996 know the address of the arglist) if we don't know what frame this
1997 frame calls. */
1998
1999 /* Link it in. */
2000 this_frame->prev = prev_frame;
2001 prev_frame->next = this_frame;
2002
2003 if (frame_debug)
2004 {
2005 fprintf_unfiltered (gdb_stdlog, "-> ");
2006 fprint_frame (gdb_stdlog, prev_frame);
2007 fprintf_unfiltered (gdb_stdlog, " }\n");
2008 }
2009
2010 return prev_frame;
2011 }
2012
2013 CORE_ADDR
2014 get_frame_pc (struct frame_info *frame)
2015 {
2016 gdb_assert (frame->next != NULL);
2017 return frame_pc_unwind (frame->next);
2018 }
2019
2020 /* Return an address of that falls within the frame's code block. */
2021
2022 CORE_ADDR
2023 frame_unwind_address_in_block (struct frame_info *next_frame)
2024 {
2025 /* A draft address. */
2026 CORE_ADDR pc = frame_pc_unwind (next_frame);
2027
2028 /* If THIS frame is not inner most (i.e., NEXT isn't the sentinel),
2029 and NEXT is `normal' (i.e., not a sigtramp, dummy, ....) THIS
2030 frame's PC ends up pointing at the instruction fallowing the
2031 "call". Adjust that PC value so that it falls on the call
2032 instruction (which, hopefully, falls within THIS frame's code
2033 block. So far it's proved to be a very good approximation. See
2034 get_frame_type for why ->type can't be used. */
2035 if (next_frame->level >= 0
2036 && get_frame_type (next_frame) == NORMAL_FRAME)
2037 --pc;
2038 return pc;
2039 }
2040
2041 CORE_ADDR
2042 get_frame_address_in_block (struct frame_info *this_frame)
2043 {
2044 return frame_unwind_address_in_block (this_frame->next);
2045 }
2046
2047 static int
2048 pc_notcurrent (struct frame_info *frame)
2049 {
2050 /* If FRAME is not the innermost frame, that normally means that
2051 FRAME->pc points at the return instruction (which is *after* the
2052 call instruction), and we want to get the line containing the
2053 call (because the call is where the user thinks the program is).
2054 However, if the next frame is either a SIGTRAMP_FRAME or a
2055 DUMMY_FRAME, then the next frame will contain a saved interrupt
2056 PC and such a PC indicates the current (rather than next)
2057 instruction/line, consequently, for such cases, want to get the
2058 line containing fi->pc. */
2059 struct frame_info *next = get_next_frame (frame);
2060 int notcurrent = (next != NULL && get_frame_type (next) == NORMAL_FRAME);
2061 return notcurrent;
2062 }
2063
2064 void
2065 find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
2066 {
2067 (*sal) = find_pc_line (get_frame_pc (frame), pc_notcurrent (frame));
2068 }
2069
2070 /* Per "frame.h", return the ``address'' of the frame. Code should
2071 really be using get_frame_id(). */
2072 CORE_ADDR
2073 get_frame_base (struct frame_info *fi)
2074 {
2075 return get_frame_id (fi).stack_addr;
2076 }
2077
2078 /* High-level offsets into the frame. Used by the debug info. */
2079
2080 CORE_ADDR
2081 get_frame_base_address (struct frame_info *fi)
2082 {
2083 if (get_frame_type (fi) != NORMAL_FRAME)
2084 return 0;
2085 if (fi->base == NULL)
2086 fi->base = frame_base_find_by_frame (fi->next);
2087 /* Sneaky: If the low-level unwind and high-level base code share a
2088 common unwinder, let them share the prologue cache. */
2089 if (fi->base->unwind == fi->unwind)
2090 return fi->base->this_base (fi->next, &fi->prologue_cache);
2091 return fi->base->this_base (fi->next, &fi->base_cache);
2092 }
2093
2094 CORE_ADDR
2095 get_frame_locals_address (struct frame_info *fi)
2096 {
2097 void **cache;
2098 if (get_frame_type (fi) != NORMAL_FRAME)
2099 return 0;
2100 /* If there isn't a frame address method, find it. */
2101 if (fi->base == NULL)
2102 fi->base = frame_base_find_by_frame (fi->next);
2103 /* Sneaky: If the low-level unwind and high-level base code share a
2104 common unwinder, let them share the prologue cache. */
2105 if (fi->base->unwind == fi->unwind)
2106 cache = &fi->prologue_cache;
2107 else
2108 cache = &fi->base_cache;
2109 return fi->base->this_locals (fi->next, cache);
2110 }
2111
2112 CORE_ADDR
2113 get_frame_args_address (struct frame_info *fi)
2114 {
2115 void **cache;
2116 if (get_frame_type (fi) != NORMAL_FRAME)
2117 return 0;
2118 /* If there isn't a frame address method, find it. */
2119 if (fi->base == NULL)
2120 fi->base = frame_base_find_by_frame (fi->next);
2121 /* Sneaky: If the low-level unwind and high-level base code share a
2122 common unwinder, let them share the prologue cache. */
2123 if (fi->base->unwind == fi->unwind)
2124 cache = &fi->prologue_cache;
2125 else
2126 cache = &fi->base_cache;
2127 return fi->base->this_args (fi->next, cache);
2128 }
2129
2130 /* Level of the selected frame: 0 for innermost, 1 for its caller, ...
2131 or -1 for a NULL frame. */
2132
2133 int
2134 frame_relative_level (struct frame_info *fi)
2135 {
2136 if (fi == NULL)
2137 return -1;
2138 else
2139 return fi->level;
2140 }
2141
2142 enum frame_type
2143 get_frame_type (struct frame_info *frame)
2144 {
2145 /* Some targets still don't use [generic] dummy frames. Catch them
2146 here. */
2147 if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES
2148 && deprecated_frame_in_dummy (frame))
2149 return DUMMY_FRAME;
2150
2151 /* Some legacy code, e.g, mips_init_extra_frame_info() wants
2152 to determine the frame's type prior to it being completely
2153 initialized. Don't attempt to lazily initialize ->unwind for
2154 legacy code. It will be initialized in legacy_get_prev_frame(). */
2155 if (frame->unwind == NULL && !legacy_frame_p (current_gdbarch))
2156 {
2157 /* Initialize the frame's unwinder because it is that which
2158 provides the frame's type. */
2159 frame->unwind = frame_unwind_find_by_frame (frame->next);
2160 /* FIXME: cagney/2003-04-02: Rather than storing the frame's
2161 type in the frame, the unwinder's type should be returned
2162 directly. Unfortunatly, legacy code, called by
2163 legacy_get_prev_frame, explicitly set the frames type using
2164 the method deprecated_set_frame_type(). */
2165 gdb_assert (frame->unwind->type != UNKNOWN_FRAME);
2166 frame->type = frame->unwind->type;
2167 }
2168 if (frame->type == UNKNOWN_FRAME)
2169 return NORMAL_FRAME;
2170 else
2171 return frame->type;
2172 }
2173
2174 void
2175 deprecated_set_frame_type (struct frame_info *frame, enum frame_type type)
2176 {
2177 /* Arrrg! See comment in "frame.h". */
2178 frame->type = type;
2179 }
2180
2181 struct frame_extra_info *
2182 get_frame_extra_info (struct frame_info *fi)
2183 {
2184 return fi->extra_info;
2185 }
2186
2187 struct frame_extra_info *
2188 frame_extra_info_zalloc (struct frame_info *fi, long size)
2189 {
2190 fi->extra_info = frame_obstack_zalloc (size);
2191 return fi->extra_info;
2192 }
2193
2194 void
2195 deprecated_update_frame_pc_hack (struct frame_info *frame, CORE_ADDR pc)
2196 {
2197 if (frame_debug)
2198 fprintf_unfiltered (gdb_stdlog,
2199 "{ deprecated_update_frame_pc_hack (frame=%d,pc=0x%s) }\n",
2200 frame->level, paddr_nz (pc));
2201 /* NOTE: cagney/2003-03-11: Some architectures (e.g., Arm) are
2202 maintaining a locally allocated frame object. Since such frame's
2203 are not in the frame chain, it isn't possible to assume that the
2204 frame has a next. Sigh. */
2205 if (frame->next != NULL)
2206 {
2207 /* While we're at it, update this frame's cached PC value, found
2208 in the next frame. Oh for the day when "struct frame_info"
2209 is opaque and this hack on hack can just go away. */
2210 frame->next->prev_pc.value = pc;
2211 frame->next->prev_pc.p = 1;
2212 }
2213 }
2214
2215 void
2216 deprecated_update_frame_base_hack (struct frame_info *frame, CORE_ADDR base)
2217 {
2218 if (frame_debug)
2219 fprintf_unfiltered (gdb_stdlog,
2220 "{ deprecated_update_frame_base_hack (frame=%d,base=0x%s) }\n",
2221 frame->level, paddr_nz (base));
2222 /* See comment in "frame.h". */
2223 frame->this_id.value.stack_addr = base;
2224 }
2225
2226 void
2227 deprecated_set_frame_saved_regs_hack (struct frame_info *frame,
2228 CORE_ADDR *saved_regs)
2229 {
2230 frame->saved_regs = saved_regs;
2231 }
2232
2233 void
2234 deprecated_set_frame_extra_info_hack (struct frame_info *frame,
2235 struct frame_extra_info *extra_info)
2236 {
2237 frame->extra_info = extra_info;
2238 }
2239
2240 void
2241 deprecated_set_frame_next_hack (struct frame_info *fi,
2242 struct frame_info *next)
2243 {
2244 fi->next = next;
2245 }
2246
2247 void
2248 deprecated_set_frame_prev_hack (struct frame_info *fi,
2249 struct frame_info *prev)
2250 {
2251 fi->prev = prev;
2252 }
2253
2254 struct context *
2255 deprecated_get_frame_context (struct frame_info *fi)
2256 {
2257 return fi->context;
2258 }
2259
2260 void
2261 deprecated_set_frame_context (struct frame_info *fi,
2262 struct context *context)
2263 {
2264 fi->context = context;
2265 }
2266
2267 struct frame_info *
2268 deprecated_frame_xmalloc (void)
2269 {
2270 struct frame_info *frame = XMALLOC (struct frame_info);
2271 memset (frame, 0, sizeof (*frame));
2272 frame->this_id.p = 1;
2273 return frame;
2274 }
2275
2276 struct frame_info *
2277 deprecated_frame_xmalloc_with_cleanup (long sizeof_saved_regs,
2278 long sizeof_extra_info)
2279 {
2280 struct frame_info *frame = deprecated_frame_xmalloc ();
2281 make_cleanup (xfree, frame);
2282 if (sizeof_saved_regs > 0)
2283 {
2284 frame->saved_regs = xcalloc (1, sizeof_saved_regs);
2285 make_cleanup (xfree, frame->saved_regs);
2286 }
2287 if (sizeof_extra_info > 0)
2288 {
2289 frame->extra_info = xcalloc (1, sizeof_extra_info);
2290 make_cleanup (xfree, frame->extra_info);
2291 }
2292 return frame;
2293 }
2294
2295 /* Memory access methods. */
2296
2297 void
2298 get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr, void *buf,
2299 int len)
2300 {
2301 read_memory (addr, buf, len);
2302 }
2303
2304 LONGEST
2305 get_frame_memory_signed (struct frame_info *this_frame, CORE_ADDR addr,
2306 int len)
2307 {
2308 return read_memory_integer (addr, len);
2309 }
2310
2311 ULONGEST
2312 get_frame_memory_unsigned (struct frame_info *this_frame, CORE_ADDR addr,
2313 int len)
2314 {
2315 return read_memory_unsigned_integer (addr, len);
2316 }
2317
2318 /* Architecture method. */
2319
2320 struct gdbarch *
2321 get_frame_arch (struct frame_info *this_frame)
2322 {
2323 return current_gdbarch;
2324 }
2325
2326 /* Stack pointer methods. */
2327
2328 CORE_ADDR
2329 get_frame_sp (struct frame_info *this_frame)
2330 {
2331 return frame_sp_unwind (this_frame->next);
2332 }
2333
2334 CORE_ADDR
2335 frame_sp_unwind (struct frame_info *next_frame)
2336 {
2337 /* Normality, an architecture that provides a way of obtaining any
2338 frame inner-most address. */
2339 if (gdbarch_unwind_sp_p (current_gdbarch))
2340 return gdbarch_unwind_sp (current_gdbarch, next_frame);
2341 /* Things are looking grim. If it's the inner-most frame and there
2342 is a TARGET_READ_SP then that can be used. */
2343 if (next_frame->level < 0 && TARGET_READ_SP_P ())
2344 return TARGET_READ_SP ();
2345 /* Now things are really are grim. Hope that the value returned by
2346 the SP_REGNUM register is meaningful. */
2347 if (SP_REGNUM >= 0)
2348 {
2349 ULONGEST sp;
2350 frame_unwind_unsigned_register (next_frame, SP_REGNUM, &sp);
2351 return sp;
2352 }
2353 internal_error (__FILE__, __LINE__, "Missing unwind SP method");
2354 }
2355
2356
2357 int
2358 legacy_frame_p (struct gdbarch *current_gdbarch)
2359 {
2360 return (DEPRECATED_INIT_FRAME_PC_P ()
2361 || DEPRECATED_INIT_FRAME_PC_FIRST_P ()
2362 || DEPRECATED_INIT_EXTRA_FRAME_INFO_P ()
2363 || DEPRECATED_FRAME_CHAIN_P ()
2364 || !gdbarch_unwind_dummy_id_p (current_gdbarch));
2365 }
2366
2367 extern initialize_file_ftype _initialize_frame; /* -Wmissing-prototypes */
2368
2369 static struct cmd_list_element *set_backtrace_cmdlist;
2370 static struct cmd_list_element *show_backtrace_cmdlist;
2371
2372 static void
2373 set_backtrace_cmd (char *args, int from_tty)
2374 {
2375 help_list (set_backtrace_cmdlist, "set backtrace ", -1, gdb_stdout);
2376 }
2377
2378 static void
2379 show_backtrace_cmd (char *args, int from_tty)
2380 {
2381 cmd_show_list (show_backtrace_cmdlist, from_tty, "");
2382 }
2383
2384 void
2385 _initialize_frame (void)
2386 {
2387 obstack_init (&frame_cache_obstack);
2388
2389 add_prefix_cmd ("backtrace", class_maintenance, set_backtrace_cmd, "\
2390 Set backtrace specific variables.\n\
2391 Configure backtrace variables such as the backtrace limit",
2392 &set_backtrace_cmdlist, "set backtrace ",
2393 0/*allow-unknown*/, &setlist);
2394 add_prefix_cmd ("backtrace", class_maintenance, show_backtrace_cmd, "\
2395 Show backtrace specific variables\n\
2396 Show backtrace variables such as the backtrace limit",
2397 &show_backtrace_cmdlist, "show backtrace ",
2398 0/*allow-unknown*/, &showlist);
2399
2400 add_setshow_boolean_cmd ("past-main", class_obscure,
2401 &backtrace_past_main, "\
2402 Set whether backtraces should continue past \"main\".\n\
2403 Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
2404 the backtrace at \"main\". Set this variable if you need to see the rest\n\
2405 of the stack trace.", "\
2406 Show whether backtraces should continue past \"main\".\n\
2407 Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
2408 the backtrace at \"main\". Set this variable if you need to see the rest\n\
2409 of the stack trace.",
2410 NULL, NULL, &set_backtrace_cmdlist,
2411 &show_backtrace_cmdlist);
2412
2413 add_setshow_uinteger_cmd ("limit", class_obscure,
2414 &backtrace_limit, "\
2415 Set an upper bound on the number of backtrace levels.\n\
2416 No more than the specified number of frames can be displayed or examined.\n\
2417 Zero is unlimited.", "\
2418 Show the upper bound on the number of backtrace levels.",
2419 NULL, NULL, &set_backtrace_cmdlist,
2420 &show_backtrace_cmdlist);
2421
2422 /* Debug this files internals. */
2423 add_show_from_set (add_set_cmd ("frame", class_maintenance, var_zinteger,
2424 &frame_debug, "Set frame debugging.\n\
2425 When non-zero, frame specific internal debugging is enabled.", &setdebuglist),
2426 &showdebuglist);
2427 }
This page took 0.149985 seconds and 4 git commands to generate.