Re: [PATCH 04/23] vla: make dynamic fortran arrays functional.

Keven Boell
2014-06-17T13:53:59Z

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
>