https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100912
--- Comment #6 from Qiu Chaofan <qiu.chaofan at outlook dot com> --- By changing the order of linked objects (move .libs/compatibility-ldbl.o .libs/compatibility-ldbl-alt128.o .libs/compatibility-ldbl-alt128-cxx11.o after the series of convenience archives), the result under `-mabi=ieeelongdouble` is correct, but `-mabi=ibmlongdouble` goes wrong. Removing `--gc-sections` and use nm, we’ll see both `__vsnprintfieee128@@GLIBC_2.32` and `vsnprintf@@GLIBC_2.17` exist. So it looks all the symbols (with the same name, _ZSt16__convert_from_vRKP15__locale_structPciPKcz) were visited by the linker, but only the first one was kept.