| From 0648e50e548d881d025b9419a1a168753c8e2bf7 Mon Sep 17 00:00:00 2001 |
| From: Paul Burton <paul.burton@mips.com> |
| Date: Mon, 28 Jan 2019 22:21:17 +0000 |
| Subject: MIPS: VDSO: Use same -m%-float cflag as the kernel proper |
| |
| From: Paul Burton <paul.burton@mips.com> |
| |
| commit 0648e50e548d881d025b9419a1a168753c8e2bf7 upstream. |
| |
| The MIPS VDSO build currently doesn't provide the -msoft-float flag to |
| the compiler as the kernel proper does. This results in an attempt to |
| use the compiler's default floating point configuration, which can be |
| problematic in cases where this is incompatible with the target CPU's |
| -march= flag. For example decstation_defconfig fails to build using |
| toolchains in which gcc was configured --with-fp-32=xx with the |
| following error: |
| |
| LDS arch/mips/vdso/vdso.lds |
| cc1: error: '-march=r3000' requires '-mfp32' |
| make[2]: *** [scripts/Makefile.build:379: arch/mips/vdso/vdso.lds] Error 1 |
| |
| The kernel proper avoids this error because we build with the |
| -msoft-float compiler flag, rather than using the compiler's default. |
| Pass this flag through to the VDSO build so that it too becomes agnostic |
| to the toolchain's floating point configuration. |
| |
| Note that this is filtered out from KBUILD_CFLAGS rather than simply |
| always using -msoft-float such that if we switch the kernel to use |
| -mno-float in the future the VDSO will automatically inherit the change. |
| |
| The VDSO doesn't actually include any floating point code, and its |
| .MIPS.abiflags section is already manually generated to specify that |
| it's compatible with any floating point ABI. As such this change should |
| have no effect on the resulting VDSO, apart from fixing the build |
| failure for affected toolchains. |
| |
| Signed-off-by: Paul Burton <paul.burton@mips.com> |
| Reported-by: Kevin Hilman <khilman@baylibre.com> |
| Reported-by: Guenter Roeck <linux@roeck-us.net> |
| Tested-by: Kevin Hilman <khilman@baylibre.com> |
| References: https://lore.kernel.org/linux-mips/1477843551-21813-1-git-send-email-linux@roeck-us.net/ |
| References: https://kernelci.org/build/id/5c4e4ae059b5142a249ad004/logs/ |
| Fixes: ebb5e78cc634 ("MIPS: Initial implementation of a VDSO") |
| Cc: Maciej W. Rozycki <macro@linux-mips.org> |
| Cc: linux-mips@vger.kernel.org |
| Cc: stable@vger.kernel.org # v4.4+ |
| Cc: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/mips/vdso/Makefile | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/arch/mips/vdso/Makefile |
| +++ b/arch/mips/vdso/Makefile |
| @@ -8,6 +8,7 @@ ccflags-vdso := \ |
| $(filter -E%,$(KBUILD_CFLAGS)) \ |
| $(filter -mmicromips,$(KBUILD_CFLAGS)) \ |
| $(filter -march=%,$(KBUILD_CFLAGS)) \ |
| + $(filter -m%-float,$(KBUILD_CFLAGS)) \ |
| -D__VDSO__ |
| cflags-vdso := $(ccflags-vdso) \ |
| $(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \ |