2002-09-05 Michael Snyder <msnyder@redhat.com>
authorMichael Snyder <msnyder@vmware.com>
Thu, 5 Sep 2002 19:03:07 +0000 (19:03 +0000)
committerMichael Snyder <msnyder@vmware.com>
Thu, 5 Sep 2002 19:03:07 +0000 (19:03 +0000)
* 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.

gdb/ChangeLog
gdb/arm-tdep.c

index 415773c..ed0551d 100644 (file)
@@ -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
index fb1ac01..c84c3c6 100644 (file)
@@ -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;
     }