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