[PATCH][gdb/testsuite] Fix gdb.ada/literals.exp with aarch64

Tom de Vries tdevries@suse.de
Thu Jul 28 14:21:35 GMT 2022


On 7/28/22 15:10, Joel Brobecker wrote:
>>> Thanks for the patch.
>>>
>>> My question is whether it actually makes sense that -1 be
>>> a valid output for the print command above. I tried the addition
>>> of ...
>>>
>>>       | /* Note: Interprets ULLONG_MAX as -1.  */
>>>       | yylval.typed_val.type = type_long_long (par_state);
>>>
>>> ... to a patch of yours:
>>>
>>>       | commit ac3afe36d73c84096685fece885d70b28bc9629f
>>>       | Author: Tom de Vries <tdevries@suse.de>
>>>       | Date:   Sat Jun 4 13:17:33 2022 +0200
>>>       | Subject: [gdb/ada] Fix literal truncation
>>>       |
>>>       | Make sure we error out on overflow instead of truncating in all cases.
>>>       |
>>>       | Tested on x86_64-linux, with a build with --enable-targets=all.
>>>
>>> Do you remember why we do this? Intuitively, you'd expect that GDB
>>> would behave the same regardless of whether it selects type "long"
>>> or "long long" for its processing, as long as both types are 64-bit.
>>>
>>
>> I have no idea.  AFAICT it's been in gdb since the "Add base ada language
>> files" commit from 2002 that we avoid "unsigned long long".
>>
>> I've taken care to preserve the behaviour in the commit you refer to (and
>> this patch), since I don't have the knowledge to decide that things should
>> be different.
>>
>>> With the above, we can take this patch as an intermediate remedy,
>>> but I think we might need to dig deeper into why we use a signed
>>> type in the case of long long but not long, particularly when both
>>> types are the same size.
>>>
>>> WDYT?
>>>
>>
>> I'd be happy to write a patch to change the behaviour of gdb.  But somebody
>> knowledgeable in Ada needs to specify what that needs to be.
> 
> We're really outside of the Ada language. Would you mind checking
> what the C language does? I think it would make sense to do the same,
> here. E.g., on x86_64-linux, I get:
> 
>      (gdb) p 0xffffffffffffffff
>      $1 = 18446744073709551615
> 

Ack, that's what the C language does.

This patch changes gdb to print 18446744073709551615 for ada as well.

So, pick your favorite patch ;)

Thanks,
- Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-gdb-testsuite-Fix-gdb.ada-literals.exp-with-aarch64.patch
Type: text/x-patch
Size: 2886 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/gdb-patches/attachments/20220728/433c862c/attachment.bin>


More information about the Gdb-patches mailing list