Tested on x86_64-linux, darwin, pushed to trunk, thanks
Iain

--- 8< ---

We had, for some time, a bug in the target supports that meant that
Darwin was not running tests that required -shared.  Since that was
fixed, we have failed a number of LTO tests.  It turns out that this
had nothing to do with LTO - but was a consequence of the tests
producing DSOs with undefined symbols.  Darwin's linker defaults to
requiring all symbols to be defined at link time unless individually
(-U) or generally (-undefined dynamic_lookup) allowed. For one or two
symbols -U is preferable - but most of these cases have several and
dynamic lookup is a shorter fix.  The extra_ld_flags option is not
additive - and so we must override for Darwin placing that second.

gcc/testsuite/ChangeLog:

        * g++.dg/lto/pr108772_0.C: Allow undefined symbols on Darwin.
        * g++.dg/lto/pr114790_0.C: Likewise.
        * g++.dg/lto/pr119614_0.C: Likewise.
        * g++.dg/lto/pr85405_0.C: Likewise.
        * g++.dg/lto/pr85405b_0.C: Likewise.
        * g++.dg/lto/pr85655_0.C: Likewise.
        * g++.dg/lto/pr86523-3_0.C: Likewise.
        * g++.dg/lto/pr86585_0.C: Likewise.
        * g++.dg/lto/pr87906_0.C: Likewise.
        * g++.dg/lto/pr88046_0.C: Likewise.
        * g++.dg/lto/pr88758_0.C: Likewise.
        * g++.dg/lto/pr89330_0.C: Likewise.
        * g++.dg/lto/pr91574_0.C: Likewise.
        * g++.dg/lto/pr92609_0.C: Likewise.
        * g++.dg/lto/pr93166_0.C: Likewise.
        * gcc.dg/lto/pr61526_0.c: Likewise.
        * g++.dg/lto/pr87295_0.C: Skip on Darwin.

Signed-off-by: Iain Sandoe <[email protected]>
---
 gcc/testsuite/g++.dg/lto/pr108772_0.C  | 1 +
 gcc/testsuite/g++.dg/lto/pr114790_0.C  | 1 +
 gcc/testsuite/g++.dg/lto/pr119614_0.C  | 1 +
 gcc/testsuite/g++.dg/lto/pr85405_0.C   | 1 +
 gcc/testsuite/g++.dg/lto/pr85405b_0.C  | 1 +
 gcc/testsuite/g++.dg/lto/pr85655_0.C   | 1 +
 gcc/testsuite/g++.dg/lto/pr86523-3_0.C | 1 +
 gcc/testsuite/g++.dg/lto/pr86585_0.C   | 1 +
 gcc/testsuite/g++.dg/lto/pr87295_0.C   | 2 +-
 gcc/testsuite/g++.dg/lto/pr87906_0.C   | 1 +
 gcc/testsuite/g++.dg/lto/pr88046_0.C   | 1 +
 gcc/testsuite/g++.dg/lto/pr88758_0.C   | 1 +
 gcc/testsuite/g++.dg/lto/pr89330_0.C   | 1 +
 gcc/testsuite/g++.dg/lto/pr91574_0.C   | 1 +
 gcc/testsuite/g++.dg/lto/pr92609_0.C   | 1 +
 gcc/testsuite/g++.dg/lto/pr93166_0.C   | 1 +
 gcc/testsuite/gcc.dg/lto/pr61526_0.c   | 1 +
 17 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/gcc/testsuite/g++.dg/lto/pr108772_0.C 
b/gcc/testsuite/g++.dg/lto/pr108772_0.C
index 81f15a90a3e..28ed330eabd 100644
--- a/gcc/testsuite/g++.dg/lto/pr108772_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr108772_0.C
@@ -3,6 +3,7 @@
 // { dg-require-effective-target fpic }
 // { dg-lto-options { "-flto -fPIC -shared -O1 -fimplicit-constexpr -g1" } }
 // { dg-extra-ld-options "-shared" }
+// { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target 
*-*-darwin* } }
 
 namespace std {
 struct _Sp_counted_base {
diff --git a/gcc/testsuite/g++.dg/lto/pr114790_0.C 
b/gcc/testsuite/g++.dg/lto/pr114790_0.C
index eed112df389..5c097a74efe 100644
--- a/gcc/testsuite/g++.dg/lto/pr114790_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr114790_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options { { -w -flto -g -flto-partition=1to1 -O2 -shared -fPIC 
-fvisibility=hidden} } }
+// { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* 
} }
 // { dg-require-effective-target fpic }
 // { dg-require-effective-target shared }
 struct APITracerContext {
diff --git a/gcc/testsuite/g++.dg/lto/pr119614_0.C 
b/gcc/testsuite/g++.dg/lto/pr119614_0.C
index 09c07fbf566..f51b55fb360 100644
--- a/gcc/testsuite/g++.dg/lto/pr119614_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr119614_0.C
@@ -5,6 +5,7 @@
 // { dg-require-effective-target fpic }
 // { dg-require-effective-target musttail }
 // { dg-extra-ld-options "-shared" }
+// { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target 
*-*-darwin* } }
 
 struct S {} b;
 char *foo ();
diff --git a/gcc/testsuite/g++.dg/lto/pr85405_0.C 
b/gcc/testsuite/g++.dg/lto/pr85405_0.C
index 09b70fca189..7ace032519f 100644
--- a/gcc/testsuite/g++.dg/lto/pr85405_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr85405_0.C
@@ -2,6 +2,7 @@
 // { dg-require-effective-target shared }
 // { dg-require-effective-target fpic }
 // { dg-lto-options {{-fPIC -shared -flto}} }
+// { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* 
} }
 
 class VclReferenceBase {
   int mnRefCnt;
diff --git a/gcc/testsuite/g++.dg/lto/pr85405b_0.C 
b/gcc/testsuite/g++.dg/lto/pr85405b_0.C
index 201142bc1a3..114ecd9b310 100644
--- a/gcc/testsuite/g++.dg/lto/pr85405b_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr85405b_0.C
@@ -2,6 +2,7 @@
 // { dg-require-effective-target shared }
 // { dg-require-effective-target fpic }
 // { dg-lto-options {{-fPIC -shared -flto}} }
+// { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* 
} }
 
 class VclReferenceBase { 
   int mnRefCnt;
diff --git a/gcc/testsuite/g++.dg/lto/pr85655_0.C 
b/gcc/testsuite/g++.dg/lto/pr85655_0.C
index d3bbd8f4036..52e5e7881d8 100644
--- a/gcc/testsuite/g++.dg/lto/pr85655_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr85655_0.C
@@ -2,6 +2,7 @@
 // { dg-require-effective-target shared }
 // { dg-require-effective-target fpic }
 // { dg-lto-options {{-O2 -fPIC -shared -flto}} }
+// { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* 
} }
 
 int a;
 void b(...);
diff --git a/gcc/testsuite/g++.dg/lto/pr86523-3_0.C 
b/gcc/testsuite/g++.dg/lto/pr86523-3_0.C
index 31063b8773a..cad36994a0d 100644
--- a/gcc/testsuite/g++.dg/lto/pr86523-3_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr86523-3_0.C
@@ -2,6 +2,7 @@
 // { dg-require-effective-target fpic }
 // { dg-require-effective-target shared }
 // { dg-lto-options { { -fPIC -flto -g -shared } } }
+// { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* 
} }
 class a {
     int b;
 };
diff --git a/gcc/testsuite/g++.dg/lto/pr86585_0.C 
b/gcc/testsuite/g++.dg/lto/pr86585_0.C
index 2c3ae9da414..15c45b5d162 100644
--- a/gcc/testsuite/g++.dg/lto/pr86585_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr86585_0.C
@@ -2,6 +2,7 @@
 // { dg-require-effective-target fpic }
 // { dg-require-effective-target shared }
 // { dg-lto-options { { -flto -g -nostdlib -shared -fPIC } } }
+// { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup -lSystem" { target 
*-*-darwin* } }
 namespace Inkscape {
     class a;
 }
diff --git a/gcc/testsuite/g++.dg/lto/pr87295_0.C 
b/gcc/testsuite/g++.dg/lto/pr87295_0.C
index a063b23d8d4..2abf0c315e9 100644
--- a/gcc/testsuite/g++.dg/lto/pr87295_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr87295_0.C
@@ -1,6 +1,6 @@
 // { dg-lto-do assemble }
 // { dg-lto-options { { -flto -ffat-lto-objects -fdebug-types-section -g 
-std=gnu++17 } } }
-
+// { dg-skip-if "no fdebug-types-section"  { *-*-darwin* } }
 template<typename _Tp, _Tp __v>
 struct integral_constant
 {
diff --git a/gcc/testsuite/g++.dg/lto/pr87906_0.C 
b/gcc/testsuite/g++.dg/lto/pr87906_0.C
index 623c29ca007..038ba0bbbf8 100644
--- a/gcc/testsuite/g++.dg/lto/pr87906_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr87906_0.C
@@ -4,6 +4,7 @@
 // { dg-require-effective-target shared }
 // { dg-lto-options { { -O -fPIC -flto } } }
 // { dg-extra-ld-options "-shared -nostdlib" }
+// { dg-extra-ld-options "-shared -nostdlib -Wl,-undefined,dynamic_lookup 
-lSystem" { target *-*-darwin* } }
 
 namespace com {
 namespace moon {
diff --git a/gcc/testsuite/g++.dg/lto/pr88046_0.C 
b/gcc/testsuite/g++.dg/lto/pr88046_0.C
index 99224b5011f..f1b54958233 100644
--- a/gcc/testsuite/g++.dg/lto/pr88046_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr88046_0.C
@@ -4,6 +4,7 @@
 // { dg-require-effective-target shared }
 // { dg-require-effective-target fpic }
 // { dg-extra-ld-options "-shared -g" }
+// { dg-extra-ld-options "-shared -g -Wl,-undefined,dynamic_lookup" { target 
*-*-darwin* } }
 
 class a {};
 class b : virtual a {
diff --git a/gcc/testsuite/g++.dg/lto/pr88758_0.C 
b/gcc/testsuite/g++.dg/lto/pr88758_0.C
index eccbf63c358..025ea05ebbd 100644
--- a/gcc/testsuite/g++.dg/lto/pr88758_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr88758_0.C
@@ -2,6 +2,7 @@
 // { dg-require-effective-target fpic }
 // { dg-require-effective-target shared }
 // { dg-lto-options { { -O3 -fPIC -flto -shared } } }
+// { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* 
} }
 
 void PreEvaluate(void);
 int main() { PreEvaluate(); return 0; }
diff --git a/gcc/testsuite/g++.dg/lto/pr89330_0.C 
b/gcc/testsuite/g++.dg/lto/pr89330_0.C
index 9f06556754a..6ab7dc8c5b4 100644
--- a/gcc/testsuite/g++.dg/lto/pr89330_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89330_0.C
@@ -2,6 +2,7 @@
 // { dg-lto-options { { -O3 -g -flto -shared -fPIC -Wno-odr } } }
 // { dg-require-effective-target fpic }
 // { dg-require-effective-target shared }
+// { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* 
} }
 
 namespace Inkscape {
 class Anchored {};
diff --git a/gcc/testsuite/g++.dg/lto/pr91574_0.C 
b/gcc/testsuite/g++.dg/lto/pr91574_0.C
index 346a8015c98..70cb2900b7a 100644
--- a/gcc/testsuite/g++.dg/lto/pr91574_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr91574_0.C
@@ -4,6 +4,7 @@
 // { dg-require-effective-target shared }
 // { dg-require-effective-target fpic }
 // { dg-extra-ld-options "-shared" }
+// { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target 
*-*-darwin* } }
 
 class A
 {
diff --git a/gcc/testsuite/g++.dg/lto/pr92609_0.C 
b/gcc/testsuite/g++.dg/lto/pr92609_0.C
index 3cce1811d1e..74e8a12e061 100644
--- a/gcc/testsuite/g++.dg/lto/pr92609_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr92609_0.C
@@ -4,6 +4,7 @@
 // { dg-require-effective-target shared }
 // { dg-require-effective-target fpic }
 // { dg-extra-ld-options "-shared" }
+// { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target 
*-*-darwin* } }
 
 namespace std {
 inline namespace __cxx11 {}
diff --git a/gcc/testsuite/g++.dg/lto/pr93166_0.C 
b/gcc/testsuite/g++.dg/lto/pr93166_0.C
index a83ba6e0400..58f97b39497 100644
--- a/gcc/testsuite/g++.dg/lto/pr93166_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr93166_0.C
@@ -5,6 +5,7 @@
 // { dg-require-effective-target fpic }
 // { dg-extra-ld-options "-shared" }
 // { dg-require-visibility "" }
+// { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target 
*-*-darwin* } }
 
 namespace Qt {
 enum DropAction {};
diff --git a/gcc/testsuite/gcc.dg/lto/pr61526_0.c 
b/gcc/testsuite/gcc.dg/lto/pr61526_0.c
index d3e2c8008db..f80d2dab86a 100644
--- a/gcc/testsuite/gcc.dg/lto/pr61526_0.c
+++ b/gcc/testsuite/gcc.dg/lto/pr61526_0.c
@@ -3,6 +3,7 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options { { -fPIC -flto -flto-partition=1to1 } } } */
 /* { dg-extra-ld-options { -shared } } */
+/* { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target 
*-*-darwin* } } */
 
 static void *master;
 void *foo () { return master; }
-- 
2.50.1 (Apple Git-155)

Reply via email to