* config/tc-hppa.c: Fix comment typos.
[deliverable/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,
51603483 4 2001, 2002, 2003 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"
42
bd013d54
AC
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
53struct 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
ce2826aa 68 ->unwind->type. Unfortunately, legacy code is still explicitly
bd013d54
AC
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
ac2bd0a9
AC
134/* Flag to control debugging. */
135
136static int frame_debug;
137
25d29d70
AC
138/* Flag to indicate whether backtraces should stop at main et.al. */
139
140static int backtrace_past_main;
141static unsigned int backtrace_limit = UINT_MAX;
eb4f72c5 142
d65fe839 143
00905d52 144void
7f78e237
AC
145fprint_frame_id (struct ui_file *file, struct frame_id id)
146{
48c66725 147 fprintf_unfiltered (file, "{stack=0x%s,code=0x%s,special=0x%s}",
7f78e237 148 paddr_nz (id.stack_addr),
48c66725
JJ
149 paddr_nz (id.code_addr),
150 paddr_nz (id.special_addr));
7f78e237
AC
151}
152
153static void
154fprint_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
176static void
177fprint_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
7a424e99 216/* Return a frame uniq ID that can be used to, later, re-find the
101dcfbe
AC
217 frame. */
218
7a424e99
AC
219struct frame_id
220get_frame_id (struct frame_info *fi)
101dcfbe
AC
221{
222 if (fi == NULL)
223 {
7a424e99 224 return null_frame_id;
101dcfbe 225 }
d0a55772 226 if (!fi->this_id.p)
101dcfbe 227 {
06c77151 228 gdb_assert (!legacy_frame_p (current_gdbarch));
7f78e237
AC
229 if (frame_debug)
230 fprintf_unfiltered (gdb_stdlog, "{ get_frame_id (fi=%d) ",
231 fi->level);
c50901fd
AC
232 /* Find the unwinder. */
233 if (fi->unwind == NULL)
234 {
e8a89fe2 235 fi->unwind = frame_unwind_find_by_frame (fi->next);
c50901fd
AC
236 /* FIXME: cagney/2003-04-02: Rather than storing the frame's
237 type in the frame, the unwinder's type should be returned
ce2826aa 238 directly. Unfortunately, legacy code, called by
c50901fd
AC
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 }
06c77151 244 /* Find THIS frame's ID. */
d0a55772
AC
245 fi->unwind->this_id (fi->next, &fi->prologue_cache, &fi->this_id.value);
246 fi->this_id.p = 1;
7f78e237
AC
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 }
101dcfbe 253 }
18adea3f 254 return fi->this_id.value;
101dcfbe
AC
255}
256
7a424e99
AC
257const struct frame_id null_frame_id; /* All zeros. */
258
259struct frame_id
48c66725
JJ
260frame_id_build_special (CORE_ADDR stack_addr, CORE_ADDR code_addr,
261 CORE_ADDR special_addr)
7a424e99
AC
262{
263 struct frame_id id;
d0a55772
AC
264 id.stack_addr = stack_addr;
265 id.code_addr = code_addr;
48c66725 266 id.special_addr = special_addr;
7a424e99
AC
267 return id;
268}
269
48c66725
JJ
270struct frame_id
271frame_id_build (CORE_ADDR stack_addr, CORE_ADDR code_addr)
272{
273 return frame_id_build_special (stack_addr, code_addr, 0);
274}
275
7a424e99
AC
276int
277frame_id_p (struct frame_id l)
278{
d0a55772
AC
279 int p;
280 /* The .code can be NULL but the .stack cannot. */
281 p = (l.stack_addr != 0);
7f78e237
AC
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 }
d0a55772 288 return p;
7a424e99
AC
289}
290
291int
292frame_id_eq (struct frame_id l, struct frame_id r)
293{
d0a55772
AC
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;
48c66725
JJ
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. */
d0a55772
AC
312 eq = 1;
313 else
4aa79dcc
AC
314 /* No luck. */
315 eq = 0;
7f78e237
AC
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 }
d0a55772 324 return eq;
7a424e99
AC
325}
326
327int
328frame_id_inner (struct frame_id l, struct frame_id r)
329{
d0a55772
AC
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
48c66725 338 different .code and/or .special address). */
d0a55772 339 inner = INNER_THAN (l.stack_addr, r.stack_addr);
7f78e237
AC
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 }
d0a55772 348 return inner;
7a424e99
AC
349}
350
101dcfbe
AC
351struct frame_info *
352frame_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()? */
7a424e99 358 if (!frame_id_p (id))
101dcfbe
AC
359 return NULL;
360
361 for (frame = get_current_frame ();
362 frame != NULL;
363 frame = get_prev_frame (frame))
364 {
7a424e99
AC
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. */
101dcfbe 371 return NULL;
7a424e99
AC
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. */
101dcfbe
AC
376 }
377 return NULL;
378}
379
f18c5a73 380CORE_ADDR
12cc2063 381frame_pc_unwind (struct frame_info *this_frame)
f18c5a73 382{
d1340264 383 if (!this_frame->prev_pc.p)
f18c5a73 384 {
12cc2063
AC
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);
af1342ab 395 return extract_unsigned_integer (buf, size of ISA_PC_REGNUM);
12cc2063
AC
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 }
8bedc050 415 else if (DEPRECATED_FRAME_SAVED_PC_P ())
12cc2063
AC
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. */
8bedc050 421 pc = DEPRECATED_FRAME_SAVED_PC (this_frame);
12cc2063
AC
422 }
423 else
424 internal_error (__FILE__, __LINE__, "No gdbarch_unwind_pc method");
d1340264
AC
425 this_frame->prev_pc.value = pc;
426 this_frame->prev_pc.p = 1;
7f78e237
AC
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));
f18c5a73 432 }
d1340264 433 return this_frame->prev_pc.value;
f18c5a73
AC
434}
435
be41e9f4
AC
436CORE_ADDR
437frame_func_unwind (struct frame_info *fi)
438{
439 if (!fi->prev_func.p)
440 {
57bfe177
AC
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);
be41e9f4 444 fi->prev_func.p = 1;
57bfe177 445 fi->prev_func.addr = get_pc_function_start (addr_in_block);
7f78e237
AC
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));
be41e9f4
AC
450 }
451 return fi->prev_func.addr;
452}
453
454CORE_ADDR
455get_frame_func (struct frame_info *fi)
456{
457 return frame_func_unwind (fi->next);
458}
459
7a25a7c1
AC
460static int
461do_frame_unwind_register (void *src, int regnum, void *buf)
462{
463 frame_unwind_register (src, regnum, buf);
464 return 1;
465}
466
dbe9fe58 467void
7a25a7c1
AC
468frame_pop (struct frame_info *this_frame)
469{
470 struct regcache *scratch_regcache;
471 struct cleanup *cleanups;
472
749b82f6 473 if (DEPRECATED_POP_FRAME_P ())
7a25a7c1
AC
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. */
749b82f6 478 DEPRECATED_POP_FRAME;
7a25a7c1
AC
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);
efd710d6
AC
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
ce2826aa 495 functionality. Unfortunately, they don't implement it. Their
efd710d6
AC
496 lack of a formal definition can lead to targets writing back
497 bogus values (arguably a bug in the target code mind). */
7a25a7c1
AC
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. */
dbe9fe58
AC
505 flush_cached_frames ();
506}
c689142b 507
4f460812
AC
508void
509frame_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
7f78e237
AC
515 if (frame_debug)
516 {
517 fprintf_unfiltered (gdb_stdlog,
518 "{ frame_register_unwind (frame=%d,regnum=\"%s\",...) ",
eb8bc282 519 frame->level, frame_map_regnum_to_name (frame, regnum));
7f78e237
AC
520 }
521
4f460812
AC
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
a94dd1fd
AC
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);
4f460812 535
c50901fd
AC
536 /* Find the unwinder. */
537 if (frame->unwind == NULL)
538 {
e8a89fe2 539 frame->unwind = frame_unwind_find_by_frame (frame->next);
c50901fd
AC
540 /* FIXME: cagney/2003-04-02: Rather than storing the frame's
541 type in the frame, the unwinder's type should be returned
ce2826aa 542 directly. Unfortunately, legacy code, called by
c50901fd
AC
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
6dc42492
AC
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
7f78e237
AC
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;
d2cf594a 567 const unsigned char *buf = bufferp;
7f78e237
AC
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 }
4f460812
AC
575}
576
a216a322
AC
577void
578frame_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 . */
129c1cd6 593 if (DEPRECATED_GET_SAVED_REGISTER_P ())
a216a322 594 {
129c1cd6
AC
595 DEPRECATED_GET_SAVED_REGISTER (bufferp, optimizedp, addrp, frame,
596 regnum, lvalp);
a216a322
AC
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
a94dd1fd
AC
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);
a216a322
AC
622}
623
135c175f 624void
5b181d62 625frame_unwind_register (struct frame_info *frame, int regnum, void *buf)
135c175f
AC
626{
627 int optimized;
628 CORE_ADDR addr;
629 int realnum;
630 enum lval_type lval;
135c175f
AC
631 frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
632 &realnum, buf);
5b181d62
AC
633}
634
f0e7d0e8
AC
635void
636get_frame_register (struct frame_info *frame,
637 int regnum, void *buf)
638{
639 frame_unwind_register (frame->next, regnum, buf);
640}
641
642LONGEST
643frame_unwind_register_signed (struct frame_info *frame, int regnum)
644{
645 char buf[MAX_REGISTER_SIZE];
646 frame_unwind_register (frame, regnum, buf);
f30992d4 647 return extract_signed_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
f0e7d0e8
AC
648}
649
650LONGEST
651get_frame_register_signed (struct frame_info *frame, int regnum)
652{
653 return frame_unwind_register_signed (frame->next, regnum);
654}
655
656ULONGEST
657frame_unwind_register_unsigned (struct frame_info *frame, int regnum)
658{
659 char buf[MAX_REGISTER_SIZE];
660 frame_unwind_register (frame, regnum, buf);
f30992d4 661 return extract_unsigned_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
f0e7d0e8
AC
662}
663
664ULONGEST
665get_frame_register_unsigned (struct frame_info *frame, int regnum)
666{
667 return frame_unwind_register_unsigned (frame->next, regnum);
668}
669
5b181d62
AC
670void
671frame_unwind_signed_register (struct frame_info *frame, int regnum,
672 LONGEST *val)
673{
d9d9c31f 674 char buf[MAX_REGISTER_SIZE];
5b181d62 675 frame_unwind_register (frame, regnum, buf);
f30992d4 676 (*val) = extract_signed_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
135c175f
AC
677}
678
679void
680frame_unwind_unsigned_register (struct frame_info *frame, int regnum,
681 ULONGEST *val)
682{
d9d9c31f 683 char buf[MAX_REGISTER_SIZE];
5b181d62 684 frame_unwind_register (frame, regnum, buf);
f30992d4 685 (*val) = extract_unsigned_integer (buf, DEPRECATED_REGISTER_VIRTUAL_SIZE (regnum));
135c175f 686}
4f460812 687
ff2e87ac
AC
688void
689put_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
cda5a58a 718/* frame_register_read ()
d65fe839 719
cda5a58a 720 Find and return the value of REGNUM for the specified stack frame.
12c266ea
AC
721 The number of bytes copied is DEPRECATED_REGISTER_RAW_SIZE
722 (REGNUM).
d65fe839 723
cda5a58a 724 Returns 0 if the register value could not be found. */
d65fe839 725
cda5a58a
AC
726int
727frame_register_read (struct frame_info *frame, int regnum, void *myaddr)
d65fe839 728{
a216a322
AC
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);
d65fe839 734
c97dcfc7
AC
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
d65fe839 742 if (register_cached (regnum) < 0)
cda5a58a 743 return 0; /* register value not available */
d65fe839 744
a216a322 745 return !optimized;
d65fe839 746}
e36180d7
AC
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
753int
eb8bc282 754frame_map_name_to_regnum (struct frame_info *frame, const char *name, int len)
e36180d7 755{
eb8bc282 756 return user_reg_map_name_to_regnum (get_frame_arch (frame), name, len);
e36180d7
AC
757}
758
759const char *
eb8bc282 760frame_map_regnum_to_name (struct frame_info *frame, int regnum)
e36180d7 761{
eb8bc282 762 return user_reg_map_regnum_to_name (get_frame_arch (frame), regnum);
e36180d7 763}
4c1e7e9d 764
a94dd1fd
AC
765/* Create a sentinel frame. */
766
b9362cc7 767static struct frame_info *
a94dd1fd
AC
768create_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. */
6dc42492 776 frame->prologue_cache = sentinel_frame_cache (regcache);
a94dd1fd
AC
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;
50bbdbd9
AC
782 /* Make the sentinel frame's ID valid, but invalid. That way all
783 comparisons with it should fail. */
d0a55772
AC
784 frame->this_id.p = 1;
785 frame->this_id.value = null_frame_id;
7f78e237
AC
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 }
a94dd1fd
AC
792 return frame;
793}
794
4c1e7e9d
AC
795/* Info about the innermost stack frame (contents of FP register) */
796
797static 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
803static struct obstack frame_cache_obstack;
804
805void *
479ab5a0 806frame_obstack_zalloc (unsigned long size)
4c1e7e9d 807{
479ab5a0
AC
808 void *data = obstack_alloc (&frame_cache_obstack, size);
809 memset (data, 0, size);
810 return data;
4c1e7e9d
AC
811}
812
6baff1d2 813CORE_ADDR *
4c1e7e9d
AC
814frame_saved_regs_zalloc (struct frame_info *fi)
815{
816 fi->saved_regs = (CORE_ADDR *)
479ab5a0 817 frame_obstack_zalloc (SIZEOF_FRAME_SAVED_REGS);
6baff1d2 818 return fi->saved_regs;
4c1e7e9d
AC
819}
820
6baff1d2 821CORE_ADDR *
1b1d3794 822deprecated_get_frame_saved_regs (struct frame_info *fi)
6baff1d2
AC
823{
824 return fi->saved_regs;
825}
4c1e7e9d 826
a94dd1fd
AC
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
832static int
833unwind_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}
4c1e7e9d
AC
843
844struct frame_info *
845get_current_frame (void)
846{
0a1e1ca1
AC
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". */
a94dd1fd
AC
852 if (!target_has_registers)
853 error ("No registers.");
0a1e1ca1
AC
854 if (!target_has_stack)
855 error ("No stack.");
a94dd1fd
AC
856 if (!target_has_memory)
857 error ("No memory.");
4c1e7e9d
AC
858 if (current_frame == NULL)
859 {
a94dd1fd
AC
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 }
4c1e7e9d
AC
869 }
870 return current_frame;
871}
872
6e7f8b9c
AC
873/* The "selected" stack frame is used by default for local and arg
874 access. May be zero, for no selected frame. */
875
876struct 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
882struct frame_info *
883get_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
7dd88986
DJ
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
899struct frame_info *
900deprecated_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
6e7f8b9c
AC
907/* Select frame FI (or NULL - to invalidate the current frame). */
908
909void
910select_frame (struct frame_info *fi)
911{
52f0bd74 912 struct symtab *s;
6e7f8b9c
AC
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 {
11889732 933 s = find_pc_symtab (get_frame_pc (fi));
6e7f8b9c
AC
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
4c1e7e9d
AC
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
948static void
6dc42492
AC
949legacy_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)
4c1e7e9d 954{
6dc42492 955 /* HACK: New code is passed the next frame and this cache.
ce2826aa 956 Unfortunately, old code expects this frame. Since this is a
6dc42492
AC
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;
4c1e7e9d 962 gdb_assert (frame != NULL);
4c1e7e9d 963
1b1d3794 964 if (deprecated_get_frame_saved_regs (frame) == NULL)
870b3035
AC
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);
1b1d3794 969 gdb_assert (deprecated_get_frame_saved_regs (frame) != NULL);
870b3035 970 }
4c1e7e9d 971
1b1d3794
AC
972 if (deprecated_get_frame_saved_regs (frame) != NULL
973 && deprecated_get_frame_saved_regs (frame)[regnum] != 0)
4c1e7e9d
AC
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)
fbd9dcd3
AC
983 /* NOTE: cagney/2003-05-09: In-lined store_address with
984 it's body - store_unsigned_integer. */
12c266ea 985 store_unsigned_integer (bufferp, DEPRECATED_REGISTER_RAW_SIZE (regnum),
1b1d3794 986 deprecated_get_frame_saved_regs (frame)[regnum]);
4c1e7e9d
AC
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;
1b1d3794 994 *addrp = deprecated_get_frame_saved_regs (frame)[regnum];
4c1e7e9d
AC
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. */
6dc42492 1001 void **regs = (*this_prologue_cache);
4c1e7e9d
AC
1002 if (regs == NULL)
1003 {
1004 int sizeof_cache = ((NUM_REGS + NUM_PSEUDO_REGS)
1005 * sizeof (void *));
479ab5a0 1006 regs = frame_obstack_zalloc (sizeof_cache);
6dc42492 1007 (*this_prologue_cache) = regs;
4c1e7e9d
AC
1008 }
1009 if (regs[regnum] == NULL)
1010 {
1011 regs[regnum]
12c266ea 1012 = frame_obstack_zalloc (DEPRECATED_REGISTER_RAW_SIZE (regnum));
1b1d3794 1013 read_memory (deprecated_get_frame_saved_regs (frame)[regnum], regs[regnum],
12c266ea 1014 DEPRECATED_REGISTER_RAW_SIZE (regnum));
4c1e7e9d 1015 }
12c266ea 1016 memcpy (bufferp, regs[regnum], DEPRECATED_REGISTER_RAW_SIZE (regnum));
4c1e7e9d
AC
1017#else
1018 /* Read the value in from memory. */
1b1d3794 1019 read_memory (deprecated_get_frame_saved_regs (frame)[regnum], bufferp,
12c266ea 1020 DEPRECATED_REGISTER_RAW_SIZE (regnum));
4c1e7e9d
AC
1021#endif
1022 }
1023 }
1024 return;
1025 }
1026
6dc42492
AC
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);
4c1e7e9d
AC
1032}
1033
c170fb60 1034static void
6dc42492
AC
1035legacy_saved_regs_this_id (struct frame_info *next_frame,
1036 void **this_prologue_cache,
1037 struct frame_id *id)
c689142b 1038{
18adea3f
AC
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");
c689142b
AC
1042}
1043
6dc42492 1044const struct frame_unwind legacy_saved_regs_unwinder = {
7df05f2b
AC
1045 /* Not really. It gets overridden by legacy_get_prev_frame. */
1046 UNKNOWN_FRAME,
6dc42492
AC
1047 legacy_saved_regs_this_id,
1048 legacy_saved_regs_prev_register
494cca16 1049};
6dc42492 1050const struct frame_unwind *legacy_saved_regs_unwind = &legacy_saved_regs_unwinder;
494cca16
AC
1051
1052
ac2adee5 1053/* Function: deprecated_generic_get_saved_register
4c1e7e9d 1054 Find register number REGNUM relative to FRAME and put its (raw,
ac2adee5 1055 target format) contents in *RAW_BUFFER.
4c1e7e9d
AC
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
62700349
AC
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.
4c1e7e9d 1070
4c1e7e9d
AC
1071 The argument RAW_BUFFER must point to aligned memory. */
1072
1073void
1074deprecated_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
a94dd1fd 1094 if (frame != NULL)
4c1e7e9d 1095 {
a94dd1fd
AC
1096 for (frame = get_next_frame (frame);
1097 frame_relative_level (frame) >= 0;
1098 frame = get_next_frame (frame))
4c1e7e9d 1099 {
a94dd1fd 1100 if (get_frame_type (frame) == DUMMY_FRAME)
4c1e7e9d 1101 {
a94dd1fd
AC
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
cc8c88f3
AC
1110 (deprecated_find_dummy_frame_regcache (get_frame_pc (frame),
1111 get_frame_base (frame)),
a94dd1fd
AC
1112 regnum, raw_buffer);
1113 return;
4c1e7e9d 1114 }
a94dd1fd 1115
f30ee0bc 1116 DEPRECATED_FRAME_INIT_SAVED_REGS (frame);
1b1d3794
AC
1117 if (deprecated_get_frame_saved_regs (frame) != NULL
1118 && deprecated_get_frame_saved_regs (frame)[regnum] != 0)
4c1e7e9d 1119 {
a94dd1fd
AC
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 */
fbd9dcd3
AC
1125 /* NOTE: cagney/2003-05-09: In-line store_address
1126 with it's body - store_unsigned_integer. */
1127 store_unsigned_integer (raw_buffer,
12c266ea 1128 DEPRECATED_REGISTER_RAW_SIZE (regnum),
1b1d3794 1129 deprecated_get_frame_saved_regs (frame)[regnum]);
a94dd1fd
AC
1130 }
1131 else
1132 {
1133 if (addrp) /* any other register */
1b1d3794 1134 *addrp = deprecated_get_frame_saved_regs (frame)[regnum];
a94dd1fd 1135 if (raw_buffer)
1b1d3794 1136 read_memory (deprecated_get_frame_saved_regs (frame)[regnum], raw_buffer,
12c266ea 1137 DEPRECATED_REGISTER_RAW_SIZE (regnum));
a94dd1fd
AC
1138 }
1139 return;
4c1e7e9d 1140 }
4c1e7e9d
AC
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)
62700349 1150 *addrp = DEPRECATED_REGISTER_BYTE (regnum);
4c1e7e9d
AC
1151 if (raw_buffer)
1152 deprecated_read_register_gen (regnum, raw_buffer);
1153}
1154
eb4f72c5
AC
1155/* Determine the frame's type based on its PC. */
1156
1157static enum frame_type
1158frame_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
4c1e7e9d
AC
1178/* Create an arbitrary (i.e. address specified by user) or innermost frame.
1179 Always returns a non-NULL value. */
1180
1181struct frame_info *
1182create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
1183{
1184 struct frame_info *fi;
4c1e7e9d 1185
7f78e237
AC
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
479ab5a0 1193 fi = frame_obstack_zalloc (sizeof (struct frame_info));
4c1e7e9d 1194
a94dd1fd 1195 fi->next = create_sentinel_frame (current_regcache);
7df05f2b
AC
1196
1197 /* Select/initialize both the unwind function and the frame's type
1198 based on the PC. */
e8a89fe2 1199 fi->unwind = frame_unwind_find_by_frame (fi->next);
7df05f2b
AC
1200 if (fi->unwind->type != UNKNOWN_FRAME)
1201 fi->type = fi->unwind->type;
1202 else
1203 fi->type = frame_type_from_pc (pc);
1204
18adea3f 1205 fi->this_id.p = 1;
11889732
AC
1206 deprecated_update_frame_base_hack (fi, addr);
1207 deprecated_update_frame_pc_hack (fi, pc);
4c1e7e9d 1208
e9582e71
AC
1209 if (DEPRECATED_INIT_EXTRA_FRAME_INFO_P ())
1210 DEPRECATED_INIT_EXTRA_FRAME_INFO (0, fi);
4c1e7e9d 1211
7f78e237
AC
1212 if (frame_debug)
1213 {
1214 fprintf_unfiltered (gdb_stdlog, "-> ");
1215 fprint_frame (gdb_stdlog, fi);
1216 fprintf_unfiltered (gdb_stdlog, " }\n");
1217 }
1218
4c1e7e9d
AC
1219 return fi;
1220}
1221
03febf99
AC
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. */
4c1e7e9d
AC
1225
1226struct frame_info *
03febf99 1227get_next_frame (struct frame_info *this_frame)
4c1e7e9d 1228{
03febf99
AC
1229 if (this_frame->level > 0)
1230 return this_frame->next;
a94dd1fd
AC
1231 else
1232 return NULL;
4c1e7e9d
AC
1233}
1234
870b3035
AC
1235struct frame_info *
1236deprecated_get_next_frame_hack (struct frame_info *this_frame)
1237{
1238 return this_frame->next;
1239}
1240
4c1e7e9d
AC
1241/* Flush the entire frame cache. */
1242
1243void
1244flush_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 ();
7f78e237
AC
1253 if (frame_debug)
1254 fprintf_unfiltered (gdb_stdlog, "{ flush_cached_frames () }\n");
4c1e7e9d
AC
1255}
1256
1257/* Flush the frame cache, and start a new one if necessary. */
1258
1259void
1260reinit_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
eb4f72c5
AC
1271/* Create the previous frame using the deprecated methods
1272 INIT_EXTRA_INFO, INIT_FRAME_PC and INIT_FRAME_PC_FIRST. */
4c1e7e9d 1273
eb4f72c5 1274static struct frame_info *
03febf99 1275legacy_get_prev_frame (struct frame_info *this_frame)
4c1e7e9d
AC
1276{
1277 CORE_ADDR address = 0;
1278 struct frame_info *prev;
95adb866 1279 int fromleaf;
4c1e7e9d 1280
7f78e237
AC
1281 /* Don't frame_debug print legacy_get_prev_frame() here, just
1282 confuses the output. */
1283
a01dd7cc 1284 /* Allocate the new frame.
055bb976
AC
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
a01dd7cc
AC
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
055bb976
AC
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.
ce2826aa 1312 Unfortunately those same work-arounds rely on the type defaulting
055bb976
AC
1313 to NORMAL_FRAME. Ulgh! The new frame code does not have this
1314 problem. */
7df05f2b 1315 prev->type = UNKNOWN_FRAME;
055bb976 1316
06c77151 1317 /* A legacy frame's ID is always computed here. Mark it as valid. */
d0a55772 1318 prev->this_id.p = 1;
06c77151 1319
055bb976
AC
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
618ce49f
AC
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
055bb976
AC
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
11889732
AC
1341 deprecated_update_frame_pc_hack (prev, frame_pc_unwind (this_frame));
1342 if (get_frame_pc (prev) == 0)
055bb976
AC
1343 {
1344 /* The allocated PREV_FRAME will be reclaimed when the frame
1345 obstack is next purged. */
1346 if (frame_debug)
7f78e237
AC
1347 {
1348 fprintf_unfiltered (gdb_stdlog, "-> ");
1349 fprint_frame (gdb_stdlog, NULL);
1350 fprintf_unfiltered (gdb_stdlog,
1351 " // unwound legacy PC zero }\n");
1352 }
055bb976
AC
1353 return NULL;
1354 }
055bb976 1355
7df05f2b
AC
1356 /* Set the unwind functions based on that identified PC. Ditto
1357 for the "type" but strongly prefer the unwinder's frame type. */
e8a89fe2 1358 prev->unwind = frame_unwind_find_by_frame (prev->next);
7df05f2b 1359 if (prev->unwind->type == UNKNOWN_FRAME)
d1340264 1360 prev->type = frame_type_from_pc (get_frame_pc (prev));
7df05f2b
AC
1361 else
1362 prev->type = prev->unwind->type;
055bb976
AC
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. */
055bb976
AC
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. */
d0a55772
AC
1380 prev->this_id.value = gdbarch_unwind_dummy_id (current_gdbarch,
1381 this_frame);
055bb976
AC
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. */
0ba6dca9
AC
1390 prev->this_id.value = frame_id_build (deprecated_read_fp (),
1391 read_pc ());
055bb976
AC
1392 }
1393
1394 /* Check that the unwound ID is valid. */
d0a55772 1395 if (!frame_id_p (prev->this_id.value))
055bb976
AC
1396 {
1397 if (frame_debug)
7f78e237
AC
1398 {
1399 fprintf_unfiltered (gdb_stdlog, "-> ");
1400 fprint_frame (gdb_stdlog, NULL);
1401 fprintf_unfiltered (gdb_stdlog,
1402 " // unwound legacy ID invalid }\n");
1403 }
055bb976
AC
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
055bb976
AC
1416 /* Link it in. */
1417 this_frame->prev = prev;
055bb976
AC
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
ce2826aa 1422 info. Unfortunately legacy targets can't use
055bb976
AC
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 }
18adea3f
AC
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
7f78e237
AC
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 }
055bb976
AC
1442 return prev;
1443 }
1444
eb4f72c5
AC
1445 /* This code only works on normal frames. A sentinel frame, where
1446 the level is -1, should never reach this code. */
03febf99 1447 gdb_assert (this_frame->level >= 0);
4c1e7e9d
AC
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
03febf99 1456 frame. This macro will set FROMLEAF if THIS_FRAME is a frameless
95adb866 1457 function invocation. */
03febf99 1458 if (this_frame->level == 0)
95adb866
AC
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. */
03febf99 1463 fromleaf = FRAMELESS_FUNCTION_INVOCATION (this_frame);
95adb866
AC
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. */
870b3035
AC
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 :-). */
03febf99 1480 address = get_frame_base (this_frame);
95adb866 1481 else
4c1e7e9d
AC
1482 {
1483 /* Two macros defined in tm.h specify the machine-dependent
1484 actions to be performed here.
95adb866 1485
4c1e7e9d 1486 First, get the frame's chain-pointer.
95adb866 1487
4c1e7e9d
AC
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. */
870b3035
AC
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. */
e8a89fe2 1506 prev->unwind = frame_unwind_find_by_frame (this_frame->next);
870b3035
AC
1507 /* FIXME: cagney/2003-04-02: Rather than storing the frame's
1508 type in the frame, the unwinder's type should be returned
ce2826aa 1509 directly. Unfortunately, legacy code, called by
870b3035
AC
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 }
4c1e7e9d 1520
e6ba3bc9 1521 if (!legacy_frame_chain_valid (address, this_frame))
7f78e237
AC
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 }
4c1e7e9d
AC
1532 }
1533 if (address == 0)
7f78e237
AC
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 }
4c1e7e9d 1544
055bb976 1545 /* Link in the already allocated prev frame. */
03febf99 1546 this_frame->prev = prev;
11889732 1547 deprecated_update_frame_base_hack (prev, address);
4c1e7e9d 1548
95adb866 1549 /* This change should not be needed, FIXME! We should determine
a5afb99f 1550 whether any targets *need* DEPRECATED_INIT_FRAME_PC to happen
e9582e71
AC
1551 after DEPRECATED_INIT_EXTRA_FRAME_INFO and come up with a simple
1552 way to express what goes on here.
95adb866 1553
e9582e71
AC
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.
95adb866 1558
e9582e71
AC
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.
95adb866 1563
2ca6c561
AC
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.
95adb866 1567
a5afb99f 1568 Assuming that some machines need DEPRECATED_INIT_FRAME_PC after
e9582e71 1569 DEPRECATED_INIT_EXTRA_FRAME_INFO, one possible scheme:
95adb866
AC
1570
1571 SETUP_INNERMOST_FRAME(): Default version is just create_new_frame
0ba6dca9
AC
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.
95adb866
AC
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
e9582e71
AC
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.
618ce49f
AC
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)
95adb866
AC
1589
1590 This is the default setting for INIT_PREV_FRAME. It just does
a5afb99f
AC
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.
95adb866
AC
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
03febf99 1609 somewhere (THIS_FRAME) to store all the info needed to construct
95adb866
AC
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
618ce49f
AC
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. */
4c1e7e9d 1622
2ca6c561 1623 if (DEPRECATED_INIT_FRAME_PC_FIRST_P ())
11889732
AC
1624 deprecated_update_frame_pc_hack (prev,
1625 DEPRECATED_INIT_FRAME_PC_FIRST (fromleaf,
1626 prev));
4c1e7e9d 1627
e9582e71
AC
1628 if (DEPRECATED_INIT_EXTRA_FRAME_INFO_P ())
1629 DEPRECATED_INIT_EXTRA_FRAME_INFO (fromleaf, prev);
4c1e7e9d
AC
1630
1631 /* This entry is in the frame queue now, which is good since
95adb866
AC
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. */
a5afb99f 1634 if (DEPRECATED_INIT_FRAME_PC_P ())
11889732
AC
1635 deprecated_update_frame_pc_hack (prev,
1636 DEPRECATED_INIT_FRAME_PC (fromleaf,
1637 prev));
4c1e7e9d 1638
95adb866
AC
1639 /* If ->frame and ->pc are unchanged, we are in the process of
1640 getting ourselves into an infinite backtrace. Some architectures
618ce49f
AC
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. */
11889732
AC
1644 if (get_frame_base (prev) == get_frame_base (this_frame)
1645 && get_frame_pc (prev) == get_frame_pc (this_frame))
4c1e7e9d 1646 {
03febf99 1647 this_frame->prev = NULL;
95adb866 1648 obstack_free (&frame_cache_obstack, prev);
7f78e237
AC
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 }
95adb866 1656 return NULL;
4c1e7e9d
AC
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
870b3035
AC
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)
e8a89fe2 1667 prev->unwind = frame_unwind_find_by_frame (prev->next);
4c1e7e9d 1668
7df05f2b
AC
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;
18adea3f 1674 if (prev->type == NORMAL_FRAME)
870b3035 1675 /* FIXME: cagney/2003-06-16: would get_frame_pc() be better? */
18adea3f
AC
1676 prev->this_id.value.code_addr
1677 = get_pc_function_start (prev->this_id.value.code_addr);
7f78e237
AC
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 }
7df05f2b
AC
1684 return prev;
1685 }
1686
5a203e44
AC
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. */
07555a72 1695 if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
ae45cd16 1696 && (DEPRECATED_PC_IN_CALL_DUMMY_P ()
11889732
AC
1697 ? DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (prev), 0, 0)
1698 : pc_in_dummy_frame (get_frame_pc (prev))))
5a203e44
AC
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;
11889732
AC
1709 find_pc_partial_function (get_frame_pc (prev), &name, NULL, NULL);
1710 if (PC_IN_SIGTRAMP (get_frame_pc (prev), name))
5a203e44
AC
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 }
4c1e7e9d 1719
18adea3f
AC
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
7f78e237
AC
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
4c1e7e9d
AC
1731 return prev;
1732}
1733
eb4f72c5 1734/* Return a structure containing various interesting information
03febf99 1735 about the frame that called THIS_FRAME. Returns NULL
eb4f72c5
AC
1736 if there is no such frame. */
1737
1738struct frame_info *
03febf99 1739get_prev_frame (struct frame_info *this_frame)
eb4f72c5
AC
1740{
1741 struct frame_info *prev_frame;
1742
7f78e237
AC
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
eb4f72c5
AC
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. */
03febf99 1771 if (this_frame == NULL)
eb4f72c5
AC
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
03febf99 1784 THIS_FRAME. */
eb4f72c5
AC
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(). */
03febf99 1791 gdb_assert (this_frame != NULL);
eb4f72c5 1792
3f1d7f16
MK
1793 /* Make sure we pass an address within THIS_FRAME's code block to
1794 inside_main_func. Otherwise, we might stop unwinding at a
1795 function which has a call instruction as its last instruction if
1796 that function immediately precedes main(). */
03febf99 1797 if (this_frame->level >= 0
25d29d70 1798 && !backtrace_past_main
3f1d7f16 1799 && inside_main_func (get_frame_address_in_block (this_frame)))
eb4f72c5
AC
1800 /* Don't unwind past main(), bug always unwind the sentinel frame.
1801 Note, this is done _before_ the frame has been marked as
1802 previously unwound. That way if the user later decides to
1803 allow unwinds past main(), that just happens. */
ac2bd0a9
AC
1804 {
1805 if (frame_debug)
7f78e237 1806 fprintf_unfiltered (gdb_stdlog, "-> NULL // inside main func }\n");
ac2bd0a9
AC
1807 return NULL;
1808 }
eb4f72c5 1809
25d29d70
AC
1810 if (this_frame->level > backtrace_limit)
1811 {
1812 error ("Backtrace limit of %d exceeded", backtrace_limit);
1813 }
1814
0714963c
AC
1815 /* If we're already inside the entry function for the main objfile,
1816 then it isn't valid. Don't apply this test to a dummy frame -
1817 dummy frame PC's typically land in the entry func. Don't apply
1818 this test to the sentinel frame. Sentinel frames should always
1819 be allowed to unwind. */
1820 /* NOTE: cagney/2003-02-25: Don't enable until someone has found
1821 hard evidence that this is needed. */
1822 /* NOTE: cagney/2003-07-07: Fixed a bug in inside_main_func - wasn't
1823 checking for "main" in the minimal symbols. With that fixed
1824 asm-source tests now stop in "main" instead of halting the
1825 backtrace in wierd and wonderful ways somewhere inside the entry
627b3ba2
AC
1826 file. Suspect that deprecated_inside_entry_file and
1827 inside_entry_func tests were added to work around that (now
1828 fixed) case. */
0714963c
AC
1829 /* NOTE: cagney/2003-07-15: danielj (if I'm reading it right)
1830 suggested having the inside_entry_func test use the
1831 inside_main_func msymbol trick (along with entry_point_address I
1832 guess) to determine the address range of the start function.
1833 That should provide a far better stopper than the current
1834 heuristics. */
1835 /* NOTE: cagney/2003-07-15: Need to add a "set backtrace
1836 beyond-entry-func" command so that this can be selectively
1837 disabled. */
1838 if (0
1839#if 0
1840 && backtrace_beyond_entry_func
1841#endif
1842 && this_frame->type != DUMMY_FRAME && this_frame->level >= 0
1843 && inside_entry_func (get_frame_pc (this_frame)))
1844 {
1845 if (frame_debug)
1846 {
1847 fprintf_unfiltered (gdb_stdlog, "-> ");
1848 fprint_frame (gdb_stdlog, NULL);
1849 fprintf_unfiltered (gdb_stdlog, "// inside entry func }\n");
1850 }
1851 return NULL;
1852 }
1853
eb4f72c5 1854 /* Only try to do the unwind once. */
03febf99 1855 if (this_frame->prev_p)
7f78e237
AC
1856 {
1857 if (frame_debug)
1858 {
1859 fprintf_unfiltered (gdb_stdlog, "-> ");
1860 fprint_frame (gdb_stdlog, this_frame->prev);
1861 fprintf_unfiltered (gdb_stdlog, " // cached \n");
1862 }
1863 return this_frame->prev;
1864 }
03febf99 1865 this_frame->prev_p = 1;
eb4f72c5 1866
b14185ce
AC
1867 /* If we're inside the entry file, it isn't valid. Don't apply this
1868 test to a dummy frame - dummy frame PC's typically land in the
1869 entry file. Don't apply this test to the sentinel frame.
1870 Sentinel frames should always be allowed to unwind. */
eb4f72c5
AC
1871 /* NOTE: drow/2002-12-25: should there be a way to disable this
1872 check? It assumes a single small entry file, and the way some
1873 debug readers (e.g. dbxread) figure out which object is the
1874 entry file is somewhat hokey. */
1875 /* NOTE: cagney/2003-01-10: If there is a way of disabling this test
1876 then it should probably be moved to before the ->prev_p test,
1877 above. */
627b3ba2
AC
1878 /* NOTE: vinschen/2003-04-01: Disabled. It turns out that the call
1879 to deprecated_inside_entry_file destroys a meaningful backtrace
1880 under some conditions. E. g. the backtrace tests in the
1881 asm-source testcase are broken for some targets. In this test
1882 the functions are all implemented as part of one file and the
1883 testcase is not necessarily linked with a start file (depending
1884 on the target). What happens is, that the first frame is printed
1885 normaly and following frames are treated as being inside the
1886 enttry file then. This way, only the #0 frame is printed in the
1887 backtrace output. */
1888 if (0
1889 && this_frame->type != DUMMY_FRAME && this_frame->level >= 0
1890 && deprecated_inside_entry_file (get_frame_pc (this_frame)))
ac2bd0a9
AC
1891 {
1892 if (frame_debug)
7f78e237
AC
1893 {
1894 fprintf_unfiltered (gdb_stdlog, "-> ");
1895 fprint_frame (gdb_stdlog, NULL);
1896 fprintf_unfiltered (gdb_stdlog, " // inside entry file }\n");
1897 }
eb4f72c5 1898 return NULL;
ac2bd0a9 1899 }
eb4f72c5
AC
1900
1901 /* If any of the old frame initialization methods are around, use
055bb976
AC
1902 the legacy get_prev_frame method. */
1903 if (legacy_frame_p (current_gdbarch))
ac2bd0a9 1904 {
03febf99 1905 prev_frame = legacy_get_prev_frame (this_frame);
ac2bd0a9
AC
1906 return prev_frame;
1907 }
eb4f72c5 1908
270c3b1d
AC
1909 /* Check that this frame's ID was valid. If it wasn't, don't try to
1910 unwind to the prev frame. Be careful to not apply this test to
1911 the sentinel frame. */
1912 if (this_frame->level >= 0 && !frame_id_p (get_frame_id (this_frame)))
1913 {
1914 if (frame_debug)
7f78e237
AC
1915 {
1916 fprintf_unfiltered (gdb_stdlog, "-> ");
1917 fprint_frame (gdb_stdlog, NULL);
1918 fprintf_unfiltered (gdb_stdlog, " // this ID is NULL }\n");
1919 }
270c3b1d
AC
1920 return NULL;
1921 }
1922
1923 /* Check that this frame's ID isn't inner to (younger, below, next)
612dde91
AC
1924 the next frame. This happens when a frame unwind goes backwards.
1925 Since the sentinel frame doesn't really exist, don't compare the
1926 inner-most against that sentinel. */
270c3b1d
AC
1927 if (this_frame->level > 0
1928 && frame_id_inner (get_frame_id (this_frame),
1929 get_frame_id (this_frame->next)))
612dde91
AC
1930 error ("Previous frame inner to this frame (corrupt stack?)");
1931
1932 /* Check that this and the next frame are not identical. If they
1933 are, there is most likely a stack cycle. As with the inner-than
1934 test above, avoid comparing the inner-most and sentinel frames. */
1935 if (this_frame->level > 0
270c3b1d
AC
1936 && frame_id_eq (get_frame_id (this_frame),
1937 get_frame_id (this_frame->next)))
612dde91 1938 error ("Previous frame identical to this frame (corrupt stack?)");
270c3b1d 1939
eb4f72c5
AC
1940 /* Allocate the new frame but do not wire it in to the frame chain.
1941 Some (bad) code in INIT_FRAME_EXTRA_INFO tries to look along
1942 frame->next to pull some fancy tricks (of course such code is, by
1943 definition, recursive). Try to prevent it.
1944
1945 There is no reason to worry about memory leaks, should the
1946 remainder of the function fail. The allocated memory will be
1947 quickly reclaimed when the frame cache is flushed, and the `we've
1948 been here before' check above will stop repeated memory
1949 allocation calls. */
1950 prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
03febf99 1951 prev_frame->level = this_frame->level + 1;
eb4f72c5
AC
1952
1953 /* Try to unwind the PC. If that doesn't work, assume we've reached
1954 the oldest frame and simply return. Is there a better sentinal
1955 value? The unwound PC value is then used to initialize the new
1956 previous frame's type.
1957
1958 Note that the pc-unwind is intentionally performed before the
1959 frame chain. This is ok since, for old targets, both
618ce49f
AC
1960 frame_pc_unwind (nee, FRAME_SAVED_PC) and
1961 DEPRECATED_FRAME_CHAIN()) assume THIS_FRAME's data structures
1962 have already been initialized (using
e9582e71
AC
1963 DEPRECATED_INIT_EXTRA_FRAME_INFO) and hence the call order
1964 doesn't matter.
eb4f72c5
AC
1965
1966 By unwinding the PC first, it becomes possible to, in the case of
1967 a dummy frame, avoid also unwinding the frame ID. This is
1968 because (well ignoring the PPC) a dummy frame can be located
03febf99 1969 using THIS_FRAME's frame ID. */
eb4f72c5 1970
d1340264 1971 if (frame_pc_unwind (this_frame) == 0)
ac2bd0a9
AC
1972 {
1973 /* The allocated PREV_FRAME will be reclaimed when the frame
1974 obstack is next purged. */
1975 if (frame_debug)
7f78e237
AC
1976 {
1977 fprintf_unfiltered (gdb_stdlog, "-> ");
1978 fprint_frame (gdb_stdlog, NULL);
1979 fprintf_unfiltered (gdb_stdlog, " // unwound PC zero }\n");
1980 }
ac2bd0a9
AC
1981 return NULL;
1982 }
eb4f72c5 1983
c50901fd
AC
1984 /* Don't yet compute ->unwind (and hence ->type). It is computed
1985 on-demand in get_frame_type, frame_register_unwind, and
1986 get_frame_id. */
eb4f72c5 1987
c50901fd
AC
1988 /* Don't yet compute the frame's ID. It is computed on-demand by
1989 get_frame_id(). */
6dc42492 1990
270c3b1d
AC
1991 /* The unwound frame ID is validate at the start of this function,
1992 as part of the logic to decide if that frame should be further
1993 unwound, and not here while the prev frame is being created.
1994 Doing this makes it possible for the user to examine a frame that
1995 has an invalid frame ID.
1996
25e3a86b
AC
1997 Some very old VAX code noted: [...] For the sake of argument,
1998 suppose that the stack is somewhat trashed (which is one reason
1999 that "info frame" exists). So, return 0 (indicating we don't
2000 know the address of the arglist) if we don't know what frame this
2001 frame calls. */
6dc42492 2002
eb4f72c5 2003 /* Link it in. */
03febf99
AC
2004 this_frame->prev = prev_frame;
2005 prev_frame->next = this_frame;
eb4f72c5 2006
7f78e237
AC
2007 if (frame_debug)
2008 {
2009 fprintf_unfiltered (gdb_stdlog, "-> ");
2010 fprint_frame (gdb_stdlog, prev_frame);
2011 fprintf_unfiltered (gdb_stdlog, " }\n");
2012 }
2013
eb4f72c5
AC
2014 return prev_frame;
2015}
2016
4c1e7e9d
AC
2017CORE_ADDR
2018get_frame_pc (struct frame_info *frame)
2019{
d1340264
AC
2020 gdb_assert (frame->next != NULL);
2021 return frame_pc_unwind (frame->next);
4c1e7e9d
AC
2022}
2023
8edd5d01
AC
2024/* Return an address of that falls within the frame's code block. */
2025
2026CORE_ADDR
2027frame_unwind_address_in_block (struct frame_info *next_frame)
2028{
2029 /* A draft address. */
2030 CORE_ADDR pc = frame_pc_unwind (next_frame);
2031
2032 /* If THIS frame is not inner most (i.e., NEXT isn't the sentinel),
2033 and NEXT is `normal' (i.e., not a sigtramp, dummy, ....) THIS
2034 frame's PC ends up pointing at the instruction fallowing the
2035 "call". Adjust that PC value so that it falls on the call
2036 instruction (which, hopefully, falls within THIS frame's code
2037 block. So far it's proved to be a very good approximation. See
2038 get_frame_type for why ->type can't be used. */
2039 if (next_frame->level >= 0
2040 && get_frame_type (next_frame) == NORMAL_FRAME)
2041 --pc;
2042 return pc;
2043}
2044
2045CORE_ADDR
2046get_frame_address_in_block (struct frame_info *this_frame)
2047{
2048 return frame_unwind_address_in_block (this_frame->next);
2049}
2050
1058bca7
AC
2051static int
2052pc_notcurrent (struct frame_info *frame)
2053{
2054 /* If FRAME is not the innermost frame, that normally means that
2055 FRAME->pc points at the return instruction (which is *after* the
2056 call instruction), and we want to get the line containing the
2057 call (because the call is where the user thinks the program is).
2058 However, if the next frame is either a SIGTRAMP_FRAME or a
2059 DUMMY_FRAME, then the next frame will contain a saved interrupt
2060 PC and such a PC indicates the current (rather than next)
2061 instruction/line, consequently, for such cases, want to get the
2062 line containing fi->pc. */
2063 struct frame_info *next = get_next_frame (frame);
2064 int notcurrent = (next != NULL && get_frame_type (next) == NORMAL_FRAME);
2065 return notcurrent;
2066}
2067
2068void
2069find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
2070{
11889732 2071 (*sal) = find_pc_line (get_frame_pc (frame), pc_notcurrent (frame));
1058bca7
AC
2072}
2073
c193f6ac
AC
2074/* Per "frame.h", return the ``address'' of the frame. Code should
2075 really be using get_frame_id(). */
2076CORE_ADDR
2077get_frame_base (struct frame_info *fi)
2078{
d0a55772 2079 return get_frame_id (fi).stack_addr;
c193f6ac
AC
2080}
2081
da62e633
AC
2082/* High-level offsets into the frame. Used by the debug info. */
2083
2084CORE_ADDR
2085get_frame_base_address (struct frame_info *fi)
2086{
7df05f2b 2087 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
2088 return 0;
2089 if (fi->base == NULL)
e8a89fe2 2090 fi->base = frame_base_find_by_frame (fi->next);
da62e633
AC
2091 /* Sneaky: If the low-level unwind and high-level base code share a
2092 common unwinder, let them share the prologue cache. */
2093 if (fi->base->unwind == fi->unwind)
2094 return fi->base->this_base (fi->next, &fi->prologue_cache);
2095 return fi->base->this_base (fi->next, &fi->base_cache);
2096}
2097
2098CORE_ADDR
2099get_frame_locals_address (struct frame_info *fi)
2100{
2101 void **cache;
7df05f2b 2102 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
2103 return 0;
2104 /* If there isn't a frame address method, find it. */
2105 if (fi->base == NULL)
e8a89fe2 2106 fi->base = frame_base_find_by_frame (fi->next);
da62e633
AC
2107 /* Sneaky: If the low-level unwind and high-level base code share a
2108 common unwinder, let them share the prologue cache. */
2109 if (fi->base->unwind == fi->unwind)
2110 cache = &fi->prologue_cache;
2111 else
2112 cache = &fi->base_cache;
2113 return fi->base->this_locals (fi->next, cache);
2114}
2115
2116CORE_ADDR
2117get_frame_args_address (struct frame_info *fi)
2118{
2119 void **cache;
7df05f2b 2120 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
2121 return 0;
2122 /* If there isn't a frame address method, find it. */
2123 if (fi->base == NULL)
e8a89fe2 2124 fi->base = frame_base_find_by_frame (fi->next);
da62e633
AC
2125 /* Sneaky: If the low-level unwind and high-level base code share a
2126 common unwinder, let them share the prologue cache. */
2127 if (fi->base->unwind == fi->unwind)
2128 cache = &fi->prologue_cache;
2129 else
2130 cache = &fi->base_cache;
2131 return fi->base->this_args (fi->next, cache);
2132}
2133
85cf597a
AC
2134/* Level of the selected frame: 0 for innermost, 1 for its caller, ...
2135 or -1 for a NULL frame. */
2136
2137int
2138frame_relative_level (struct frame_info *fi)
2139{
2140 if (fi == NULL)
2141 return -1;
2142 else
2143 return fi->level;
2144}
2145
5a203e44
AC
2146enum frame_type
2147get_frame_type (struct frame_info *frame)
2148{
2149 /* Some targets still don't use [generic] dummy frames. Catch them
2150 here. */
07555a72 2151 if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES
5a203e44
AC
2152 && deprecated_frame_in_dummy (frame))
2153 return DUMMY_FRAME;
710ee10a
KB
2154
2155 /* Some legacy code, e.g, mips_init_extra_frame_info() wants
2156 to determine the frame's type prior to it being completely
2157 initialized. Don't attempt to lazily initialize ->unwind for
2158 legacy code. It will be initialized in legacy_get_prev_frame(). */
2159 if (frame->unwind == NULL && !legacy_frame_p (current_gdbarch))
c50901fd
AC
2160 {
2161 /* Initialize the frame's unwinder because it is that which
2162 provides the frame's type. */
e8a89fe2 2163 frame->unwind = frame_unwind_find_by_frame (frame->next);
c50901fd
AC
2164 /* FIXME: cagney/2003-04-02: Rather than storing the frame's
2165 type in the frame, the unwinder's type should be returned
ce2826aa 2166 directly. Unfortunately, legacy code, called by
c50901fd
AC
2167 legacy_get_prev_frame, explicitly set the frames type using
2168 the method deprecated_set_frame_type(). */
2169 gdb_assert (frame->unwind->type != UNKNOWN_FRAME);
2170 frame->type = frame->unwind->type;
2171 }
7df05f2b
AC
2172 if (frame->type == UNKNOWN_FRAME)
2173 return NORMAL_FRAME;
2174 else
2175 return frame->type;
5a203e44
AC
2176}
2177
2178void
2179deprecated_set_frame_type (struct frame_info *frame, enum frame_type type)
2180{
2181 /* Arrrg! See comment in "frame.h". */
2182 frame->type = type;
2183}
2184
0394eb2a
AC
2185struct frame_extra_info *
2186get_frame_extra_info (struct frame_info *fi)
2187{
2188 return fi->extra_info;
2189}
2190
2c517d0e
AC
2191struct frame_extra_info *
2192frame_extra_info_zalloc (struct frame_info *fi, long size)
2193{
479ab5a0 2194 fi->extra_info = frame_obstack_zalloc (size);
2c517d0e
AC
2195 return fi->extra_info;
2196}
2197
b87efeee 2198void
2f107107 2199deprecated_update_frame_pc_hack (struct frame_info *frame, CORE_ADDR pc)
b87efeee 2200{
7f78e237
AC
2201 if (frame_debug)
2202 fprintf_unfiltered (gdb_stdlog,
2203 "{ deprecated_update_frame_pc_hack (frame=%d,pc=0x%s) }\n",
2204 frame->level, paddr_nz (pc));
e0d2ae16
AC
2205 /* NOTE: cagney/2003-03-11: Some architectures (e.g., Arm) are
2206 maintaining a locally allocated frame object. Since such frame's
2207 are not in the frame chain, it isn't possible to assume that the
2208 frame has a next. Sigh. */
2209 if (frame->next != NULL)
2210 {
2211 /* While we're at it, update this frame's cached PC value, found
2212 in the next frame. Oh for the day when "struct frame_info"
2213 is opaque and this hack on hack can just go away. */
d1340264
AC
2214 frame->next->prev_pc.value = pc;
2215 frame->next->prev_pc.p = 1;
e0d2ae16 2216 }
2f107107
AC
2217}
2218
2219void
2220deprecated_update_frame_base_hack (struct frame_info *frame, CORE_ADDR base)
2221{
7f78e237
AC
2222 if (frame_debug)
2223 fprintf_unfiltered (gdb_stdlog,
2224 "{ deprecated_update_frame_base_hack (frame=%d,base=0x%s) }\n",
2225 frame->level, paddr_nz (base));
2f107107 2226 /* See comment in "frame.h". */
d0a55772 2227 frame->this_id.value.stack_addr = base;
b87efeee
AC
2228}
2229
c8b8a898
AC
2230void
2231deprecated_set_frame_saved_regs_hack (struct frame_info *frame,
2232 CORE_ADDR *saved_regs)
2233{
2234 frame->saved_regs = saved_regs;
2235}
2236
2237void
2238deprecated_set_frame_extra_info_hack (struct frame_info *frame,
2239 struct frame_extra_info *extra_info)
2240{
2241 frame->extra_info = extra_info;
2242}
2243
483d36b2
AC
2244void
2245deprecated_set_frame_next_hack (struct frame_info *fi,
2246 struct frame_info *next)
2247{
2248 fi->next = next;
2249}
2250
2251void
2252deprecated_set_frame_prev_hack (struct frame_info *fi,
2253 struct frame_info *prev)
2254{
2255 fi->prev = prev;
2256}
2257
2d75187b
AC
2258struct context *
2259deprecated_get_frame_context (struct frame_info *fi)
2260{
2261 return fi->context;
2262}
2263
2264void
2265deprecated_set_frame_context (struct frame_info *fi,
2266 struct context *context)
2267{
2268 fi->context = context;
2269}
2270
c8b8a898
AC
2271struct frame_info *
2272deprecated_frame_xmalloc (void)
2273{
bcf7d3ca
AC
2274 struct frame_info *frame = XMALLOC (struct frame_info);
2275 memset (frame, 0, sizeof (*frame));
18adea3f 2276 frame->this_id.p = 1;
c8b8a898
AC
2277 return frame;
2278}
2279
f6c609c4
AC
2280struct frame_info *
2281deprecated_frame_xmalloc_with_cleanup (long sizeof_saved_regs,
2282 long sizeof_extra_info)
2283{
2284 struct frame_info *frame = deprecated_frame_xmalloc ();
2285 make_cleanup (xfree, frame);
2286 if (sizeof_saved_regs > 0)
2287 {
2288 frame->saved_regs = xcalloc (1, sizeof_saved_regs);
2289 make_cleanup (xfree, frame->saved_regs);
2290 }
2291 if (sizeof_extra_info > 0)
2292 {
2293 frame->extra_info = xcalloc (1, sizeof_extra_info);
2294 make_cleanup (xfree, frame->extra_info);
2295 }
2296 return frame;
2297}
c8b8a898 2298
ae1e7417
AC
2299/* Memory access methods. */
2300
2301void
2302get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr, void *buf,
2303 int len)
2304{
2305 read_memory (addr, buf, len);
2306}
2307
2308LONGEST
2309get_frame_memory_signed (struct frame_info *this_frame, CORE_ADDR addr,
2310 int len)
2311{
2312 return read_memory_integer (addr, len);
2313}
2314
2315ULONGEST
2316get_frame_memory_unsigned (struct frame_info *this_frame, CORE_ADDR addr,
2317 int len)
2318{
2319 return read_memory_unsigned_integer (addr, len);
2320}
2321
2322/* Architecture method. */
2323
2324struct gdbarch *
2325get_frame_arch (struct frame_info *this_frame)
2326{
2327 return current_gdbarch;
2328}
2329
a9e5fdc2
AC
2330/* Stack pointer methods. */
2331
2332CORE_ADDR
2333get_frame_sp (struct frame_info *this_frame)
2334{
2335 return frame_sp_unwind (this_frame->next);
2336}
2337
2338CORE_ADDR
2339frame_sp_unwind (struct frame_info *next_frame)
2340{
2341 /* Normality, an architecture that provides a way of obtaining any
2342 frame inner-most address. */
2343 if (gdbarch_unwind_sp_p (current_gdbarch))
2344 return gdbarch_unwind_sp (current_gdbarch, next_frame);
2345 /* Things are looking grim. If it's the inner-most frame and there
2346 is a TARGET_READ_SP then that can be used. */
2347 if (next_frame->level < 0 && TARGET_READ_SP_P ())
2348 return TARGET_READ_SP ();
2349 /* Now things are really are grim. Hope that the value returned by
2350 the SP_REGNUM register is meaningful. */
2351 if (SP_REGNUM >= 0)
2352 {
2353 ULONGEST sp;
2354 frame_unwind_unsigned_register (next_frame, SP_REGNUM, &sp);
2355 return sp;
2356 }
2357 internal_error (__FILE__, __LINE__, "Missing unwind SP method");
2358}
2359
2360
1594fa56
AC
2361int
2362legacy_frame_p (struct gdbarch *current_gdbarch)
2363{
2364 return (DEPRECATED_INIT_FRAME_PC_P ()
2365 || DEPRECATED_INIT_FRAME_PC_FIRST_P ()
2366 || DEPRECATED_INIT_EXTRA_FRAME_INFO_P ()
618ce49f 2367 || DEPRECATED_FRAME_CHAIN_P ()
3e210248 2368 || !gdbarch_unwind_dummy_id_p (current_gdbarch));
1594fa56
AC
2369}
2370
b9362cc7
AC
2371extern initialize_file_ftype _initialize_frame; /* -Wmissing-prototypes */
2372
25d29d70
AC
2373static struct cmd_list_element *set_backtrace_cmdlist;
2374static struct cmd_list_element *show_backtrace_cmdlist;
2375
2376static void
2377set_backtrace_cmd (char *args, int from_tty)
2378{
2379 help_list (set_backtrace_cmdlist, "set backtrace ", -1, gdb_stdout);
2380}
2381
2382static void
2383show_backtrace_cmd (char *args, int from_tty)
2384{
2385 cmd_show_list (show_backtrace_cmdlist, from_tty, "");
2386}
2387
4c1e7e9d
AC
2388void
2389_initialize_frame (void)
2390{
2391 obstack_init (&frame_cache_obstack);
eb4f72c5 2392
25d29d70
AC
2393 add_prefix_cmd ("backtrace", class_maintenance, set_backtrace_cmd, "\
2394Set backtrace specific variables.\n\
2395Configure backtrace variables such as the backtrace limit",
2396 &set_backtrace_cmdlist, "set backtrace ",
2397 0/*allow-unknown*/, &setlist);
2398 add_prefix_cmd ("backtrace", class_maintenance, show_backtrace_cmd, "\
2399Show backtrace specific variables\n\
2400Show backtrace variables such as the backtrace limit",
2401 &show_backtrace_cmdlist, "show backtrace ",
2402 0/*allow-unknown*/, &showlist);
2403
2404 add_setshow_boolean_cmd ("past-main", class_obscure,
2405 &backtrace_past_main, "\
eb4f72c5
AC
2406Set whether backtraces should continue past \"main\".\n\
2407Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
2408the backtrace at \"main\". Set this variable if you need to see the rest\n\
2409of the stack trace.", "\
2410Show whether backtraces should continue past \"main\".\n\
2411Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
2412the backtrace at \"main\". Set this variable if you need to see the rest\n\
2413of the stack trace.",
25d29d70
AC
2414 NULL, NULL, &set_backtrace_cmdlist,
2415 &show_backtrace_cmdlist);
2416
2417 add_setshow_uinteger_cmd ("limit", class_obscure,
2418 &backtrace_limit, "\
2419Set an upper bound on the number of backtrace levels.\n\
fec74868 2420No more than the specified number of frames can be displayed or examined.\n\
25d29d70
AC
2421Zero is unlimited.", "\
2422Show the upper bound on the number of backtrace levels.",
2423 NULL, NULL, &set_backtrace_cmdlist,
2424 &show_backtrace_cmdlist);
ac2bd0a9
AC
2425
2426 /* Debug this files internals. */
2427 add_show_from_set (add_set_cmd ("frame", class_maintenance, var_zinteger,
2428 &frame_debug, "Set frame debugging.\n\
2429When non-zero, frame specific internal debugging is enabled.", &setdebuglist),
2430 &showdebuglist);
4c1e7e9d 2431}
This page took 0.349573 seconds and 4 git commands to generate.