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