Re: [RFC PATCH v6] MIPS: fix build with binutils 2.24.51+

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/31/2014 04:03 PM, Manuel Lauss wrote:
> 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@xxxxxxxxx>
> ---
> Compiles with binutils 2.23 and current git head, tested with alchemy (mips32r1)
> and maltasmvp_defconfig (64bit)
> 
> Tests with MSA and other extensions also appreciated!
> 
> v6: #undef fp so that the preprocessor does not replace the fp in 
> 	.set fp=64 with $30...  Fixes 64bit build.

Technically speaking, a maltasmvp_defconfig selects CONFIG_32BIT=y so
it's still a 32-bit build.
> [...]

Ok the fp problem went away but I still have the even/odd errors with my
tools

arch/mips/kernel/r4k_switch.S: Assembler messages:
arch/mips/kernel/r4k_switch.S:81: Error: float register should be even,
was 1
arch/mips/kernel/r4k_switch.S:81: Error: float register should be even,
was 3
arch/mips/kernel/r4k_switch.S:81: Error: float register should be even,
was 5
arch/mips/kernel/r4k_switch.S:81: Error: float register should be even,
was 7
arch/mips/kernel/r4k_switch.S:81: Error: float register should be even,
was 9
arch/mips/kernel/r4k_switch.S:81: Error: float register should be even,
was 11
arch/mips/kernel/r4k_switch.S:81: Error: float register should be even,
was 13
arch/mips/kernel/r4k_switch.S:81: Error: float register should be even,
was 15
arch/mips/kernel/r4k_switch.S:81: Error: float register should be even,
was 17
arch/mips/kernel/r4k_switch.S:81: Error: float register should be even,
was 19

The following patch did not help either:

diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 58076472bdd8..b8bb7e170fee 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -56,7 +56,7 @@ ifdef CONFIG_FUNCTION_GRAPH_TRACER
   endif
 endif
 cflags-y += $(call cc-option, -mno-check-zero-division)
-
+cflags-y += -mno-odd-spreg

This is with a regular maltasmvp_defconfig

I guess my gcc version is newer than yours. Matthew?

-- 
markos





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux