[pushed] testsuite, c, c++, Darwin: Allow LTO test link symbols to be undefined.

Iain Sandoe <[email protected]>
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>
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)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.