]> Git Repo - binutils.git/blobdiff - gdb/frame.c
*** empty log message ***
[binutils.git] / gdb / frame.c
index e4adf7d7c51faacbd61ee7838a3a9841aea70b3c..0c3009cf4d588ddfe89bb4aab30cb05c798a61a8 100644 (file)
@@ -238,16 +238,22 @@ frame_register (struct frame_info *frame, int regnum,
 }
 
 void
-frame_unwind_signed_register (struct frame_info *frame, int regnum,
-                             LONGEST *val)
+frame_unwind_register (struct frame_info *frame, int regnum, void *buf)
 {
   int optimized;
   CORE_ADDR addr;
   int realnum;
   enum lval_type lval;
-  void *buf = alloca (MAX_REGISTER_RAW_SIZE);
   frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
                         &realnum, buf);
+}
+
+void
+frame_unwind_signed_register (struct frame_info *frame, int regnum,
+                             LONGEST *val)
+{
+  void *buf = alloca (MAX_REGISTER_RAW_SIZE);
+  frame_unwind_register (frame, regnum, buf);
   (*val) = extract_signed_integer (buf, REGISTER_VIRTUAL_SIZE (regnum));
 }
 
@@ -255,16 +261,18 @@ void
 frame_unwind_unsigned_register (struct frame_info *frame, int regnum,
                                ULONGEST *val)
 {
-  int optimized;
-  CORE_ADDR addr;
-  int realnum;
-  enum lval_type lval;
   void *buf = alloca (MAX_REGISTER_RAW_SIZE);
-  frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
-                        &realnum, buf);
+  frame_unwind_register (frame, regnum, buf);
   (*val) = extract_unsigned_integer (buf, REGISTER_VIRTUAL_SIZE (regnum));
 }
 
+void
+frame_read_register (struct frame_info *frame, int regnum, void *buf)
+{
+  gdb_assert (frame != NULL && frame->next != NULL);
+  frame_unwind_register (frame->next, regnum, buf);
+}
+
 void
 frame_read_unsigned_register (struct frame_info *frame, int regnum,
                              ULONGEST *val)
@@ -385,6 +393,9 @@ frame_map_name_to_regnum (const char *name, int len)
 {
   int i;
 
+  if (len < 0)
+    len = strlen (name);
+
   /* Search register name space. */
   for (i = 0; i < NUM_REGS + NUM_PSEUDO_REGS; i++)
     if (REGISTER_NAME (i) && len == strlen (REGISTER_NAME (i))
This page took 0.029055 seconds and 4 git commands to generate.