Closed filipnavara closed 3 weeks ago
Tagging subscribers to this area: @hoyosjs See info in area-owners.md if you want to be subscribed.
It's likely combination of this Cmake check which checks and adds -march=armv6
, while not using -mthumb
inside the check_c_source_compiles
macro:
cc @carlossanlop
Tagging subscribers to this area: @dotnet/area-system-io-compression See info in area-owners.md if you want to be subscribed.
It's likely combination of this Cmake check which checks and adds
-march=armv6
, while not using-mthumb
inside thecheck_c_source_compiles
macro:
Sounds like we should also get an issue opened in the zlib-ng repo to report this. Would you mind doing that?
Sounds like we should also get an issue opened in the zlib-ng repo to report this. Would you mind doing that?
It's not an issue for upstream zlib-ng though because it's not compiled with -mthumb
. That's inherited from the CoreCLR build system. Arguably the flag could be passed to the check_armv6_compiler_flag
check somehow but I am not sure if there's canonical way to do it in Cmake.
Log output:
The problem boils down to this:
The build system tries to compile it with something akin to
clang -cc1 -triple thumbv7-unknown-linux-gnueabihf -target-cpu arm1136jf-s -emit-obj test.c
/clang -march=armv6 -mthumb -c test.c
.It compiles to Thumb instruction set, like the rest of the runtime, but selects an ARMv6 processor. That's an invalid combination for the
uqsub16
instruction. It exists in the ARM mode, and it exists in Thumb2 which is available on newer processors. I am not sure what was the intent, CoreCLR is not supported on ARMv6 cores, so the selection ofarm1136jf-s
makes no sense. The newer Raspberry Pis supported by CoreCLR are ARMv7 and have Thumb2 instructions.