aboutsummaryrefslogtreecommitdiff
path: root/gdb/m32r-tdep.c
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-01-06 21:50:25 +0000
committerAndrew Cagney <cagney@redhat.com>2003-01-06 21:50:25 +0000
commitf6c609c4c2bb326e580c9f533bd2aa0e9d583556 (patch)
tree7f5974da7d3a38c4ed7430a947fd61c165eec113 /gdb/m32r-tdep.c
parent84dc46cbdb5a9c4ca576b8768a2876e9551199a5 (diff)
downloadgdb-f6c609c4c2bb326e580c9f533bd2aa0e9d583556.zip
gdb-f6c609c4c2bb326e580c9f533bd2aa0e9d583556.tar.gz
gdb-f6c609c4c2bb326e580c9f533bd2aa0e9d583556.tar.bz2
2003-01-06 Andrew Cagney <ac131313@redhat.com>
* frame.h (deprecated_frame_xmalloc_with_cleanup): Declare. * frame.c (deprecated_frame_xmalloc_with_cleanup): New function. * arm-tdep.c (arm_frame_chain): Allocate caller_fi using deprecated_frame_xmalloc_with_cleanup. * m32r-tdep.c (m32r_virtual_frame_pointer): Allocate `fi' using deprecated_frame_xmalloc. * mcore-tdep.c (analyze_dummy_frame): Ditto for dummy. * mn10200-tdep.c (mn10200_frame_chain): Ditto for dummy_frame.
Diffstat (limited to 'gdb/m32r-tdep.c')
-rw-r--r--gdb/m32r-tdep.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/gdb/m32r-tdep.c b/gdb/m32r-tdep.c
index eeb6335..400f0a9 100644
--- a/gdb/m32r-tdep.c
+++ b/gdb/m32r-tdep.c
@@ -426,20 +426,20 @@ m32r_init_extra_frame_info (struct frame_info *fi)
void
m32r_virtual_frame_pointer (CORE_ADDR pc, long *reg, long *offset)
{
- struct frame_info fi;
+ struct frame_info *fi = deprecated_frame_xmalloc ();
+ struct cleanup *old_chain = make_cleanup (xfree, fi);
/* Set up a dummy frame_info. */
- fi.next = NULL;
- fi.prev = NULL;
- fi.frame = 0;
- fi.pc = pc;
+ fi->next = NULL;
+ fi->prev = NULL;
+ fi->frame = 0;
+ fi->pc = pc;
/* Analyze the prolog and fill in the extra info. */
- m32r_init_extra_frame_info (&fi);
-
+ m32r_init_extra_frame_info (fi);
/* Results will tell us which type of frame it uses. */
- if (fi.using_frame_pointer)
+ if (fi->using_frame_pointer)
{
*reg = FP_REGNUM;
*offset = 0;
@@ -449,6 +449,7 @@ m32r_virtual_frame_pointer (CORE_ADDR pc, long *reg, long *offset)
*reg = SP_REGNUM;
*offset = 0;
}
+ do_cleanups (old_chain);
}
/* Function: find_callers_reg