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

Reply via email to