mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00
compiler-rt: Exclude sync builtins from build when arm < v6
arm architecture < v6 does not have the dmb support, therefore do not add the sync primitives to compiler-rt builtins build (From OE-Core rev: e1b143860b221600f7dab5c08e5b187aefb851dd) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
a104d73d7a
commit
fa724e8745
|
@ -0,0 +1,61 @@
|
||||||
|
From 5a0daa2dcc2bb39d87c4fcae7036cd8ab7ee6f6d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Khem Raj <raj.khem@gmail.com>
|
||||||
|
Date: Sat, 10 May 2025 14:03:12 -0700
|
||||||
|
Subject: [PATCH] compiler-rt: Exclude sync_fetch_and_* for any pre-ARMv6 targets
|
||||||
|
|
||||||
|
Sometimes builds may happen where ABI is not indidated by host_triple
|
||||||
|
e.g. on Yocto the compiler used is called arm-poky-linux-gnueabi-clang
|
||||||
|
for all arm32 cross compilers, it passed the ABI flags on cmdline in
|
||||||
|
addition. e.g.
|
||||||
|
|
||||||
|
-march=armv5te -mfloat-abi=soft
|
||||||
|
or
|
||||||
|
-march=armv7-a -mfloat-abi=hard
|
||||||
|
|
||||||
|
compiler-rt's makery tries to add arm to COMPILER_RT_SUPPORTED_ARCH
|
||||||
|
deducing it from triple name.
|
||||||
|
|
||||||
|
which ends up choosing `arm` as one of compiler-rt arch to build for.
|
||||||
|
This arch is however using armv7+ defaults and then tried to build sync
|
||||||
|
builtins using
|
||||||
|
|
||||||
|
arm-poky-linux-gnueabi-clang -march=armv5te -mfloat-abi=soft ...
|
||||||
|
|
||||||
|
Which does not compile correctly, in such cases it should simply
|
||||||
|
remove the sync builtins from list of things to build similar to what
|
||||||
|
is done when we use armv4t or armv5t
|
||||||
|
|
||||||
|
set(armv4t_SOURCES ${arm_min_SOURCES})
|
||||||
|
set(armv5te_SOURCES ${arm_min_SOURCES})
|
||||||
|
|
||||||
|
This lets compiler-rt build for arm architectures without depending
|
||||||
|
upong compiler triple, but instead of poking the compiler for what
|
||||||
|
it is building for
|
||||||
|
|
||||||
|
Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/139411]
|
||||||
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||||
|
---
|
||||||
|
compiler-rt/lib/builtins/CMakeLists.txt | 12 ++++++++++++
|
||||||
|
1 file changed, 12 insertions(+)
|
||||||
|
|
||||||
|
--- a/compiler-rt/lib/builtins/CMakeLists.txt
|
||||||
|
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
|
||||||
|
@@ -864,6 +864,18 @@ else ()
|
||||||
|
list(JOIN BUILTIN_CFLAGS " " CMAKE_REQUIRED_FLAGS)
|
||||||
|
set(CMAKE_REQUIRED_FLAGS "${TARGET_${arch}_CFLAGS} ${BUILTIN_CFLAGS_${arch}}")
|
||||||
|
message(STATUS "Performing additional configure checks with target flags: ${CMAKE_REQUIRED_FLAGS}")
|
||||||
|
+ # For ARM archs, exclude any sync builtins if dmb or mcr p15, #0, r0, c7, c10, #5
|
||||||
|
+ # is not supported
|
||||||
|
+ if (${arch} MATCHES "^(arm|armhf)$")
|
||||||
|
+ try_compile_only(COMPILER_RT_HAS_${arch}_SYNC
|
||||||
|
+ SOURCE "#if __ARM_ARCH < 6
|
||||||
|
+ #error DMB is only supported on ARMv6+ !
|
||||||
|
+ #endif
|
||||||
|
+ int main(void) { return 0; }")
|
||||||
|
+ if(NOT COMPILER_RT_HAS_${arch}_SYNC)
|
||||||
|
+ list(REMOVE_ITEM ${arch}_SOURCES ${arm_sync_SOURCES})
|
||||||
|
+ endif()
|
||||||
|
+ endif()
|
||||||
|
# For ARM archs, exclude any VFP builtins if VFP is not supported
|
||||||
|
if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em|armv8m.main|armv8.1m.main)$")
|
||||||
|
string(REPLACE ";" " " _TARGET_${arch}_CFLAGS "${TARGET_${arch}_CFLAGS}")
|
|
@ -57,6 +57,7 @@ SRC_URI = "\
|
||||||
file://0034-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch \
|
file://0034-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch \
|
||||||
file://0035-llvm-config-remove-LLVM_LDFLAGS-from-ldflags-output.patch \
|
file://0035-llvm-config-remove-LLVM_LDFLAGS-from-ldflags-output.patch \
|
||||||
file://0036-openmp-Do-not-emit-date-and-time-into-generate-files.patch \
|
file://0036-openmp-Do-not-emit-date-and-time-into-generate-files.patch \
|
||||||
|
file://0038-compiler-rt-Exclude-sync_fetch_and_-for-any-pre-ARMv.patch \
|
||||||
"
|
"
|
||||||
# Fallback to no-PIE if not set
|
# Fallback to no-PIE if not set
|
||||||
GCCPIE ??= ""
|
GCCPIE ??= ""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user