compiler-rt: Exclude sync_fetch_and_* for any pre-ARMv6 targets #139411
+12
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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 usingarm-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