On Fri, 8 Mar 2024, Jakub Jelinek wrote: > 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?
OK. > 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 > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)