gdb: revert one array_view copy change in ada-lang.c
authorSimon Marchi <simon.marchi@efficios.com>
Sat, 4 Dec 2021 01:39:57 +0000 (20:39 -0500)
committerSimon Marchi <simon.marchi@polymtl.ca>
Sat, 4 Dec 2021 01:43:19 +0000 (20:43 -0500)
Commit 4bce7cdaf481 ("gdbsupport: add array_view copy function") caused
an internal error when running gdb.ada/packed_array_assign.exp:

    print pra(1) := pr^M
    /home/smarchi/src/binutils-gdb/gdb/../gdbsupport/array-view.h:217: internal-error: copy: Assertion `dest.size () == src.size ()' failed.^M

I am not sure what's the root cause of this, whether it is a GDB bug
exposed by using the array_view copy function or not.  Back out the
change that triggers the internal error for now, while we investigate
it.

Change-Id: I055ab14143e4cfd3ca7ce8f4855c6c3c05db52a7

gdb/ada-lang.c

index c6cefe9d8e89c89d7bef5fe0332253da9f632405..f8ba05b427653f169911c8930b996bde2f0e7bd3 100644 (file)
@@ -2586,7 +2586,9 @@ ada_value_assign (struct value *toval, struct value *fromval)
       write_memory_with_notification (to_addr, buffer, len);
 
       val = value_copy (toval);
-      copy (value_contents (fromval), value_contents_raw (val));
+      memcpy (value_contents_raw (val).data (),
+             value_contents (fromval).data (),
+             TYPE_LENGTH (type));
       deprecated_set_value_type (val, type);
 
       return val;