2002-12-11 Andrew Cagney * frame.h (get_frame_saved_regs_p): Declare. (get_frame_saved_regs): Declare. (frame_saved_regs_zalloc): Delete declaration. * frame.c (frame_saved_regs_zalloc): Delete. (get_frame_saved_regs): New function. (get_frame_saved_regs_p): New function. * xstormy16-tdep.c (xstormy16_frame_init_saved_regs): Use get_frame_saved_regs instead of frame_saved_regs_zalloc. * vax-tdep.c (vax_frame_init_saved_regs): Ditto. * v850-tdep.c (v850_frame_init_saved_regs): Ditto. * sparc-tdep.c (sparc_init_extra_frame_info): Ditto. * sh-tdep.c (sh_nofp_frame_init_saved_regs): Ditto. (sh64_nofp_frame_init_saved_regs): Ditto. (sh_fp_frame_init_saved_regs): Ditto. * s390-tdep.c (s390_frame_init_saved_regs): Ditto. * rs6000-tdep.c (frame_get_saved_regs): Ditto. * ppc-linux-tdep.c (ppc_linux_frame_init_saved_regs): Ditto. * ns32k-tdep.c (ns32k_frame_init_saved_regs): Ditto. * mn10300-tdep.c (mn10300_init_extra_frame_info): Ditto. * z8k-tdep.c (z8k_frame_init_saved_regs): Ditto. * mips-tdep.c (mips_find_saved_regs): Ditto. (mips_init_extra_frame_info): Ditto. * mcore-tdep.c (mcore_init_extra_frame_info): Ditto. * m68k-tdep.c (m68k_frame_init_saved_regs): Ditto. * m68hc11-tdep.c (m68hc11_frame_init_saved_regs): Ditto. * i386-tdep.c (i386_frame_init_saved_regs): Ditto. * h8300-tdep.c (h8300_frame_init_saved_regs): Ditto. * frv-tdep.c (frv_frame_init_saved_regs): Ditto. * d10v-tdep.c (d10v_init_extra_frame_info): Ditto. * cris-tdep.c (cris_frame_init_saved_regs): Ditto. * avr-tdep.c (avr_init_extra_frame_info): Ditto. * arm-tdep.c (arm_init_extra_frame_info): Ditto. * alpha-tdep.c (alpha_find_saved_regs): Ditto. Index: alpha-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/alpha-tdep.c,v retrieving revision 1.48 diff -u -r1.48 alpha-tdep.c --- alpha-tdep.c 11 Dec 2002 02:26:34 -0000 1.48 +++ alpha-tdep.c 11 Dec 2002 20:58:10 -0000 @@ -364,7 +364,7 @@ alpha_extra_func_info_t proc_desc; int returnreg; - frame_saved_regs_zalloc (frame); + CORE_ADDR *saved_regs = get_frame_saved_regs (frame); /* If it is the frame for __sigtramp, the saved registers are located in a sigcontext structure somewhere on the stack. __sigtramp Index: arm-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/arm-tdep.c,v retrieving revision 1.82 diff -u -r1.82 arm-tdep.c --- arm-tdep.c 11 Dec 2002 02:26:34 -0000 1.82 +++ arm-tdep.c 11 Dec 2002 20:58:10 -0000 @@ -1082,9 +1082,7 @@ { int reg; CORE_ADDR sp; - - if (fi->saved_regs == NULL) - frame_saved_regs_zalloc (fi); + CORE_ADDR *saved_regs = get_frame_saved_regs (fi); fi->extra_info = (struct frame_extra_info *) frame_obstack_alloc (sizeof (struct frame_extra_info)); Index: avr-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/avr-tdep.c,v retrieving revision 1.14 diff -u -r1.14 avr-tdep.c --- avr-tdep.c 11 Dec 2002 02:26:34 -0000 1.14 +++ avr-tdep.c 11 Dec 2002 20:58:10 -0000 @@ -733,13 +733,14 @@ avr_init_extra_frame_info (int fromleaf, struct frame_info *fi) { int reg; + CORE_ADDR *saved_regs; if (fi->next) fi->pc = FRAME_SAVED_PC (fi->next); fi->extra_info = (struct frame_extra_info *) frame_obstack_alloc (sizeof (struct frame_extra_info)); - frame_saved_regs_zalloc (fi); + saved_regs = get_frame_saved_regs (fi); fi->extra_info->return_pc = 0; fi->extra_info->args_pointer = 0; Index: cris-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/cris-tdep.c,v retrieving revision 1.33 diff -u -r1.33 cris-tdep.c --- cris-tdep.c 11 Dec 2002 02:26:35 -0000 1.33 +++ cris-tdep.c 11 Dec 2002 20:58:11 -0000 @@ -1147,10 +1147,9 @@ return frameless_look_for_prologue (fi); } -/* See frame.h. Determines the address of all registers in the current stack - frame storing each in frame->saved_regs. Space for frame->saved_regs shall - be allocated by FRAME_INIT_SAVED_REGS using either frame_saved_regs_zalloc - or frame_obstack_alloc. */ +/* See frame.h. Determines the address of all registers in the + current stack frame storing each in frame->saved_regs. Space for + frame->saved_regs shall be allocated by FRAME_INIT_SAVED_REGS. */ void cris_frame_init_saved_regs (struct frame_info *fi) @@ -1159,6 +1158,7 @@ struct symtab_and_line sal; int best_limit; char *dummy_regs = deprecated_generic_find_dummy_frame (fi->pc, fi->frame); + CORE_ADDR *saved_regs; /* Examine the entire prologue. */ register int frameless_p = 0; @@ -1167,7 +1167,7 @@ if (fi->saved_regs) return; - frame_saved_regs_zalloc (fi); + saved_regs = get_frame_saved_regs (fi); if (dummy_regs) { Index: d10v-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/d10v-tdep.c,v retrieving revision 1.60 diff -u -r1.60 d10v-tdep.c --- d10v-tdep.c 11 Dec 2002 02:26:35 -0000 1.60 +++ d10v-tdep.c 11 Dec 2002 20:58:11 -0000 @@ -901,9 +901,10 @@ static void d10v_init_extra_frame_info (int fromleaf, struct frame_info *fi) { + CORE_ADDR *saved_regs; fi->extra_info = (struct frame_extra_info *) frame_obstack_alloc (sizeof (struct frame_extra_info)); - frame_saved_regs_zalloc (fi); + saved_regs = get_frame_saved_regs (fi); fi->extra_info->frameless = 0; fi->extra_info->size = 0; Index: frame.c =================================================================== RCS file: /cvs/src/src/gdb/frame.c,v retrieving revision 1.41 diff -u -r1.41 frame.c --- frame.c 11 Dec 2002 20:35:42 -0000 1.41 +++ frame.c 11 Dec 2002 20:58:11 -0000 @@ -448,14 +448,6 @@ return obstack_alloc (&frame_cache_obstack, size); } -void -frame_saved_regs_zalloc (struct frame_info *fi) -{ - fi->saved_regs = (CORE_ADDR *) - frame_obstack_alloc (SIZEOF_FRAME_SAVED_REGS); - memset (fi->saved_regs, 0, SIZEOF_FRAME_SAVED_REGS); -} - /* Return the innermost (currently executing) stack frame. */ @@ -1202,6 +1194,23 @@ } } #endif + +int +get_frame_saved_regs_p (struct frame_info *fi) +{ + return fi->saved_regs != NULL; +} + +CORE_ADDR * +get_frame_saved_regs (struct frame_info *fi) +{ + if (fi->saved_regs != NULL) + { + fi->saved_regs = frame_obstack_alloc (SIZEOF_FRAME_SAVED_REGS); + memset (fi->saved_regs, 0, SIZEOF_FRAME_SAVED_REGS); + } + return fi->saved_regs; +} void _initialize_frame (void) Index: frame.h =================================================================== RCS file: /cvs/src/src/gdb/frame.h,v retrieving revision 1.45 diff -u -r1.45 frame.h --- frame.h 11 Dec 2002 20:35:43 -0000 1.45 +++ frame.h 11 Dec 2002 20:58:11 -0000 @@ -390,8 +390,7 @@ special ways in the stack frame. The SP_REGNUM is even more special, the address here is the sp for the previous frame, not the address where the sp was saved. */ - /* Allocated by frame_saved_regs_zalloc () which is called / - initialized by FRAME_INIT_SAVED_REGS(). */ + /* Allocated by the first call to get_frame_saved_regs(). */ CORE_ADDR *saved_regs; /*NUM_REGS + NUM_PSEUDO_REGS*/ #ifdef EXTRA_FRAME_INFO @@ -457,7 +456,6 @@ (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 *); /* Define a default FRAME_CHAIN_VALID, in the form that is suitable for most targets. If FRAME_CHAIN_VALID returns zero it means that the given frame @@ -642,5 +640,16 @@ extern void set_current_frame (struct frame_info *); extern struct frame_info *create_new_frame (CORE_ADDR, CORE_ADDR); + + +/* NOTE: cagney/2002-12-10: + + Let older code access the member `saved_regs'. The function + get_frame_saved_regs_p() returns non-zero if the `saved_regs' has + already been created. get_frame_saved_regs() returns the + `saved_regs' buffer. Initializing it, before returning, if needed. */ + +extern int get_frame_saved_regs_p (struct frame_info *fi); +extern CORE_ADDR *get_frame_saved_regs (struct frame_info *fi); #endif /* !defined (FRAME_H) */ Index: frv-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/frv-tdep.c,v retrieving revision 1.11 diff -u -r1.11 frv-tdep.c --- frv-tdep.c 11 Dec 2002 02:26:35 -0000 1.11 +++ frv-tdep.c 11 Dec 2002 20:58:11 -0000 @@ -728,10 +728,11 @@ static void frv_frame_init_saved_regs (struct frame_info *frame) { + CORE_ADDR *saved_regs; if (frame->saved_regs) return; - frame_saved_regs_zalloc (frame); + saved_regs = frame_saved_regs_zalloc (frame); frame->saved_regs[fp_regnum] = frame->frame; /* Find the beginning of this function, so we can analyze its Index: h8300-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/h8300-tdep.c,v retrieving revision 1.28 diff -u -r1.28 h8300-tdep.c --- h8300-tdep.c 11 Dec 2002 02:26:35 -0000 1.28 +++ h8300-tdep.c 11 Dec 2002 20:58:12 -0000 @@ -466,7 +466,7 @@ if (!fi->saved_regs) { - frame_saved_regs_zalloc (fi); + CORE_ADDR *saved_regs = get_frame_saved_regs (fi); /* Find the beginning of this function, so we can analyze its prologue. */ Index: i386-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/i386-tdep.c,v retrieving revision 1.103 diff -u -r1.103 i386-tdep.c --- i386-tdep.c 11 Dec 2002 14:38:23 -0000 1.103 +++ i386-tdep.c 11 Dec 2002 20:58:12 -0000 @@ -706,11 +706,12 @@ CORE_ADDR addr; CORE_ADDR pc; int i; + CORE_ADDR *saved_regs; if (fip->saved_regs) return; - frame_saved_regs_zalloc (fip); + saved_regs = get_frame_saved_regs (fip); pc = get_pc_function_start (fip->pc); if (pc != 0) Index: ia64-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/ia64-tdep.c,v retrieving revision 1.41 diff -u -r1.41 ia64-tdep.c --- ia64-tdep.c 11 Dec 2002 02:26:36 -0000 1.41 +++ ia64-tdep.c 11 Dec 2002 20:58:12 -0000 @@ -834,7 +834,7 @@ if (frame && !frame->saved_regs) { - frame_saved_regs_zalloc (frame); + CORE_ADDR *saved_regs = get_frame_saved_regs (frame); do_fsr_stuff = 1; } @@ -1167,7 +1167,7 @@ { int regno; - frame_saved_regs_zalloc (frame); + CORE_ADDR *saved_regs = get_frame_saved_regs (frame); frame->saved_regs[IA64_VRAP_REGNUM] = SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_IP_REGNUM); Index: m68hc11-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/m68hc11-tdep.c,v retrieving revision 1.35 diff -u -r1.35 m68hc11-tdep.c --- m68hc11-tdep.c 11 Dec 2002 02:26:36 -0000 1.35 +++ m68hc11-tdep.c 11 Dec 2002 20:58:12 -0000 @@ -841,8 +841,10 @@ CORE_ADDR addr; if (fi->saved_regs == NULL) - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); else + /* FIXME: cagney/2002-12-10: This is wrong. It will only clean + out the first four bytes. Suspect that it is never executed. */ memset (fi->saved_regs, 0, sizeof (fi->saved_regs)); pc = fi->pc; Index: m68k-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/m68k-tdep.c,v retrieving revision 1.37 diff -u -r1.37 m68k-tdep.c --- m68k-tdep.c 11 Dec 2002 02:26:36 -0000 1.37 +++ m68k-tdep.c 11 Dec 2002 20:58:12 -0000 @@ -595,7 +595,7 @@ if (frame_info->saved_regs) return; - frame_saved_regs_zalloc (frame_info); + get_frame_saved_regs (frame_info); memset (frame_info->saved_regs, 0, SIZEOF_FRAME_SAVED_REGS); Index: mcore-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/mcore-tdep.c,v retrieving revision 1.27 diff -u -r1.27 mcore-tdep.c --- mcore-tdep.c 11 Dec 2002 02:26:36 -0000 1.27 +++ mcore-tdep.c 11 Dec 2002 20:58:12 -0000 @@ -1041,7 +1041,7 @@ if (fi && fi->next) fi->pc = FRAME_SAVED_PC (fi->next); - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); fi->extra_info = (struct frame_extra_info *) frame_obstack_alloc (sizeof (struct frame_extra_info)); Index: mips-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/mips-tdep.c,v retrieving revision 1.146 diff -u -r1.146 mips-tdep.c --- mips-tdep.c 11 Dec 2002 02:26:36 -0000 1.146 +++ mips-tdep.c 11 Dec 2002 20:58:13 -0000 @@ -1398,7 +1398,7 @@ mips_extra_func_info_t proc_desc; t_inst inst; - frame_saved_regs_zalloc (fci); + get_frame_saved_regs (fci); /* If it is the frame for sigtramp, the saved registers are located in a sigcontext structure somewhere on the stack. @@ -2503,7 +2503,7 @@ (CORE_ADDR *) NULL, (CORE_ADDR *) NULL); if (!PC_IN_SIGTRAMP (fci->pc, name)) { - frame_saved_regs_zalloc (fci); + get_frame_saved_regs (fci); memcpy (fci->saved_regs, temp_saved_regs, SIZEOF_FRAME_SAVED_REGS); fci->saved_regs[PC_REGNUM] = fci->saved_regs[RA_REGNUM]; Index: mn10300-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/mn10300-tdep.c,v retrieving revision 1.41 diff -u -r1.41 mn10300-tdep.c --- mn10300-tdep.c 11 Dec 2002 02:26:36 -0000 1.41 +++ mn10300-tdep.c 11 Dec 2002 20:58:13 -0000 @@ -898,7 +898,7 @@ if (fi->next) fi->pc = FRAME_SAVED_PC (fi->next); - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); fi->extra_info = (struct frame_extra_info *) frame_obstack_alloc (sizeof (struct frame_extra_info)); Index: ns32k-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/ns32k-tdep.c,v retrieving revision 1.25 diff -u -r1.25 ns32k-tdep.c --- ns32k-tdep.c 11 Dec 2002 02:26:36 -0000 1.25 +++ ns32k-tdep.c 11 Dec 2002 20:58:13 -0000 @@ -378,7 +378,7 @@ if (frame->saved_regs) return; - frame_saved_regs_zalloc (frame); + get_frame_saved_regs (frame); enter_addr = ns32k_get_enter_addr (frame->pc); if (enter_addr > 1) Index: ppc-linux-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/ppc-linux-tdep.c,v retrieving revision 1.20 diff -u -r1.20 ppc-linux-tdep.c --- ppc-linux-tdep.c 18 Nov 2002 22:19:29 -0000 1.20 +++ ppc-linux-tdep.c 11 Dec 2002 20:58:13 -0000 @@ -381,7 +381,7 @@ if (fi->saved_regs) return; - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); regs_addr = read_memory_integer (fi->frame + PPC_LINUX_REGS_PTR_OFFSET, 4); Index: rs6000-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v retrieving revision 1.99 diff -u -r1.99 rs6000-tdep.c --- rs6000-tdep.c 9 Dec 2002 03:30:44 -0000 1.99 +++ rs6000-tdep.c 11 Dec 2002 20:58:14 -0000 @@ -1582,7 +1582,7 @@ get_frame_pc (fi), fdatap); } - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); /* If there were any saved registers, figure out parent's stack pointer. */ Index: s390-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/s390-tdep.c,v retrieving revision 1.62 diff -u -r1.62 s390-tdep.c --- s390-tdep.c 11 Dec 2002 02:26:36 -0000 1.62 +++ s390-tdep.c 11 Dec 2002 20:58:14 -0000 @@ -925,7 +925,7 @@ if (fi->saved_regs == NULL) { /* zalloc memsets the saved regs */ - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); if (fi->pc) { quick = (fi->extra_info && fi->extra_info->initialised Index: sh-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sh-tdep.c,v retrieving revision 1.82 diff -u -r1.82 sh-tdep.c --- sh-tdep.c 11 Dec 2002 02:26:36 -0000 1.82 +++ sh-tdep.c 11 Dec 2002 20:58:14 -0000 @@ -1056,7 +1056,7 @@ char *dummy_regs = deprecated_generic_find_dummy_frame (fi->pc, fi->frame); if (fi->saved_regs == NULL) - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); else memset (fi->saved_regs, 0, SIZEOF_FRAME_SAVED_REGS); @@ -1396,7 +1396,7 @@ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); if (fi->saved_regs == NULL) - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); else memset (fi->saved_regs, 0, SIZEOF_FRAME_SAVED_REGS); @@ -1597,7 +1597,7 @@ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); if (fi->saved_regs == NULL) - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); else memset (fi->saved_regs, 0, SIZEOF_FRAME_SAVED_REGS); Index: sparc-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sparc-tdep.c,v retrieving revision 1.53 diff -u -r1.53 sparc-tdep.c --- sparc-tdep.c 11 Dec 2002 20:35:43 -0000 1.53 +++ sparc-tdep.c 11 Dec 2002 20:58:15 -0000 @@ -296,7 +296,7 @@ fi->extra_info = (struct frame_extra_info *) frame_obstack_alloc (sizeof (struct frame_extra_info)); - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); fi->extra_info->bottom = (fi->next ? Index: v850-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/v850-tdep.c,v retrieving revision 1.30 diff -u -r1.30 v850-tdep.c --- v850-tdep.c 11 Dec 2002 02:26:36 -0000 1.30 +++ v850-tdep.c 11 Dec 2002 20:58:15 -0000 @@ -1107,7 +1107,7 @@ if (!fi->saved_regs) { - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); /* The call dummy doesn't save any registers on the stack, so we can return now. */ Index: vax-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/vax-tdep.c,v retrieving revision 1.26 diff -u -r1.26 vax-tdep.c --- vax-tdep.c 11 Dec 2002 02:26:36 -0000 1.26 +++ vax-tdep.c 11 Dec 2002 20:58:15 -0000 @@ -132,7 +132,7 @@ if (frame->saved_regs) return; - frame_saved_regs_zalloc (frame); + get_frame_saved_regs (frame); regmask = read_memory_integer (frame->frame + 4, 4) >> 16; Index: xstormy16-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/xstormy16-tdep.c,v retrieving revision 1.14 diff -u -r1.14 xstormy16-tdep.c --- xstormy16-tdep.c 11 Dec 2002 02:26:36 -0000 1.14 +++ xstormy16-tdep.c 11 Dec 2002 20:58:15 -0000 @@ -734,7 +734,7 @@ if (!fi->saved_regs) { - frame_saved_regs_zalloc (fi); + get_frame_saved_regs (fi); /* Find the beginning of this function, so we can analyze its prologue. */ Index: z8k-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/z8k-tdep.c,v retrieving revision 1.15 diff -u -r1.15 z8k-tdep.c --- z8k-tdep.c 9 Dec 2002 02:04:16 -0000 1.15 +++ z8k-tdep.c 11 Dec 2002 20:58:15 -0000 @@ -178,7 +178,7 @@ CORE_ADDR pc; int w; - frame_saved_regs_zalloc (frame_info); + get_frame_saved_regs (frame_info); pc = get_pc_function_start (frame_info->pc); /* wander down the instruction stream */ Index: doc/ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/doc/ChangeLog,v retrieving revision 1.248 diff -u -r1.248 ChangeLog --- doc/ChangeLog 11 Dec 2002 02:28:34 -0000 1.248 +++ doc/ChangeLog 11 Dec 2002 20:58:15 -0000 @@ -1,3 +1,7 @@ +2002-12-11 Andrew Cagney + + * gdbint.texinfo (Target Architecture Definition): + 2002-12-10 Andrew Cagney * gdbint.texinfo (Algorithms): Replace INIT_FRAME_PC with Index: doc/gdbint.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdbint.texinfo,v retrieving revision 1.110 diff -u -r1.110 gdbint.texinfo --- doc/gdbint.texinfo 11 Dec 2002 02:26:38 -0000 1.110 +++ doc/gdbint.texinfo 11 Dec 2002 20:58:17 -0000 @@ -3345,8 +3345,7 @@ See @file{frame.h}. Determines the address of all registers in the current stack frame storing each in @code{frame->saved_regs}. Space for @code{frame->saved_regs} shall be allocated by -@code{FRAME_INIT_SAVED_REGS} using either -@code{frame_saved_regs_zalloc} or @code{frame_obstack_alloc}. +@code{FRAME_INIT_SAVED_REGS} using @code{frame_obstack_alloc}. @code{FRAME_FIND_SAVED_REGS} and @code{EXTRA_FRAME_INFO} are deprecated.