Bug#996419: gcc-11: Fails to compile the linux kernel on ARM.
Package: gcc-11
Version: 11.2.0-9
Severity: important
The linux kernel has the following in its ARM Makefile:
$(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
This means the switch "-march=armv7-a" is tested if supported by the
compiler and if so it is used, otherwise it uses the alternative
"-march=armv5t -Wa,-march=armv7-a".
On gcc-10 it evaluated to "-march=armv7-a".
On gcc-11 it evaluates to "-march=armv5t -Wa,-march=armv7-a" leading to
compile errors:
| cccHPwDp.s:4372: Error: selected processor does not support `cpsid i' in ARM mode
| cccHPwDp.s:5145: Error: selected processor does not support `cpsid i' in ARM mode
| cccHPwDp.s:5393: Error: selected processor does not support `cpsie i' in ARM mode
| cccHPwDp.s:5530: Error: selected processor does not support `dsb ' in ARM mode
| cccHPwDp.s:6088: Error: selected processor does not support `cpsie i' in ARM mode
| cccHPwDp.s:7132: Error: architectural extension `mp' is not allowed for the current base architecture
| cccHPwDp.s:7133: Error: selected processor does not support `pldw [r4]' in ARM mode
| cccHPwDp.s:7136: Error: selected processor does not support `pld [r4]' in ARM mode
| cccHPwDp.s:7148: Error: selected processor does not support `ldrex r3,[r4]' in ARM mode
| cccHPwDp.s:7150: Error: selected processor does not support `strex r1,r2,[r4]' in ARM mode
This has been noticed in the gcc-11-arm-linux-gnueabihf package and
verified on a armhf porter box with the native gcc-11 package.
The test fails due to:
| $ arm-linux-gnueabihf-gcc-10 -o a.o a.c -march=armv7-a
| $ arm-linux-gnueabihf-gcc-11 -o a.o a.c -march=armv7-a
| cc1: error: ‘-mfloat-abi=hard’: selected architecture lacks an FPU
Passing early -msoft-float to the compiler test solves the problem. This
option is passed later to the compile process.
Is this change intended?
Sebastian
Reply to: