I'm making XEN hypervisor being able to be built with ARM Compile 6 (6.6.3 in particular).
During the work, it was discovered a weird armclang compiler beahviour. When compiling a C file with only a data definition (no executable code, e.g. [1]), resulting object file causes the final link crash with the error:
Error: L6242E: Cannot link object built_in.o as its attributes are incompatible with the image attributes. ... A64 clashes with SoftVFP.
After some investigation, it was discovered that the faulty object file has both $IEEE1 and $IEEEX among its build attributes. While object files with text sections all have $IEEE1 attribute.
The effective command line in my case is as following:
armclang --target=aarch64-arm-none-eabi -march=armv8.1-a+nofp+nosimd -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Wno-unused-local-typedefs -O1 -fno-omit-frame-pointer -nostdinc -fno-builtin -fno-common -Werror -Wredundant-decls -Wno-pointer-arith -Wvla -pipe -D__XEN__ -include /home/xtfs/DEV/xen-arm-ds6/xen/include/xen/config.h -nostdlibinc -nostdlib -Wno-unused-command-line-argument -include /home/xtfs/DEV/xen-arm-ds6/xen/include/asm/armds.h '-D__OBJECT_FILE__="thunderx.o"' -g -MMD -MF ./.thunderx.o.d -mcpu=generic -mgeneral-regs-only -DCONFIG_EARLY_PRINTK -DEARLY_PRINTK_INC=\"debug-scif.inc\" -DEARLY_PRINTK_BAUD= -DEARLY_UART_BASE_ADDRESS=0xe6e88000 -DEARLY_UART_REG_SHIFT= -I/home/xtfs/DEV/xen-arm-ds6/xen/include -fno-stack-protector -fno-exceptions -Wnested-externs -DGCC_HAS_VISIBILITY_ATTRIBUTE -c thunderx.c -o thunderx.o
The issue disappears if an empty function is added to the faulty file.
Any ideas on how to solve the issue with the command line options (without patching the code)?
Hi Andrii,
I'm Product Manager for Compilers, seems like you're having some challenges with migration to the 6.6.3 compiler. Probably the best way to help you get going is via a support case, we have an experienced team of compiler/architecture professionals here eager to help! I'll ping you a private message, if you let me know your e-mail address I can get the support case kicked off.
Thanks,
Paul.