Subject: bug#54788: libtool -export-symbols-regex broken on Solaris against GNU ld

From: Frederic Berat <[email-masked]>
Date: Fri, 8 Apr 2022 09:29:24 +0200

Hello,

The following problem has been found by the GCC team:

As mentioned in https://gcc.gnu.org/PR102426 , libtool
-export-symbols-regex implementation on *-solaris* blindly assumes that Sun
ld is used and uses -Wl,-M option:

      if test "$GCC" = yes; then
        wlarc='${wl}'
        _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h
${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" >
$lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo
"local: *; };" >> $lib.exp~
          $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h
${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
      else

in libtool.m4.

But when GCC is configured to use GNU ld, that is wrong, for the
if test "$with_gnu_ld" = yes case it needs to use (if
supports_anon_versioning)
-Wl,-version-script like e.g. on Linux.

Frédéric Bérat

Red Hat -  Platform Tools
https://www.redhat.com