GDB (API)
|
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) */