1 /* Definitions for dealing with stack 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 #if !defined (FRAME_H)
21 #define FRAME_H 1
22 
23 /* The following is the intended naming schema for frame functions.
24    It isn't 100% consistent, but it is approaching that.  Frame naming
25    schema:
26 
27    Prefixes:
28 
29    get_frame_WHAT...(): Get WHAT from the THIS frame (functionally
30    equivalent to THIS->next->unwind->what)
31 
32    frame_unwind_WHAT...(): Unwind THIS frame's WHAT from the NEXT
33    frame.
34 
35    frame_unwind_caller_WHAT...(): Unwind WHAT for NEXT stack frame's
36    real caller.  Any inlined functions in NEXT's stack frame are
37    skipped.  Use these to ignore any potentially inlined functions,
38    e.g. inlined into the first instruction of a library trampoline.
39 
40    get_stack_frame_WHAT...(): Get WHAT for THIS frame, but if THIS is
41    inlined, skip to the containing stack frame.
42 
43    put_frame_WHAT...(): Put a value into this frame (unsafe, need to
44    invalidate the frame / regcache afterwards) (better name more
45    strongly hinting at its unsafeness)
46 
47    safe_....(): Safer version of various functions, doesn't throw an
48    error (leave this for later?).  Returns true / non-NULL if the request
49    succeeds, false / NULL otherwise.
50 
51    Suffixes:
52 
53    void /frame/_WHAT(): Read WHAT's value into the buffer parameter.
54 
55    ULONGEST /frame/_WHAT_unsigned(): Return an unsigned value (the
56    alternative is *frame_unsigned_WHAT).
57 
58    LONGEST /frame/_WHAT_signed(): Return WHAT signed value.
59 
60    What:
61 
62    /frame/_memory* (frame, coreaddr, len [, buf]): Extract/return
63    *memory.
64 
65    /frame/_register* (frame, regnum [, buf]): extract/return register.
66 
67    CORE_ADDR /frame/_{pc,sp,...} (frame): Resume address, innner most
68    stack *address, ...
69 
70    */
71 
72 #include "cli/cli-option.h"
73 #include "frame-id.h"
74 #include "gdbsupport/common-debug.h"
75 #include "gdbsupport/intrusive_list.h"
76 
77 struct symtab_and_line;
78 struct frame_unwind;
79 struct frame_base;
80 struct block;
81 struct gdbarch;
82 struct ui_file;
83 struct ui_out;
84 struct frame_print_options;
85 
86 /* The frame object.  */
87 
88 
89 /* Save and restore the currently selected frame.  */
90 
91 class scoped_restore_selected_frame
92 {
93 public:
94   /* Save the currently selected frame.  */
95   scoped_restore_selected_frame ();
96 
97   /* Restore the currently selected frame.  */
98   ~scoped_restore_selected_frame ();
99 
100   DISABLE_COPY_AND_ASSIGN (scoped_restore_selected_frame);
101 
102 private:
103 
104   /* The ID and level of the previously selected frame.  */
105   struct frame_id m_fid;
106   int m_level;
107 
108   /* Save/restore the language as well, because selecting a frame
109      changes the current language to the frame's language if "set
110      language auto".  */
111   enum language m_lang;
112 };
113 
114 /* Flag to control debugging.  */
115 
116 extern bool frame_debug;
117 
118 /* Print a "frame" debug statement.  */
119 
120 #define frame_debug_printf(fmt, ...) \
121   debug_prefixed_printf_cond (frame_debug, "frame", fmt, ##__VA_ARGS__)
122 
123 /* Print "frame" enter/exit debug statements.  */
124 
125 #define FRAME_SCOPED_DEBUG_ENTER_EXIT \
126   scoped_debug_enter_exit (frame_debug, "frame")
127 
128 /* Construct a frame ID.  The first parameter is the frame's constant
129    stack address (typically the outer-bound), and the second the
130    frame's constant code address (typically the entry point).
131    The special identifier address is set to indicate a wild card.  */
132 extern struct frame_id frame_id_build (CORE_ADDR stack_addr,
133                                                CORE_ADDR code_addr);
134 
135 /* Construct a special frame ID.  The first parameter is the frame's constant
136    stack address (typically the outer-bound), the second is the
137    frame's constant code address (typically the entry point),
138    and the third parameter is the frame's special identifier address.  */
139 extern struct frame_id frame_id_build_special (CORE_ADDR stack_addr,
140                                                          CORE_ADDR code_addr,
141                                                          CORE_ADDR special_addr);
142 
143 /* Construct a frame ID representing a frame where the stack address
144    exists, but is unavailable.  CODE_ADDR is the frame's constant code
145    address (typically the entry point).  The special identifier
146    address is set to indicate a wild card.  */
147 extern struct frame_id frame_id_build_unavailable_stack (CORE_ADDR code_addr);
148 
149 /* Construct a frame ID representing a frame where the stack address
150    exists, but is unavailable.  CODE_ADDR is the frame's constant code
151    address (typically the entry point).  SPECIAL_ADDR is the special
152    identifier address.  */
153 extern struct frame_id
154   frame_id_build_unavailable_stack_special (CORE_ADDR code_addr,
155                                                       CORE_ADDR special_addr);
156 
157 /* Construct a wild card frame ID.  The parameter is the frame's constant
158    stack address (typically the outer-bound).  The code address as well
159    as the special identifier address are set to indicate wild cards.  */
160 extern struct frame_id frame_id_build_wild (CORE_ADDR stack_addr);
161 
162 /* Construct a frame ID for a sentinel frame.
163 
164    If either STACK_ADDR or CODE_ADDR is not 0, the ID represents a sentinel
165    frame for a user-created frame.  STACK_ADDR and CODE_ADDR are the addresses
166    used to create the frame.
167 
168    If STACK_ADDR and CODE_ADDR are both 0, the ID represents a regular sentinel
169    frame (i.e. the "next" frame of the target's current frame).  */
170 extern frame_id frame_id_build_sentinel (CORE_ADDR stack_addr, CORE_ADDR code_addr);
171 
172 /* Returns true when L is a valid frame.  */
173 extern bool frame_id_p (frame_id l);
174 
175 /* Returns true when L is a valid frame representing a frame made up by GDB
176    without stack data representation in inferior, such as INLINE_FRAME or
177    TAILCALL_FRAME.  */
178 extern bool frame_id_artificial_p (frame_id l);
179 
180 /* Frame types.  Some are real, some are signal trampolines, and some
181    are completely artificial (dummy).  */
182 
183 enum frame_type
184 {
185   /* A true stack frame, created by the target program during normal
186      execution.  */
187   NORMAL_FRAME,
188   /* A fake frame, created by GDB when performing an inferior function
189      call.  */
190   DUMMY_FRAME,
191   /* A frame representing an inlined function, associated with an
192      upcoming (prev, outer, older) NORMAL_FRAME.  */
193   INLINE_FRAME,
194   /* A virtual frame of a tail call - see dwarf2_tailcall_frame_unwind.  */
195   TAILCALL_FRAME,
196   /* In a signal handler, various OSs handle this in various ways.
197      The main thing is that the frame may be far from normal.  */
198   SIGTRAMP_FRAME,
199   /* Fake frame representing a cross-architecture call.  */
200   ARCH_FRAME,
201   /* Sentinel or registers frame.  This frame obtains register values
202      direct from the inferior's registers.  */
203   SENTINEL_FRAME
204 };
205 
206 /* Return a string representation of TYPE.  */
207 
208 extern const char *frame_type_str (frame_type type);
209 
210 /* A wrapper for "frame_info *".  frame_info objects are invalidated
211    whenever reinit_frame_cache is called.  This class arranges to
212    invalidate the pointer when appropriate.  This is done to help
213    detect a GDB bug that was relatively common.
214 
215    A small amount of code must still operate on raw pointers, so a
216    "get" method is provided.  However, you should normally not use
217    this in new code.  */
218 
219 class frame_info_ptr : public intrusive_list_node<frame_info_ptr>
220 {
221 public:
222   /* Create a frame_info_ptr from a raw pointer.  */
223   explicit frame_info_ptr (struct frame_info *ptr);
224 
225   /* Create a null frame_info_ptr.  */
frame_info_ptr()226   frame_info_ptr ()
227   {
228     frame_list.push_back (*this);
229   }
230 
frame_info_ptr(std::nullptr_t)231   frame_info_ptr (std::nullptr_t)
232   {
233     frame_list.push_back (*this);
234   }
235 
frame_info_ptr(const frame_info_ptr & other)236   frame_info_ptr (const frame_info_ptr &other)
237     : m_ptr (other.m_ptr),
238       m_cached_id (other.m_cached_id),
239       m_cached_level (other.m_cached_level)
240   {
241     frame_list.push_back (*this);
242   }
243 
frame_info_ptr(frame_info_ptr && other)244   frame_info_ptr (frame_info_ptr &&other)
245     : m_ptr (other.m_ptr),
246       m_cached_id (other.m_cached_id),
247       m_cached_level (other.m_cached_level)
248   {
249     other.m_ptr = nullptr;
250     other.m_cached_id = null_frame_id;
251     other.m_cached_level = invalid_level;
252     frame_list.push_back (*this);
253   }
254 
~frame_info_ptr()255   ~frame_info_ptr ()
256   {
257     /* If this node has static storage, it should be be deleted before
258        frame_list.  */
259     frame_list.erase (frame_list.iterator_to (*this));
260   }
261 
262   frame_info_ptr &operator= (const frame_info_ptr &other)
263   {
264     m_ptr = other.m_ptr;
265     m_cached_id = other.m_cached_id;
266     m_cached_level = other.m_cached_level;
267     return *this;
268   }
269 
270   frame_info_ptr &operator= (std::nullptr_t)
271   {
272     m_ptr = nullptr;
273     m_cached_id = null_frame_id;
274     m_cached_level = invalid_level;
275     return *this;
276   }
277 
278   frame_info_ptr &operator= (frame_info_ptr &&other)
279   {
280     m_ptr = other.m_ptr;
281     m_cached_id = other.m_cached_id;
282     m_cached_level = other.m_cached_level;
283     other.m_ptr = nullptr;
284     other.m_cached_id = null_frame_id;
285     other.m_cached_level = invalid_level;
286     return *this;
287   }
288 
289   frame_info *operator-> () const
290   { return this->reinflate (); }
291 
292   /* Fetch the underlying pointer.  Note that new code should
293      generally not use this -- avoid it if at all possible.  */
get()294   frame_info *get () const
295   {
296     if (this->is_null ())
297       return nullptr;
298 
299     return this->reinflate ();
300   }
301 
302   /* Return true if this object is empty (does not wrap a frame_info
303      object).  */
304 
is_null()305   bool is_null () const
306   {
307     return m_cached_level == this->invalid_level;
308   };
309 
310   /* This exists for compatibility with pre-existing code that checked
311      a "frame_info *" using "!".  */
312   bool operator! () const
313   {
314     return this->is_null ();
315   }
316 
317   /* This exists for compatibility with pre-existing code that checked
318      a "frame_info *" like "if (ptr)".  */
319   explicit operator bool () const
320   {
321     return !this->is_null ();
322   }
323 
324   /* Invalidate this pointer.  */
invalidate()325   void invalidate ()
326   {
327     m_ptr = nullptr;
328   }
329 
330 private:
331   /* We sometimes need to construct frame_info_ptr objects around the
332      sentinel_frame, which has level -1.  Therefore, make the invalid frame
333      level value -2.  */
334   static constexpr int invalid_level = -2;
335 
336   /* Use the cached frame level and id to reinflate the pointer, and return
337      it.  */
338   frame_info *reinflate () const;
339 
340   /* The underlying pointer.  */
341   mutable frame_info *m_ptr = nullptr;
342 
343   /* The frame_id of the underlying pointer.
344 
345      For the current target frames (frames with level 0, obtained through
346      get_current_frame), we don't save the frame id, we leave it at
347      null_frame_id.  For user-created frames (also with level 0, but created
348      with create_new_frame), we do save the id.  */
349   frame_id m_cached_id = null_frame_id;
350 
351   /* The frame level of the underlying pointer.  */
352   int m_cached_level = invalid_level;
353 
354   /* All frame_info_ptr objects are kept on an intrusive list.
355      This keeps their construction and destruction costs
356      reasonably small.  */
357   static intrusive_list<frame_info_ptr> frame_list;
358 
359   /* A friend so it can invalidate the pointers.  */
360   friend void reinit_frame_cache ();
361 };
362 
363 static inline bool
364 operator== (const frame_info *self, const frame_info_ptr &other)
365 {
366   if (self == nullptr || other.is_null ())
367     return self == nullptr && other.is_null ();
368 
369   return self == other.get ();
370 }
371 
372 static inline bool
373 operator== (const frame_info_ptr &self, const frame_info_ptr &other)
374 {
375   if (self.is_null () || other.is_null ())
376     return self.is_null () && other.is_null ();
377 
378   return self.get () == other.get ();
379 }
380 
381 static inline bool
382 operator== (const frame_info_ptr &self, const frame_info *other)
383 {
384   if (self.is_null () || other == nullptr)
385     return self.is_null () && other == nullptr;
386 
387   return self.get () == other;
388 }
389 
390 static inline bool
391 operator!= (const frame_info *self, const frame_info_ptr &other)
392 {
393   return !(self == other);
394 }
395 
396 static inline bool
397 operator!= (const frame_info_ptr &self, const frame_info_ptr &other)
398 {
399   return !(self == other);
400 }
401 
402 static inline bool
403 operator!= (const frame_info_ptr &self, const frame_info *other)
404 {
405   return !(self == other);
406 }
407 
408 /* For every stopped thread, GDB tracks two frames: current and
409    selected.  Current frame is the inner most frame of the selected
410    thread.  Selected frame is the one being examined by the GDB
411    CLI (selected using `up', `down', ...).  The frames are created
412    on-demand (via get_prev_frame()) and then held in a frame cache.  */
413 /* FIXME: cagney/2002-11-28: Er, there is a lie here.  If you do the
414    sequence: `thread 1; up; thread 2; thread 1' you lose thread 1's
415    selected frame.  At present GDB only tracks the selected frame of
416    the current thread.  But be warned, that might change.  */
417 /* FIXME: cagney/2002-11-14: At any time, only one thread's selected
418    and current frame can be active.  Switching threads causes gdb to
419    discard all that cached frame information.  Ulgh!  Instead, current
420    and selected frame should be bound to a thread.  */
421 
422 /* On demand, create the inner most frame using information found in
423    the inferior.  If the inner most frame can't be created, throw an
424    error.  */
425 extern frame_info_ptr get_current_frame (void);
426 
427 /* Does the current target interface have enough state to be able to
428    query the current inferior for frame info, and is the inferior in a
429    state where that is possible?  */
430 extern bool has_stack_frames ();
431 
432 /* Invalidates the frame cache (this function should have been called
433    invalidate_cached_frames).
434 
435    FIXME: cagney/2002-11-28: There should be two methods: one that
436    reverts the thread's selected frame back to current frame (for when
437    the inferior resumes) and one that does not (for when the user
438    modifies the target invalidating the frame cache).  */
439 extern void reinit_frame_cache (void);
440 
441 /* Return the selected frame.  Always returns non-NULL.  If there
442    isn't an inferior sufficient for creating a frame, an error is
443    thrown.  When MESSAGE is non-NULL, use it for the error message,
444    otherwise use a generic error message.  */
445 /* FIXME: cagney/2002-11-28: At present, when there is no selected
446    frame, this function always returns the current (inner most) frame.
447    It should instead, when a thread has previously had its frame
448    selected (but not resumed) and the frame cache invalidated, find
449    and then return that thread's previously selected frame.  */
450 extern frame_info_ptr get_selected_frame (const char *message = nullptr);
451 
452 /* Select a specific frame.  */
453 extern void select_frame (const frame_info_ptr &);
454 
455 /* Save the frame ID and frame level of the selected frame in FRAME_ID
456    and FRAME_LEVEL, to be restored later with restore_selected_frame.
457 
458    This is preferred over getting the same info out of
459    get_selected_frame directly because this function does not create
460    the selected-frame's frame_info object if it hasn't been created
461    yet, and thus is more efficient and doesn't throw.  */
462 extern void save_selected_frame (frame_id *frame_id, int *frame_level)
463   noexcept;
464 
465 /* Restore selected frame as saved with save_selected_frame.
466 
467    Does not try to find the corresponding frame_info object.  Instead
468    the next call to get_selected_frame will look it up and cache the
469    result.
470 
471    This function does not throw.  It is designed to be safe to called
472    from the destructors of RAII types.  */
473 extern void restore_selected_frame (frame_id frame_id, int frame_level)
474   noexcept;
475 
476 /* Given a FRAME, return the next (more inner, younger) or previous
477    (more outer, older) frame.  */
478 extern frame_info_ptr get_prev_frame (const frame_info_ptr &);
479 extern frame_info_ptr get_next_frame (const frame_info_ptr &);
480 
481 /* Like get_next_frame(), but allows return of the sentinel frame.  NULL
482    is never returned.  */
483 extern frame_info_ptr get_next_frame_sentinel_okay (const frame_info_ptr &);
484 
485 /* Return a "struct frame_info" corresponding to the frame that called
486    THIS_FRAME.  Returns NULL if there is no such frame.
487 
488    Unlike get_prev_frame, this function always tries to unwind the
489    frame.  */
490 extern frame_info_ptr get_prev_frame_always (const frame_info_ptr &);
491 
492 /* Given a frame's ID, relocate the frame.  Returns NULL if the frame
493    is not found.  */
494 extern frame_info_ptr frame_find_by_id (frame_id id);
495 
496 /* Base attributes of a frame: */
497 
498 /* The frame's `resume' address.  Where the program will resume in
499    this frame.
500 
501    This replaced: frame->pc; */
502 extern CORE_ADDR get_frame_pc (const frame_info_ptr &);
503 
504 /* Same as get_frame_pc, but return a boolean indication of whether
505    the PC is actually available, instead of throwing an error.  */
506 
507 extern bool get_frame_pc_if_available (const frame_info_ptr &frame, CORE_ADDR *pc);
508 
509 /* An address (not necessarily aligned to an instruction boundary)
510    that falls within THIS frame's code block.
511 
512    When a function call is the last statement in a block, the return
513    address for the call may land at the start of the next block.
514    Similarly, if a no-return function call is the last statement in
515    the function, the return address may end up pointing beyond the
516    function, and possibly at the start of the next function.
517 
518    These methods make an allowance for this.  For call frames, this
519    function returns the frame's PC-1 which "should" be an address in
520    the frame's block.  */
521 
522 extern CORE_ADDR get_frame_address_in_block (const frame_info_ptr &this_frame);
523 
524 /* Same as get_frame_address_in_block, but returns a boolean
525    indication of whether the frame address is determinable (when the
526    PC is unavailable, it will not be), instead of possibly throwing an
527    error trying to read an unavailable PC.  */
528 
529 extern bool get_frame_address_in_block_if_available (const frame_info_ptr &this_frame,
530                                                                  CORE_ADDR *pc);
531 
532 /* The frame's inner-most bound.  AKA the stack-pointer.  Confusingly
533    known as top-of-stack.  */
534 
535 extern CORE_ADDR get_frame_sp (const frame_info_ptr &);
536 
537 /* Following on from the `resume' address.  Return the entry point
538    address of the function containing that resume address, or zero if
539    that function isn't known.  */
540 extern CORE_ADDR get_frame_func (const frame_info_ptr &fi);
541 
542 /* Same as get_frame_func, but returns a boolean indication of whether
543    the frame function is determinable (when the PC is unavailable, it
544    will not be), instead of possibly throwing an error trying to read
545    an unavailable PC.  */
546 
547 extern bool get_frame_func_if_available (const frame_info_ptr &fi, CORE_ADDR *);
548 
549 /* Closely related to the resume address, various symbol table
550    attributes that are determined by the PC.  Note that for a normal
551    frame, the PC refers to the resume address after the return, and
552    not the call instruction.  In such a case, the address is adjusted
553    so that it (approximately) identifies the call site (and not the
554    return site).
555 
556    NOTE: cagney/2002-11-28: The frame cache could be used to cache the
557    computed value.  Working on the assumption that the bottle-neck is
558    in the single step code, and that code causes the frame cache to be
559    constantly flushed, caching things in a frame is probably of little
560    benefit.  As they say `show us the numbers'.
561 
562    NOTE: cagney/2002-11-28: Plenty more where this one came from:
563    find_frame_block(), find_frame_partial_function(),
564    find_frame_symtab(), find_frame_function().  Each will need to be
565    carefully considered to determine if the real intent was for it to
566    apply to the PC or the adjusted PC.  */
567 extern symtab_and_line find_frame_sal (const frame_info_ptr &frame);
568 
569 /* Set the current source and line to the location given by frame
570    FRAME, if possible.  */
571 
572 void set_current_sal_from_frame (const frame_info_ptr &);
573 
574 /* Return the frame base (what ever that is) (DEPRECATED).
575 
576    Old code was trying to use this single method for two conflicting
577    purposes.  Such code needs to be updated to use either of:
578 
579    get_frame_id: A low level frame unique identifier, that consists of
580    both a stack and a function address, that can be used to uniquely
581    identify a frame.  This value is determined by the frame's
582    low-level unwinder, the stack part [typically] being the
583    top-of-stack of the previous frame, and the function part being the
584    function's start address.  Since the correct identification of a
585    frameless function requires both a stack and function address,
586    the old get_frame_base method was not sufficient.
587 
588    get_frame_base_address: get_frame_locals_address:
589    get_frame_args_address: A set of high-level debug-info dependant
590    addresses that fall within the frame.  These addresses almost
591    certainly will not match the stack address part of a frame ID (as
592    returned by get_frame_base).
593 
594    This replaced: frame->frame; */
595 
596 extern CORE_ADDR get_frame_base (const frame_info_ptr &);
597 
598 /* Return the per-frame unique identifier.  Can be used to relocate a
599    frame after a frame cache flush (and other similar operations).  If
600    FI is NULL, return the null_frame_id.  */
601 extern frame_id get_frame_id (const frame_info_ptr &fi);
602 extern frame_id get_stack_frame_id (const frame_info_ptr &fi);
603 extern frame_id frame_unwind_caller_id (const frame_info_ptr &next_frame);
604 
605 /* Assuming that a frame is `normal', return its base-address, or 0 if
606    the information isn't available.  NOTE: This address is really only
607    meaningful to the frame's high-level debug info.  */
608 extern CORE_ADDR get_frame_base_address (const frame_info_ptr &);
609 
610 /* Assuming that a frame is `normal', return the base-address of the
611    local variables, or 0 if the information isn't available.  NOTE:
612    This address is really only meaningful to the frame's high-level
613    debug info.  Typically, the argument and locals share a single
614    base-address.  */
615 extern CORE_ADDR get_frame_locals_address (const frame_info_ptr &);
616 
617 /* Assuming that a frame is `normal', return the base-address of the
618    parameter list, or 0 if that information isn't available.  NOTE:
619    This address is really only meaningful to the frame's high-level
620    debug info.  Typically, the argument and locals share a single
621    base-address.  */
622 extern CORE_ADDR get_frame_args_address (const frame_info_ptr &);
623 
624 /* The frame's level: 0 for innermost, 1 for its caller, ...; or -1
625    for an invalid frame).  */
626 extern int frame_relative_level (const frame_info_ptr &fi);
627 
628 /* Return the frame's type.  */
629 
630 extern enum frame_type get_frame_type (const frame_info_ptr &);
631 
632 /* Return the frame's program space.  */
633 extern struct program_space *get_frame_program_space (const frame_info_ptr &);
634 
635 /* Unwind THIS frame's program space from the NEXT frame.  */
636 extern struct program_space *frame_unwind_program_space (const frame_info_ptr &);
637 
638 class address_space;
639 
640 /* Return the frame's address space.  */
641 extern const address_space *get_frame_address_space (const frame_info_ptr &);
642 
643 /* A frame may have a "static link".  That is, in some languages, a
644    nested function may have access to variables from the enclosing
645    block and frame.  This function looks for a frame's static link.
646    If found, returns the corresponding frame; otherwise, returns a
647    null frame_info_ptr.  */
648 extern frame_info_ptr frame_follow_static_link (const frame_info_ptr &frame);
649 
650 /* For frames where we can not unwind further, describe why.  */
651 
652 enum unwind_stop_reason
653   {
654 #define SET(name, description) name,
655 #define FIRST_ENTRY(name) UNWIND_FIRST = name,
656 #define LAST_ENTRY(name) UNWIND_LAST = name,
657 #define FIRST_ERROR(name) UNWIND_FIRST_ERROR = name,
658 
659 #include "unwind_stop_reasons.def"
660 #undef SET
661 #undef FIRST_ENTRY
662 #undef LAST_ENTRY
663 #undef FIRST_ERROR
664   };
665 
666 /* Return the reason why we can't unwind past this frame.  */
667 
668 enum unwind_stop_reason get_frame_unwind_stop_reason (const frame_info_ptr &);
669 
670 /* Translate a reason code to an informative string.  This converts the
671    generic stop reason codes into a generic string describing the code.
672    For a possibly frame specific string explaining the stop reason, use
673    FRAME_STOP_REASON_STRING instead.  */
674 
675 const char *unwind_stop_reason_to_string (enum unwind_stop_reason);
676 
677 /* Return a possibly frame specific string explaining why the unwind
678    stopped here.  E.g., if unwinding tripped on a memory error, this
679    will return the error description string, which includes the address
680    that we failed to access.  If there's no specific reason stored for
681    a frame then a generic reason string will be returned.
682 
683    Should only be called for frames that don't have a previous frame.  */
684 
685 const char *frame_stop_reason_string (const frame_info_ptr &);
686 
687 /* Unwind the stack frame so that the value of REGNUM, in the previous
688    (up, older) frame is returned.  If VALUEP is NULL, don't
689    fetch/compute the value.  Instead just return the location of the
690    value.  */
691 extern void frame_register_unwind (const frame_info_ptr &frame, int regnum,
692                                            int *optimizedp, int *unavailablep,
693                                            enum lval_type *lvalp,
694                                            CORE_ADDR *addrp, int *realnump,
695                                            gdb_byte *valuep);
696 
697 /* Fetch a register from this, or unwind a register from the next
698    frame.  Note that the get_frame methods are wrappers to
699    frame->next->unwind.  They all [potentially] throw an error if the
700    fetch fails.  The value methods never return NULL, but usually
701    do return a lazy value.  */
702 
703 extern void frame_unwind_register (const frame_info_ptr &next_frame,
704                                            int regnum, gdb_byte *buf);
705 extern void get_frame_register (const frame_info_ptr &frame,
706                                         int regnum, gdb_byte *buf);
707 
708 struct value *frame_unwind_register_value (const frame_info_ptr &next_frame,
709                                                      int regnum);
710 struct value *get_frame_register_value (const frame_info_ptr &frame,
711                                                   int regnum);
712 
713 extern LONGEST frame_unwind_register_signed (const frame_info_ptr &next_frame,
714                                                        int regnum);
715 extern LONGEST get_frame_register_signed (const frame_info_ptr &frame,
716                                                     int regnum);
717 extern ULONGEST frame_unwind_register_unsigned
718   (const frame_info_ptr &next_frame, int regnum);
719 extern ULONGEST get_frame_register_unsigned (const frame_info_ptr &frame,
720                                                        int regnum);
721 
722 /* Read a register from this, or unwind a register from the next
723    frame.  Note that the read_frame methods are wrappers to
724    get_frame_register_value, that do not throw if the result is
725    optimized out or unavailable.  */
726 
727 extern bool read_frame_register_unsigned (const frame_info_ptr &frame,
728                                                     int regnum, ULONGEST *val);
729 
730 /* The reverse.  Store a register value relative to NEXT_FRAME's previous frame.
731    Note: this call makes the frame's state undefined.  The register and frame
732    caches must be flushed.  */
733 extern void put_frame_register (const frame_info_ptr &next_frame, int regnum,
734                                         gdb::array_view<const gdb_byte> buf);
735 
736 /* Read LEN bytes from one or multiple registers starting with REGNUM in
737    NEXT_FRAME's previous frame, starting at OFFSET, into BUF.  If the register
738    contents are optimized out or unavailable, set *OPTIMIZEDP, *UNAVAILABLEP
739    accordingly.  */
740 extern bool get_frame_register_bytes (const frame_info_ptr &next_frame,
741                                               int regnum, CORE_ADDR offset,
742                                               gdb::array_view<gdb_byte> buffer,
743                                               int *optimizedp, int *unavailablep);
744 
745 /* Write bytes from BUFFER to one or multiple registers starting with REGNUM
746    in NEXT_FRAME's previous frame, starting at OFFSET.  */
747 extern void put_frame_register_bytes (const frame_info_ptr &next_frame,
748                                               int regnum, CORE_ADDR offset,
749                                               gdb::array_view<const gdb_byte> buffer);
750 
751 /* Unwind the PC.  Strictly speaking return the resume address of the
752    calling frame.  For GDB, `pc' is the resume address and not a
753    specific register.  */
754 
755 extern CORE_ADDR frame_unwind_caller_pc (const frame_info_ptr &next_frame);
756 
757 /* Discard the specified frame.  Restoring the registers to the state
758    of the caller.  */
759 extern void frame_pop (const frame_info_ptr &frame);
760 
761 /* Return memory from the specified frame.  A frame knows its thread /
762    LWP and hence can find its way down to a target.  The assumption
763    here is that the current and previous frame share a common address
764    space.
765 
766    If the memory read fails, these methods throw an error.
767 
768    NOTE: cagney/2003-06-03: Should there be unwind versions of these
769    methods?  That isn't clear.  Can code, for instance, assume that
770    this and the previous frame's memory or architecture are identical?
771    If architecture / memory changes are always separated by special
772    adaptor frames this should be ok.  */
773 
774 extern void get_frame_memory (const frame_info_ptr &this_frame, CORE_ADDR addr,
775                                     gdb::array_view<gdb_byte> buffer);
776 extern LONGEST get_frame_memory_signed (const frame_info_ptr &this_frame,
777                                                   CORE_ADDR memaddr, int len);
778 extern ULONGEST get_frame_memory_unsigned (const frame_info_ptr &this_frame,
779                                                      CORE_ADDR memaddr, int len);
780 
781 /* Same as above, but return true zero when the entire memory read
782    succeeds, false otherwise.  */
783 extern bool safe_frame_unwind_memory (const frame_info_ptr &this_frame, CORE_ADDR addr,
784                                               gdb::array_view<gdb_byte> buffer);
785 
786 /* Return this frame's architecture.  */
787 extern gdbarch *get_frame_arch (const frame_info_ptr &this_frame);
788 
789 /* Return the previous frame's architecture.  */
790 extern gdbarch *frame_unwind_arch (const frame_info_ptr &next_frame);
791 
792 /* Return the previous frame's architecture, skipping inline functions.  */
793 extern gdbarch *frame_unwind_caller_arch (const frame_info_ptr &next_frame);
794 
795 
796 /* Values for the source flag to be used in print_frame_info ().
797    For all the cases below, the address is never printed if
798    'set print address' is off.  When 'set print address' is on,
799    the address is printed if the program counter is not at the
800    beginning of the source line of the frame
801    and PRINT_WHAT is != LOC_AND_ADDRESS.  */
802 enum print_what
803   {
804     /* Print only the address, source line, like in stepi.  */
805     SRC_LINE = -1,
806     /* Print only the location, i.e. level, address,
807        function, args (as controlled by 'set print frame-arguments'),
808        file, line, line num.  */
809     LOCATION,
810     /* Print both of the above.  */
811     SRC_AND_LOC,
812     /* Print location only, print the address even if the program counter
813        is at the beginning of the source line.  */
814     LOC_AND_ADDRESS,
815     /* Print only level and function,
816        i.e. location only, without address, file, line, line num.  */
817     SHORT_LOCATION
818   };
819 
820 /* Allocate zero initialized memory from the frame cache obstack.
821    Appendices to the frame info (such as the unwind cache) should
822    allocate memory using this method.  */
823 
824 extern void *frame_obstack_zalloc (unsigned long size);
825 #define FRAME_OBSTACK_ZALLOC(TYPE) \
826   ((TYPE *) frame_obstack_zalloc (sizeof (TYPE)))
827 #define FRAME_OBSTACK_CALLOC(NUMBER,TYPE) \
828   ((TYPE *) frame_obstack_zalloc ((NUMBER) * sizeof (TYPE)))
829 
830 class readonly_detached_regcache;
831 /* Create a regcache, and copy the frame's registers into it.  */
832 std::unique_ptr<readonly_detached_regcache> frame_save_as_regcache
833     (const frame_info_ptr &this_frame);
834 
835 extern const struct block *get_frame_block (const frame_info_ptr &,
836                                                       CORE_ADDR *addr_in_block);
837 
838 /* Return the `struct block' that belongs to the selected thread's
839    selected frame.  If the inferior has no state, return NULL.
840 
841    NOTE: cagney/2002-11-29:
842 
843    No state?  Does the inferior have any execution state (a core file
844    does, an executable does not).  At present the code tests
845    `target_has_stack' but I'm left wondering if it should test
846    `target_has_registers' or, even, a merged target_has_state.
847 
848    Should it look at the most recently specified SAL?  If the target
849    has no state, should this function try to extract a block from the
850    most recently selected SAL?  That way `list foo' would give it some
851    sort of reference point.  Then again, perhaps that would confuse
852    things.
853 
854    Calls to this function can be broken down into two categories: Code
855    that uses the selected block as an additional, but optional, data
856    point; Code that uses the selected block as a prop, when it should
857    have the relevant frame/block/pc explicitly passed in.
858 
859    The latter can be eliminated by correctly parameterizing the code,
860    the former though is more interesting.  Per the "address" command,
861    it occurs in the CLI code and makes it possible for commands to
862    work, even when the inferior has no state.  */
863 
864 extern const struct block *get_selected_block (CORE_ADDR *addr_in_block);
865 
866 extern struct symbol *get_frame_function (const frame_info_ptr &);
867 
868 extern CORE_ADDR get_pc_function_start (CORE_ADDR);
869 
870 extern frame_info_ptr find_relative_frame (frame_info_ptr, int *);
871 
872 /* Wrapper over print_stack_frame modifying current_uiout with UIOUT for
873    the function call.  */
874 
875 extern void print_stack_frame_to_uiout (struct ui_out *uiout,
876                                                   const frame_info_ptr &, int print_level,
877                                                   enum print_what print_what,
878                                                   int set_current_sal);
879 
880 extern void print_stack_frame (const frame_info_ptr &, int print_level,
881                                      enum print_what print_what,
882                                      int set_current_sal);
883 
884 extern void print_frame_info (const frame_print_options &fp_opts,
885                                     const frame_info_ptr &, int print_level,
886                                     enum print_what print_what, int args,
887                                     int set_current_sal);
888 
889 extern frame_info_ptr block_innermost_frame (const struct block *);
890 
891 extern bool deprecated_frame_register_read (const frame_info_ptr &frame, int regnum,
892                                                       gdb_byte *buf);
893 
894 /* From stack.c.  */
895 
896 /* The possible choices of "set print frame-arguments".  */
897 extern const char print_frame_arguments_all[];
898 extern const char print_frame_arguments_scalars[];
899 extern const char print_frame_arguments_none[];
900 
901 /* The possible choices of "set print frame-info".  */
902 extern const char print_frame_info_auto[];
903 extern const char print_frame_info_source_line[];
904 extern const char print_frame_info_location[];
905 extern const char print_frame_info_source_and_location[];
906 extern const char print_frame_info_location_and_address[];
907 extern const char print_frame_info_short_location[];
908 
909 /* The possible choices of "set print entry-values".  */
910 extern const char print_entry_values_no[];
911 extern const char print_entry_values_only[];
912 extern const char print_entry_values_preferred[];
913 extern const char print_entry_values_if_needed[];
914 extern const char print_entry_values_both[];
915 extern const char print_entry_values_compact[];
916 extern const char print_entry_values_default[];
917 
918 /* Data for the frame-printing "set print" settings exposed as command
919    options.  */
920 
921 struct frame_print_options
922 {
923   const char *print_frame_arguments = print_frame_arguments_scalars;
924   const char *print_frame_info = print_frame_info_auto;
925   const char *print_entry_values = print_entry_values_default;
926 
927   /* If true, don't invoke pretty-printers for frame
928      arguments.  */
929   bool print_raw_frame_arguments;
930 };
931 
932 /* The values behind the global "set print ..." settings.  */
933 extern frame_print_options user_frame_print_options;
934 
935 /* Inferior function parameter value read in from a frame.  */
936 
937 struct frame_arg
938 {
939   /* Symbol for this parameter used for example for its name.  */
940   struct symbol *sym = nullptr;
941 
942   /* Value of the parameter.  It is NULL if ERROR is not NULL; if both VAL and
943      ERROR are NULL this parameter's value should not be printed.  */
944   struct value *val = nullptr;
945 
946   /* String containing the error message, it is more usually NULL indicating no
947      error occurred reading this parameter.  */
948   gdb::unique_xmalloc_ptr<char> error;
949 
950   /* One of the print_entry_values_* entries as appropriate specifically for
951      this frame_arg.  It will be different from print_entry_values.  With
952      print_entry_values_no this frame_arg should be printed as a normal
953      parameter.  print_entry_values_only says it should be printed as entry
954      value parameter.  print_entry_values_compact says it should be printed as
955      both as a normal parameter and entry values parameter having the same
956      value - print_entry_values_compact is not permitted fi ui_out_is_mi_like_p
957      (in such case print_entry_values_no and print_entry_values_only is used
958      for each parameter kind specifically.  */
959   const char *entry_kind = nullptr;
960 };
961 
962 extern void read_frame_arg (const frame_print_options &fp_opts,
963                                   symbol *sym, const frame_info_ptr &frame,
964                                   struct frame_arg *argp,
965                                   struct frame_arg *entryargp);
966 extern void read_frame_local (struct symbol *sym, const frame_info_ptr &frame,
967                                     struct frame_arg *argp);
968 
969 extern void info_args_command (const char *, int);
970 
971 extern void info_locals_command (const char *, int);
972 
973 extern void return_command (const char *, int);
974 
975 /* Set FRAME's unwinder temporarily, so that we can call a sniffer.
976    If sniffing fails, the caller should be sure to call
977    frame_cleanup_after_sniffer.  */
978 
979 extern void frame_prepare_for_sniffer (const frame_info_ptr &frame,
980                                                const struct frame_unwind *unwind);
981 
982 /* Clean up after a failed (wrong unwinder) attempt to unwind past
983    FRAME.  */
984 
985 extern void frame_cleanup_after_sniffer (const frame_info_ptr &frame);
986 
987 /* Notes (cagney/2002-11-27, drow/2003-09-06):
988 
989    You might think that calls to this function can simply be replaced by a
990    call to get_selected_frame().
991 
992    Unfortunately, it isn't that easy.
993 
994    The relevant code needs to be audited to determine if it is
995    possible (or practical) to instead pass the applicable frame in as a
996    parameter.  For instance, DEPRECATED_DO_REGISTERS_INFO() relied on
997    the deprecated_selected_frame global, while its replacement,
998    PRINT_REGISTERS_INFO(), is parameterized with the selected frame.
999    The only real exceptions occur at the edge (in the CLI code) where
1000    user commands need to pick up the selected frame before proceeding.
1001 
1002    There are also some functions called with a NULL frame meaning either "the
1003    program is not running" or "use the selected frame".
1004 
1005    This is important.  GDB is trying to stamp out the hack:
1006 
1007    saved_frame = deprecated_safe_get_selected_frame ();
1008    select_frame (...);
1009    hack_using_global_selected_frame ();
1010    select_frame (saved_frame);
1011 
1012    Take care!
1013 
1014    This function calls get_selected_frame if the inferior should have a
1015    frame, or returns NULL otherwise.  */
1016 
1017 extern frame_info_ptr deprecated_safe_get_selected_frame (void);
1018 
1019 /* Create a frame using the specified BASE and PC.  */
1020 
1021 extern frame_info_ptr create_new_frame (CORE_ADDR base, CORE_ADDR pc);
1022 
1023 /* Return true if the frame unwinder for frame FI is UNWINDER; false
1024    otherwise.  */
1025 
1026 extern bool frame_unwinder_is (const frame_info_ptr &fi, const frame_unwind *unwinder);
1027 
1028 /* Return the language of FRAME.  */
1029 
1030 extern enum language get_frame_language (const frame_info_ptr &frame);
1031 
1032 /* Return the first non-tailcall frame above FRAME or FRAME if it is not a
1033    tailcall frame.  Return NULL if FRAME is the start of a tailcall-only
1034    chain.  */
1035 
1036 extern frame_info_ptr skip_tailcall_frames (const frame_info_ptr &frame);
1037 
1038 /* Return the first frame above FRAME or FRAME of which the code is
1039    writable.  */
1040 
1041 extern frame_info_ptr skip_unwritable_frames (const frame_info_ptr &frame);
1042 
1043 /* Data for the "set backtrace" settings.  */
1044 
1045 struct set_backtrace_options
1046 {
1047   /* Flag to indicate whether backtraces should continue past
1048      main.  */
1049   bool backtrace_past_main = false;
1050 
1051   /* Flag to indicate whether backtraces should continue past
1052      entry.  */
1053   bool backtrace_past_entry = false;
1054 
1055   /* Upper bound on the number of backtrace levels.  Note this is not
1056      exposed as a command option, because "backtrace" and "frame
1057      apply" already have other means to set a frame count limit.  */
1058   unsigned int backtrace_limit = UINT_MAX;
1059 };
1060 
1061 /* The corresponding option definitions.  */
1062 extern const gdb::option::option_def set_backtrace_option_defs[2];
1063 
1064 /* The values behind the global "set backtrace ..." settings.  */
1065 extern set_backtrace_options user_set_backtrace_options;
1066 
1067 /* Get the number of calls to reinit_frame_cache.  */
1068 
1069 unsigned int get_frame_cache_generation ();
1070 
1071 /* Mark that the PC value is masked for the previous frame.  */
1072 
1073 extern void set_frame_previous_pc_masked (const frame_info_ptr &frame);
1074 
1075 /* Get whether the PC value is masked for the given frame.  */
1076 
1077 extern bool get_frame_pc_masked (const frame_info_ptr &frame);
1078 
1079 
1080 #endif /* !defined (FRAME_H)  */
1081