MIPS: Fix build with binutils 2.24.51+
Starting with version 2.24.51.20140728 MIPS binutils complain loudly about mixing soft-float and hard-float object files, leading to this build failure since GCC is invoked with "-msoft-float" on MIPS: {standard input}: Warning: .gnu_attribute 4,3 requires `softfloat' LD arch/mips/alchemy/common/built-in.o mipsel-softfloat-linux-gnu-ld: Warning: arch/mips/alchemy/common/built-in.o uses -msoft-float (set by arch/mips/alchemy/common/prom.o), arch/mips/alchemy/common/sleeper.o uses -mhard-float To fix this, we detect if GAS is new enough to support "-msoft-float" command option, and if it does, we can let GCC pass it to GAS; but then we also need to sprinkle the files which make use of floating point registers with the necessary ".set hardfloat" directives. Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com> Cc: Linux-MIPS <linux-mips@linux-mips.org> Cc: Matthew Fortune <Matthew.Fortune@imgtec.com> Cc: Markos Chandras <Markos.Chandras@imgtec.com> Cc: Maciej W. Rozycki <macro@linux-mips.org> Patchwork: https://patchwork.linux-mips.org/patch/8355/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:

committed by
Ralf Baechle

parent
491a48aa52
commit
842dfc11ea
@@ -14,6 +14,20 @@
|
||||
|
||||
#include <asm/sgidefs.h>
|
||||
|
||||
/*
|
||||
* starting with binutils 2.24.51.20140729, MIPS binutils warn about mixing
|
||||
* hardfloat and softfloat object files. The kernel build uses soft-float by
|
||||
* default, so we also need to pass -msoft-float along to GAS if it supports it.
|
||||
* But this in turn causes assembler errors in files which access hardfloat
|
||||
* registers. We detect if GAS supports "-msoft-float" in the Makefile and
|
||||
* explicitly put ".set hardfloat" where floating point registers are touched.
|
||||
*/
|
||||
#ifdef GAS_HAS_SET_HARDFLOAT
|
||||
#define SET_HARDFLOAT .set hardfloat
|
||||
#else
|
||||
#define SET_HARDFLOAT
|
||||
#endif
|
||||
|
||||
#if _MIPS_SIM == _MIPS_SIM_ABI32
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user