]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/frame.c
2004-08-01 Andrew Cagney <cagney@gnu.org>
[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,
5bf00f29 4 2001, 2002, 2003, 2004 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 30#include "gdb_string.h"
eb8bc282 31#include "user-regs.h"
4c1e7e9d
AC
32#include "gdb_obstack.h"
33#include "dummy-frame.h"
a94dd1fd 34#include "sentinel-frame.h"
4c1e7e9d
AC
35#include "gdbcore.h"
36#include "annotate.h"
6e7f8b9c 37#include "language.h"
494cca16 38#include "frame-unwind.h"
da62e633 39#include "frame-base.h"
eb4f72c5
AC
40#include "command.h"
41#include "gdbcmd.h"
f4c5303c 42#include "observer.h"
eb4f72c5 43
5613d8d3
AC
44static struct frame_info *get_prev_frame_1 (struct frame_info *this_frame);
45
bd013d54
AC
46/* We keep a cache of stack frames, each of which is a "struct
47 frame_info". The innermost one gets allocated (in
48 wait_for_inferior) each time the inferior stops; current_frame
49 points to it. Additional frames get allocated (in get_prev_frame)
50 as needed, and are chained through the next and prev fields. Any
51 time that the frame cache becomes invalid (most notably when we
52 execute something, but also if we change how we interpret the
53 frames (e.g. "set heuristic-fence-post" in mips-tdep.c, or anything
54 which reads new symbols)), we should call reinit_frame_cache. */
55
56struct frame_info
57{
58 /* Level of this frame. The inner-most (youngest) frame is at level
59 0. As you move towards the outer-most (oldest) frame, the level
60 increases. This is a cached value. It could just as easily be
61 computed by counting back from the selected frame to the inner
62 most frame. */
bbde78fa 63 /* NOTE: cagney/2002-04-05: Perhaps a level of ``-1'' should be
bd013d54
AC
64 reserved to indicate a bogus frame - one that has been created
65 just to keep GDB happy (GDB always needs a frame). For the
66 moment leave this as speculation. */
67 int level;
68
bd013d54
AC
69 /* The frame's low-level unwinder and corresponding cache. The
70 low-level unwinder is responsible for unwinding register values
71 for the previous frame. The low-level unwind methods are
bbde78fa 72 selected based on the presence, or otherwise, of register unwind
bd013d54
AC
73 information such as CFI. */
74 void *prologue_cache;
75 const struct frame_unwind *unwind;
76
77 /* Cached copy of the previous frame's resume address. */
78 struct {
79 int p;
80 CORE_ADDR value;
81 } prev_pc;
82
83 /* Cached copy of the previous frame's function address. */
84 struct
85 {
86 CORE_ADDR addr;
87 int p;
88 } prev_func;
89
90 /* This frame's ID. */
91 struct
92 {
93 int p;
94 struct frame_id value;
95 } this_id;
96
97 /* The frame's high-level base methods, and corresponding cache.
98 The high level base methods are selected based on the frame's
99 debug info. */
100 const struct frame_base *base;
101 void *base_cache;
102
103 /* Pointers to the next (down, inner, younger) and previous (up,
104 outer, older) frame_info's in the frame cache. */
105 struct frame_info *next; /* down, inner, younger */
106 int prev_p;
107 struct frame_info *prev; /* up, outer, older */
108};
109
ac2bd0a9
AC
110/* Flag to control debugging. */
111
112static int frame_debug;
113
25d29d70
AC
114/* Flag to indicate whether backtraces should stop at main et.al. */
115
116static int backtrace_past_main;
117static unsigned int backtrace_limit = UINT_MAX;
eb4f72c5 118
ca73dd9d
AC
119static void
120fprint_field (struct ui_file *file, const char *name, int p, CORE_ADDR addr)
121{
122 if (p)
123 fprintf_unfiltered (file, "%s=0x%s", name, paddr_nz (addr));
124 else
125 fprintf_unfiltered (file, "!%s", name);
126}
d65fe839 127
00905d52 128void
7f78e237
AC
129fprint_frame_id (struct ui_file *file, struct frame_id id)
130{
ca73dd9d
AC
131 fprintf_unfiltered (file, "{");
132 fprint_field (file, "stack", id.stack_addr_p, id.stack_addr);
133 fprintf_unfiltered (file, ",");
134 fprint_field (file, "code", id.code_addr_p, id.code_addr);
135 fprintf_unfiltered (file, ",");
136 fprint_field (file, "special", id.special_addr_p, id.special_addr);
137 fprintf_unfiltered (file, "}");
7f78e237
AC
138}
139
140static void
141fprint_frame_type (struct ui_file *file, enum frame_type type)
142{
143 switch (type)
144 {
7f78e237
AC
145 case NORMAL_FRAME:
146 fprintf_unfiltered (file, "NORMAL_FRAME");
147 return;
148 case DUMMY_FRAME:
149 fprintf_unfiltered (file, "DUMMY_FRAME");
150 return;
151 case SIGTRAMP_FRAME:
152 fprintf_unfiltered (file, "SIGTRAMP_FRAME");
153 return;
154 default:
155 fprintf_unfiltered (file, "<unknown type>");
156 return;
157 };
158}
159
160static void
161fprint_frame (struct ui_file *file, struct frame_info *fi)
162{
163 if (fi == NULL)
164 {
165 fprintf_unfiltered (file, "<NULL frame>");
166 return;
167 }
168 fprintf_unfiltered (file, "{");
169 fprintf_unfiltered (file, "level=%d", fi->level);
170 fprintf_unfiltered (file, ",");
171 fprintf_unfiltered (file, "type=");
c1bf6f65
AC
172 if (fi->unwind != NULL)
173 fprint_frame_type (file, fi->unwind->type);
174 else
175 fprintf_unfiltered (file, "<unknown>");
7f78e237
AC
176 fprintf_unfiltered (file, ",");
177 fprintf_unfiltered (file, "unwind=");
178 if (fi->unwind != NULL)
179 gdb_print_host_address (fi->unwind, file);
180 else
181 fprintf_unfiltered (file, "<unknown>");
182 fprintf_unfiltered (file, ",");
183 fprintf_unfiltered (file, "pc=");
184 if (fi->next != NULL && fi->next->prev_pc.p)
185 fprintf_unfiltered (file, "0x%s", paddr_nz (fi->next->prev_pc.value));
186 else
187 fprintf_unfiltered (file, "<unknown>");
188 fprintf_unfiltered (file, ",");
189 fprintf_unfiltered (file, "id=");
190 if (fi->this_id.p)
191 fprint_frame_id (file, fi->this_id.value);
192 else
193 fprintf_unfiltered (file, "<unknown>");
194 fprintf_unfiltered (file, ",");
195 fprintf_unfiltered (file, "func=");
196 if (fi->next != NULL && fi->next->prev_func.p)
197 fprintf_unfiltered (file, "0x%s", paddr_nz (fi->next->prev_func.addr));
198 else
199 fprintf_unfiltered (file, "<unknown>");
200 fprintf_unfiltered (file, "}");
201}
202
7a424e99 203/* Return a frame uniq ID that can be used to, later, re-find the
101dcfbe
AC
204 frame. */
205
7a424e99
AC
206struct frame_id
207get_frame_id (struct frame_info *fi)
101dcfbe
AC
208{
209 if (fi == NULL)
210 {
7a424e99 211 return null_frame_id;
101dcfbe 212 }
d0a55772 213 if (!fi->this_id.p)
101dcfbe 214 {
7f78e237
AC
215 if (frame_debug)
216 fprintf_unfiltered (gdb_stdlog, "{ get_frame_id (fi=%d) ",
217 fi->level);
c50901fd
AC
218 /* Find the unwinder. */
219 if (fi->unwind == NULL)
c1bf6f65
AC
220 fi->unwind = frame_unwind_find_by_frame (fi->next,
221 &fi->prologue_cache);
06c77151 222 /* Find THIS frame's ID. */
d0a55772
AC
223 fi->unwind->this_id (fi->next, &fi->prologue_cache, &fi->this_id.value);
224 fi->this_id.p = 1;
7f78e237
AC
225 if (frame_debug)
226 {
227 fprintf_unfiltered (gdb_stdlog, "-> ");
228 fprint_frame_id (gdb_stdlog, fi->this_id.value);
229 fprintf_unfiltered (gdb_stdlog, " }\n");
230 }
101dcfbe 231 }
18adea3f 232 return fi->this_id.value;
101dcfbe
AC
233}
234
5613d8d3
AC
235struct frame_id
236frame_unwind_id (struct frame_info *next_frame)
237{
238 /* Use prev_frame, and not get_prev_frame. The latter will truncate
239 the frame chain, leading to this function unintentionally
240 returning a null_frame_id (e.g., when a caller requests the frame
241 ID of "main()"s caller. */
242 return get_frame_id (get_prev_frame_1 (next_frame));
243}
244
7a424e99
AC
245const struct frame_id null_frame_id; /* All zeros. */
246
247struct frame_id
48c66725
JJ
248frame_id_build_special (CORE_ADDR stack_addr, CORE_ADDR code_addr,
249 CORE_ADDR special_addr)
7a424e99 250{
12b0b6de 251 struct frame_id id = null_frame_id;
d0a55772 252 id.stack_addr = stack_addr;
12b0b6de 253 id.stack_addr_p = 1;
d0a55772 254 id.code_addr = code_addr;
12b0b6de 255 id.code_addr_p = 1;
48c66725 256 id.special_addr = special_addr;
12b0b6de 257 id.special_addr_p = 1;
7a424e99
AC
258 return id;
259}
260
48c66725
JJ
261struct frame_id
262frame_id_build (CORE_ADDR stack_addr, CORE_ADDR code_addr)
263{
12b0b6de
UW
264 struct frame_id id = null_frame_id;
265 id.stack_addr = stack_addr;
266 id.stack_addr_p = 1;
267 id.code_addr = code_addr;
268 id.code_addr_p = 1;
269 return id;
270}
271
272struct frame_id
273frame_id_build_wild (CORE_ADDR stack_addr)
274{
275 struct frame_id id = null_frame_id;
276 id.stack_addr = stack_addr;
277 id.stack_addr_p = 1;
278 return id;
48c66725
JJ
279}
280
7a424e99
AC
281int
282frame_id_p (struct frame_id l)
283{
d0a55772 284 int p;
12b0b6de
UW
285 /* The frame is valid iff it has a valid stack address. */
286 p = l.stack_addr_p;
7f78e237
AC
287 if (frame_debug)
288 {
289 fprintf_unfiltered (gdb_stdlog, "{ frame_id_p (l=");
290 fprint_frame_id (gdb_stdlog, l);
291 fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", p);
292 }
d0a55772 293 return p;
7a424e99
AC
294}
295
296int
297frame_id_eq (struct frame_id l, struct frame_id r)
298{
d0a55772 299 int eq;
12b0b6de
UW
300 if (!l.stack_addr_p || !r.stack_addr_p)
301 /* Like a NaN, if either ID is invalid, the result is false.
302 Note that a frame ID is invalid iff it is the null frame ID. */
d0a55772
AC
303 eq = 0;
304 else if (l.stack_addr != r.stack_addr)
305 /* If .stack addresses are different, the frames are different. */
306 eq = 0;
12b0b6de
UW
307 else if (!l.code_addr_p || !r.code_addr_p)
308 /* An invalid code addr is a wild card, always succeed. */
d0a55772 309 eq = 1;
48c66725
JJ
310 else if (l.code_addr != r.code_addr)
311 /* If .code addresses are different, the frames are different. */
312 eq = 0;
12b0b6de
UW
313 else if (!l.special_addr_p || !r.special_addr_p)
314 /* An invalid special addr is a wild card (or unused), always succeed. */
48c66725
JJ
315 eq = 1;
316 else if (l.special_addr == r.special_addr)
317 /* Frames are equal. */
d0a55772
AC
318 eq = 1;
319 else
4aa79dcc
AC
320 /* No luck. */
321 eq = 0;
7f78e237
AC
322 if (frame_debug)
323 {
324 fprintf_unfiltered (gdb_stdlog, "{ frame_id_eq (l=");
325 fprint_frame_id (gdb_stdlog, l);
326 fprintf_unfiltered (gdb_stdlog, ",r=");
327 fprint_frame_id (gdb_stdlog, r);
328 fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", eq);
329 }
d0a55772 330 return eq;
7a424e99
AC
331}
332
333int
334frame_id_inner (struct frame_id l, struct frame_id r)
335{
d0a55772 336 int inner;
12b0b6de 337 if (!l.stack_addr_p || !r.stack_addr_p)
d0a55772
AC
338 /* Like NaN, any operation involving an invalid ID always fails. */
339 inner = 0;
340 else
341 /* Only return non-zero when strictly inner than. Note that, per
342 comment in "frame.h", there is some fuzz here. Frameless
343 functions are not strictly inner than (same .stack but
48c66725 344 different .code and/or .special address). */
d0a55772 345 inner = INNER_THAN (l.stack_addr, r.stack_addr);
7f78e237
AC
346 if (frame_debug)
347 {
348 fprintf_unfiltered (gdb_stdlog, "{ frame_id_inner (l=");
349 fprint_frame_id (gdb_stdlog, l);
350 fprintf_unfiltered (gdb_stdlog, ",r=");
351 fprint_frame_id (gdb_stdlog, r);
352 fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", inner);
353 }
d0a55772 354 return inner;
7a424e99
AC
355}
356
101dcfbe
AC
357struct frame_info *
358frame_find_by_id (struct frame_id id)
359{
360 struct frame_info *frame;
361
362 /* ZERO denotes the null frame, let the caller decide what to do
363 about it. Should it instead return get_current_frame()? */
7a424e99 364 if (!frame_id_p (id))
101dcfbe
AC
365 return NULL;
366
367 for (frame = get_current_frame ();
368 frame != NULL;
369 frame = get_prev_frame (frame))
370 {
7a424e99
AC
371 struct frame_id this = get_frame_id (frame);
372 if (frame_id_eq (id, this))
373 /* An exact match. */
374 return frame;
375 if (frame_id_inner (id, this))
376 /* Gone to far. */
101dcfbe 377 return NULL;
bbde78fa
JM
378 /* Either we're not yet gone far enough out along the frame
379 chain (inner(this,id)), or we're comparing frameless functions
7a424e99
AC
380 (same .base, different .func, no test available). Struggle
381 on until we've definitly gone to far. */
101dcfbe
AC
382 }
383 return NULL;
384}
385
f18c5a73 386CORE_ADDR
12cc2063 387frame_pc_unwind (struct frame_info *this_frame)
f18c5a73 388{
d1340264 389 if (!this_frame->prev_pc.p)
f18c5a73 390 {
12cc2063
AC
391 CORE_ADDR pc;
392 if (gdbarch_unwind_pc_p (current_gdbarch))
393 {
394 /* The right way. The `pure' way. The one true way. This
395 method depends solely on the register-unwind code to
396 determine the value of registers in THIS frame, and hence
397 the value of this frame's PC (resume address). A typical
398 implementation is no more than:
399
400 frame_unwind_register (this_frame, ISA_PC_REGNUM, buf);
af1342ab 401 return extract_unsigned_integer (buf, size of ISA_PC_REGNUM);
12cc2063
AC
402
403 Note: this method is very heavily dependent on a correct
404 register-unwind implementation, it pays to fix that
405 method first; this method is frame type agnostic, since
406 it only deals with register values, it works with any
407 frame. This is all in stark contrast to the old
408 FRAME_SAVED_PC which would try to directly handle all the
409 different ways that a PC could be unwound. */
410 pc = gdbarch_unwind_pc (current_gdbarch, this_frame);
411 }
412 else if (this_frame->level < 0)
413 {
bbde78fa 414 /* FIXME: cagney/2003-03-06: Old code and a sentinel
12cc2063 415 frame. Do like was always done. Fetch the PC's value
bbde78fa 416 directly from the global registers array (via read_pc).
12cc2063
AC
417 This assumes that this frame belongs to the current
418 global register cache. The assumption is dangerous. */
419 pc = read_pc ();
420 }
12cc2063
AC
421 else
422 internal_error (__FILE__, __LINE__, "No gdbarch_unwind_pc method");
d1340264
AC
423 this_frame->prev_pc.value = pc;
424 this_frame->prev_pc.p = 1;
7f78e237
AC
425 if (frame_debug)
426 fprintf_unfiltered (gdb_stdlog,
427 "{ frame_pc_unwind (this_frame=%d) -> 0x%s }\n",
428 this_frame->level,
429 paddr_nz (this_frame->prev_pc.value));
f18c5a73 430 }
d1340264 431 return this_frame->prev_pc.value;
f18c5a73
AC
432}
433
be41e9f4
AC
434CORE_ADDR
435frame_func_unwind (struct frame_info *fi)
436{
437 if (!fi->prev_func.p)
438 {
57bfe177
AC
439 /* Make certain that this, and not the adjacent, function is
440 found. */
441 CORE_ADDR addr_in_block = frame_unwind_address_in_block (fi);
be41e9f4 442 fi->prev_func.p = 1;
57bfe177 443 fi->prev_func.addr = get_pc_function_start (addr_in_block);
7f78e237
AC
444 if (frame_debug)
445 fprintf_unfiltered (gdb_stdlog,
446 "{ frame_func_unwind (fi=%d) -> 0x%s }\n",
447 fi->level, paddr_nz (fi->prev_func.addr));
be41e9f4
AC
448 }
449 return fi->prev_func.addr;
450}
451
452CORE_ADDR
453get_frame_func (struct frame_info *fi)
454{
455 return frame_func_unwind (fi->next);
456}
457
7a25a7c1
AC
458static int
459do_frame_unwind_register (void *src, int regnum, void *buf)
460{
461 frame_unwind_register (src, regnum, buf);
462 return 1;
463}
464
dbe9fe58 465void
7a25a7c1
AC
466frame_pop (struct frame_info *this_frame)
467{
c1bf6f65
AC
468 /* Make a copy of all the register values unwound from this frame.
469 Save them in a scratch buffer so that there isn't a race between
470 trying to extract the old values from the current_regcache while
471 at the same time writing new values into that same cache. */
472 struct regcache *scratch = regcache_xmalloc (current_gdbarch);
473 struct cleanup *cleanups = make_cleanup_regcache_xfree (scratch);
474 regcache_save (scratch, do_frame_unwind_register, this_frame);
475
476 /* FIXME: cagney/2003-03-16: It should be possible to tell the
477 target's register cache that it is about to be hit with a burst
478 register transfer and that the sequence of register writes should
479 be batched. The pair target_prepare_to_store() and
480 target_store_registers() kind of suggest this functionality.
481 Unfortunately, they don't implement it. Their lack of a formal
482 definition can lead to targets writing back bogus values
483 (arguably a bug in the target code mind). */
484 /* Now copy those saved registers into the current regcache.
485 Here, regcache_cpy() calls regcache_restore(). */
486 regcache_cpy (current_regcache, scratch);
487 do_cleanups (cleanups);
7a25a7c1 488
7a25a7c1
AC
489 /* We've made right mess of GDB's local state, just discard
490 everything. */
dbe9fe58
AC
491 flush_cached_frames ();
492}
c689142b 493
4f460812
AC
494void
495frame_register_unwind (struct frame_info *frame, int regnum,
496 int *optimizedp, enum lval_type *lvalp,
497 CORE_ADDR *addrp, int *realnump, void *bufferp)
498{
499 struct frame_unwind_cache *cache;
500
7f78e237
AC
501 if (frame_debug)
502 {
6764ddad
AC
503 fprintf_unfiltered (gdb_stdlog, "\
504{ frame_register_unwind (frame=%d,regnum=%d(%s),...) ",
505 frame->level, regnum,
506 frame_map_regnum_to_name (frame, regnum));
7f78e237
AC
507 }
508
4f460812
AC
509 /* Require all but BUFFERP to be valid. A NULL BUFFERP indicates
510 that the value proper does not need to be fetched. */
511 gdb_assert (optimizedp != NULL);
512 gdb_assert (lvalp != NULL);
513 gdb_assert (addrp != NULL);
514 gdb_assert (realnump != NULL);
515 /* gdb_assert (bufferp != NULL); */
516
a94dd1fd
AC
517 /* NOTE: cagney/2002-11-27: A program trying to unwind a NULL frame
518 is broken. There is always a frame. If there, for some reason,
bbde78fa 519 isn't a frame, there is some pretty busted code as it should have
a94dd1fd
AC
520 detected the problem before calling here. */
521 gdb_assert (frame != NULL);
4f460812 522
c50901fd
AC
523 /* Find the unwinder. */
524 if (frame->unwind == NULL)
c1bf6f65
AC
525 frame->unwind = frame_unwind_find_by_frame (frame->next,
526 &frame->prologue_cache);
c50901fd 527
6dc42492 528 /* Ask this frame to unwind its register. See comment in
bbde78fa 529 "frame-unwind.h" for why NEXT frame and this unwind cache are
6dc42492
AC
530 passed in. */
531 frame->unwind->prev_register (frame->next, &frame->prologue_cache, regnum,
532 optimizedp, lvalp, addrp, realnump, bufferp);
533
7f78e237
AC
534 if (frame_debug)
535 {
536 fprintf_unfiltered (gdb_stdlog, "->");
537 fprintf_unfiltered (gdb_stdlog, " *optimizedp=%d", (*optimizedp));
538 fprintf_unfiltered (gdb_stdlog, " *lvalp=%d", (int) (*lvalp));
539 fprintf_unfiltered (gdb_stdlog, " *addrp=0x%s", paddr_nz ((*addrp)));
540 fprintf_unfiltered (gdb_stdlog, " *bufferp=");
541 if (bufferp == NULL)
542 fprintf_unfiltered (gdb_stdlog, "<NULL>");
543 else
544 {
545 int i;
d2cf594a 546 const unsigned char *buf = bufferp;
7f78e237
AC
547 fprintf_unfiltered (gdb_stdlog, "[");
548 for (i = 0; i < register_size (current_gdbarch, regnum); i++)
549 fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
550 fprintf_unfiltered (gdb_stdlog, "]");
551 }
552 fprintf_unfiltered (gdb_stdlog, " }\n");
553 }
4f460812
AC
554}
555
a216a322
AC
556void
557frame_register (struct frame_info *frame, int regnum,
558 int *optimizedp, enum lval_type *lvalp,
559 CORE_ADDR *addrp, int *realnump, void *bufferp)
560{
561 /* Require all but BUFFERP to be valid. A NULL BUFFERP indicates
562 that the value proper does not need to be fetched. */
563 gdb_assert (optimizedp != NULL);
564 gdb_assert (lvalp != NULL);
565 gdb_assert (addrp != NULL);
566 gdb_assert (realnump != NULL);
567 /* gdb_assert (bufferp != NULL); */
568
a94dd1fd
AC
569 /* Obtain the register value by unwinding the register from the next
570 (more inner frame). */
571 gdb_assert (frame != NULL && frame->next != NULL);
572 frame_register_unwind (frame->next, regnum, optimizedp, lvalp, addrp,
573 realnump, bufferp);
a216a322
AC
574}
575
135c175f 576void
5b181d62 577frame_unwind_register (struct frame_info *frame, int regnum, void *buf)
135c175f
AC
578{
579 int optimized;
580 CORE_ADDR addr;
581 int realnum;
582 enum lval_type lval;
135c175f
AC
583 frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
584 &realnum, buf);
5b181d62
AC
585}
586
f0e7d0e8
AC
587void
588get_frame_register (struct frame_info *frame,
589 int regnum, void *buf)
590{
591 frame_unwind_register (frame->next, regnum, buf);
592}
593
594LONGEST
595frame_unwind_register_signed (struct frame_info *frame, int regnum)
596{
597 char buf[MAX_REGISTER_SIZE];
598 frame_unwind_register (frame, regnum, buf);
5bc602c7
AC
599 return extract_signed_integer (buf, register_size (get_frame_arch (frame),
600 regnum));
f0e7d0e8
AC
601}
602
603LONGEST
604get_frame_register_signed (struct frame_info *frame, int regnum)
605{
606 return frame_unwind_register_signed (frame->next, regnum);
607}
608
609ULONGEST
610frame_unwind_register_unsigned (struct frame_info *frame, int regnum)
611{
612 char buf[MAX_REGISTER_SIZE];
613 frame_unwind_register (frame, regnum, buf);
5bc602c7
AC
614 return extract_unsigned_integer (buf, register_size (get_frame_arch (frame),
615 regnum));
f0e7d0e8
AC
616}
617
618ULONGEST
619get_frame_register_unsigned (struct frame_info *frame, int regnum)
620{
621 return frame_unwind_register_unsigned (frame->next, regnum);
622}
623
135c175f
AC
624void
625frame_unwind_unsigned_register (struct frame_info *frame, int regnum,
626 ULONGEST *val)
627{
d9d9c31f 628 char buf[MAX_REGISTER_SIZE];
5b181d62 629 frame_unwind_register (frame, regnum, buf);
5bc602c7
AC
630 (*val) = extract_unsigned_integer (buf,
631 register_size (get_frame_arch (frame),
632 regnum));
135c175f 633}
4f460812 634
ff2e87ac
AC
635void
636put_frame_register (struct frame_info *frame, int regnum, const void *buf)
637{
638 struct gdbarch *gdbarch = get_frame_arch (frame);
639 int realnum;
640 int optim;
641 enum lval_type lval;
642 CORE_ADDR addr;
643 frame_register (frame, regnum, &optim, &lval, &addr, &realnum, NULL);
644 if (optim)
645 error ("Attempt to assign to a value that was optimized out.");
646 switch (lval)
647 {
648 case lval_memory:
649 {
650 /* FIXME: write_memory doesn't yet take constant buffers.
651 Arrrg! */
652 char tmp[MAX_REGISTER_SIZE];
653 memcpy (tmp, buf, register_size (gdbarch, regnum));
654 write_memory (addr, tmp, register_size (gdbarch, regnum));
655 break;
656 }
657 case lval_register:
658 regcache_cooked_write (current_regcache, realnum, buf);
659 break;
660 default:
661 error ("Attempt to assign to an unmodifiable value.");
662 }
663}
664
cda5a58a 665/* frame_register_read ()
d65fe839 666
cda5a58a 667 Find and return the value of REGNUM for the specified stack frame.
5bc602c7 668 The number of bytes copied is REGISTER_SIZE (REGNUM).
d65fe839 669
cda5a58a 670 Returns 0 if the register value could not be found. */
d65fe839 671
cda5a58a
AC
672int
673frame_register_read (struct frame_info *frame, int regnum, void *myaddr)
d65fe839 674{
a216a322
AC
675 int optimized;
676 enum lval_type lval;
677 CORE_ADDR addr;
678 int realnum;
679 frame_register (frame, regnum, &optimized, &lval, &addr, &realnum, myaddr);
d65fe839 680
bbde78fa 681 /* FIXME: cagney/2002-05-15: This test is just bogus.
c97dcfc7
AC
682
683 It indicates that the target failed to supply a value for a
684 register because it was "not available" at this time. Problem
685 is, the target still has the register and so get saved_register()
686 may be returning a value saved on the stack. */
687
d65fe839 688 if (register_cached (regnum) < 0)
cda5a58a 689 return 0; /* register value not available */
d65fe839 690
a216a322 691 return !optimized;
d65fe839 692}
e36180d7
AC
693
694
695/* Map between a frame register number and its name. A frame register
696 space is a superset of the cooked register space --- it also
697 includes builtin registers. */
698
699int
eb8bc282 700frame_map_name_to_regnum (struct frame_info *frame, const char *name, int len)
e36180d7 701{
eb8bc282 702 return user_reg_map_name_to_regnum (get_frame_arch (frame), name, len);
e36180d7
AC
703}
704
705const char *
eb8bc282 706frame_map_regnum_to_name (struct frame_info *frame, int regnum)
e36180d7 707{
eb8bc282 708 return user_reg_map_regnum_to_name (get_frame_arch (frame), regnum);
e36180d7 709}
4c1e7e9d 710
a94dd1fd
AC
711/* Create a sentinel frame. */
712
b9362cc7 713static struct frame_info *
a94dd1fd
AC
714create_sentinel_frame (struct regcache *regcache)
715{
716 struct frame_info *frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
a94dd1fd
AC
717 frame->level = -1;
718 /* Explicitly initialize the sentinel frame's cache. Provide it
719 with the underlying regcache. In the future additional
720 information, such as the frame's thread will be added. */
6dc42492 721 frame->prologue_cache = sentinel_frame_cache (regcache);
a94dd1fd
AC
722 /* For the moment there is only one sentinel frame implementation. */
723 frame->unwind = sentinel_frame_unwind;
724 /* Link this frame back to itself. The frame is self referential
725 (the unwound PC is the same as the pc), so make it so. */
726 frame->next = frame;
50bbdbd9
AC
727 /* Make the sentinel frame's ID valid, but invalid. That way all
728 comparisons with it should fail. */
d0a55772
AC
729 frame->this_id.p = 1;
730 frame->this_id.value = null_frame_id;
7f78e237
AC
731 if (frame_debug)
732 {
733 fprintf_unfiltered (gdb_stdlog, "{ create_sentinel_frame (...) -> ");
734 fprint_frame (gdb_stdlog, frame);
735 fprintf_unfiltered (gdb_stdlog, " }\n");
736 }
a94dd1fd
AC
737 return frame;
738}
739
4c1e7e9d
AC
740/* Info about the innermost stack frame (contents of FP register) */
741
742static struct frame_info *current_frame;
743
744/* Cache for frame addresses already read by gdb. Valid only while
745 inferior is stopped. Control variables for the frame cache should
746 be local to this module. */
747
748static struct obstack frame_cache_obstack;
749
750void *
479ab5a0 751frame_obstack_zalloc (unsigned long size)
4c1e7e9d 752{
479ab5a0
AC
753 void *data = obstack_alloc (&frame_cache_obstack, size);
754 memset (data, 0, size);
755 return data;
4c1e7e9d
AC
756}
757
a94dd1fd
AC
758/* Return the innermost (currently executing) stack frame. This is
759 split into two functions. The function unwind_to_current_frame()
760 is wrapped in catch exceptions so that, even when the unwind of the
761 sentinel frame fails, the function still returns a stack frame. */
762
763static int
764unwind_to_current_frame (struct ui_out *ui_out, void *args)
765{
766 struct frame_info *frame = get_prev_frame (args);
bbde78fa 767 /* A sentinel frame can fail to unwind, e.g., because its PC value
a94dd1fd
AC
768 lands in somewhere like start. */
769 if (frame == NULL)
770 return 1;
771 current_frame = frame;
772 return 0;
773}
4c1e7e9d
AC
774
775struct frame_info *
776get_current_frame (void)
777{
0a1e1ca1
AC
778 /* First check, and report, the lack of registers. Having GDB
779 report "No stack!" or "No memory" when the target doesn't even
780 have registers is very confusing. Besides, "printcmd.exp"
781 explicitly checks that ``print $pc'' with no registers prints "No
782 registers". */
a94dd1fd
AC
783 if (!target_has_registers)
784 error ("No registers.");
0a1e1ca1
AC
785 if (!target_has_stack)
786 error ("No stack.");
a94dd1fd
AC
787 if (!target_has_memory)
788 error ("No memory.");
4c1e7e9d
AC
789 if (current_frame == NULL)
790 {
a94dd1fd
AC
791 struct frame_info *sentinel_frame =
792 create_sentinel_frame (current_regcache);
793 if (catch_exceptions (uiout, unwind_to_current_frame, sentinel_frame,
794 NULL, RETURN_MASK_ERROR) != 0)
795 {
796 /* Oops! Fake a current frame? Is this useful? It has a PC
797 of zero, for instance. */
798 current_frame = sentinel_frame;
799 }
4c1e7e9d
AC
800 }
801 return current_frame;
802}
803
6e7f8b9c
AC
804/* The "selected" stack frame is used by default for local and arg
805 access. May be zero, for no selected frame. */
806
807struct frame_info *deprecated_selected_frame;
808
bbde78fa 809/* Return the selected frame. Always non-NULL (unless there isn't an
6e7f8b9c
AC
810 inferior sufficient for creating a frame) in which case an error is
811 thrown. */
812
813struct frame_info *
814get_selected_frame (void)
815{
816 if (deprecated_selected_frame == NULL)
817 /* Hey! Don't trust this. It should really be re-finding the
818 last selected frame of the currently selected thread. This,
819 though, is better than nothing. */
820 select_frame (get_current_frame ());
821 /* There is always a frame. */
822 gdb_assert (deprecated_selected_frame != NULL);
823 return deprecated_selected_frame;
824}
825
bbde78fa 826/* This is a variant of get_selected_frame() which can be called when
7dd88986 827 the inferior does not have a frame; in that case it will return
bbde78fa 828 NULL instead of calling error(). */
7dd88986
DJ
829
830struct frame_info *
831deprecated_safe_get_selected_frame (void)
832{
833 if (!target_has_registers || !target_has_stack || !target_has_memory)
834 return NULL;
835 return get_selected_frame ();
836}
837
6e7f8b9c
AC
838/* Select frame FI (or NULL - to invalidate the current frame). */
839
840void
841select_frame (struct frame_info *fi)
842{
52f0bd74 843 struct symtab *s;
6e7f8b9c
AC
844
845 deprecated_selected_frame = fi;
bbde78fa 846 /* NOTE: cagney/2002-05-04: FI can be NULL. This occurs when the
6e7f8b9c 847 frame is being invalidated. */
9a4105ab
AC
848 if (deprecated_selected_frame_level_changed_hook)
849 deprecated_selected_frame_level_changed_hook (frame_relative_level (fi));
6e7f8b9c
AC
850
851 /* FIXME: kseitz/2002-08-28: It would be nice to call
bbde78fa 852 selected_frame_level_changed_event() right here, but due to limitations
6e7f8b9c 853 in the current interfaces, we would end up flooding UIs with events
bbde78fa 854 because select_frame() is used extensively internally.
6e7f8b9c
AC
855
856 Once we have frame-parameterized frame (and frame-related) commands,
857 the event notification can be moved here, since this function will only
bbde78fa 858 be called when the user's selected frame is being changed. */
6e7f8b9c
AC
859
860 /* Ensure that symbols for this frame are read in. Also, determine the
861 source language of this frame, and switch to it if desired. */
862 if (fi)
863 {
7ae4c3a5 864 /* We retrieve the frame's symtab by using the frame PC. However
bbde78fa 865 we cannot use the frame PC as-is, because it usually points to
7ae4c3a5
JB
866 the instruction following the "call", which is sometimes the
867 first instruction of another function. So we rely on
868 get_frame_address_in_block() which provides us with a PC which
869 is guaranteed to be inside the frame's code block. */
870 s = find_pc_symtab (get_frame_address_in_block (fi));
6e7f8b9c
AC
871 if (s
872 && s->language != current_language->la_language
873 && s->language != language_unknown
874 && language_mode == language_mode_auto)
875 {
876 set_language (s->language);
877 }
878 }
879}
c689142b 880
4c1e7e9d
AC
881/* Create an arbitrary (i.e. address specified by user) or innermost frame.
882 Always returns a non-NULL value. */
883
884struct frame_info *
885create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
886{
887 struct frame_info *fi;
4c1e7e9d 888
7f78e237
AC
889 if (frame_debug)
890 {
891 fprintf_unfiltered (gdb_stdlog,
892 "{ create_new_frame (addr=0x%s, pc=0x%s) ",
893 paddr_nz (addr), paddr_nz (pc));
894 }
895
479ab5a0 896 fi = frame_obstack_zalloc (sizeof (struct frame_info));
4c1e7e9d 897
a94dd1fd 898 fi->next = create_sentinel_frame (current_regcache);
7df05f2b
AC
899
900 /* Select/initialize both the unwind function and the frame's type
901 based on the PC. */
82417da5 902 fi->unwind = frame_unwind_find_by_frame (fi->next, &fi->prologue_cache);
7df05f2b 903
18adea3f 904 fi->this_id.p = 1;
11889732
AC
905 deprecated_update_frame_base_hack (fi, addr);
906 deprecated_update_frame_pc_hack (fi, pc);
4c1e7e9d 907
7f78e237
AC
908 if (frame_debug)
909 {
910 fprintf_unfiltered (gdb_stdlog, "-> ");
911 fprint_frame (gdb_stdlog, fi);
912 fprintf_unfiltered (gdb_stdlog, " }\n");
913 }
914
4c1e7e9d
AC
915 return fi;
916}
917
03febf99
AC
918/* Return the frame that THIS_FRAME calls (NULL if THIS_FRAME is the
919 innermost frame). Be careful to not fall off the bottom of the
920 frame chain and onto the sentinel frame. */
4c1e7e9d
AC
921
922struct frame_info *
03febf99 923get_next_frame (struct frame_info *this_frame)
4c1e7e9d 924{
03febf99
AC
925 if (this_frame->level > 0)
926 return this_frame->next;
a94dd1fd
AC
927 else
928 return NULL;
4c1e7e9d
AC
929}
930
f4c5303c
OF
931/* Observer for the target_changed event. */
932
933void
934frame_observer_target_changed (struct target_ops *target)
935{
936 flush_cached_frames ();
937}
938
4c1e7e9d
AC
939/* Flush the entire frame cache. */
940
941void
942flush_cached_frames (void)
943{
944 /* Since we can't really be sure what the first object allocated was */
945 obstack_free (&frame_cache_obstack, 0);
946 obstack_init (&frame_cache_obstack);
947
948 current_frame = NULL; /* Invalidate cache */
949 select_frame (NULL);
950 annotate_frames_invalid ();
7f78e237
AC
951 if (frame_debug)
952 fprintf_unfiltered (gdb_stdlog, "{ flush_cached_frames () }\n");
4c1e7e9d
AC
953}
954
955/* Flush the frame cache, and start a new one if necessary. */
956
957void
958reinit_frame_cache (void)
959{
960 flush_cached_frames ();
961
962 /* FIXME: The inferior_ptid test is wrong if there is a corefile. */
963 if (PIDGET (inferior_ptid) != 0)
964 {
965 select_frame (get_current_frame ());
966 }
967}
968
5613d8d3
AC
969/* Return a "struct frame_info" corresponding to the frame that called
970 THIS_FRAME. Returns NULL if there is no such frame.
5bf00f29 971
5613d8d3
AC
972 Unlike get_prev_frame, this function always tries to unwind the
973 frame. */
eb4f72c5 974
5613d8d3
AC
975static struct frame_info *
976get_prev_frame_1 (struct frame_info *this_frame)
eb4f72c5
AC
977{
978 struct frame_info *prev_frame;
756e95f1 979 struct frame_id this_id;
eb4f72c5 980
5613d8d3
AC
981 gdb_assert (this_frame != NULL);
982
7f78e237
AC
983 if (frame_debug)
984 {
5613d8d3 985 fprintf_unfiltered (gdb_stdlog, "{ get_prev_frame_1 (this_frame=");
7f78e237
AC
986 if (this_frame != NULL)
987 fprintf_unfiltered (gdb_stdlog, "%d", this_frame->level);
988 else
989 fprintf_unfiltered (gdb_stdlog, "<NULL>");
990 fprintf_unfiltered (gdb_stdlog, ") ");
991 }
992
5613d8d3
AC
993 /* Only try to do the unwind once. */
994 if (this_frame->prev_p)
995 {
996 if (frame_debug)
997 {
998 fprintf_unfiltered (gdb_stdlog, "-> ");
999 fprint_frame (gdb_stdlog, this_frame->prev);
1000 fprintf_unfiltered (gdb_stdlog, " // cached \n");
1001 }
1002 return this_frame->prev;
1003 }
1004 this_frame->prev_p = 1;
1005
5613d8d3
AC
1006 /* Check that this frame's ID was valid. If it wasn't, don't try to
1007 unwind to the prev frame. Be careful to not apply this test to
1008 the sentinel frame. */
756e95f1
MK
1009 this_id = get_frame_id (this_frame);
1010 if (this_frame->level >= 0 && !frame_id_p (this_id))
5613d8d3
AC
1011 {
1012 if (frame_debug)
1013 {
1014 fprintf_unfiltered (gdb_stdlog, "-> ");
1015 fprint_frame (gdb_stdlog, NULL);
1016 fprintf_unfiltered (gdb_stdlog, " // this ID is NULL }\n");
1017 }
1018 return NULL;
1019 }
1020
1021 /* Check that this frame's ID isn't inner to (younger, below, next)
1022 the next frame. This happens when a frame unwind goes backwards.
adb54772
AC
1023 Exclude signal trampolines (due to sigaltstack the frame ID can
1024 go backwards) and sentinel frames (the test is meaningless). */
1025 if (this_frame->next->level >= 0
c1bf6f65 1026 && this_frame->next->unwind->type != SIGTRAMP_FRAME
756e95f1 1027 && frame_id_inner (this_id, get_frame_id (this_frame->next)))
5613d8d3
AC
1028 error ("Previous frame inner to this frame (corrupt stack?)");
1029
1030 /* Check that this and the next frame are not identical. If they
1031 are, there is most likely a stack cycle. As with the inner-than
1032 test above, avoid comparing the inner-most and sentinel frames. */
1033 if (this_frame->level > 0
756e95f1 1034 && frame_id_eq (this_id, get_frame_id (this_frame->next)))
5613d8d3
AC
1035 error ("Previous frame identical to this frame (corrupt stack?)");
1036
1037 /* Allocate the new frame but do not wire it in to the frame chain.
1038 Some (bad) code in INIT_FRAME_EXTRA_INFO tries to look along
1039 frame->next to pull some fancy tricks (of course such code is, by
1040 definition, recursive). Try to prevent it.
1041
1042 There is no reason to worry about memory leaks, should the
1043 remainder of the function fail. The allocated memory will be
1044 quickly reclaimed when the frame cache is flushed, and the `we've
1045 been here before' check above will stop repeated memory
1046 allocation calls. */
1047 prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
1048 prev_frame->level = this_frame->level + 1;
1049
1050 /* Don't yet compute ->unwind (and hence ->type). It is computed
1051 on-demand in get_frame_type, frame_register_unwind, and
1052 get_frame_id. */
1053
1054 /* Don't yet compute the frame's ID. It is computed on-demand by
1055 get_frame_id(). */
1056
1057 /* The unwound frame ID is validate at the start of this function,
1058 as part of the logic to decide if that frame should be further
1059 unwound, and not here while the prev frame is being created.
1060 Doing this makes it possible for the user to examine a frame that
1061 has an invalid frame ID.
1062
1063 Some very old VAX code noted: [...] For the sake of argument,
1064 suppose that the stack is somewhat trashed (which is one reason
1065 that "info frame" exists). So, return 0 (indicating we don't
1066 know the address of the arglist) if we don't know what frame this
1067 frame calls. */
1068
1069 /* Link it in. */
1070 this_frame->prev = prev_frame;
1071 prev_frame->next = this_frame;
1072
1073 if (frame_debug)
1074 {
1075 fprintf_unfiltered (gdb_stdlog, "-> ");
1076 fprint_frame (gdb_stdlog, prev_frame);
1077 fprintf_unfiltered (gdb_stdlog, " }\n");
1078 }
1079
1080 return prev_frame;
1081}
1082
1083/* Debug routine to print a NULL frame being returned. */
1084
1085static void
1086frame_debug_got_null_frame (struct ui_file *file,
1087 struct frame_info *this_frame,
1088 const char *reason)
1089{
1090 if (frame_debug)
1091 {
1092 fprintf_unfiltered (gdb_stdlog, "{ get_prev_frame (this_frame=");
1093 if (this_frame != NULL)
1094 fprintf_unfiltered (gdb_stdlog, "%d", this_frame->level);
1095 else
1096 fprintf_unfiltered (gdb_stdlog, "<NULL>");
1097 fprintf_unfiltered (gdb_stdlog, ") -> // %s}\n", reason);
1098 }
1099}
1100
1101/* Return a structure containing various interesting information about
1102 the frame that called THIS_FRAME. Returns NULL if there is entier
1103 no such frame or the frame fails any of a set of target-independent
1104 condition that should terminate the frame chain (e.g., as unwinding
1105 past main()).
1106
1107 This function should not contain target-dependent tests, such as
1108 checking whether the program-counter is zero. */
1109
1110struct frame_info *
1111get_prev_frame (struct frame_info *this_frame)
1112{
1113 struct frame_info *prev_frame;
1114
eb4f72c5
AC
1115 /* Return the inner-most frame, when the caller passes in NULL. */
1116 /* NOTE: cagney/2002-11-09: Not sure how this would happen. The
1117 caller should have previously obtained a valid frame using
1118 get_selected_frame() and then called this code - only possibility
1119 I can think of is code behaving badly.
1120
1121 NOTE: cagney/2003-01-10: Talk about code behaving badly. Check
1122 block_innermost_frame(). It does the sequence: frame = NULL;
1123 while (1) { frame = get_prev_frame (frame); .... }. Ulgh! Why
1124 it couldn't be written better, I don't know.
1125
bbde78fa 1126 NOTE: cagney/2003-01-11: I suspect what is happening in
eb4f72c5 1127 block_innermost_frame() is, when the target has no state
bbde78fa 1128 (registers, memory, ...), it is still calling this function. The
eb4f72c5
AC
1129 assumption being that this function will return NULL indicating
1130 that a frame isn't possible, rather than checking that the target
1131 has state and then calling get_current_frame() and
1132 get_prev_frame(). This is a guess mind. */
03febf99 1133 if (this_frame == NULL)
eb4f72c5
AC
1134 {
1135 /* NOTE: cagney/2002-11-09: There was a code segment here that
1136 would error out when CURRENT_FRAME was NULL. The comment
1137 that went with it made the claim ...
1138
1139 ``This screws value_of_variable, which just wants a nice
1140 clean NULL return from block_innermost_frame if there are no
1141 frames. I don't think I've ever seen this message happen
1142 otherwise. And returning NULL here is a perfectly legitimate
1143 thing to do.''
1144
1145 Per the above, this code shouldn't even be called with a NULL
03febf99 1146 THIS_FRAME. */
5613d8d3 1147 frame_debug_got_null_frame (gdb_stdlog, this_frame, "this_frame NULL");
eb4f72c5
AC
1148 return current_frame;
1149 }
1150
1151 /* There is always a frame. If this assertion fails, suspect that
1152 something should be calling get_selected_frame() or
1153 get_current_frame(). */
03febf99 1154 gdb_assert (this_frame != NULL);
eb4f72c5 1155
3f1d7f16 1156 /* Make sure we pass an address within THIS_FRAME's code block to
bbde78fa 1157 inside_main_func(). Otherwise, we might stop unwinding at a
3f1d7f16
MK
1158 function which has a call instruction as its last instruction if
1159 that function immediately precedes main(). */
03febf99 1160 if (this_frame->level >= 0
25d29d70 1161 && !backtrace_past_main
3f1d7f16 1162 && inside_main_func (get_frame_address_in_block (this_frame)))
bbde78fa 1163 /* Don't unwind past main(), but always unwind the sentinel frame.
eb4f72c5
AC
1164 Note, this is done _before_ the frame has been marked as
1165 previously unwound. That way if the user later decides to
1166 allow unwinds past main(), that just happens. */
ac2bd0a9 1167 {
5613d8d3 1168 frame_debug_got_null_frame (gdb_stdlog, this_frame, "inside main func");
ac2bd0a9
AC
1169 return NULL;
1170 }
eb4f72c5 1171
25d29d70
AC
1172 if (this_frame->level > backtrace_limit)
1173 {
1174 error ("Backtrace limit of %d exceeded", backtrace_limit);
1175 }
1176
0714963c
AC
1177 /* If we're already inside the entry function for the main objfile,
1178 then it isn't valid. Don't apply this test to a dummy frame -
bbde78fa 1179 dummy frame PCs typically land in the entry func. Don't apply
0714963c
AC
1180 this test to the sentinel frame. Sentinel frames should always
1181 be allowed to unwind. */
1182 /* NOTE: cagney/2003-02-25: Don't enable until someone has found
1183 hard evidence that this is needed. */
2f72f850
AC
1184 /* NOTE: cagney/2003-07-07: Fixed a bug in inside_main_func() -
1185 wasn't checking for "main" in the minimal symbols. With that
1186 fixed asm-source tests now stop in "main" instead of halting the
bbde78fa 1187 backtrace in weird and wonderful ways somewhere inside the entry
2f72f850
AC
1188 file. Suspect that tests for inside the entry file/func were
1189 added to work around that (now fixed) case. */
0714963c
AC
1190 /* NOTE: cagney/2003-07-15: danielj (if I'm reading it right)
1191 suggested having the inside_entry_func test use the
bbde78fa
JM
1192 inside_main_func() msymbol trick (along with entry_point_address()
1193 I guess) to determine the address range of the start function.
0714963c
AC
1194 That should provide a far better stopper than the current
1195 heuristics. */
1196 /* NOTE: cagney/2003-07-15: Need to add a "set backtrace
1197 beyond-entry-func" command so that this can be selectively
1198 disabled. */
1199 if (0
1200#if 0
1201 && backtrace_beyond_entry_func
1202#endif
c1bf6f65 1203 && this_frame->unwind->type != DUMMY_FRAME && this_frame->level >= 0
6e4c6c91 1204 && inside_entry_func (this_frame))
0714963c 1205 {
5613d8d3 1206 frame_debug_got_null_frame (gdb_stdlog, this_frame, "inside entry func");
0714963c
AC
1207 return NULL;
1208 }
1209
5613d8d3 1210 return get_prev_frame_1 (this_frame);
eb4f72c5
AC
1211}
1212
4c1e7e9d
AC
1213CORE_ADDR
1214get_frame_pc (struct frame_info *frame)
1215{
d1340264
AC
1216 gdb_assert (frame->next != NULL);
1217 return frame_pc_unwind (frame->next);
4c1e7e9d
AC
1218}
1219
8edd5d01
AC
1220/* Return an address of that falls within the frame's code block. */
1221
1222CORE_ADDR
1223frame_unwind_address_in_block (struct frame_info *next_frame)
1224{
1225 /* A draft address. */
1226 CORE_ADDR pc = frame_pc_unwind (next_frame);
1227
1228 /* If THIS frame is not inner most (i.e., NEXT isn't the sentinel),
1229 and NEXT is `normal' (i.e., not a sigtramp, dummy, ....) THIS
1230 frame's PC ends up pointing at the instruction fallowing the
1231 "call". Adjust that PC value so that it falls on the call
1232 instruction (which, hopefully, falls within THIS frame's code
1233 block. So far it's proved to be a very good approximation. See
bbde78fa 1234 get_frame_type() for why ->type can't be used. */
8edd5d01
AC
1235 if (next_frame->level >= 0
1236 && get_frame_type (next_frame) == NORMAL_FRAME)
1237 --pc;
1238 return pc;
1239}
1240
1241CORE_ADDR
1242get_frame_address_in_block (struct frame_info *this_frame)
1243{
1244 return frame_unwind_address_in_block (this_frame->next);
1245}
1246
1058bca7
AC
1247static int
1248pc_notcurrent (struct frame_info *frame)
1249{
1250 /* If FRAME is not the innermost frame, that normally means that
1251 FRAME->pc points at the return instruction (which is *after* the
1252 call instruction), and we want to get the line containing the
1253 call (because the call is where the user thinks the program is).
1254 However, if the next frame is either a SIGTRAMP_FRAME or a
1255 DUMMY_FRAME, then the next frame will contain a saved interrupt
1256 PC and such a PC indicates the current (rather than next)
1257 instruction/line, consequently, for such cases, want to get the
1258 line containing fi->pc. */
1259 struct frame_info *next = get_next_frame (frame);
1260 int notcurrent = (next != NULL && get_frame_type (next) == NORMAL_FRAME);
1261 return notcurrent;
1262}
1263
1264void
1265find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
1266{
11889732 1267 (*sal) = find_pc_line (get_frame_pc (frame), pc_notcurrent (frame));
1058bca7
AC
1268}
1269
c193f6ac
AC
1270/* Per "frame.h", return the ``address'' of the frame. Code should
1271 really be using get_frame_id(). */
1272CORE_ADDR
1273get_frame_base (struct frame_info *fi)
1274{
d0a55772 1275 return get_frame_id (fi).stack_addr;
c193f6ac
AC
1276}
1277
da62e633
AC
1278/* High-level offsets into the frame. Used by the debug info. */
1279
1280CORE_ADDR
1281get_frame_base_address (struct frame_info *fi)
1282{
7df05f2b 1283 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
1284 return 0;
1285 if (fi->base == NULL)
e8a89fe2 1286 fi->base = frame_base_find_by_frame (fi->next);
da62e633
AC
1287 /* Sneaky: If the low-level unwind and high-level base code share a
1288 common unwinder, let them share the prologue cache. */
1289 if (fi->base->unwind == fi->unwind)
1290 return fi->base->this_base (fi->next, &fi->prologue_cache);
1291 return fi->base->this_base (fi->next, &fi->base_cache);
1292}
1293
1294CORE_ADDR
1295get_frame_locals_address (struct frame_info *fi)
1296{
1297 void **cache;
7df05f2b 1298 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
1299 return 0;
1300 /* If there isn't a frame address method, find it. */
1301 if (fi->base == NULL)
e8a89fe2 1302 fi->base = frame_base_find_by_frame (fi->next);
da62e633
AC
1303 /* Sneaky: If the low-level unwind and high-level base code share a
1304 common unwinder, let them share the prologue cache. */
1305 if (fi->base->unwind == fi->unwind)
1306 cache = &fi->prologue_cache;
1307 else
1308 cache = &fi->base_cache;
1309 return fi->base->this_locals (fi->next, cache);
1310}
1311
1312CORE_ADDR
1313get_frame_args_address (struct frame_info *fi)
1314{
1315 void **cache;
7df05f2b 1316 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
1317 return 0;
1318 /* If there isn't a frame address method, find it. */
1319 if (fi->base == NULL)
e8a89fe2 1320 fi->base = frame_base_find_by_frame (fi->next);
da62e633
AC
1321 /* Sneaky: If the low-level unwind and high-level base code share a
1322 common unwinder, let them share the prologue cache. */
1323 if (fi->base->unwind == fi->unwind)
1324 cache = &fi->prologue_cache;
1325 else
1326 cache = &fi->base_cache;
1327 return fi->base->this_args (fi->next, cache);
1328}
1329
85cf597a
AC
1330/* Level of the selected frame: 0 for innermost, 1 for its caller, ...
1331 or -1 for a NULL frame. */
1332
1333int
1334frame_relative_level (struct frame_info *fi)
1335{
1336 if (fi == NULL)
1337 return -1;
1338 else
1339 return fi->level;
1340}
1341
5a203e44
AC
1342enum frame_type
1343get_frame_type (struct frame_info *frame)
1344{
c1bf6f65
AC
1345 if (frame->unwind == NULL)
1346 /* Initialize the frame's unwinder because that's what
1347 provides the frame's type. */
1348 frame->unwind = frame_unwind_find_by_frame (frame->next,
1349 &frame->prologue_cache);
1350 return frame->unwind->type;
5a203e44
AC
1351}
1352
b87efeee 1353void
2f107107 1354deprecated_update_frame_pc_hack (struct frame_info *frame, CORE_ADDR pc)
b87efeee 1355{
7f78e237
AC
1356 if (frame_debug)
1357 fprintf_unfiltered (gdb_stdlog,
1358 "{ deprecated_update_frame_pc_hack (frame=%d,pc=0x%s) }\n",
1359 frame->level, paddr_nz (pc));
e0d2ae16 1360 /* NOTE: cagney/2003-03-11: Some architectures (e.g., Arm) are
bbde78fa 1361 maintaining a locally allocated frame object. Since such frames
e0d2ae16
AC
1362 are not in the frame chain, it isn't possible to assume that the
1363 frame has a next. Sigh. */
1364 if (frame->next != NULL)
1365 {
1366 /* While we're at it, update this frame's cached PC value, found
1367 in the next frame. Oh for the day when "struct frame_info"
1368 is opaque and this hack on hack can just go away. */
d1340264
AC
1369 frame->next->prev_pc.value = pc;
1370 frame->next->prev_pc.p = 1;
e0d2ae16 1371 }
2f107107
AC
1372}
1373
1374void
1375deprecated_update_frame_base_hack (struct frame_info *frame, CORE_ADDR base)
1376{
7f78e237
AC
1377 if (frame_debug)
1378 fprintf_unfiltered (gdb_stdlog,
1379 "{ deprecated_update_frame_base_hack (frame=%d,base=0x%s) }\n",
1380 frame->level, paddr_nz (base));
2f107107 1381 /* See comment in "frame.h". */
d0a55772 1382 frame->this_id.value.stack_addr = base;
b87efeee
AC
1383}
1384
ae1e7417
AC
1385/* Memory access methods. */
1386
1387void
1388get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr, void *buf,
1389 int len)
1390{
1391 read_memory (addr, buf, len);
1392}
1393
1394LONGEST
1395get_frame_memory_signed (struct frame_info *this_frame, CORE_ADDR addr,
1396 int len)
1397{
1398 return read_memory_integer (addr, len);
1399}
1400
1401ULONGEST
1402get_frame_memory_unsigned (struct frame_info *this_frame, CORE_ADDR addr,
1403 int len)
1404{
1405 return read_memory_unsigned_integer (addr, len);
1406}
1407
304396fb
AC
1408int
1409safe_frame_unwind_memory (struct frame_info *this_frame,
1410 CORE_ADDR addr, void *buf, int len)
1411{
1f602b35
AC
1412 /* NOTE: deprecated_read_memory_nobpt returns zero on success! */
1413 return !deprecated_read_memory_nobpt (addr, buf, len);
304396fb
AC
1414}
1415
ae1e7417
AC
1416/* Architecture method. */
1417
1418struct gdbarch *
1419get_frame_arch (struct frame_info *this_frame)
1420{
1421 return current_gdbarch;
1422}
1423
a9e5fdc2
AC
1424/* Stack pointer methods. */
1425
1426CORE_ADDR
1427get_frame_sp (struct frame_info *this_frame)
1428{
1429 return frame_sp_unwind (this_frame->next);
1430}
1431
1432CORE_ADDR
1433frame_sp_unwind (struct frame_info *next_frame)
1434{
bbde78fa 1435 /* Normality - an architecture that provides a way of obtaining any
a9e5fdc2
AC
1436 frame inner-most address. */
1437 if (gdbarch_unwind_sp_p (current_gdbarch))
1438 return gdbarch_unwind_sp (current_gdbarch, next_frame);
1439 /* Things are looking grim. If it's the inner-most frame and there
bbde78fa 1440 is a TARGET_READ_SP, then that can be used. */
a9e5fdc2
AC
1441 if (next_frame->level < 0 && TARGET_READ_SP_P ())
1442 return TARGET_READ_SP ();
1443 /* Now things are really are grim. Hope that the value returned by
1444 the SP_REGNUM register is meaningful. */
1445 if (SP_REGNUM >= 0)
1446 {
1447 ULONGEST sp;
1448 frame_unwind_unsigned_register (next_frame, SP_REGNUM, &sp);
1449 return sp;
1450 }
1451 internal_error (__FILE__, __LINE__, "Missing unwind SP method");
1452}
1453
b9362cc7
AC
1454extern initialize_file_ftype _initialize_frame; /* -Wmissing-prototypes */
1455
25d29d70
AC
1456static struct cmd_list_element *set_backtrace_cmdlist;
1457static struct cmd_list_element *show_backtrace_cmdlist;
1458
1459static void
1460set_backtrace_cmd (char *args, int from_tty)
1461{
1462 help_list (set_backtrace_cmdlist, "set backtrace ", -1, gdb_stdout);
1463}
1464
1465static void
1466show_backtrace_cmd (char *args, int from_tty)
1467{
1468 cmd_show_list (show_backtrace_cmdlist, from_tty, "");
1469}
1470
4c1e7e9d
AC
1471void
1472_initialize_frame (void)
1473{
1474 obstack_init (&frame_cache_obstack);
eb4f72c5 1475
f4c5303c
OF
1476 observer_attach_target_changed (frame_observer_target_changed);
1477
25d29d70
AC
1478 add_prefix_cmd ("backtrace", class_maintenance, set_backtrace_cmd, "\
1479Set backtrace specific variables.\n\
1480Configure backtrace variables such as the backtrace limit",
1481 &set_backtrace_cmdlist, "set backtrace ",
1482 0/*allow-unknown*/, &setlist);
1483 add_prefix_cmd ("backtrace", class_maintenance, show_backtrace_cmd, "\
1484Show backtrace specific variables\n\
1485Show backtrace variables such as the backtrace limit",
1486 &show_backtrace_cmdlist, "show backtrace ",
1487 0/*allow-unknown*/, &showlist);
1488
1489 add_setshow_boolean_cmd ("past-main", class_obscure,
1490 &backtrace_past_main, "\
3b64bf98
AC
1491Set whether backtraces should continue past \"main\".", "\
1492Show whether backtraces should continue past \"main\".", "\
eb4f72c5
AC
1493Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
1494the backtrace at \"main\". Set this variable if you need to see the rest\n\
1495of the stack trace.", "\
3b64bf98 1496Whether backtraces should continue past \"main\" is %s.",
25d29d70
AC
1497 NULL, NULL, &set_backtrace_cmdlist,
1498 &show_backtrace_cmdlist);
1499
1500 add_setshow_uinteger_cmd ("limit", class_obscure,
1501 &backtrace_limit, "\
3b64bf98
AC
1502Set an upper bound on the number of backtrace levels.", "\
1503Show the upper bound on the number of backtrace levels.", "\
fec74868 1504No more than the specified number of frames can be displayed or examined.\n\
25d29d70 1505Zero is unlimited.", "\
3b64bf98 1506An upper bound on the number of backtrace levels is %s.",
25d29d70
AC
1507 NULL, NULL, &set_backtrace_cmdlist,
1508 &show_backtrace_cmdlist);
ac2bd0a9
AC
1509
1510 /* Debug this files internals. */
cb1a6d5f
AC
1511 deprecated_add_show_from_set
1512 (add_set_cmd ("frame", class_maintenance, var_zinteger,
1513 &frame_debug, "Set frame debugging.\n\
ac2bd0a9 1514When non-zero, frame specific internal debugging is enabled.", &setdebuglist),
cb1a6d5f 1515 &showdebuglist);
4c1e7e9d 1516}