Message ID | ZerOdcIjIc/NtKa5@tucnak |
---|---|
State | New |
Headers | show |
Series | testsuite: Fix up pr113617 test for darwin [PR113617] | expand |
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 <jakub@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 > >
--- 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