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)

Reply via email to