https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116447
--- Comment #4 from Torbjorn SVENSSON <azoff at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #3) > libsupc++.a (fundamental_type_info.o) (also included in libstdc++.a and > libstdc++.so.6) > should provide those symbols since r13-4722 if the target supports > _Float{16,32,64,128} or __bf16. Are you sure you're linking against GCC 13+ > libstdc++.a? > On x86_64 I certainly see > nm fundamental_type_info.o | grep ZTIDF > 0000000000000000 V _ZTIDF128_ > 0000000000000000 V _ZTIDF16_ > 0000000000000000 V _ZTIDF16b > 0000000000000000 V _ZTIDF32_ > 0000000000000000 V _ZTIDF32x > 0000000000000000 V _ZTIDF64_ > 0000000000000000 V _ZTIDF64x Yes, I'm sure. I see the same issue with r15-5556-gca7430f145f (the latest GCC15 that I have binaries available for). Below is from the GCC15 build. $ bin/arm-none-eabi-ar x arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++.a fundamental_type_info.o && bin/arm-none-eabi-nm fundamental_type_info.o | grep ZTIDF 00000000 V _ZTIDF32_ 00000000 V _ZTIDF32x 00000000 V _ZTIDF64_ $ find . -name libstdc++.a | while read line; do rm -f *.o; echo $line; bin/arm-none-eabi-ar x $line fundamental_type_info.o; bin/arm-none-eabi-nm fundamental_type_info.o | grep ZTIDF16; done ./arm-none-eabi/lib/libstdc++.a ./arm-none-eabi/lib/thumb/v8-a+simd/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v8-a+simd/softfp/libstdc++.a ./arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++.a ./arm-none-eabi/lib/thumb/v8-m.base/nofp/libstdc++.a ./arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a ./arm-none-eabi/lib/thumb/v7-r+fp.sp/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v7-r+fp.sp/softfp/libstdc++.a ./arm-none-eabi/lib/thumb/nofp/libstdc++.a ./arm-none-eabi/lib/thumb/v7-a/nofp/libstdc++.a ./arm-none-eabi/lib/thumb/v8.1-m.main+pacbti+dp/bp/hard/libstdc++.a 00000000 V _ZTIDF16_ ./arm-none-eabi/lib/thumb/v8.1-m.main+pacbti+dp/bp/softfp/libstdc++.a 00000000 V _ZTIDF16_ ./arm-none-eabi/lib/thumb/v8-m.main/nofp/libstdc++.a ./arm-none-eabi/lib/thumb/v8.1-m.main+pacbti+fp/bp/hard/libstdc++.a 00000000 V _ZTIDF16_ ./arm-none-eabi/lib/thumb/v8.1-m.main+pacbti+fp/bp/softfp/libstdc++.a 00000000 V _ZTIDF16_ ./arm-none-eabi/lib/thumb/v8.1-m.main+mve/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v7-a+simd/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v7-a+simd/softfp/libstdc++.a ./arm-none-eabi/lib/thumb/v7e-m+fp/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libstdc++.a ./arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a ./arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libstdc++.a ./arm-none-eabi/lib/thumb/v8.1-m.main+pacbti/bp/nofp/libstdc++.a ./arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libstdc++.a ./arm-none-eabi/lib/thumb/v7-a+fp/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v7-a+fp/softfp/libstdc++.a ./arm-none-eabi/lib/thumb/v8-a/nofp/libstdc++.a ./arm-none-eabi/lib/thumb/v7/nofp/libstdc++.a ./arm-none-eabi/lib/thumb/v7+fp/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v7+fp/softfp/libstdc++.a ./arm-none-eabi/lib/thumb/v8.1-m.main+pacbti+mve/bp/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v7e-m+dp/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libstdc++.a ./arm-none-eabi/lib/thumb/v7ve+simd/hard/libstdc++.a ./arm-none-eabi/lib/thumb/v7ve+simd/softfp/libstdc++.a ./arm-none-eabi/lib/arm/v5te/hard/libstdc++.a ./arm-none-eabi/lib/arm/v5te/softfp/libstdc++.a So, it looks like the _ZTIDF16_ symbol is only defined in v8.1-m.main+pacbti+fp and v8.1-m.main+pacbti+dp, but not in v8.1-m.main+mve (Cortex-M55).