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)