diff mbox series

[v1,2/2] doc: Add info for building Xen target with Clang

Message ID 20230504075459.59855-3-leo.yan@linaro.org
State Accepted
Commit e45fcb0e76b51d1e805f077ec160f99ff2edfa36
Headers show
Series arm64: Fix building failure for Xen target | expand

Commit Message

Leo Yan May 4, 2023, 7:54 a.m. UTC
When build Xen target with Clang, the linker reports failure.

This patch adds the related info in the documentation as a known issue
and gives details for how to dismiss the building failure with Clang.

Signed-off-by: Leo Yan <leo.yan@linaro.org>
---
 doc/build/clang.rst | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

Comments

Tom Rini June 1, 2023, 7:48 p.m. UTC | #1
On Thu, May 04, 2023 at 03:54:59PM +0800, Leo Yan wrote:

> When build Xen target with Clang, the linker reports failure.
> 
> This patch adds the related info in the documentation as a known issue
> and gives details for how to dismiss the building failure with Clang.
> 
> Signed-off-by: Leo Yan <leo.yan@linaro.org>

Applied to u-boot/next, thanks!
diff mbox series

Patch

diff --git a/doc/build/clang.rst b/doc/build/clang.rst
index 1d35616eb5..cc265506c2 100644
--- a/doc/build/clang.rst
+++ b/doc/build/clang.rst
@@ -74,3 +74,39 @@  simplified with a simple wrapper script - saved as
 
     #!/bin/sh
     exec clang -target arm-freebsd-eabi --sysroot /usr/arm-freebsd "$@"
+
+
+Known Issues
+------------
+
+When build U-boot for `xenguest_arm64_defconfig` target, it reports linkage
+error:
+
+.. code-block:: bash
+
+    aarch64-linux-gnu-ld.bfd: drivers/xen/hypervisor.o: in function `do_hypervisor_callback':
+    /home/leoy/Dev2/u-boot/drivers/xen/hypervisor.c:188: undefined reference to `__aarch64_swp8_acq_rel'
+    aarch64-linux-gnu-ld.bfd: drivers/xen/hypervisor.o: in function `synch_test_and_set_bit':
+    /home/leoy/Dev2/u-boot/./arch/arm/include/asm/xen/system.h:40: undefined reference to `__aarch64_ldset1_acq_rel'
+    aarch64-linux-gnu-ld.bfd: drivers/xen/hypervisor.o: in function `synch_test_and_clear_bit':
+    /home/leoy/Dev2/u-boot/./arch/arm/include/asm/xen/system.h:28: undefined reference to `__aarch64_ldclr1_acq_rel'
+    aarch64-linux-gnu-ld.bfd: drivers/xen/hypervisor.o: in function `synch_test_and_set_bit':
+    /home/leoy/Dev2/u-boot/./arch/arm/include/asm/xen/system.h:40: undefined reference to `__aarch64_ldset1_acq_rel'
+    aarch64-linux-gnu-ld.bfd: drivers/xen/hypervisor.o: in function `synch_test_and_clear_bit':
+    /home/leoy/Dev2/u-boot/./arch/arm/include/asm/xen/system.h:28: undefined reference to `__aarch64_ldclr1_acq_rel'
+    aarch64-linux-gnu-ld.bfd: drivers/xen/events.o: in function `synch_test_and_clear_bit':
+    /home/leoy/Dev2/u-boot/./arch/arm/include/asm/xen/system.h:28: undefined reference to `__aarch64_ldclr1_acq_rel'
+    aarch64-linux-gnu-ld.bfd: drivers/xen/events.o: in function `synch_test_and_set_bit':
+    /home/leoy/Dev2/u-boot/./arch/arm/include/asm/xen/system.h:40: undefined reference to `__aarch64_ldset1_acq_rel'
+    aarch64-linux-gnu-ld.bfd: drivers/xen/gnttab.o: in function `gnttab_end_access':
+    /home/leoy/Dev2/u-boot/drivers/xen/gnttab.c:109: undefined reference to `__aarch64_cas2_acq_rel'
+    Segmentation fault
+
+To fix the failure, we need to append option `-mno-outline-atomics` in Clang
+command to not generate local calls to out-of-line atomic operations:
+
+.. code-block:: bash
+
+    make HOSTCC=clang xenguest_arm64_defconfig
+    make HOSTCC=clang CROSS_COMPILE=aarch64-linux-gnu- \
+         CC="clang -target aarch64-linux-gnueabi -mno-outline-atomics" -j8