make MSYMBOL_VALUE_ADDRESS an rvalue
[deliverable/binutils-gdb.git] / gdb / frame.c
CommitLineData
4f460812 1/* Cache and manage frames for GDB, the GNU debugger.
96cb11df 2
ecd75fc8 3 Copyright (C) 1986-2014 Free Software Foundation, Inc.
d65fe839
AC
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
d65fe839
AC
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
d65fe839
AC
19
20#include "defs.h"
21#include "frame.h"
22#include "target.h"
23#include "value.h"
39f77062 24#include "inferior.h" /* for inferior_ptid */
4e052eda 25#include "regcache.h"
4f460812 26#include "gdb_assert.h"
0e9f083f 27#include <string.h>
eb8bc282 28#include "user-regs.h"
4c1e7e9d
AC
29#include "gdb_obstack.h"
30#include "dummy-frame.h"
a94dd1fd 31#include "sentinel-frame.h"
4c1e7e9d
AC
32#include "gdbcore.h"
33#include "annotate.h"
6e7f8b9c 34#include "language.h"
494cca16 35#include "frame-unwind.h"
da62e633 36#include "frame-base.h"
eb4f72c5
AC
37#include "command.h"
38#include "gdbcmd.h"
f4c5303c 39#include "observer.h"
c8cd9f6c 40#include "objfiles.h"
60250e8b 41#include "exceptions.h"
8ea051c5 42#include "gdbthread.h"
edb3359d
DJ
43#include "block.h"
44#include "inline-frame.h"
983dc440 45#include "tracepoint.h"
3de661e6 46#include "hashtab.h"
f6c01fc5 47#include "valprint.h"
eb4f72c5 48
5613d8d3 49static struct frame_info *get_prev_frame_1 (struct frame_info *this_frame);
edb3359d 50static struct frame_info *get_prev_frame_raw (struct frame_info *this_frame);
a7300869 51static const char *frame_stop_reason_symbol_string (enum unwind_stop_reason reason);
5613d8d3 52
782d47df
PA
53/* Status of some values cached in the frame_info object. */
54
55enum cached_copy_status
56{
57 /* Value is unknown. */
58 CC_UNKNOWN,
59
60 /* We have a value. */
61 CC_VALUE,
62
63 /* Value was not saved. */
64 CC_NOT_SAVED,
65
66 /* Value is unavailable. */
67 CC_UNAVAILABLE
68};
69
bd013d54
AC
70/* We keep a cache of stack frames, each of which is a "struct
71 frame_info". The innermost one gets allocated (in
72 wait_for_inferior) each time the inferior stops; current_frame
73 points to it. Additional frames get allocated (in get_prev_frame)
74 as needed, and are chained through the next and prev fields. Any
75 time that the frame cache becomes invalid (most notably when we
76 execute something, but also if we change how we interpret the
77 frames (e.g. "set heuristic-fence-post" in mips-tdep.c, or anything
78 which reads new symbols)), we should call reinit_frame_cache. */
79
80struct frame_info
81{
82 /* Level of this frame. The inner-most (youngest) frame is at level
83 0. As you move towards the outer-most (oldest) frame, the level
84 increases. This is a cached value. It could just as easily be
85 computed by counting back from the selected frame to the inner
86 most frame. */
bbde78fa 87 /* NOTE: cagney/2002-04-05: Perhaps a level of ``-1'' should be
bd013d54
AC
88 reserved to indicate a bogus frame - one that has been created
89 just to keep GDB happy (GDB always needs a frame). For the
90 moment leave this as speculation. */
91 int level;
92
6c95b8df
PA
93 /* The frame's program space. */
94 struct program_space *pspace;
95
96 /* The frame's address space. */
97 struct address_space *aspace;
98
bd013d54
AC
99 /* The frame's low-level unwinder and corresponding cache. The
100 low-level unwinder is responsible for unwinding register values
101 for the previous frame. The low-level unwind methods are
bbde78fa 102 selected based on the presence, or otherwise, of register unwind
bd013d54
AC
103 information such as CFI. */
104 void *prologue_cache;
105 const struct frame_unwind *unwind;
106
36f15f55
UW
107 /* Cached copy of the previous frame's architecture. */
108 struct
109 {
110 int p;
111 struct gdbarch *arch;
112 } prev_arch;
113
bd013d54
AC
114 /* Cached copy of the previous frame's resume address. */
115 struct {
782d47df 116 enum cached_copy_status status;
bd013d54
AC
117 CORE_ADDR value;
118 } prev_pc;
119
120 /* Cached copy of the previous frame's function address. */
121 struct
122 {
123 CORE_ADDR addr;
124 int p;
125 } prev_func;
126
127 /* This frame's ID. */
128 struct
129 {
130 int p;
131 struct frame_id value;
132 } this_id;
133
134 /* The frame's high-level base methods, and corresponding cache.
135 The high level base methods are selected based on the frame's
136 debug info. */
137 const struct frame_base *base;
138 void *base_cache;
139
140 /* Pointers to the next (down, inner, younger) and previous (up,
141 outer, older) frame_info's in the frame cache. */
142 struct frame_info *next; /* down, inner, younger */
143 int prev_p;
144 struct frame_info *prev; /* up, outer, older */
55feb689
DJ
145
146 /* The reason why we could not set PREV, or UNWIND_NO_REASON if we
147 could. Only valid when PREV_P is set. */
148 enum unwind_stop_reason stop_reason;
bd013d54
AC
149};
150
3de661e6
PM
151/* A frame stash used to speed up frame lookups. Create a hash table
152 to stash frames previously accessed from the frame cache for
153 quicker subsequent retrieval. The hash table is emptied whenever
154 the frame cache is invalidated. */
b83e9eb7 155
3de661e6 156static htab_t frame_stash;
b83e9eb7 157
3de661e6
PM
158/* Internal function to calculate a hash from the frame_id addresses,
159 using as many valid addresses as possible. Frames below level 0
160 are not stored in the hash table. */
161
162static hashval_t
163frame_addr_hash (const void *ap)
164{
165 const struct frame_info *frame = ap;
166 const struct frame_id f_id = frame->this_id.value;
167 hashval_t hash = 0;
168
5ce0145d
PA
169 gdb_assert (f_id.stack_status != FID_STACK_INVALID
170 || f_id.code_addr_p
3de661e6
PM
171 || f_id.special_addr_p);
172
5ce0145d 173 if (f_id.stack_status == FID_STACK_VALID)
3de661e6
PM
174 hash = iterative_hash (&f_id.stack_addr,
175 sizeof (f_id.stack_addr), hash);
176 if (f_id.code_addr_p)
177 hash = iterative_hash (&f_id.code_addr,
178 sizeof (f_id.code_addr), hash);
179 if (f_id.special_addr_p)
180 hash = iterative_hash (&f_id.special_addr,
181 sizeof (f_id.special_addr), hash);
182
183 return hash;
184}
185
186/* Internal equality function for the hash table. This function
187 defers equality operations to frame_id_eq. */
188
189static int
190frame_addr_hash_eq (const void *a, const void *b)
191{
192 const struct frame_info *f_entry = a;
193 const struct frame_info *f_element = b;
194
195 return frame_id_eq (f_entry->this_id.value,
196 f_element->this_id.value);
197}
198
199/* Internal function to create the frame_stash hash table. 100 seems
200 to be a good compromise to start the hash table at. */
201
202static void
203frame_stash_create (void)
204{
205 frame_stash = htab_create (100,
206 frame_addr_hash,
207 frame_addr_hash_eq,
208 NULL);
209}
210
194cca41
PA
211/* Internal function to add a frame to the frame_stash hash table.
212 Returns false if a frame with the same ID was already stashed, true
213 otherwise. */
b83e9eb7 214
194cca41 215static int
b83e9eb7
JB
216frame_stash_add (struct frame_info *frame)
217{
194cca41 218 struct frame_info **slot;
f5b0ed3c 219
194cca41
PA
220 /* Do not try to stash the sentinel frame. */
221 gdb_assert (frame->level >= 0);
222
223 slot = (struct frame_info **) htab_find_slot (frame_stash,
224 frame,
225 INSERT);
226
227 /* If we already have a frame in the stack with the same id, we
228 either have a stack cycle (corrupted stack?), or some bug
229 elsewhere in GDB. In any case, ignore the duplicate and return
230 an indication to the caller. */
231 if (*slot != NULL)
232 return 0;
233
234 *slot = frame;
235 return 1;
b83e9eb7
JB
236}
237
3de661e6
PM
238/* Internal function to search the frame stash for an entry with the
239 given frame ID. If found, return that frame. Otherwise return
240 NULL. */
b83e9eb7
JB
241
242static struct frame_info *
243frame_stash_find (struct frame_id id)
244{
3de661e6
PM
245 struct frame_info dummy;
246 struct frame_info *frame;
b83e9eb7 247
3de661e6
PM
248 dummy.this_id.value = id;
249 frame = htab_find (frame_stash, &dummy);
250 return frame;
b83e9eb7
JB
251}
252
3de661e6
PM
253/* Internal function to invalidate the frame stash by removing all
254 entries in it. This only occurs when the frame cache is
255 invalidated. */
b83e9eb7
JB
256
257static void
258frame_stash_invalidate (void)
259{
3de661e6 260 htab_empty (frame_stash);
b83e9eb7
JB
261}
262
ac2bd0a9
AC
263/* Flag to control debugging. */
264
ccce17b0 265unsigned int frame_debug;
920d2a44
AC
266static void
267show_frame_debug (struct ui_file *file, int from_tty,
268 struct cmd_list_element *c, const char *value)
269{
270 fprintf_filtered (file, _("Frame debugging is %s.\n"), value);
271}
ac2bd0a9 272
25d29d70
AC
273/* Flag to indicate whether backtraces should stop at main et.al. */
274
275static int backtrace_past_main;
920d2a44
AC
276static void
277show_backtrace_past_main (struct ui_file *file, int from_tty,
278 struct cmd_list_element *c, const char *value)
279{
3e43a32a
MS
280 fprintf_filtered (file,
281 _("Whether backtraces should "
282 "continue past \"main\" is %s.\n"),
920d2a44
AC
283 value);
284}
285
2315ffec 286static int backtrace_past_entry;
920d2a44
AC
287static void
288show_backtrace_past_entry (struct ui_file *file, int from_tty,
289 struct cmd_list_element *c, const char *value)
290{
3e43a32a
MS
291 fprintf_filtered (file, _("Whether backtraces should continue past the "
292 "entry point of a program is %s.\n"),
920d2a44
AC
293 value);
294}
295
883b9c6c 296static unsigned int backtrace_limit = UINT_MAX;
920d2a44
AC
297static void
298show_backtrace_limit (struct ui_file *file, int from_tty,
299 struct cmd_list_element *c, const char *value)
300{
3e43a32a
MS
301 fprintf_filtered (file,
302 _("An upper bound on the number "
303 "of backtrace levels is %s.\n"),
920d2a44
AC
304 value);
305}
306
eb4f72c5 307
ca73dd9d
AC
308static void
309fprint_field (struct ui_file *file, const char *name, int p, CORE_ADDR addr)
310{
311 if (p)
5af949e3 312 fprintf_unfiltered (file, "%s=%s", name, hex_string (addr));
ca73dd9d
AC
313 else
314 fprintf_unfiltered (file, "!%s", name);
315}
d65fe839 316
00905d52 317void
7f78e237
AC
318fprint_frame_id (struct ui_file *file, struct frame_id id)
319{
ca73dd9d 320 fprintf_unfiltered (file, "{");
5ce0145d
PA
321
322 if (id.stack_status == FID_STACK_INVALID)
323 fprintf_unfiltered (file, "!stack");
324 else if (id.stack_status == FID_STACK_UNAVAILABLE)
325 fprintf_unfiltered (file, "stack=<unavailable>");
326 else
327 fprintf_unfiltered (file, "stack=%s", hex_string (id.stack_addr));
ca73dd9d 328 fprintf_unfiltered (file, ",");
5ce0145d 329
ca73dd9d
AC
330 fprint_field (file, "code", id.code_addr_p, id.code_addr);
331 fprintf_unfiltered (file, ",");
5ce0145d 332
ca73dd9d 333 fprint_field (file, "special", id.special_addr_p, id.special_addr);
5ce0145d 334
193facb3
JK
335 if (id.artificial_depth)
336 fprintf_unfiltered (file, ",artificial=%d", id.artificial_depth);
5ce0145d 337
ca73dd9d 338 fprintf_unfiltered (file, "}");
7f78e237
AC
339}
340
341static void
342fprint_frame_type (struct ui_file *file, enum frame_type type)
343{
344 switch (type)
345 {
7f78e237
AC
346 case NORMAL_FRAME:
347 fprintf_unfiltered (file, "NORMAL_FRAME");
348 return;
349 case DUMMY_FRAME:
350 fprintf_unfiltered (file, "DUMMY_FRAME");
351 return;
edb3359d
DJ
352 case INLINE_FRAME:
353 fprintf_unfiltered (file, "INLINE_FRAME");
354 return;
b5eef7aa
JK
355 case TAILCALL_FRAME:
356 fprintf_unfiltered (file, "TAILCALL_FRAME");
edb3359d 357 return;
7f78e237
AC
358 case SIGTRAMP_FRAME:
359 fprintf_unfiltered (file, "SIGTRAMP_FRAME");
360 return;
36f15f55
UW
361 case ARCH_FRAME:
362 fprintf_unfiltered (file, "ARCH_FRAME");
363 return;
b5eef7aa
JK
364 case SENTINEL_FRAME:
365 fprintf_unfiltered (file, "SENTINEL_FRAME");
366 return;
7f78e237
AC
367 default:
368 fprintf_unfiltered (file, "<unknown type>");
369 return;
370 };
371}
372
373static void
374fprint_frame (struct ui_file *file, struct frame_info *fi)
375{
376 if (fi == NULL)
377 {
378 fprintf_unfiltered (file, "<NULL frame>");
379 return;
380 }
381 fprintf_unfiltered (file, "{");
382 fprintf_unfiltered (file, "level=%d", fi->level);
383 fprintf_unfiltered (file, ",");
384 fprintf_unfiltered (file, "type=");
c1bf6f65
AC
385 if (fi->unwind != NULL)
386 fprint_frame_type (file, fi->unwind->type);
387 else
388 fprintf_unfiltered (file, "<unknown>");
7f78e237
AC
389 fprintf_unfiltered (file, ",");
390 fprintf_unfiltered (file, "unwind=");
391 if (fi->unwind != NULL)
392 gdb_print_host_address (fi->unwind, file);
393 else
394 fprintf_unfiltered (file, "<unknown>");
395 fprintf_unfiltered (file, ",");
396 fprintf_unfiltered (file, "pc=");
782d47df 397 if (fi->next == NULL || fi->next->prev_pc.status == CC_UNKNOWN)
7f78e237 398 fprintf_unfiltered (file, "<unknown>");
782d47df
PA
399 else if (fi->next->prev_pc.status == CC_VALUE)
400 fprintf_unfiltered (file, "%s",
401 hex_string (fi->next->prev_pc.value));
402 else if (fi->next->prev_pc.status == CC_NOT_SAVED)
403 val_print_not_saved (file);
404 else if (fi->next->prev_pc.status == CC_UNAVAILABLE)
405 val_print_unavailable (file);
7f78e237
AC
406 fprintf_unfiltered (file, ",");
407 fprintf_unfiltered (file, "id=");
408 if (fi->this_id.p)
409 fprint_frame_id (file, fi->this_id.value);
410 else
411 fprintf_unfiltered (file, "<unknown>");
412 fprintf_unfiltered (file, ",");
413 fprintf_unfiltered (file, "func=");
414 if (fi->next != NULL && fi->next->prev_func.p)
5af949e3 415 fprintf_unfiltered (file, "%s", hex_string (fi->next->prev_func.addr));
7f78e237
AC
416 else
417 fprintf_unfiltered (file, "<unknown>");
418 fprintf_unfiltered (file, "}");
419}
420
193facb3
JK
421/* Given FRAME, return the enclosing frame as found in real frames read-in from
422 inferior memory. Skip any previous frames which were made up by GDB.
423 Return the original frame if no immediate previous frames exist. */
edb3359d
DJ
424
425static struct frame_info *
193facb3 426skip_artificial_frames (struct frame_info *frame)
edb3359d 427{
1ab3b62c
JK
428 while (get_frame_type (frame) == INLINE_FRAME
429 || get_frame_type (frame) == TAILCALL_FRAME)
edb3359d
DJ
430 frame = get_prev_frame (frame);
431
432 return frame;
433}
434
194cca41
PA
435/* Compute the frame's uniq ID that can be used to, later, re-find the
436 frame. */
437
438static void
439compute_frame_id (struct frame_info *fi)
440{
441 gdb_assert (!fi->this_id.p);
442
443 if (frame_debug)
444 fprintf_unfiltered (gdb_stdlog, "{ compute_frame_id (fi=%d) ",
445 fi->level);
446 /* Find the unwinder. */
447 if (fi->unwind == NULL)
448 frame_unwind_find_by_frame (fi, &fi->prologue_cache);
449 /* Find THIS frame's ID. */
450 /* Default to outermost if no ID is found. */
451 fi->this_id.value = outer_frame_id;
452 fi->unwind->this_id (fi, &fi->prologue_cache, &fi->this_id.value);
453 gdb_assert (frame_id_p (fi->this_id.value));
454 fi->this_id.p = 1;
455 if (frame_debug)
456 {
457 fprintf_unfiltered (gdb_stdlog, "-> ");
458 fprint_frame_id (gdb_stdlog, fi->this_id.value);
459 fprintf_unfiltered (gdb_stdlog, " }\n");
460 }
461}
462
7a424e99 463/* Return a frame uniq ID that can be used to, later, re-find the
101dcfbe
AC
464 frame. */
465
7a424e99
AC
466struct frame_id
467get_frame_id (struct frame_info *fi)
101dcfbe
AC
468{
469 if (fi == NULL)
b83e9eb7
JB
470 return null_frame_id;
471
194cca41 472 gdb_assert (fi->this_id.p);
18adea3f 473 return fi->this_id.value;
101dcfbe
AC
474}
475
edb3359d
DJ
476struct frame_id
477get_stack_frame_id (struct frame_info *next_frame)
478{
193facb3 479 return get_frame_id (skip_artificial_frames (next_frame));
edb3359d
DJ
480}
481
5613d8d3 482struct frame_id
c7ce8faa 483frame_unwind_caller_id (struct frame_info *next_frame)
5613d8d3 484{
edb3359d
DJ
485 struct frame_info *this_frame;
486
487 /* Use get_prev_frame_1, and not get_prev_frame. The latter will truncate
5613d8d3
AC
488 the frame chain, leading to this function unintentionally
489 returning a null_frame_id (e.g., when a caller requests the frame
490 ID of "main()"s caller. */
edb3359d 491
193facb3 492 next_frame = skip_artificial_frames (next_frame);
edb3359d
DJ
493 this_frame = get_prev_frame_1 (next_frame);
494 if (this_frame)
193facb3 495 return get_frame_id (skip_artificial_frames (this_frame));
edb3359d
DJ
496 else
497 return null_frame_id;
5613d8d3
AC
498}
499
7a424e99 500const struct frame_id null_frame_id; /* All zeros. */
5ce0145d 501const struct frame_id outer_frame_id = { 0, 0, 0, FID_STACK_INVALID, 0, 1, 0 };
7a424e99
AC
502
503struct frame_id
48c66725
JJ
504frame_id_build_special (CORE_ADDR stack_addr, CORE_ADDR code_addr,
505 CORE_ADDR special_addr)
7a424e99 506{
12b0b6de 507 struct frame_id id = null_frame_id;
1c4d3f96 508
d0a55772 509 id.stack_addr = stack_addr;
5ce0145d 510 id.stack_status = FID_STACK_VALID;
d0a55772 511 id.code_addr = code_addr;
12b0b6de 512 id.code_addr_p = 1;
48c66725 513 id.special_addr = special_addr;
12b0b6de 514 id.special_addr_p = 1;
7a424e99
AC
515 return id;
516}
517
5ce0145d
PA
518/* See frame.h. */
519
520struct frame_id
521frame_id_build_unavailable_stack (CORE_ADDR code_addr)
522{
523 struct frame_id id = null_frame_id;
524
525 id.stack_status = FID_STACK_UNAVAILABLE;
526 id.code_addr = code_addr;
527 id.code_addr_p = 1;
528 return id;
529}
530
8372a7cb
MM
531/* See frame.h. */
532
533struct frame_id
534frame_id_build_unavailable_stack_special (CORE_ADDR code_addr,
535 CORE_ADDR special_addr)
536{
537 struct frame_id id = null_frame_id;
538
539 id.stack_status = FID_STACK_UNAVAILABLE;
540 id.code_addr = code_addr;
541 id.code_addr_p = 1;
542 id.special_addr = special_addr;
543 id.special_addr_p = 1;
544 return id;
545}
546
48c66725
JJ
547struct frame_id
548frame_id_build (CORE_ADDR stack_addr, CORE_ADDR code_addr)
549{
12b0b6de 550 struct frame_id id = null_frame_id;
1c4d3f96 551
12b0b6de 552 id.stack_addr = stack_addr;
5ce0145d 553 id.stack_status = FID_STACK_VALID;
12b0b6de
UW
554 id.code_addr = code_addr;
555 id.code_addr_p = 1;
556 return id;
557}
558
559struct frame_id
560frame_id_build_wild (CORE_ADDR stack_addr)
561{
562 struct frame_id id = null_frame_id;
1c4d3f96 563
12b0b6de 564 id.stack_addr = stack_addr;
5ce0145d 565 id.stack_status = FID_STACK_VALID;
12b0b6de 566 return id;
48c66725
JJ
567}
568
7a424e99
AC
569int
570frame_id_p (struct frame_id l)
571{
d0a55772 572 int p;
1c4d3f96 573
12b0b6de 574 /* The frame is valid iff it has a valid stack address. */
5ce0145d 575 p = l.stack_status != FID_STACK_INVALID;
005ca36a
JB
576 /* outer_frame_id is also valid. */
577 if (!p && memcmp (&l, &outer_frame_id, sizeof (l)) == 0)
578 p = 1;
7f78e237
AC
579 if (frame_debug)
580 {
581 fprintf_unfiltered (gdb_stdlog, "{ frame_id_p (l=");
582 fprint_frame_id (gdb_stdlog, l);
583 fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", p);
584 }
d0a55772 585 return p;
7a424e99
AC
586}
587
edb3359d 588int
193facb3 589frame_id_artificial_p (struct frame_id l)
edb3359d
DJ
590{
591 if (!frame_id_p (l))
592 return 0;
593
193facb3 594 return (l.artificial_depth != 0);
edb3359d
DJ
595}
596
7a424e99
AC
597int
598frame_id_eq (struct frame_id l, struct frame_id r)
599{
d0a55772 600 int eq;
1c4d3f96 601
5ce0145d
PA
602 if (l.stack_status == FID_STACK_INVALID && l.special_addr_p
603 && r.stack_status == FID_STACK_INVALID && r.special_addr_p)
005ca36a
JB
604 /* The outermost frame marker is equal to itself. This is the
605 dodgy thing about outer_frame_id, since between execution steps
606 we might step into another function - from which we can't
607 unwind either. More thought required to get rid of
608 outer_frame_id. */
609 eq = 1;
5ce0145d
PA
610 else if (l.stack_status == FID_STACK_INVALID
611 || l.stack_status == FID_STACK_INVALID)
12b0b6de
UW
612 /* Like a NaN, if either ID is invalid, the result is false.
613 Note that a frame ID is invalid iff it is the null frame ID. */
d0a55772 614 eq = 0;
5ce0145d 615 else if (l.stack_status != r.stack_status || l.stack_addr != r.stack_addr)
d0a55772
AC
616 /* If .stack addresses are different, the frames are different. */
617 eq = 0;
edb3359d
DJ
618 else if (l.code_addr_p && r.code_addr_p && l.code_addr != r.code_addr)
619 /* An invalid code addr is a wild card. If .code addresses are
620 different, the frames are different. */
48c66725 621 eq = 0;
edb3359d
DJ
622 else if (l.special_addr_p && r.special_addr_p
623 && l.special_addr != r.special_addr)
624 /* An invalid special addr is a wild card (or unused). Otherwise
625 if special addresses are different, the frames are different. */
626 eq = 0;
193facb3
JK
627 else if (l.artificial_depth != r.artificial_depth)
628 /* If artifical depths are different, the frames must be different. */
edb3359d
DJ
629 eq = 0;
630 else
48c66725 631 /* Frames are equal. */
d0a55772 632 eq = 1;
edb3359d 633
7f78e237
AC
634 if (frame_debug)
635 {
636 fprintf_unfiltered (gdb_stdlog, "{ frame_id_eq (l=");
637 fprint_frame_id (gdb_stdlog, l);
638 fprintf_unfiltered (gdb_stdlog, ",r=");
639 fprint_frame_id (gdb_stdlog, r);
640 fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", eq);
641 }
d0a55772 642 return eq;
7a424e99
AC
643}
644
a45ae3ed
UW
645/* Safety net to check whether frame ID L should be inner to
646 frame ID R, according to their stack addresses.
647
648 This method cannot be used to compare arbitrary frames, as the
649 ranges of valid stack addresses may be discontiguous (e.g. due
650 to sigaltstack).
651
652 However, it can be used as safety net to discover invalid frame
0963b4bd 653 IDs in certain circumstances. Assuming that NEXT is the immediate
f06eadd9 654 inner frame to THIS and that NEXT and THIS are both NORMAL frames:
a45ae3ed 655
f06eadd9
JB
656 * The stack address of NEXT must be inner-than-or-equal to the stack
657 address of THIS.
a45ae3ed
UW
658
659 Therefore, if frame_id_inner (THIS, NEXT) holds, some unwind
660 error has occurred.
661
f06eadd9
JB
662 * If NEXT and THIS have different stack addresses, no other frame
663 in the frame chain may have a stack address in between.
a45ae3ed
UW
664
665 Therefore, if frame_id_inner (TEST, THIS) holds, but
666 frame_id_inner (TEST, NEXT) does not hold, TEST cannot refer
f06eadd9
JB
667 to a valid frame in the frame chain.
668
669 The sanity checks above cannot be performed when a SIGTRAMP frame
670 is involved, because signal handlers might be executed on a different
671 stack than the stack used by the routine that caused the signal
672 to be raised. This can happen for instance when a thread exceeds
0963b4bd 673 its maximum stack size. In this case, certain compilers implement
f06eadd9
JB
674 a stack overflow strategy that cause the handler to be run on a
675 different stack. */
a45ae3ed
UW
676
677static int
09a7aba8 678frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r)
7a424e99 679{
d0a55772 680 int inner;
1c4d3f96 681
5ce0145d
PA
682 if (l.stack_status != FID_STACK_VALID || r.stack_status != FID_STACK_VALID)
683 /* Like NaN, any operation involving an invalid ID always fails.
684 Likewise if either ID has an unavailable stack address. */
d0a55772 685 inner = 0;
193facb3 686 else if (l.artificial_depth > r.artificial_depth
edb3359d
DJ
687 && l.stack_addr == r.stack_addr
688 && l.code_addr_p == r.code_addr_p
689 && l.special_addr_p == r.special_addr_p
690 && l.special_addr == r.special_addr)
691 {
692 /* Same function, different inlined functions. */
693 struct block *lb, *rb;
694
695 gdb_assert (l.code_addr_p && r.code_addr_p);
696
697 lb = block_for_pc (l.code_addr);
698 rb = block_for_pc (r.code_addr);
699
700 if (lb == NULL || rb == NULL)
701 /* Something's gone wrong. */
702 inner = 0;
703 else
704 /* This will return true if LB and RB are the same block, or
705 if the block with the smaller depth lexically encloses the
706 block with the greater depth. */
707 inner = contained_in (lb, rb);
708 }
d0a55772
AC
709 else
710 /* Only return non-zero when strictly inner than. Note that, per
711 comment in "frame.h", there is some fuzz here. Frameless
712 functions are not strictly inner than (same .stack but
48c66725 713 different .code and/or .special address). */
09a7aba8 714 inner = gdbarch_inner_than (gdbarch, l.stack_addr, r.stack_addr);
7f78e237
AC
715 if (frame_debug)
716 {
717 fprintf_unfiltered (gdb_stdlog, "{ frame_id_inner (l=");
718 fprint_frame_id (gdb_stdlog, l);
719 fprintf_unfiltered (gdb_stdlog, ",r=");
720 fprint_frame_id (gdb_stdlog, r);
721 fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", inner);
722 }
d0a55772 723 return inner;
7a424e99
AC
724}
725
101dcfbe
AC
726struct frame_info *
727frame_find_by_id (struct frame_id id)
728{
a45ae3ed 729 struct frame_info *frame, *prev_frame;
101dcfbe
AC
730
731 /* ZERO denotes the null frame, let the caller decide what to do
732 about it. Should it instead return get_current_frame()? */
7a424e99 733 if (!frame_id_p (id))
101dcfbe
AC
734 return NULL;
735
b83e9eb7
JB
736 /* Try using the frame stash first. Finding it there removes the need
737 to perform the search by looping over all frames, which can be very
738 CPU-intensive if the number of frames is very high (the loop is O(n)
739 and get_prev_frame performs a series of checks that are relatively
740 expensive). This optimization is particularly useful when this function
741 is called from another function (such as value_fetch_lazy, case
742 VALUE_LVAL (val) == lval_register) which already loops over all frames,
743 making the overall behavior O(n^2). */
744 frame = frame_stash_find (id);
745 if (frame)
746 return frame;
747
a45ae3ed 748 for (frame = get_current_frame (); ; frame = prev_frame)
101dcfbe 749 {
7a424e99 750 struct frame_id this = get_frame_id (frame);
bb9bcb69 751
7a424e99
AC
752 if (frame_id_eq (id, this))
753 /* An exact match. */
754 return frame;
a45ae3ed
UW
755
756 prev_frame = get_prev_frame (frame);
757 if (!prev_frame)
758 return NULL;
759
760 /* As a safety net to avoid unnecessary backtracing while trying
761 to find an invalid ID, we check for a common situation where
762 we can detect from comparing stack addresses that no other
763 frame in the current frame chain can have this ID. See the
764 comment at frame_id_inner for details. */
765 if (get_frame_type (frame) == NORMAL_FRAME
766 && !frame_id_inner (get_frame_arch (frame), id, this)
767 && frame_id_inner (get_frame_arch (prev_frame), id,
768 get_frame_id (prev_frame)))
101dcfbe 769 return NULL;
101dcfbe
AC
770 }
771 return NULL;
772}
773
782d47df
PA
774static CORE_ADDR
775frame_unwind_pc (struct frame_info *this_frame)
f18c5a73 776{
782d47df 777 if (this_frame->prev_pc.status == CC_UNKNOWN)
f18c5a73 778 {
36f15f55 779 if (gdbarch_unwind_pc_p (frame_unwind_arch (this_frame)))
12cc2063 780 {
e3eebbd7
PA
781 volatile struct gdb_exception ex;
782 struct gdbarch *prev_gdbarch;
783 CORE_ADDR pc = 0;
784
12cc2063
AC
785 /* The right way. The `pure' way. The one true way. This
786 method depends solely on the register-unwind code to
787 determine the value of registers in THIS frame, and hence
788 the value of this frame's PC (resume address). A typical
789 implementation is no more than:
790
791 frame_unwind_register (this_frame, ISA_PC_REGNUM, buf);
af1342ab 792 return extract_unsigned_integer (buf, size of ISA_PC_REGNUM);
12cc2063
AC
793
794 Note: this method is very heavily dependent on a correct
795 register-unwind implementation, it pays to fix that
796 method first; this method is frame type agnostic, since
797 it only deals with register values, it works with any
798 frame. This is all in stark contrast to the old
799 FRAME_SAVED_PC which would try to directly handle all the
800 different ways that a PC could be unwound. */
e3eebbd7
PA
801 prev_gdbarch = frame_unwind_arch (this_frame);
802
803 TRY_CATCH (ex, RETURN_MASK_ERROR)
804 {
805 pc = gdbarch_unwind_pc (prev_gdbarch, this_frame);
806 }
782d47df 807 if (ex.reason < 0)
e3eebbd7 808 {
782d47df
PA
809 if (ex.error == NOT_AVAILABLE_ERROR)
810 {
811 this_frame->prev_pc.status = CC_UNAVAILABLE;
812
813 if (frame_debug)
814 fprintf_unfiltered (gdb_stdlog,
815 "{ frame_unwind_pc (this_frame=%d)"
816 " -> <unavailable> }\n",
817 this_frame->level);
818 }
819 else if (ex.error == OPTIMIZED_OUT_ERROR)
820 {
821 this_frame->prev_pc.status = CC_NOT_SAVED;
822
823 if (frame_debug)
824 fprintf_unfiltered (gdb_stdlog,
825 "{ frame_unwind_pc (this_frame=%d)"
826 " -> <not saved> }\n",
827 this_frame->level);
828 }
829 else
830 throw_exception (ex);
e3eebbd7
PA
831 }
832 else
833 {
834 this_frame->prev_pc.value = pc;
782d47df 835 this_frame->prev_pc.status = CC_VALUE;
e3eebbd7
PA
836 if (frame_debug)
837 fprintf_unfiltered (gdb_stdlog,
838 "{ frame_unwind_pc (this_frame=%d) "
839 "-> %s }\n",
840 this_frame->level,
841 hex_string (this_frame->prev_pc.value));
842 }
12cc2063 843 }
12cc2063 844 else
e2e0b3e5 845 internal_error (__FILE__, __LINE__, _("No unwind_pc method"));
f18c5a73 846 }
e3eebbd7 847
782d47df
PA
848 if (this_frame->prev_pc.status == CC_VALUE)
849 return this_frame->prev_pc.value;
850 else if (this_frame->prev_pc.status == CC_UNAVAILABLE)
e3eebbd7 851 throw_error (NOT_AVAILABLE_ERROR, _("PC not available"));
782d47df
PA
852 else if (this_frame->prev_pc.status == CC_NOT_SAVED)
853 throw_error (OPTIMIZED_OUT_ERROR, _("PC not saved"));
e3eebbd7 854 else
782d47df
PA
855 internal_error (__FILE__, __LINE__,
856 "unexpected prev_pc status: %d",
857 (int) this_frame->prev_pc.status);
f18c5a73
AC
858}
859
edb3359d
DJ
860CORE_ADDR
861frame_unwind_caller_pc (struct frame_info *this_frame)
862{
193facb3 863 return frame_unwind_pc (skip_artificial_frames (this_frame));
edb3359d
DJ
864}
865
e3eebbd7
PA
866int
867get_frame_func_if_available (struct frame_info *this_frame, CORE_ADDR *pc)
be41e9f4 868{
ef02daa9
DJ
869 struct frame_info *next_frame = this_frame->next;
870
871 if (!next_frame->prev_func.p)
be41e9f4 872 {
e3eebbd7
PA
873 CORE_ADDR addr_in_block;
874
57bfe177
AC
875 /* Make certain that this, and not the adjacent, function is
876 found. */
e3eebbd7
PA
877 if (!get_frame_address_in_block_if_available (this_frame, &addr_in_block))
878 {
879 next_frame->prev_func.p = -1;
880 if (frame_debug)
881 fprintf_unfiltered (gdb_stdlog,
882 "{ get_frame_func (this_frame=%d)"
883 " -> unavailable }\n",
884 this_frame->level);
885 }
886 else
887 {
888 next_frame->prev_func.p = 1;
889 next_frame->prev_func.addr = get_pc_function_start (addr_in_block);
890 if (frame_debug)
891 fprintf_unfiltered (gdb_stdlog,
892 "{ get_frame_func (this_frame=%d) -> %s }\n",
893 this_frame->level,
894 hex_string (next_frame->prev_func.addr));
895 }
be41e9f4 896 }
e3eebbd7
PA
897
898 if (next_frame->prev_func.p < 0)
899 {
900 *pc = -1;
901 return 0;
902 }
903 else
904 {
905 *pc = next_frame->prev_func.addr;
906 return 1;
907 }
908}
909
910CORE_ADDR
911get_frame_func (struct frame_info *this_frame)
912{
913 CORE_ADDR pc;
914
915 if (!get_frame_func_if_available (this_frame, &pc))
916 throw_error (NOT_AVAILABLE_ERROR, _("PC not available"));
917
918 return pc;
be41e9f4
AC
919}
920
05d1431c 921static enum register_status
2d522557 922do_frame_register_read (void *src, int regnum, gdb_byte *buf)
7a25a7c1 923{
ca9d61b9 924 if (!deprecated_frame_register_read (src, regnum, buf))
05d1431c
PA
925 return REG_UNAVAILABLE;
926 else
927 return REG_VALID;
7a25a7c1
AC
928}
929
a81dcb05
AC
930struct regcache *
931frame_save_as_regcache (struct frame_info *this_frame)
932{
d37346f0
DJ
933 struct address_space *aspace = get_frame_address_space (this_frame);
934 struct regcache *regcache = regcache_xmalloc (get_frame_arch (this_frame),
935 aspace);
a81dcb05 936 struct cleanup *cleanups = make_cleanup_regcache_xfree (regcache);
1c4d3f96 937
a81dcb05
AC
938 regcache_save (regcache, do_frame_register_read, this_frame);
939 discard_cleanups (cleanups);
940 return regcache;
941}
942
dbe9fe58 943void
7a25a7c1
AC
944frame_pop (struct frame_info *this_frame)
945{
348473d5
NF
946 struct frame_info *prev_frame;
947 struct regcache *scratch;
948 struct cleanup *cleanups;
949
b89667eb
DE
950 if (get_frame_type (this_frame) == DUMMY_FRAME)
951 {
952 /* Popping a dummy frame involves restoring more than just registers.
953 dummy_frame_pop does all the work. */
954 dummy_frame_pop (get_frame_id (this_frame));
955 return;
956 }
957
348473d5
NF
958 /* Ensure that we have a frame to pop to. */
959 prev_frame = get_prev_frame_1 (this_frame);
960
961 if (!prev_frame)
962 error (_("Cannot pop the initial frame."));
963
1ab3b62c
JK
964 /* Ignore TAILCALL_FRAME type frames, they were executed already before
965 entering THISFRAME. */
966 while (get_frame_type (prev_frame) == TAILCALL_FRAME)
967 prev_frame = get_prev_frame (prev_frame);
968
c1bf6f65
AC
969 /* Make a copy of all the register values unwound from this frame.
970 Save them in a scratch buffer so that there isn't a race between
594f7785 971 trying to extract the old values from the current regcache while
c1bf6f65 972 at the same time writing new values into that same cache. */
348473d5
NF
973 scratch = frame_save_as_regcache (prev_frame);
974 cleanups = make_cleanup_regcache_xfree (scratch);
c1bf6f65
AC
975
976 /* FIXME: cagney/2003-03-16: It should be possible to tell the
977 target's register cache that it is about to be hit with a burst
978 register transfer and that the sequence of register writes should
979 be batched. The pair target_prepare_to_store() and
980 target_store_registers() kind of suggest this functionality.
981 Unfortunately, they don't implement it. Their lack of a formal
982 definition can lead to targets writing back bogus values
983 (arguably a bug in the target code mind). */
984 /* Now copy those saved registers into the current regcache.
985 Here, regcache_cpy() calls regcache_restore(). */
594f7785 986 regcache_cpy (get_current_regcache (), scratch);
c1bf6f65 987 do_cleanups (cleanups);
7a25a7c1 988
7a25a7c1
AC
989 /* We've made right mess of GDB's local state, just discard
990 everything. */
35f196d9 991 reinit_frame_cache ();
dbe9fe58 992}
c689142b 993
4f460812
AC
994void
995frame_register_unwind (struct frame_info *frame, int regnum,
0fdb4f18
PA
996 int *optimizedp, int *unavailablep,
997 enum lval_type *lvalp, CORE_ADDR *addrp,
998 int *realnump, gdb_byte *bufferp)
4f460812 999{
669fac23 1000 struct value *value;
7f78e237 1001
4f460812
AC
1002 /* Require all but BUFFERP to be valid. A NULL BUFFERP indicates
1003 that the value proper does not need to be fetched. */
1004 gdb_assert (optimizedp != NULL);
1005 gdb_assert (lvalp != NULL);
1006 gdb_assert (addrp != NULL);
1007 gdb_assert (realnump != NULL);
1008 /* gdb_assert (bufferp != NULL); */
1009
669fac23 1010 value = frame_unwind_register_value (frame, regnum);
4f460812 1011
669fac23 1012 gdb_assert (value != NULL);
c50901fd 1013
669fac23 1014 *optimizedp = value_optimized_out (value);
0fdb4f18 1015 *unavailablep = !value_entirely_available (value);
669fac23 1016 *lvalp = VALUE_LVAL (value);
42ae5230 1017 *addrp = value_address (value);
669fac23 1018 *realnump = VALUE_REGNUM (value);
6dc42492 1019
0fdb4f18
PA
1020 if (bufferp)
1021 {
1022 if (!*optimizedp && !*unavailablep)
1023 memcpy (bufferp, value_contents_all (value),
1024 TYPE_LENGTH (value_type (value)));
1025 else
1026 memset (bufferp, 0, TYPE_LENGTH (value_type (value)));
1027 }
669fac23
DJ
1028
1029 /* Dispose of the new value. This prevents watchpoints from
1030 trying to watch the saved frame pointer. */
1031 release_value (value);
1032 value_free (value);
4f460812
AC
1033}
1034
a216a322
AC
1035void
1036frame_register (struct frame_info *frame, int regnum,
0fdb4f18 1037 int *optimizedp, int *unavailablep, enum lval_type *lvalp,
10c42a71 1038 CORE_ADDR *addrp, int *realnump, gdb_byte *bufferp)
a216a322
AC
1039{
1040 /* Require all but BUFFERP to be valid. A NULL BUFFERP indicates
1041 that the value proper does not need to be fetched. */
1042 gdb_assert (optimizedp != NULL);
1043 gdb_assert (lvalp != NULL);
1044 gdb_assert (addrp != NULL);
1045 gdb_assert (realnump != NULL);
1046 /* gdb_assert (bufferp != NULL); */
1047
a94dd1fd
AC
1048 /* Obtain the register value by unwinding the register from the next
1049 (more inner frame). */
1050 gdb_assert (frame != NULL && frame->next != NULL);
0fdb4f18
PA
1051 frame_register_unwind (frame->next, regnum, optimizedp, unavailablep,
1052 lvalp, addrp, realnump, bufferp);
a216a322
AC
1053}
1054
135c175f 1055void
10c42a71 1056frame_unwind_register (struct frame_info *frame, int regnum, gdb_byte *buf)
135c175f
AC
1057{
1058 int optimized;
0fdb4f18 1059 int unavailable;
135c175f
AC
1060 CORE_ADDR addr;
1061 int realnum;
1062 enum lval_type lval;
1c4d3f96 1063
0fdb4f18
PA
1064 frame_register_unwind (frame, regnum, &optimized, &unavailable,
1065 &lval, &addr, &realnum, buf);
8fbca658
PA
1066
1067 if (optimized)
710409a2
PA
1068 throw_error (OPTIMIZED_OUT_ERROR,
1069 _("Register %d was not saved"), regnum);
8fbca658
PA
1070 if (unavailable)
1071 throw_error (NOT_AVAILABLE_ERROR,
1072 _("Register %d is not available"), regnum);
5b181d62
AC
1073}
1074
f0e7d0e8
AC
1075void
1076get_frame_register (struct frame_info *frame,
10c42a71 1077 int regnum, gdb_byte *buf)
f0e7d0e8
AC
1078{
1079 frame_unwind_register (frame->next, regnum, buf);
1080}
1081
669fac23
DJ
1082struct value *
1083frame_unwind_register_value (struct frame_info *frame, int regnum)
1084{
36f15f55 1085 struct gdbarch *gdbarch;
669fac23
DJ
1086 struct value *value;
1087
1088 gdb_assert (frame != NULL);
36f15f55 1089 gdbarch = frame_unwind_arch (frame);
669fac23
DJ
1090
1091 if (frame_debug)
1092 {
3e43a32a
MS
1093 fprintf_unfiltered (gdb_stdlog,
1094 "{ frame_unwind_register_value "
1095 "(frame=%d,regnum=%d(%s),...) ",
669fac23 1096 frame->level, regnum,
36f15f55 1097 user_reg_map_regnum_to_name (gdbarch, regnum));
669fac23
DJ
1098 }
1099
1100 /* Find the unwinder. */
1101 if (frame->unwind == NULL)
9f9a8002 1102 frame_unwind_find_by_frame (frame, &frame->prologue_cache);
669fac23
DJ
1103
1104 /* Ask this frame to unwind its register. */
1105 value = frame->unwind->prev_register (frame, &frame->prologue_cache, regnum);
1106
1107 if (frame_debug)
1108 {
1109 fprintf_unfiltered (gdb_stdlog, "->");
1110 if (value_optimized_out (value))
f6c01fc5
AB
1111 {
1112 fprintf_unfiltered (gdb_stdlog, " ");
1113 val_print_optimized_out (value, gdb_stdlog);
1114 }
669fac23
DJ
1115 else
1116 {
1117 if (VALUE_LVAL (value) == lval_register)
1118 fprintf_unfiltered (gdb_stdlog, " register=%d",
1119 VALUE_REGNUM (value));
1120 else if (VALUE_LVAL (value) == lval_memory)
5af949e3
UW
1121 fprintf_unfiltered (gdb_stdlog, " address=%s",
1122 paddress (gdbarch,
1123 value_address (value)));
669fac23
DJ
1124 else
1125 fprintf_unfiltered (gdb_stdlog, " computed");
1126
1127 if (value_lazy (value))
1128 fprintf_unfiltered (gdb_stdlog, " lazy");
1129 else
1130 {
1131 int i;
1132 const gdb_byte *buf = value_contents (value);
1133
1134 fprintf_unfiltered (gdb_stdlog, " bytes=");
1135 fprintf_unfiltered (gdb_stdlog, "[");
36f15f55 1136 for (i = 0; i < register_size (gdbarch, regnum); i++)
669fac23
DJ
1137 fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
1138 fprintf_unfiltered (gdb_stdlog, "]");
1139 }
1140 }
1141
1142 fprintf_unfiltered (gdb_stdlog, " }\n");
1143 }
1144
1145 return value;
1146}
1147
1148struct value *
1149get_frame_register_value (struct frame_info *frame, int regnum)
1150{
1151 return frame_unwind_register_value (frame->next, regnum);
1152}
1153
f0e7d0e8
AC
1154LONGEST
1155frame_unwind_register_signed (struct frame_info *frame, int regnum)
1156{
e17a4113
UW
1157 struct gdbarch *gdbarch = frame_unwind_arch (frame);
1158 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1159 int size = register_size (gdbarch, regnum);
10c42a71 1160 gdb_byte buf[MAX_REGISTER_SIZE];
1c4d3f96 1161
f0e7d0e8 1162 frame_unwind_register (frame, regnum, buf);
e17a4113 1163 return extract_signed_integer (buf, size, byte_order);
f0e7d0e8
AC
1164}
1165
1166LONGEST
1167get_frame_register_signed (struct frame_info *frame, int regnum)
1168{
1169 return frame_unwind_register_signed (frame->next, regnum);
1170}
1171
1172ULONGEST
1173frame_unwind_register_unsigned (struct frame_info *frame, int regnum)
1174{
e17a4113
UW
1175 struct gdbarch *gdbarch = frame_unwind_arch (frame);
1176 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1177 int size = register_size (gdbarch, regnum);
10c42a71 1178 gdb_byte buf[MAX_REGISTER_SIZE];
1c4d3f96 1179
f0e7d0e8 1180 frame_unwind_register (frame, regnum, buf);
e17a4113 1181 return extract_unsigned_integer (buf, size, byte_order);
f0e7d0e8
AC
1182}
1183
1184ULONGEST
1185get_frame_register_unsigned (struct frame_info *frame, int regnum)
1186{
1187 return frame_unwind_register_unsigned (frame->next, regnum);
1188}
1189
ad5f7d6e
PA
1190int
1191read_frame_register_unsigned (struct frame_info *frame, int regnum,
1192 ULONGEST *val)
1193{
1194 struct value *regval = get_frame_register_value (frame, regnum);
1195
1196 if (!value_optimized_out (regval)
1197 && value_entirely_available (regval))
1198 {
1199 struct gdbarch *gdbarch = get_frame_arch (frame);
1200 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1201 int size = register_size (gdbarch, VALUE_REGNUM (regval));
1202
1203 *val = extract_unsigned_integer (value_contents (regval), size, byte_order);
1204 return 1;
1205 }
1206
1207 return 0;
1208}
1209
ff2e87ac 1210void
10c42a71
AC
1211put_frame_register (struct frame_info *frame, int regnum,
1212 const gdb_byte *buf)
ff2e87ac
AC
1213{
1214 struct gdbarch *gdbarch = get_frame_arch (frame);
1215 int realnum;
1216 int optim;
0fdb4f18 1217 int unavail;
ff2e87ac
AC
1218 enum lval_type lval;
1219 CORE_ADDR addr;
1c4d3f96 1220
0fdb4f18
PA
1221 frame_register (frame, regnum, &optim, &unavail,
1222 &lval, &addr, &realnum, NULL);
ff2e87ac 1223 if (optim)
901461f8 1224 error (_("Attempt to assign to a register that was not saved."));
ff2e87ac
AC
1225 switch (lval)
1226 {
1227 case lval_memory:
1228 {
954b50b3 1229 write_memory (addr, buf, register_size (gdbarch, regnum));
ff2e87ac
AC
1230 break;
1231 }
1232 case lval_register:
594f7785 1233 regcache_cooked_write (get_current_regcache (), realnum, buf);
ff2e87ac
AC
1234 break;
1235 default:
8a3fe4f8 1236 error (_("Attempt to assign to an unmodifiable value."));
ff2e87ac
AC
1237 }
1238}
1239
b2c7d45a
JB
1240/* This function is deprecated. Use get_frame_register_value instead,
1241 which provides more accurate information.
d65fe839 1242
cda5a58a 1243 Find and return the value of REGNUM for the specified stack frame.
5bc602c7 1244 The number of bytes copied is REGISTER_SIZE (REGNUM).
d65fe839 1245
cda5a58a 1246 Returns 0 if the register value could not be found. */
d65fe839 1247
cda5a58a 1248int
ca9d61b9 1249deprecated_frame_register_read (struct frame_info *frame, int regnum,
10c42a71 1250 gdb_byte *myaddr)
d65fe839 1251{
a216a322 1252 int optimized;
0fdb4f18 1253 int unavailable;
a216a322
AC
1254 enum lval_type lval;
1255 CORE_ADDR addr;
1256 int realnum;
1c4d3f96 1257
0fdb4f18
PA
1258 frame_register (frame, regnum, &optimized, &unavailable,
1259 &lval, &addr, &realnum, myaddr);
d65fe839 1260
0fdb4f18 1261 return !optimized && !unavailable;
d65fe839 1262}
e36180d7 1263
00fa51f6
UW
1264int
1265get_frame_register_bytes (struct frame_info *frame, int regnum,
8dccd430
PA
1266 CORE_ADDR offset, int len, gdb_byte *myaddr,
1267 int *optimizedp, int *unavailablep)
00fa51f6
UW
1268{
1269 struct gdbarch *gdbarch = get_frame_arch (frame);
3f27f2a4
AS
1270 int i;
1271 int maxsize;
68e007ca 1272 int numregs;
00fa51f6
UW
1273
1274 /* Skip registers wholly inside of OFFSET. */
1275 while (offset >= register_size (gdbarch, regnum))
1276 {
1277 offset -= register_size (gdbarch, regnum);
1278 regnum++;
1279 }
1280
26fae1d6
AS
1281 /* Ensure that we will not read beyond the end of the register file.
1282 This can only ever happen if the debug information is bad. */
3f27f2a4 1283 maxsize = -offset;
68e007ca
AS
1284 numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
1285 for (i = regnum; i < numregs; i++)
3f27f2a4
AS
1286 {
1287 int thissize = register_size (gdbarch, i);
bb9bcb69 1288
3f27f2a4 1289 if (thissize == 0)
26fae1d6 1290 break; /* This register is not available on this architecture. */
3f27f2a4
AS
1291 maxsize += thissize;
1292 }
1293 if (len > maxsize)
8dccd430
PA
1294 error (_("Bad debug information detected: "
1295 "Attempt to read %d bytes from registers."), len);
3f27f2a4 1296
00fa51f6
UW
1297 /* Copy the data. */
1298 while (len > 0)
1299 {
1300 int curr_len = register_size (gdbarch, regnum) - offset;
bb9bcb69 1301
00fa51f6
UW
1302 if (curr_len > len)
1303 curr_len = len;
1304
1305 if (curr_len == register_size (gdbarch, regnum))
1306 {
8dccd430
PA
1307 enum lval_type lval;
1308 CORE_ADDR addr;
1309 int realnum;
1310
1311 frame_register (frame, regnum, optimizedp, unavailablep,
1312 &lval, &addr, &realnum, myaddr);
1313 if (*optimizedp || *unavailablep)
00fa51f6
UW
1314 return 0;
1315 }
1316 else
1317 {
1318 gdb_byte buf[MAX_REGISTER_SIZE];
8dccd430
PA
1319 enum lval_type lval;
1320 CORE_ADDR addr;
1321 int realnum;
bb9bcb69 1322
8dccd430
PA
1323 frame_register (frame, regnum, optimizedp, unavailablep,
1324 &lval, &addr, &realnum, buf);
1325 if (*optimizedp || *unavailablep)
00fa51f6
UW
1326 return 0;
1327 memcpy (myaddr, buf + offset, curr_len);
1328 }
1329
765f065a 1330 myaddr += curr_len;
00fa51f6
UW
1331 len -= curr_len;
1332 offset = 0;
1333 regnum++;
1334 }
1335
8dccd430
PA
1336 *optimizedp = 0;
1337 *unavailablep = 0;
00fa51f6
UW
1338 return 1;
1339}
1340
1341void
1342put_frame_register_bytes (struct frame_info *frame, int regnum,
1343 CORE_ADDR offset, int len, const gdb_byte *myaddr)
1344{
1345 struct gdbarch *gdbarch = get_frame_arch (frame);
1346
1347 /* Skip registers wholly inside of OFFSET. */
1348 while (offset >= register_size (gdbarch, regnum))
1349 {
1350 offset -= register_size (gdbarch, regnum);
1351 regnum++;
1352 }
1353
1354 /* Copy the data. */
1355 while (len > 0)
1356 {
1357 int curr_len = register_size (gdbarch, regnum) - offset;
bb9bcb69 1358
00fa51f6
UW
1359 if (curr_len > len)
1360 curr_len = len;
1361
1362 if (curr_len == register_size (gdbarch, regnum))
1363 {
1364 put_frame_register (frame, regnum, myaddr);
1365 }
1366 else
1367 {
1368 gdb_byte buf[MAX_REGISTER_SIZE];
bb9bcb69 1369
ca9d61b9 1370 deprecated_frame_register_read (frame, regnum, buf);
00fa51f6
UW
1371 memcpy (buf + offset, myaddr, curr_len);
1372 put_frame_register (frame, regnum, buf);
1373 }
1374
765f065a 1375 myaddr += curr_len;
00fa51f6
UW
1376 len -= curr_len;
1377 offset = 0;
1378 regnum++;
1379 }
1380}
e36180d7 1381
a94dd1fd
AC
1382/* Create a sentinel frame. */
1383
b9362cc7 1384static struct frame_info *
6c95b8df 1385create_sentinel_frame (struct program_space *pspace, struct regcache *regcache)
a94dd1fd
AC
1386{
1387 struct frame_info *frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
1c4d3f96 1388
a94dd1fd 1389 frame->level = -1;
6c95b8df
PA
1390 frame->pspace = pspace;
1391 frame->aspace = get_regcache_aspace (regcache);
a94dd1fd
AC
1392 /* Explicitly initialize the sentinel frame's cache. Provide it
1393 with the underlying regcache. In the future additional
1394 information, such as the frame's thread will be added. */
6dc42492 1395 frame->prologue_cache = sentinel_frame_cache (regcache);
a94dd1fd 1396 /* For the moment there is only one sentinel frame implementation. */
39d7b0e2 1397 frame->unwind = &sentinel_frame_unwind;
a94dd1fd
AC
1398 /* Link this frame back to itself. The frame is self referential
1399 (the unwound PC is the same as the pc), so make it so. */
1400 frame->next = frame;
50bbdbd9
AC
1401 /* Make the sentinel frame's ID valid, but invalid. That way all
1402 comparisons with it should fail. */
d0a55772
AC
1403 frame->this_id.p = 1;
1404 frame->this_id.value = null_frame_id;
7f78e237
AC
1405 if (frame_debug)
1406 {
1407 fprintf_unfiltered (gdb_stdlog, "{ create_sentinel_frame (...) -> ");
1408 fprint_frame (gdb_stdlog, frame);
1409 fprintf_unfiltered (gdb_stdlog, " }\n");
1410 }
a94dd1fd
AC
1411 return frame;
1412}
1413
0963b4bd 1414/* Info about the innermost stack frame (contents of FP register). */
4c1e7e9d
AC
1415
1416static struct frame_info *current_frame;
1417
1418/* Cache for frame addresses already read by gdb. Valid only while
1419 inferior is stopped. Control variables for the frame cache should
1420 be local to this module. */
1421
1422static struct obstack frame_cache_obstack;
1423
1424void *
479ab5a0 1425frame_obstack_zalloc (unsigned long size)
4c1e7e9d 1426{
479ab5a0 1427 void *data = obstack_alloc (&frame_cache_obstack, size);
1c4d3f96 1428
479ab5a0
AC
1429 memset (data, 0, size);
1430 return data;
4c1e7e9d
AC
1431}
1432
a94dd1fd
AC
1433/* Return the innermost (currently executing) stack frame. This is
1434 split into two functions. The function unwind_to_current_frame()
1435 is wrapped in catch exceptions so that, even when the unwind of the
1436 sentinel frame fails, the function still returns a stack frame. */
1437
1438static int
1439unwind_to_current_frame (struct ui_out *ui_out, void *args)
1440{
1441 struct frame_info *frame = get_prev_frame (args);
1c4d3f96 1442
bbde78fa 1443 /* A sentinel frame can fail to unwind, e.g., because its PC value
a94dd1fd
AC
1444 lands in somewhere like start. */
1445 if (frame == NULL)
1446 return 1;
1447 current_frame = frame;
1448 return 0;
1449}
4c1e7e9d
AC
1450
1451struct frame_info *
1452get_current_frame (void)
1453{
0a1e1ca1
AC
1454 /* First check, and report, the lack of registers. Having GDB
1455 report "No stack!" or "No memory" when the target doesn't even
1456 have registers is very confusing. Besides, "printcmd.exp"
1457 explicitly checks that ``print $pc'' with no registers prints "No
1458 registers". */
a94dd1fd 1459 if (!target_has_registers)
8a3fe4f8 1460 error (_("No registers."));
0a1e1ca1 1461 if (!target_has_stack)
8a3fe4f8 1462 error (_("No stack."));
a94dd1fd 1463 if (!target_has_memory)
8a3fe4f8 1464 error (_("No memory."));
2ce6d6bf
SS
1465 /* Traceframes are effectively a substitute for the live inferior. */
1466 if (get_traceframe_number () < 0)
1467 {
1468 if (ptid_equal (inferior_ptid, null_ptid))
1469 error (_("No selected thread."));
1470 if (is_exited (inferior_ptid))
1471 error (_("Invalid selected thread."));
1472 if (is_executing (inferior_ptid))
1473 error (_("Target is executing."));
1474 }
8ea051c5 1475
4c1e7e9d
AC
1476 if (current_frame == NULL)
1477 {
a94dd1fd 1478 struct frame_info *sentinel_frame =
6c95b8df 1479 create_sentinel_frame (current_program_space, get_current_regcache ());
79a45e25
PA
1480 if (catch_exceptions (current_uiout, unwind_to_current_frame,
1481 sentinel_frame, RETURN_MASK_ERROR) != 0)
a94dd1fd
AC
1482 {
1483 /* Oops! Fake a current frame? Is this useful? It has a PC
1484 of zero, for instance. */
1485 current_frame = sentinel_frame;
1486 }
4c1e7e9d
AC
1487 }
1488 return current_frame;
1489}
1490
6e7f8b9c
AC
1491/* The "selected" stack frame is used by default for local and arg
1492 access. May be zero, for no selected frame. */
1493
206415a3 1494static struct frame_info *selected_frame;
6e7f8b9c 1495
9d49bdc2 1496int
8ea051c5
PA
1497has_stack_frames (void)
1498{
1499 if (!target_has_registers || !target_has_stack || !target_has_memory)
1500 return 0;
1501
861152be
LM
1502 /* Traceframes are effectively a substitute for the live inferior. */
1503 if (get_traceframe_number () < 0)
1504 {
1505 /* No current inferior, no frame. */
1506 if (ptid_equal (inferior_ptid, null_ptid))
1507 return 0;
d729566a 1508
861152be
LM
1509 /* Don't try to read from a dead thread. */
1510 if (is_exited (inferior_ptid))
1511 return 0;
d729566a 1512
861152be
LM
1513 /* ... or from a spinning thread. */
1514 if (is_executing (inferior_ptid))
1515 return 0;
1516 }
8ea051c5
PA
1517
1518 return 1;
1519}
1520
bbde78fa 1521/* Return the selected frame. Always non-NULL (unless there isn't an
6e7f8b9c
AC
1522 inferior sufficient for creating a frame) in which case an error is
1523 thrown. */
1524
1525struct frame_info *
b04f3ab4 1526get_selected_frame (const char *message)
6e7f8b9c 1527{
206415a3 1528 if (selected_frame == NULL)
b04f3ab4 1529 {
8ea051c5 1530 if (message != NULL && !has_stack_frames ())
8a3fe4f8 1531 error (("%s"), message);
b04f3ab4
AC
1532 /* Hey! Don't trust this. It should really be re-finding the
1533 last selected frame of the currently selected thread. This,
1534 though, is better than nothing. */
1535 select_frame (get_current_frame ());
1536 }
6e7f8b9c 1537 /* There is always a frame. */
206415a3
DJ
1538 gdb_assert (selected_frame != NULL);
1539 return selected_frame;
6e7f8b9c
AC
1540}
1541
eb8c0621
TT
1542/* If there is a selected frame, return it. Otherwise, return NULL. */
1543
1544struct frame_info *
1545get_selected_frame_if_set (void)
1546{
1547 return selected_frame;
1548}
1549
bbde78fa 1550/* This is a variant of get_selected_frame() which can be called when
7dd88986 1551 the inferior does not have a frame; in that case it will return
bbde78fa 1552 NULL instead of calling error(). */
7dd88986
DJ
1553
1554struct frame_info *
1555deprecated_safe_get_selected_frame (void)
1556{
8ea051c5 1557 if (!has_stack_frames ())
7dd88986 1558 return NULL;
b04f3ab4 1559 return get_selected_frame (NULL);
7dd88986
DJ
1560}
1561
6e7f8b9c
AC
1562/* Select frame FI (or NULL - to invalidate the current frame). */
1563
1564void
1565select_frame (struct frame_info *fi)
1566{
206415a3 1567 selected_frame = fi;
bbde78fa 1568 /* NOTE: cagney/2002-05-04: FI can be NULL. This occurs when the
6e7f8b9c 1569 frame is being invalidated. */
9a4105ab
AC
1570 if (deprecated_selected_frame_level_changed_hook)
1571 deprecated_selected_frame_level_changed_hook (frame_relative_level (fi));
6e7f8b9c
AC
1572
1573 /* FIXME: kseitz/2002-08-28: It would be nice to call
bbde78fa 1574 selected_frame_level_changed_event() right here, but due to limitations
6e7f8b9c 1575 in the current interfaces, we would end up flooding UIs with events
bbde78fa 1576 because select_frame() is used extensively internally.
6e7f8b9c
AC
1577
1578 Once we have frame-parameterized frame (and frame-related) commands,
1579 the event notification can be moved here, since this function will only
0963b4bd 1580 be called when the user's selected frame is being changed. */
6e7f8b9c
AC
1581
1582 /* Ensure that symbols for this frame are read in. Also, determine the
1583 source language of this frame, and switch to it if desired. */
1584 if (fi)
1585 {
e3eebbd7
PA
1586 CORE_ADDR pc;
1587
1588 /* We retrieve the frame's symtab by using the frame PC.
1589 However we cannot use the frame PC as-is, because it usually
1590 points to the instruction following the "call", which is
1591 sometimes the first instruction of another function. So we
1592 rely on get_frame_address_in_block() which provides us with a
1593 PC which is guaranteed to be inside the frame's code
1594 block. */
1595 if (get_frame_address_in_block_if_available (fi, &pc))
6e7f8b9c 1596 {
e3eebbd7
PA
1597 struct symtab *s = find_pc_symtab (pc);
1598
1599 if (s
1600 && s->language != current_language->la_language
1601 && s->language != language_unknown
1602 && language_mode == language_mode_auto)
1603 set_language (s->language);
6e7f8b9c
AC
1604 }
1605 }
1606}
e3eebbd7 1607
4c1e7e9d
AC
1608/* Create an arbitrary (i.e. address specified by user) or innermost frame.
1609 Always returns a non-NULL value. */
1610
1611struct frame_info *
1612create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
1613{
1614 struct frame_info *fi;
4c1e7e9d 1615
7f78e237
AC
1616 if (frame_debug)
1617 {
1618 fprintf_unfiltered (gdb_stdlog,
5af949e3
UW
1619 "{ create_new_frame (addr=%s, pc=%s) ",
1620 hex_string (addr), hex_string (pc));
7f78e237
AC
1621 }
1622
35d5d4ee 1623 fi = FRAME_OBSTACK_ZALLOC (struct frame_info);
4c1e7e9d 1624
3e43a32a
MS
1625 fi->next = create_sentinel_frame (current_program_space,
1626 get_current_regcache ());
7df05f2b 1627
1e275f79
PA
1628 /* Set/update this frame's cached PC value, found in the next frame.
1629 Do this before looking for this frame's unwinder. A sniffer is
1630 very likely to read this, and the corresponding unwinder is
1631 entitled to rely that the PC doesn't magically change. */
1632 fi->next->prev_pc.value = pc;
782d47df 1633 fi->next->prev_pc.status = CC_VALUE;
1e275f79 1634
6c95b8df
PA
1635 /* We currently assume that frame chain's can't cross spaces. */
1636 fi->pspace = fi->next->pspace;
1637 fi->aspace = fi->next->aspace;
1638
7df05f2b
AC
1639 /* Select/initialize both the unwind function and the frame's type
1640 based on the PC. */
9f9a8002 1641 frame_unwind_find_by_frame (fi, &fi->prologue_cache);
7df05f2b 1642
18adea3f 1643 fi->this_id.p = 1;
1e275f79 1644 fi->this_id.value = frame_id_build (addr, pc);
4c1e7e9d 1645
7f78e237
AC
1646 if (frame_debug)
1647 {
1648 fprintf_unfiltered (gdb_stdlog, "-> ");
1649 fprint_frame (gdb_stdlog, fi);
1650 fprintf_unfiltered (gdb_stdlog, " }\n");
1651 }
1652
4c1e7e9d
AC
1653 return fi;
1654}
1655
03febf99
AC
1656/* Return the frame that THIS_FRAME calls (NULL if THIS_FRAME is the
1657 innermost frame). Be careful to not fall off the bottom of the
1658 frame chain and onto the sentinel frame. */
4c1e7e9d
AC
1659
1660struct frame_info *
03febf99 1661get_next_frame (struct frame_info *this_frame)
4c1e7e9d 1662{
03febf99
AC
1663 if (this_frame->level > 0)
1664 return this_frame->next;
a94dd1fd
AC
1665 else
1666 return NULL;
4c1e7e9d
AC
1667}
1668
f4c5303c
OF
1669/* Observer for the target_changed event. */
1670
2c0b251b 1671static void
f4c5303c
OF
1672frame_observer_target_changed (struct target_ops *target)
1673{
35f196d9 1674 reinit_frame_cache ();
f4c5303c
OF
1675}
1676
4c1e7e9d
AC
1677/* Flush the entire frame cache. */
1678
1679void
35f196d9 1680reinit_frame_cache (void)
4c1e7e9d 1681{
272dfcfd
AS
1682 struct frame_info *fi;
1683
1684 /* Tear down all frame caches. */
1685 for (fi = current_frame; fi != NULL; fi = fi->prev)
1686 {
1687 if (fi->prologue_cache && fi->unwind->dealloc_cache)
1688 fi->unwind->dealloc_cache (fi, fi->prologue_cache);
1689 if (fi->base_cache && fi->base->unwind->dealloc_cache)
1690 fi->base->unwind->dealloc_cache (fi, fi->base_cache);
1691 }
1692
0963b4bd 1693 /* Since we can't really be sure what the first object allocated was. */
4c1e7e9d
AC
1694 obstack_free (&frame_cache_obstack, 0);
1695 obstack_init (&frame_cache_obstack);
1696
0d6ba1b1
DJ
1697 if (current_frame != NULL)
1698 annotate_frames_invalid ();
1699
4c1e7e9d
AC
1700 current_frame = NULL; /* Invalidate cache */
1701 select_frame (NULL);
b83e9eb7 1702 frame_stash_invalidate ();
7f78e237 1703 if (frame_debug)
35f196d9 1704 fprintf_unfiltered (gdb_stdlog, "{ reinit_frame_cache () }\n");
4c1e7e9d
AC
1705}
1706
e48af409
DJ
1707/* Find where a register is saved (in memory or another register).
1708 The result of frame_register_unwind is just where it is saved
5efde112 1709 relative to this particular frame. */
e48af409
DJ
1710
1711static void
1712frame_register_unwind_location (struct frame_info *this_frame, int regnum,
1713 int *optimizedp, enum lval_type *lvalp,
1714 CORE_ADDR *addrp, int *realnump)
1715{
1716 gdb_assert (this_frame == NULL || this_frame->level >= 0);
1717
1718 while (this_frame != NULL)
1719 {
0fdb4f18
PA
1720 int unavailable;
1721
1722 frame_register_unwind (this_frame, regnum, optimizedp, &unavailable,
1723 lvalp, addrp, realnump, NULL);
e48af409
DJ
1724
1725 if (*optimizedp)
1726 break;
1727
1728 if (*lvalp != lval_register)
1729 break;
1730
1731 regnum = *realnump;
1732 this_frame = get_next_frame (this_frame);
1733 }
1734}
1735
194cca41
PA
1736/* Get the previous raw frame, and check that it is not identical to
1737 same other frame frame already in the chain. If it is, there is
1738 most likely a stack cycle, so we discard it, and mark THIS_FRAME as
1739 outermost, with UNWIND_SAME_ID stop reason. Unlike the other
1740 validity tests, that compare THIS_FRAME and the next frame, we do
1741 this right after creating the previous frame, to avoid ever ending
1742 up with two frames with the same id in the frame chain. */
1743
1744static struct frame_info *
1745get_prev_frame_if_no_cycle (struct frame_info *this_frame)
1746{
1747 struct frame_info *prev_frame;
1748
1749 prev_frame = get_prev_frame_raw (this_frame);
1750 if (prev_frame == NULL)
1751 return NULL;
1752
1753 compute_frame_id (prev_frame);
1754 if (frame_stash_add (prev_frame))
1755 return prev_frame;
1756
1757 /* Another frame with the same id was already in the stash. We just
1758 detected a cycle. */
1759 if (frame_debug)
1760 {
1761 fprintf_unfiltered (gdb_stdlog, "-> ");
1762 fprint_frame (gdb_stdlog, NULL);
1763 fprintf_unfiltered (gdb_stdlog, " // this frame has same ID }\n");
1764 }
1765 this_frame->stop_reason = UNWIND_SAME_ID;
1766 /* Unlink. */
1767 prev_frame->next = NULL;
1768 this_frame->prev = NULL;
1769 return NULL;
1770}
1771
5613d8d3
AC
1772/* Return a "struct frame_info" corresponding to the frame that called
1773 THIS_FRAME. Returns NULL if there is no such frame.
5bf00f29 1774
5613d8d3
AC
1775 Unlike get_prev_frame, this function always tries to unwind the
1776 frame. */
eb4f72c5 1777
5613d8d3
AC
1778static struct frame_info *
1779get_prev_frame_1 (struct frame_info *this_frame)
eb4f72c5 1780{
b1bd0044 1781 struct gdbarch *gdbarch;
eb4f72c5 1782
5613d8d3 1783 gdb_assert (this_frame != NULL);
b1bd0044 1784 gdbarch = get_frame_arch (this_frame);
5613d8d3 1785
7f78e237
AC
1786 if (frame_debug)
1787 {
5613d8d3 1788 fprintf_unfiltered (gdb_stdlog, "{ get_prev_frame_1 (this_frame=");
7f78e237
AC
1789 if (this_frame != NULL)
1790 fprintf_unfiltered (gdb_stdlog, "%d", this_frame->level);
1791 else
1792 fprintf_unfiltered (gdb_stdlog, "<NULL>");
1793 fprintf_unfiltered (gdb_stdlog, ") ");
1794 }
1795
5613d8d3
AC
1796 /* Only try to do the unwind once. */
1797 if (this_frame->prev_p)
1798 {
1799 if (frame_debug)
1800 {
1801 fprintf_unfiltered (gdb_stdlog, "-> ");
1802 fprint_frame (gdb_stdlog, this_frame->prev);
1803 fprintf_unfiltered (gdb_stdlog, " // cached \n");
1804 }
1805 return this_frame->prev;
1806 }
8fa75a5d 1807
0d254d6f
DJ
1808 /* If the frame unwinder hasn't been selected yet, we must do so
1809 before setting prev_p; otherwise the check for misbehaved
1810 sniffers will think that this frame's sniffer tried to unwind
1811 further (see frame_cleanup_after_sniffer). */
1812 if (this_frame->unwind == NULL)
9f9a8002 1813 frame_unwind_find_by_frame (this_frame, &this_frame->prologue_cache);
8fa75a5d 1814
5613d8d3 1815 this_frame->prev_p = 1;
55feb689 1816 this_frame->stop_reason = UNWIND_NO_REASON;
5613d8d3 1817
edb3359d
DJ
1818 /* If we are unwinding from an inline frame, all of the below tests
1819 were already performed when we unwound from the next non-inline
1820 frame. We must skip them, since we can not get THIS_FRAME's ID
1821 until we have unwound all the way down to the previous non-inline
1822 frame. */
1823 if (get_frame_type (this_frame) == INLINE_FRAME)
194cca41 1824 return get_prev_frame_if_no_cycle (this_frame);
edb3359d 1825
8fbca658
PA
1826 /* Check that this frame is unwindable. If it isn't, don't try to
1827 unwind to the prev frame. */
1828 this_frame->stop_reason
1829 = this_frame->unwind->stop_reason (this_frame,
1830 &this_frame->prologue_cache);
1831
1832 if (this_frame->stop_reason != UNWIND_NO_REASON)
a7300869
PA
1833 {
1834 if (frame_debug)
1835 {
1836 enum unwind_stop_reason reason = this_frame->stop_reason;
1837
1838 fprintf_unfiltered (gdb_stdlog, "-> ");
1839 fprint_frame (gdb_stdlog, NULL);
1840 fprintf_unfiltered (gdb_stdlog, " // %s }\n",
1841 frame_stop_reason_symbol_string (reason));
1842 }
1843 return NULL;
1844 }
8fbca658 1845
5613d8d3
AC
1846 /* Check that this frame's ID isn't inner to (younger, below, next)
1847 the next frame. This happens when a frame unwind goes backwards.
f06eadd9
JB
1848 This check is valid only if this frame and the next frame are NORMAL.
1849 See the comment at frame_id_inner for details. */
1850 if (get_frame_type (this_frame) == NORMAL_FRAME
1851 && this_frame->next->unwind->type == NORMAL_FRAME
da361ebd
JB
1852 && frame_id_inner (get_frame_arch (this_frame->next),
1853 get_frame_id (this_frame),
09a7aba8 1854 get_frame_id (this_frame->next)))
55feb689 1855 {
ebedcab5
JK
1856 CORE_ADDR this_pc_in_block;
1857 struct minimal_symbol *morestack_msym;
1858 const char *morestack_name = NULL;
1859
1860 /* gcc -fsplit-stack __morestack can continue the stack anywhere. */
1861 this_pc_in_block = get_frame_address_in_block (this_frame);
7cbd4a93 1862 morestack_msym = lookup_minimal_symbol_by_pc (this_pc_in_block).minsym;
ebedcab5 1863 if (morestack_msym)
efd66ac6 1864 morestack_name = MSYMBOL_LINKAGE_NAME (morestack_msym);
ebedcab5 1865 if (!morestack_name || strcmp (morestack_name, "__morestack") != 0)
55feb689 1866 {
ebedcab5
JK
1867 if (frame_debug)
1868 {
1869 fprintf_unfiltered (gdb_stdlog, "-> ");
1870 fprint_frame (gdb_stdlog, NULL);
3e43a32a
MS
1871 fprintf_unfiltered (gdb_stdlog,
1872 " // this frame ID is inner }\n");
ebedcab5
JK
1873 }
1874 this_frame->stop_reason = UNWIND_INNER_ID;
1875 return NULL;
55feb689 1876 }
55feb689 1877 }
5613d8d3 1878
e48af409
DJ
1879 /* Check that this and the next frame do not unwind the PC register
1880 to the same memory location. If they do, then even though they
1881 have different frame IDs, the new frame will be bogus; two
1882 functions can't share a register save slot for the PC. This can
1883 happen when the prologue analyzer finds a stack adjustment, but
d57df5e4
DJ
1884 no PC save.
1885
1886 This check does assume that the "PC register" is roughly a
1887 traditional PC, even if the gdbarch_unwind_pc method adjusts
1888 it (we do not rely on the value, only on the unwound PC being
1889 dependent on this value). A potential improvement would be
1890 to have the frame prev_pc method and the gdbarch unwind_pc
1891 method set the same lval and location information as
1892 frame_register_unwind. */
e48af409 1893 if (this_frame->level > 0
b1bd0044 1894 && gdbarch_pc_regnum (gdbarch) >= 0
e48af409 1895 && get_frame_type (this_frame) == NORMAL_FRAME
edb3359d
DJ
1896 && (get_frame_type (this_frame->next) == NORMAL_FRAME
1897 || get_frame_type (this_frame->next) == INLINE_FRAME))
e48af409 1898 {
32276632 1899 int optimized, realnum, nrealnum;
e48af409
DJ
1900 enum lval_type lval, nlval;
1901 CORE_ADDR addr, naddr;
1902
3e8c568d 1903 frame_register_unwind_location (this_frame,
b1bd0044 1904 gdbarch_pc_regnum (gdbarch),
3e8c568d
UW
1905 &optimized, &lval, &addr, &realnum);
1906 frame_register_unwind_location (get_next_frame (this_frame),
b1bd0044 1907 gdbarch_pc_regnum (gdbarch),
32276632 1908 &optimized, &nlval, &naddr, &nrealnum);
e48af409 1909
32276632
DJ
1910 if ((lval == lval_memory && lval == nlval && addr == naddr)
1911 || (lval == lval_register && lval == nlval && realnum == nrealnum))
e48af409
DJ
1912 {
1913 if (frame_debug)
1914 {
1915 fprintf_unfiltered (gdb_stdlog, "-> ");
1916 fprint_frame (gdb_stdlog, NULL);
1917 fprintf_unfiltered (gdb_stdlog, " // no saved PC }\n");
1918 }
1919
1920 this_frame->stop_reason = UNWIND_NO_SAVED_PC;
1921 this_frame->prev = NULL;
1922 return NULL;
1923 }
1924 }
1925
194cca41 1926 return get_prev_frame_if_no_cycle (this_frame);
edb3359d
DJ
1927}
1928
1929/* Construct a new "struct frame_info" and link it previous to
1930 this_frame. */
1931
1932static struct frame_info *
1933get_prev_frame_raw (struct frame_info *this_frame)
1934{
1935 struct frame_info *prev_frame;
1936
5613d8d3
AC
1937 /* Allocate the new frame but do not wire it in to the frame chain.
1938 Some (bad) code in INIT_FRAME_EXTRA_INFO tries to look along
1939 frame->next to pull some fancy tricks (of course such code is, by
1940 definition, recursive). Try to prevent it.
1941
1942 There is no reason to worry about memory leaks, should the
1943 remainder of the function fail. The allocated memory will be
1944 quickly reclaimed when the frame cache is flushed, and the `we've
1945 been here before' check above will stop repeated memory
1946 allocation calls. */
1947 prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
1948 prev_frame->level = this_frame->level + 1;
1949
6c95b8df
PA
1950 /* For now, assume we don't have frame chains crossing address
1951 spaces. */
1952 prev_frame->pspace = this_frame->pspace;
1953 prev_frame->aspace = this_frame->aspace;
1954
5613d8d3
AC
1955 /* Don't yet compute ->unwind (and hence ->type). It is computed
1956 on-demand in get_frame_type, frame_register_unwind, and
1957 get_frame_id. */
1958
1959 /* Don't yet compute the frame's ID. It is computed on-demand by
1960 get_frame_id(). */
1961
1962 /* The unwound frame ID is validate at the start of this function,
1963 as part of the logic to decide if that frame should be further
1964 unwound, and not here while the prev frame is being created.
1965 Doing this makes it possible for the user to examine a frame that
1966 has an invalid frame ID.
1967
1968 Some very old VAX code noted: [...] For the sake of argument,
1969 suppose that the stack is somewhat trashed (which is one reason
1970 that "info frame" exists). So, return 0 (indicating we don't
1971 know the address of the arglist) if we don't know what frame this
1972 frame calls. */
1973
1974 /* Link it in. */
1975 this_frame->prev = prev_frame;
1976 prev_frame->next = this_frame;
1977
1978 if (frame_debug)
1979 {
1980 fprintf_unfiltered (gdb_stdlog, "-> ");
1981 fprint_frame (gdb_stdlog, prev_frame);
1982 fprintf_unfiltered (gdb_stdlog, " }\n");
1983 }
1984
1985 return prev_frame;
1986}
1987
1988/* Debug routine to print a NULL frame being returned. */
1989
1990static void
d2bf72c0 1991frame_debug_got_null_frame (struct frame_info *this_frame,
5613d8d3
AC
1992 const char *reason)
1993{
1994 if (frame_debug)
1995 {
1996 fprintf_unfiltered (gdb_stdlog, "{ get_prev_frame (this_frame=");
1997 if (this_frame != NULL)
1998 fprintf_unfiltered (gdb_stdlog, "%d", this_frame->level);
1999 else
2000 fprintf_unfiltered (gdb_stdlog, "<NULL>");
2001 fprintf_unfiltered (gdb_stdlog, ") -> // %s}\n", reason);
2002 }
2003}
2004
c8cd9f6c
AC
2005/* Is this (non-sentinel) frame in the "main"() function? */
2006
2007static int
2008inside_main_func (struct frame_info *this_frame)
2009{
2010 struct minimal_symbol *msymbol;
2011 CORE_ADDR maddr;
2012
2013 if (symfile_objfile == 0)
2014 return 0;
2015 msymbol = lookup_minimal_symbol (main_name (), NULL, symfile_objfile);
2016 if (msymbol == NULL)
2017 return 0;
2018 /* Make certain that the code, and not descriptor, address is
2019 returned. */
b1bd0044 2020 maddr = gdbarch_convert_from_func_ptr_addr (get_frame_arch (this_frame),
efd66ac6 2021 MSYMBOL_VALUE_ADDRESS (msymbol),
c8cd9f6c
AC
2022 &current_target);
2023 return maddr == get_frame_func (this_frame);
2024}
2025
2315ffec
RC
2026/* Test whether THIS_FRAME is inside the process entry point function. */
2027
2028static int
2029inside_entry_func (struct frame_info *this_frame)
2030{
abd0a5fa
JK
2031 CORE_ADDR entry_point;
2032
2033 if (!entry_point_address_query (&entry_point))
2034 return 0;
2035
2036 return get_frame_func (this_frame) == entry_point;
2315ffec
RC
2037}
2038
5613d8d3
AC
2039/* Return a structure containing various interesting information about
2040 the frame that called THIS_FRAME. Returns NULL if there is entier
2041 no such frame or the frame fails any of a set of target-independent
2042 condition that should terminate the frame chain (e.g., as unwinding
2043 past main()).
2044
2045 This function should not contain target-dependent tests, such as
2046 checking whether the program-counter is zero. */
2047
2048struct frame_info *
2049get_prev_frame (struct frame_info *this_frame)
2050{
e3eebbd7
PA
2051 CORE_ADDR frame_pc;
2052 int frame_pc_p;
2053
eb4f72c5
AC
2054 /* There is always a frame. If this assertion fails, suspect that
2055 something should be calling get_selected_frame() or
2056 get_current_frame(). */
03febf99 2057 gdb_assert (this_frame != NULL);
e3eebbd7 2058 frame_pc_p = get_frame_pc_if_available (this_frame, &frame_pc);
eb4f72c5 2059
cc9bed83
RC
2060 /* tausq/2004-12-07: Dummy frames are skipped because it doesn't make much
2061 sense to stop unwinding at a dummy frame. One place where a dummy
2062 frame may have an address "inside_main_func" is on HPUX. On HPUX, the
2063 pcsqh register (space register for the instruction at the head of the
2064 instruction queue) cannot be written directly; the only way to set it
2065 is to branch to code that is in the target space. In order to implement
2066 frame dummies on HPUX, the called function is made to jump back to where
2067 the inferior was when the user function was called. If gdb was inside
2068 the main function when we created the dummy frame, the dummy frame will
2069 point inside the main function. */
03febf99 2070 if (this_frame->level >= 0
edb3359d 2071 && get_frame_type (this_frame) == NORMAL_FRAME
25d29d70 2072 && !backtrace_past_main
e3eebbd7 2073 && frame_pc_p
c8cd9f6c
AC
2074 && inside_main_func (this_frame))
2075 /* Don't unwind past main(). Note, this is done _before_ the
2076 frame has been marked as previously unwound. That way if the
2077 user later decides to enable unwinds past main(), that will
2078 automatically happen. */
ac2bd0a9 2079 {
d2bf72c0 2080 frame_debug_got_null_frame (this_frame, "inside main func");
ac2bd0a9
AC
2081 return NULL;
2082 }
eb4f72c5 2083
4a5e53e8
DJ
2084 /* If the user's backtrace limit has been exceeded, stop. We must
2085 add two to the current level; one of those accounts for backtrace_limit
2086 being 1-based and the level being 0-based, and the other accounts for
2087 the level of the new frame instead of the level of the current
2088 frame. */
2089 if (this_frame->level + 2 > backtrace_limit)
25d29d70 2090 {
d2bf72c0 2091 frame_debug_got_null_frame (this_frame, "backtrace limit exceeded");
4a5e53e8 2092 return NULL;
25d29d70
AC
2093 }
2094
0714963c
AC
2095 /* If we're already inside the entry function for the main objfile,
2096 then it isn't valid. Don't apply this test to a dummy frame -
bbde78fa 2097 dummy frame PCs typically land in the entry func. Don't apply
0714963c
AC
2098 this test to the sentinel frame. Sentinel frames should always
2099 be allowed to unwind. */
2f72f850
AC
2100 /* NOTE: cagney/2003-07-07: Fixed a bug in inside_main_func() -
2101 wasn't checking for "main" in the minimal symbols. With that
2102 fixed asm-source tests now stop in "main" instead of halting the
bbde78fa 2103 backtrace in weird and wonderful ways somewhere inside the entry
2f72f850
AC
2104 file. Suspect that tests for inside the entry file/func were
2105 added to work around that (now fixed) case. */
0714963c
AC
2106 /* NOTE: cagney/2003-07-15: danielj (if I'm reading it right)
2107 suggested having the inside_entry_func test use the
bbde78fa
JM
2108 inside_main_func() msymbol trick (along with entry_point_address()
2109 I guess) to determine the address range of the start function.
0714963c
AC
2110 That should provide a far better stopper than the current
2111 heuristics. */
2315ffec
RC
2112 /* NOTE: tausq/2004-10-09: this is needed if, for example, the compiler
2113 applied tail-call optimizations to main so that a function called
2114 from main returns directly to the caller of main. Since we don't
2115 stop at main, we should at least stop at the entry point of the
2116 application. */
edb3359d
DJ
2117 if (this_frame->level >= 0
2118 && get_frame_type (this_frame) == NORMAL_FRAME
2119 && !backtrace_past_entry
e3eebbd7 2120 && frame_pc_p
6e4c6c91 2121 && inside_entry_func (this_frame))
0714963c 2122 {
d2bf72c0 2123 frame_debug_got_null_frame (this_frame, "inside entry func");
0714963c
AC
2124 return NULL;
2125 }
2126
39ee2ff0
AC
2127 /* Assume that the only way to get a zero PC is through something
2128 like a SIGSEGV or a dummy frame, and hence that NORMAL frames
2129 will never unwind a zero PC. */
2130 if (this_frame->level > 0
edb3359d
DJ
2131 && (get_frame_type (this_frame) == NORMAL_FRAME
2132 || get_frame_type (this_frame) == INLINE_FRAME)
39ee2ff0 2133 && get_frame_type (get_next_frame (this_frame)) == NORMAL_FRAME
e3eebbd7 2134 && frame_pc_p && frame_pc == 0)
39ee2ff0 2135 {
d2bf72c0 2136 frame_debug_got_null_frame (this_frame, "zero PC");
39ee2ff0
AC
2137 return NULL;
2138 }
2139
5613d8d3 2140 return get_prev_frame_1 (this_frame);
eb4f72c5
AC
2141}
2142
4c1e7e9d
AC
2143CORE_ADDR
2144get_frame_pc (struct frame_info *frame)
2145{
d1340264 2146 gdb_assert (frame->next != NULL);
edb3359d 2147 return frame_unwind_pc (frame->next);
4c1e7e9d
AC
2148}
2149
e3eebbd7
PA
2150int
2151get_frame_pc_if_available (struct frame_info *frame, CORE_ADDR *pc)
2152{
2153 volatile struct gdb_exception ex;
2154
2155 gdb_assert (frame->next != NULL);
2156
2157 TRY_CATCH (ex, RETURN_MASK_ERROR)
2158 {
2159 *pc = frame_unwind_pc (frame->next);
2160 }
2161 if (ex.reason < 0)
2162 {
2163 if (ex.error == NOT_AVAILABLE_ERROR)
2164 return 0;
2165 else
2166 throw_exception (ex);
2167 }
2168
2169 return 1;
2170}
2171
ad1193e7 2172/* Return an address that falls within THIS_FRAME's code block. */
8edd5d01
AC
2173
2174CORE_ADDR
ad1193e7 2175get_frame_address_in_block (struct frame_info *this_frame)
8edd5d01
AC
2176{
2177 /* A draft address. */
ad1193e7 2178 CORE_ADDR pc = get_frame_pc (this_frame);
8edd5d01 2179
ad1193e7
DJ
2180 struct frame_info *next_frame = this_frame->next;
2181
2182 /* Calling get_frame_pc returns the resume address for THIS_FRAME.
2183 Normally the resume address is inside the body of the function
2184 associated with THIS_FRAME, but there is a special case: when
2185 calling a function which the compiler knows will never return
2186 (for instance abort), the call may be the very last instruction
2187 in the calling function. The resume address will point after the
2188 call and may be at the beginning of a different function
2189 entirely.
2190
2191 If THIS_FRAME is a signal frame or dummy frame, then we should
2192 not adjust the unwound PC. For a dummy frame, GDB pushed the
2193 resume address manually onto the stack. For a signal frame, the
2194 OS may have pushed the resume address manually and invoked the
2195 handler (e.g. GNU/Linux), or invoked the trampoline which called
2196 the signal handler - but in either case the signal handler is
2197 expected to return to the trampoline. So in both of these
2198 cases we know that the resume address is executable and
2199 related. So we only need to adjust the PC if THIS_FRAME
2200 is a normal function.
2201
2202 If the program has been interrupted while THIS_FRAME is current,
2203 then clearly the resume address is inside the associated
2204 function. There are three kinds of interruption: debugger stop
2205 (next frame will be SENTINEL_FRAME), operating system
2206 signal or exception (next frame will be SIGTRAMP_FRAME),
2207 or debugger-induced function call (next frame will be
2208 DUMMY_FRAME). So we only need to adjust the PC if
2209 NEXT_FRAME is a normal function.
2210
2211 We check the type of NEXT_FRAME first, since it is already
2212 known; frame type is determined by the unwinder, and since
2213 we have THIS_FRAME we've already selected an unwinder for
edb3359d
DJ
2214 NEXT_FRAME.
2215
2216 If the next frame is inlined, we need to keep going until we find
2217 the real function - for instance, if a signal handler is invoked
2218 while in an inlined function, then the code address of the
2219 "calling" normal function should not be adjusted either. */
2220
2221 while (get_frame_type (next_frame) == INLINE_FRAME)
2222 next_frame = next_frame->next;
2223
111c6489
JK
2224 if ((get_frame_type (next_frame) == NORMAL_FRAME
2225 || get_frame_type (next_frame) == TAILCALL_FRAME)
edb3359d 2226 && (get_frame_type (this_frame) == NORMAL_FRAME
111c6489 2227 || get_frame_type (this_frame) == TAILCALL_FRAME
edb3359d 2228 || get_frame_type (this_frame) == INLINE_FRAME))
ad1193e7
DJ
2229 return pc - 1;
2230
2231 return pc;
8edd5d01
AC
2232}
2233
e3eebbd7
PA
2234int
2235get_frame_address_in_block_if_available (struct frame_info *this_frame,
2236 CORE_ADDR *pc)
2237{
2238 volatile struct gdb_exception ex;
2239
2240 TRY_CATCH (ex, RETURN_MASK_ERROR)
2241 {
2242 *pc = get_frame_address_in_block (this_frame);
2243 }
2244 if (ex.reason < 0 && ex.error == NOT_AVAILABLE_ERROR)
2245 return 0;
2246 else if (ex.reason < 0)
2247 throw_exception (ex);
2248 else
2249 return 1;
2250}
2251
edb3359d
DJ
2252void
2253find_frame_sal (struct frame_info *frame, struct symtab_and_line *sal)
1058bca7 2254{
edb3359d
DJ
2255 struct frame_info *next_frame;
2256 int notcurrent;
e3eebbd7 2257 CORE_ADDR pc;
edb3359d
DJ
2258
2259 /* If the next frame represents an inlined function call, this frame's
2260 sal is the "call site" of that inlined function, which can not
2261 be inferred from get_frame_pc. */
2262 next_frame = get_next_frame (frame);
2263 if (frame_inlined_callees (frame) > 0)
2264 {
2265 struct symbol *sym;
2266
2267 if (next_frame)
2268 sym = get_frame_function (next_frame);
2269 else
2270 sym = inline_skipped_symbol (inferior_ptid);
2271
f3df5b08
MS
2272 /* If frame is inline, it certainly has symbols. */
2273 gdb_assert (sym);
edb3359d
DJ
2274 init_sal (sal);
2275 if (SYMBOL_LINE (sym) != 0)
2276 {
2277 sal->symtab = SYMBOL_SYMTAB (sym);
2278 sal->line = SYMBOL_LINE (sym);
2279 }
2280 else
2281 /* If the symbol does not have a location, we don't know where
2282 the call site is. Do not pretend to. This is jarring, but
2283 we can't do much better. */
2284 sal->pc = get_frame_pc (frame);
2285
4cb6da1c
AR
2286 sal->pspace = get_frame_program_space (frame);
2287
edb3359d
DJ
2288 return;
2289 }
2290
1058bca7
AC
2291 /* If FRAME is not the innermost frame, that normally means that
2292 FRAME->pc points at the return instruction (which is *after* the
2293 call instruction), and we want to get the line containing the
2294 call (because the call is where the user thinks the program is).
2295 However, if the next frame is either a SIGTRAMP_FRAME or a
2296 DUMMY_FRAME, then the next frame will contain a saved interrupt
2297 PC and such a PC indicates the current (rather than next)
2298 instruction/line, consequently, for such cases, want to get the
2299 line containing fi->pc. */
e3eebbd7
PA
2300 if (!get_frame_pc_if_available (frame, &pc))
2301 {
2302 init_sal (sal);
2303 return;
2304 }
2305
2306 notcurrent = (pc != get_frame_address_in_block (frame));
2307 (*sal) = find_pc_line (pc, notcurrent);
1058bca7
AC
2308}
2309
c193f6ac
AC
2310/* Per "frame.h", return the ``address'' of the frame. Code should
2311 really be using get_frame_id(). */
2312CORE_ADDR
2313get_frame_base (struct frame_info *fi)
2314{
d0a55772 2315 return get_frame_id (fi).stack_addr;
c193f6ac
AC
2316}
2317
da62e633
AC
2318/* High-level offsets into the frame. Used by the debug info. */
2319
2320CORE_ADDR
2321get_frame_base_address (struct frame_info *fi)
2322{
7df05f2b 2323 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
2324 return 0;
2325 if (fi->base == NULL)
86c31399 2326 fi->base = frame_base_find_by_frame (fi);
da62e633
AC
2327 /* Sneaky: If the low-level unwind and high-level base code share a
2328 common unwinder, let them share the prologue cache. */
2329 if (fi->base->unwind == fi->unwind)
669fac23
DJ
2330 return fi->base->this_base (fi, &fi->prologue_cache);
2331 return fi->base->this_base (fi, &fi->base_cache);
da62e633
AC
2332}
2333
2334CORE_ADDR
2335get_frame_locals_address (struct frame_info *fi)
2336{
7df05f2b 2337 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
2338 return 0;
2339 /* If there isn't a frame address method, find it. */
2340 if (fi->base == NULL)
86c31399 2341 fi->base = frame_base_find_by_frame (fi);
da62e633
AC
2342 /* Sneaky: If the low-level unwind and high-level base code share a
2343 common unwinder, let them share the prologue cache. */
2344 if (fi->base->unwind == fi->unwind)
669fac23
DJ
2345 return fi->base->this_locals (fi, &fi->prologue_cache);
2346 return fi->base->this_locals (fi, &fi->base_cache);
da62e633
AC
2347}
2348
2349CORE_ADDR
2350get_frame_args_address (struct frame_info *fi)
2351{
7df05f2b 2352 if (get_frame_type (fi) != NORMAL_FRAME)
da62e633
AC
2353 return 0;
2354 /* If there isn't a frame address method, find it. */
2355 if (fi->base == NULL)
86c31399 2356 fi->base = frame_base_find_by_frame (fi);
da62e633
AC
2357 /* Sneaky: If the low-level unwind and high-level base code share a
2358 common unwinder, let them share the prologue cache. */
2359 if (fi->base->unwind == fi->unwind)
669fac23
DJ
2360 return fi->base->this_args (fi, &fi->prologue_cache);
2361 return fi->base->this_args (fi, &fi->base_cache);
da62e633
AC
2362}
2363
e7802207
TT
2364/* Return true if the frame unwinder for frame FI is UNWINDER; false
2365 otherwise. */
2366
2367int
2368frame_unwinder_is (struct frame_info *fi, const struct frame_unwind *unwinder)
2369{
2370 if (fi->unwind == NULL)
9f9a8002 2371 frame_unwind_find_by_frame (fi, &fi->prologue_cache);
e7802207
TT
2372 return fi->unwind == unwinder;
2373}
2374
85cf597a
AC
2375/* Level of the selected frame: 0 for innermost, 1 for its caller, ...
2376 or -1 for a NULL frame. */
2377
2378int
2379frame_relative_level (struct frame_info *fi)
2380{
2381 if (fi == NULL)
2382 return -1;
2383 else
2384 return fi->level;
2385}
2386
5a203e44
AC
2387enum frame_type
2388get_frame_type (struct frame_info *frame)
2389{
c1bf6f65
AC
2390 if (frame->unwind == NULL)
2391 /* Initialize the frame's unwinder because that's what
2392 provides the frame's type. */
9f9a8002 2393 frame_unwind_find_by_frame (frame, &frame->prologue_cache);
c1bf6f65 2394 return frame->unwind->type;
5a203e44
AC
2395}
2396
6c95b8df
PA
2397struct program_space *
2398get_frame_program_space (struct frame_info *frame)
2399{
2400 return frame->pspace;
2401}
2402
2403struct program_space *
2404frame_unwind_program_space (struct frame_info *this_frame)
2405{
2406 gdb_assert (this_frame);
2407
2408 /* This is really a placeholder to keep the API consistent --- we
2409 assume for now that we don't have frame chains crossing
2410 spaces. */
2411 return this_frame->pspace;
2412}
2413
2414struct address_space *
2415get_frame_address_space (struct frame_info *frame)
2416{
2417 return frame->aspace;
2418}
2419
ae1e7417
AC
2420/* Memory access methods. */
2421
2422void
10c42a71
AC
2423get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr,
2424 gdb_byte *buf, int len)
ae1e7417
AC
2425{
2426 read_memory (addr, buf, len);
2427}
2428
2429LONGEST
2430get_frame_memory_signed (struct frame_info *this_frame, CORE_ADDR addr,
2431 int len)
2432{
e17a4113
UW
2433 struct gdbarch *gdbarch = get_frame_arch (this_frame);
2434 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1c4d3f96 2435
e17a4113 2436 return read_memory_integer (addr, len, byte_order);
ae1e7417
AC
2437}
2438
2439ULONGEST
2440get_frame_memory_unsigned (struct frame_info *this_frame, CORE_ADDR addr,
2441 int len)
2442{
e17a4113
UW
2443 struct gdbarch *gdbarch = get_frame_arch (this_frame);
2444 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1c4d3f96 2445
e17a4113 2446 return read_memory_unsigned_integer (addr, len, byte_order);
ae1e7417
AC
2447}
2448
304396fb
AC
2449int
2450safe_frame_unwind_memory (struct frame_info *this_frame,
10c42a71 2451 CORE_ADDR addr, gdb_byte *buf, int len)
304396fb 2452{
8defab1a
DJ
2453 /* NOTE: target_read_memory returns zero on success! */
2454 return !target_read_memory (addr, buf, len);
304396fb
AC
2455}
2456
36f15f55 2457/* Architecture methods. */
ae1e7417
AC
2458
2459struct gdbarch *
2460get_frame_arch (struct frame_info *this_frame)
2461{
36f15f55
UW
2462 return frame_unwind_arch (this_frame->next);
2463}
2464
2465struct gdbarch *
2466frame_unwind_arch (struct frame_info *next_frame)
2467{
2468 if (!next_frame->prev_arch.p)
2469 {
2470 struct gdbarch *arch;
0701b271 2471
36f15f55 2472 if (next_frame->unwind == NULL)
9f9a8002 2473 frame_unwind_find_by_frame (next_frame, &next_frame->prologue_cache);
36f15f55
UW
2474
2475 if (next_frame->unwind->prev_arch != NULL)
2476 arch = next_frame->unwind->prev_arch (next_frame,
2477 &next_frame->prologue_cache);
2478 else
2479 arch = get_frame_arch (next_frame);
2480
2481 next_frame->prev_arch.arch = arch;
2482 next_frame->prev_arch.p = 1;
2483 if (frame_debug)
2484 fprintf_unfiltered (gdb_stdlog,
2485 "{ frame_unwind_arch (next_frame=%d) -> %s }\n",
2486 next_frame->level,
2487 gdbarch_bfd_arch_info (arch)->printable_name);
2488 }
2489
2490 return next_frame->prev_arch.arch;
2491}
2492
2493struct gdbarch *
2494frame_unwind_caller_arch (struct frame_info *next_frame)
2495{
193facb3 2496 return frame_unwind_arch (skip_artificial_frames (next_frame));
ae1e7417
AC
2497}
2498
a9e5fdc2
AC
2499/* Stack pointer methods. */
2500
2501CORE_ADDR
2502get_frame_sp (struct frame_info *this_frame)
2503{
d56907c1 2504 struct gdbarch *gdbarch = get_frame_arch (this_frame);
1c4d3f96 2505
bbde78fa 2506 /* Normality - an architecture that provides a way of obtaining any
a9e5fdc2 2507 frame inner-most address. */
b1bd0044 2508 if (gdbarch_unwind_sp_p (gdbarch))
d56907c1
DJ
2509 /* NOTE drow/2008-06-28: gdbarch_unwind_sp could be converted to
2510 operate on THIS_FRAME now. */
2511 return gdbarch_unwind_sp (gdbarch, this_frame->next);
a9e5fdc2 2512 /* Now things are really are grim. Hope that the value returned by
3e8c568d 2513 the gdbarch_sp_regnum register is meaningful. */
b1bd0044 2514 if (gdbarch_sp_regnum (gdbarch) >= 0)
d56907c1
DJ
2515 return get_frame_register_unsigned (this_frame,
2516 gdbarch_sp_regnum (gdbarch));
e2e0b3e5 2517 internal_error (__FILE__, __LINE__, _("Missing unwind SP method"));
a9e5fdc2
AC
2518}
2519
55feb689
DJ
2520/* Return the reason why we can't unwind past FRAME. */
2521
2522enum unwind_stop_reason
2523get_frame_unwind_stop_reason (struct frame_info *frame)
2524{
824344ca
MM
2525 /* Fill-in STOP_REASON. */
2526 get_prev_frame_1 (frame);
2527 gdb_assert (frame->prev_p);
55feb689 2528
55feb689
DJ
2529 return frame->stop_reason;
2530}
2531
2532/* Return a string explaining REASON. */
2533
2534const char *
2535frame_stop_reason_string (enum unwind_stop_reason reason)
2536{
2537 switch (reason)
2538 {
2231f1fb
KP
2539#define SET(name, description) \
2540 case name: return _(description);
2541#include "unwind_stop_reasons.def"
2542#undef SET
55feb689 2543
55feb689
DJ
2544 default:
2545 internal_error (__FILE__, __LINE__,
2546 "Invalid frame stop reason");
2547 }
2548}
2549
a7300869
PA
2550/* Return the enum symbol name of REASON as a string, to use in debug
2551 output. */
2552
2553static const char *
2554frame_stop_reason_symbol_string (enum unwind_stop_reason reason)
2555{
2556 switch (reason)
2557 {
2558#define SET(name, description) \
2559 case name: return #name;
2560#include "unwind_stop_reasons.def"
2561#undef SET
2562
2563 default:
2564 internal_error (__FILE__, __LINE__,
2565 "Invalid frame stop reason");
2566 }
2567}
2568
669fac23
DJ
2569/* Clean up after a failed (wrong unwinder) attempt to unwind past
2570 FRAME. */
2571
2572static void
2573frame_cleanup_after_sniffer (void *arg)
2574{
2575 struct frame_info *frame = arg;
2576
2577 /* The sniffer should not allocate a prologue cache if it did not
2578 match this frame. */
2579 gdb_assert (frame->prologue_cache == NULL);
2580
2581 /* No sniffer should extend the frame chain; sniff based on what is
2582 already certain. */
2583 gdb_assert (!frame->prev_p);
2584
2585 /* The sniffer should not check the frame's ID; that's circular. */
2586 gdb_assert (!frame->this_id.p);
2587
2588 /* Clear cached fields dependent on the unwinder.
2589
2590 The previous PC is independent of the unwinder, but the previous
ad1193e7 2591 function is not (see get_frame_address_in_block). */
669fac23
DJ
2592 frame->prev_func.p = 0;
2593 frame->prev_func.addr = 0;
2594
2595 /* Discard the unwinder last, so that we can easily find it if an assertion
2596 in this function triggers. */
2597 frame->unwind = NULL;
2598}
2599
2600/* Set FRAME's unwinder temporarily, so that we can call a sniffer.
2601 Return a cleanup which should be called if unwinding fails, and
2602 discarded if it succeeds. */
2603
2604struct cleanup *
2605frame_prepare_for_sniffer (struct frame_info *frame,
2606 const struct frame_unwind *unwind)
2607{
2608 gdb_assert (frame->unwind == NULL);
2609 frame->unwind = unwind;
2610 return make_cleanup (frame_cleanup_after_sniffer, frame);
2611}
2612
b9362cc7
AC
2613extern initialize_file_ftype _initialize_frame; /* -Wmissing-prototypes */
2614
25d29d70
AC
2615static struct cmd_list_element *set_backtrace_cmdlist;
2616static struct cmd_list_element *show_backtrace_cmdlist;
2617
2618static void
2619set_backtrace_cmd (char *args, int from_tty)
2620{
2621 help_list (set_backtrace_cmdlist, "set backtrace ", -1, gdb_stdout);
2622}
2623
2624static void
2625show_backtrace_cmd (char *args, int from_tty)
2626{
2627 cmd_show_list (show_backtrace_cmdlist, from_tty, "");
2628}
2629
4c1e7e9d
AC
2630void
2631_initialize_frame (void)
2632{
2633 obstack_init (&frame_cache_obstack);
eb4f72c5 2634
3de661e6
PM
2635 frame_stash_create ();
2636
f4c5303c
OF
2637 observer_attach_target_changed (frame_observer_target_changed);
2638
1bedd215 2639 add_prefix_cmd ("backtrace", class_maintenance, set_backtrace_cmd, _("\
25d29d70 2640Set backtrace specific variables.\n\
1bedd215 2641Configure backtrace variables such as the backtrace limit"),
25d29d70
AC
2642 &set_backtrace_cmdlist, "set backtrace ",
2643 0/*allow-unknown*/, &setlist);
1bedd215 2644 add_prefix_cmd ("backtrace", class_maintenance, show_backtrace_cmd, _("\
25d29d70 2645Show backtrace specific variables\n\
1bedd215 2646Show backtrace variables such as the backtrace limit"),
25d29d70
AC
2647 &show_backtrace_cmdlist, "show backtrace ",
2648 0/*allow-unknown*/, &showlist);
2649
2650 add_setshow_boolean_cmd ("past-main", class_obscure,
7915a72c
AC
2651 &backtrace_past_main, _("\
2652Set whether backtraces should continue past \"main\"."), _("\
2653Show whether backtraces should continue past \"main\"."), _("\
eb4f72c5
AC
2654Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
2655the backtrace at \"main\". Set this variable if you need to see the rest\n\
7915a72c 2656of the stack trace."),
2c5b56ce 2657 NULL,
920d2a44 2658 show_backtrace_past_main,
2c5b56ce 2659 &set_backtrace_cmdlist,
25d29d70
AC
2660 &show_backtrace_cmdlist);
2661
2315ffec 2662 add_setshow_boolean_cmd ("past-entry", class_obscure,
7915a72c
AC
2663 &backtrace_past_entry, _("\
2664Set whether backtraces should continue past the entry point of a program."),
2665 _("\
2666Show whether backtraces should continue past the entry point of a program."),
2667 _("\
2315ffec 2668Normally there are no callers beyond the entry point of a program, so GDB\n\
cce7e648 2669will terminate the backtrace there. Set this variable if you need to see\n\
7915a72c 2670the rest of the stack trace."),
2c5b56ce 2671 NULL,
920d2a44 2672 show_backtrace_past_entry,
2c5b56ce 2673 &set_backtrace_cmdlist,
2315ffec
RC
2674 &show_backtrace_cmdlist);
2675
883b9c6c
YQ
2676 add_setshow_uinteger_cmd ("limit", class_obscure,
2677 &backtrace_limit, _("\
7915a72c
AC
2678Set an upper bound on the number of backtrace levels."), _("\
2679Show the upper bound on the number of backtrace levels."), _("\
fec74868 2680No more than the specified number of frames can be displayed or examined.\n\
f81d1120 2681Literal \"unlimited\" or zero means no limit."),
883b9c6c
YQ
2682 NULL,
2683 show_backtrace_limit,
2684 &set_backtrace_cmdlist,
2685 &show_backtrace_cmdlist);
ac2bd0a9 2686
0963b4bd 2687 /* Debug this files internals. */
ccce17b0 2688 add_setshow_zuinteger_cmd ("frame", class_maintenance, &frame_debug, _("\
85c07804
AC
2689Set frame debugging."), _("\
2690Show frame debugging."), _("\
2691When non-zero, frame specific internal debugging is enabled."),
ccce17b0
YQ
2692 NULL,
2693 show_frame_debug,
2694 &setdebuglist, &showdebuglist);
4c1e7e9d 2695}
This page took 1.16914 seconds and 4 git commands to generate.