Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Jan 2024 13:24:23 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        John F Carr <jfc@mit.edu>
Cc:        freebsd-arm <freebsd-arm@freebsd.org>
Subject:   Re: gcc and base system disagree on version of __unordtf2 in libgcc_s
Message-ID:  <1F152D0B-244C-4DBC-9322-A202E27E222C@yahoo.com>
In-Reply-To: <EA358A94-5776-4F11-9A04-AD93710F606F@mit.edu>
References:  <EA358A94-5776-4F11-9A04-AD93710F606F@mit.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Jan 24, 2024, at 12:24, John F Carr <jfc@mit.edu> wrote:

> If I build a C++ program with g++ on 64 bit ARM and do not use =
-Wl,-rpath
> the resulting executable fails with
>=20
> 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
>=20
> The symbol exists but has the wrong version.
>=20
> FreeBSD's /lib/libgcc_s.so.1 defines __unordtf2 in version GCC_4.6.0.
>=20
> gcc's libgcc_s.so defines __unordtf2 in version GCC_4.5.0.
>=20
> Who is right?  Can we make the gcc port and base system agree?
> Can we do it without breaking old executables?
>=20
> In the gcc source a comment in libgcc/config/i386/libgcc-bsd.ver =
reads:
>=20
> # 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.
>=20
> Reproduced with gcc11, gcc12, and gcc13-devel packages on FreeBSD 14 =
and 15.

An old note from an old bugzilla:

QUOTE
An interesting point is amd64 vs. aarch64 for
/usr/local/lib/gcc11/libgcc_s.so.1 :

+GCC_4.6.0 __unordtf2
vs.
+GCC_4.5.0 __unordtf2

So the GCC_* vintage is architecture specific.
END QUOTE


=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1F152D0B-244C-4DBC-9322-A202E27E222C>