GDB (API)
/home/stan/gdb/src/gdb/frame.h
Go to the documentation of this file.
00001 /* Definitions for dealing with stack frames, for GDB, the GNU debugger.
00002 
00003    Copyright (C) 1986-2013 Free Software Foundation, Inc.
00004 
00005    This file is part of GDB.
00006 
00007    This program is free software; you can redistribute it and/or modify
00008    it under the terms of the GNU General Public License as published by
00009    the Free Software Foundation; either version 3 of the License, or
00010    (at your option) any later version.
00011 
00012    This program is distributed in the hope that it will be useful,
00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015    GNU General Public License for more details.
00016 
00017    You should have received a copy of the GNU General Public License
00018    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
00019 
00020 #if !defined (FRAME_H)
00021 #define FRAME_H 1
00022 
00023 /* The following is the intended naming schema for frame functions.
00024    It isn't 100% consistent, but it is aproaching that.  Frame naming
00025    schema:
00026 
00027    Prefixes:
00028 
00029    get_frame_WHAT...(): Get WHAT from the THIS frame (functionaly
00030    equivalent to THIS->next->unwind->what)
00031 
00032    frame_unwind_WHAT...(): Unwind THIS frame's WHAT from the NEXT
00033    frame.
00034 
00035    frame_unwind_caller_WHAT...(): Unwind WHAT for NEXT stack frame's
00036    real caller.  Any inlined functions in NEXT's stack frame are
00037    skipped.  Use these to ignore any potentially inlined functions,
00038    e.g. inlined into the first instruction of a library trampoline.
00039 
00040    get_stack_frame_WHAT...(): Get WHAT for THIS frame, but if THIS is
00041    inlined, skip to the containing stack frame.
00042 
00043    put_frame_WHAT...(): Put a value into this frame (unsafe, need to
00044    invalidate the frame / regcache afterwards) (better name more
00045    strongly hinting at its unsafeness)
00046 
00047    safe_....(): Safer version of various functions, doesn't throw an
00048    error (leave this for later?).  Returns non-zero / non-NULL if the
00049    request succeeds, zero / NULL otherwize.
00050 
00051    Suffixes:
00052 
00053    void /frame/_WHAT(): Read WHAT's value into the buffer parameter.
00054 
00055    ULONGEST /frame/_WHAT_unsigned(): Return an unsigned value (the
00056    alternative is *frame_unsigned_WHAT).
00057 
00058    LONGEST /frame/_WHAT_signed(): Return WHAT signed value.
00059 
00060    What:
00061 
00062    /frame/_memory* (frame, coreaddr, len [, buf]): Extract/return
00063    *memory.
00064 
00065    /frame/_register* (frame, regnum [, buf]): extract/return register.
00066 
00067    CORE_ADDR /frame/_{pc,sp,...} (frame): Resume address, innner most
00068    stack *address, ...
00069 
00070    */
00071 
00072 struct symtab_and_line;
00073 struct frame_unwind;
00074 struct frame_base;
00075 struct block;
00076 struct gdbarch;
00077 struct ui_file;
00078 
00079 /* The frame object.  */
00080 
00081 struct frame_info;
00082 
00083 /* The frame object's ID.  This provides a per-frame unique identifier
00084    that can be used to relocate a `struct frame_info' after a target
00085    resume or a frame cache destruct.  It of course assumes that the
00086    inferior hasn't unwound the stack past that frame.  */
00087 
00088 struct frame_id
00089 {
00090   /* The frame's stack address.  This shall be constant through out
00091      the lifetime of a frame.  Note that this requirement applies to
00092      not just the function body, but also the prologue and (in theory
00093      at least) the epilogue.  Since that value needs to fall either on
00094      the boundary, or within the frame's address range, the frame's
00095      outer-most address (the inner-most address of the previous frame)
00096      is used.  Watch out for all the legacy targets that still use the
00097      function pointer register or stack pointer register.  They are
00098      wrong.
00099 
00100      This field is valid only if stack_addr_p is true.  Otherwise, this
00101      frame represents the null frame.  */
00102   CORE_ADDR stack_addr;
00103 
00104   /* The frame's code address.  This shall be constant through out the
00105      lifetime of the frame.  While the PC (a.k.a. resume address)
00106      changes as the function is executed, this code address cannot.
00107      Typically, it is set to the address of the entry point of the
00108      frame's function (as returned by get_frame_func).
00109 
00110      For inlined functions (INLINE_DEPTH != 0), this is the address of
00111      the first executed instruction in the block corresponding to the
00112      inlined function.
00113 
00114      This field is valid only if code_addr_p is true.  Otherwise, this
00115      frame is considered to have a wildcard code address, i.e. one that
00116      matches every address value in frame comparisons.  */
00117   CORE_ADDR code_addr;
00118 
00119   /* The frame's special address.  This shall be constant through out the
00120      lifetime of the frame.  This is used for architectures that may have
00121      frames that do not change the stack but are still distinct and have 
00122      some form of distinct identifier (e.g. the ia64 which uses a 2nd 
00123      stack for registers).  This field is treated as unordered - i.e. will
00124      not be used in frame ordering comparisons.
00125 
00126      This field is valid only if special_addr_p is true.  Otherwise, this
00127      frame is considered to have a wildcard special address, i.e. one that
00128      matches every address value in frame comparisons.  */
00129   CORE_ADDR special_addr;
00130 
00131   /* Flags to indicate the above fields have valid contents.  */
00132   unsigned int stack_addr_p : 1;
00133   unsigned int code_addr_p : 1;
00134   unsigned int special_addr_p : 1;
00135 
00136   /* It is non-zero for a frame made up by GDB without stack data
00137      representation in inferior, such as INLINE_FRAME or TAILCALL_FRAME.
00138      Caller of inlined function will have it zero, each more inner called frame
00139      will have it increasingly one, two etc.  Similarly for TAILCALL_FRAME.  */
00140   int artificial_depth;
00141 };
00142 
00143 /* Methods for constructing and comparing Frame IDs.  */
00144 
00145 /* For convenience.  All fields are zero.  This means "there is no frame".  */
00146 extern const struct frame_id null_frame_id;
00147 
00148 /* This means "there is no frame ID, but there is a frame".  It should be
00149    replaced by best-effort frame IDs for the outermost frame, somehow.
00150    The implementation is only special_addr_p set.  */
00151 extern const struct frame_id outer_frame_id;
00152 
00153 /* Flag to control debugging.  */
00154 
00155 extern unsigned int frame_debug;
00156 
00157 /* Construct a frame ID.  The first parameter is the frame's constant
00158    stack address (typically the outer-bound), and the second the
00159    frame's constant code address (typically the entry point).
00160    The special identifier address is set to indicate a wild card.  */
00161 extern struct frame_id frame_id_build (CORE_ADDR stack_addr,
00162                                        CORE_ADDR code_addr);
00163 
00164 /* Construct a special frame ID.  The first parameter is the frame's constant
00165    stack address (typically the outer-bound), the second is the
00166    frame's constant code address (typically the entry point),
00167    and the third parameter is the frame's special identifier address.  */
00168 extern struct frame_id frame_id_build_special (CORE_ADDR stack_addr,
00169                                                CORE_ADDR code_addr,
00170                                                CORE_ADDR special_addr);
00171 
00172 /* Construct a wild card frame ID.  The parameter is the frame's constant
00173    stack address (typically the outer-bound).  The code address as well
00174    as the special identifier address are set to indicate wild cards.  */
00175 extern struct frame_id frame_id_build_wild (CORE_ADDR stack_addr);
00176 
00177 /* Returns non-zero when L is a valid frame (a valid frame has a
00178    non-zero .base).  The outermost frame is valid even without an
00179    ID.  */
00180 extern int frame_id_p (struct frame_id l);
00181 
00182 /* Returns non-zero when L is a valid frame representing a frame made up by GDB
00183    without stack data representation in inferior, such as INLINE_FRAME or
00184    TAILCALL_FRAME.  */
00185 extern int frame_id_artificial_p (struct frame_id l);
00186 
00187 /* Returns non-zero when L and R identify the same frame, or, if
00188    either L or R have a zero .func, then the same frame base.  */
00189 extern int frame_id_eq (struct frame_id l, struct frame_id r);
00190 
00191 /* Write the internal representation of a frame ID on the specified
00192    stream.  */
00193 extern void fprint_frame_id (struct ui_file *file, struct frame_id id);
00194 
00195 
00196 /* Frame types.  Some are real, some are signal trampolines, and some
00197    are completely artificial (dummy).  */
00198 
00199 enum frame_type
00200 {
00201   /* A true stack frame, created by the target program during normal
00202      execution.  */
00203   NORMAL_FRAME,
00204   /* A fake frame, created by GDB when performing an inferior function
00205      call.  */
00206   DUMMY_FRAME,
00207   /* A frame representing an inlined function, associated with an
00208      upcoming (prev, outer, older) NORMAL_FRAME.  */
00209   INLINE_FRAME,
00210   /* A virtual frame of a tail call - see dwarf2_tailcall_frame_unwind.  */
00211   TAILCALL_FRAME,
00212   /* In a signal handler, various OSs handle this in various ways.
00213      The main thing is that the frame may be far from normal.  */
00214   SIGTRAMP_FRAME,
00215   /* Fake frame representing a cross-architecture call.  */
00216   ARCH_FRAME,
00217   /* Sentinel or registers frame.  This frame obtains register values
00218      direct from the inferior's registers.  */
00219   SENTINEL_FRAME
00220 };
00221 
00222 /* For every stopped thread, GDB tracks two frames: current and
00223    selected.  Current frame is the inner most frame of the selected
00224    thread.  Selected frame is the one being examined by the GDB
00225    CLI (selected using `up', `down', ...).  The frames are created
00226    on-demand (via get_prev_frame()) and then held in a frame cache.  */
00227 /* FIXME: cagney/2002-11-28: Er, there is a lie here.  If you do the
00228    sequence: `thread 1; up; thread 2; thread 1' you lose thread 1's
00229    selected frame.  At present GDB only tracks the selected frame of
00230    the current thread.  But be warned, that might change.  */
00231 /* FIXME: cagney/2002-11-14: At any time, only one thread's selected
00232    and current frame can be active.  Switching threads causes gdb to
00233    discard all that cached frame information.  Ulgh!  Instead, current
00234    and selected frame should be bound to a thread.  */
00235 
00236 /* On demand, create the inner most frame using information found in
00237    the inferior.  If the inner most frame can't be created, throw an
00238    error.  */
00239 extern struct frame_info *get_current_frame (void);
00240 
00241 /* Does the current target interface have enough state to be able to
00242    query the current inferior for frame info, and is the inferior in a
00243    state where that is possible?  */
00244 extern int has_stack_frames (void);
00245 
00246 /* Invalidates the frame cache (this function should have been called
00247    invalidate_cached_frames).
00248 
00249    FIXME: cagney/2002-11-28: There should be two methods: one that
00250    reverts the thread's selected frame back to current frame (for when
00251    the inferior resumes) and one that does not (for when the user
00252    modifies the target invalidating the frame cache).  */
00253 extern void reinit_frame_cache (void);
00254 
00255 /* On demand, create the selected frame and then return it.  If the
00256    selected frame can not be created, this function prints then throws
00257    an error.  When MESSAGE is non-NULL, use it for the error message,
00258    otherwize use a generic error message.  */
00259 /* FIXME: cagney/2002-11-28: At present, when there is no selected
00260    frame, this function always returns the current (inner most) frame.
00261    It should instead, when a thread has previously had its frame
00262    selected (but not resumed) and the frame cache invalidated, find
00263    and then return that thread's previously selected frame.  */
00264 extern struct frame_info *get_selected_frame (const char *message);
00265 
00266 /* If there is a selected frame, return it.  Otherwise, return NULL.  */
00267 extern struct frame_info *get_selected_frame_if_set (void);
00268 
00269 /* Select a specific frame.  NULL, apparently implies re-select the
00270    inner most frame.  */
00271 extern void select_frame (struct frame_info *);
00272 
00273 /* Given a FRAME, return the next (more inner, younger) or previous
00274    (more outer, older) frame.  */
00275 extern struct frame_info *get_prev_frame (struct frame_info *);
00276 extern struct frame_info *get_next_frame (struct frame_info *);
00277 
00278 /* Given a frame's ID, relocate the frame.  Returns NULL if the frame
00279    is not found.  */
00280 extern struct frame_info *frame_find_by_id (struct frame_id id);
00281 
00282 /* Base attributes of a frame: */
00283 
00284 /* The frame's `resume' address.  Where the program will resume in
00285    this frame.
00286 
00287    This replaced: frame->pc; */
00288 extern CORE_ADDR get_frame_pc (struct frame_info *);
00289 
00290 /* Same as get_frame_pc, but return a boolean indication of whether
00291    the PC is actually available, instead of throwing an error.  */
00292 
00293 extern int get_frame_pc_if_available (struct frame_info *frame,
00294                                       CORE_ADDR *pc);
00295 
00296 /* An address (not necessarily aligned to an instruction boundary)
00297    that falls within THIS frame's code block.
00298 
00299    When a function call is the last statement in a block, the return
00300    address for the call may land at the start of the next block.
00301    Similarly, if a no-return function call is the last statement in
00302    the function, the return address may end up pointing beyond the
00303    function, and possibly at the start of the next function.
00304 
00305    These methods make an allowance for this.  For call frames, this
00306    function returns the frame's PC-1 which "should" be an address in
00307    the frame's block.  */
00308 
00309 extern CORE_ADDR get_frame_address_in_block (struct frame_info *this_frame);
00310 
00311 /* Same as get_frame_address_in_block, but returns a boolean
00312    indication of whether the frame address is determinable (when the
00313    PC is unavailable, it will not be), instead of possibly throwing an
00314    error trying to read an unavailable PC.  */
00315 
00316 extern int
00317   get_frame_address_in_block_if_available (struct frame_info *this_frame,
00318                                            CORE_ADDR *pc);
00319 
00320 /* The frame's inner-most bound.  AKA the stack-pointer.  Confusingly
00321    known as top-of-stack.  */
00322 
00323 extern CORE_ADDR get_frame_sp (struct frame_info *);
00324 
00325 /* Following on from the `resume' address.  Return the entry point
00326    address of the function containing that resume address, or zero if
00327    that function isn't known.  */
00328 extern CORE_ADDR get_frame_func (struct frame_info *fi);
00329 
00330 /* Same as get_frame_func, but returns a boolean indication of whether
00331    the frame function is determinable (when the PC is unavailable, it
00332    will not be), instead of possibly throwing an error trying to read
00333    an unavailable PC.  */
00334 
00335 extern int get_frame_func_if_available (struct frame_info *fi, CORE_ADDR *);
00336 
00337 /* Closely related to the resume address, various symbol table
00338    attributes that are determined by the PC.  Note that for a normal
00339    frame, the PC refers to the resume address after the return, and
00340    not the call instruction.  In such a case, the address is adjusted
00341    so that it (approximately) identifies the call site (and not the
00342    return site).
00343 
00344    NOTE: cagney/2002-11-28: The frame cache could be used to cache the
00345    computed value.  Working on the assumption that the bottle-neck is
00346    in the single step code, and that code causes the frame cache to be
00347    constantly flushed, caching things in a frame is probably of little
00348    benefit.  As they say `show us the numbers'.
00349 
00350    NOTE: cagney/2002-11-28: Plenty more where this one came from:
00351    find_frame_block(), find_frame_partial_function(),
00352    find_frame_symtab(), find_frame_function().  Each will need to be
00353    carefully considered to determine if the real intent was for it to
00354    apply to the PC or the adjusted PC.  */
00355 extern void find_frame_sal (struct frame_info *frame,
00356                             struct symtab_and_line *sal);
00357 
00358 /* Set the current source and line to the location given by frame
00359    FRAME, if possible.  When CENTER is true, adjust so the relevant
00360    line is in the center of the next 'list'.  */
00361 
00362 void set_current_sal_from_frame (struct frame_info *, int);
00363 
00364 /* Return the frame base (what ever that is) (DEPRECATED).
00365 
00366    Old code was trying to use this single method for two conflicting
00367    purposes.  Such code needs to be updated to use either of:
00368 
00369    get_frame_id: A low level frame unique identifier, that consists of
00370    both a stack and a function address, that can be used to uniquely
00371    identify a frame.  This value is determined by the frame's
00372    low-level unwinder, the stack part [typically] being the
00373    top-of-stack of the previous frame, and the function part being the
00374    function's start address.  Since the correct identification of a
00375    frameless function requires both a stack and function address,
00376    the old get_frame_base method was not sufficient.
00377 
00378    get_frame_base_address: get_frame_locals_address:
00379    get_frame_args_address: A set of high-level debug-info dependant
00380    addresses that fall within the frame.  These addresses almost
00381    certainly will not match the stack address part of a frame ID (as
00382    returned by get_frame_base).
00383 
00384    This replaced: frame->frame; */
00385 
00386 extern CORE_ADDR get_frame_base (struct frame_info *);
00387 
00388 /* Return the per-frame unique identifer.  Can be used to relocate a
00389    frame after a frame cache flush (and other similar operations).  If
00390    FI is NULL, return the null_frame_id.
00391 
00392    NOTE: kettenis/20040508: These functions return a structure.  On
00393    platforms where structures are returned in static storage (vax,
00394    m68k), this may trigger compiler bugs in code like:
00395 
00396    if (frame_id_eq (get_frame_id (l), get_frame_id (r)))
00397 
00398    where the return value from the first get_frame_id (l) gets
00399    overwritten by the second get_frame_id (r).  Please avoid writing
00400    code like this.  Use code like:
00401 
00402    struct frame_id id = get_frame_id (l);
00403    if (frame_id_eq (id, get_frame_id (r)))
00404 
00405    instead, since that avoids the bug.  */
00406 extern struct frame_id get_frame_id (struct frame_info *fi);
00407 extern struct frame_id get_stack_frame_id (struct frame_info *fi);
00408 extern struct frame_id frame_unwind_caller_id (struct frame_info *next_frame);
00409 
00410 /* Assuming that a frame is `normal', return its base-address, or 0 if
00411    the information isn't available.  NOTE: This address is really only
00412    meaningful to the frame's high-level debug info.  */
00413 extern CORE_ADDR get_frame_base_address (struct frame_info *);
00414 
00415 /* Assuming that a frame is `normal', return the base-address of the
00416    local variables, or 0 if the information isn't available.  NOTE:
00417    This address is really only meaningful to the frame's high-level
00418    debug info.  Typically, the argument and locals share a single
00419    base-address.  */
00420 extern CORE_ADDR get_frame_locals_address (struct frame_info *);
00421 
00422 /* Assuming that a frame is `normal', return the base-address of the
00423    parameter list, or 0 if that information isn't available.  NOTE:
00424    This address is really only meaningful to the frame's high-level
00425    debug info.  Typically, the argument and locals share a single
00426    base-address.  */
00427 extern CORE_ADDR get_frame_args_address (struct frame_info *);
00428 
00429 /* The frame's level: 0 for innermost, 1 for its caller, ...; or -1
00430    for an invalid frame).  */
00431 extern int frame_relative_level (struct frame_info *fi);
00432 
00433 /* Return the frame's type.  */
00434 
00435 extern enum frame_type get_frame_type (struct frame_info *);
00436 
00437 /* Return the frame's program space.  */
00438 extern struct program_space *get_frame_program_space (struct frame_info *);
00439 
00440 /* Unwind THIS frame's program space from the NEXT frame.  */
00441 extern struct program_space *frame_unwind_program_space (struct frame_info *);
00442 
00443 /* Return the frame's address space.  */
00444 extern struct address_space *get_frame_address_space (struct frame_info *);
00445 
00446 /* For frames where we can not unwind further, describe why.  */
00447 
00448 enum unwind_stop_reason
00449   {
00450 #define SET(name, description) name,
00451 #define FIRST_ENTRY(name) UNWIND_FIRST = name,
00452 #define LAST_ENTRY(name) UNWIND_LAST = name,
00453 #define FIRST_ERROR(name) UNWIND_FIRST_ERROR = name,
00454 
00455 #include "unwind_stop_reasons.def"
00456 #undef SET
00457 #undef FIRST_ENTRY
00458 #undef LAST_ENTRY
00459 #undef FIRST_ERROR
00460   };
00461 
00462 /* Return the reason why we can't unwind past this frame.  */
00463 
00464 enum unwind_stop_reason get_frame_unwind_stop_reason (struct frame_info *);
00465 
00466 /* Translate a reason code to an informative string.  */
00467 
00468 const char *frame_stop_reason_string (enum unwind_stop_reason);
00469 
00470 /* Unwind the stack frame so that the value of REGNUM, in the previous
00471    (up, older) frame is returned.  If VALUEP is NULL, don't
00472    fetch/compute the value.  Instead just return the location of the
00473    value.  */
00474 extern void frame_register_unwind (struct frame_info *frame, int regnum,
00475                                    int *optimizedp, int *unavailablep,
00476                                    enum lval_type *lvalp,
00477                                    CORE_ADDR *addrp, int *realnump,
00478                                    gdb_byte *valuep);
00479 
00480 /* Fetch a register from this, or unwind a register from the next
00481    frame.  Note that the get_frame methods are wrappers to
00482    frame->next->unwind.  They all [potentially] throw an error if the
00483    fetch fails.  The value methods never return NULL, but usually
00484    do return a lazy value.  */
00485 
00486 extern void frame_unwind_register (struct frame_info *frame,
00487                                    int regnum, gdb_byte *buf);
00488 extern void get_frame_register (struct frame_info *frame,
00489                                 int regnum, gdb_byte *buf);
00490 
00491 struct value *frame_unwind_register_value (struct frame_info *frame,
00492                                            int regnum);
00493 struct value *get_frame_register_value (struct frame_info *frame,
00494                                         int regnum);
00495 
00496 extern LONGEST frame_unwind_register_signed (struct frame_info *frame,
00497                                              int regnum);
00498 extern LONGEST get_frame_register_signed (struct frame_info *frame,
00499                                           int regnum);
00500 extern ULONGEST frame_unwind_register_unsigned (struct frame_info *frame,
00501                                                int regnum);
00502 extern ULONGEST get_frame_register_unsigned (struct frame_info *frame,
00503                                              int regnum);
00504 
00505 /* Read a register from this, or unwind a register from the next
00506    frame.  Note that the read_frame methods are wrappers to
00507    get_frame_register_value, that do not throw if the result is
00508    optimized out or unavailable.  */
00509 
00510 extern int read_frame_register_unsigned (struct frame_info *frame,
00511                                          int regnum, ULONGEST *val);
00512 
00513 /* Get the value of the register that belongs to this FRAME.  This
00514    function is a wrapper to the call sequence ``frame_register_unwind
00515    (get_next_frame (FRAME))''.  As per frame_register_unwind(), if
00516    VALUEP is NULL, the registers value is not fetched/computed.  */
00517 
00518 extern void frame_register (struct frame_info *frame, int regnum,
00519                             int *optimizedp, int *unavailablep,
00520                             enum lval_type *lvalp,
00521                             CORE_ADDR *addrp, int *realnump,
00522                             gdb_byte *valuep);
00523 
00524 /* The reverse.  Store a register value relative to the specified
00525    frame.  Note: this call makes the frame's state undefined.  The
00526    register and frame caches must be flushed.  */
00527 extern void put_frame_register (struct frame_info *frame, int regnum,
00528                                 const gdb_byte *buf);
00529 
00530 /* Read LEN bytes from one or multiple registers starting with REGNUM
00531    in frame FRAME, starting at OFFSET, into BUF.  If the register
00532    contents are optimized out or unavailable, set *OPTIMIZEDP,
00533    *UNAVAILABLEP accordingly.  */
00534 extern int get_frame_register_bytes (struct frame_info *frame, int regnum,
00535                                      CORE_ADDR offset, int len,
00536                                      gdb_byte *myaddr,
00537                                      int *optimizedp, int *unavailablep);
00538 
00539 /* Write LEN bytes to one or multiple registers starting with REGNUM
00540    in frame FRAME, starting at OFFSET, into BUF.  */
00541 extern void put_frame_register_bytes (struct frame_info *frame, int regnum,
00542                                       CORE_ADDR offset, int len,
00543                                       const gdb_byte *myaddr);
00544 
00545 /* Unwind the PC.  Strictly speaking return the resume address of the
00546    calling frame.  For GDB, `pc' is the resume address and not a
00547    specific register.  */
00548 
00549 extern CORE_ADDR frame_unwind_caller_pc (struct frame_info *frame);
00550 
00551 /* Same as frame_unwind_caller_pc, but returns a boolean indication of
00552    whether the caller PC is determinable (when the PC is unavailable,
00553    it will not be), instead of possibly throwing an error trying to
00554    read unavailable memory or registers.  */
00555 
00556 extern int frame_unwind_caller_pc_if_available (struct frame_info *this_frame,
00557                                                 CORE_ADDR *pc);
00558 
00559 /* Discard the specified frame.  Restoring the registers to the state
00560    of the caller.  */
00561 extern void frame_pop (struct frame_info *frame);
00562 
00563 /* Return memory from the specified frame.  A frame knows its thread /
00564    LWP and hence can find its way down to a target.  The assumption
00565    here is that the current and previous frame share a common address
00566    space.
00567 
00568    If the memory read fails, these methods throw an error.
00569 
00570    NOTE: cagney/2003-06-03: Should there be unwind versions of these
00571    methods?  That isn't clear.  Can code, for instance, assume that
00572    this and the previous frame's memory or architecture are identical?
00573    If architecture / memory changes are always separated by special
00574    adaptor frames this should be ok.  */
00575 
00576 extern void get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr,
00577                               gdb_byte *buf, int len);
00578 extern LONGEST get_frame_memory_signed (struct frame_info *this_frame,
00579                                         CORE_ADDR memaddr, int len);
00580 extern ULONGEST get_frame_memory_unsigned (struct frame_info *this_frame,
00581                                            CORE_ADDR memaddr, int len);
00582 
00583 /* Same as above, but return non-zero when the entire memory read
00584    succeeds, zero otherwize.  */
00585 extern int safe_frame_unwind_memory (struct frame_info *this_frame,
00586                                      CORE_ADDR addr, gdb_byte *buf, int len);
00587 
00588 /* Return this frame's architecture.  */
00589 extern struct gdbarch *get_frame_arch (struct frame_info *this_frame);
00590 
00591 /* Return the previous frame's architecture.  */
00592 extern struct gdbarch *frame_unwind_arch (struct frame_info *frame);
00593 
00594 /* Return the previous frame's architecture, skipping inline functions.  */
00595 extern struct gdbarch *frame_unwind_caller_arch (struct frame_info *frame);
00596 
00597 
00598 /* Values for the source flag to be used in print_frame_info_base().  */
00599 enum print_what
00600   { 
00601     /* Print only the source line, like in stepi.  */
00602     SRC_LINE = -1, 
00603     /* Print only the location, i.e. level, address (sometimes)
00604        function, args, file, line, line num.  */
00605     LOCATION,
00606     /* Print both of the above.  */
00607     SRC_AND_LOC, 
00608     /* Print location only, but always include the address.  */
00609     LOC_AND_ADDRESS 
00610   };
00611 
00612 /* Allocate zero initialized memory from the frame cache obstack.
00613    Appendices to the frame info (such as the unwind cache) should
00614    allocate memory using this method.  */
00615 
00616 extern void *frame_obstack_zalloc (unsigned long size);
00617 #define FRAME_OBSTACK_ZALLOC(TYPE) \
00618   ((TYPE *) frame_obstack_zalloc (sizeof (TYPE)))
00619 #define FRAME_OBSTACK_CALLOC(NUMBER,TYPE) \
00620   ((TYPE *) frame_obstack_zalloc ((NUMBER) * sizeof (TYPE)))
00621 
00622 /* Create a regcache, and copy the frame's registers into it.  */
00623 struct regcache *frame_save_as_regcache (struct frame_info *this_frame);
00624 
00625 extern struct block *get_frame_block (struct frame_info *,
00626                                       CORE_ADDR *addr_in_block);
00627 
00628 /* Return the `struct block' that belongs to the selected thread's
00629    selected frame.  If the inferior has no state, return NULL.
00630 
00631    NOTE: cagney/2002-11-29:
00632 
00633    No state?  Does the inferior have any execution state (a core file
00634    does, an executable does not).  At present the code tests
00635    `target_has_stack' but I'm left wondering if it should test
00636    `target_has_registers' or, even, a merged target_has_state.
00637 
00638    Should it look at the most recently specified SAL?  If the target
00639    has no state, should this function try to extract a block from the
00640    most recently selected SAL?  That way `list foo' would give it some
00641    sort of reference point.  Then again, perhaps that would confuse
00642    things.
00643 
00644    Calls to this function can be broken down into two categories: Code
00645    that uses the selected block as an additional, but optional, data
00646    point; Code that uses the selected block as a prop, when it should
00647    have the relevant frame/block/pc explicitly passed in.
00648 
00649    The latter can be eliminated by correctly parameterizing the code,
00650    the former though is more interesting.  Per the "address" command,
00651    it occurs in the CLI code and makes it possible for commands to
00652    work, even when the inferior has no state.  */
00653 
00654 extern struct block *get_selected_block (CORE_ADDR *addr_in_block);
00655 
00656 extern struct symbol *get_frame_function (struct frame_info *);
00657 
00658 extern CORE_ADDR get_pc_function_start (CORE_ADDR);
00659 
00660 extern struct frame_info *find_relative_frame (struct frame_info *, int *);
00661 
00662 extern void print_stack_frame (struct frame_info *, int print_level,
00663                                enum print_what print_what,
00664                                int set_current_sal);
00665 
00666 extern void print_frame_info (struct frame_info *, int print_level,
00667                               enum print_what print_what, int args,
00668                               int set_current_sal);
00669 
00670 extern struct frame_info *block_innermost_frame (const struct block *);
00671 
00672 extern int deprecated_frame_register_read (struct frame_info *frame, int regnum,
00673                                 gdb_byte *buf);
00674 
00675 /* From stack.c.  */
00676 
00677 extern const char print_entry_values_no[];
00678 extern const char print_entry_values_only[];
00679 extern const char print_entry_values_preferred[];
00680 extern const char print_entry_values_if_needed[];
00681 extern const char print_entry_values_both[];
00682 extern const char print_entry_values_compact[];
00683 extern const char print_entry_values_default[];
00684 extern const char *print_entry_values;
00685 
00686 /* Inferior function parameter value read in from a frame.  */
00687 
00688 struct frame_arg
00689 {
00690   /* Symbol for this parameter used for example for its name.  */
00691   struct symbol *sym;
00692 
00693   /* Value of the parameter.  It is NULL if ERROR is not NULL; if both VAL and
00694      ERROR are NULL this parameter's value should not be printed.  */
00695   struct value *val;
00696 
00697   /* String containing the error message, it is more usually NULL indicating no
00698      error occured reading this parameter.  */
00699   char *error;
00700 
00701   /* One of the print_entry_values_* entries as appropriate specifically for
00702      this frame_arg.  It will be different from print_entry_values.  With
00703      print_entry_values_no this frame_arg should be printed as a normal
00704      parameter.  print_entry_values_only says it should be printed as entry
00705      value parameter.  print_entry_values_compact says it should be printed as
00706      both as a normal parameter and entry values parameter having the same
00707      value - print_entry_values_compact is not permitted fi ui_out_is_mi_like_p
00708      (in such case print_entry_values_no and print_entry_values_only is used
00709      for each parameter kind specifically.  */
00710   const char *entry_kind;
00711 };
00712 
00713 extern void read_frame_arg (struct symbol *sym, struct frame_info *frame,
00714                             struct frame_arg *argp,
00715                             struct frame_arg *entryargp);
00716 extern void read_frame_local (struct symbol *sym, struct frame_info *frame,
00717                               struct frame_arg *argp);
00718 
00719 extern void args_info (char *, int);
00720 
00721 extern void locals_info (char *, int);
00722 
00723 extern void (*deprecated_selected_frame_level_changed_hook) (int);
00724 
00725 extern void return_command (char *, int);
00726 
00727 /* Set FRAME's unwinder temporarily, so that we can call a sniffer.
00728    Return a cleanup which should be called if unwinding fails, and
00729    discarded if it succeeds.  */
00730 
00731 struct cleanup *frame_prepare_for_sniffer (struct frame_info *frame,
00732                                            const struct frame_unwind *unwind);
00733 
00734 /* Notes (cagney/2002-11-27, drow/2003-09-06):
00735 
00736    You might think that calls to this function can simply be replaced by a
00737    call to get_selected_frame().
00738 
00739    Unfortunately, it isn't that easy.
00740 
00741    The relevant code needs to be audited to determine if it is
00742    possible (or practical) to instead pass the applicable frame in as a
00743    parameter.  For instance, DEPRECATED_DO_REGISTERS_INFO() relied on
00744    the deprecated_selected_frame global, while its replacement,
00745    PRINT_REGISTERS_INFO(), is parameterized with the selected frame.
00746    The only real exceptions occur at the edge (in the CLI code) where
00747    user commands need to pick up the selected frame before proceeding.
00748 
00749    There are also some functions called with a NULL frame meaning either "the
00750    program is not running" or "use the selected frame".
00751 
00752    This is important.  GDB is trying to stamp out the hack:
00753 
00754    saved_frame = deprecated_safe_get_selected_frame ();
00755    select_frame (...);
00756    hack_using_global_selected_frame ();
00757    select_frame (saved_frame);
00758 
00759    Take care!
00760 
00761    This function calls get_selected_frame if the inferior should have a
00762    frame, or returns NULL otherwise.  */
00763 
00764 extern struct frame_info *deprecated_safe_get_selected_frame (void);
00765 
00766 /* Create a frame using the specified BASE and PC.  */
00767 
00768 extern struct frame_info *create_new_frame (CORE_ADDR base, CORE_ADDR pc);
00769 
00770 /* Return true if the frame unwinder for frame FI is UNWINDER; false
00771    otherwise.  */
00772 
00773 extern int frame_unwinder_is (struct frame_info *fi,
00774                               const struct frame_unwind *unwinder);
00775 
00776 #endif /* !defined (FRAME_H)  */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines