/* 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.
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 */
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
+#define SIZEOF_FRAME_SAVED_REGS \
+ (sizeof (CORE_ADDR) * (NUM_REGS+NUM_PSEUDO_REGS))
+
extern void *frame_obstack_alloc (unsigned long size);
extern void frame_saved_regs_zalloc (struct frame_info *);
-/* Return the frame address from FR. Except in the machine-dependent
+/* 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
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) */