* mmix.h (R_MMIX_PUSHJ_STUBBABLE): New reloc number.
[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
68 ->unwind->type. Unfortunatly, legacy code is still explicitly
69 setting the type using the method deprecated_set_frame_type.
70 Eliminate that method and this field can be eliminated. */
71 enum frame_type type;
72
73 /* For each register, address of where it was saved on entry to the
74 frame, or zero if it was not saved on entry to this frame. This
75 includes special registers such as pc and fp saved in special
76 ways in the stack frame. The SP_REGNUM is even more special, the
77 address here is the sp for the previous frame, not the address
78 where the sp was saved. */
79 /* Allocated by frame_saved_regs_zalloc () which is called /
80 initialized by DEPRECATED_FRAME_INIT_SAVED_REGS(). */
81 CORE_ADDR *saved_regs; /*NUM_REGS + NUM_PSEUDO_REGS*/
82
83 /* Anything extra for this structure that may have been defined in
84 the machine dependent files. */
85 /* Allocated by frame_extra_info_zalloc () which is called /
86 initialized by DEPRECATED_INIT_EXTRA_FRAME_INFO */
87 struct frame_extra_info *extra_info;
88
89 /* If dwarf2 unwind frame informations is used, this structure holds
90 all related unwind data. */
91 struct context *context;
92
93 /* The frame's low-level unwinder and corresponding cache. The
94 low-level unwinder is responsible for unwinding register values
95 for the previous frame. The low-level unwind methods are
96 selected based on the presence, or otherwize, of register unwind
97 information such as CFI. */
98 void *prologue_cache;
99 const struct frame_unwind *unwind;
100
101 /* Cached copy of the previous frame's resume address. */
102 struct {
103 int p;
104 CORE_ADDR value;
105 } prev_pc;
106
107 /* Cached copy of the previous frame's function address. */
108 struct
109 {
110 CORE_ADDR addr;
111 int p;
112 } prev_func;
113
114 /* This frame's ID. */
115 struct
116 {
117 int p;
118 struct frame_id value;
119 } this_id;
120
121 /* The frame's high-level base methods, and corresponding cache.
122 The high level base methods are selected based on the frame's
123 debug info. */
124 const struct frame_base *base;
125 void *base_cache;
126
127 /* Pointers to the next (down, inner, younger) and previous (up,
128 outer, older) frame_info's in the frame cache. */
129 struct frame_info *next; /* down, inner, younger */
130 int prev_p;
131 struct frame_info *prev; /* up, outer, older */
132};
133
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
238 directly. Unfortunatly, legacy code, called by
239 legacy_get_prev_frame, explicitly set the frames type
240 using the method deprecated_set_frame_type(). */
241 gdb_assert (fi->unwind->type != UNKNOWN_FRAME);
242 fi->type = fi->unwind->type;
243 }
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
495 functionality. Unfortunatly, they don't implement it. Their
496 lack of a formal definition can lead to targets writing back
497 bogus values (arguably a bug in the target code mind). */
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
542 directly. Unfortunatly, legacy code, called by
543 legacy_get_prev_frame, explicitly set the frames type using
544 the method deprecated_set_frame_type(). */
545 gdb_assert (frame->unwind->type != UNKNOWN_FRAME);
546 frame->type = frame->unwind->type;
547 }
548
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
AC
955 /* HACK: New code is passed the next frame and this cache.
956 Unfortunatly, old code expects this frame. Since this is a
957 backward compatibility hack, cheat by walking one level along the
958 prologue chain to the frame the old code expects.
959
960 Do not try this at home. Professional driver, closed course. */
961 struct frame_info *frame = next_frame->prev;
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.
1312 Unfortunatly those same work-arounds rely on the type defaulting
1313 to NORMAL_FRAME. Ulgh! The new frame code does not have this
1314 problem. */
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
1422 info. Unfortunatly legacy targets can't use
1423 legacy_get_prev_frame() to unwind the sentinel frame and,
1424 consequently, are forced to take this code path and rely on
1425 the below call to DEPRECATED_INIT_EXTRA_FRAME_INFO to
1426 initialize the inner-most frame. */
1427 if (DEPRECATED_INIT_EXTRA_FRAME_INFO_P ())
1428 {
1429 DEPRECATED_INIT_EXTRA_FRAME_INFO (0, prev);
1430 }
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
1509 directly. Unfortunatly, legacy code, called by
1510 legacy_get_prev_frame, explicitly set the frames type
1511 using the method deprecated_set_frame_type(). */
1512 prev->type = prev->unwind->type;
1513 /* Find PREV frame's ID. */
1514 prev->unwind->this_id (this_frame,
1515 &prev->prologue_cache,
1516 &prev->this_id.value);
1517 prev->this_id.p = 1;
1518 address = prev->this_id.value.stack_addr;
1519 }
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
03febf99 1793 if (this_frame->level >= 0
25d29d70 1794 && !backtrace_past_main
03febf99 1795 && inside_main_func (get_frame_pc (this_frame)))
eb4f72c5
AC
1796 /* Don't unwind past main(), bug always unwind the sentinel frame.
1797 Note, this is done _before_ the frame has been marked as
1798 previously unwound. That way if the user later decides to
1799 allow unwinds past main(), that just happens. */
ac2bd0a9
AC
1800 {
1801 if (frame_debug)
7f78e237 1802 fprintf_unfiltered (gdb_stdlog, "-> NULL // inside main func }\n");
ac2bd0a9
AC
1803 return NULL;
1804 }
eb4f72c5 1805
25d29d70
AC
1806 if (this_frame->level > backtrace_limit)
1807 {
1808 error ("Backtrace limit of %d exceeded", backtrace_limit);
1809 }
1810
0714963c
AC
1811 /* If we're already inside the entry function for the main objfile,
1812 then it isn't valid. Don't apply this test to a dummy frame -
1813 dummy frame PC's typically land in the entry func. Don't apply
1814 this test to the sentinel frame. Sentinel frames should always
1815 be allowed to unwind. */
1816 /* NOTE: cagney/2003-02-25: Don't enable until someone has found
1817 hard evidence that this is needed. */
1818 /* NOTE: cagney/2003-07-07: Fixed a bug in inside_main_func - wasn't
1819 checking for "main" in the minimal symbols. With that fixed
1820 asm-source tests now stop in "main" instead of halting the
1821 backtrace in wierd and wonderful ways somewhere inside the entry
627b3ba2
AC
1822 file. Suspect that deprecated_inside_entry_file and
1823 inside_entry_func tests were added to work around that (now
1824 fixed) case. */
0714963c
AC
1825 /* NOTE: cagney/2003-07-15: danielj (if I'm reading it right)
1826 suggested having the inside_entry_func test use the
1827 inside_main_func msymbol trick (along with entry_point_address I
1828 guess) to determine the address range of the start function.
1829 That should provide a far better stopper than the current
1830 heuristics. */
1831 /* NOTE: cagney/2003-07-15: Need to add a "set backtrace
1832 beyond-entry-func" command so that this can be selectively
1833 disabled. */
1834 if (0
1835#if 0
1836 && backtrace_beyond_entry_func
1837#endif
1838 && this_frame->type != DUMMY_FRAME && this_frame->level >= 0
1839 && inside_entry_func (get_frame_pc (this_frame)))
1840 {
1841 if (frame_debug)
1842 {
1843 fprintf_unfiltered (gdb_stdlog, "-> ");
1844 fprint_frame (gdb_stdlog, NULL);
1845 fprintf_unfiltered (gdb_stdlog, "// inside entry func }\n");
1846 }
1847 return NULL;
1848 }
1849
eb4f72c5 1850 /* Only try to do the unwind once. */
03febf99 1851 if (this_frame->prev_p)
7f78e237
AC
1852 {
1853 if (frame_debug)
1854 {
1855 fprintf_unfiltered (gdb_stdlog, "-> ");
1856 fprint_frame (gdb_stdlog, this_frame->prev);
1857 fprintf_unfiltered (gdb_stdlog, " // cached \n");
1858 }
1859 return this_frame->prev;
1860 }
03febf99 1861 this_frame->prev_p = 1;
eb4f72c5 1862
b14185ce
AC
1863 /* If we're inside the entry file, it isn't valid. Don't apply this
1864 test to a dummy frame - dummy frame PC's typically land in the
1865 entry file. Don't apply this test to the sentinel frame.
1866 Sentinel frames should always be allowed to unwind. */
eb4f72c5
AC
1867 /* NOTE: drow/2002-12-25: should there be a way to disable this
1868 check? It assumes a single small entry file, and the way some
1869 debug readers (e.g. dbxread) figure out which object is the
1870 entry file is somewhat hokey. */
1871 /* NOTE: cagney/2003-01-10: If there is a way of disabling this test
1872 then it should probably be moved to before the ->prev_p test,
1873 above. */
627b3ba2
AC
1874 /* NOTE: vinschen/2003-04-01: Disabled. It turns out that the call
1875 to deprecated_inside_entry_file destroys a meaningful backtrace
1876 under some conditions. E. g. the backtrace tests in the
1877 asm-source testcase are broken for some targets. In this test
1878 the functions are all implemented as part of one file and the
1879 testcase is not necessarily linked with a start file (depending
1880 on the target). What happens is, that the first frame is printed
1881 normaly and following frames are treated as being inside the
1882 enttry file then. This way, only the #0 frame is printed in the
1883 backtrace output. */
1884 if (0
1885 && this_frame->type != DUMMY_FRAME && this_frame->level >= 0
1886 && deprecated_inside_entry_file (get_frame_pc (this_frame)))
ac2bd0a9
AC
1887 {
1888 if (frame_debug)
7f78e237
AC
1889 {
1890 fprintf_unfiltered (gdb_stdlog, "-> ");
1891 fprint_frame (gdb_stdlog, NULL);
1892 fprintf_unfiltered (gdb_stdlog, " // inside entry file }\n");
1893 }
eb4f72c5 1894 return NULL;
ac2bd0a9 1895 }
eb4f72c5
AC
1896
1897 /* If any of the old frame initialization methods are around, use
055bb976
AC
1898 the legacy get_prev_frame method. */
1899 if (legacy_frame_p (current_gdbarch))
ac2bd0a9 1900 {
03febf99 1901 prev_frame = legacy_get_prev_frame (this_frame);
ac2bd0a9
AC
1902 return prev_frame;
1903 }
eb4f72c5 1904
270c3b1d
AC
1905 /* Check that this frame's ID was valid. If it wasn't, don't try to
1906 unwind to the prev frame. Be careful to not apply this test to
1907 the sentinel frame. */
1908 if (this_frame->level >= 0 && !frame_id_p (get_frame_id (this_frame)))
1909 {
1910 if (frame_debug)
7f78e237
AC
1911 {
1912 fprintf_unfiltered (gdb_stdlog, "-> ");
1913 fprint_frame (gdb_stdlog, NULL);
1914 fprintf_unfiltered (gdb_stdlog, " // this ID is NULL }\n");
1915 }
270c3b1d
AC
1916 return NULL;
1917 }
1918
1919 /* Check that this frame's ID isn't inner to (younger, below, next)
612dde91
AC
1920 the next frame. This happens when a frame unwind goes backwards.
1921 Since the sentinel frame doesn't really exist, don't compare the
1922 inner-most against that sentinel. */
270c3b1d
AC
1923 if (this_frame->level > 0
1924 && frame_id_inner (get_frame_id (this_frame),
1925 get_frame_id (this_frame->next)))
612dde91
AC
1926 error ("Previous frame inner to this frame (corrupt stack?)");
1927
1928 /* Check that this and the next frame are not identical. If they
1929 are, there is most likely a stack cycle. As with the inner-than
1930 test above, avoid comparing the inner-most and sentinel frames. */
1931 if (this_frame->level > 0
270c3b1d
AC
1932 && frame_id_eq (get_frame_id (this_frame),
1933 get_frame_id (this_frame->next)))
612dde91 1934 error ("Previous frame identical to this frame (corrupt stack?)");
270c3b1d 1935
eb4f72c5
AC
1936 /* Allocate the new frame but do not wire it in to the frame chain.
1937 Some (bad) code in INIT_FRAME_EXTRA_INFO tries to look along
1938 frame->next to pull some fancy tricks (of course such code is, by
1939 definition, recursive). Try to prevent it.
1940
1941 There is no reason to worry about memory leaks, should the
1942 remainder of the function fail. The allocated memory will be
1943 quickly reclaimed when the frame cache is flushed, and the `we've
1944 been here before' check above will stop repeated memory
1945 allocation calls. */
1946 prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
03febf99 1947 prev_frame->level = this_frame->level + 1;
eb4f72c5
AC
1948
1949 /* Try to unwind the PC. If that doesn't work, assume we've reached
1950 the oldest frame and simply return. Is there a better sentinal
1951 value? The unwound PC value is then used to initialize the new
1952 previous frame's type.
1953
1954 Note that the pc-unwind is intentionally performed before the
1955 frame chain. This is ok since, for old targets, both
618ce49f
AC
1956 frame_pc_unwind (nee, FRAME_SAVED_PC) and
1957 DEPRECATED_FRAME_CHAIN()) assume THIS_FRAME's data structures
1958 have already been initialized (using
e9582e71
AC
1959 DEPRECATED_INIT_EXTRA_FRAME_INFO) and hence the call order
1960 doesn't matter.
eb4f72c5
AC
1961
1962 By unwinding the PC first, it becomes possible to, in the case of
1963 a dummy frame, avoid also unwinding the frame ID. This is
1964 because (well ignoring the PPC) a dummy frame can be located
03febf99 1965 using THIS_FRAME's frame ID. */
eb4f72c5 1966
d1340264 1967 if (frame_pc_unwind (this_frame) == 0)
ac2bd0a9
AC
1968 {
1969 /* The allocated PREV_FRAME will be reclaimed when the frame
1970 obstack is next purged. */
1971 if (frame_debug)
7f78e237
AC
1972 {
1973 fprintf_unfiltered (gdb_stdlog, "-> ");
1974 fprint_frame (gdb_stdlog, NULL);
1975 fprintf_unfiltered (gdb_stdlog, " // unwound PC zero }\n");
1976 }
ac2bd0a9
AC
1977 return NULL;
1978 }
eb4f72c5 1979
c50901fd
AC
1980 /* Don't yet compute ->unwind (and hence ->type). It is computed
1981 on-demand in get_frame_type, frame_register_unwind, and
1982 get_frame_id. */
eb4f72c5 1983
c50901fd
AC
1984 /* Don't yet compute the frame's ID. It is computed on-demand by
1985 get_frame_id(). */
6dc42492 1986
270c3b1d
AC
1987 /* The unwound frame ID is validate at the start of this function,
1988 as part of the logic to decide if that frame should be further
1989 unwound, and not here while the prev frame is being created.
1990 Doing this makes it possible for the user to examine a frame that
1991 has an invalid frame ID.
1992
25e3a86b
AC
1993 Some very old VAX code noted: [...] For the sake of argument,
1994 suppose that the stack is somewhat trashed (which is one reason
1995 that "info frame" exists). So, return 0 (indicating we don't
1996 know the address of the arglist) if we don't know what frame this
1997 frame calls. */
6dc42492 1998
eb4f72c5 1999 /* Link it in. */
03febf99
AC
2000 this_frame->prev = prev_frame;
2001 prev_frame->next = this_frame;
eb4f72c5 2002
7f78e237
AC
2003 if (frame_debug)
2004 {
2005 fprintf_unfiltered (gdb_stdlog, "-> ");
2006 fprint_frame (gdb_stdlog, prev_frame);
2007 fprintf_unfiltered (gdb_stdlog, " }\n");
2008 }
2009
eb4f72c5
AC
2010 return prev_frame;
2011}
2012
4c1e7e9d
AC
2013CORE_ADDR
2014get_frame_pc (struct frame_info *frame)
2015{
d1340264
AC
2016 gdb_assert (frame->next != NULL);
2017 return frame_pc_unwind (frame->next);
4c1e7e9d
AC
2018}
2019
8edd5d01
AC
2020/* Return an address of that falls within the frame's code block. */
2021
2022CORE_ADDR
2023frame_unwind_address_in_block (struct frame_info *next_frame)
2024{
2025 /* A draft address. */
2026 CORE_ADDR pc = frame_pc_unwind (next_frame);
2027
2028 /* If THIS frame is not inner most (i.e., NEXT isn't the sentinel),
2029 and NEXT is `normal' (i.e., not a sigtramp, dummy, ....) THIS
2030 frame's PC ends up pointing at the instruction fallowing the
2031 "call". Adjust that PC value so that it falls on the call
2032 instruction (which, hopefully, falls within THIS frame's code
2033 block. So far it's proved to be a very good approximation. See
2034 get_frame_type for why ->type can't be used. */
2035 if (next_frame->level >= 0
2036 && get_frame_type (next_frame) == NORMAL_FRAME)
2037 --pc;
2038 return pc;
2039}
2040
2041CORE_ADDR
2042get_frame_address_in_block (struct frame_info *this_frame)
2043{
2044 return frame_unwind_address_in_block (this_frame->next);
2045}
2046
1058bca7
AC
2047static int
2048pc_notcurrent (struct frame_info *frame)
2049{
2050 /* If FRAME is not the innermost frame, that normally means that
2051 FRAME->pc points at the return instruction (which is *after* the
2052 call instruction), and we want to get the line containing the
2053 call (because the call is where the user thinks the program is).
2054 However, if the next frame is either a SIGTRAMP_FRAME or a
2055 DUMMY_FRAME, then the next frame will contain a saved interrupt
2056 PC and such a PC indicates the current (rather than next)
2057 instruction/line, consequently, for such cases, want to get the
2058 line containing fi->pc. */
2059 struct frame_info *next = get_next_frame (frame);
2060 int notcurrent = (next != NULL && get_frame_type (next) == NORMAL_FRAME);
2061 return notcurrent;
2062}
2063
2064void
2065find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
2066{
11889732 2067 (*sal) = find_pc_line (get_frame_pc (frame), pc_notcurrent (frame));
1058bca7
AC
2068}
2069
c193f6ac
AC
2070/* Per "frame.h", return the ``address'' of the frame. Code should
2071 really be using get_frame_id(). */
2072CORE_ADDR
2073get_frame_base (struct frame_info *fi)
2074{
d0a55772 2075 return get_frame_id (fi).stack_addr;
c193f6ac
AC
2076}
2077
da62e633
AC
2078/* High-level offsets into the frame. Used by the debug info. */
2079
2080CORE_ADDR
2081get_frame_base_address (struct frame_info *fi)
2082{
7df05f2b 2083 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
2084 return 0;
2085 if (fi->base == NULL)
e8a89fe2 2086 fi->base = frame_base_find_by_frame (fi->next);
da62e633
AC
2087 /* Sneaky: If the low-level unwind and high-level base code share a
2088 common unwinder, let them share the prologue cache. */
2089 if (fi->base->unwind == fi->unwind)
2090 return fi->base->this_base (fi->next, &fi->prologue_cache);
2091 return fi->base->this_base (fi->next, &fi->base_cache);
2092}
2093
2094CORE_ADDR
2095get_frame_locals_address (struct frame_info *fi)
2096{
2097 void **cache;
7df05f2b 2098 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
2099 return 0;
2100 /* If there isn't a frame address method, find it. */
2101 if (fi->base == NULL)
e8a89fe2 2102 fi->base = frame_base_find_by_frame (fi->next);
da62e633
AC
2103 /* Sneaky: If the low-level unwind and high-level base code share a
2104 common unwinder, let them share the prologue cache. */
2105 if (fi->base->unwind == fi->unwind)
2106 cache = &fi->prologue_cache;
2107 else
2108 cache = &fi->base_cache;
2109 return fi->base->this_locals (fi->next, cache);
2110}
2111
2112CORE_ADDR
2113get_frame_args_address (struct frame_info *fi)
2114{
2115 void **cache;
7df05f2b 2116 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
2117 return 0;
2118 /* If there isn't a frame address method, find it. */
2119 if (fi->base == NULL)
e8a89fe2 2120 fi->base = frame_base_find_by_frame (fi->next);
da62e633
AC
2121 /* Sneaky: If the low-level unwind and high-level base code share a
2122 common unwinder, let them share the prologue cache. */
2123 if (fi->base->unwind == fi->unwind)
2124 cache = &fi->prologue_cache;
2125 else
2126 cache = &fi->base_cache;
2127 return fi->base->this_args (fi->next, cache);
2128}
2129
85cf597a
AC
2130/* Level of the selected frame: 0 for innermost, 1 for its caller, ...
2131 or -1 for a NULL frame. */
2132
2133int
2134frame_relative_level (struct frame_info *fi)
2135{
2136 if (fi == NULL)
2137 return -1;
2138 else
2139 return fi->level;
2140}
2141
5a203e44
AC
2142enum frame_type
2143get_frame_type (struct frame_info *frame)
2144{
2145 /* Some targets still don't use [generic] dummy frames. Catch them
2146 here. */
07555a72 2147 if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES
5a203e44
AC
2148 && deprecated_frame_in_dummy (frame))
2149 return DUMMY_FRAME;
710ee10a
KB
2150
2151 /* Some legacy code, e.g, mips_init_extra_frame_info() wants
2152 to determine the frame's type prior to it being completely
2153 initialized. Don't attempt to lazily initialize ->unwind for
2154 legacy code. It will be initialized in legacy_get_prev_frame(). */
2155 if (frame->unwind == NULL && !legacy_frame_p (current_gdbarch))
c50901fd
AC
2156 {
2157 /* Initialize the frame's unwinder because it is that which
2158 provides the frame's type. */
e8a89fe2 2159 frame->unwind = frame_unwind_find_by_frame (frame->next);
c50901fd
AC
2160 /* FIXME: cagney/2003-04-02: Rather than storing the frame's
2161 type in the frame, the unwinder's type should be returned
2162 directly. Unfortunatly, legacy code, called by
2163 legacy_get_prev_frame, explicitly set the frames type using
2164 the method deprecated_set_frame_type(). */
2165 gdb_assert (frame->unwind->type != UNKNOWN_FRAME);
2166 frame->type = frame->unwind->type;
2167 }
7df05f2b
AC
2168 if (frame->type == UNKNOWN_FRAME)
2169 return NORMAL_FRAME;
2170 else
2171 return frame->type;
5a203e44
AC
2172}
2173
2174void
2175deprecated_set_frame_type (struct frame_info *frame, enum frame_type type)
2176{
2177 /* Arrrg! See comment in "frame.h". */
2178 frame->type = type;
2179}
2180
0394eb2a
AC
2181struct frame_extra_info *
2182get_frame_extra_info (struct frame_info *fi)
2183{
2184 return fi->extra_info;
2185}
2186
2c517d0e
AC
2187struct frame_extra_info *
2188frame_extra_info_zalloc (struct frame_info *fi, long size)
2189{
479ab5a0 2190 fi->extra_info = frame_obstack_zalloc (size);
2c517d0e
AC
2191 return fi->extra_info;
2192}
2193
b87efeee 2194void
2f107107 2195deprecated_update_frame_pc_hack (struct frame_info *frame, CORE_ADDR pc)
b87efeee 2196{
7f78e237
AC
2197 if (frame_debug)
2198 fprintf_unfiltered (gdb_stdlog,
2199 "{ deprecated_update_frame_pc_hack (frame=%d,pc=0x%s) }\n",
2200 frame->level, paddr_nz (pc));
e0d2ae16
AC
2201 /* NOTE: cagney/2003-03-11: Some architectures (e.g., Arm) are
2202 maintaining a locally allocated frame object. Since such frame's
2203 are not in the frame chain, it isn't possible to assume that the
2204 frame has a next. Sigh. */
2205 if (frame->next != NULL)
2206 {
2207 /* While we're at it, update this frame's cached PC value, found
2208 in the next frame. Oh for the day when "struct frame_info"
2209 is opaque and this hack on hack can just go away. */
d1340264
AC
2210 frame->next->prev_pc.value = pc;
2211 frame->next->prev_pc.p = 1;
e0d2ae16 2212 }
2f107107
AC
2213}
2214
2215void
2216deprecated_update_frame_base_hack (struct frame_info *frame, CORE_ADDR base)
2217{
7f78e237
AC
2218 if (frame_debug)
2219 fprintf_unfiltered (gdb_stdlog,
2220 "{ deprecated_update_frame_base_hack (frame=%d,base=0x%s) }\n",
2221 frame->level, paddr_nz (base));
2f107107 2222 /* See comment in "frame.h". */
d0a55772 2223 frame->this_id.value.stack_addr = base;
b87efeee
AC
2224}
2225
c8b8a898
AC
2226void
2227deprecated_set_frame_saved_regs_hack (struct frame_info *frame,
2228 CORE_ADDR *saved_regs)
2229{
2230 frame->saved_regs = saved_regs;
2231}
2232
2233void
2234deprecated_set_frame_extra_info_hack (struct frame_info *frame,
2235 struct frame_extra_info *extra_info)
2236{
2237 frame->extra_info = extra_info;
2238}
2239
483d36b2
AC
2240void
2241deprecated_set_frame_next_hack (struct frame_info *fi,
2242 struct frame_info *next)
2243{
2244 fi->next = next;
2245}
2246
2247void
2248deprecated_set_frame_prev_hack (struct frame_info *fi,
2249 struct frame_info *prev)
2250{
2251 fi->prev = prev;
2252}
2253
2d75187b
AC
2254struct context *
2255deprecated_get_frame_context (struct frame_info *fi)
2256{
2257 return fi->context;
2258}
2259
2260void
2261deprecated_set_frame_context (struct frame_info *fi,
2262 struct context *context)
2263{
2264 fi->context = context;
2265}
2266
c8b8a898
AC
2267struct frame_info *
2268deprecated_frame_xmalloc (void)
2269{
bcf7d3ca
AC
2270 struct frame_info *frame = XMALLOC (struct frame_info);
2271 memset (frame, 0, sizeof (*frame));
18adea3f 2272 frame->this_id.p = 1;
c8b8a898
AC
2273 return frame;
2274}
2275
f6c609c4
AC
2276struct frame_info *
2277deprecated_frame_xmalloc_with_cleanup (long sizeof_saved_regs,
2278 long sizeof_extra_info)
2279{
2280 struct frame_info *frame = deprecated_frame_xmalloc ();
2281 make_cleanup (xfree, frame);
2282 if (sizeof_saved_regs > 0)
2283 {
2284 frame->saved_regs = xcalloc (1, sizeof_saved_regs);
2285 make_cleanup (xfree, frame->saved_regs);
2286 }
2287 if (sizeof_extra_info > 0)
2288 {
2289 frame->extra_info = xcalloc (1, sizeof_extra_info);
2290 make_cleanup (xfree, frame->extra_info);
2291 }
2292 return frame;
2293}
c8b8a898 2294
ae1e7417
AC
2295/* Memory access methods. */
2296
2297void
2298get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr, void *buf,
2299 int len)
2300{
2301 read_memory (addr, buf, len);
2302}
2303
2304LONGEST
2305get_frame_memory_signed (struct frame_info *this_frame, CORE_ADDR addr,
2306 int len)
2307{
2308 return read_memory_integer (addr, len);
2309}
2310
2311ULONGEST
2312get_frame_memory_unsigned (struct frame_info *this_frame, CORE_ADDR addr,
2313 int len)
2314{
2315 return read_memory_unsigned_integer (addr, len);
2316}
2317
2318/* Architecture method. */
2319
2320struct gdbarch *
2321get_frame_arch (struct frame_info *this_frame)
2322{
2323 return current_gdbarch;
2324}
2325
a9e5fdc2
AC
2326/* Stack pointer methods. */
2327
2328CORE_ADDR
2329get_frame_sp (struct frame_info *this_frame)
2330{
2331 return frame_sp_unwind (this_frame->next);
2332}
2333
2334CORE_ADDR
2335frame_sp_unwind (struct frame_info *next_frame)
2336{
2337 /* Normality, an architecture that provides a way of obtaining any
2338 frame inner-most address. */
2339 if (gdbarch_unwind_sp_p (current_gdbarch))
2340 return gdbarch_unwind_sp (current_gdbarch, next_frame);
2341 /* Things are looking grim. If it's the inner-most frame and there
2342 is a TARGET_READ_SP then that can be used. */
2343 if (next_frame->level < 0 && TARGET_READ_SP_P ())
2344 return TARGET_READ_SP ();
2345 /* Now things are really are grim. Hope that the value returned by
2346 the SP_REGNUM register is meaningful. */
2347 if (SP_REGNUM >= 0)
2348 {
2349 ULONGEST sp;
2350 frame_unwind_unsigned_register (next_frame, SP_REGNUM, &sp);
2351 return sp;
2352 }
2353 internal_error (__FILE__, __LINE__, "Missing unwind SP method");
2354}
2355
2356
1594fa56
AC
2357int
2358legacy_frame_p (struct gdbarch *current_gdbarch)
2359{
2360 return (DEPRECATED_INIT_FRAME_PC_P ()
2361 || DEPRECATED_INIT_FRAME_PC_FIRST_P ()
2362 || DEPRECATED_INIT_EXTRA_FRAME_INFO_P ()
618ce49f 2363 || DEPRECATED_FRAME_CHAIN_P ()
3e210248 2364 || !gdbarch_unwind_dummy_id_p (current_gdbarch));
1594fa56
AC
2365}
2366
b9362cc7
AC
2367extern initialize_file_ftype _initialize_frame; /* -Wmissing-prototypes */
2368
25d29d70
AC
2369static struct cmd_list_element *set_backtrace_cmdlist;
2370static struct cmd_list_element *show_backtrace_cmdlist;
2371
2372static void
2373set_backtrace_cmd (char *args, int from_tty)
2374{
2375 help_list (set_backtrace_cmdlist, "set backtrace ", -1, gdb_stdout);
2376}
2377
2378static void
2379show_backtrace_cmd (char *args, int from_tty)
2380{
2381 cmd_show_list (show_backtrace_cmdlist, from_tty, "");
2382}
2383
4c1e7e9d
AC
2384void
2385_initialize_frame (void)
2386{
2387 obstack_init (&frame_cache_obstack);
eb4f72c5 2388
25d29d70
AC
2389 add_prefix_cmd ("backtrace", class_maintenance, set_backtrace_cmd, "\
2390Set backtrace specific variables.\n\
2391Configure backtrace variables such as the backtrace limit",
2392 &set_backtrace_cmdlist, "set backtrace ",
2393 0/*allow-unknown*/, &setlist);
2394 add_prefix_cmd ("backtrace", class_maintenance, show_backtrace_cmd, "\
2395Show backtrace specific variables\n\
2396Show backtrace variables such as the backtrace limit",
2397 &show_backtrace_cmdlist, "show backtrace ",
2398 0/*allow-unknown*/, &showlist);
2399
2400 add_setshow_boolean_cmd ("past-main", class_obscure,
2401 &backtrace_past_main, "\
eb4f72c5
AC
2402Set whether backtraces should continue past \"main\".\n\
2403Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
2404the backtrace at \"main\". Set this variable if you need to see the rest\n\
2405of the stack trace.", "\
2406Show 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.",
25d29d70
AC
2410 NULL, NULL, &set_backtrace_cmdlist,
2411 &show_backtrace_cmdlist);
2412
2413 add_setshow_uinteger_cmd ("limit", class_obscure,
2414 &backtrace_limit, "\
2415Set an upper bound on the number of backtrace levels.\n\
fec74868 2416No more than the specified number of frames can be displayed or examined.\n\
25d29d70
AC
2417Zero is unlimited.", "\
2418Show the upper bound on the number of backtrace levels.",
2419 NULL, NULL, &set_backtrace_cmdlist,
2420 &show_backtrace_cmdlist);
ac2bd0a9
AC
2421
2422 /* Debug this files internals. */
2423 add_show_from_set (add_set_cmd ("frame", class_maintenance, var_zinteger,
2424 &frame_debug, "Set frame debugging.\n\
2425When non-zero, frame specific internal debugging is enabled.", &setdebuglist),
2426 &showdebuglist);
4c1e7e9d 2427}
This page took 0.417033 seconds and 4 git commands to generate.