Hi, On 2023-06-27 03:16, Emanuele Rocca wrote: > On 2023-06-15 11:21, Guillem Jover wrote: > > AFAIR there was also the case of objects being annotated with > > Tag_ABI_VFP_args but not with either of the ABI hard or soft float > > flags. > > Indeed, there are 1 armel and 91 armhf binary packages shipping ELF > files without float flags (hard or soft) but with TAG_ABI_VFP_ARGS. > > Examples: > > gcc-arm-none-eabi_12.2.rel1-1_armel.deb > ./usr/lib/gcc/arm-none-eabi/12.2.1/arm/v5te/hard/crtbegin.o 0x5000000: > Version5 EABI TAG_ABI_VFP_ARGS > > clisp-module-fastcgi_2.49.20210628.gitde01f0f-3_armhf.deb > ./usr/lib/clisp-2.49.93+/fastcgi/fastcgi.o 0x5000000: Version5 EABI > TAG_ABI_VFP_ARGS
It turns out that the above is correct. The hard/soft flag is set by the linker only on executables or shared libraries, not on relocatable objects (such as the ones above generated by gcc -c). Different relocatable objects, when linked together, may have different build attributes. They could even be conflicting (eg: hard-float with soft-float) and lead to linker errors such as: ld: error: b.o uses VFP register arguments, a.out does not Bottom-line, I should exclude relocatable objects from my analysis and only consider final, linked images.