Skip to content

compiler-rt: Exclude sync_fetch_and_* for any pre-ARMv6 targets #139411

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

kraj
Copy link
Contributor

@kraj kraj commented May 10, 2025

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

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

Signed-off-by: Khem Raj <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants