diff options
author | Tom de Vries <tdevries@suse.de> | 2025-04-15 16:59:32 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2025-04-15 16:59:32 +0200 |
commit | 7bef406490d0ecf2e8710a9ed28b0b377653159f (patch) | |
tree | dcd6249ccf859753c97a05973d06d9a222e2cfc2 /gdb/testsuite/gdb.base/catch-gdb-caused-signals.exp | |
parent | ac4a73ff0420a9eb192ca80bb0622954309a52f2 (diff) | |
download | binutils-master.zip binutils-master.tar.gz binutils-master.tar.bz2 |
On s390x-linux, with test-case gdb.ada/overloads.exp and gcc 7.5.0 I run into:
...
(gdb) print Oload(CA)^M
Could not find a match for oload^M
(gdb) FAIL: $exp: print Oload(CA)
...
The mismatch happens here in ada_type_match:
...
return ftype->code () == atype->code ();
...
with:
...
(gdb) p ftype->code ()
$3 = TYPE_CODE_TYPEDEF
(gdb) p atype->code ()
$4 = TYPE_CODE_ARRAY
...
At the start of ada_type_match, typedefs are skipped:
...
ftype = ada_check_typedef (ftype);
atype = ada_check_typedef (atype);
...
but immediately after this, refs are skipped:
...
if (ftype->code () == TYPE_CODE_REF)
ftype = ftype->target_type ();
if (atype->code () == TYPE_CODE_REF)
atype = atype->target_type ();
...
which in this case makes ftype a typedef.
Fix this by using ada_check_typedef after skipping the refs as well.
Tested on x86_64-linux and s390x-linux.
Approved-By: Tom Tromey <tom@tromey.com>
PR ada/32409
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32409
Diffstat (limited to 'gdb/testsuite/gdb.base/catch-gdb-caused-signals.exp')
0 files changed, 0 insertions, 0 deletions