xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Saman Dehghan <samaan.dehghan@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Wentao Zhang <wentaoz5@illinois.edu>
Subject: Support of building Xen with Clang/LLVM on Arm?
Date: Thu, 23 Oct 2025 18:34:06 -0500	[thread overview]
Message-ID: <20251023233408.16245-1-samaan.dehghan@gmail.com> (raw)

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.

[1] https://lists.xenproject.org/archives/html/xen-devel/2025-10/msg00010.html

Thanks,
Saman


             reply	other threads:[~2025-10-23 23:34 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-23 23:34 Saman Dehghan [this message]
2025-10-23 23:45 ` Support of building Xen with Clang/LLVM on Arm? Andrew Cooper
2025-10-24 16:57   ` saman dehghan
2025-11-04 10:43   ` Julien Grall
2025-11-04 11:35     ` Julien Grall
2025-11-10 21:17       ` Saman Dehghan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251023233408.16245-1-samaan.dehghan@gmail.com \
    --to=samaan.dehghan@gmail.com \
    --cc=wentaoz5@illinois.edu \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).