gcc and base system disagree on version of __unordtf2 in libgcc_s

John F Carr <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
If I build a C++ program with g++ on 64 bit ARM and do not use -Wl,-rpath
the resulting executable fails with

ld-elf.so.1: /lib/libgcc_s.so.1: version GCC_4.5.0 required by /usr/local/lib/gcc11/libstdc++.so.6 not found

The symbol exists but has the wrong version.

FreeBSD's /lib/libgcc_s.so.1 defines __unordtf2 in version GCC_4.6.0.

gcc's libgcc_s.so defines __unordtf2 in version GCC_4.5.0.

Who is right?  Can we make the gcc port and base system agree?
Can we do it without breaking old executables?

In the gcc source a comment in libgcc/config/i386/libgcc-bsd.ver reads:

# 128 bit long double support was introduced with GCC 4.6.0 for FreeBSD.
# These lines make the symbols to get a @@GCC_4.6.0.

Reproduced with gcc11, gcc12, and gcc13-devel packages on FreeBSD 14 and 15.
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.