Re: gcc and base system disagree on version of __unordtf2 in libgcc_s
- In reply to: John F Carr : "gcc and base system disagree on version of __unordtf2 in libgcc_s"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 24 Jan 2024 21:24:23 UTC
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 > > 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