diff mbox series

testsuite: Fix up pr113617 test for darwin [PR113617]

Message ID ZerOdcIjIc/NtKa5@tucnak
State New
Headers show
Series testsuite: Fix up pr113617 test for darwin [PR113617] | expand

Commit Message

Jakub Jelinek March 8, 2024, 8:38 a.m. UTC
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  <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.


	Jakub

Comments

Richard Biener March 8, 2024, 8:41 a.m. UTC | #1
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
> 
>
diff mbox series

Patch

--- 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