convert to_extra_thread_info
[deliverable/binutils-gdb.git] / gdb / std-regs.c
index 1dc22cfdef3139df73c7464dc7d46e36b066d400..a2bb39d0ab8211d5e24e6361ed318fd954791168 100644 (file)
@@ -1,6 +1,6 @@
 /* Builtin frame register, for GDB, the GNU debugger.
 
-   Copyright (C) 2002, 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2002-2014 Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 
 #include "frame.h"
 #include "gdbtypes.h"
 #include "value.h"
-#include "gdb_string.h"
+#include <string.h>
 
 
 static struct value *
 value_of_builtin_frame_fp_reg (struct frame_info *frame, const void *baton)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
+
   if (gdbarch_deprecated_fp_regnum (gdbarch) >= 0)
     /* NOTE: cagney/2003-04-24: Since the mere presence of "fp" in the
        register name table overrides this built-in $fp register, there
@@ -42,13 +43,12 @@ value_of_builtin_frame_fp_reg (struct frame_info *frame, const void *baton)
                              frame);
   else
     {
-      struct value *val = allocate_value (builtin_type_void_data_ptr);
+      struct type *data_ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
+      struct value *val = allocate_value (data_ptr_type);
       gdb_byte *buf = value_contents_raw (val);
-      if (frame == NULL)
-       memset (buf, 0, TYPE_LENGTH (value_type (val)));
-      else
-       gdbarch_address_to_pointer (gdbarch, builtin_type_void_data_ptr,
-                                   buf, get_frame_base_address (frame));
+
+      gdbarch_address_to_pointer (gdbarch, data_ptr_type,
+                                 buf, get_frame_base_address (frame));
       return val;
     }
 }
@@ -57,17 +57,17 @@ static struct value *
 value_of_builtin_frame_pc_reg (struct frame_info *frame, const void *baton)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
+
   if (gdbarch_pc_regnum (gdbarch) >= 0)
     return value_of_register (gdbarch_pc_regnum (gdbarch), frame);
   else
     {
-      struct value *val = allocate_value (builtin_type_void_data_ptr);
+      struct type *func_ptr_type = builtin_type (gdbarch)->builtin_func_ptr;
+      struct value *val = allocate_value (func_ptr_type);
       gdb_byte *buf = value_contents_raw (val);
-      if (frame == NULL)
-       memset (buf, 0, TYPE_LENGTH (value_type (val)));
-      else
-       gdbarch_address_to_pointer (gdbarch, builtin_type_void_data_ptr,
-                                   buf, get_frame_pc (frame));
+
+      gdbarch_address_to_pointer (gdbarch, func_ptr_type,
+                                 buf, get_frame_pc (frame));
       return val;
     }
 }
@@ -76,6 +76,7 @@ static struct value *
 value_of_builtin_frame_sp_reg (struct frame_info *frame, const void *baton)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
+
   if (gdbarch_sp_regnum (gdbarch) >= 0)
     return value_of_register (gdbarch_sp_regnum (gdbarch), frame);
   error (_("Standard register ``$sp'' is not available for this target"));
@@ -85,6 +86,7 @@ static struct value *
 value_of_builtin_frame_ps_reg (struct frame_info *frame, const void *baton)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
+
   if (gdbarch_ps_regnum (gdbarch) >= 0)
     return value_of_register (gdbarch_ps_regnum (gdbarch), frame);
   error (_("Standard register ``$ps'' is not available for this target"));
This page took 0.025184 seconds and 4 git commands to generate.