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
>

Reply via email to