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