Allow ARC target to be configured with --with-cpu=<cpu-name>.
[external/binutils.git] / gdb / frame.h
1 /* Definitions for dealing with stack frames, for GDB, the GNU debugger.
2
3    Copyright (C) 1986-2016 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 aproaching that.  Frame naming
25    schema:
26
27    Prefixes:
28
29    get_frame_WHAT...(): Get WHAT from the THIS frame (functionaly
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 non-zero / non-NULL if the
49    request succeeds, zero / NULL otherwize.
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 "language.h"
73
74 struct symtab_and_line;
75 struct frame_unwind;
76 struct frame_base;
77 struct block;
78 struct gdbarch;
79 struct ui_file;
80
81 /* Status of a given frame's stack.  */
82
83 enum frame_id_stack_status
84 {
85   /* Stack address is invalid.  E.g., this frame is the outermost
86      (i.e., _start), and the stack hasn't been setup yet.  */
87   FID_STACK_INVALID = 0,
88
89   /* Stack address is valid, and is found in the stack_addr field.  */
90   FID_STACK_VALID = 1,
91
92   /* Stack address is unavailable.  I.e., there's a valid stack, but
93      we don't know where it is (because memory or registers we'd
94      compute it from were not collected).  */
95   FID_STACK_UNAVAILABLE = -1
96 };
97
98 /* The frame object.  */
99
100 struct frame_info;
101
102 /* The frame object's ID.  This provides a per-frame unique identifier
103    that can be used to relocate a `struct frame_info' after a target
104    resume or a frame cache destruct.  It of course assumes that the
105    inferior hasn't unwound the stack past that frame.  */
106
107 struct frame_id
108 {
109   /* The frame's stack address.  This shall be constant through out
110      the lifetime of a frame.  Note that this requirement applies to
111      not just the function body, but also the prologue and (in theory
112      at least) the epilogue.  Since that value needs to fall either on
113      the boundary, or within the frame's address range, the frame's
114      outer-most address (the inner-most address of the previous frame)
115      is used.  Watch out for all the legacy targets that still use the
116      function pointer register or stack pointer register.  They are
117      wrong.
118
119      This field is valid only if frame_id.stack_status is
120      FID_STACK_VALID.  It will be 0 for other
121      FID_STACK_... statuses.  */
122   CORE_ADDR stack_addr;
123
124   /* The frame's code address.  This shall be constant through out the
125      lifetime of the frame.  While the PC (a.k.a. resume address)
126      changes as the function is executed, this code address cannot.
127      Typically, it is set to the address of the entry point of the
128      frame's function (as returned by get_frame_func).
129
130      For inlined functions (INLINE_DEPTH != 0), this is the address of
131      the first executed instruction in the block corresponding to the
132      inlined function.
133
134      This field is valid only if code_addr_p is true.  Otherwise, this
135      frame is considered to have a wildcard code address, i.e. one that
136      matches every address value in frame comparisons.  */
137   CORE_ADDR code_addr;
138
139   /* The frame's special address.  This shall be constant through out the
140      lifetime of the frame.  This is used for architectures that may have
141      frames that do not change the stack but are still distinct and have 
142      some form of distinct identifier (e.g. the ia64 which uses a 2nd 
143      stack for registers).  This field is treated as unordered - i.e. will
144      not be used in frame ordering comparisons.
145
146      This field is valid only if special_addr_p is true.  Otherwise, this
147      frame is considered to have a wildcard special address, i.e. one that
148      matches every address value in frame comparisons.  */
149   CORE_ADDR special_addr;
150
151   /* Flags to indicate the above fields have valid contents.  */
152   ENUM_BITFIELD(frame_id_stack_status) stack_status : 2;
153   unsigned int code_addr_p : 1;
154   unsigned int special_addr_p : 1;
155
156   /* It is non-zero for a frame made up by GDB without stack data
157      representation in inferior, such as INLINE_FRAME or TAILCALL_FRAME.
158      Caller of inlined function will have it zero, each more inner called frame
159      will have it increasingly one, two etc.  Similarly for TAILCALL_FRAME.  */
160   int artificial_depth;
161 };
162
163 /* Methods for constructing and comparing Frame IDs.  */
164
165 /* For convenience.  All fields are zero.  This means "there is no frame".  */
166 extern const struct frame_id null_frame_id;
167
168 /* This means "there is no frame ID, but there is a frame".  It should be
169    replaced by best-effort frame IDs for the outermost frame, somehow.
170    The implementation is only special_addr_p set.  */
171 extern const struct frame_id outer_frame_id;
172
173 /* Flag to control debugging.  */
174
175 extern unsigned int frame_debug;
176
177 /* Construct a frame ID.  The first parameter is the frame's constant
178    stack address (typically the outer-bound), and the second the
179    frame's constant code address (typically the entry point).
180    The special identifier address is set to indicate a wild card.  */
181 extern struct frame_id frame_id_build (CORE_ADDR stack_addr,
182                                        CORE_ADDR code_addr);
183
184 /* Construct a special frame ID.  The first parameter is the frame's constant
185    stack address (typically the outer-bound), the second is the
186    frame's constant code address (typically the entry point),
187    and the third parameter is the frame's special identifier address.  */
188 extern struct frame_id frame_id_build_special (CORE_ADDR stack_addr,
189                                                CORE_ADDR code_addr,
190                                                CORE_ADDR special_addr);
191
192 /* Construct a frame ID representing a frame where the stack address
193    exists, but is unavailable.  CODE_ADDR is the frame's constant code
194    address (typically the entry point).  The special identifier
195    address is set to indicate a wild card.  */
196 extern struct frame_id frame_id_build_unavailable_stack (CORE_ADDR code_addr);
197
198 /* Construct a frame ID representing a frame where the stack address
199    exists, but is unavailable.  CODE_ADDR is the frame's constant code
200    address (typically the entry point).  SPECIAL_ADDR is the special
201    identifier address.  */
202 extern struct frame_id
203   frame_id_build_unavailable_stack_special (CORE_ADDR code_addr,
204                                             CORE_ADDR special_addr);
205
206 /* Construct a wild card frame ID.  The parameter is the frame's constant
207    stack address (typically the outer-bound).  The code address as well
208    as the special identifier address are set to indicate wild cards.  */
209 extern struct frame_id frame_id_build_wild (CORE_ADDR stack_addr);
210
211 /* Returns non-zero when L is a valid frame (a valid frame has a
212    non-zero .base).  The outermost frame is valid even without an
213    ID.  */
214 extern int frame_id_p (struct frame_id l);
215
216 /* Returns non-zero when L is a valid frame representing a frame made up by GDB
217    without stack data representation in inferior, such as INLINE_FRAME or
218    TAILCALL_FRAME.  */
219 extern int frame_id_artificial_p (struct frame_id l);
220
221 /* Returns non-zero when L and R identify the same frame, or, if
222    either L or R have a zero .func, then the same frame base.  */
223 extern int frame_id_eq (struct frame_id l, struct frame_id r);
224
225 /* Write the internal representation of a frame ID on the specified
226    stream.  */
227 extern void fprint_frame_id (struct ui_file *file, struct frame_id id);
228
229
230 /* Frame types.  Some are real, some are signal trampolines, and some
231    are completely artificial (dummy).  */
232
233 enum frame_type
234 {
235   /* A true stack frame, created by the target program during normal
236      execution.  */
237   NORMAL_FRAME,
238   /* A fake frame, created by GDB when performing an inferior function
239      call.  */
240   DUMMY_FRAME,
241   /* A frame representing an inlined function, associated with an
242      upcoming (prev, outer, older) NORMAL_FRAME.  */
243   INLINE_FRAME,
244   /* A virtual frame of a tail call - see dwarf2_tailcall_frame_unwind.  */
245   TAILCALL_FRAME,
246   /* In a signal handler, various OSs handle this in various ways.
247      The main thing is that the frame may be far from normal.  */
248   SIGTRAMP_FRAME,
249   /* Fake frame representing a cross-architecture call.  */
250   ARCH_FRAME,
251   /* Sentinel or registers frame.  This frame obtains register values
252      direct from the inferior's registers.  */
253   SENTINEL_FRAME
254 };
255
256 /* For every stopped thread, GDB tracks two frames: current and
257    selected.  Current frame is the inner most frame of the selected
258    thread.  Selected frame is the one being examined by the GDB
259    CLI (selected using `up', `down', ...).  The frames are created
260    on-demand (via get_prev_frame()) and then held in a frame cache.  */
261 /* FIXME: cagney/2002-11-28: Er, there is a lie here.  If you do the
262    sequence: `thread 1; up; thread 2; thread 1' you lose thread 1's
263    selected frame.  At present GDB only tracks the selected frame of
264    the current thread.  But be warned, that might change.  */
265 /* FIXME: cagney/2002-11-14: At any time, only one thread's selected
266    and current frame can be active.  Switching threads causes gdb to
267    discard all that cached frame information.  Ulgh!  Instead, current
268    and selected frame should be bound to a thread.  */
269
270 /* On demand, create the inner most frame using information found in
271    the inferior.  If the inner most frame can't be created, throw an
272    error.  */
273 extern struct frame_info *get_current_frame (void);
274
275 /* Does the current target interface have enough state to be able to
276    query the current inferior for frame info, and is the inferior in a
277    state where that is possible?  */
278 extern int has_stack_frames (void);
279
280 /* Invalidates the frame cache (this function should have been called
281    invalidate_cached_frames).
282
283    FIXME: cagney/2002-11-28: There should be two methods: one that
284    reverts the thread's selected frame back to current frame (for when
285    the inferior resumes) and one that does not (for when the user
286    modifies the target invalidating the frame cache).  */
287 extern void reinit_frame_cache (void);
288
289 /* On demand, create the selected frame and then return it.  If the
290    selected frame can not be created, this function prints then throws
291    an error.  When MESSAGE is non-NULL, use it for the error message,
292    otherwize use a generic error message.  */
293 /* FIXME: cagney/2002-11-28: At present, when there is no selected
294    frame, this function always returns the current (inner most) frame.
295    It should instead, when a thread has previously had its frame
296    selected (but not resumed) and the frame cache invalidated, find
297    and then return that thread's previously selected frame.  */
298 extern struct frame_info *get_selected_frame (const char *message);
299
300 /* If there is a selected frame, return it.  Otherwise, return NULL.  */
301 extern struct frame_info *get_selected_frame_if_set (void);
302
303 /* Select a specific frame.  NULL, apparently implies re-select the
304    inner most frame.  */
305 extern void select_frame (struct frame_info *);
306
307 /* Given a FRAME, return the next (more inner, younger) or previous
308    (more outer, older) frame.  */
309 extern struct frame_info *get_prev_frame (struct frame_info *);
310 extern struct frame_info *get_next_frame (struct frame_info *);
311
312 /* Return a "struct frame_info" corresponding to the frame that called
313    THIS_FRAME.  Returns NULL if there is no such frame.
314
315    Unlike get_prev_frame, this function always tries to unwind the
316    frame.  */
317 extern struct frame_info *get_prev_frame_always (struct frame_info *);
318
319 /* Given a frame's ID, relocate the frame.  Returns NULL if the frame
320    is not found.  */
321 extern struct frame_info *frame_find_by_id (struct frame_id id);
322
323 /* Base attributes of a frame: */
324
325 /* The frame's `resume' address.  Where the program will resume in
326    this frame.
327
328    This replaced: frame->pc; */
329 extern CORE_ADDR get_frame_pc (struct frame_info *);
330
331 /* Same as get_frame_pc, but return a boolean indication of whether
332    the PC is actually available, instead of throwing an error.  */
333
334 extern int get_frame_pc_if_available (struct frame_info *frame,
335                                       CORE_ADDR *pc);
336
337 /* An address (not necessarily aligned to an instruction boundary)
338    that falls within THIS frame's code block.
339
340    When a function call is the last statement in a block, the return
341    address for the call may land at the start of the next block.
342    Similarly, if a no-return function call is the last statement in
343    the function, the return address may end up pointing beyond the
344    function, and possibly at the start of the next function.
345
346    These methods make an allowance for this.  For call frames, this
347    function returns the frame's PC-1 which "should" be an address in
348    the frame's block.  */
349
350 extern CORE_ADDR get_frame_address_in_block (struct frame_info *this_frame);
351
352 /* Same as get_frame_address_in_block, but returns a boolean
353    indication of whether the frame address is determinable (when the
354    PC is unavailable, it will not be), instead of possibly throwing an
355    error trying to read an unavailable PC.  */
356
357 extern int
358   get_frame_address_in_block_if_available (struct frame_info *this_frame,
359                                            CORE_ADDR *pc);
360
361 /* The frame's inner-most bound.  AKA the stack-pointer.  Confusingly
362    known as top-of-stack.  */
363
364 extern CORE_ADDR get_frame_sp (struct frame_info *);
365
366 /* Following on from the `resume' address.  Return the entry point
367    address of the function containing that resume address, or zero if
368    that function isn't known.  */
369 extern CORE_ADDR get_frame_func (struct frame_info *fi);
370
371 /* Same as get_frame_func, but returns a boolean indication of whether
372    the frame function is determinable (when the PC is unavailable, it
373    will not be), instead of possibly throwing an error trying to read
374    an unavailable PC.  */
375
376 extern int get_frame_func_if_available (struct frame_info *fi, CORE_ADDR *);
377
378 /* Closely related to the resume address, various symbol table
379    attributes that are determined by the PC.  Note that for a normal
380    frame, the PC refers to the resume address after the return, and
381    not the call instruction.  In such a case, the address is adjusted
382    so that it (approximately) identifies the call site (and not the
383    return site).
384
385    NOTE: cagney/2002-11-28: The frame cache could be used to cache the
386    computed value.  Working on the assumption that the bottle-neck is
387    in the single step code, and that code causes the frame cache to be
388    constantly flushed, caching things in a frame is probably of little
389    benefit.  As they say `show us the numbers'.
390
391    NOTE: cagney/2002-11-28: Plenty more where this one came from:
392    find_frame_block(), find_frame_partial_function(),
393    find_frame_symtab(), find_frame_function().  Each will need to be
394    carefully considered to determine if the real intent was for it to
395    apply to the PC or the adjusted PC.  */
396 extern void find_frame_sal (struct frame_info *frame,
397                             struct symtab_and_line *sal);
398
399 /* Set the current source and line to the location given by frame
400    FRAME, if possible.  */
401
402 void set_current_sal_from_frame (struct frame_info *);
403
404 /* Return the frame base (what ever that is) (DEPRECATED).
405
406    Old code was trying to use this single method for two conflicting
407    purposes.  Such code needs to be updated to use either of:
408
409    get_frame_id: A low level frame unique identifier, that consists of
410    both a stack and a function address, that can be used to uniquely
411    identify a frame.  This value is determined by the frame's
412    low-level unwinder, the stack part [typically] being the
413    top-of-stack of the previous frame, and the function part being the
414    function's start address.  Since the correct identification of a
415    frameless function requires both a stack and function address,
416    the old get_frame_base method was not sufficient.
417
418    get_frame_base_address: get_frame_locals_address:
419    get_frame_args_address: A set of high-level debug-info dependant
420    addresses that fall within the frame.  These addresses almost
421    certainly will not match the stack address part of a frame ID (as
422    returned by get_frame_base).
423
424    This replaced: frame->frame; */
425
426 extern CORE_ADDR get_frame_base (struct frame_info *);
427
428 /* Return the per-frame unique identifer.  Can be used to relocate a
429    frame after a frame cache flush (and other similar operations).  If
430    FI is NULL, return the null_frame_id.
431
432    NOTE: kettenis/20040508: These functions return a structure.  On
433    platforms where structures are returned in static storage (vax,
434    m68k), this may trigger compiler bugs in code like:
435
436    if (frame_id_eq (get_frame_id (l), get_frame_id (r)))
437
438    where the return value from the first get_frame_id (l) gets
439    overwritten by the second get_frame_id (r).  Please avoid writing
440    code like this.  Use code like:
441
442    struct frame_id id = get_frame_id (l);
443    if (frame_id_eq (id, get_frame_id (r)))
444
445    instead, since that avoids the bug.  */
446 extern struct frame_id get_frame_id (struct frame_info *fi);
447 extern struct frame_id get_stack_frame_id (struct frame_info *fi);
448 extern struct frame_id frame_unwind_caller_id (struct frame_info *next_frame);
449
450 /* Assuming that a frame is `normal', return its base-address, or 0 if
451    the information isn't available.  NOTE: This address is really only
452    meaningful to the frame's high-level debug info.  */
453 extern CORE_ADDR get_frame_base_address (struct frame_info *);
454
455 /* Assuming that a frame is `normal', return the base-address of the
456    local variables, or 0 if the information isn't available.  NOTE:
457    This address is really only meaningful to the frame's high-level
458    debug info.  Typically, the argument and locals share a single
459    base-address.  */
460 extern CORE_ADDR get_frame_locals_address (struct frame_info *);
461
462 /* Assuming that a frame is `normal', return the base-address of the
463    parameter list, or 0 if that information isn't available.  NOTE:
464    This address is really only meaningful to the frame's high-level
465    debug info.  Typically, the argument and locals share a single
466    base-address.  */
467 extern CORE_ADDR get_frame_args_address (struct frame_info *);
468
469 /* The frame's level: 0 for innermost, 1 for its caller, ...; or -1
470    for an invalid frame).  */
471 extern int frame_relative_level (struct frame_info *fi);
472
473 /* Return the frame's type.  */
474
475 extern enum frame_type get_frame_type (struct frame_info *);
476
477 /* Return the frame's program space.  */
478 extern struct program_space *get_frame_program_space (struct frame_info *);
479
480 /* Unwind THIS frame's program space from the NEXT frame.  */
481 extern struct program_space *frame_unwind_program_space (struct frame_info *);
482
483 /* Return the frame's address space.  */
484 extern struct address_space *get_frame_address_space (struct frame_info *);
485
486 /* For frames where we can not unwind further, describe why.  */
487
488 enum unwind_stop_reason
489   {
490 #define SET(name, description) name,
491 #define FIRST_ENTRY(name) UNWIND_FIRST = name,
492 #define LAST_ENTRY(name) UNWIND_LAST = name,
493 #define FIRST_ERROR(name) UNWIND_FIRST_ERROR = name,
494
495 #include "unwind_stop_reasons.def"
496 #undef SET
497 #undef FIRST_ENTRY
498 #undef LAST_ENTRY
499 #undef FIRST_ERROR
500   };
501
502 /* Return the reason why we can't unwind past this frame.  */
503
504 enum unwind_stop_reason get_frame_unwind_stop_reason (struct frame_info *);
505
506 /* Translate a reason code to an informative string.  This converts the
507    generic stop reason codes into a generic string describing the code.
508    For a possibly frame specific string explaining the stop reason, use
509    FRAME_STOP_REASON_STRING instead.  */
510
511 const char *unwind_stop_reason_to_string (enum unwind_stop_reason);
512
513 /* Return a possibly frame specific string explaining why the unwind
514    stopped here.  E.g., if unwinding tripped on a memory error, this
515    will return the error description string, which includes the address
516    that we failed to access.  If there's no specific reason stored for
517    a frame then a generic reason string will be returned.
518
519    Should only be called for frames that don't have a previous frame.  */
520
521 const char *frame_stop_reason_string (struct frame_info *);
522
523 /* Unwind the stack frame so that the value of REGNUM, in the previous
524    (up, older) frame is returned.  If VALUEP is NULL, don't
525    fetch/compute the value.  Instead just return the location of the
526    value.  */
527 extern void frame_register_unwind (struct frame_info *frame, int regnum,
528                                    int *optimizedp, int *unavailablep,
529                                    enum lval_type *lvalp,
530                                    CORE_ADDR *addrp, int *realnump,
531                                    gdb_byte *valuep);
532
533 /* Fetch a register from this, or unwind a register from the next
534    frame.  Note that the get_frame methods are wrappers to
535    frame->next->unwind.  They all [potentially] throw an error if the
536    fetch fails.  The value methods never return NULL, but usually
537    do return a lazy value.  */
538
539 extern void frame_unwind_register (struct frame_info *frame,
540                                    int regnum, gdb_byte *buf);
541 extern void get_frame_register (struct frame_info *frame,
542                                 int regnum, gdb_byte *buf);
543
544 struct value *frame_unwind_register_value (struct frame_info *frame,
545                                            int regnum);
546 struct value *get_frame_register_value (struct frame_info *frame,
547                                         int regnum);
548
549 extern LONGEST frame_unwind_register_signed (struct frame_info *frame,
550                                              int regnum);
551 extern LONGEST get_frame_register_signed (struct frame_info *frame,
552                                           int regnum);
553 extern ULONGEST frame_unwind_register_unsigned (struct frame_info *frame,
554                                                int regnum);
555 extern ULONGEST get_frame_register_unsigned (struct frame_info *frame,
556                                              int regnum);
557
558 /* Read a register from this, or unwind a register from the next
559    frame.  Note that the read_frame methods are wrappers to
560    get_frame_register_value, that do not throw if the result is
561    optimized out or unavailable.  */
562
563 extern int read_frame_register_unsigned (struct frame_info *frame,
564                                          int regnum, ULONGEST *val);
565
566 /* Get the value of the register that belongs to this FRAME.  This
567    function is a wrapper to the call sequence ``frame_register_unwind
568    (get_next_frame (FRAME))''.  As per frame_register_unwind(), if
569    VALUEP is NULL, the registers value is not fetched/computed.  */
570
571 extern void frame_register (struct frame_info *frame, int regnum,
572                             int *optimizedp, int *unavailablep,
573                             enum lval_type *lvalp,
574                             CORE_ADDR *addrp, int *realnump,
575                             gdb_byte *valuep);
576
577 /* The reverse.  Store a register value relative to the specified
578    frame.  Note: this call makes the frame's state undefined.  The
579    register and frame caches must be flushed.  */
580 extern void put_frame_register (struct frame_info *frame, int regnum,
581                                 const gdb_byte *buf);
582
583 /* Read LEN bytes from one or multiple registers starting with REGNUM
584    in frame FRAME, starting at OFFSET, into BUF.  If the register
585    contents are optimized out or unavailable, set *OPTIMIZEDP,
586    *UNAVAILABLEP accordingly.  */
587 extern int get_frame_register_bytes (struct frame_info *frame, int regnum,
588                                      CORE_ADDR offset, int len,
589                                      gdb_byte *myaddr,
590                                      int *optimizedp, int *unavailablep);
591
592 /* Write LEN bytes to one or multiple registers starting with REGNUM
593    in frame FRAME, starting at OFFSET, into BUF.  */
594 extern void put_frame_register_bytes (struct frame_info *frame, int regnum,
595                                       CORE_ADDR offset, int len,
596                                       const gdb_byte *myaddr);
597
598 /* Unwind the PC.  Strictly speaking return the resume address of the
599    calling frame.  For GDB, `pc' is the resume address and not a
600    specific register.  */
601
602 extern CORE_ADDR frame_unwind_caller_pc (struct frame_info *frame);
603
604 /* Discard the specified frame.  Restoring the registers to the state
605    of the caller.  */
606 extern void frame_pop (struct frame_info *frame);
607
608 /* Return memory from the specified frame.  A frame knows its thread /
609    LWP and hence can find its way down to a target.  The assumption
610    here is that the current and previous frame share a common address
611    space.
612
613    If the memory read fails, these methods throw an error.
614
615    NOTE: cagney/2003-06-03: Should there be unwind versions of these
616    methods?  That isn't clear.  Can code, for instance, assume that
617    this and the previous frame's memory or architecture are identical?
618    If architecture / memory changes are always separated by special
619    adaptor frames this should be ok.  */
620
621 extern void get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr,
622                               gdb_byte *buf, int len);
623 extern LONGEST get_frame_memory_signed (struct frame_info *this_frame,
624                                         CORE_ADDR memaddr, int len);
625 extern ULONGEST get_frame_memory_unsigned (struct frame_info *this_frame,
626                                            CORE_ADDR memaddr, int len);
627
628 /* Same as above, but return non-zero when the entire memory read
629    succeeds, zero otherwize.  */
630 extern int safe_frame_unwind_memory (struct frame_info *this_frame,
631                                      CORE_ADDR addr, gdb_byte *buf, int len);
632
633 /* Return this frame's architecture.  */
634 extern struct gdbarch *get_frame_arch (struct frame_info *this_frame);
635
636 /* Return the previous frame's architecture.  */
637 extern struct gdbarch *frame_unwind_arch (struct frame_info *frame);
638
639 /* Return the previous frame's architecture, skipping inline functions.  */
640 extern struct gdbarch *frame_unwind_caller_arch (struct frame_info *frame);
641
642
643 /* Values for the source flag to be used in print_frame_info_base().  */
644 enum print_what
645   { 
646     /* Print only the source line, like in stepi.  */
647     SRC_LINE = -1, 
648     /* Print only the location, i.e. level, address (sometimes)
649        function, args, file, line, line num.  */
650     LOCATION,
651     /* Print both of the above.  */
652     SRC_AND_LOC, 
653     /* Print location only, but always include the address.  */
654     LOC_AND_ADDRESS 
655   };
656
657 /* Allocate zero initialized memory from the frame cache obstack.
658    Appendices to the frame info (such as the unwind cache) should
659    allocate memory using this method.  */
660
661 extern void *frame_obstack_zalloc (unsigned long size);
662 #define FRAME_OBSTACK_ZALLOC(TYPE) \
663   ((TYPE *) frame_obstack_zalloc (sizeof (TYPE)))
664 #define FRAME_OBSTACK_CALLOC(NUMBER,TYPE) \
665   ((TYPE *) frame_obstack_zalloc ((NUMBER) * sizeof (TYPE)))
666
667 /* Create a regcache, and copy the frame's registers into it.  */
668 struct regcache *frame_save_as_regcache (struct frame_info *this_frame);
669
670 extern const struct block *get_frame_block (struct frame_info *,
671                                             CORE_ADDR *addr_in_block);
672
673 /* Return the `struct block' that belongs to the selected thread's
674    selected frame.  If the inferior has no state, return NULL.
675
676    NOTE: cagney/2002-11-29:
677
678    No state?  Does the inferior have any execution state (a core file
679    does, an executable does not).  At present the code tests
680    `target_has_stack' but I'm left wondering if it should test
681    `target_has_registers' or, even, a merged target_has_state.
682
683    Should it look at the most recently specified SAL?  If the target
684    has no state, should this function try to extract a block from the
685    most recently selected SAL?  That way `list foo' would give it some
686    sort of reference point.  Then again, perhaps that would confuse
687    things.
688
689    Calls to this function can be broken down into two categories: Code
690    that uses the selected block as an additional, but optional, data
691    point; Code that uses the selected block as a prop, when it should
692    have the relevant frame/block/pc explicitly passed in.
693
694    The latter can be eliminated by correctly parameterizing the code,
695    the former though is more interesting.  Per the "address" command,
696    it occurs in the CLI code and makes it possible for commands to
697    work, even when the inferior has no state.  */
698
699 extern const struct block *get_selected_block (CORE_ADDR *addr_in_block);
700
701 extern struct symbol *get_frame_function (struct frame_info *);
702
703 extern CORE_ADDR get_pc_function_start (CORE_ADDR);
704
705 extern struct frame_info *find_relative_frame (struct frame_info *, int *);
706
707 extern void print_stack_frame (struct frame_info *, int print_level,
708                                enum print_what print_what,
709                                int set_current_sal);
710
711 extern void print_frame_info (struct frame_info *, int print_level,
712                               enum print_what print_what, int args,
713                               int set_current_sal);
714
715 extern struct frame_info *block_innermost_frame (const struct block *);
716
717 extern int deprecated_frame_register_read (struct frame_info *frame, int regnum,
718                                 gdb_byte *buf);
719
720 /* From stack.c.  */
721
722 extern const char print_entry_values_no[];
723 extern const char print_entry_values_only[];
724 extern const char print_entry_values_preferred[];
725 extern const char print_entry_values_if_needed[];
726 extern const char print_entry_values_both[];
727 extern const char print_entry_values_compact[];
728 extern const char print_entry_values_default[];
729 extern const char *print_entry_values;
730
731 /* Inferior function parameter value read in from a frame.  */
732
733 struct frame_arg
734 {
735   /* Symbol for this parameter used for example for its name.  */
736   struct symbol *sym;
737
738   /* Value of the parameter.  It is NULL if ERROR is not NULL; if both VAL and
739      ERROR are NULL this parameter's value should not be printed.  */
740   struct value *val;
741
742   /* String containing the error message, it is more usually NULL indicating no
743      error occured reading this parameter.  */
744   char *error;
745
746   /* One of the print_entry_values_* entries as appropriate specifically for
747      this frame_arg.  It will be different from print_entry_values.  With
748      print_entry_values_no this frame_arg should be printed as a normal
749      parameter.  print_entry_values_only says it should be printed as entry
750      value parameter.  print_entry_values_compact says it should be printed as
751      both as a normal parameter and entry values parameter having the same
752      value - print_entry_values_compact is not permitted fi ui_out_is_mi_like_p
753      (in such case print_entry_values_no and print_entry_values_only is used
754      for each parameter kind specifically.  */
755   const char *entry_kind;
756 };
757
758 extern void read_frame_arg (struct symbol *sym, struct frame_info *frame,
759                             struct frame_arg *argp,
760                             struct frame_arg *entryargp);
761 extern void read_frame_local (struct symbol *sym, struct frame_info *frame,
762                               struct frame_arg *argp);
763
764 extern void args_info (char *, int);
765
766 extern void locals_info (char *, int);
767
768 extern void return_command (char *, int);
769
770 /* Set FRAME's unwinder temporarily, so that we can call a sniffer.
771    Return a cleanup which should be called if unwinding fails, and
772    discarded if it succeeds.  */
773
774 struct cleanup *frame_prepare_for_sniffer (struct frame_info *frame,
775                                            const struct frame_unwind *unwind);
776
777 /* Notes (cagney/2002-11-27, drow/2003-09-06):
778
779    You might think that calls to this function can simply be replaced by a
780    call to get_selected_frame().
781
782    Unfortunately, it isn't that easy.
783
784    The relevant code needs to be audited to determine if it is
785    possible (or practical) to instead pass the applicable frame in as a
786    parameter.  For instance, DEPRECATED_DO_REGISTERS_INFO() relied on
787    the deprecated_selected_frame global, while its replacement,
788    PRINT_REGISTERS_INFO(), is parameterized with the selected frame.
789    The only real exceptions occur at the edge (in the CLI code) where
790    user commands need to pick up the selected frame before proceeding.
791
792    There are also some functions called with a NULL frame meaning either "the
793    program is not running" or "use the selected frame".
794
795    This is important.  GDB is trying to stamp out the hack:
796
797    saved_frame = deprecated_safe_get_selected_frame ();
798    select_frame (...);
799    hack_using_global_selected_frame ();
800    select_frame (saved_frame);
801
802    Take care!
803
804    This function calls get_selected_frame if the inferior should have a
805    frame, or returns NULL otherwise.  */
806
807 extern struct frame_info *deprecated_safe_get_selected_frame (void);
808
809 /* Create a frame using the specified BASE and PC.  */
810
811 extern struct frame_info *create_new_frame (CORE_ADDR base, CORE_ADDR pc);
812
813 /* Return true if the frame unwinder for frame FI is UNWINDER; false
814    otherwise.  */
815
816 extern int frame_unwinder_is (struct frame_info *fi,
817                               const struct frame_unwind *unwinder);
818
819 /* Return the language of FRAME.  */
820
821 extern enum language get_frame_language (struct frame_info *frame);
822
823 /* Return the first non-tailcall frame above FRAME or FRAME if it is not a
824    tailcall frame.  Return NULL if FRAME is the start of a tailcall-only
825    chain.  */
826
827 extern struct frame_info *skip_tailcall_frames (struct frame_info *frame);
828
829 /* Return the first frame above FRAME or FRAME of which the code is
830    writable.  */
831
832 extern struct frame_info *skip_unwritable_frames (struct frame_info *frame);
833
834 #endif /* !defined (FRAME_H)  */