Add tiny memory model GD test cases.
[deliverable/binutils-gdb.git] / gdb / arm-tdep.c
index e12ae6e633e7ee8fe9f48000175978e6327670ee..f3a6325b5ddd7c7196a46cf106af7f590a3d18a0 100644 (file)
@@ -1,6 +1,6 @@
 /* Common target dependent code for GDB on ARM systems.
 
-   Copyright (C) 1988-2014 Free Software Foundation, Inc.
+   Copyright (C) 1988-2015 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -2021,6 +2021,31 @@ arm_make_prologue_cache (struct frame_info *this_frame)
   return cache;
 }
 
+/* Implementation of the stop_reason hook for arm_prologue frames.  */
+
+static enum unwind_stop_reason
+arm_prologue_unwind_stop_reason (struct frame_info *this_frame,
+                                void **this_cache)
+{
+  struct arm_prologue_cache *cache;
+  CORE_ADDR pc;
+
+  if (*this_cache == NULL)
+    *this_cache = arm_make_prologue_cache (this_frame);
+  cache = *this_cache;
+
+  /* This is meant to halt the backtrace at "_start".  */
+  pc = get_frame_pc (this_frame);
+  if (pc <= gdbarch_tdep (get_frame_arch (this_frame))->lowest_pc)
+    return UNWIND_OUTERMOST;
+
+  /* If we've hit a wall, stop.  */
+  if (cache->prev_sp == 0)
+    return UNWIND_OUTERMOST;
+
+  return UNWIND_NO_REASON;
+}
+
 /* Our frame ID for a normal frame is the current function's starting PC
    and the caller's SP when we were called.  */
 
@@ -2037,18 +2062,10 @@ arm_prologue_this_id (struct frame_info *this_frame,
     *this_cache = arm_make_prologue_cache (this_frame);
   cache = *this_cache;
 
-  /* This is meant to halt the backtrace at "_start".  */
-  pc = get_frame_pc (this_frame);
-  if (pc <= gdbarch_tdep (get_frame_arch (this_frame))->lowest_pc)
-    return;
-
-  /* If we've hit a wall, stop.  */
-  if (cache->prev_sp == 0)
-    return;
-
   /* Use function start address as part of the frame ID.  If we cannot
      identify the start address (due to missing symbol information),
      fall back to just using the current PC.  */
+  pc = get_frame_pc (this_frame);
   func = get_frame_func (this_frame);
   if (!func)
     func = pc;
@@ -2117,7 +2134,7 @@ arm_prologue_prev_register (struct frame_info *this_frame,
 
 struct frame_unwind arm_prologue_unwind = {
   NORMAL_FRAME,
-  default_frame_unwind_stop_reason,
+  arm_prologue_unwind_stop_reason,
   arm_prologue_this_id,
   arm_prologue_prev_register,
   NULL,
@@ -9968,25 +9985,25 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
                                                        OBJ_ATTR_PROC,
                                                        Tag_ABI_VFP_args))
                        {
-                       case (int) AEABI_VFP_args_base:
+                       case AEABI_VFP_args_base:
                          /* "The user intended FP parameter/result
                             passing to conform to AAPCS, base
                             variant".  */
                          fp_model = ARM_FLOAT_SOFT_VFP;
                          break;
-                       case (int) AEABI_VFP_args_vfp:
+                       case AEABI_VFP_args_vfp:
                          /* "The user intended FP parameter/result
                             passing to conform to AAPCS, VFP
                             variant".  */
                          fp_model = ARM_FLOAT_VFP;
                          break;
-                       case (int) AEABI_VFP_args_toolchain:
+                       case AEABI_VFP_args_toolchain:
                          /* "The user intended FP parameter/result
                             passing to conform to tool chain-specific
                             conventions" - we don't know any such
                             conventions, so leave it as "auto".  */
                          break;
-                       case (int) AEABI_VFP_args_compatible:
+                       case AEABI_VFP_args_compatible:
                          /* "Code is compatible with both the base
                             and VFP variants; the user did not permit
                             non-variadic functions to pass FP
This page took 0.025989 seconds and 4 git commands to generate.