Hi!

On 2026-07-16T23:08:55+0200, Jakub Jelinek <[email protected]> wrote:
> On Thu, Jul 16, 2026 at 12:39:24PM +0200, Arsen Arsenović wrote:
>> Arsen Arsenović <[email protected]> writes:
>> > Previously, none would be set, so an installed compiler that does not
>> > emit an RPATH to its libraries would not be able to execute programs
>> > that require libstdc++.so symbols.
>> >
>> > libstdc++-v3/ChangeLog:
>> >
>> >    * testsuite/lib/libstdc++.exp (libstdc++_init): Use
>> >    gcc-set-multilib-library-path to calculate LD_LIBRARY_PATH for
>> >    installed G++ compilers.
>> > ---
>> > Before:
>> >
>> >   Setting LD_LIBRARY_PATH to 
>> > :/usr/local/tools/gcc-2025/lib64:/usr/local/tools/gcc-2025/lib
>> >   Execution timeout is: 300
>> >   spawn [open ...]
>> >   ./1.exe: /usr/local/tools/gcc-2025/lib64/libstdc++.so.6: version 
>> > `GLIBCXX_3.4.35' not found (required by ./1.exe)
>> >   FAIL: 23_containers/flat_set/1.cc  -std=gnu++26 execution test
>> >
>> > After:
>> >
>> >   Setting LD_LIBRARY_PATH to 
>> > :/srv/data/aarsenovic/getting-started/install/lib/gcc/x86_64-none-linux-gnu/17.0.0/../../../../x86_64-none-linux-gnu/lib/../lib64::/srv/data/aarsenovic/getting-started/install/lib/gcc/x86_64-none-linux-gnu/17.0.0/../../../../x86_64-none-linux-gnu/lib/../lib64:/usr/local/tools/gcc-2025/lib64:/usr/local/tools/gcc-2025/lib
>> >   Execution timeout is: 300
>> >   spawn [open ...]
>> >   PASS: 23_containers/flat_set/1.cc  -std=gnu++26 execution test
>> >
>> > Other testsuites also seem to do this.
>> >
>> > OK?  It may be useful also to backport.
>
> I suspect this broke libstdc++ completely, the testing now takes
> significantly more time with parallel testing (and still pending).
> I normally do x86_64-linux and i686-linux bootstrap/make check in
> parallel, each with make -j32.  The bootstrap times were today
> the same as yesterday, ~ 1h:10m for i686 and ~ 1h:30m for x86_64,
> but make check took yesterday ~ 1h:34m on i686 and ~ 1h:45m on x86_64,
> but today it is over 2h:40 on both and still nowhere the end.
> It seems as if instead of running each libstdc++ test once as before
> it now runs it 32 times (so each runtest.exp invocation runs it once).

I'm confirming this; I eventually forcefully terminated my
'check-target-libstdc++-v3's, which didn't look like completing in any
reasonable amount of time.  Arsen, how have you been testing this patch?
Please revert until that's sorted out.


Grüße
 Thomas


> grep PASS.*17_intro/freestanding.cc 
> obj61/i686-pc-linux-gnu/libstdc++-v3/testsuite/*/*.log*
> obj61/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal1/libstdc++.log.sep:PASS:
>  17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj61/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal1/libstdc++.log.sep:PASS:
>  17_intro/freestanding.cc  -std=gnu++20 execution test
> vs.
> grep PASS.*17_intro/freestanding.cc 
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/*/*.log*
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal10/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal10/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal11/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal11/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal12/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal12/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal13/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal13/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal14/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal14/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal15/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal15/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal16/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal16/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal17/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal17/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal18/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal18/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal19/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal19/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal1/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal1/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal20/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal20/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal21/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal21/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal22/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal22/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal23/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal23/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal24/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal24/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal25/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal25/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal26/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal26/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal27/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal27/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal28/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal28/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal29/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal29/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal2/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal2/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal30/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal30/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal31/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal31/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal32/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal32/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal3/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal3/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal4/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal4/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal5/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal5/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal6/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal6/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal7/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal7/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal8/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal8/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal9/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 (test for excess errors)
> obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/normal9/libstdc++.log:PASS: 
> 17_intro/freestanding.cc  -std=gnu++20 execution test
>
> grep ^PASS obj61/i686-pc-linux-gnu/libstdc++-v3/testsuite/*/*.log* | wc -l
> 19723
> grep ^PASS obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/*/*.log* | wc -l
> 119077
>
> Isn't the
> +load_gcc_lib gcc-defs.exp
> part the culprit here?
> I haven't done anything to prove this yet though, I just suspect your
> change because I don't see anything else touching libstdc++ *.exp files.
>
> I'm also seeing some FAILs:
> grep ^FAIL obj61/i686-pc-linux-gnu/libstdc++-v3/testsuite/*/*.log* | wc -l
> 0
> grep ^FAIL obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/*/*.log* | wc -l
> 56
> it is just 3 tests
> grep ^FAIL obj63/i686-pc-linux-gnu/libstdc++-v3/testsuite/*/*.log* | sed 
> 's/^.*FAIL:/FAIL:/' | sort -u
> FAIL: 20_util/hash/chi2_q_document_words.cc  -std=gnu++20 execution test
> FAIL: 20_util/smartptr.adapt/out_ptr/1.cc  -std=gnu++23 execution test
> FAIL: 20_util/smartptr.adapt/out_ptr/1.cc  -std=gnu++29 execution test
> but again, repeated so many times (and because it is FILE I/O, I suspect
> that several make check now try to open the file in the same directory or
> something similar).
>
>       Jakub

Reply via email to