Hi! On 2023-09-20T07:08:25+0200, François Dumont via Gcc <gcc@gcc.gnu.org> wrote: > I've configured libstdc++ with --enable-symvers=gnu-versioned-namespace
I can't comment on that option... > and run make check-c++. > > A number of failures are like this one: > > /home/fdumont/dev/gcc/git/gcc/testsuite/g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C: > In function 'coro1 f()': > /home/fdumont/dev/gcc/git/gcc/testsuite/g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C:9:1: > error: 'operator new' is provided by > 'std::__8::__n4861::__coroutine_traits_impl<coro1, void>::promise_type' > {aka 'co > ro1::promise_type'} but is not usable with the function signature 'coro1 > f()' > compiler exited with status 1 > FAIL: g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C (test for > errors, line 9) > FAIL: g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C (test for excess > errors) > Excess errors: > /home/fdumont/dev/gcc/git/gcc/testsuite/g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C:9:1: > error: 'operator new' is provided by > 'std::__n4861::__coroutine_traits_impl<coro1, void>::promise_type' {aka > 'coro1::promise_type'} but is not usable with the function signature > 'coro1 f()' > > The '__8' is messing with expected output. > > So I've added: > > # Ignore optional version namespace from libstdc++. > regsub -all "std::__8::" $text "std::" text ..., and whether that's conceptually the correct solution... > in testsuite/lib/prune.exp prune_gcc_output. > > But it had no impact, same failures. > > What am I missing ? ..., but I can answer that one: pruning happens after scanning for 'dg-error' etc. (..., which are captured in 'dg-messages'). See DejaGnu 'dg.exp:dg-test': [...] set results [${tool}-dg-test $prog [lindex ${dg-do-what} 0] "$tool_flags ${dg-extra-tool-flags}"] set comp_output [lindex $results 0] set output_file [lindex $results 1] foreach i ${dg-messages} { verbose "Scanning for message: $i" 4 # Remove all error messages for the line [lindex $i 0] # in the source file. If we find any, success! [...] } # Remove messages from the tool that we can ignore. set comp_output [prune_warnings $comp_output] [...] if {$comp_output ne ""} { fail "$name (test for excess errors)" send_log "Excess errors:\n$comp_output\n" } else { pass "$name (test for excess errors)" } [...] So you'll have to have your 's%std::__8::%std::' work on 'dg-messages', I suppose? Grüße Thomas ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955