[PATCH v3 3/3] gdb: trivial changes to use array_view

Simon Marchi simon.marchi@polymtl.ca
Sat Dec 4 01:45:24 GMT 2021



On 2021-12-03 16:44, Simon Marchi via Gdb-patches wrote:
> 
> 
> On 2021-12-03 09:10, Pedro Alves wrote:
>> On 2021-12-01 16:49, Simon Marchi via Gdb-patches wrote:
>>> Change a few relatively obvious spots using value contents to propagate
>>> the use array_view a bit more.
>>
>> OK.
>>
> 
> Thanks, all pushed.
> 
> Simon
> 

I had totally forgotten that the last patch causes an internal error
when running an Ada test case.  I did mention it here before:

https://sourceware.org/pipermail/gdb-patches/2021-November/183252.html

I pushed the following patch to revert just the change that causes this
internal error.

>From fb2a515fd07be61a9deda0ebfe9507f8000d93cc Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@efficios.com>
Date: Fri, 3 Dec 2021 20:39:57 -0500
Subject: [PATCH] gdb: revert one array_view copy change in ada-lang.c

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 | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index c6cefe9d8e89..f8ba05b42765 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -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;
-- 
2.33.1



More information about the Gdb-patches mailing list