summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@specifix.com>2002-09-05 19:03:07 +0000
committerMichael Snyder <msnyder@specifix.com>2002-09-05 19:03:07 +0000
commitb480f1ed659e0934ef019fe2adcce1d3be2e38b4 (patch)
tree65508086ab078d58854973dba38529fc77656dcd
parent64a41ef7ca264d960f32d92201db9eda56fb504f (diff)
downloadgdb-b480f1ed659e0934ef019fe2adcce1d3be2e38b4.tar.gz
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.
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/arm-tdep.c8
2 files changed, 10 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 415773c87b4..ed0551d0567 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,9 @@
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.
+
* mips-tdep.c (mips_n32n64_push_arguments): Remove alignment
adjustment that doesn't conform to the ABI.
(mips_extract_struct_value_address): Retrieve V0_REGNUM from
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index fb1ac0169ed..c84c3c65756 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;
}