aboutsummaryrefslogtreecommitdiff
path: root/gdb/arm-tdep.c
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2002-09-05 19:03:07 +0000
committerMichael Snyder <msnyder@vmware.com>2002-09-05 19:03:07 +0000
commita90c3637c992d771a1c313bb7cd8067a462479ff (patch)
treef625f8bd44ed7ea99748725e3df5b234ac608dfc /gdb/arm-tdep.c
parent6672060b1877c20582d769ffa31b7d13b030cc97 (diff)
downloadgdb-a90c3637c992d771a1c313bb7cd8067a462479ff.zip
gdb-a90c3637c992d771a1c313bb7cd8067a462479ff.tar.gz
gdb-a90c3637c992d771a1c313bb7cd8067a462479ff.tar.bz2
2002-09-05 Michael Snyder <msnyder@redhat.com>
* arm-tdep.c (arm_init_extra_frame_info): Distinguish between generic_dummy_frame method and old method. Also distinguish between ARM_FP_REGNUM and THUMB_FP_REGNUM.
Diffstat (limited to 'gdb/arm-tdep.c')
-rw-r--r--gdb/arm-tdep.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index fb1ac01..c84c3c6 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -1143,7 +1143,8 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
fi->extra_info->frameoffset = 0;
}
- else if (PC_IN_CALL_DUMMY (fi->pc, sp, fi->frame))
+ else if (!USE_GENERIC_DUMMY_FRAMES
+ && PC_IN_CALL_DUMMY (fi->pc, sp, fi->frame))
{
CORE_ADDR rp;
CORE_ADDR callers_sp;
@@ -1162,7 +1163,10 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
callers_sp = read_memory_integer (fi->saved_regs[ARM_SP_REGNUM],
REGISTER_RAW_SIZE (ARM_SP_REGNUM));
- fi->extra_info->framereg = ARM_FP_REGNUM;
+ if (arm_pc_is_thumb (fi->pc))
+ fi->extra_info->framereg = THUMB_FP_REGNUM;
+ else
+ fi->extra_info->framereg = ARM_FP_REGNUM;
fi->extra_info->framesize = callers_sp - sp;
fi->extra_info->frameoffset = fi->frame - sp;
}