]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/testsuite] Fix gdb.base/ptype.exp with gcc 15
authorTom de Vries <tdevries@suse.de>
Tue, 29 Apr 2025 15:30:07 +0000 (17:30 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 29 Apr 2025 15:30:07 +0000 (17:30 +0200)
With test-case gdb.base/ptype.exp and gcc 15 I run into:
...
(gdb) ptype old_fptr^M
type = double (*)(void)^M
(gdb) FAIL: $exp: ptype old_fptr (compiler doesn't emit unprototyped types)
...

Since C23, non-prototype function declarations are no longer supported, so
"double (*old_fptr) ()" is interpreted as "double (*old_fptr) (void)".

We could try to fix this by detecting the language dialect used, and accepting
the output in that case, but that feels fragile.

We could try to fix this by hard-coding the language dialect, but that doesn't
work for all compilers.

So instead, we opt for the simplest solution: just accept this output, and
produce a pass.

Tested on aarch64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
PR testsuite/32756
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32756

gdb/testsuite/gdb.base/ptype.exp

index 788cdfcab58b4046beb57508a3592f3a5d9a4d20..6971f4c8ca77251089edb7a2bac93609756c2063 100644 (file)
@@ -544,10 +544,10 @@ proc ptype_maybe_prototyped { id prototyped plain { overprototyped "NO-MATCH" }
             fail "ptype $id (compiler doesn't emit prototyped types)"
         }
         -re "type = $overprototyped\[\r\n\]+$gdb_prompt $" {
-            if { [test_compiler_info "armcc-*"] } {
-               setup_xfail "*-*-*"
-           }
-            fail "ptype $id (compiler doesn't emit unprototyped types)"
+           # C23 no longer supports non-prototype function declaration, in which
+           # case the overprototyped regexp is the expected one.  Simply pass
+           # in all cases.
+           pass "ptype $id (overprototyped)"
         }
     }
 }