[gcc r17-3346] testsuite, c, c++, Darwin: Allow LTO test link symbols to be undefined.

Iain D Sandoe via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:844c665f1701e889b4883df65004dfc310445422

commit r17-3346-g844c665f1701e889b4883df65004dfc310445422
Author: Iain Sandoe <[email protected]>
Date:   Fri Aug 14 20:53:19 2026 +0100

    testsuite,c,c++, Darwin: Allow LTO test link symbols to be undefined.
    
    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]>

Diff:
---
 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 81f15a90a3e6..28ed330eabde 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 eed112df3897..5c097a74efe9 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 09c07fbf5667..f51b55fb360a 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 09b70fca189e..7ace032519f6 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 201142bc1a3e..114ecd9b3101 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 d3bbd8f40363..52e5e7881d8b 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 31063b8773a9..cad36994a0df 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 2c3ae9da414d..15c45b5d162e 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 a063b23d8d41..2abf0c315e9d 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 623c29ca007a..038ba0bbbf86 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 99224b5011f8..f1b54958233d 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 eccbf63c358b..025ea05ebbdc 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 9f06556754af..6ab7dc8c5b42 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 346a8015c98a..70cb2900b7a0 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 3cce1811d1e0..74e8a12e061e 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 a83ba6e0400c..58f97b394970 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 d3e2c8008dbe..f80d2dab86a6 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; }
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.