https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114233

--- Comment #3 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Jakub has posted a patch in the linker PR (thanks!).

But there remains a darwin bug. The test in check_effective_target_shared
actually works with C, but not with C++, because:

Undefined symbols for architecture arm64:
  "__Z3foov", referenced from:
      __Z3bazv in ccCj5plO.o

Why have we not seen it before? Because most of the use of that check is in {
dg-require-effective-target shared } so we're effectively skipping tests, and
that is silent. As far as I can tell, this addition is the first time { target
shared } is used as a conditional in something like { dg-additional-options }
in the C++ testsuite.

The fix is simple:

diff --git a/gcc/testsuite/lib/target-supports.exp
b/gcc/testsuite/lib/target-supports.exp
index ae33c4f1e3a..467b539b20d 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1390,7 +1390,7 @@ proc check_effective_target_shared { } {
     # here to be undefined.
     set extra_flags ""
     if { [istarget *-*-darwin\[912\]*] } {
-      set extra_flags "-Wl,-U,_foo,-U,_bar"
+      set extra_flags "-Wl,-U,_foo,-U,_bar,-U,__Z3foov"
     }
     # Note that M68K has a multilib that supports -fpic but not
     # -fPIC, so we need to check both.  We test with a program that

The question is: will this reveal new issues in other tests that weren't
running before. I'm starting a new regtest and will post the results here.

Reply via email to