Hi! The test attempts to link a shared library, and apparently Darwin doesn't allow by default for shared libraries to contain undefined symbols.
The following patch just adds dummy definitions for the symbols, so that the library no longer has any undefined symbols at least in my linux testing. Furthermore, for target { !shared } targets (like darwin until the it is fixed in target-supports.exp), because we then link a program rather than shared library, the patch also adds a dummy main definition so that it can link. Regtested on x86_64-linux and i686-linux, ok for trunk? 2024-03-08 Jakub Jelinek <ja...@redhat.com> PR rtl-optimization/113617 * g++.dg/other/pr113617.C: Define -DSHARED when linking with -shared. * g++.dg/other/pr113617-aux.cc: Add definitions for used methods and templates not defined elsewhere. --- gcc/testsuite/g++.dg/other/pr113617.C.jj 2024-02-26 17:54:57.054857411 +0100 +++ gcc/testsuite/g++.dg/other/pr113617.C 2024-03-07 15:57:40.510796110 +0100 @@ -2,7 +2,7 @@ // { dg-do link { target c++11 } } // { dg-options "-O2" } // { dg-additional-options "-fPIC" { target fpic } } */ -// { dg-additional-options "-shared" { target shared } } */ +// { dg-additional-options "-shared -DSHARED" { target shared } } */ // { dg-additional-sources pr113617-aux.cc } #include "pr113617.h" --- gcc/testsuite/g++.dg/other/pr113617-aux.cc.jj 2024-02-26 17:54:57.054857411 +0100 +++ gcc/testsuite/g++.dg/other/pr113617-aux.cc 2024-03-07 15:58:05.473448950 +0100 @@ -7,3 +7,42 @@ void qux() { A<long long> a; a.foo(0, 0); } + +namespace R { +template<> +Y<N1::N2::N3::X<0> >::AI +Y<N1::N2::N3::X<0> >::operator->() +{ + return AI(); +} +template<> +Y<N1::N2::N3::X<1> >::AI +Y<N1::N2::N3::X<1> >::operator->() +{ + return AI(); +} +} + +N1::N2::N3::AB ab; + +N1::N2::N3::AB & +N1::N2::N3::AB::bleh() +{ + return ab; +} + +N1::N2::N3::AC::AC(int) +{ +} + +void +N1::N2::N3::AC::m1(R::S<void()>) +{ +} + +#ifndef SHARED +int +main() +{ +} +#endif Jakub