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