At present compiler-rt cross compiles for armv6 ( -march=armv6 ) but includes dmb instructions which are only available in armv7+ this causes SIGILL on clang+compiler-rt compiled components on rpi0w platforms.
Details
Details
Diff Detail
Diff Detail
Event Timeline
compiler-rt/lib/builtins/assembly.h | ||
---|---|---|
187 | I see that musl src/thread/arm/atomics.s uses .arch armv6t2; mcr p15,0,r0,c7,c10,5 Is #elif __ARM_ARCH >= 6 accurate? |
compiler-rt/lib/builtins/assembly.h | ||
---|---|---|
187 | yes I think it is correct. Musl is using that directive for generating thumb2 code when -mthumb is used along with mcr barrier. mcr is available in both thumb/arm ISAs on ARMv6 |
Comment Actions
I'm not sure this is right... even if dmb barriers do work, strex is only available in v7+ in Thumb mode, so I suspect this still causes a SIGILL on v6, whether or not Thumb2 is available.
clang-format: please reformat the code