Thank you Andrew for your prompt clarification. We'll see what the best we can contribute while developing our coverage patch.
Thanks, Saman On Thu, Oct 23, 2025 at 6:45 PM Andrew Cooper <[email protected]> wrote: > On 24/10/2025 12:34 am, Saman Dehghan wrote: > > Hi xen-devel, > > > > When preparing and testing another of my patch for LLVM coverage [1], I > > encountered a few problems with Clang/LLVM build on ARM 64 platforms. > > > > The first two are clang errors. > > > > I observe the following errors when building the Xen master branch > > for ARM 64 with Clang 19 and 20. If I comment out > > "CFLAGS-$(CONFIG_ARM_64) += -mgeneral-regs-only" in "xen/arch/arm/ > arch.mk" > > the error is gone but the build fails during linking (see the third). > > > > Error message: > > > > arch/arm/arm64/vfp.c:9:18: error: instruction requires: fp-armv8 > > 9 | asm volatile("stp q0, q1, [%1, #16 * 0]\n\t" > > | ^ > > <inline asm>:1:2: note: instantiated into assembly here > > 1 | stp q0, q1, [x8, #16 * 0] > > | ^ > > arch/arm/arm64/vfp.c:9:46: error: instruction requires: fp-armv8 > > > 9 | asm volatile("stp q0, q1, [%1, #16 * 0]\n\t" > > | ^ > > <inline asm>:2:2: note: instantiated into assembly here > > 2 | stp q2, q3, [x8, #16 * 2] > > | ^ > > arch/arm/arm64/vfp.c:10:46: error: instruction requires: fp-armv8 > > 10 | "stp q2, q3, [%1, #16 * 2]\n\t" > > | ^ > > <inline asm>:3:2: note: instantiated into assembly here > > 3 | stp q4, q5, [x8, #16 * 4] > > | ^ > > arch/arm/arm64/vfp.c:11:46: error: instruction requires: fp-armv8 > > 11 | "stp q4, q5, [%1, #16 * 4]\n\t" > > | ^ > > <inline asm>:4:2: note: instantiated into assembly here > > 4 | stp q6, q7, [x8, #16 * 6] > > | ^ > > arch/arm/arm64/vfp.c:12:46: error: instruction requires: fp-armv8 > > 12 | "stp q6, q7, [%1, #16 * 6]\n\t" > > | ^ > > <inline asm>:5:2: note: instantiated into assembly here > > 5 | stp q8, q9, [x8, #16 * 8] > > | ^ > > arch/arm/arm64/vfp.c:13:46: error: instruction requires: fp-armv8 > > 13 | "stp q8, q9, [%1, #16 * 8]\n\t" > > | ^ > > <inline asm>:6:2: note: instantiated into assembly here > > 6 | stp q10, q11, [x8, #16 * 10] > > | ^ > > > > Reprroduction steps: > > > > $ git clone https://xenbits.xen.org/git-http/xen > > $ cd xen > > $ git checkout eff32008be0d2718d32d60245650ff6f88fb3d13 > > $ make -C xen menuconfig clang=y > > $ make xen clang=y > > > > Tested with the following setup: > > > > - Clang version: Ubuntu clang version 19.1.1 (1ubuntu1~24.04.2) > > - Host: Ubuntu 24.04.3 LTS / aarch64 > > > > Second, for Clang 18 or below there are another set of errors despite > > commenting out the "-mgeneral-regs-only" flag: > > > > arch/arm/arm64/mmu/head.S:288:13: error: expected writable system > register or pstate > > msr TTBR0_EL2, x4 > > ^ > > arch/arm/arm64/mmu/head.S:509:13: error: expected writable system > register or pstate > > msr TTBR0_EL2, x0 > > ^ > > > > Tested with: > > > > - Clang version: Ubuntu clang version 18.1.3 (1ubuntu1) > > - Host: Ubuntu 24.04.3 LTS / aarch64 > > > > This works with GCC. It also works with Clang on x86 builds. > > > > Third, if I specify "LD=ld.lld" with Clang 19 and 20 after commenting out > > the "-mgeneral-regs-only" flag. I got this linking error: > > > > ld.lld: error: common/device-tree/static-evtchn.init.o:(.rodata.str): > offset is outside the section > > > > As I read from the project README, under "C compiler and linker - For > ARM", > > only GCC is listed. So my general question is whether Xen supports > building > > with Clang/LLVM on ARM platforms. > > > > Let me know if you need more details or a patch attempt. > > Clang/LLVM is only supported for x86. > > Personally I think the other architectures would benefit from using both > compilers, but it's up to the relevant maintainers. > > ~Andrew >
