X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fframe.h;h=5d9880183a2d7f8a766805729e7e434a8c7b0ccc;hb=666547aa9ebfac79a2f7607e0621f6a55c8c6f30;hp=f82ae362d3028182d173784fc886ed74e3f4badf;hpb=d9fcf2fb1c12d48f657c974dc5b6898022bf9ccf;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/frame.h b/gdb/frame.h index f82ae362d3..5d9880183a 100644 --- a/gdb/frame.h +++ b/gdb/frame.h @@ -1,5 +1,6 @@ /* Definitions for dealing with stack frames, for GDB, the GNU debugger. - Copyright 1986, 1989, 1991, 1992, 1999, 2000 Free Software Foundation, Inc. + Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, + 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GDB. @@ -80,7 +81,7 @@ struct frame_info address where the sp was saved. */ /* Allocated by frame_saved_regs_zalloc () which is called / initialized by FRAME_INIT_SAVED_REGS(). */ - CORE_ADDR *saved_regs; /*NUM_REGS */ + CORE_ADDR *saved_regs; /*NUM_REGS + NUM_PSEUDO_REGS*/ #ifdef EXTRA_FRAME_INFO /* XXXX - deprecated */ @@ -113,15 +114,21 @@ enum print_what LOC_AND_ADDRESS }; -/* Allocate additional space for appendices to a struct frame_info. */ +/* Allocate additional space for appendices to a struct frame_info. + NOTE: Much of GDB's code works on the assumption that the allocated + saved_regs[] array is the size specified below. If you try to make + that array smaller, GDB will happily walk off its end. */ -#ifndef SIZEOF_FRAME_SAVED_REGS -#define SIZEOF_FRAME_SAVED_REGS (sizeof (CORE_ADDR) * (NUM_REGS)) +#ifdef SIZEOF_FRAME_SAVED_REGS +#error "SIZEOF_FRAME_SAVED_REGS can not be re-defined" #endif -extern void *frame_obstack_alloc PARAMS ((unsigned long size)); -extern void frame_saved_regs_zalloc PARAMS ((struct frame_info *)); +#define SIZEOF_FRAME_SAVED_REGS \ + (sizeof (CORE_ADDR) * (NUM_REGS+NUM_PSEUDO_REGS)) -/* Return the frame address from FR. Except in the machine-dependent +extern void *frame_obstack_alloc (unsigned long size); +extern void frame_saved_regs_zalloc (struct frame_info *); + +/* Return the frame address from FI. Except in the machine-dependent *FRAME* macros, a frame address has no defined meaning other than as a magic cookie which identifies a frame over calls to the inferior. The only known exception is inferior.h @@ -148,10 +155,10 @@ extern void frame_saved_regs_zalloc PARAMS ((struct frame_info *)); extern int file_frame_chain_valid (CORE_ADDR, struct frame_info *); extern int func_frame_chain_valid (CORE_ADDR, struct frame_info *); -extern int nonnull_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *)); +extern int nonnull_frame_chain_valid (CORE_ADDR, struct frame_info *); extern int generic_file_frame_chain_valid (CORE_ADDR, struct frame_info *); extern int generic_func_frame_chain_valid (CORE_ADDR, struct frame_info *); -extern void generic_save_dummy_frame_tos PARAMS ((CORE_ADDR sp)); +extern void generic_save_dummy_frame_tos (CORE_ADDR sp); #if !defined (FRAME_CHAIN_VALID) #if !defined (FRAME_CHAIN_VALID_ALTERNATE) @@ -175,94 +182,99 @@ extern struct frame_info *selected_frame; extern int selected_frame_level; -extern struct frame_info *create_new_frame PARAMS ((CORE_ADDR, CORE_ADDR)); +extern struct frame_info *create_new_frame (CORE_ADDR, CORE_ADDR); -extern void flush_cached_frames PARAMS ((void)); +extern void flush_cached_frames (void); -extern void reinit_frame_cache PARAMS ((void)); +extern void reinit_frame_cache (void); #ifdef FRAME_FIND_SAVED_REGS /* XXX - deprecated */ #define FRAME_INIT_SAVED_REGS(FI) get_frame_saved_regs (FI, NULL) -extern void get_frame_saved_regs PARAMS ((struct frame_info *, - struct frame_saved_regs *)); +extern void get_frame_saved_regs (struct frame_info *, + struct frame_saved_regs *); #endif -extern void set_current_frame PARAMS ((struct frame_info *)); +extern void set_current_frame (struct frame_info *); + +extern struct frame_info *get_prev_frame (struct frame_info *); -extern struct frame_info *get_prev_frame PARAMS ((struct frame_info *)); +extern struct frame_info *get_current_frame (void); -extern struct frame_info *get_current_frame PARAMS ((void)); +extern struct frame_info *get_next_frame (struct frame_info *); -extern struct frame_info *get_next_frame PARAMS ((struct frame_info *)); +extern struct block *get_frame_block (struct frame_info *); -extern struct block *get_frame_block PARAMS ((struct frame_info *)); +extern struct block *get_current_block (void); -extern struct block *get_current_block PARAMS ((void)); +extern struct block *get_selected_block (void); -extern struct block *get_selected_block PARAMS ((void)); +extern struct symbol *get_frame_function (struct frame_info *); -extern struct symbol *get_frame_function PARAMS ((struct frame_info *)); +extern CORE_ADDR get_frame_pc (struct frame_info *); -extern CORE_ADDR get_frame_pc PARAMS ((struct frame_info *)); +extern CORE_ADDR get_pc_function_start (CORE_ADDR); -extern CORE_ADDR get_pc_function_start PARAMS ((CORE_ADDR)); +extern struct block *block_for_pc (CORE_ADDR); -extern struct block *block_for_pc PARAMS ((CORE_ADDR)); +extern struct block *block_for_pc_sect (CORE_ADDR, asection *); -extern struct block *block_for_pc_sect PARAMS ((CORE_ADDR, asection *)); +extern int frameless_look_for_prologue (struct frame_info *); -extern int frameless_look_for_prologue PARAMS ((struct frame_info *)); +extern void print_frame_args (struct symbol *, struct frame_info *, + int, struct ui_file *); -extern void print_frame_args PARAMS ((struct symbol *, struct frame_info *, - int, struct ui_file *)); +extern struct frame_info *find_relative_frame (struct frame_info *, int *); -extern struct frame_info *find_relative_frame PARAMS ((struct frame_info *, int *)); +extern void show_and_print_stack_frame (struct frame_info *fi, int level, + int source); -extern void show_and_print_stack_frame PARAMS ((struct frame_info * fi, int level, int source)); +extern void print_stack_frame (struct frame_info *, int, int); -extern void print_stack_frame PARAMS ((struct frame_info *, int, int)); +extern void print_only_stack_frame (struct frame_info *, int, int); -extern void print_only_stack_frame PARAMS ((struct frame_info *, int, int)); +extern void show_stack_frame (struct frame_info *); -extern void show_stack_frame PARAMS ((struct frame_info *)); +extern void select_frame (struct frame_info *, int); -extern void select_frame PARAMS ((struct frame_info *, int)); +extern void record_selected_frame (CORE_ADDR *, int *); -extern void record_selected_frame PARAMS ((CORE_ADDR *, int *)); +extern void select_and_print_frame (struct frame_info *, int); -extern void select_and_print_frame PARAMS ((struct frame_info *, int)); +extern void print_frame_info (struct frame_info *, int, int, int); -extern void print_frame_info PARAMS ((struct frame_info *, int, int, int)); +extern void show_frame_info (struct frame_info *, int, int, int); -extern void show_frame_info PARAMS ((struct frame_info *, int, int, int)); +extern CORE_ADDR find_saved_register (struct frame_info *, int); -extern CORE_ADDR find_saved_register PARAMS ((struct frame_info *, int)); +extern struct frame_info *block_innermost_frame (struct block *); -extern struct frame_info *block_innermost_frame PARAMS ((struct block *)); +extern struct frame_info *find_frame_addr_in_frame_chain (CORE_ADDR); -extern struct frame_info *find_frame_addr_in_frame_chain PARAMS ((CORE_ADDR)); +extern CORE_ADDR sigtramp_saved_pc (struct frame_info *); -extern CORE_ADDR sigtramp_saved_pc PARAMS ((struct frame_info *)); +extern CORE_ADDR generic_read_register_dummy (CORE_ADDR pc, + CORE_ADDR fp, int); +extern void generic_push_dummy_frame (void); +extern void generic_pop_current_frame (void (*)(struct frame_info *)); +extern void generic_pop_dummy_frame (void); -extern CORE_ADDR generic_read_register_dummy PARAMS ((CORE_ADDR pc, - CORE_ADDR fp, - int)); -extern void generic_push_dummy_frame PARAMS ((void)); -extern void generic_pop_current_frame PARAMS ((void (*)(struct frame_info *))); -extern void generic_pop_dummy_frame PARAMS ((void)); +extern int generic_pc_in_call_dummy (CORE_ADDR pc, + CORE_ADDR sp, CORE_ADDR fp); +extern char *generic_find_dummy_frame (CORE_ADDR pc, CORE_ADDR fp); -extern int generic_pc_in_call_dummy PARAMS ((CORE_ADDR pc, - CORE_ADDR sp, - CORE_ADDR fp)); -extern char *generic_find_dummy_frame PARAMS ((CORE_ADDR pc, - CORE_ADDR fp)); +extern void generic_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun, + int nargs, struct value **args, + struct type *type, int gcc_p); -extern void generic_fix_call_dummy PARAMS ((char *dummy, CORE_ADDR pc, CORE_ADDR fun, - int nargs, struct value ** args, - struct type * type, int gcc_p)); +extern void generic_get_saved_register (char *, int *, CORE_ADDR *, + struct frame_info *, int, + enum lval_type *); -extern void generic_get_saved_register PARAMS ((char *, int *, CORE_ADDR *, struct frame_info *, int, enum lval_type *)); +extern void get_saved_register (char *raw_buffer, int *optimized, + CORE_ADDR * addrp, + struct frame_info *frame, + int regnum, enum lval_type *lval); #endif /* !defined (FRAME_H) */