Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Jan 2024 20:24:13 +0000
From:      John F Carr <jfc@mit.edu>
To:        freebsd-arm <freebsd-arm@freebsd.org>
Subject:   gcc and base system disagree on version of __unordtf2 in libgcc_s
Message-ID:  <EA358A94-5776-4F11-9A04-AD93710F606F@mit.edu>

next in thread | raw e-mail | index | archive | help
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/l=
ib/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=
.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?EA358A94-5776-4F11-9A04-AD93710F606F>