Remove MAX_REGISTER_SIZE from frame.c
authorAlan Hayward <alan.hayward@arm.com>
Tue, 4 Apr 2017 07:42:30 +0000 (08:42 +0100)
committerAlan Hayward <alan.hayward@arm.com>
Tue, 4 Apr 2017 07:42:30 +0000 (08:42 +0100)
gdb/
* frame.c (get_frame_register_bytes): Unwind using value.
(put_frame_register_bytes): Likewise.

gdb/ChangeLog
gdb/frame.c

index bfa5358..0fa4770 100644 (file)
@@ -1,3 +1,8 @@
+2017-05-04  Alan Hayward  <alan.hayward@arm.com>
+
+       * frame.c (get_frame_register_bytes): Unwind using value.
+       (put_frame_register_bytes): Likewise.
+
 2017-03-29  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * auto-load.c (auto_load_section_scripts): Check SEC_HAS_CONTENTS.
index d98003d..05a3be4 100644 (file)
@@ -1410,16 +1410,21 @@ get_frame_register_bytes (struct frame_info *frame, int regnum,
        }
       else
        {
-         gdb_byte buf[MAX_REGISTER_SIZE];
-         enum lval_type lval;
-         CORE_ADDR addr;
-         int realnum;
+         struct value *value = frame_unwind_register_value (frame->next,
+                                                            regnum);
+         gdb_assert (value != NULL);
+         *optimizedp = value_optimized_out (value);
+         *unavailablep = !value_entirely_available (value);
 
-         frame_register (frame, regnum, optimizedp, unavailablep,
-                         &lval, &addr, &realnum, buf);
          if (*optimizedp || *unavailablep)
-           return 0;
-         memcpy (myaddr, buf + offset, curr_len);
+           {
+             release_value (value);
+             value_free (value);
+             return 0;
+           }
+         memcpy (myaddr, value_contents_all (value) + offset, curr_len);
+         release_value (value);
+         value_free (value);
        }
 
       myaddr += curr_len;
@@ -1460,11 +1465,15 @@ put_frame_register_bytes (struct frame_info *frame, int regnum,
        }
       else
        {
-         gdb_byte buf[MAX_REGISTER_SIZE];
-
-         deprecated_frame_register_read (frame, regnum, buf);
-         memcpy (buf + offset, myaddr, curr_len);
-         put_frame_register (frame, regnum, buf);
+         struct value *value = frame_unwind_register_value (frame->next,
+                                                            regnum);
+         gdb_assert (value != NULL);
+
+         memcpy ((char *) value_contents_writeable (value) + offset, myaddr,
+                 curr_len);
+         put_frame_register (frame, regnum, value_contents_raw (value));
+         release_value (value);
+         value_free (value);
        }
 
       myaddr += curr_len;