This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 04/23] vla: make dynamic fortran arrays functional.
- From: Keven Boell <keven dot boell at linux dot intel dot com>
- To: Jan Kratochvil <jan dot kratochvil at redhat dot com>, Keven Boell <keven dot boell at intel dot com>
- Cc: gdb-patches at sourceware dot org, sanimir dot agovic at intel dot com
- Date: Tue, 17 Jun 2014 15:48:19 +0200
- Subject: Re: [PATCH 04/23] vla: make dynamic fortran arrays functional.
- Authentication-results: sourceware.org; auth=none
- References: <1401861266-6240-1-git-send-email-keven dot boell at intel dot com> <1401861266-6240-5-git-send-email-keven dot boell at intel dot com> <20140616210229 dot GB20395 at host2 dot jankratochvil dot net>
Am 16.06.2014 23:02, schrieb Jan Kratochvil:
> On Wed, 04 Jun 2014 07:54:07 +0200, Keven Boell wrote:
>> diff --git a/gdb/valarith.c b/gdb/valarith.c
>> index 8e863e3..bddb9db 100644
>> --- a/gdb/valarith.c
>> +++ b/gdb/valarith.c
>> @@ -200,7 +200,14 @@ value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound)
>>
>> if (index < lowerbound || (!TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (array_type)
>> && elt_offs >= TYPE_LENGTH (array_type)))
>> - error (_("no such vector element"));
>> + {
>> + if (TYPE_NOT_ASSOCIATED (array_type))
>> + error (_("no such vector element because not associated"));
>> + else if (TYPE_NOT_ALLOCATED (array_type))
>> + error (_("no such vector element because not allocated"));
>> + else
>> + error (_("no such vector element"));
>> + }
>>
>> if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
>> v = allocate_value_lazy (elt_type);
>
> I find here the patch is incomplete. Earlier this function has:
> unsigned int elt_offs = elt_size * longest_to_int (index - lowerbound);
>
> and in some cases - specifically with the 64-bit inferior objects patch, the
> *bitpos* patches from:
> http://pkgs.fedoraproject.org/cgit/gdb.git/tree/
> one occasionally gets for TYPE_NOT_ALLOCATED inferior variables:
> Value out of range.
> instead of the more correct:
> no such vector element because not allocated
>
> Because for TYPE_NOT_ALLOCATED inferior variable the LOWERBOUND value read
> from the inferior is bogus and 'index - lowerbound' will not fit in 'int'.
This change just adds some more information for the already existing
"no such vector element" message. To me the change you are describing
sounds more like a generic fix for this function or am I wrong?
>
>
> Thanks,
> Jan
>