Re: gcc and base system disagree on version of __unordtf2 in libgcc_s

Mark Millard <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On Jan 24, 2024, at 12:24, John F Carr <[email protected]> wrote:

> 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.

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


===
Mark Millard
marklmi at yahoo.com
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.