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>